UNPKG

@vue/devtools

Version:
1 lines 255 kB
(()=>{"use strict";var __webpack_modules__={6793:(__unused_webpack_module,exports,__webpack_require__)=>{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 __webpack_require__.g !== 'undefined') {\n return __webpack_require__.g;\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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VSxDQUFDVCxNQUFELEVBQVNELFdBQVcsRUFBcEIsQ0FBakI7RUFDRDtBQUNGOztBQW5zQkRrRCxTQUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL0B2dWUvZGV2dG9vbHMvLi4vc3JjL2hvb2sudHM/MmY5YSJdLCJuYW1lcyI6WyJpbnN0YWxsSG9vayIsInRhcmdldCIsImlzSWZyYW1lIiwiZGV2dG9vbHNWZXJzaW9uIiwibGlzdGVuZXJzIiwiaW5qZWN0SWZyYW1lSG9vayIsImlmcmFtZSIsIl9fdmRldnRvb2xzX19pbmplY3RlZCIsImluamVjdCIsImNvbnRlbnRXaW5kb3ciLCJfX1ZVRV9ERVZUT09MU19JRlJBTUVfXyIsInNjcmlwdCIsImNvbnRlbnREb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsInRvU3RyaW5nIiwiZG9jdW1lbnRFbGVtZW50IiwiYXBwZW5kQ2hpbGQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImlmcmFtZUNoZWNrcyIsImluamVjdFRvSWZyYW1lcyIsIndpbmRvdyIsImlmcmFtZXMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpZnJhbWVUaW1lciIsInNldEludGVydmFsIiwiY2xlYXJJbnRlcnZhbCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJjb25zb2xlIiwiZXJyb3IiLCJob29rIiwic2VuZFRvUGFyZW50IiwiY2IiLCJwYXJlbnQiLCJ3YXJuIiwiVnVlIiwidmFsdWUiLCJlbmFibGVkIiwib24iLCJldmVudCIsImZuIiwib25jZSIsIm9mZiIsImVtaXQiLCJhcmdzIiwiY2xlYW51cEJ1ZmZlciIsIm1hdGNoQXJnIiwiX2EiLCJ1bmRlZmluZWQiLCJfYnVmZmVyIiwiX2J1ZmZlck1hcCIsIk1hcCIsIl9idWZmZXJUb1JlbW92ZSIsInN0b3JlIiwiaW5pdGlhbFN0YXRlIiwic3RvcmVNb2R1bGVzIiwiZmx1c2hTdG9yZU1vZHVsZXMiLCJhcHBzIiwiX3JlcGxheUJ1ZmZlciIsImJ1ZmZlciIsImNsZWFyIiwiaSIsImwiLCJsZW5ndGgiLCJhbGxBcmdzIiwic2xpY2UiLCJhcHBseSIsInB1c2giLCIkZXZlbnQiLCJhcmd1bWVudHMiLCJjYnMiLCJzcGxpY2UiLCJyZXN1bHQiLCJjYXRjaCIsImJ1ZmZlcmVkIiwiRGF0ZSIsIm5vdyIsInNldCIsImluQnVmZmVyIiwiaGFzIiwiZ2V0IiwiX2NsZWFudXBCdWZmZXIiLCJmaWx0ZXIiLCIkaW5zcGVjdCIsIl9fVlVFX0RFVlRPT0xTX0lOU1BFQ1RfXyIsImFwcCIsInZlcnNpb24iLCJ0eXBlcyIsImFwcFJlY29yZCIsImNsb25lIiwic3RhdGUiLCJvcmlnUmVwbGFjZVN0YXRlIiwicmVwbGFjZVN0YXRlIiwiYmluZCIsIm9yaWdSZWdpc3RlciIsIm9yaWdVbnJlZ2lzdGVyIiwicmVnaXN0ZXJNb2R1bGUiLCJwYXRoIiwibW9kdWxlIiwib3B0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImxvZyIsInVucmVnaXN0ZXJNb2R1bGUiLCJrZXkiLCJqb2luIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fIiwiZm9yRWFjaCIsInRvU3RyaW5nRnVuY3Rpb24iLCJGdW5jdGlvbiIsImNyZWF0ZSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiU1VQUE9SVFMiLCJTWU1CT0xfUFJPUEVSVElFUyIsIldFQUtTRVQiLCJXZWFrU2V0IiwiY3JlYXRlQ2FjaGUiLCJvYmplY3QiLCJhZGQiLCJfdmFsdWVzIiwiaW5kZXhPZiIsImdldENsZWFuQ2xvbmUiLCJyZWFsbSIsImNvbnN0cnVjdG9yIiwiX19wcm90b19fIiwiZ2V0T2JqZWN0Q2xvbmVMb29zZSIsImhhbmRsZUNvcHkiLCJjYWNoZSIsInN5bWJvbHMiLCJzeW1ib2wiLCJnZXRPYmplY3RDbG9uZVN0cmljdCIsInByb3BlcnRpZXMiLCJjb25jYXQiLCJwcm9wZXJ0eSIsImRlc2NyaXB0b3IiLCJnZXRSZWdFeHBGbGFncyIsInJlZ0V4cCIsImZsYWdzIiwiZ2xvYmFsIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsInVuaWNvZGUiLCJzdGlja3kiLCJpc0FycmF5IiwiQXJyYXkiLCJHTE9CQUxfVEhJUyIsInNlbGYiLCJpc1N0cmljdCIsImdldE9iamVjdENsb25lIiwiSFRNTEVsZW1lbnQiLCJjbG9uZU5vZGUiLCJDb25zdHJ1Y3RvciIsImdldFRpbWUiLCJSZWdFeHAiLCJzb3VyY2UiLCJsYXN0SW5kZXgiLCJTZXQiLCJCdWZmZXIiLCJpc0J1ZmZlciIsImFsbG9jVW5zYWZlIiwiY29weSIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGhlbiIsIkVycm9yIiwiV2Vha01hcCIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkzMTAuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWFBLHlCQUFBQSxHQUFvQjtFQUMvQkMsV0FBVyxFQUFFLElBQUlDLEdBQUosRUFEa0I7RUFFL0JDLGFBQWEsRUFBRyxNQUFNLEtBRlM7RUFHL0JDLHdCQUF3QixFQUFHLE9BQU8sRUFBUCxDQUhJO0VBSS9CQyxzQkFBc0IsRUFBRyxNQUFNQztBQUpBLENBQXBCOztBQU9iLFNBQWdCQyxjQUFoQixHQUE4QjtFQUM1QixPQUFPUCwwQkFBa0JDLFdBQXpCO0FBQ0Q7O0FBRkRELHNCQUFBQTs7QUFJQSxTQUFnQkksd0JBQWhCLENBQTBDSSxRQUExQyxFQUFrRDtFQUNoRCxPQUFPUiwwQkFBa0JJLHdCQUFsQixDQUEyQ0ksUUFBM0MsQ0FBUDtBQUNEOztBQUZEUixnQ0FBQUE7O0FBSUEsU0FBZ0JLLHNCQUFoQixDQUF3Q0ksS0FBeEMsRUFBK0NDLEtBQS9DLEVBQTREO0VBQzFELE9BQU9WLDBCQUFrQkssc0JBQWxCLENBQXlDSSxLQUF6QyxFQUFnREMsS0FBaEQsQ0FBUDtBQUNEOztBQUZEViw4QkFBQUE7O0FBSUEsU0FBZ0JHLGFBQWhCLENBQStCTSxLQUEvQixFQUFvQztFQUNsQyxPQUFPVCwwQkFBa0JHLGFBQWxCLENBQWdDTSxLQUFoQyxDQUFQO0FBQ0Q7O0FBRkRULHFCQUFBQSxpQixDQUlBOztBQUNBLFNBQWdCVyxzQkFBaEIsQ0FBd0NDLE1BQXhDLEVBQThDO0VBQzVDLE9BQU87SUFDTEMsT0FBTyxFQUFFO01BQ1BDLElBQUksRUFBRSxRQURDO01BRVBDLE9BQU8sRUFBRSxXQUZGO01BR1BOLEtBQUssRUFBRTtRQUNMTyxPQUFPLEVBQUVKLE1BQU0sQ0FBQ0ksT0FEWDtRQUVMQyxZQUFZLEVBQUVMLE1BQU0sQ0FBQ0s7TUFGaEIsQ0FIQTtNQU9QQyxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDhCQUFBQSwwQixDQWdCQTs7QUFDQSxTQUFnQm9CLHFCQUFoQixDQUF1Q0MsS0FBdkMsRUFBNEM7RUFDMUMsT0FBTztJQUNMUixPQUFPLEVBQUU7TUFDUEMsSUFBSSxFQUFFLE9BREM7TUFFUEMsT0FBTyxFQUFFLE9BRkY7TUFHUE4sS0FBSyxFQUFFO1FBQ0xhLEtBQUssRUFBRUQsS0FBSyxDQUFDQyxLQURSO1FBRUxDLE9BQU8sRUFBRUMsaUJBQWlCLENBQUNILEtBQUQ7TUFGckIsQ0FIQTtNQU9QSCxNQUFNLEVBQUU7UUFDTkMsUUFBUSxFQUFFO01BREo7SUFQRDtFQURKLENBQVA7QUFhRDs7QUFkRG5CLDZCQUFBQSx5QixDQWdCQTs7QUFDQSxTQUFnQndCLGlCQUFoQixDQUFtQ0gsS0FBbkMsRUFBd0M7RUFDdEMsTUFBTUUsT0FBTyxHQUFHLEVBQWhCO0VBRUEsTUFBTUUsV0FBVyxHQUFHSixLQUFLLENBQUNFLE9BQU4sSUFBaUIsRUFBckM7RUFDQSxNQUFNRyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZRCxXQUFaLENBQWI7O0VBQ0EsS0FBSyxJQUFJRyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixJQUFJLENBQUNHLE1BQXpCLEVBQWlDRCxDQUFDLEVBQWxDLEVBQXNDO0lBQ3BDLE1BQU1FLEdBQUcsR0FBR0osSUFBSSxDQUFDRSxDQUFELENBQWhCO0lBQ0FELE1BQU0sQ0FBQ0ksY0FBUCxDQUFzQlIsT0FBdEIsRUFBK0JPLEdBQS9CLEVBQW9DO01BQ2xDRSxVQUFVLEVBQUUsSUFEc0I7TUFFbENDLEdBQUcsRUFBRSxNQUFLO1FBQ1IsSUFBSTtVQUNGLE9BQU9SLFdBQVcsQ0FBQ0ssR0FBRCxDQUFsQjtRQUNELENBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7VUFDVixPQUFPQSxDQUFQO1FBQ0Q7TUFDRjtJQVJpQyxDQUFwQztFQVVEOztFQUVELE9BQU9YLE9BQVA7QUFDRDs7QUFwQkR2Qix5QkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AdnVlL2RldnRvb2xzLy4uL3NyYy9iYWNrZW5kLnRzP2M2NDYiXSwibmFtZXMiOlsiZXhwb3J0cyIsImluc3RhbmNlTWFwIiwiTWFwIiwiaXNWdWVJbnN0YW5jZSIsImdldEN1c3RvbUluc3RhbmNlRGV0YWlscyIsImdldEN1c3RvbU9iamVjdERldGFpbHMiLCJ1bmRlZmluZWQiLCJnZXRJbnN0YW5jZU1hcCIsImluc3RhbmNlIiwidmFsdWUiLCJwcm90byIsImdldEN1c3RvbVJvdXRlckRldGFpbHMiLCJyb3V0ZXIiLCJfY3VzdG9tIiwidHlwZSIsImRpc3BsYXkiLCJvcHRpb25zIiwiY3VycmVudFJvdXRlIiwiZmllbGRzIiwiYWJzdHJhY3QiLCJnZXRDdXN0b21TdG9yZURldGFpbHMiLCJzdG9yZSIsInN0YXRlIiwiZ2V0dGVycyIsImdldENhdGNoZWRHZXR0ZXJzIiwib3JpZ0dldHRlcnMiLCJrZXlzIiwiT2JqZWN0IiwiaSIsImxlbmd