@vue/devtools
Version:
StandAlone vue-devtools
1 lines • 172 kB
JavaScript
(()=>{"use strict";var __webpack_modules__={6793:(__unused_webpack_module,exports)=>{eval("var __webpack_unused_export__;\n // this script is injected into every page.\n\n__webpack_unused_export__ = ({\n value: true\n});\nexports.U = void 0;\n/**\n * Install the hook on window, which is an event emitter.\n * Note because Chrome content scripts cannot directly modify the window object,\n * we are evaling this function by inserting a script tag. That's why we have\n * to inline the whole event emitter implementation here.\n *\n * @param {Window|global} target\n */\n\nfunction installHook(target, isIframe = false) {\n const devtoolsVersion = '6.0';\n let listeners = {};\n\n function injectIframeHook(iframe) {\n if (iframe.__vdevtools__injected) return;\n\n try {\n iframe.__vdevtools__injected = true;\n\n const inject = () => {\n try {\n iframe.contentWindow.__VUE_DEVTOOLS_IFRAME__ = iframe;\n const script = iframe.contentDocument.createElement('script');\n script.textContent = ';(' + installHook.toString() + ')(window, true)';\n iframe.contentDocument.documentElement.appendChild(script);\n script.parentNode.removeChild(script);\n } catch (e) {// Ignore\n }\n };\n\n inject();\n iframe.addEventListener('load', () => inject());\n } catch (e) {// Ignore\n }\n }\n\n let iframeChecks = 0;\n\n function injectToIframes() {\n if (typeof window === 'undefined') return;\n const iframes = document.querySelectorAll('iframe:not([data-vue-devtools-ignore])');\n\n for (const iframe of iframes) {\n injectIframeHook(iframe);\n }\n }\n\n injectToIframes();\n const iframeTimer = setInterval(() => {\n injectToIframes();\n iframeChecks++;\n\n if (iframeChecks >= 5) {\n clearInterval(iframeTimer);\n }\n }, 1000);\n\n if (Object.prototype.hasOwnProperty.call(target, '__VUE_DEVTOOLS_GLOBAL_HOOK__')) {\n if (target.__VUE_DEVTOOLS_GLOBAL_HOOK__.devtoolsVersion !== devtoolsVersion) {\n console.error(`Another version of Vue Devtools seems to be installed. Please enable only one version at a time.`);\n }\n\n return;\n }\n\n let hook;\n\n if (isIframe) {\n const sendToParent = cb => {\n try {\n const hook = window.parent.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n if (hook) {\n return cb(hook);\n } else {\n console.warn('[Vue Devtools] No hook in parent window');\n }\n } catch (e) {\n console.warn('[Vue Devtools] Failed to send message to parent window', e);\n }\n };\n\n hook = {\n devtoolsVersion,\n\n // eslint-disable-next-line accessor-pairs\n set Vue(value) {\n sendToParent(hook => {\n hook.Vue = value;\n });\n },\n\n // eslint-disable-next-line accessor-pairs\n set enabled(value) {\n sendToParent(hook => {\n hook.enabled = value;\n });\n },\n\n on(event, fn) {\n sendToParent(hook => hook.on(event, fn));\n },\n\n once(event, fn) {\n sendToParent(hook => hook.once(event, fn));\n },\n\n off(event, fn) {\n sendToParent(hook => hook.off(event, fn));\n },\n\n emit(event, ...args) {\n sendToParent(hook => hook.emit(event, ...args));\n },\n\n cleanupBuffer(matchArg) {\n var _a;\n\n return (_a = sendToParent(hook => hook.cleanupBuffer(matchArg))) !== null && _a !== void 0 ? _a : false;\n }\n\n };\n } else {\n hook = {\n devtoolsVersion,\n Vue: null,\n enabled: undefined,\n _buffer: [],\n _bufferMap: new Map(),\n _bufferToRemove: new Map(),\n store: null,\n initialState: null,\n storeModules: null,\n flushStoreModules: null,\n apps: [],\n\n _replayBuffer(event) {\n const buffer = this._buffer;\n this._buffer = [];\n\n this._bufferMap.clear();\n\n this._bufferToRemove.clear();\n\n for (let i = 0, l = buffer.length; i < l; i++) {\n const allArgs = buffer[i].slice(1);\n allArgs[0] === event // eslint-disable-next-line prefer-spread\n ? this.emit.apply(this, allArgs) : this._buffer.push(buffer[i]);\n }\n },\n\n on(event, fn) {\n const $event = '$' + event;\n\n if (listeners[$event]) {\n listeners[$event].push(fn);\n } else {\n listeners[$event] = [fn];\n\n this._replayBuffer(event);\n }\n },\n\n once(event, fn) {\n const on = (...args) => {\n this.off(event, on);\n return fn.apply(this, args);\n };\n\n this.on(event, on);\n },\n\n off(event, fn) {\n event = '$' + event;\n\n if (!arguments.length) {\n listeners = {};\n } else {\n const cbs = listeners[event];\n\n if (cbs) {\n if (!fn) {\n listeners[event] = null;\n } else {\n for (let i = 0, l = cbs.length; i < l; i++) {\n const cb = cbs[i];\n\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break;\n }\n }\n }\n }\n }\n },\n\n emit(event, ...args) {\n const $event = '$' + event;\n let cbs = listeners[$event];\n\n if (cbs) {\n cbs = cbs.slice();\n\n for (let i = 0, l = cbs.length; i < l; i++) {\n try {\n const result = cbs[i].apply(this, args);\n\n if (typeof (result === null || result === void 0 ? void 0 : result.catch) === 'function') {\n result.catch(e => {\n console.error(`[Hook] Error in async event handler for ${event} with args:`, args);\n console.error(e);\n });\n }\n } catch (e) {\n console.error(`[Hook] Error in event handler for ${event} with args:`, args);\n console.error(e);\n }\n }\n } else {\n const buffered = [Date.now(), event, ...args];\n\n this._buffer.push(buffered);\n\n for (let i = 2; i < args.length; i++) {\n if (typeof args[i] === 'object' && args[i]) {\n // Save by component instance (3rd, 4th or 5th arg)\n this._bufferMap.set(args[i], buffered);\n\n break;\n }\n }\n }\n },\n\n /**\n * Remove buffered events with any argument that is equal to the given value.\n * @param matchArg Given value to match.\n */\n cleanupBuffer(matchArg) {\n const inBuffer = this._bufferMap.has(matchArg);\n\n if (inBuffer) {\n // Mark event for removal\n this._bufferToRemove.set(this._bufferMap.get(matchArg), true);\n }\n\n return inBuffer;\n },\n\n _cleanupBuffer() {\n const now = Date.now(); // Clear buffer events that are older than 10 seconds or marked for removal\n\n this._buffer = this._buffer.filter(args => !this._bufferToRemove.has(args) && now - args[0] < 10000);\n\n this._bufferToRemove.clear();\n\n this._bufferMap.clear();\n }\n\n };\n setInterval(() => {\n hook._cleanupBuffer();\n }, 10000);\n hook.once('init', Vue => {\n hook.Vue = Vue;\n\n if (Vue) {\n Vue.prototype.$inspect = function () {\n const fn = target.__VUE_DEVTOOLS_INSPECT__;\n fn && fn(this);\n };\n }\n });\n hook.on('app:init', (app, version, types) => {\n const appRecord = {\n app,\n version,\n types\n };\n hook.apps.push(appRecord);\n hook.emit('app:add', appRecord);\n });\n hook.once('vuex:init', store => {\n hook.store = store;\n hook.initialState = clone(store.state);\n const origReplaceState = store.replaceState.bind(store);\n\n store.replaceState = state => {\n hook.initialState = clone(state);\n origReplaceState(state);\n }; // Dynamic modules\n\n\n let origRegister, origUnregister;\n\n if (store.registerModule) {\n hook.storeModules = [];\n origRegister = store.registerModule.bind(store);\n\n store.registerModule = (path, module, options) => {\n if (typeof path === 'string') path = [path];\n hook.storeModules.push({\n path,\n module,\n options\n });\n origRegister(path, module, options);\n\n if (false) {}\n };\n\n origUnregister = store.unregisterModule.bind(store);\n\n store.unregisterModule = path => {\n if (typeof path === 'string') path = [path];\n const key = path.join('/');\n const index = hook.storeModules.findIndex(m => m.path.join('/') === key);\n if (index !== -1) hook.storeModules.splice(index, 1);\n origUnregister(path);\n\n if (false) {}\n };\n }\n\n hook.flushStoreModules = () => {\n store.replaceState = origReplaceState;\n\n if (store.registerModule) {\n store.registerModule = origRegister;\n store.unregisterModule = origUnregister;\n }\n\n return hook.storeModules || [];\n };\n });\n }\n\n Object.defineProperty(target, '__VUE_DEVTOOLS_GLOBAL_HOOK__', {\n get() {\n return hook;\n }\n\n }); // Handle apps initialized before hook injection\n\n if (target.__VUE_DEVTOOLS_HOOK_REPLAY__) {\n try {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__.forEach(cb => cb(hook));\n\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = [];\n } catch (e) {\n console.error('[vue-devtools] Error during hook replay', e);\n }\n } // Clone deep utility for cloning initial state of the store\n // Forked from https://github.com/planttheidea/fast-copy\n // Last update: 2019-10-30\n // ⚠️ Don't forget to update `./hook.js`\n // utils\n\n\n const {\n toString: toStringFunction\n } = Function.prototype;\n const {\n create,\n defineProperty,\n getOwnPropertyDescriptor,\n getOwnPropertyNames,\n getOwnPropertySymbols,\n getPrototypeOf\n } = Object;\n const {\n hasOwnProperty,\n propertyIsEnumerable\n } = Object.prototype;\n /**\n * @enum\n *\n * @const {Object} SUPPORTS\n *\n * @property {boolean} SYMBOL_PROPERTIES are symbol properties supported\n * @property {boolean} WEAKSET is WeakSet supported\n */\n\n const SUPPORTS = {\n SYMBOL_PROPERTIES: typeof getOwnPropertySymbols === 'function',\n WEAKSET: typeof WeakSet === 'function'\n };\n /**\n * @function createCache\n *\n * @description\n * get a new cache object to prevent circular references\n *\n * @returns the new cache object\n */\n\n const createCache = () => {\n if (SUPPORTS.WEAKSET) {\n return new WeakSet();\n }\n\n const object = create({\n add: value => object._values.push(value),\n has: value => !!~object._values.indexOf(value)\n });\n object._values = [];\n return object;\n };\n /**\n * @function getCleanClone\n *\n * @description\n * get an empty version of the object with the same prototype it has\n *\n * @param object the object to build a clean clone from\n * @param realm the realm the object resides in\n * @returns the empty cloned object\n */\n\n\n const getCleanClone = (object, realm) => {\n if (!object.constructor) {\n return create(null);\n } // eslint-disable-next-line no-proto\n\n\n const prototype = object.__proto__ || getPrototypeOf(object);\n\n if (object.constructor === realm.Object) {\n return prototype === realm.Object.prototype ? {} : create(prototype);\n }\n\n if (~toStringFunction.call(object.constructor).indexOf('[native code]')) {\n try {\n return new object.constructor();\n } catch (e) {// Error\n }\n }\n\n return create(prototype);\n };\n /**\n * @function getObjectCloneLoose\n *\n * @description\n * get a copy of the object based on loose rules, meaning all enumerable keys\n * and symbols are copied, but property descriptors are not considered\n *\n * @param object the object to clone\n * @param realm the realm the object resides in\n * @param handleCopy the function that handles copying the object\n * @returns the copied object\n */\n\n\n const getObjectCloneLoose = (object, realm, handleCopy, cache) => {\n const clone = getCleanClone(object, realm);\n\n for (const key in object) {\n if (hasOwnProperty.call(object, key)) {\n clone[key] = handleCopy(object[key], cache);\n }\n }\n\n if (SUPPORTS.SYMBOL_PROPERTIES) {\n const symbols = getOwnPropertySymbols(object);\n\n if (symbols.length) {\n for (let index = 0, symbol; index < symbols.length; index++) {\n symbol = symbols[index];\n\n if (propertyIsEnumerable.call(object, symbol)) {\n clone[symbol] = handleCopy(object[symbol], cache);\n }\n }\n }\n }\n\n return clone;\n };\n /**\n * @function getObjectCloneStrict\n *\n * @description\n * get a copy of the object based on strict rules, meaning all keys and symbols\n * are copied based on the original property descriptors\n *\n * @param object the object to clone\n * @param realm the realm the object resides in\n * @param handleCopy the function that handles copying the object\n * @returns the copied object\n */\n\n\n const getObjectCloneStrict = (object, realm, handleCopy, cache) => {\n const clone = getCleanClone(object, realm);\n const properties = SUPPORTS.SYMBOL_PROPERTIES ? [].concat(getOwnPropertyNames(object), getOwnPropertySymbols(object)) : getOwnPropertyNames(object);\n\n if (properties.length) {\n for (let index = 0, property, descriptor; index < properties.length; index++) {\n property = properties[index];\n\n if (property !== 'callee' && property !== 'caller') {\n descriptor = getOwnPropertyDescriptor(object, property);\n descriptor.value = handleCopy(object[property], cache);\n defineProperty(clone, property, descriptor);\n }\n }\n }\n\n return clone;\n };\n /**\n * @function getRegExpFlags\n *\n * @description\n * get the flags to apply to the copied regexp\n *\n * @param regExp the regexp to get the flags of\n * @returns the flags for the regexp\n */\n\n\n const getRegExpFlags = regExp => {\n let flags = '';\n\n if (regExp.global) {\n flags += 'g';\n }\n\n if (regExp.ignoreCase) {\n flags += 'i';\n }\n\n if (regExp.multiline) {\n flags += 'm';\n }\n\n if (regExp.unicode) {\n flags += 'u';\n }\n\n if (regExp.sticky) {\n flags += 'y';\n }\n\n return flags;\n };\n\n const {\n isArray\n } = Array;\n\n const GLOBAL_THIS = (() => {\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n if (console && console.error) {\n console.error('Unable to locate global object, returning \"this\".');\n }\n })();\n /**\n * @function clone\n *\n * @description\n * copy an object deeply as much as possible\n *\n * If `strict` is applied, then all properties (including non-enumerable ones)\n * are copied with their original property descriptors on both objects and arrays.\n *\n * The object is compared to the global constructors in the `realm` provided,\n * and the native constructor is always used to ensure that extensions of native\n * objects (allows in ES2015+) are maintained.\n *\n * @param object the object to copy\n * @param [options] the options for copying with\n * @param [options.isStrict] should the copy be strict\n * @param [options.realm] the realm (this) object the object is copied from\n * @returns the copied object\n */\n\n\n function clone(object, options = null) {\n // manually coalesced instead of default parameters for performance\n const isStrict = !!(options && options.isStrict);\n const realm = options && options.realm || GLOBAL_THIS;\n const getObjectClone = isStrict ? getObjectCloneStrict : getObjectCloneLoose;\n /**\n * @function handleCopy\n *\n * @description\n * copy the object recursively based on its type\n *\n * @param object the object to copy\n * @returns the copied object\n */\n\n const handleCopy = (object, cache) => {\n if (!object || typeof object !== 'object' || cache.has(object)) {\n return object;\n } // DOM objects\n\n\n if (typeof HTMLElement !== 'undefined' && object instanceof HTMLElement) {\n return object.cloneNode(false);\n }\n\n const Constructor = object.constructor; // plain objects\n\n if (Constructor === realm.Object) {\n cache.add(object);\n return getObjectClone(object, realm, handleCopy, cache);\n }\n\n let clone; // arrays\n\n if (isArray(object)) {\n cache.add(object); // if strict, include non-standard properties\n\n if (isStrict) {\n return getObjectCloneStrict(object, realm, handleCopy, cache);\n }\n\n clone = new Constructor();\n\n for (let index = 0; index < object.length; index++) {\n clone[index] = handleCopy(object[index], cache);\n }\n\n return clone;\n } // dates\n\n\n if (object instanceof realm.Date) {\n return new Constructor(object.getTime());\n } // regexps\n\n\n if (object instanceof realm.RegExp) {\n clone = new Constructor(object.source, object.flags || getRegExpFlags(object));\n clone.lastIndex = object.lastIndex;\n return clone;\n } // maps\n\n\n if (realm.Map && object instanceof realm.Map) {\n cache.add(object);\n clone = new Constructor();\n object.forEach((value, key) => {\n clone.set(key, handleCopy(value, cache));\n });\n return clone;\n } // sets\n\n\n if (realm.Set && object instanceof realm.Set) {\n cache.add(object);\n clone = new Constructor();\n object.forEach(value => {\n clone.add(handleCopy(value, cache));\n });\n return clone;\n } // buffers (node-only)\n\n\n if (realm.Buffer && realm.Buffer.isBuffer(object)) {\n clone = realm.Buffer.allocUnsafe ? realm.Buffer.allocUnsafe(object.length) : new Constructor(object.length);\n object.copy(clone);\n return clone;\n } // arraybuffers / dataviews\n\n\n if (realm.ArrayBuffer) {\n // dataviews\n if (realm.ArrayBuffer.isView(object)) {\n return new Constructor(object.buffer.slice(0));\n } // arraybuffers\n\n\n if (object instanceof realm.ArrayBuffer) {\n return object.slice(0);\n }\n } // if the object cannot / should not be cloned, don't\n\n\n if ( // promise-like\n hasOwnProperty.call(object, 'then') && typeof object.then === 'function' || // errors\n object instanceof Error || // weakmaps\n realm.WeakMap && object instanceof realm.WeakMap || // weaksets\n realm.WeakSet && object instanceof realm.WeakSet) {\n return object;\n }\n\n cache.add(object); // assume anything left is a custom constructor\n\n return getObjectClone(object, realm, handleCopy, cache);\n };\n\n return handleCopy(object, createCache());\n }\n}\n\nexports.U = installHook;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQ1QsTUFBRCxFQUFTRCxXQUFXLEVBQXBCLENBQWpCO0VBQ0Q7QUFDRjs7QUFuc0JEa0QsU0FBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9ob29rLnRzPzJmOWEiXSwibmFtZXMiOlsiaW5zdGFsbEhvb2siLCJ0YXJnZXQiLCJpc0lmcmFtZSIsImRldnRvb2xzVmVyc2lvbiIsImxpc3RlbmVycyIsImluamVjdElmcmFtZUhvb2siLCJpZnJhbWUiLCJfX3ZkZXZ0b29sc19faW5qZWN0ZWQiLCJpbmplY3QiLCJjb250ZW50V2luZG93IiwiX19WVUVfREVWVE9PTFNfSUZSQU1FX18iLCJzY3JpcHQiLCJjb250ZW50RG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGV4dENvbnRlbnQiLCJ0b1N0cmluZyIsImRvY3VtZW50RWxlbWVudCIsImFwcGVuZENoaWxkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJpZnJhbWVDaGVja3MiLCJpbmplY3RUb0lmcmFtZXMiLCJ3aW5kb3ciLCJpZnJhbWVzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaWZyYW1lVGltZXIiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwiY29uc29sZSIsImVycm9yIiwiaG9vayIsInNlbmRUb1BhcmVudCIsImNiIiwicGFyZW50Iiwid2FybiIsIlZ1ZSIsInZhbHVlIiwiZW5hYmxlZCIsIm9uIiwiZXZlbnQiLCJmbiIsIm9uY2UiLCJvZmYiLCJlbWl0IiwiYXJncyIsImNsZWFudXBCdWZmZXIiLCJtYXRjaEFyZyIsIl9hIiwidW5kZWZpbmVkIiwiX2J1ZmZlciIsIl9idWZmZXJNYXAiLCJNYXAiLCJfYnVmZmVyVG9SZW1vdmUiLCJzdG9yZSIsImluaXRpYWxTdGF0ZSIsInN0b3JlTW9kdWxlcyIsImZsdXNoU3RvcmVNb2R1bGVzIiwiYXBwcyIsIl9yZXBsYXlCdWZmZXIiLCJidWZmZXIiLCJjbGVhciIsImkiLCJsIiwibGVuZ3RoIiwiYWxsQXJncyIsInNsaWNlIiwiYXBwbHkiLCJwdXNoIiwiJGV2ZW50IiwiYXJndW1lbnRzIiwiY2JzIiwic3BsaWNlIiwicmVzdWx0IiwiY2F0Y2giLCJidWZmZXJlZCIsIkRhdGUiLCJub3ciLCJzZXQiLCJpbkJ1ZmZlciIsImhhcyIsImdldCIsIl9jbGVhbnVwQnVmZmVyIiwiZmlsdGVyIiwiJGluc3BlY3QiLCJfX1ZVRV9ERVZUT09MU19JTlNQRUNUX18iLCJhcHAiLCJ2ZXJzaW9uIiwidHlwZXMiLCJhcHBSZWNvcmQiLCJjbG9uZSIsInN0YXRlIiwib3JpZ1JlcGxhY2VTdGF0ZSIsInJlcGxhY2VTdGF0ZSIsImJpbmQiLCJvcmlnUmVnaXN0ZXIiLCJvcmlnVW5yZWdpc3RlciIsInJlZ2lzdGVyTW9kdWxlIiwicGF0aCIsIm1vZHVsZSIsIm9wdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJsb2ciLCJ1bnJlZ2lzdGVyTW9kdWxlIiwia2V5Iiwiam9pbiIsImluZGV4IiwiZmluZEluZGV4IiwibSIsImRlZmluZVByb3BlcnR5IiwiX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXyIsImZvckVhY2giLCJ0b1N0cmluZ0Z1bmN0aW9uIiwiRnVuY3Rpb24iLCJjcmVhdGUiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0UHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIlNVUFBPUlRTIiwiU1lNQk9MX1BST1BFUlRJRVMiLCJXRUFLU0VUIiwiV2Vha1NldCIsImNyZWF0ZUNhY2hlIiwib2JqZWN0IiwiYWRkIiwiX3ZhbHVlcyIsImluZGV4T2YiLCJnZXRDbGVhbkNsb25lIiwicmVhbG0iLCJjb25zdHJ1Y3RvciIsIl9fcHJvdG9fXyIsImdldE9iamVjdENsb25lTG9vc2UiLCJoYW5kbGVDb3B5IiwiY2FjaGUiLCJzeW1ib2xzIiwic3ltYm9sIiwiZ2V0T2JqZWN0Q2xvbmVTdHJpY3QiLCJwcm9wZXJ0aWVzIiwiY29uY2F0IiwicHJvcGVydHkiLCJkZXNjcmlwdG9yIiwiZ2V0UmVnRXhwRmxhZ3MiLCJyZWdFeHAiLCJmbGFncyIsImdsb2JhbCIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJ1bmljb2RlIiwic3RpY2t5IiwiaXNBcnJheSIsIkFycmF5IiwiR0xPQkFMX1RISVMiLCJzZWxmIiwiaXNTdHJpY3QiLCJnZXRPYmplY3RDbG9uZSIsIkhUTUxFbGVtZW50IiwiY2xvbmVOb2RlIiwiQ29uc3RydWN0b3IiLCJnZXRUaW1lIiwiUmVnRXhwIiwic291cmNlIiwibGFzdEluZGV4IiwiU2V0IiwiQnVmZmVyIiwiaXNCdWZmZXIiLCJhbGxvY1Vuc2FmZSIsImNvcHkiLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsInRoZW4iLCJFcnJvciIsIldlYWtNYXAiLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///6793\n")},79310:(__unused_webpack_module,exports)=>{eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getCatchedGetters = exports.getCustomStoreDetails = exports.getCustomRouterDetails = exports.isVueInstance = exports.getCustomObjectDetails = exports.getCustomInstanceDetails = exports.getInstanceMap = exports.backendInjections = void 0;\nexports.backendInjections = {\n instanceMap: new Map(),\n isVueInstance: () => false,\n getCustomInstanceDetails: () => ({}),\n getCustomObjectDetails: () => undefined\n};\n\nfunction getInstanceMap() {\n return exports.backendInjections.instanceMap;\n}\n\nexports.getInstanceMap = getInstanceMap;\n\nfunction getCustomInstanceDetails(instance) {\n return exports.backendInjections.getCustomInstanceDetails(instance);\n}\n\nexports.getCustomInstanceDetails = getCustomInstanceDetails;\n\nfunction getCustomObjectDetails(value, proto) {\n return exports.backendInjections.getCustomObjectDetails(value, proto);\n}\n\nexports.getCustomObjectDetails = getCustomObjectDetails;\n\nfunction isVueInstance(value) {\n return exports.backendInjections.isVueInstance(value);\n}\n\nexports.isVueInstance = isVueInstance; // @TODO refactor\n\nfunction getCustomRouterDetails(router) {\n return {\n _custom: {\n type: 'router',\n display: 'VueRouter',\n value: {\n options: router.options,\n currentRoute: router.currentRoute\n },\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomRouterDetails = getCustomRouterDetails; // @TODO refactor\n\nfunction getCustomStoreDetails(store) {\n return {\n _custom: {\n type: 'store',\n display: 'Store',\n value: {\n state: store.state,\n getters: getCatchedGetters(store)\n },\n fields: {\n abstract: true\n }\n }\n };\n}\n\nexports.getCustomStoreDetails = getCustomStoreDetails; // @TODO refactor\n\nfunction getCatchedGetters(store) {\n const getters = {};\n const origGetters = store.getters || {};\n const keys = Object.keys(origGetters);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n Object.defineProperty(getters, key, {\n enumerable: true,\n get: () => {\n try {\n return origGetters[key];\n } catch (e) {\n return e;\n }\n }\n });\n }\n\n return getters;\n}\n\nexports.getCatchedGetters = getCatchedGetters;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkzMTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWFBLHlCQUFBQSxHQUFvQjtFQUMvQkMsV0FBVyxFQUFFLElBQUlDLEdBQUosRUFEa0I7RUFFL0JDLGFBQWEsRUFBRyxNQUFNLEtBRlM7RUFHL0JDLHdCQUF3QixFQUFHLE9BQU8sRUFBUCxDQUhJO0VBSS9CQyxzQkFBc0IsRUFBRyxNQUFNQztBQUpBLENBQXBCOztBQU9iLFNBQWdCQyxjQUFoQixHQUE4QjtFQUM1QixPQUFPUCwwQkFBa0JDLFdBQXpCO0FBQ0Q7O0FBRkRELHNCQUFBQTs7QUFJQSxTQUFnQkksd0JBQWhCLENBQTBDSSxRQUExQyxFQUFrRDtFQUNoRCxPQUFPUiwwQkFBa0JJLHdCQUFsQixDQUEyQ0ksUUFBM0MsQ0FBUDtBQUNEOztBQUZEUixnQ0FBQUE7O0FBSUEsU0FBZ0JLLHNCQUFoQixDQUF3Q0ksS0FBeEMsRUFBK0NDLEtBQS9DLEVBQTREO0VBQzFELE9BQU9WLDBCQUFrQkssc0JBQWxCLENBQXlDSSxLQUF6QyxFQUFnREMsS0FBaEQsQ0FBUDtBQUNEOztBQUZEViw4QkFBQUE7O0FBSUEsU0FBZ0JHLGFBQWhCLENBQStCTSxLQUEvQixFQUFvQztFQUNsQyxPQUFPVCwwQkFBa0JHLGFBQWxCLENBQWdDTSxLQUFoQyxDQUFQO0FBQ0Q7O0FBRkRULHFCQUFBQSxpQixDQUlBOztBQUNBLFNBQWdCVyxzQkFBaEIsQ0FBd0NDLE1BQXhDLEVBQThDO0VBQzVDLE9BQU87SUFDTEMsT0FBTyxFQUFFO01BQ1BDLElBQUksRUFBRSxRQURDO01BRVBDLE9BQU8sRUFBRSxXQUZGO01BR1BOLEtBQUssRUFBRTtRQUNMTyxPQUFPLEVBQUVKLE1BQU0sQ0FBQ0ksT0FEWDtRQUVMQyxZQUFZLEVBQUVMLE1BQU0sQ0FBQ0s7TUFGaEIsQ0FIQTtNQU9QQyxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDhCQUFBQSwwQixDQWdCQTs7QUFDQSxTQUFnQm9CLHFCQUFoQixDQUF1Q0MsS0FBdkMsRUFBNEM7RUFDMUMsT0FBTztJQUNMUixPQUFPLEVBQUU7TUFDUEMsSUFBSSxFQUFFLE9BREM7TUFFUEMsT0FBTyxFQUFFLE9BRkY7TUFHUE4sS0FBSyxFQUFFO1FBQ0xhLEtBQUssRUFBRUQsS0FBSyxDQUFDQyxLQURSO1FBRUxDLE9BQU8sRUFBRUMsaUJBQWlCLENBQUNILEtBQUQ7TUFGckIsQ0FIQTtNQU9QSCxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDZCQUFBQSx5QixDQWdCQTs7QUFDQSxTQUFnQndCLGlCQUFoQixDQUFtQ0gsS0FBbkMsRUFBd0M7RUFDdEMsTUFBTUUsT0FBTyxHQUFHLEVBQWhCO0VBRUEsTUFBTUUsV0FBVyxHQUFHSixLQUFLLENBQUNFLE9BQU4sSUFBaUIsRUFBckM7RUFDQSxNQUFNRyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZRCxXQUFaLENBQWI7O0VBQ0EsS0FBSyxJQUFJRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixJQUFJLENBQUNHLE1BQXpCLEVBQWlDRCxDQUFDLEVBQWxDLEVBQXNDO0lBQ3BDLE1BQU1FLEdBQUcsR0FBR0osSUFBSSxDQUFDRSxDQUFELENBQWhCO0lBQ0FELE1BQU0sQ0FBQ0ksY0FBUCxDQUFzQlIsT0FBdEIsRUFBK0JPLEdBQS9CLEVBQW9DO01BQ2xDRSxVQUFVLEVBQUUsSUFEc0I7TUFFbENDLEdBQUcsRUFBRSxNQUFLO1FBQ1IsSUFBSTtVQUNGLE9BQU9SLFdBQVcsQ0FBQ0ssR0FBRCxDQUFsQjtRQUNELENBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7VUFDVixPQUFPQSxDQUFQO1FBQ0Q7TUFDRjtJQVJpQyxDQUFwQztFQVVEOztFQUVELE9BQU9YLE9BQVA7QUFDRDs7QUFwQkR2Qix5QkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9iYWNrZW5kLnRzP2M2NDYiXSwibmFtZXMiOlsiZXhwb3J0cyIsImluc3RhbmNlTWFwIiwiTWFwIiwiaXNWdWVJbnN0YW5jZSIsImdldEN1c3RvbUluc3RhbmNlRGV0YWlscyIsImdldEN1c3RvbU9iamVjdERldGFpbHMiLCJ1bmRlZmluZWQiLCJnZXRJbnN0YW5jZU1hcCIsImluc3RhbmNlIiwidmFsdWUiLCJwcm90byIsImdldEN1c3RvbVJvdXRlckRldGFpbHMiLCJyb3V0ZXIiLCJfY3VzdG9tIiwidHlwZSIsImRpc3BsYXkiLCJvcHRpb25zIiwiY3VycmVudFJvdXRlIiwiZmllbGRzIiwiYWJzdHJhY3QiLCJnZXRDdXN0b21TdG9yZURldGFpbHMiLCJzdG9yZSIsInN0YXRlIiwiZ2V0dGVycyIsImdldENhdGNoZWRHZXR0ZXJzIiwib3JpZ0dldHRlcnMiLCJrZXlzIiwiT2JqZWN0IiwiaSIsImxlbmd0aCIsImtleSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZ