vitepress___@vue_devtools-api.js (117872B)
1 // node_modules/@vue/devtools-shared/dist/index.js 2 var __create = Object.create; 3 var __defProp = Object.defineProperty; 4 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 5 var __getOwnPropNames = Object.getOwnPropertyNames; 6 var __getProtoOf = Object.getPrototypeOf; 7 var __hasOwnProp = Object.prototype.hasOwnProperty; 8 var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); 9 var __copyProps = (to, from, except, desc) => { 10 if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { 11 key = keys[i]; 12 if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { 13 get: ((k) => from[k]).bind(null, key), 14 enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable 15 }); 16 } 17 return to; 18 }; 19 var __toESM = (mod, isNodeMode, target2) => (target2 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target2, "default", { 20 value: mod, 21 enumerable: true 22 }) : target2, mod)); 23 var isBrowser = typeof navigator !== "undefined"; 24 var target = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : typeof global !== "undefined" ? global : {}; 25 var isInChromePanel = typeof target.chrome !== "undefined" && !!target.chrome.devtools; 26 var isInIframe = isBrowser && target.self !== target.top; 27 var isInElectron = typeof navigator !== "undefined" && navigator.userAgent?.toLowerCase().includes("electron"); 28 var isNuxtApp = typeof window !== "undefined" && !!window.__NUXT__; 29 var import_rfdc = __toESM(__commonJSMin(((exports, module) => { 30 module.exports = rfdc; 31 function copyBuffer(cur) { 32 if (cur instanceof Buffer) return Buffer.from(cur); 33 return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length); 34 } 35 function rfdc(opts) { 36 opts = opts || {}; 37 if (opts.circles) return rfdcCircles(opts); 38 const constructorHandlers = /* @__PURE__ */ new Map(); 39 constructorHandlers.set(Date, (o) => new Date(o)); 40 constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn))); 41 constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn))); 42 if (opts.constructorHandlers) for (const handler2 of opts.constructorHandlers) constructorHandlers.set(handler2[0], handler2[1]); 43 let handler = null; 44 return opts.proto ? cloneProto : clone; 45 function cloneArray(a, fn) { 46 const keys = Object.keys(a); 47 const a2 = new Array(keys.length); 48 for (let i = 0; i < keys.length; i++) { 49 const k = keys[i]; 50 const cur = a[k]; 51 if (typeof cur !== "object" || cur === null) a2[k] = cur; 52 else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) a2[k] = handler(cur, fn); 53 else if (ArrayBuffer.isView(cur)) a2[k] = copyBuffer(cur); 54 else a2[k] = fn(cur); 55 } 56 return a2; 57 } 58 function clone(o) { 59 if (typeof o !== "object" || o === null) return o; 60 if (Array.isArray(o)) return cloneArray(o, clone); 61 if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, clone); 62 const o2 = {}; 63 for (const k in o) { 64 if (Object.hasOwnProperty.call(o, k) === false) continue; 65 const cur = o[k]; 66 if (typeof cur !== "object" || cur === null) o2[k] = cur; 67 else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, clone); 68 else if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur); 69 else o2[k] = clone(cur); 70 } 71 return o2; 72 } 73 function cloneProto(o) { 74 if (typeof o !== "object" || o === null) return o; 75 if (Array.isArray(o)) return cloneArray(o, cloneProto); 76 if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, cloneProto); 77 const o2 = {}; 78 for (const k in o) { 79 const cur = o[k]; 80 if (typeof cur !== "object" || cur === null) o2[k] = cur; 81 else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, cloneProto); 82 else if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur); 83 else o2[k] = cloneProto(cur); 84 } 85 return o2; 86 } 87 } 88 function rfdcCircles(opts) { 89 const refs = []; 90 const refsNew = []; 91 const constructorHandlers = /* @__PURE__ */ new Map(); 92 constructorHandlers.set(Date, (o) => new Date(o)); 93 constructorHandlers.set(Map, (o, fn) => new Map(cloneArray(Array.from(o), fn))); 94 constructorHandlers.set(Set, (o, fn) => new Set(cloneArray(Array.from(o), fn))); 95 if (opts.constructorHandlers) for (const handler2 of opts.constructorHandlers) constructorHandlers.set(handler2[0], handler2[1]); 96 let handler = null; 97 return opts.proto ? cloneProto : clone; 98 function cloneArray(a, fn) { 99 const keys = Object.keys(a); 100 const a2 = new Array(keys.length); 101 for (let i = 0; i < keys.length; i++) { 102 const k = keys[i]; 103 const cur = a[k]; 104 if (typeof cur !== "object" || cur === null) a2[k] = cur; 105 else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) a2[k] = handler(cur, fn); 106 else if (ArrayBuffer.isView(cur)) a2[k] = copyBuffer(cur); 107 else { 108 const index = refs.indexOf(cur); 109 if (index !== -1) a2[k] = refsNew[index]; 110 else a2[k] = fn(cur); 111 } 112 } 113 return a2; 114 } 115 function clone(o) { 116 if (typeof o !== "object" || o === null) return o; 117 if (Array.isArray(o)) return cloneArray(o, clone); 118 if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, clone); 119 const o2 = {}; 120 refs.push(o); 121 refsNew.push(o2); 122 for (const k in o) { 123 if (Object.hasOwnProperty.call(o, k) === false) continue; 124 const cur = o[k]; 125 if (typeof cur !== "object" || cur === null) o2[k] = cur; 126 else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, clone); 127 else if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur); 128 else { 129 const i = refs.indexOf(cur); 130 if (i !== -1) o2[k] = refsNew[i]; 131 else o2[k] = clone(cur); 132 } 133 } 134 refs.pop(); 135 refsNew.pop(); 136 return o2; 137 } 138 function cloneProto(o) { 139 if (typeof o !== "object" || o === null) return o; 140 if (Array.isArray(o)) return cloneArray(o, cloneProto); 141 if (o.constructor !== Object && (handler = constructorHandlers.get(o.constructor))) return handler(o, cloneProto); 142 const o2 = {}; 143 refs.push(o); 144 refsNew.push(o2); 145 for (const k in o) { 146 const cur = o[k]; 147 if (typeof cur !== "object" || cur === null) o2[k] = cur; 148 else if (cur.constructor !== Object && (handler = constructorHandlers.get(cur.constructor))) o2[k] = handler(cur, cloneProto); 149 else if (ArrayBuffer.isView(cur)) o2[k] = copyBuffer(cur); 150 else { 151 const i = refs.indexOf(cur); 152 if (i !== -1) o2[k] = refsNew[i]; 153 else o2[k] = cloneProto(cur); 154 } 155 } 156 refs.pop(); 157 refsNew.pop(); 158 return o2; 159 } 160 } 161 }))(), 1); 162 var classifyRE = /(?:^|[-_/])(\w)/g; 163 function toUpper(_, c) { 164 return c ? c.toUpperCase() : ""; 165 } 166 function classify(str) { 167 return str && `${str}`.replace(classifyRE, toUpper); 168 } 169 function basename(filename, ext) { 170 let normalizedFilename = filename.replace(/^[a-z]:/i, "").replace(/\\/g, "/"); 171 if (normalizedFilename.endsWith(`index${ext}`)) normalizedFilename = normalizedFilename.replace(`/index${ext}`, ext); 172 const lastSlashIndex = normalizedFilename.lastIndexOf("/"); 173 const baseNameWithExt = normalizedFilename.substring(lastSlashIndex + 1); 174 if (ext) { 175 const extIndex = baseNameWithExt.lastIndexOf(ext); 176 return baseNameWithExt.substring(0, extIndex); 177 } 178 return ""; 179 } 180 var HTTP_URL_RE = /^https?:\/\//; 181 function isUrlString(str) { 182 return str.startsWith("/") || HTTP_URL_RE.test(str); 183 } 184 var deepClone = (0, import_rfdc.default)({ circles: true }); 185 186 // node_modules/perfect-debounce/dist/index.mjs 187 var DEBOUNCE_DEFAULTS = { trailing: true }; 188 function debounce(fn, wait = 25, options = {}) { 189 options = { 190 ...DEBOUNCE_DEFAULTS, 191 ...options 192 }; 193 if (!Number.isFinite(wait)) throw new TypeError("Expected `wait` to be a finite number"); 194 let leadingValue; 195 let timeout; 196 let resolveList = []; 197 let currentPromise; 198 let trailingArgs; 199 const applyFn = (_this, args) => { 200 currentPromise = _applyPromised(fn, _this, args); 201 currentPromise.finally(() => { 202 currentPromise = null; 203 if (options.trailing && trailingArgs && !timeout) { 204 const promise = applyFn(_this, trailingArgs); 205 trailingArgs = null; 206 return promise; 207 } 208 }); 209 return currentPromise; 210 }; 211 const debounced = function(...args) { 212 if (options.trailing) trailingArgs = args; 213 if (currentPromise) return currentPromise; 214 return new Promise((resolve) => { 215 const shouldCallNow = !timeout && options.leading; 216 clearTimeout(timeout); 217 timeout = setTimeout(() => { 218 timeout = null; 219 const promise = options.leading ? leadingValue : applyFn(this, args); 220 trailingArgs = null; 221 for (const _resolve of resolveList) _resolve(promise); 222 resolveList = []; 223 }, wait); 224 if (shouldCallNow) { 225 leadingValue = applyFn(this, args); 226 resolve(leadingValue); 227 } else resolveList.push(resolve); 228 }); 229 }; 230 const _clearTimeout = (timer) => { 231 if (timer) { 232 clearTimeout(timer); 233 timeout = null; 234 } 235 }; 236 debounced.isPending = () => !!timeout; 237 debounced.cancel = () => { 238 _clearTimeout(timeout); 239 resolveList = []; 240 trailingArgs = null; 241 }; 242 debounced.flush = () => { 243 _clearTimeout(timeout); 244 if (!trailingArgs || currentPromise) return; 245 const args = trailingArgs; 246 trailingArgs = null; 247 return applyFn(this, args); 248 }; 249 return debounced; 250 } 251 async function _applyPromised(fn, _this, args) { 252 return await fn.apply(_this, args); 253 } 254 255 // node_modules/hookable/dist/index.mjs 256 function flatHooks(configHooks, hooks2 = {}, parentName) { 257 for (const key in configHooks) { 258 const subHook = configHooks[key]; 259 const name = parentName ? `${parentName}:${key}` : key; 260 if (typeof subHook === "object" && subHook !== null) { 261 flatHooks(subHook, hooks2, name); 262 } else if (typeof subHook === "function") { 263 hooks2[name] = subHook; 264 } 265 } 266 return hooks2; 267 } 268 var defaultTask = { run: (function_) => function_() }; 269 var _createTask = () => defaultTask; 270 var createTask = typeof console.createTask !== "undefined" ? console.createTask : _createTask; 271 function serialTaskCaller(hooks2, args) { 272 const name = args.shift(); 273 const task = createTask(name); 274 return hooks2.reduce( 275 (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))), 276 Promise.resolve() 277 ); 278 } 279 function parallelTaskCaller(hooks2, args) { 280 const name = args.shift(); 281 const task = createTask(name); 282 return Promise.all(hooks2.map((hook2) => task.run(() => hook2(...args)))); 283 } 284 function callEachWith(callbacks, arg0) { 285 for (const callback of [...callbacks]) { 286 callback(arg0); 287 } 288 } 289 var Hookable = class { 290 constructor() { 291 this._hooks = {}; 292 this._before = void 0; 293 this._after = void 0; 294 this._deprecatedMessages = void 0; 295 this._deprecatedHooks = {}; 296 this.hook = this.hook.bind(this); 297 this.callHook = this.callHook.bind(this); 298 this.callHookWith = this.callHookWith.bind(this); 299 } 300 hook(name, function_, options = {}) { 301 if (!name || typeof function_ !== "function") { 302 return () => { 303 }; 304 } 305 const originalName = name; 306 let dep; 307 while (this._deprecatedHooks[name]) { 308 dep = this._deprecatedHooks[name]; 309 name = dep.to; 310 } 311 if (dep && !options.allowDeprecated) { 312 let message = dep.message; 313 if (!message) { 314 message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : ""); 315 } 316 if (!this._deprecatedMessages) { 317 this._deprecatedMessages = /* @__PURE__ */ new Set(); 318 } 319 if (!this._deprecatedMessages.has(message)) { 320 console.warn(message); 321 this._deprecatedMessages.add(message); 322 } 323 } 324 if (!function_.name) { 325 try { 326 Object.defineProperty(function_, "name", { 327 get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb", 328 configurable: true 329 }); 330 } catch { 331 } 332 } 333 this._hooks[name] = this._hooks[name] || []; 334 this._hooks[name].push(function_); 335 return () => { 336 if (function_) { 337 this.removeHook(name, function_); 338 function_ = void 0; 339 } 340 }; 341 } 342 hookOnce(name, function_) { 343 let _unreg; 344 let _function = (...arguments_) => { 345 if (typeof _unreg === "function") { 346 _unreg(); 347 } 348 _unreg = void 0; 349 _function = void 0; 350 return function_(...arguments_); 351 }; 352 _unreg = this.hook(name, _function); 353 return _unreg; 354 } 355 removeHook(name, function_) { 356 if (this._hooks[name]) { 357 const index = this._hooks[name].indexOf(function_); 358 if (index !== -1) { 359 this._hooks[name].splice(index, 1); 360 } 361 if (this._hooks[name].length === 0) { 362 delete this._hooks[name]; 363 } 364 } 365 } 366 deprecateHook(name, deprecated) { 367 this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated; 368 const _hooks = this._hooks[name] || []; 369 delete this._hooks[name]; 370 for (const hook2 of _hooks) { 371 this.hook(name, hook2); 372 } 373 } 374 deprecateHooks(deprecatedHooks) { 375 Object.assign(this._deprecatedHooks, deprecatedHooks); 376 for (const name in deprecatedHooks) { 377 this.deprecateHook(name, deprecatedHooks[name]); 378 } 379 } 380 addHooks(configHooks) { 381 const hooks2 = flatHooks(configHooks); 382 const removeFns = Object.keys(hooks2).map( 383 (key) => this.hook(key, hooks2[key]) 384 ); 385 return () => { 386 for (const unreg of removeFns.splice(0, removeFns.length)) { 387 unreg(); 388 } 389 }; 390 } 391 removeHooks(configHooks) { 392 const hooks2 = flatHooks(configHooks); 393 for (const key in hooks2) { 394 this.removeHook(key, hooks2[key]); 395 } 396 } 397 removeAllHooks() { 398 for (const key in this._hooks) { 399 delete this._hooks[key]; 400 } 401 } 402 callHook(name, ...arguments_) { 403 arguments_.unshift(name); 404 return this.callHookWith(serialTaskCaller, name, ...arguments_); 405 } 406 callHookParallel(name, ...arguments_) { 407 arguments_.unshift(name); 408 return this.callHookWith(parallelTaskCaller, name, ...arguments_); 409 } 410 callHookWith(caller, name, ...arguments_) { 411 const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0; 412 if (this._before) { 413 callEachWith(this._before, event); 414 } 415 const result = caller( 416 name in this._hooks ? [...this._hooks[name]] : [], 417 arguments_ 418 ); 419 if (result instanceof Promise) { 420 return result.finally(() => { 421 if (this._after && event) { 422 callEachWith(this._after, event); 423 } 424 }); 425 } 426 if (this._after && event) { 427 callEachWith(this._after, event); 428 } 429 return result; 430 } 431 beforeEach(function_) { 432 this._before = this._before || []; 433 this._before.push(function_); 434 return () => { 435 if (this._before !== void 0) { 436 const index = this._before.indexOf(function_); 437 if (index !== -1) { 438 this._before.splice(index, 1); 439 } 440 } 441 }; 442 } 443 afterEach(function_) { 444 this._after = this._after || []; 445 this._after.push(function_); 446 return () => { 447 if (this._after !== void 0) { 448 const index = this._after.indexOf(function_); 449 if (index !== -1) { 450 this._after.splice(index, 1); 451 } 452 } 453 }; 454 } 455 }; 456 function createHooks() { 457 return new Hookable(); 458 } 459 460 // node_modules/birpc/dist/index.mjs 461 var { clearTimeout: clearTimeout2, setTimeout: setTimeout2 } = globalThis; 462 var random = Math.random.bind(Math); 463 464 // node_modules/@vue/devtools-kit/dist/index.js 465 var __create2 = Object.create; 466 var __defProp2 = Object.defineProperty; 467 var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; 468 var __getOwnPropNames2 = Object.getOwnPropertyNames; 469 var __getProtoOf2 = Object.getPrototypeOf; 470 var __hasOwnProp2 = Object.prototype.hasOwnProperty; 471 var __commonJSMin2 = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); 472 var __copyProps2 = (to, from, except, desc) => { 473 if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames2(from), i = 0, n = keys.length, key; i < n; i++) { 474 key = keys[i]; 475 if (!__hasOwnProp2.call(to, key) && key !== except) __defProp2(to, key, { 476 get: ((k) => from[k]).bind(null, key), 477 enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable 478 }); 479 } 480 return to; 481 }; 482 var __toESM2 = (mod, isNodeMode, target2) => (target2 = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(isNodeMode || !mod || !mod.__esModule ? __defProp2(target2, "default", { 483 value: mod, 484 enumerable: true 485 }) : target2, mod)); 486 function getComponentTypeName(options) { 487 if (typeof options === "function") return options.displayName || options.name || options.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ || ""; 488 const name = options.name || options._componentTag || options.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ || options.__name; 489 if (name === "index" && options.__file?.endsWith("index.vue")) return ""; 490 return name; 491 } 492 function getComponentFileName(options) { 493 const file = options.__file; 494 if (file) return classify(basename(file, ".vue")); 495 } 496 function saveComponentGussedName(instance, name) { 497 instance.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ = name; 498 return name; 499 } 500 function getAppRecord(instance) { 501 if (instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__) return instance.__VUE_DEVTOOLS_NEXT_APP_RECORD__; 502 else if (instance.root) return instance.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__; 503 } 504 function isFragment(instance) { 505 const subTreeType = instance.subTree?.type; 506 const appRecord = getAppRecord(instance); 507 if (appRecord) return appRecord?.types?.Fragment === subTreeType; 508 return false; 509 } 510 function getInstanceName(instance) { 511 const name = getComponentTypeName(instance?.type || {}); 512 if (name) return name; 513 if (instance?.root === instance) return "Root"; 514 for (const key in instance.parent?.type?.components) if (instance.parent.type.components[key] === instance?.type) return saveComponentGussedName(instance, key); 515 for (const key in instance.appContext?.components) if (instance.appContext.components[key] === instance?.type) return saveComponentGussedName(instance, key); 516 const fileName = getComponentFileName(instance?.type || {}); 517 if (fileName) return fileName; 518 return "Anonymous Component"; 519 } 520 function getUniqueComponentId(instance) { 521 return `${instance?.appContext?.app?.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__ ?? 0}:${instance === instance?.root ? "root" : instance.uid}`; 522 } 523 function getComponentInstance(appRecord, instanceId) { 524 instanceId = instanceId || `${appRecord.id}:root`; 525 return appRecord.instanceMap.get(instanceId) || appRecord.instanceMap.get(":root"); 526 } 527 function createRect() { 528 const rect = { 529 top: 0, 530 bottom: 0, 531 left: 0, 532 right: 0, 533 get width() { 534 return rect.right - rect.left; 535 }, 536 get height() { 537 return rect.bottom - rect.top; 538 } 539 }; 540 return rect; 541 } 542 var range; 543 function getTextRect(node) { 544 if (!range) range = document.createRange(); 545 range.selectNode(node); 546 return range.getBoundingClientRect(); 547 } 548 function getFragmentRect(vnode) { 549 const rect = createRect(); 550 if (!vnode.children) return rect; 551 for (let i = 0, l = vnode.children.length; i < l; i++) { 552 const childVnode = vnode.children[i]; 553 let childRect; 554 if (childVnode.component) childRect = getComponentBoundingRect(childVnode.component); 555 else if (childVnode.el) { 556 const el = childVnode.el; 557 if (el.nodeType === 1 || el.getBoundingClientRect) childRect = el.getBoundingClientRect(); 558 else if (el.nodeType === 3 && el.data.trim()) childRect = getTextRect(el); 559 } 560 if (childRect) mergeRects(rect, childRect); 561 } 562 return rect; 563 } 564 function mergeRects(a, b) { 565 if (!a.top || b.top < a.top) a.top = b.top; 566 if (!a.bottom || b.bottom > a.bottom) a.bottom = b.bottom; 567 if (!a.left || b.left < a.left) a.left = b.left; 568 if (!a.right || b.right > a.right) a.right = b.right; 569 return a; 570 } 571 var DEFAULT_RECT = { 572 top: 0, 573 left: 0, 574 right: 0, 575 bottom: 0, 576 width: 0, 577 height: 0 578 }; 579 function getComponentBoundingRect(instance) { 580 const el = instance.subTree.el; 581 if (typeof window === "undefined") return DEFAULT_RECT; 582 if (isFragment(instance)) return getFragmentRect(instance.subTree); 583 else if (el?.nodeType === 1) return el?.getBoundingClientRect(); 584 else if (instance.subTree.component) return getComponentBoundingRect(instance.subTree.component); 585 else return DEFAULT_RECT; 586 } 587 function getRootElementsFromComponentInstance(instance) { 588 if (isFragment(instance)) return getFragmentRootElements(instance.subTree); 589 if (!instance.subTree) return []; 590 return [instance.subTree.el]; 591 } 592 function getFragmentRootElements(vnode) { 593 if (!vnode.children) return []; 594 const list = []; 595 vnode.children.forEach((childVnode) => { 596 if (childVnode.component) list.push(...getRootElementsFromComponentInstance(childVnode.component)); 597 else if (childVnode?.el) list.push(childVnode.el); 598 }); 599 return list; 600 } 601 var CONTAINER_ELEMENT_ID = "__vue-devtools-component-inspector__"; 602 var CARD_ELEMENT_ID = "__vue-devtools-component-inspector__card__"; 603 var COMPONENT_NAME_ELEMENT_ID = "__vue-devtools-component-inspector__name__"; 604 var INDICATOR_ELEMENT_ID = "__vue-devtools-component-inspector__indicator__"; 605 var containerStyles = { 606 display: "block", 607 zIndex: 2147483640, 608 position: "fixed", 609 backgroundColor: "#42b88325", 610 border: "1px solid #42b88350", 611 borderRadius: "5px", 612 transition: "all 0.1s ease-in", 613 pointerEvents: "none" 614 }; 615 var cardStyles = { 616 fontFamily: "Arial, Helvetica, sans-serif", 617 padding: "5px 8px", 618 borderRadius: "4px", 619 textAlign: "left", 620 position: "absolute", 621 left: 0, 622 color: "#e9e9e9", 623 fontSize: "14px", 624 fontWeight: 600, 625 lineHeight: "24px", 626 backgroundColor: "#42b883", 627 boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)" 628 }; 629 var indicatorStyles = { 630 display: "inline-block", 631 fontWeight: 400, 632 fontStyle: "normal", 633 fontSize: "12px", 634 opacity: 0.7 635 }; 636 function getContainerElement() { 637 return document.getElementById(CONTAINER_ELEMENT_ID); 638 } 639 function getCardElement() { 640 return document.getElementById(CARD_ELEMENT_ID); 641 } 642 function getIndicatorElement() { 643 return document.getElementById(INDICATOR_ELEMENT_ID); 644 } 645 function getNameElement() { 646 return document.getElementById(COMPONENT_NAME_ELEMENT_ID); 647 } 648 function getStyles(bounds) { 649 return { 650 left: `${Math.round(bounds.left * 100) / 100}px`, 651 top: `${Math.round(bounds.top * 100) / 100}px`, 652 width: `${Math.round(bounds.width * 100) / 100}px`, 653 height: `${Math.round(bounds.height * 100) / 100}px` 654 }; 655 } 656 function create(options) { 657 const containerEl = document.createElement("div"); 658 containerEl.id = options.elementId ?? CONTAINER_ELEMENT_ID; 659 Object.assign(containerEl.style, { 660 ...containerStyles, 661 ...getStyles(options.bounds), 662 ...options.style 663 }); 664 const cardEl = document.createElement("span"); 665 cardEl.id = CARD_ELEMENT_ID; 666 Object.assign(cardEl.style, { 667 ...cardStyles, 668 top: options.bounds.top < 35 ? 0 : "-35px" 669 }); 670 const nameEl = document.createElement("span"); 671 nameEl.id = COMPONENT_NAME_ELEMENT_ID; 672 nameEl.innerHTML = `<${options.name}> `; 673 const indicatorEl = document.createElement("i"); 674 indicatorEl.id = INDICATOR_ELEMENT_ID; 675 indicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`; 676 Object.assign(indicatorEl.style, indicatorStyles); 677 cardEl.appendChild(nameEl); 678 cardEl.appendChild(indicatorEl); 679 containerEl.appendChild(cardEl); 680 document.body.appendChild(containerEl); 681 return containerEl; 682 } 683 function update(options) { 684 const containerEl = getContainerElement(); 685 const cardEl = getCardElement(); 686 const nameEl = getNameElement(); 687 const indicatorEl = getIndicatorElement(); 688 if (containerEl) { 689 Object.assign(containerEl.style, { 690 ...containerStyles, 691 ...getStyles(options.bounds) 692 }); 693 Object.assign(cardEl.style, { top: options.bounds.top < 35 ? 0 : "-35px" }); 694 nameEl.innerHTML = `<${options.name}> `; 695 indicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`; 696 } 697 } 698 function highlight(instance) { 699 const bounds = getComponentBoundingRect(instance); 700 if (!bounds.width && !bounds.height) return; 701 const name = getInstanceName(instance); 702 getContainerElement() ? update({ 703 bounds, 704 name 705 }) : create({ 706 bounds, 707 name 708 }); 709 } 710 function unhighlight() { 711 const el = getContainerElement(); 712 if (el) el.style.display = "none"; 713 } 714 var inspectInstance = null; 715 function inspectFn(e) { 716 const target2 = e.target; 717 if (target2) { 718 const instance = target2.__vueParentComponent; 719 if (instance) { 720 inspectInstance = instance; 721 if (instance.vnode.el) { 722 const bounds = getComponentBoundingRect(instance); 723 const name = getInstanceName(instance); 724 getContainerElement() ? update({ 725 bounds, 726 name 727 }) : create({ 728 bounds, 729 name 730 }); 731 } 732 } 733 } 734 } 735 function selectComponentFn(e, cb) { 736 e.preventDefault(); 737 e.stopPropagation(); 738 if (inspectInstance) cb(getUniqueComponentId(inspectInstance)); 739 } 740 var inspectComponentHighLighterSelectFn = null; 741 function cancelInspectComponentHighLighter() { 742 unhighlight(); 743 window.removeEventListener("mouseover", inspectFn); 744 window.removeEventListener("click", inspectComponentHighLighterSelectFn, true); 745 inspectComponentHighLighterSelectFn = null; 746 } 747 function inspectComponentHighLighter() { 748 window.addEventListener("mouseover", inspectFn); 749 return new Promise((resolve) => { 750 function onSelect(e) { 751 e.preventDefault(); 752 e.stopPropagation(); 753 selectComponentFn(e, (id) => { 754 window.removeEventListener("click", onSelect, true); 755 inspectComponentHighLighterSelectFn = null; 756 window.removeEventListener("mouseover", inspectFn); 757 const el = getContainerElement(); 758 if (el) el.style.display = "none"; 759 resolve(JSON.stringify({ id })); 760 }); 761 } 762 inspectComponentHighLighterSelectFn = onSelect; 763 window.addEventListener("click", onSelect, true); 764 }); 765 } 766 function scrollToComponent(options) { 767 const instance = getComponentInstance(activeAppRecord.value, options.id); 768 if (instance) { 769 const [el] = getRootElementsFromComponentInstance(instance); 770 if (typeof el.scrollIntoView === "function") el.scrollIntoView({ behavior: "smooth" }); 771 else { 772 const bounds = getComponentBoundingRect(instance); 773 const scrollTarget = document.createElement("div"); 774 const styles = { 775 ...getStyles(bounds), 776 position: "absolute" 777 }; 778 Object.assign(scrollTarget.style, styles); 779 document.body.appendChild(scrollTarget); 780 scrollTarget.scrollIntoView({ behavior: "smooth" }); 781 setTimeout(() => { 782 document.body.removeChild(scrollTarget); 783 }, 2e3); 784 } 785 setTimeout(() => { 786 const bounds = getComponentBoundingRect(instance); 787 if (bounds.width || bounds.height) { 788 const name = getInstanceName(instance); 789 const el2 = getContainerElement(); 790 el2 ? update({ 791 ...options, 792 name, 793 bounds 794 }) : create({ 795 ...options, 796 name, 797 bounds 798 }); 799 setTimeout(() => { 800 if (el2) el2.style.display = "none"; 801 }, 1500); 802 } 803 }, 1200); 804 } 805 } 806 target.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ ??= true; 807 function waitForInspectorInit(cb) { 808 let total = 0; 809 const timer = setInterval(() => { 810 if (target.__VUE_INSPECTOR__) { 811 clearInterval(timer); 812 total += 30; 813 cb(); 814 } 815 if (total >= 5e3) clearInterval(timer); 816 }, 30); 817 } 818 function setupInspector() { 819 const inspector = target.__VUE_INSPECTOR__; 820 const _openInEditor = inspector.openInEditor; 821 inspector.openInEditor = async (...params) => { 822 inspector.disable(); 823 _openInEditor(...params); 824 }; 825 } 826 function getComponentInspector() { 827 return new Promise((resolve) => { 828 function setup() { 829 setupInspector(); 830 resolve(target.__VUE_INSPECTOR__); 831 } 832 if (!target.__VUE_INSPECTOR__) waitForInspectorInit(() => { 833 setup(); 834 }); 835 else setup(); 836 }); 837 } 838 var ReactiveFlags = (function(ReactiveFlags2) { 839 ReactiveFlags2["SKIP"] = "__v_skip"; 840 ReactiveFlags2["IS_REACTIVE"] = "__v_isReactive"; 841 ReactiveFlags2["IS_READONLY"] = "__v_isReadonly"; 842 ReactiveFlags2["IS_SHALLOW"] = "__v_isShallow"; 843 ReactiveFlags2["RAW"] = "__v_raw"; 844 return ReactiveFlags2; 845 })({}); 846 function isReadonly(value) { 847 return !!(value && value[ReactiveFlags.IS_READONLY]); 848 } 849 function isReactive$1(value) { 850 if (isReadonly(value)) return isReactive$1(value[ReactiveFlags.RAW]); 851 return !!(value && value[ReactiveFlags.IS_REACTIVE]); 852 } 853 function isRef$1(r) { 854 return !!(r && r.__v_isRef === true); 855 } 856 function toRaw$1(observed) { 857 const raw = observed && observed[ReactiveFlags.RAW]; 858 return raw ? toRaw$1(raw) : observed; 859 } 860 var StateEditor = class { 861 constructor() { 862 this.refEditor = new RefStateEditor(); 863 } 864 set(object, path, value, cb) { 865 const sections = Array.isArray(path) ? path : path.split("."); 866 while (sections.length > 1) { 867 const section = sections.shift(); 868 if (object instanceof Map) object = object.get(section); 869 else if (object instanceof Set) object = Array.from(object.values())[section]; 870 else object = object[section]; 871 if (this.refEditor.isRef(object)) object = this.refEditor.get(object); 872 } 873 const field = sections[0]; 874 const item = this.refEditor.get(object)[field]; 875 if (cb) cb(object, field, value); 876 else if (this.refEditor.isRef(item)) this.refEditor.set(item, value); 877 else object[field] = value; 878 } 879 get(object, path) { 880 const sections = Array.isArray(path) ? path : path.split("."); 881 for (let i = 0; i < sections.length; i++) { 882 if (object instanceof Map) object = object.get(sections[i]); 883 else object = object[sections[i]]; 884 if (this.refEditor.isRef(object)) object = this.refEditor.get(object); 885 if (!object) return void 0; 886 } 887 return object; 888 } 889 has(object, path, parent = false) { 890 if (typeof object === "undefined") return false; 891 const sections = Array.isArray(path) ? path.slice() : path.split("."); 892 const size = !parent ? 1 : 2; 893 while (object && sections.length > size) { 894 const section = sections.shift(); 895 object = object[section]; 896 if (this.refEditor.isRef(object)) object = this.refEditor.get(object); 897 } 898 return object != null && Object.prototype.hasOwnProperty.call(object, sections[0]); 899 } 900 createDefaultSetCallback(state) { 901 return (object, field, value) => { 902 if (state.remove || state.newKey) if (Array.isArray(object)) object.splice(field, 1); 903 else if (toRaw$1(object) instanceof Map) object.delete(field); 904 else if (toRaw$1(object) instanceof Set) object.delete(Array.from(object.values())[field]); 905 else Reflect.deleteProperty(object, field); 906 if (!state.remove) { 907 const target2 = object[state.newKey || field]; 908 if (this.refEditor.isRef(target2)) this.refEditor.set(target2, value); 909 else if (toRaw$1(object) instanceof Map) object.set(state.newKey || field, value); 910 else if (toRaw$1(object) instanceof Set) object.add(value); 911 else object[state.newKey || field] = value; 912 } 913 }; 914 } 915 }; 916 var RefStateEditor = class { 917 set(ref, value) { 918 if (isRef$1(ref)) ref.value = value; 919 else { 920 if (ref instanceof Set && Array.isArray(value)) { 921 ref.clear(); 922 value.forEach((v) => ref.add(v)); 923 return; 924 } 925 const currentKeys = Object.keys(value); 926 if (ref instanceof Map) { 927 const previousKeysSet2 = new Set(ref.keys()); 928 currentKeys.forEach((key) => { 929 ref.set(key, Reflect.get(value, key)); 930 previousKeysSet2.delete(key); 931 }); 932 previousKeysSet2.forEach((key) => ref.delete(key)); 933 return; 934 } 935 const previousKeysSet = new Set(Object.keys(ref)); 936 currentKeys.forEach((key) => { 937 Reflect.set(ref, key, Reflect.get(value, key)); 938 previousKeysSet.delete(key); 939 }); 940 previousKeysSet.forEach((key) => Reflect.deleteProperty(ref, key)); 941 } 942 } 943 get(ref) { 944 return isRef$1(ref) ? ref.value : ref; 945 } 946 isRef(ref) { 947 return isRef$1(ref) || isReactive$1(ref); 948 } 949 }; 950 var stateEditor = new StateEditor(); 951 var TIMELINE_LAYERS_STATE_STORAGE_ID = "__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__"; 952 function getTimelineLayersStateFromStorage() { 953 if (typeof window === "undefined" || !isBrowser || typeof localStorage === "undefined" || localStorage === null) return { 954 recordingState: false, 955 mouseEventEnabled: false, 956 keyboardEventEnabled: false, 957 componentEventEnabled: false, 958 performanceEventEnabled: false, 959 selected: "" 960 }; 961 const state = typeof localStorage.getItem !== "undefined" ? localStorage.getItem(TIMELINE_LAYERS_STATE_STORAGE_ID) : null; 962 return state ? JSON.parse(state) : { 963 recordingState: false, 964 mouseEventEnabled: false, 965 keyboardEventEnabled: false, 966 componentEventEnabled: false, 967 performanceEventEnabled: false, 968 selected: "" 969 }; 970 } 971 target.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS ??= []; 972 var devtoolsTimelineLayers = new Proxy(target.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS, { get(target2, prop, receiver) { 973 return Reflect.get(target2, prop, receiver); 974 } }); 975 function addTimelineLayer(options, descriptor) { 976 devtoolsState.timelineLayersState[descriptor.id] = false; 977 devtoolsTimelineLayers.push({ 978 ...options, 979 descriptorId: descriptor.id, 980 appRecord: getAppRecord(descriptor.app) 981 }); 982 } 983 target.__VUE_DEVTOOLS_KIT_INSPECTOR__ ??= []; 984 var devtoolsInspector = new Proxy(target.__VUE_DEVTOOLS_KIT_INSPECTOR__, { get(target2, prop, receiver) { 985 return Reflect.get(target2, prop, receiver); 986 } }); 987 var callInspectorUpdatedHook = debounce(() => { 988 devtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.SEND_INSPECTOR_TO_CLIENT, getActiveInspectors()); 989 }); 990 function addInspector(inspector, descriptor) { 991 devtoolsInspector.push({ 992 options: inspector, 993 descriptor, 994 treeFilterPlaceholder: inspector.treeFilterPlaceholder ?? "Search tree...", 995 stateFilterPlaceholder: inspector.stateFilterPlaceholder ?? "Search state...", 996 treeFilter: "", 997 selectedNodeId: "", 998 appRecord: getAppRecord(descriptor.app) 999 }); 1000 callInspectorUpdatedHook(); 1001 } 1002 function getActiveInspectors() { 1003 return devtoolsInspector.filter((inspector) => inspector.descriptor.app === activeAppRecord.value.app).filter((inspector) => inspector.descriptor.id !== "components").map((inspector) => { 1004 const descriptor = inspector.descriptor; 1005 const options = inspector.options; 1006 return { 1007 id: options.id, 1008 label: options.label, 1009 logo: descriptor.logo, 1010 icon: `custom-ic-baseline-${options?.icon?.replace(/_/g, "-")}`, 1011 packageName: descriptor.packageName, 1012 homepage: descriptor.homepage, 1013 pluginId: descriptor.id 1014 }; 1015 }); 1016 } 1017 function getInspector(id, app) { 1018 return devtoolsInspector.find((inspector) => inspector.options.id === id && (app ? inspector.descriptor.app === app : true)); 1019 } 1020 var DevToolsV6PluginAPIHookKeys = (function(DevToolsV6PluginAPIHookKeys2) { 1021 DevToolsV6PluginAPIHookKeys2["VISIT_COMPONENT_TREE"] = "visitComponentTree"; 1022 DevToolsV6PluginAPIHookKeys2["INSPECT_COMPONENT"] = "inspectComponent"; 1023 DevToolsV6PluginAPIHookKeys2["EDIT_COMPONENT_STATE"] = "editComponentState"; 1024 DevToolsV6PluginAPIHookKeys2["GET_INSPECTOR_TREE"] = "getInspectorTree"; 1025 DevToolsV6PluginAPIHookKeys2["GET_INSPECTOR_STATE"] = "getInspectorState"; 1026 DevToolsV6PluginAPIHookKeys2["EDIT_INSPECTOR_STATE"] = "editInspectorState"; 1027 DevToolsV6PluginAPIHookKeys2["INSPECT_TIMELINE_EVENT"] = "inspectTimelineEvent"; 1028 DevToolsV6PluginAPIHookKeys2["TIMELINE_CLEARED"] = "timelineCleared"; 1029 DevToolsV6PluginAPIHookKeys2["SET_PLUGIN_SETTINGS"] = "setPluginSettings"; 1030 return DevToolsV6PluginAPIHookKeys2; 1031 })({}); 1032 var DevToolsContextHookKeys = (function(DevToolsContextHookKeys2) { 1033 DevToolsContextHookKeys2["ADD_INSPECTOR"] = "addInspector"; 1034 DevToolsContextHookKeys2["SEND_INSPECTOR_TREE"] = "sendInspectorTree"; 1035 DevToolsContextHookKeys2["SEND_INSPECTOR_STATE"] = "sendInspectorState"; 1036 DevToolsContextHookKeys2["CUSTOM_INSPECTOR_SELECT_NODE"] = "customInspectorSelectNode"; 1037 DevToolsContextHookKeys2["TIMELINE_LAYER_ADDED"] = "timelineLayerAdded"; 1038 DevToolsContextHookKeys2["TIMELINE_EVENT_ADDED"] = "timelineEventAdded"; 1039 DevToolsContextHookKeys2["GET_COMPONENT_INSTANCES"] = "getComponentInstances"; 1040 DevToolsContextHookKeys2["GET_COMPONENT_BOUNDS"] = "getComponentBounds"; 1041 DevToolsContextHookKeys2["GET_COMPONENT_NAME"] = "getComponentName"; 1042 DevToolsContextHookKeys2["COMPONENT_HIGHLIGHT"] = "componentHighlight"; 1043 DevToolsContextHookKeys2["COMPONENT_UNHIGHLIGHT"] = "componentUnhighlight"; 1044 return DevToolsContextHookKeys2; 1045 })({}); 1046 var DevToolsMessagingHookKeys = (function(DevToolsMessagingHookKeys2) { 1047 DevToolsMessagingHookKeys2["SEND_INSPECTOR_TREE_TO_CLIENT"] = "sendInspectorTreeToClient"; 1048 DevToolsMessagingHookKeys2["SEND_INSPECTOR_STATE_TO_CLIENT"] = "sendInspectorStateToClient"; 1049 DevToolsMessagingHookKeys2["SEND_TIMELINE_EVENT_TO_CLIENT"] = "sendTimelineEventToClient"; 1050 DevToolsMessagingHookKeys2["SEND_INSPECTOR_TO_CLIENT"] = "sendInspectorToClient"; 1051 DevToolsMessagingHookKeys2["SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT"] = "sendActiveAppUpdatedToClient"; 1052 DevToolsMessagingHookKeys2["DEVTOOLS_STATE_UPDATED"] = "devtoolsStateUpdated"; 1053 DevToolsMessagingHookKeys2["DEVTOOLS_CONNECTED_UPDATED"] = "devtoolsConnectedUpdated"; 1054 DevToolsMessagingHookKeys2["ROUTER_INFO_UPDATED"] = "routerInfoUpdated"; 1055 return DevToolsMessagingHookKeys2; 1056 })({}); 1057 function createDevToolsCtxHooks() { 1058 const hooks2 = createHooks(); 1059 hooks2.hook(DevToolsContextHookKeys.ADD_INSPECTOR, ({ inspector, plugin }) => { 1060 addInspector(inspector, plugin.descriptor); 1061 }); 1062 const debounceSendInspectorTree = debounce(async ({ inspectorId, plugin }) => { 1063 if (!inspectorId || !plugin?.descriptor?.app || devtoolsState.highPerfModeEnabled) return; 1064 const inspector = getInspector(inspectorId, plugin.descriptor.app); 1065 const _payload = { 1066 app: plugin.descriptor.app, 1067 inspectorId, 1068 filter: inspector?.treeFilter || "", 1069 rootNodes: [] 1070 }; 1071 await new Promise((resolve) => { 1072 hooks2.callHookWith(async (callbacks) => { 1073 await Promise.all(callbacks.map((cb) => cb(_payload))); 1074 resolve(); 1075 }, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE); 1076 }); 1077 hooks2.callHookWith(async (callbacks) => { 1078 await Promise.all(callbacks.map((cb) => cb({ 1079 inspectorId, 1080 rootNodes: _payload.rootNodes 1081 }))); 1082 }, DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT); 1083 }, 120); 1084 hooks2.hook(DevToolsContextHookKeys.SEND_INSPECTOR_TREE, debounceSendInspectorTree); 1085 const debounceSendInspectorState = debounce(async ({ inspectorId, plugin }) => { 1086 if (!inspectorId || !plugin?.descriptor?.app || devtoolsState.highPerfModeEnabled) return; 1087 const inspector = getInspector(inspectorId, plugin.descriptor.app); 1088 const _payload = { 1089 app: plugin.descriptor.app, 1090 inspectorId, 1091 nodeId: inspector?.selectedNodeId || "", 1092 state: null 1093 }; 1094 const ctx = { currentTab: `custom-inspector:${inspectorId}` }; 1095 if (_payload.nodeId) await new Promise((resolve) => { 1096 hooks2.callHookWith(async (callbacks) => { 1097 await Promise.all(callbacks.map((cb) => cb(_payload, ctx))); 1098 resolve(); 1099 }, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE); 1100 }); 1101 hooks2.callHookWith(async (callbacks) => { 1102 await Promise.all(callbacks.map((cb) => cb({ 1103 inspectorId, 1104 nodeId: _payload.nodeId, 1105 state: _payload.state 1106 }))); 1107 }, DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT); 1108 }, 120); 1109 hooks2.hook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, debounceSendInspectorState); 1110 hooks2.hook(DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE, ({ inspectorId, nodeId, plugin }) => { 1111 const inspector = getInspector(inspectorId, plugin.descriptor.app); 1112 if (!inspector) return; 1113 inspector.selectedNodeId = nodeId; 1114 }); 1115 hooks2.hook(DevToolsContextHookKeys.TIMELINE_LAYER_ADDED, ({ options, plugin }) => { 1116 addTimelineLayer(options, plugin.descriptor); 1117 }); 1118 hooks2.hook(DevToolsContextHookKeys.TIMELINE_EVENT_ADDED, ({ options, plugin }) => { 1119 if (devtoolsState.highPerfModeEnabled || !devtoolsState.timelineLayersState?.[plugin.descriptor.id] && ![ 1120 "performance", 1121 "component-event", 1122 "keyboard", 1123 "mouse" 1124 ].includes(options.layerId)) return; 1125 hooks2.callHookWith(async (callbacks) => { 1126 await Promise.all(callbacks.map((cb) => cb(options))); 1127 }, DevToolsMessagingHookKeys.SEND_TIMELINE_EVENT_TO_CLIENT); 1128 }); 1129 hooks2.hook(DevToolsContextHookKeys.GET_COMPONENT_INSTANCES, async ({ app }) => { 1130 const appRecord = app.__VUE_DEVTOOLS_NEXT_APP_RECORD__; 1131 if (!appRecord) return null; 1132 const appId = appRecord.id.toString(); 1133 return [...appRecord.instanceMap].filter(([key]) => key.split(":")[0] === appId).map(([, instance]) => instance); 1134 }); 1135 hooks2.hook(DevToolsContextHookKeys.GET_COMPONENT_BOUNDS, async ({ instance }) => { 1136 return getComponentBoundingRect(instance); 1137 }); 1138 hooks2.hook(DevToolsContextHookKeys.GET_COMPONENT_NAME, ({ instance }) => { 1139 return getInstanceName(instance); 1140 }); 1141 hooks2.hook(DevToolsContextHookKeys.COMPONENT_HIGHLIGHT, ({ uid }) => { 1142 const instance = activeAppRecord.value.instanceMap.get(uid); 1143 if (instance) highlight(instance); 1144 }); 1145 hooks2.hook(DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT, () => { 1146 unhighlight(); 1147 }); 1148 return hooks2; 1149 } 1150 target.__VUE_DEVTOOLS_KIT_APP_RECORDS__ ??= []; 1151 target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ ??= {}; 1152 target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ ??= ""; 1153 target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__ ??= []; 1154 target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ ??= []; 1155 var STATE_KEY = "__VUE_DEVTOOLS_KIT_GLOBAL_STATE__"; 1156 function initStateFactory() { 1157 return { 1158 connected: false, 1159 clientConnected: false, 1160 vitePluginDetected: true, 1161 appRecords: [], 1162 activeAppRecordId: "", 1163 tabs: [], 1164 commands: [], 1165 highPerfModeEnabled: true, 1166 devtoolsClientDetected: {}, 1167 perfUniqueGroupId: 0, 1168 timelineLayersState: getTimelineLayersStateFromStorage() 1169 }; 1170 } 1171 target[STATE_KEY] ??= initStateFactory(); 1172 var callStateUpdatedHook = debounce((state) => { 1173 devtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.DEVTOOLS_STATE_UPDATED, { state }); 1174 }); 1175 var callConnectedUpdatedHook = debounce((state, oldState) => { 1176 devtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, { 1177 state, 1178 oldState 1179 }); 1180 }); 1181 var devtoolsAppRecords = new Proxy(target.__VUE_DEVTOOLS_KIT_APP_RECORDS__, { get(_target, prop, receiver) { 1182 if (prop === "value") return target.__VUE_DEVTOOLS_KIT_APP_RECORDS__; 1183 return target.__VUE_DEVTOOLS_KIT_APP_RECORDS__[prop]; 1184 } }); 1185 var activeAppRecord = new Proxy(target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__, { get(_target, prop, receiver) { 1186 if (prop === "value") return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__; 1187 else if (prop === "id") return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__; 1188 return target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[prop]; 1189 } }); 1190 function updateAllStates() { 1191 callStateUpdatedHook({ 1192 ...target[STATE_KEY], 1193 appRecords: devtoolsAppRecords.value, 1194 activeAppRecordId: activeAppRecord.id, 1195 tabs: target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__, 1196 commands: target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__ 1197 }); 1198 } 1199 function setActiveAppRecord(app) { 1200 target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__ = app; 1201 updateAllStates(); 1202 } 1203 function setActiveAppRecordId(id) { 1204 target.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__ = id; 1205 updateAllStates(); 1206 } 1207 var devtoolsState = new Proxy(target[STATE_KEY], { 1208 get(target$3, property) { 1209 if (property === "appRecords") return devtoolsAppRecords; 1210 else if (property === "activeAppRecordId") return activeAppRecord.id; 1211 else if (property === "tabs") return target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__; 1212 else if (property === "commands") return target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__; 1213 return target[STATE_KEY][property]; 1214 }, 1215 deleteProperty(target2, property) { 1216 delete target2[property]; 1217 return true; 1218 }, 1219 set(target$4, property, value) { 1220 target$4[property] = value; 1221 target[STATE_KEY][property] = value; 1222 return true; 1223 } 1224 }); 1225 function onDevToolsConnected(fn) { 1226 return new Promise((resolve) => { 1227 if (devtoolsState.connected) { 1228 fn(); 1229 resolve(); 1230 } 1231 devtoolsContext.hooks.hook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, ({ state }) => { 1232 if (state.connected) { 1233 fn(); 1234 resolve(); 1235 } 1236 }); 1237 }); 1238 } 1239 var resolveIcon = (icon) => { 1240 if (!icon) return; 1241 if (icon.startsWith("baseline-")) return `custom-ic-${icon}`; 1242 if (icon.startsWith("i-") || isUrlString(icon)) return icon; 1243 return `custom-ic-baseline-${icon}`; 1244 }; 1245 function addCustomTab(tab) { 1246 const tabs = target.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__; 1247 if (tabs.some((t) => t.name === tab.name)) return; 1248 tabs.push({ 1249 ...tab, 1250 icon: resolveIcon(tab.icon) 1251 }); 1252 updateAllStates(); 1253 } 1254 function addCustomCommand(action) { 1255 const commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__; 1256 if (commands.some((t) => t.id === action.id)) return; 1257 commands.push({ 1258 ...action, 1259 icon: resolveIcon(action.icon), 1260 children: action.children ? action.children.map((child) => ({ 1261 ...child, 1262 icon: resolveIcon(child.icon) 1263 })) : void 0 1264 }); 1265 updateAllStates(); 1266 } 1267 function removeCustomCommand(actionId) { 1268 const commands = target.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__; 1269 const index = commands.findIndex((t) => t.id === actionId); 1270 if (index === -1) return; 1271 commands.splice(index, 1); 1272 updateAllStates(); 1273 } 1274 function openInEditor(options = {}) { 1275 const { file, host, baseUrl = window.location.origin, line = 0, column = 0 } = options; 1276 if (file) { 1277 if (host === "chrome-extension") { 1278 const fileName = file.replace(/\\/g, "\\\\"); 1279 const _baseUrl = window.VUE_DEVTOOLS_CONFIG?.openInEditorHost ?? "/"; 1280 fetch(`${_baseUrl}__open-in-editor?file=${encodeURI(file)}`).then((response) => { 1281 if (!response.ok) { 1282 const msg = `Opening component ${fileName} failed`; 1283 console.log(`%c${msg}`, "color:red"); 1284 } 1285 }); 1286 } else if (devtoolsState.vitePluginDetected) { 1287 const _baseUrl = target.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__ ?? baseUrl; 1288 target.__VUE_INSPECTOR__.openInEditor(_baseUrl, file, line, column); 1289 } 1290 } 1291 } 1292 target.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__ ??= []; 1293 var devtoolsPluginBuffer = new Proxy(target.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__, { get(target2, prop, receiver) { 1294 return Reflect.get(target2, prop, receiver); 1295 } }); 1296 function _getSettings(settings) { 1297 const _settings = {}; 1298 Object.keys(settings).forEach((key) => { 1299 _settings[key] = settings[key].defaultValue; 1300 }); 1301 return _settings; 1302 } 1303 function getPluginLocalKey(pluginId) { 1304 return `__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${pluginId}__`; 1305 } 1306 function getPluginSettingsOptions(pluginId) { 1307 return (devtoolsPluginBuffer.find((item) => item[0].id === pluginId && !!item[0]?.settings)?.[0] ?? null)?.settings ?? null; 1308 } 1309 function getPluginSettings(pluginId, fallbackValue) { 1310 const localKey = getPluginLocalKey(pluginId); 1311 if (localKey) { 1312 const localSettings = localStorage.getItem(localKey); 1313 if (localSettings) return JSON.parse(localSettings); 1314 } 1315 if (pluginId) return _getSettings((devtoolsPluginBuffer.find((item) => item[0].id === pluginId)?.[0] ?? null)?.settings ?? {}); 1316 return _getSettings(fallbackValue); 1317 } 1318 function initPluginSettings(pluginId, settings) { 1319 const localKey = getPluginLocalKey(pluginId); 1320 if (!localStorage.getItem(localKey)) localStorage.setItem(localKey, JSON.stringify(_getSettings(settings))); 1321 } 1322 function setPluginSettings(pluginId, key, value) { 1323 const localKey = getPluginLocalKey(pluginId); 1324 const localSettings = localStorage.getItem(localKey); 1325 const parsedLocalSettings = JSON.parse(localSettings || "{}"); 1326 const updated = { 1327 ...parsedLocalSettings, 1328 [key]: value 1329 }; 1330 localStorage.setItem(localKey, JSON.stringify(updated)); 1331 devtoolsContext.hooks.callHookWith((callbacks) => { 1332 callbacks.forEach((cb) => cb({ 1333 pluginId, 1334 key, 1335 oldValue: parsedLocalSettings[key], 1336 newValue: value, 1337 settings: updated 1338 })); 1339 }, DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS); 1340 } 1341 var DevToolsHooks = (function(DevToolsHooks2) { 1342 DevToolsHooks2["APP_INIT"] = "app:init"; 1343 DevToolsHooks2["APP_UNMOUNT"] = "app:unmount"; 1344 DevToolsHooks2["COMPONENT_UPDATED"] = "component:updated"; 1345 DevToolsHooks2["COMPONENT_ADDED"] = "component:added"; 1346 DevToolsHooks2["COMPONENT_REMOVED"] = "component:removed"; 1347 DevToolsHooks2["COMPONENT_EMIT"] = "component:emit"; 1348 DevToolsHooks2["PERFORMANCE_START"] = "perf:start"; 1349 DevToolsHooks2["PERFORMANCE_END"] = "perf:end"; 1350 DevToolsHooks2["ADD_ROUTE"] = "router:add-route"; 1351 DevToolsHooks2["REMOVE_ROUTE"] = "router:remove-route"; 1352 DevToolsHooks2["RENDER_TRACKED"] = "render:tracked"; 1353 DevToolsHooks2["RENDER_TRIGGERED"] = "render:triggered"; 1354 DevToolsHooks2["APP_CONNECTED"] = "app:connected"; 1355 DevToolsHooks2["SETUP_DEVTOOLS_PLUGIN"] = "devtools-plugin:setup"; 1356 return DevToolsHooks2; 1357 })({}); 1358 var devtoolsHooks = target.__VUE_DEVTOOLS_HOOK ??= createHooks(); 1359 var on = { 1360 vueAppInit(fn) { 1361 devtoolsHooks.hook(DevToolsHooks.APP_INIT, fn); 1362 }, 1363 vueAppUnmount(fn) { 1364 devtoolsHooks.hook(DevToolsHooks.APP_UNMOUNT, fn); 1365 }, 1366 vueAppConnected(fn) { 1367 devtoolsHooks.hook(DevToolsHooks.APP_CONNECTED, fn); 1368 }, 1369 componentAdded(fn) { 1370 return devtoolsHooks.hook(DevToolsHooks.COMPONENT_ADDED, fn); 1371 }, 1372 componentEmit(fn) { 1373 return devtoolsHooks.hook(DevToolsHooks.COMPONENT_EMIT, fn); 1374 }, 1375 componentUpdated(fn) { 1376 return devtoolsHooks.hook(DevToolsHooks.COMPONENT_UPDATED, fn); 1377 }, 1378 componentRemoved(fn) { 1379 return devtoolsHooks.hook(DevToolsHooks.COMPONENT_REMOVED, fn); 1380 }, 1381 setupDevtoolsPlugin(fn) { 1382 devtoolsHooks.hook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, fn); 1383 }, 1384 perfStart(fn) { 1385 return devtoolsHooks.hook(DevToolsHooks.PERFORMANCE_START, fn); 1386 }, 1387 perfEnd(fn) { 1388 return devtoolsHooks.hook(DevToolsHooks.PERFORMANCE_END, fn); 1389 } 1390 }; 1391 var hook = { 1392 on, 1393 setupDevToolsPlugin(pluginDescriptor, setupFn) { 1394 return devtoolsHooks.callHook(DevToolsHooks.SETUP_DEVTOOLS_PLUGIN, pluginDescriptor, setupFn); 1395 } 1396 }; 1397 var DevToolsV6PluginAPI = class { 1398 constructor({ plugin, ctx }) { 1399 this.hooks = ctx.hooks; 1400 this.plugin = plugin; 1401 } 1402 get on() { 1403 return { 1404 visitComponentTree: (handler) => { 1405 this.hooks.hook(DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE, handler); 1406 }, 1407 inspectComponent: (handler) => { 1408 this.hooks.hook(DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT, handler); 1409 }, 1410 editComponentState: (handler) => { 1411 this.hooks.hook(DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE, handler); 1412 }, 1413 getInspectorTree: (handler) => { 1414 this.hooks.hook(DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE, handler); 1415 }, 1416 getInspectorState: (handler) => { 1417 this.hooks.hook(DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE, handler); 1418 }, 1419 editInspectorState: (handler) => { 1420 this.hooks.hook(DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE, handler); 1421 }, 1422 inspectTimelineEvent: (handler) => { 1423 this.hooks.hook(DevToolsV6PluginAPIHookKeys.INSPECT_TIMELINE_EVENT, handler); 1424 }, 1425 timelineCleared: (handler) => { 1426 this.hooks.hook(DevToolsV6PluginAPIHookKeys.TIMELINE_CLEARED, handler); 1427 }, 1428 setPluginSettings: (handler) => { 1429 this.hooks.hook(DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS, handler); 1430 } 1431 }; 1432 } 1433 notifyComponentUpdate(instance) { 1434 if (devtoolsState.highPerfModeEnabled) return; 1435 const inspector = getActiveInspectors().find((i) => i.packageName === this.plugin.descriptor.packageName); 1436 if (inspector?.id) { 1437 if (instance) { 1438 const args = [ 1439 instance.appContext.app, 1440 instance.uid, 1441 instance.parent?.uid, 1442 instance 1443 ]; 1444 devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED, ...args); 1445 } else devtoolsHooks.callHook(DevToolsHooks.COMPONENT_UPDATED); 1446 this.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, { 1447 inspectorId: inspector.id, 1448 plugin: this.plugin 1449 }); 1450 } 1451 } 1452 addInspector(options) { 1453 this.hooks.callHook(DevToolsContextHookKeys.ADD_INSPECTOR, { 1454 inspector: options, 1455 plugin: this.plugin 1456 }); 1457 if (this.plugin.descriptor.settings) initPluginSettings(options.id, this.plugin.descriptor.settings); 1458 } 1459 sendInspectorTree(inspectorId) { 1460 if (devtoolsState.highPerfModeEnabled) return; 1461 this.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_TREE, { 1462 inspectorId, 1463 plugin: this.plugin 1464 }); 1465 } 1466 sendInspectorState(inspectorId) { 1467 if (devtoolsState.highPerfModeEnabled) return; 1468 this.hooks.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, { 1469 inspectorId, 1470 plugin: this.plugin 1471 }); 1472 } 1473 selectInspectorNode(inspectorId, nodeId) { 1474 this.hooks.callHook(DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE, { 1475 inspectorId, 1476 nodeId, 1477 plugin: this.plugin 1478 }); 1479 } 1480 visitComponentTree(payload) { 1481 return this.hooks.callHook(DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE, payload); 1482 } 1483 now() { 1484 if (devtoolsState.highPerfModeEnabled) return 0; 1485 return Date.now(); 1486 } 1487 addTimelineLayer(options) { 1488 this.hooks.callHook(DevToolsContextHookKeys.TIMELINE_LAYER_ADDED, { 1489 options, 1490 plugin: this.plugin 1491 }); 1492 } 1493 addTimelineEvent(options) { 1494 if (devtoolsState.highPerfModeEnabled) return; 1495 this.hooks.callHook(DevToolsContextHookKeys.TIMELINE_EVENT_ADDED, { 1496 options, 1497 plugin: this.plugin 1498 }); 1499 } 1500 getSettings(pluginId) { 1501 return getPluginSettings(pluginId ?? this.plugin.descriptor.id, this.plugin.descriptor.settings); 1502 } 1503 getComponentInstances(app) { 1504 return this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_INSTANCES, { app }); 1505 } 1506 getComponentBounds(instance) { 1507 return this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_BOUNDS, { instance }); 1508 } 1509 getComponentName(instance) { 1510 return this.hooks.callHook(DevToolsContextHookKeys.GET_COMPONENT_NAME, { instance }); 1511 } 1512 highlightElement(instance) { 1513 const uid = instance.__VUE_DEVTOOLS_NEXT_UID__; 1514 return this.hooks.callHook(DevToolsContextHookKeys.COMPONENT_HIGHLIGHT, { uid }); 1515 } 1516 unhighlightElement() { 1517 return this.hooks.callHook(DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT); 1518 } 1519 }; 1520 var DevToolsPluginAPI = DevToolsV6PluginAPI; 1521 var UNDEFINED = "__vue_devtool_undefined__"; 1522 var INFINITY = "__vue_devtool_infinity__"; 1523 var NEGATIVE_INFINITY = "__vue_devtool_negative_infinity__"; 1524 var NAN = "__vue_devtool_nan__"; 1525 var tokenMap = { 1526 [UNDEFINED]: "undefined", 1527 [NAN]: "NaN", 1528 [INFINITY]: "Infinity", 1529 [NEGATIVE_INFINITY]: "-Infinity" 1530 }; 1531 var reversedTokenMap = Object.entries(tokenMap).reduce((acc, [key, value]) => { 1532 acc[value] = key; 1533 return acc; 1534 }, {}); 1535 target.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__ ??= /* @__PURE__ */ new Set(); 1536 function setupDevToolsPlugin(pluginDescriptor, setupFn) { 1537 return hook.setupDevToolsPlugin(pluginDescriptor, setupFn); 1538 } 1539 function callDevToolsPluginSetupFn(plugin, app) { 1540 const [pluginDescriptor, setupFn] = plugin; 1541 if (pluginDescriptor.app !== app) return; 1542 const api = new DevToolsPluginAPI({ 1543 plugin: { 1544 setupFn, 1545 descriptor: pluginDescriptor 1546 }, 1547 ctx: devtoolsContext 1548 }); 1549 if (pluginDescriptor.packageName === "vuex") api.on.editInspectorState((payload) => { 1550 api.sendInspectorState(payload.inspectorId); 1551 }); 1552 setupFn(api); 1553 } 1554 function registerDevToolsPlugin(app, options) { 1555 if (target.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(app)) return; 1556 if (devtoolsState.highPerfModeEnabled && !options?.inspectingComponent) return; 1557 target.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(app); 1558 devtoolsPluginBuffer.forEach((plugin) => { 1559 callDevToolsPluginSetupFn(plugin, app); 1560 }); 1561 } 1562 var ROUTER_KEY = "__VUE_DEVTOOLS_ROUTER__"; 1563 var ROUTER_INFO_KEY = "__VUE_DEVTOOLS_ROUTER_INFO__"; 1564 target[ROUTER_INFO_KEY] ??= { 1565 currentRoute: null, 1566 routes: [] 1567 }; 1568 target[ROUTER_KEY] ??= {}; 1569 var devtoolsRouterInfo = new Proxy(target[ROUTER_INFO_KEY], { get(target$1, property) { 1570 return target[ROUTER_INFO_KEY][property]; 1571 } }); 1572 var devtoolsRouter = new Proxy(target[ROUTER_KEY], { get(target$2, property) { 1573 if (property === "value") return target[ROUTER_KEY]; 1574 } }); 1575 function getRoutes(router) { 1576 const routesMap = /* @__PURE__ */ new Map(); 1577 return (router?.getRoutes() || []).filter((i) => !routesMap.has(i.path) && routesMap.set(i.path, 1)); 1578 } 1579 function filterRoutes(routes) { 1580 return routes.map((item) => { 1581 let { path, name, children, meta } = item; 1582 if (children?.length) children = filterRoutes(children); 1583 return { 1584 path, 1585 name, 1586 children, 1587 meta 1588 }; 1589 }); 1590 } 1591 function filterCurrentRoute(route) { 1592 if (route) { 1593 const { fullPath, hash, href, path, name, matched, params, query } = route; 1594 return { 1595 fullPath, 1596 hash, 1597 href, 1598 path, 1599 name, 1600 params, 1601 query, 1602 matched: filterRoutes(matched) 1603 }; 1604 } 1605 return route; 1606 } 1607 function normalizeRouterInfo(appRecord, activeAppRecord2) { 1608 function init() { 1609 const router = appRecord.app?.config.globalProperties.$router; 1610 const currentRoute = filterCurrentRoute(router?.currentRoute.value); 1611 const routes = filterRoutes(getRoutes(router)); 1612 const c = console.warn; 1613 console.warn = () => { 1614 }; 1615 target[ROUTER_INFO_KEY] = { 1616 currentRoute: currentRoute ? deepClone(currentRoute) : {}, 1617 routes: deepClone(routes) 1618 }; 1619 target[ROUTER_KEY] = router; 1620 console.warn = c; 1621 } 1622 init(); 1623 hook.on.componentUpdated(debounce(() => { 1624 if (activeAppRecord2.value?.app !== appRecord.app) return; 1625 init(); 1626 if (devtoolsState.highPerfModeEnabled) return; 1627 devtoolsContext.hooks.callHook(DevToolsMessagingHookKeys.ROUTER_INFO_UPDATED, { state: target[ROUTER_INFO_KEY] }); 1628 }, 200)); 1629 } 1630 function createDevToolsApi(hooks2) { 1631 return { 1632 async getInspectorTree(payload) { 1633 const _payload = { 1634 ...payload, 1635 app: activeAppRecord.value.app, 1636 rootNodes: [] 1637 }; 1638 await new Promise((resolve) => { 1639 hooks2.callHookWith(async (callbacks) => { 1640 await Promise.all(callbacks.map((cb) => cb(_payload))); 1641 resolve(); 1642 }, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE); 1643 }); 1644 return _payload.rootNodes; 1645 }, 1646 async getInspectorState(payload) { 1647 const _payload = { 1648 ...payload, 1649 app: activeAppRecord.value.app, 1650 state: null 1651 }; 1652 const ctx = { currentTab: `custom-inspector:${payload.inspectorId}` }; 1653 await new Promise((resolve) => { 1654 hooks2.callHookWith(async (callbacks) => { 1655 await Promise.all(callbacks.map((cb) => cb(_payload, ctx))); 1656 resolve(); 1657 }, DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE); 1658 }); 1659 return _payload.state; 1660 }, 1661 editInspectorState(payload) { 1662 const stateEditor2 = new StateEditor(); 1663 const _payload = { 1664 ...payload, 1665 app: activeAppRecord.value.app, 1666 set: (obj, path = payload.path, value = payload.state.value, cb) => { 1667 stateEditor2.set(obj, path, value, cb || stateEditor2.createDefaultSetCallback(payload.state)); 1668 } 1669 }; 1670 hooks2.callHookWith((callbacks) => { 1671 callbacks.forEach((cb) => cb(_payload)); 1672 }, DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE); 1673 }, 1674 sendInspectorState(inspectorId) { 1675 const inspector = getInspector(inspectorId); 1676 hooks2.callHook(DevToolsContextHookKeys.SEND_INSPECTOR_STATE, { 1677 inspectorId, 1678 plugin: { 1679 descriptor: inspector.descriptor, 1680 setupFn: () => ({}) 1681 } 1682 }); 1683 }, 1684 inspectComponentInspector() { 1685 return inspectComponentHighLighter(); 1686 }, 1687 cancelInspectComponentInspector() { 1688 return cancelInspectComponentHighLighter(); 1689 }, 1690 getComponentRenderCode(id) { 1691 const instance = getComponentInstance(activeAppRecord.value, id); 1692 if (instance) return !(typeof instance?.type === "function") ? instance.render.toString() : instance.type.toString(); 1693 }, 1694 scrollToComponent(id) { 1695 return scrollToComponent({ id }); 1696 }, 1697 openInEditor, 1698 getVueInspector: getComponentInspector, 1699 toggleApp(id, options) { 1700 const appRecord = devtoolsAppRecords.value.find((record) => record.id === id); 1701 if (appRecord) { 1702 setActiveAppRecordId(id); 1703 setActiveAppRecord(appRecord); 1704 normalizeRouterInfo(appRecord, activeAppRecord); 1705 callInspectorUpdatedHook(); 1706 registerDevToolsPlugin(appRecord.app, options); 1707 } 1708 }, 1709 inspectDOM(instanceId) { 1710 const instance = getComponentInstance(activeAppRecord.value, instanceId); 1711 if (instance) { 1712 const [el] = getRootElementsFromComponentInstance(instance); 1713 if (el) target.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__ = el; 1714 } 1715 }, 1716 updatePluginSettings(pluginId, key, value) { 1717 setPluginSettings(pluginId, key, value); 1718 }, 1719 getPluginSettings(pluginId) { 1720 return { 1721 options: getPluginSettingsOptions(pluginId), 1722 values: getPluginSettings(pluginId) 1723 }; 1724 } 1725 }; 1726 } 1727 target.__VUE_DEVTOOLS_ENV__ ??= { vitePluginDetected: false }; 1728 var hooks = createDevToolsCtxHooks(); 1729 target.__VUE_DEVTOOLS_KIT_CONTEXT__ ??= { 1730 hooks, 1731 get state() { 1732 return { 1733 ...devtoolsState, 1734 activeAppRecordId: activeAppRecord.id, 1735 activeAppRecord: activeAppRecord.value, 1736 appRecords: devtoolsAppRecords.value 1737 }; 1738 }, 1739 api: createDevToolsApi(hooks) 1740 }; 1741 var devtoolsContext = target.__VUE_DEVTOOLS_KIT_CONTEXT__; 1742 var require_speakingurl$1 = __commonJSMin2(((exports, module) => { 1743 (function(root) { 1744 "use strict"; 1745 var charMap = { 1746 "À": "A", 1747 "Á": "A", 1748 "Â": "A", 1749 "Ã": "A", 1750 "Ä": "Ae", 1751 "Å": "A", 1752 "Æ": "AE", 1753 "Ç": "C", 1754 "È": "E", 1755 "É": "E", 1756 "Ê": "E", 1757 "Ë": "E", 1758 "Ì": "I", 1759 "Í": "I", 1760 "Î": "I", 1761 "Ï": "I", 1762 "Ð": "D", 1763 "Ñ": "N", 1764 "Ò": "O", 1765 "Ó": "O", 1766 "Ô": "O", 1767 "Õ": "O", 1768 "Ö": "Oe", 1769 "Ő": "O", 1770 "Ø": "O", 1771 "Ù": "U", 1772 "Ú": "U", 1773 "Û": "U", 1774 "Ü": "Ue", 1775 "Ű": "U", 1776 "Ý": "Y", 1777 "Þ": "TH", 1778 "ß": "ss", 1779 "à": "a", 1780 "á": "a", 1781 "â": "a", 1782 "ã": "a", 1783 "ä": "ae", 1784 "å": "a", 1785 "æ": "ae", 1786 "ç": "c", 1787 "è": "e", 1788 "é": "e", 1789 "ê": "e", 1790 "ë": "e", 1791 "ì": "i", 1792 "í": "i", 1793 "î": "i", 1794 "ï": "i", 1795 "ð": "d", 1796 "ñ": "n", 1797 "ò": "o", 1798 "ó": "o", 1799 "ô": "o", 1800 "õ": "o", 1801 "ö": "oe", 1802 "ő": "o", 1803 "ø": "o", 1804 "ù": "u", 1805 "ú": "u", 1806 "û": "u", 1807 "ü": "ue", 1808 "ű": "u", 1809 "ý": "y", 1810 "þ": "th", 1811 "ÿ": "y", 1812 "ẞ": "SS", 1813 "ا": "a", 1814 "أ": "a", 1815 "إ": "i", 1816 "آ": "aa", 1817 "ؤ": "u", 1818 "ئ": "e", 1819 "ء": "a", 1820 "ب": "b", 1821 "ت": "t", 1822 "ث": "th", 1823 "ج": "j", 1824 "ح": "h", 1825 "خ": "kh", 1826 "د": "d", 1827 "ذ": "th", 1828 "ر": "r", 1829 "ز": "z", 1830 "س": "s", 1831 "ش": "sh", 1832 "ص": "s", 1833 "ض": "dh", 1834 "ط": "t", 1835 "ظ": "z", 1836 "ع": "a", 1837 "غ": "gh", 1838 "ف": "f", 1839 "ق": "q", 1840 "ك": "k", 1841 "ل": "l", 1842 "م": "m", 1843 "ن": "n", 1844 "ه": "h", 1845 "و": "w", 1846 "ي": "y", 1847 "ى": "a", 1848 "ة": "h", 1849 "ﻻ": "la", 1850 "ﻷ": "laa", 1851 "ﻹ": "lai", 1852 "ﻵ": "laa", 1853 "گ": "g", 1854 "چ": "ch", 1855 "پ": "p", 1856 "ژ": "zh", 1857 "ک": "k", 1858 "ی": "y", 1859 "َ": "a", 1860 "ً": "an", 1861 "ِ": "e", 1862 "ٍ": "en", 1863 "ُ": "u", 1864 "ٌ": "on", 1865 "ْ": "", 1866 "٠": "0", 1867 "١": "1", 1868 "٢": "2", 1869 "٣": "3", 1870 "٤": "4", 1871 "٥": "5", 1872 "٦": "6", 1873 "٧": "7", 1874 "٨": "8", 1875 "٩": "9", 1876 "۰": "0", 1877 "۱": "1", 1878 "۲": "2", 1879 "۳": "3", 1880 "۴": "4", 1881 "۵": "5", 1882 "۶": "6", 1883 "۷": "7", 1884 "۸": "8", 1885 "۹": "9", 1886 "က": "k", 1887 "ခ": "kh", 1888 "ဂ": "g", 1889 "ဃ": "ga", 1890 "င": "ng", 1891 "စ": "s", 1892 "ဆ": "sa", 1893 "ဇ": "z", 1894 "စျ": "za", 1895 "ည": "ny", 1896 "ဋ": "t", 1897 "ဌ": "ta", 1898 "ဍ": "d", 1899 "ဎ": "da", 1900 "ဏ": "na", 1901 "တ": "t", 1902 "ထ": "ta", 1903 "ဒ": "d", 1904 "ဓ": "da", 1905 "န": "n", 1906 "ပ": "p", 1907 "ဖ": "pa", 1908 "ဗ": "b", 1909 "ဘ": "ba", 1910 "မ": "m", 1911 "ယ": "y", 1912 "ရ": "ya", 1913 "လ": "l", 1914 "ဝ": "w", 1915 "သ": "th", 1916 "ဟ": "h", 1917 "ဠ": "la", 1918 "အ": "a", 1919 "ြ": "y", 1920 "ျ": "ya", 1921 "ွ": "w", 1922 "ြွ": "yw", 1923 "ျွ": "ywa", 1924 "ှ": "h", 1925 "ဧ": "e", 1926 "၏": "-e", 1927 "ဣ": "i", 1928 "ဤ": "-i", 1929 "ဉ": "u", 1930 "ဦ": "-u", 1931 "ဩ": "aw", 1932 "သြော": "aw", 1933 "ဪ": "aw", 1934 "၀": "0", 1935 "၁": "1", 1936 "၂": "2", 1937 "၃": "3", 1938 "၄": "4", 1939 "၅": "5", 1940 "၆": "6", 1941 "၇": "7", 1942 "၈": "8", 1943 "၉": "9", 1944 "္": "", 1945 "့": "", 1946 "း": "", 1947 "č": "c", 1948 "ď": "d", 1949 "ě": "e", 1950 "ň": "n", 1951 "ř": "r", 1952 "š": "s", 1953 "ť": "t", 1954 "ů": "u", 1955 "ž": "z", 1956 "Č": "C", 1957 "Ď": "D", 1958 "Ě": "E", 1959 "Ň": "N", 1960 "Ř": "R", 1961 "Š": "S", 1962 "Ť": "T", 1963 "Ů": "U", 1964 "Ž": "Z", 1965 "ހ": "h", 1966 "ށ": "sh", 1967 "ނ": "n", 1968 "ރ": "r", 1969 "ބ": "b", 1970 "ޅ": "lh", 1971 "ކ": "k", 1972 "އ": "a", 1973 "ވ": "v", 1974 "މ": "m", 1975 "ފ": "f", 1976 "ދ": "dh", 1977 "ތ": "th", 1978 "ލ": "l", 1979 "ގ": "g", 1980 "ޏ": "gn", 1981 "ސ": "s", 1982 "ޑ": "d", 1983 "ޒ": "z", 1984 "ޓ": "t", 1985 "ޔ": "y", 1986 "ޕ": "p", 1987 "ޖ": "j", 1988 "ޗ": "ch", 1989 "ޘ": "tt", 1990 "ޙ": "hh", 1991 "ޚ": "kh", 1992 "ޛ": "th", 1993 "ޜ": "z", 1994 "ޝ": "sh", 1995 "ޞ": "s", 1996 "ޟ": "d", 1997 "ޠ": "t", 1998 "ޡ": "z", 1999 "ޢ": "a", 2000 "ޣ": "gh", 2001 "ޤ": "q", 2002 "ޥ": "w", 2003 "ަ": "a", 2004 "ާ": "aa", 2005 "ި": "i", 2006 "ީ": "ee", 2007 "ު": "u", 2008 "ޫ": "oo", 2009 "ެ": "e", 2010 "ޭ": "ey", 2011 "ޮ": "o", 2012 "ޯ": "oa", 2013 "ް": "", 2014 "ა": "a", 2015 "ბ": "b", 2016 "გ": "g", 2017 "დ": "d", 2018 "ე": "e", 2019 "ვ": "v", 2020 "ზ": "z", 2021 "თ": "t", 2022 "ი": "i", 2023 "კ": "k", 2024 "ლ": "l", 2025 "მ": "m", 2026 "ნ": "n", 2027 "ო": "o", 2028 "პ": "p", 2029 "ჟ": "zh", 2030 "რ": "r", 2031 "ს": "s", 2032 "ტ": "t", 2033 "უ": "u", 2034 "ფ": "p", 2035 "ქ": "k", 2036 "ღ": "gh", 2037 "ყ": "q", 2038 "შ": "sh", 2039 "ჩ": "ch", 2040 "ც": "ts", 2041 "ძ": "dz", 2042 "წ": "ts", 2043 "ჭ": "ch", 2044 "ხ": "kh", 2045 "ჯ": "j", 2046 "ჰ": "h", 2047 "α": "a", 2048 "β": "v", 2049 "γ": "g", 2050 "δ": "d", 2051 "ε": "e", 2052 "ζ": "z", 2053 "η": "i", 2054 "θ": "th", 2055 "ι": "i", 2056 "κ": "k", 2057 "λ": "l", 2058 "μ": "m", 2059 "ν": "n", 2060 "ξ": "ks", 2061 "ο": "o", 2062 "π": "p", 2063 "ρ": "r", 2064 "σ": "s", 2065 "τ": "t", 2066 "υ": "y", 2067 "φ": "f", 2068 "χ": "x", 2069 "ψ": "ps", 2070 "ω": "o", 2071 "ά": "a", 2072 "έ": "e", 2073 "ί": "i", 2074 "ό": "o", 2075 "ύ": "y", 2076 "ή": "i", 2077 "ώ": "o", 2078 "ς": "s", 2079 "ϊ": "i", 2080 "ΰ": "y", 2081 "ϋ": "y", 2082 "ΐ": "i", 2083 "Α": "A", 2084 "Β": "B", 2085 "Γ": "G", 2086 "Δ": "D", 2087 "Ε": "E", 2088 "Ζ": "Z", 2089 "Η": "I", 2090 "Θ": "TH", 2091 "Ι": "I", 2092 "Κ": "K", 2093 "Λ": "L", 2094 "Μ": "M", 2095 "Ν": "N", 2096 "Ξ": "KS", 2097 "Ο": "O", 2098 "Π": "P", 2099 "Ρ": "R", 2100 "Σ": "S", 2101 "Τ": "T", 2102 "Υ": "Y", 2103 "Φ": "F", 2104 "Χ": "X", 2105 "Ψ": "PS", 2106 "Ω": "O", 2107 "Ά": "A", 2108 "Έ": "E", 2109 "Ί": "I", 2110 "Ό": "O", 2111 "Ύ": "Y", 2112 "Ή": "I", 2113 "Ώ": "O", 2114 "Ϊ": "I", 2115 "Ϋ": "Y", 2116 "ā": "a", 2117 "ē": "e", 2118 "ģ": "g", 2119 "ī": "i", 2120 "ķ": "k", 2121 "ļ": "l", 2122 "ņ": "n", 2123 "ū": "u", 2124 "Ā": "A", 2125 "Ē": "E", 2126 "Ģ": "G", 2127 "Ī": "I", 2128 "Ķ": "k", 2129 "Ļ": "L", 2130 "Ņ": "N", 2131 "Ū": "U", 2132 "Ќ": "Kj", 2133 "ќ": "kj", 2134 "Љ": "Lj", 2135 "љ": "lj", 2136 "Њ": "Nj", 2137 "њ": "nj", 2138 "Тс": "Ts", 2139 "тс": "ts", 2140 "ą": "a", 2141 "ć": "c", 2142 "ę": "e", 2143 "ł": "l", 2144 "ń": "n", 2145 "ś": "s", 2146 "ź": "z", 2147 "ż": "z", 2148 "Ą": "A", 2149 "Ć": "C", 2150 "Ę": "E", 2151 "Ł": "L", 2152 "Ń": "N", 2153 "Ś": "S", 2154 "Ź": "Z", 2155 "Ż": "Z", 2156 "Є": "Ye", 2157 "І": "I", 2158 "Ї": "Yi", 2159 "Ґ": "G", 2160 "є": "ye", 2161 "і": "i", 2162 "ї": "yi", 2163 "ґ": "g", 2164 "ă": "a", 2165 "Ă": "A", 2166 "ș": "s", 2167 "Ș": "S", 2168 "ț": "t", 2169 "Ț": "T", 2170 "ţ": "t", 2171 "Ţ": "T", 2172 "а": "a", 2173 "б": "b", 2174 "в": "v", 2175 "г": "g", 2176 "д": "d", 2177 "е": "e", 2178 "ё": "yo", 2179 "ж": "zh", 2180 "з": "z", 2181 "и": "i", 2182 "й": "i", 2183 "к": "k", 2184 "л": "l", 2185 "м": "m", 2186 "н": "n", 2187 "о": "o", 2188 "п": "p", 2189 "р": "r", 2190 "с": "s", 2191 "т": "t", 2192 "у": "u", 2193 "ф": "f", 2194 "х": "kh", 2195 "ц": "c", 2196 "ч": "ch", 2197 "ш": "sh", 2198 "щ": "sh", 2199 "ъ": "", 2200 "ы": "y", 2201 "ь": "", 2202 "э": "e", 2203 "ю": "yu", 2204 "я": "ya", 2205 "А": "A", 2206 "Б": "B", 2207 "В": "V", 2208 "Г": "G", 2209 "Д": "D", 2210 "Е": "E", 2211 "Ё": "Yo", 2212 "Ж": "Zh", 2213 "З": "Z", 2214 "И": "I", 2215 "Й": "I", 2216 "К": "K", 2217 "Л": "L", 2218 "М": "M", 2219 "Н": "N", 2220 "О": "O", 2221 "П": "P", 2222 "Р": "R", 2223 "С": "S", 2224 "Т": "T", 2225 "У": "U", 2226 "Ф": "F", 2227 "Х": "Kh", 2228 "Ц": "C", 2229 "Ч": "Ch", 2230 "Ш": "Sh", 2231 "Щ": "Sh", 2232 "Ъ": "", 2233 "Ы": "Y", 2234 "Ь": "", 2235 "Э": "E", 2236 "Ю": "Yu", 2237 "Я": "Ya", 2238 "ђ": "dj", 2239 "ј": "j", 2240 "ћ": "c", 2241 "џ": "dz", 2242 "Ђ": "Dj", 2243 "Ј": "j", 2244 "Ћ": "C", 2245 "Џ": "Dz", 2246 "ľ": "l", 2247 "ĺ": "l", 2248 "ŕ": "r", 2249 "Ľ": "L", 2250 "Ĺ": "L", 2251 "Ŕ": "R", 2252 "ş": "s", 2253 "Ş": "S", 2254 "ı": "i", 2255 "İ": "I", 2256 "ğ": "g", 2257 "Ğ": "G", 2258 "ả": "a", 2259 "Ả": "A", 2260 "ẳ": "a", 2261 "Ẳ": "A", 2262 "ẩ": "a", 2263 "Ẩ": "A", 2264 "đ": "d", 2265 "Đ": "D", 2266 "ẹ": "e", 2267 "Ẹ": "E", 2268 "ẽ": "e", 2269 "Ẽ": "E", 2270 "ẻ": "e", 2271 "Ẻ": "E", 2272 "ế": "e", 2273 "Ế": "E", 2274 "ề": "e", 2275 "Ề": "E", 2276 "ệ": "e", 2277 "Ệ": "E", 2278 "ễ": "e", 2279 "Ễ": "E", 2280 "ể": "e", 2281 "Ể": "E", 2282 "ỏ": "o", 2283 "ọ": "o", 2284 "Ọ": "o", 2285 "ố": "o", 2286 "Ố": "O", 2287 "ồ": "o", 2288 "Ồ": "O", 2289 "ổ": "o", 2290 "Ổ": "O", 2291 "ộ": "o", 2292 "Ộ": "O", 2293 "ỗ": "o", 2294 "Ỗ": "O", 2295 "ơ": "o", 2296 "Ơ": "O", 2297 "ớ": "o", 2298 "Ớ": "O", 2299 "ờ": "o", 2300 "Ờ": "O", 2301 "ợ": "o", 2302 "Ợ": "O", 2303 "ỡ": "o", 2304 "Ỡ": "O", 2305 "Ở": "o", 2306 "ở": "o", 2307 "ị": "i", 2308 "Ị": "I", 2309 "ĩ": "i", 2310 "Ĩ": "I", 2311 "ỉ": "i", 2312 "Ỉ": "i", 2313 "ủ": "u", 2314 "Ủ": "U", 2315 "ụ": "u", 2316 "Ụ": "U", 2317 "ũ": "u", 2318 "Ũ": "U", 2319 "ư": "u", 2320 "Ư": "U", 2321 "ứ": "u", 2322 "Ứ": "U", 2323 "ừ": "u", 2324 "Ừ": "U", 2325 "ự": "u", 2326 "Ự": "U", 2327 "ữ": "u", 2328 "Ữ": "U", 2329 "ử": "u", 2330 "Ử": "ư", 2331 "ỷ": "y", 2332 "Ỷ": "y", 2333 "ỳ": "y", 2334 "Ỳ": "Y", 2335 "ỵ": "y", 2336 "Ỵ": "Y", 2337 "ỹ": "y", 2338 "Ỹ": "Y", 2339 "ạ": "a", 2340 "Ạ": "A", 2341 "ấ": "a", 2342 "Ấ": "A", 2343 "ầ": "a", 2344 "Ầ": "A", 2345 "ậ": "a", 2346 "Ậ": "A", 2347 "ẫ": "a", 2348 "Ẫ": "A", 2349 "ắ": "a", 2350 "Ắ": "A", 2351 "ằ": "a", 2352 "Ằ": "A", 2353 "ặ": "a", 2354 "Ặ": "A", 2355 "ẵ": "a", 2356 "Ẵ": "A", 2357 "⓪": "0", 2358 "①": "1", 2359 "②": "2", 2360 "③": "3", 2361 "④": "4", 2362 "⑤": "5", 2363 "⑥": "6", 2364 "⑦": "7", 2365 "⑧": "8", 2366 "⑨": "9", 2367 "⑩": "10", 2368 "⑪": "11", 2369 "⑫": "12", 2370 "⑬": "13", 2371 "⑭": "14", 2372 "⑮": "15", 2373 "⑯": "16", 2374 "⑰": "17", 2375 "⑱": "18", 2376 "⑲": "18", 2377 "⑳": "18", 2378 "⓵": "1", 2379 "⓶": "2", 2380 "⓷": "3", 2381 "⓸": "4", 2382 "⓹": "5", 2383 "⓺": "6", 2384 "⓻": "7", 2385 "⓼": "8", 2386 "⓽": "9", 2387 "⓾": "10", 2388 "⓿": "0", 2389 "⓫": "11", 2390 "⓬": "12", 2391 "⓭": "13", 2392 "⓮": "14", 2393 "⓯": "15", 2394 "⓰": "16", 2395 "⓱": "17", 2396 "⓲": "18", 2397 "⓳": "19", 2398 "⓴": "20", 2399 "Ⓐ": "A", 2400 "Ⓑ": "B", 2401 "Ⓒ": "C", 2402 "Ⓓ": "D", 2403 "Ⓔ": "E", 2404 "Ⓕ": "F", 2405 "Ⓖ": "G", 2406 "Ⓗ": "H", 2407 "Ⓘ": "I", 2408 "Ⓙ": "J", 2409 "Ⓚ": "K", 2410 "Ⓛ": "L", 2411 "Ⓜ": "M", 2412 "Ⓝ": "N", 2413 "Ⓞ": "O", 2414 "Ⓟ": "P", 2415 "Ⓠ": "Q", 2416 "Ⓡ": "R", 2417 "Ⓢ": "S", 2418 "Ⓣ": "T", 2419 "Ⓤ": "U", 2420 "Ⓥ": "V", 2421 "Ⓦ": "W", 2422 "Ⓧ": "X", 2423 "Ⓨ": "Y", 2424 "Ⓩ": "Z", 2425 "ⓐ": "a", 2426 "ⓑ": "b", 2427 "ⓒ": "c", 2428 "ⓓ": "d", 2429 "ⓔ": "e", 2430 "ⓕ": "f", 2431 "ⓖ": "g", 2432 "ⓗ": "h", 2433 "ⓘ": "i", 2434 "ⓙ": "j", 2435 "ⓚ": "k", 2436 "ⓛ": "l", 2437 "ⓜ": "m", 2438 "ⓝ": "n", 2439 "ⓞ": "o", 2440 "ⓟ": "p", 2441 "ⓠ": "q", 2442 "ⓡ": "r", 2443 "ⓢ": "s", 2444 "ⓣ": "t", 2445 "ⓤ": "u", 2446 "ⓦ": "v", 2447 "ⓥ": "w", 2448 "ⓧ": "x", 2449 "ⓨ": "y", 2450 "ⓩ": "z", 2451 "“": '"', 2452 "”": '"', 2453 "‘": "'", 2454 "’": "'", 2455 "∂": "d", 2456 "ƒ": "f", 2457 "™": "(TM)", 2458 "©": "(C)", 2459 "œ": "oe", 2460 "Œ": "OE", 2461 "®": "(R)", 2462 "†": "+", 2463 "℠": "(SM)", 2464 "…": "...", 2465 "˚": "o", 2466 "º": "o", 2467 "ª": "a", 2468 "•": "*", 2469 "၊": ",", 2470 "။": ".", 2471 "$": "USD", 2472 "€": "EUR", 2473 "₢": "BRN", 2474 "₣": "FRF", 2475 "£": "GBP", 2476 "₤": "ITL", 2477 "₦": "NGN", 2478 "₧": "ESP", 2479 "₩": "KRW", 2480 "₪": "ILS", 2481 "₫": "VND", 2482 "₭": "LAK", 2483 "₮": "MNT", 2484 "₯": "GRD", 2485 "₱": "ARS", 2486 "₲": "PYG", 2487 "₳": "ARA", 2488 "₴": "UAH", 2489 "₵": "GHS", 2490 "¢": "cent", 2491 "¥": "CNY", 2492 "元": "CNY", 2493 "円": "YEN", 2494 "﷼": "IRR", 2495 "₠": "EWE", 2496 "฿": "THB", 2497 "₨": "INR", 2498 "₹": "INR", 2499 "₰": "PF", 2500 "₺": "TRY", 2501 "؋": "AFN", 2502 "₼": "AZN", 2503 "лв": "BGN", 2504 "៛": "KHR", 2505 "₡": "CRC", 2506 "₸": "KZT", 2507 "ден": "MKD", 2508 "zł": "PLN", 2509 "₽": "RUB", 2510 "₾": "GEL" 2511 }; 2512 var lookAheadCharArray = ["်", "ް"]; 2513 var diatricMap = { 2514 "ာ": "a", 2515 "ါ": "a", 2516 "ေ": "e", 2517 "ဲ": "e", 2518 "ိ": "i", 2519 "ီ": "i", 2520 "ို": "o", 2521 "ု": "u", 2522 "ူ": "u", 2523 "ေါင်": "aung", 2524 "ော": "aw", 2525 "ော်": "aw", 2526 "ေါ": "aw", 2527 "ေါ်": "aw", 2528 "်": "်", 2529 "က်": "et", 2530 "ိုက်": "aik", 2531 "ောက်": "auk", 2532 "င်": "in", 2533 "ိုင်": "aing", 2534 "ောင်": "aung", 2535 "စ်": "it", 2536 "ည်": "i", 2537 "တ်": "at", 2538 "ိတ်": "eik", 2539 "ုတ်": "ok", 2540 "ွတ်": "ut", 2541 "ေတ်": "it", 2542 "ဒ်": "d", 2543 "ိုဒ်": "ok", 2544 "ုဒ်": "ait", 2545 "န်": "an", 2546 "ာန်": "an", 2547 "ိန်": "ein", 2548 "ုန်": "on", 2549 "ွန်": "un", 2550 "ပ်": "at", 2551 "ိပ်": "eik", 2552 "ုပ်": "ok", 2553 "ွပ်": "ut", 2554 "န်ုပ်": "nub", 2555 "မ်": "an", 2556 "ိမ်": "ein", 2557 "ုမ်": "on", 2558 "ွမ်": "un", 2559 "ယ်": "e", 2560 "ိုလ်": "ol", 2561 "ဉ်": "in", 2562 "ံ": "an", 2563 "ိံ": "ein", 2564 "ုံ": "on", 2565 "ައް": "ah", 2566 "ަށް": "ah" 2567 }; 2568 var langCharMap = { 2569 "en": {}, 2570 "az": { 2571 "ç": "c", 2572 "ə": "e", 2573 "ğ": "g", 2574 "ı": "i", 2575 "ö": "o", 2576 "ş": "s", 2577 "ü": "u", 2578 "Ç": "C", 2579 "Ə": "E", 2580 "Ğ": "G", 2581 "İ": "I", 2582 "Ö": "O", 2583 "Ş": "S", 2584 "Ü": "U" 2585 }, 2586 "cs": { 2587 "č": "c", 2588 "ď": "d", 2589 "ě": "e", 2590 "ň": "n", 2591 "ř": "r", 2592 "š": "s", 2593 "ť": "t", 2594 "ů": "u", 2595 "ž": "z", 2596 "Č": "C", 2597 "Ď": "D", 2598 "Ě": "E", 2599 "Ň": "N", 2600 "Ř": "R", 2601 "Š": "S", 2602 "Ť": "T", 2603 "Ů": "U", 2604 "Ž": "Z" 2605 }, 2606 "fi": { 2607 "ä": "a", 2608 "Ä": "A", 2609 "ö": "o", 2610 "Ö": "O" 2611 }, 2612 "hu": { 2613 "ä": "a", 2614 "Ä": "A", 2615 "ö": "o", 2616 "Ö": "O", 2617 "ü": "u", 2618 "Ü": "U", 2619 "ű": "u", 2620 "Ű": "U" 2621 }, 2622 "lt": { 2623 "ą": "a", 2624 "č": "c", 2625 "ę": "e", 2626 "ė": "e", 2627 "į": "i", 2628 "š": "s", 2629 "ų": "u", 2630 "ū": "u", 2631 "ž": "z", 2632 "Ą": "A", 2633 "Č": "C", 2634 "Ę": "E", 2635 "Ė": "E", 2636 "Į": "I", 2637 "Š": "S", 2638 "Ų": "U", 2639 "Ū": "U" 2640 }, 2641 "lv": { 2642 "ā": "a", 2643 "č": "c", 2644 "ē": "e", 2645 "ģ": "g", 2646 "ī": "i", 2647 "ķ": "k", 2648 "ļ": "l", 2649 "ņ": "n", 2650 "š": "s", 2651 "ū": "u", 2652 "ž": "z", 2653 "Ā": "A", 2654 "Č": "C", 2655 "Ē": "E", 2656 "Ģ": "G", 2657 "Ī": "i", 2658 "Ķ": "k", 2659 "Ļ": "L", 2660 "Ņ": "N", 2661 "Š": "S", 2662 "Ū": "u", 2663 "Ž": "Z" 2664 }, 2665 "pl": { 2666 "ą": "a", 2667 "ć": "c", 2668 "ę": "e", 2669 "ł": "l", 2670 "ń": "n", 2671 "ó": "o", 2672 "ś": "s", 2673 "ź": "z", 2674 "ż": "z", 2675 "Ą": "A", 2676 "Ć": "C", 2677 "Ę": "e", 2678 "Ł": "L", 2679 "Ń": "N", 2680 "Ó": "O", 2681 "Ś": "S", 2682 "Ź": "Z", 2683 "Ż": "Z" 2684 }, 2685 "sv": { 2686 "ä": "a", 2687 "Ä": "A", 2688 "ö": "o", 2689 "Ö": "O" 2690 }, 2691 "sk": { 2692 "ä": "a", 2693 "Ä": "A" 2694 }, 2695 "sr": { 2696 "љ": "lj", 2697 "њ": "nj", 2698 "Љ": "Lj", 2699 "Њ": "Nj", 2700 "đ": "dj", 2701 "Đ": "Dj" 2702 }, 2703 "tr": { 2704 "Ü": "U", 2705 "Ö": "O", 2706 "ü": "u", 2707 "ö": "o" 2708 } 2709 }; 2710 var symbolMap = { 2711 "ar": { 2712 "∆": "delta", 2713 "∞": "la-nihaya", 2714 "♥": "hob", 2715 "&": "wa", 2716 "|": "aw", 2717 "<": "aqal-men", 2718 ">": "akbar-men", 2719 "∑": "majmou", 2720 "¤": "omla" 2721 }, 2722 "az": {}, 2723 "ca": { 2724 "∆": "delta", 2725 "∞": "infinit", 2726 "♥": "amor", 2727 "&": "i", 2728 "|": "o", 2729 "<": "menys que", 2730 ">": "mes que", 2731 "∑": "suma dels", 2732 "¤": "moneda" 2733 }, 2734 "cs": { 2735 "∆": "delta", 2736 "∞": "nekonecno", 2737 "♥": "laska", 2738 "&": "a", 2739 "|": "nebo", 2740 "<": "mensi nez", 2741 ">": "vetsi nez", 2742 "∑": "soucet", 2743 "¤": "mena" 2744 }, 2745 "de": { 2746 "∆": "delta", 2747 "∞": "unendlich", 2748 "♥": "Liebe", 2749 "&": "und", 2750 "|": "oder", 2751 "<": "kleiner als", 2752 ">": "groesser als", 2753 "∑": "Summe von", 2754 "¤": "Waehrung" 2755 }, 2756 "dv": { 2757 "∆": "delta", 2758 "∞": "kolunulaa", 2759 "♥": "loabi", 2760 "&": "aai", 2761 "|": "noonee", 2762 "<": "ah vure kuda", 2763 ">": "ah vure bodu", 2764 "∑": "jumula", 2765 "¤": "faisaa" 2766 }, 2767 "en": { 2768 "∆": "delta", 2769 "∞": "infinity", 2770 "♥": "love", 2771 "&": "and", 2772 "|": "or", 2773 "<": "less than", 2774 ">": "greater than", 2775 "∑": "sum", 2776 "¤": "currency" 2777 }, 2778 "es": { 2779 "∆": "delta", 2780 "∞": "infinito", 2781 "♥": "amor", 2782 "&": "y", 2783 "|": "u", 2784 "<": "menos que", 2785 ">": "mas que", 2786 "∑": "suma de los", 2787 "¤": "moneda" 2788 }, 2789 "fa": { 2790 "∆": "delta", 2791 "∞": "bi-nahayat", 2792 "♥": "eshgh", 2793 "&": "va", 2794 "|": "ya", 2795 "<": "kamtar-az", 2796 ">": "bishtar-az", 2797 "∑": "majmooe", 2798 "¤": "vahed" 2799 }, 2800 "fi": { 2801 "∆": "delta", 2802 "∞": "aarettomyys", 2803 "♥": "rakkaus", 2804 "&": "ja", 2805 "|": "tai", 2806 "<": "pienempi kuin", 2807 ">": "suurempi kuin", 2808 "∑": "summa", 2809 "¤": "valuutta" 2810 }, 2811 "fr": { 2812 "∆": "delta", 2813 "∞": "infiniment", 2814 "♥": "Amour", 2815 "&": "et", 2816 "|": "ou", 2817 "<": "moins que", 2818 ">": "superieure a", 2819 "∑": "somme des", 2820 "¤": "monnaie" 2821 }, 2822 "ge": { 2823 "∆": "delta", 2824 "∞": "usasruloba", 2825 "♥": "siqvaruli", 2826 "&": "da", 2827 "|": "an", 2828 "<": "naklebi", 2829 ">": "meti", 2830 "∑": "jami", 2831 "¤": "valuta" 2832 }, 2833 "gr": {}, 2834 "hu": { 2835 "∆": "delta", 2836 "∞": "vegtelen", 2837 "♥": "szerelem", 2838 "&": "es", 2839 "|": "vagy", 2840 "<": "kisebb mint", 2841 ">": "nagyobb mint", 2842 "∑": "szumma", 2843 "¤": "penznem" 2844 }, 2845 "it": { 2846 "∆": "delta", 2847 "∞": "infinito", 2848 "♥": "amore", 2849 "&": "e", 2850 "|": "o", 2851 "<": "minore di", 2852 ">": "maggiore di", 2853 "∑": "somma", 2854 "¤": "moneta" 2855 }, 2856 "lt": { 2857 "∆": "delta", 2858 "∞": "begalybe", 2859 "♥": "meile", 2860 "&": "ir", 2861 "|": "ar", 2862 "<": "maziau nei", 2863 ">": "daugiau nei", 2864 "∑": "suma", 2865 "¤": "valiuta" 2866 }, 2867 "lv": { 2868 "∆": "delta", 2869 "∞": "bezgaliba", 2870 "♥": "milestiba", 2871 "&": "un", 2872 "|": "vai", 2873 "<": "mazak neka", 2874 ">": "lielaks neka", 2875 "∑": "summa", 2876 "¤": "valuta" 2877 }, 2878 "my": { 2879 "∆": "kwahkhyaet", 2880 "∞": "asaonasme", 2881 "♥": "akhyait", 2882 "&": "nhin", 2883 "|": "tho", 2884 "<": "ngethaw", 2885 ">": "kyithaw", 2886 "∑": "paungld", 2887 "¤": "ngwekye" 2888 }, 2889 "mk": {}, 2890 "nl": { 2891 "∆": "delta", 2892 "∞": "oneindig", 2893 "♥": "liefde", 2894 "&": "en", 2895 "|": "of", 2896 "<": "kleiner dan", 2897 ">": "groter dan", 2898 "∑": "som", 2899 "¤": "valuta" 2900 }, 2901 "pl": { 2902 "∆": "delta", 2903 "∞": "nieskonczonosc", 2904 "♥": "milosc", 2905 "&": "i", 2906 "|": "lub", 2907 "<": "mniejsze niz", 2908 ">": "wieksze niz", 2909 "∑": "suma", 2910 "¤": "waluta" 2911 }, 2912 "pt": { 2913 "∆": "delta", 2914 "∞": "infinito", 2915 "♥": "amor", 2916 "&": "e", 2917 "|": "ou", 2918 "<": "menor que", 2919 ">": "maior que", 2920 "∑": "soma", 2921 "¤": "moeda" 2922 }, 2923 "ro": { 2924 "∆": "delta", 2925 "∞": "infinit", 2926 "♥": "dragoste", 2927 "&": "si", 2928 "|": "sau", 2929 "<": "mai mic ca", 2930 ">": "mai mare ca", 2931 "∑": "suma", 2932 "¤": "valuta" 2933 }, 2934 "ru": { 2935 "∆": "delta", 2936 "∞": "beskonechno", 2937 "♥": "lubov", 2938 "&": "i", 2939 "|": "ili", 2940 "<": "menshe", 2941 ">": "bolshe", 2942 "∑": "summa", 2943 "¤": "valjuta" 2944 }, 2945 "sk": { 2946 "∆": "delta", 2947 "∞": "nekonecno", 2948 "♥": "laska", 2949 "&": "a", 2950 "|": "alebo", 2951 "<": "menej ako", 2952 ">": "viac ako", 2953 "∑": "sucet", 2954 "¤": "mena" 2955 }, 2956 "sr": {}, 2957 "tr": { 2958 "∆": "delta", 2959 "∞": "sonsuzluk", 2960 "♥": "ask", 2961 "&": "ve", 2962 "|": "veya", 2963 "<": "kucuktur", 2964 ">": "buyuktur", 2965 "∑": "toplam", 2966 "¤": "para birimi" 2967 }, 2968 "uk": { 2969 "∆": "delta", 2970 "∞": "bezkinechnist", 2971 "♥": "lubov", 2972 "&": "i", 2973 "|": "abo", 2974 "<": "menshe", 2975 ">": "bilshe", 2976 "∑": "suma", 2977 "¤": "valjuta" 2978 }, 2979 "vn": { 2980 "∆": "delta", 2981 "∞": "vo cuc", 2982 "♥": "yeu", 2983 "&": "va", 2984 "|": "hoac", 2985 "<": "nho hon", 2986 ">": "lon hon", 2987 "∑": "tong", 2988 "¤": "tien te" 2989 } 2990 }; 2991 var uricChars = [ 2992 ";", 2993 "?", 2994 ":", 2995 "@", 2996 "&", 2997 "=", 2998 "+", 2999 "$", 3000 ",", 3001 "/" 3002 ].join(""); 3003 var uricNoSlashChars = [ 3004 ";", 3005 "?", 3006 ":", 3007 "@", 3008 "&", 3009 "=", 3010 "+", 3011 "$", 3012 "," 3013 ].join(""); 3014 var markChars = [ 3015 ".", 3016 "!", 3017 "~", 3018 "*", 3019 "'", 3020 "(", 3021 ")" 3022 ].join(""); 3023 var getSlug = function getSlug2(input, opts) { 3024 var separator = "-"; 3025 var result = ""; 3026 var diatricString = ""; 3027 var convertSymbols = true; 3028 var customReplacements = {}; 3029 var maintainCase; 3030 var titleCase; 3031 var truncate; 3032 var uricFlag; 3033 var uricNoSlashFlag; 3034 var markFlag; 3035 var symbol; 3036 var langChar; 3037 var lucky; 3038 var i; 3039 var ch; 3040 var l; 3041 var lastCharWasSymbol; 3042 var lastCharWasDiatric; 3043 var allowedChars = ""; 3044 if (typeof input !== "string") return ""; 3045 if (typeof opts === "string") separator = opts; 3046 symbol = symbolMap.en; 3047 langChar = langCharMap.en; 3048 if (typeof opts === "object") { 3049 maintainCase = opts.maintainCase || false; 3050 customReplacements = opts.custom && typeof opts.custom === "object" ? opts.custom : customReplacements; 3051 truncate = +opts.truncate > 1 && opts.truncate || false; 3052 uricFlag = opts.uric || false; 3053 uricNoSlashFlag = opts.uricNoSlash || false; 3054 markFlag = opts.mark || false; 3055 convertSymbols = opts.symbols === false || opts.lang === false ? false : true; 3056 separator = opts.separator || separator; 3057 if (uricFlag) allowedChars += uricChars; 3058 if (uricNoSlashFlag) allowedChars += uricNoSlashChars; 3059 if (markFlag) allowedChars += markChars; 3060 symbol = opts.lang && symbolMap[opts.lang] && convertSymbols ? symbolMap[opts.lang] : convertSymbols ? symbolMap.en : {}; 3061 langChar = opts.lang && langCharMap[opts.lang] ? langCharMap[opts.lang] : opts.lang === false || opts.lang === true ? {} : langCharMap.en; 3062 if (opts.titleCase && typeof opts.titleCase.length === "number" && Array.prototype.toString.call(opts.titleCase)) { 3063 opts.titleCase.forEach(function(v) { 3064 customReplacements[v + ""] = v + ""; 3065 }); 3066 titleCase = true; 3067 } else titleCase = !!opts.titleCase; 3068 if (opts.custom && typeof opts.custom.length === "number" && Array.prototype.toString.call(opts.custom)) opts.custom.forEach(function(v) { 3069 customReplacements[v + ""] = v + ""; 3070 }); 3071 Object.keys(customReplacements).forEach(function(v) { 3072 var r; 3073 if (v.length > 1) r = new RegExp("\\b" + escapeChars(v) + "\\b", "gi"); 3074 else r = new RegExp(escapeChars(v), "gi"); 3075 input = input.replace(r, customReplacements[v]); 3076 }); 3077 for (ch in customReplacements) allowedChars += ch; 3078 } 3079 allowedChars += separator; 3080 allowedChars = escapeChars(allowedChars); 3081 input = input.replace(/(^\s+|\s+$)/g, ""); 3082 lastCharWasSymbol = false; 3083 lastCharWasDiatric = false; 3084 for (i = 0, l = input.length; i < l; i++) { 3085 ch = input[i]; 3086 if (isReplacedCustomChar(ch, customReplacements)) lastCharWasSymbol = false; 3087 else if (langChar[ch]) { 3088 ch = lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) ? " " + langChar[ch] : langChar[ch]; 3089 lastCharWasSymbol = false; 3090 } else if (ch in charMap) { 3091 if (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) { 3092 diatricString += ch; 3093 ch = ""; 3094 } else if (lastCharWasDiatric === true) { 3095 ch = diatricMap[diatricString] + charMap[ch]; 3096 diatricString = ""; 3097 } else ch = lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) ? " " + charMap[ch] : charMap[ch]; 3098 lastCharWasSymbol = false; 3099 lastCharWasDiatric = false; 3100 } else if (ch in diatricMap) { 3101 diatricString += ch; 3102 ch = ""; 3103 if (i === l - 1) ch = diatricMap[diatricString]; 3104 lastCharWasDiatric = true; 3105 } else if (symbol[ch] && !(uricFlag && uricChars.indexOf(ch) !== -1) && !(uricNoSlashFlag && uricNoSlashChars.indexOf(ch) !== -1)) { 3106 ch = lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) ? separator + symbol[ch] : symbol[ch]; 3107 ch += input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) ? separator : ""; 3108 lastCharWasSymbol = true; 3109 } else { 3110 if (lastCharWasDiatric === true) { 3111 ch = diatricMap[diatricString] + ch; 3112 diatricString = ""; 3113 lastCharWasDiatric = false; 3114 } else if (lastCharWasSymbol && (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/))) ch = " " + ch; 3115 lastCharWasSymbol = false; 3116 } 3117 result += ch.replace(new RegExp("[^\\w\\s" + allowedChars + "_-]", "g"), separator); 3118 } 3119 if (titleCase) result = result.replace(/(\w)(\S*)/g, function(_, i2, r) { 3120 var j = i2.toUpperCase() + (r !== null ? r : ""); 3121 return Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0 ? j : j.toLowerCase(); 3122 }); 3123 result = result.replace(/\s+/g, separator).replace(new RegExp("\\" + separator + "+", "g"), separator).replace(new RegExp("(^\\" + separator + "+|\\" + separator + "+$)", "g"), ""); 3124 if (truncate && result.length > truncate) { 3125 lucky = result.charAt(truncate) === separator; 3126 result = result.slice(0, truncate); 3127 if (!lucky) result = result.slice(0, result.lastIndexOf(separator)); 3128 } 3129 if (!maintainCase && !titleCase) result = result.toLowerCase(); 3130 return result; 3131 }; 3132 var createSlug = function createSlug2(opts) { 3133 return function getSlugWithConfig(input) { 3134 return getSlug(input, opts); 3135 }; 3136 }; 3137 var escapeChars = function escapeChars2(input) { 3138 return input.replace(/[-\\^$*+?.()|[\]{}\/]/g, "\\$&"); 3139 }; 3140 var isReplacedCustomChar = function(ch, customReplacements) { 3141 for (var c in customReplacements) if (customReplacements[c] === ch) return true; 3142 }; 3143 if (typeof module !== "undefined" && module.exports) { 3144 module.exports = getSlug; 3145 module.exports.createSlug = createSlug; 3146 } else if (typeof define !== "undefined" && define.amd) define([], function() { 3147 return getSlug; 3148 }); 3149 else try { 3150 if (root.getSlug || root.createSlug) throw "speakingurl: globals exists /(getSlug|createSlug)/"; 3151 else { 3152 root.getSlug = getSlug; 3153 root.createSlug = createSlug; 3154 } 3155 } catch (e) { 3156 } 3157 })(exports); 3158 })); 3159 var import_speakingurl = __toESM2(__commonJSMin2(((exports, module) => { 3160 module.exports = require_speakingurl$1(); 3161 }))(), 1); 3162 var appRecordInfo = target.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__ ??= { 3163 id: 0, 3164 appIds: /* @__PURE__ */ new Set() 3165 }; 3166 function onDevToolsClientConnected(fn) { 3167 return new Promise((resolve) => { 3168 if (devtoolsState.connected && devtoolsState.clientConnected) { 3169 fn(); 3170 resolve(); 3171 return; 3172 } 3173 devtoolsContext.hooks.hook(DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED, ({ state }) => { 3174 if (state.connected && state.clientConnected) { 3175 fn(); 3176 resolve(); 3177 } 3178 }); 3179 }); 3180 } 3181 function toggleHighPerfMode(state) { 3182 devtoolsState.highPerfModeEnabled = state ?? !devtoolsState.highPerfModeEnabled; 3183 if (!state && activeAppRecord.value) registerDevToolsPlugin(activeAppRecord.value.app); 3184 } 3185 function updateDevToolsClientDetected(params) { 3186 devtoolsState.devtoolsClientDetected = { 3187 ...devtoolsState.devtoolsClientDetected, 3188 ...params 3189 }; 3190 toggleHighPerfMode(!Object.values(devtoolsState.devtoolsClientDetected).some(Boolean)); 3191 } 3192 target.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__ ??= updateDevToolsClientDetected; 3193 var DoubleIndexedKV = class { 3194 constructor() { 3195 this.keyToValue = /* @__PURE__ */ new Map(); 3196 this.valueToKey = /* @__PURE__ */ new Map(); 3197 } 3198 set(key, value) { 3199 this.keyToValue.set(key, value); 3200 this.valueToKey.set(value, key); 3201 } 3202 getByKey(key) { 3203 return this.keyToValue.get(key); 3204 } 3205 getByValue(value) { 3206 return this.valueToKey.get(value); 3207 } 3208 clear() { 3209 this.keyToValue.clear(); 3210 this.valueToKey.clear(); 3211 } 3212 }; 3213 var Registry = class { 3214 constructor(generateIdentifier) { 3215 this.generateIdentifier = generateIdentifier; 3216 this.kv = new DoubleIndexedKV(); 3217 } 3218 register(value, identifier) { 3219 if (this.kv.getByValue(value)) return; 3220 if (!identifier) identifier = this.generateIdentifier(value); 3221 this.kv.set(identifier, value); 3222 } 3223 clear() { 3224 this.kv.clear(); 3225 } 3226 getIdentifier(value) { 3227 return this.kv.getByValue(value); 3228 } 3229 getValue(identifier) { 3230 return this.kv.getByKey(identifier); 3231 } 3232 }; 3233 var ClassRegistry = class extends Registry { 3234 constructor() { 3235 super((c) => c.name); 3236 this.classToAllowedProps = /* @__PURE__ */ new Map(); 3237 } 3238 register(value, options) { 3239 if (typeof options === "object") { 3240 if (options.allowProps) this.classToAllowedProps.set(value, options.allowProps); 3241 super.register(value, options.identifier); 3242 } else super.register(value, options); 3243 } 3244 getAllowedProps(value) { 3245 return this.classToAllowedProps.get(value); 3246 } 3247 }; 3248 function valuesOfObj(record) { 3249 if ("values" in Object) return Object.values(record); 3250 const values = []; 3251 for (const key in record) if (record.hasOwnProperty(key)) values.push(record[key]); 3252 return values; 3253 } 3254 function find(record, predicate) { 3255 const values = valuesOfObj(record); 3256 if ("find" in values) return values.find(predicate); 3257 const valuesNotNever = values; 3258 for (let i = 0; i < valuesNotNever.length; i++) { 3259 const value = valuesNotNever[i]; 3260 if (predicate(value)) return value; 3261 } 3262 } 3263 function forEach(record, run) { 3264 Object.entries(record).forEach(([key, value]) => run(value, key)); 3265 } 3266 function includes(arr, value) { 3267 return arr.indexOf(value) !== -1; 3268 } 3269 function findArr(record, predicate) { 3270 for (let i = 0; i < record.length; i++) { 3271 const value = record[i]; 3272 if (predicate(value)) return value; 3273 } 3274 } 3275 var CustomTransformerRegistry = class { 3276 constructor() { 3277 this.transfomers = {}; 3278 } 3279 register(transformer) { 3280 this.transfomers[transformer.name] = transformer; 3281 } 3282 findApplicable(v) { 3283 return find(this.transfomers, (transformer) => transformer.isApplicable(v)); 3284 } 3285 findByName(name) { 3286 return this.transfomers[name]; 3287 } 3288 }; 3289 var getType$1 = (payload) => Object.prototype.toString.call(payload).slice(8, -1); 3290 var isUndefined$1 = (payload) => typeof payload === "undefined"; 3291 var isNull$1 = (payload) => payload === null; 3292 var isPlainObject$2 = (payload) => { 3293 if (typeof payload !== "object" || payload === null) return false; 3294 if (payload === Object.prototype) return false; 3295 if (Object.getPrototypeOf(payload) === null) return true; 3296 return Object.getPrototypeOf(payload) === Object.prototype; 3297 }; 3298 var isEmptyObject = (payload) => isPlainObject$2(payload) && Object.keys(payload).length === 0; 3299 var isArray$2 = (payload) => Array.isArray(payload); 3300 var isString = (payload) => typeof payload === "string"; 3301 var isNumber = (payload) => typeof payload === "number" && !isNaN(payload); 3302 var isBoolean = (payload) => typeof payload === "boolean"; 3303 var isRegExp = (payload) => payload instanceof RegExp; 3304 var isMap = (payload) => payload instanceof Map; 3305 var isSet = (payload) => payload instanceof Set; 3306 var isSymbol = (payload) => getType$1(payload) === "Symbol"; 3307 var isDate = (payload) => payload instanceof Date && !isNaN(payload.valueOf()); 3308 var isError = (payload) => payload instanceof Error; 3309 var isNaNValue = (payload) => typeof payload === "number" && isNaN(payload); 3310 var isPrimitive = (payload) => isBoolean(payload) || isNull$1(payload) || isUndefined$1(payload) || isNumber(payload) || isString(payload) || isSymbol(payload); 3311 var isBigint = (payload) => typeof payload === "bigint"; 3312 var isInfinite = (payload) => payload === Infinity || payload === -Infinity; 3313 var isTypedArray = (payload) => ArrayBuffer.isView(payload) && !(payload instanceof DataView); 3314 var isURL = (payload) => payload instanceof URL; 3315 var escapeKey = (key) => key.replace(/\./g, "\\."); 3316 var stringifyPath = (path) => path.map(String).map(escapeKey).join("."); 3317 var parsePath = (string) => { 3318 const result = []; 3319 let segment = ""; 3320 for (let i = 0; i < string.length; i++) { 3321 let char = string.charAt(i); 3322 if (char === "\\" && string.charAt(i + 1) === ".") { 3323 segment += "."; 3324 i++; 3325 continue; 3326 } 3327 if (char === ".") { 3328 result.push(segment); 3329 segment = ""; 3330 continue; 3331 } 3332 segment += char; 3333 } 3334 const lastSegment = segment; 3335 result.push(lastSegment); 3336 return result; 3337 }; 3338 function simpleTransformation(isApplicable, annotation, transform, untransform) { 3339 return { 3340 isApplicable, 3341 annotation, 3342 transform, 3343 untransform 3344 }; 3345 } 3346 var simpleRules = [ 3347 simpleTransformation(isUndefined$1, "undefined", () => null, () => void 0), 3348 simpleTransformation(isBigint, "bigint", (v) => v.toString(), (v) => { 3349 if (typeof BigInt !== "undefined") return BigInt(v); 3350 console.error("Please add a BigInt polyfill."); 3351 return v; 3352 }), 3353 simpleTransformation(isDate, "Date", (v) => v.toISOString(), (v) => new Date(v)), 3354 simpleTransformation(isError, "Error", (v, superJson) => { 3355 const baseError = { 3356 name: v.name, 3357 message: v.message 3358 }; 3359 superJson.allowedErrorProps.forEach((prop) => { 3360 baseError[prop] = v[prop]; 3361 }); 3362 return baseError; 3363 }, (v, superJson) => { 3364 const e = new Error(v.message); 3365 e.name = v.name; 3366 e.stack = v.stack; 3367 superJson.allowedErrorProps.forEach((prop) => { 3368 e[prop] = v[prop]; 3369 }); 3370 return e; 3371 }), 3372 simpleTransformation(isRegExp, "regexp", (v) => "" + v, (regex) => { 3373 const body = regex.slice(1, regex.lastIndexOf("/")); 3374 const flags = regex.slice(regex.lastIndexOf("/") + 1); 3375 return new RegExp(body, flags); 3376 }), 3377 simpleTransformation(isSet, "set", (v) => [...v.values()], (v) => new Set(v)), 3378 simpleTransformation(isMap, "map", (v) => [...v.entries()], (v) => new Map(v)), 3379 simpleTransformation((v) => isNaNValue(v) || isInfinite(v), "number", (v) => { 3380 if (isNaNValue(v)) return "NaN"; 3381 if (v > 0) return "Infinity"; 3382 else return "-Infinity"; 3383 }, Number), 3384 simpleTransformation((v) => v === 0 && 1 / v === -Infinity, "number", () => { 3385 return "-0"; 3386 }, Number), 3387 simpleTransformation(isURL, "URL", (v) => v.toString(), (v) => new URL(v)) 3388 ]; 3389 function compositeTransformation(isApplicable, annotation, transform, untransform) { 3390 return { 3391 isApplicable, 3392 annotation, 3393 transform, 3394 untransform 3395 }; 3396 } 3397 var symbolRule = compositeTransformation((s, superJson) => { 3398 if (isSymbol(s)) return !!superJson.symbolRegistry.getIdentifier(s); 3399 return false; 3400 }, (s, superJson) => { 3401 return ["symbol", superJson.symbolRegistry.getIdentifier(s)]; 3402 }, (v) => v.description, (_, a, superJson) => { 3403 const value = superJson.symbolRegistry.getValue(a[1]); 3404 if (!value) throw new Error("Trying to deserialize unknown symbol"); 3405 return value; 3406 }); 3407 var constructorToName = [ 3408 Int8Array, 3409 Uint8Array, 3410 Int16Array, 3411 Uint16Array, 3412 Int32Array, 3413 Uint32Array, 3414 Float32Array, 3415 Float64Array, 3416 Uint8ClampedArray 3417 ].reduce((obj, ctor) => { 3418 obj[ctor.name] = ctor; 3419 return obj; 3420 }, {}); 3421 var typedArrayRule = compositeTransformation(isTypedArray, (v) => ["typed-array", v.constructor.name], (v) => [...v], (v, a) => { 3422 const ctor = constructorToName[a[1]]; 3423 if (!ctor) throw new Error("Trying to deserialize unknown typed array"); 3424 return new ctor(v); 3425 }); 3426 function isInstanceOfRegisteredClass(potentialClass, superJson) { 3427 if (potentialClass?.constructor) return !!superJson.classRegistry.getIdentifier(potentialClass.constructor); 3428 return false; 3429 } 3430 var classRule = compositeTransformation(isInstanceOfRegisteredClass, (clazz, superJson) => { 3431 return ["class", superJson.classRegistry.getIdentifier(clazz.constructor)]; 3432 }, (clazz, superJson) => { 3433 const allowedProps = superJson.classRegistry.getAllowedProps(clazz.constructor); 3434 if (!allowedProps) return { ...clazz }; 3435 const result = {}; 3436 allowedProps.forEach((prop) => { 3437 result[prop] = clazz[prop]; 3438 }); 3439 return result; 3440 }, (v, a, superJson) => { 3441 const clazz = superJson.classRegistry.getValue(a[1]); 3442 if (!clazz) throw new Error(`Trying to deserialize unknown class '${a[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`); 3443 return Object.assign(Object.create(clazz.prototype), v); 3444 }); 3445 var customRule = compositeTransformation((value, superJson) => { 3446 return !!superJson.customTransformerRegistry.findApplicable(value); 3447 }, (value, superJson) => { 3448 return ["custom", superJson.customTransformerRegistry.findApplicable(value).name]; 3449 }, (value, superJson) => { 3450 return superJson.customTransformerRegistry.findApplicable(value).serialize(value); 3451 }, (v, a, superJson) => { 3452 const transformer = superJson.customTransformerRegistry.findByName(a[1]); 3453 if (!transformer) throw new Error("Trying to deserialize unknown custom value"); 3454 return transformer.deserialize(v); 3455 }); 3456 var compositeRules = [ 3457 classRule, 3458 symbolRule, 3459 customRule, 3460 typedArrayRule 3461 ]; 3462 var transformValue = (value, superJson) => { 3463 const applicableCompositeRule = findArr(compositeRules, (rule) => rule.isApplicable(value, superJson)); 3464 if (applicableCompositeRule) return { 3465 value: applicableCompositeRule.transform(value, superJson), 3466 type: applicableCompositeRule.annotation(value, superJson) 3467 }; 3468 const applicableSimpleRule = findArr(simpleRules, (rule) => rule.isApplicable(value, superJson)); 3469 if (applicableSimpleRule) return { 3470 value: applicableSimpleRule.transform(value, superJson), 3471 type: applicableSimpleRule.annotation 3472 }; 3473 }; 3474 var simpleRulesByAnnotation = {}; 3475 simpleRules.forEach((rule) => { 3476 simpleRulesByAnnotation[rule.annotation] = rule; 3477 }); 3478 var untransformValue = (json, type, superJson) => { 3479 if (isArray$2(type)) switch (type[0]) { 3480 case "symbol": 3481 return symbolRule.untransform(json, type, superJson); 3482 case "class": 3483 return classRule.untransform(json, type, superJson); 3484 case "custom": 3485 return customRule.untransform(json, type, superJson); 3486 case "typed-array": 3487 return typedArrayRule.untransform(json, type, superJson); 3488 default: 3489 throw new Error("Unknown transformation: " + type); 3490 } 3491 else { 3492 const transformation = simpleRulesByAnnotation[type]; 3493 if (!transformation) throw new Error("Unknown transformation: " + type); 3494 return transformation.untransform(json, superJson); 3495 } 3496 }; 3497 var getNthKey = (value, n) => { 3498 if (n > value.size) throw new Error("index out of bounds"); 3499 const keys = value.keys(); 3500 while (n > 0) { 3501 keys.next(); 3502 n--; 3503 } 3504 return keys.next().value; 3505 }; 3506 function validatePath(path) { 3507 if (includes(path, "__proto__")) throw new Error("__proto__ is not allowed as a property"); 3508 if (includes(path, "prototype")) throw new Error("prototype is not allowed as a property"); 3509 if (includes(path, "constructor")) throw new Error("constructor is not allowed as a property"); 3510 } 3511 var getDeep = (object, path) => { 3512 validatePath(path); 3513 for (let i = 0; i < path.length; i++) { 3514 const key = path[i]; 3515 if (isSet(object)) object = getNthKey(object, +key); 3516 else if (isMap(object)) { 3517 const row = +key; 3518 const type = +path[++i] === 0 ? "key" : "value"; 3519 const keyOfRow = getNthKey(object, row); 3520 switch (type) { 3521 case "key": 3522 object = keyOfRow; 3523 break; 3524 case "value": 3525 object = object.get(keyOfRow); 3526 break; 3527 } 3528 } else object = object[key]; 3529 } 3530 return object; 3531 }; 3532 var setDeep = (object, path, mapper) => { 3533 validatePath(path); 3534 if (path.length === 0) return mapper(object); 3535 let parent = object; 3536 for (let i = 0; i < path.length - 1; i++) { 3537 const key = path[i]; 3538 if (isArray$2(parent)) { 3539 const index = +key; 3540 parent = parent[index]; 3541 } else if (isPlainObject$2(parent)) parent = parent[key]; 3542 else if (isSet(parent)) { 3543 const row = +key; 3544 parent = getNthKey(parent, row); 3545 } else if (isMap(parent)) { 3546 if (i === path.length - 2) break; 3547 const row = +key; 3548 const type = +path[++i] === 0 ? "key" : "value"; 3549 const keyOfRow = getNthKey(parent, row); 3550 switch (type) { 3551 case "key": 3552 parent = keyOfRow; 3553 break; 3554 case "value": 3555 parent = parent.get(keyOfRow); 3556 break; 3557 } 3558 } 3559 } 3560 const lastKey = path[path.length - 1]; 3561 if (isArray$2(parent)) parent[+lastKey] = mapper(parent[+lastKey]); 3562 else if (isPlainObject$2(parent)) parent[lastKey] = mapper(parent[lastKey]); 3563 if (isSet(parent)) { 3564 const oldValue = getNthKey(parent, +lastKey); 3565 const newValue = mapper(oldValue); 3566 if (oldValue !== newValue) { 3567 parent.delete(oldValue); 3568 parent.add(newValue); 3569 } 3570 } 3571 if (isMap(parent)) { 3572 const row = +path[path.length - 2]; 3573 const keyToRow = getNthKey(parent, row); 3574 switch (+lastKey === 0 ? "key" : "value") { 3575 case "key": { 3576 const newKey = mapper(keyToRow); 3577 parent.set(newKey, parent.get(keyToRow)); 3578 if (newKey !== keyToRow) parent.delete(keyToRow); 3579 break; 3580 } 3581 case "value": 3582 parent.set(keyToRow, mapper(parent.get(keyToRow))); 3583 break; 3584 } 3585 } 3586 return object; 3587 }; 3588 function traverse(tree, walker2, origin = []) { 3589 if (!tree) return; 3590 if (!isArray$2(tree)) { 3591 forEach(tree, (subtree, key) => traverse(subtree, walker2, [...origin, ...parsePath(key)])); 3592 return; 3593 } 3594 const [nodeValue, children] = tree; 3595 if (children) forEach(children, (child, key) => { 3596 traverse(child, walker2, [...origin, ...parsePath(key)]); 3597 }); 3598 walker2(nodeValue, origin); 3599 } 3600 function applyValueAnnotations(plain, annotations, superJson) { 3601 traverse(annotations, (type, path) => { 3602 plain = setDeep(plain, path, (v) => untransformValue(v, type, superJson)); 3603 }); 3604 return plain; 3605 } 3606 function applyReferentialEqualityAnnotations(plain, annotations) { 3607 function apply(identicalPaths, path) { 3608 const object = getDeep(plain, parsePath(path)); 3609 identicalPaths.map(parsePath).forEach((identicalObjectPath) => { 3610 plain = setDeep(plain, identicalObjectPath, () => object); 3611 }); 3612 } 3613 if (isArray$2(annotations)) { 3614 const [root, other] = annotations; 3615 root.forEach((identicalPath) => { 3616 plain = setDeep(plain, parsePath(identicalPath), () => plain); 3617 }); 3618 if (other) forEach(other, apply); 3619 } else forEach(annotations, apply); 3620 return plain; 3621 } 3622 var isDeep = (object, superJson) => isPlainObject$2(object) || isArray$2(object) || isMap(object) || isSet(object) || isInstanceOfRegisteredClass(object, superJson); 3623 function addIdentity(object, path, identities) { 3624 const existingSet = identities.get(object); 3625 if (existingSet) existingSet.push(path); 3626 else identities.set(object, [path]); 3627 } 3628 function generateReferentialEqualityAnnotations(identitites, dedupe) { 3629 const result = {}; 3630 let rootEqualityPaths = void 0; 3631 identitites.forEach((paths) => { 3632 if (paths.length <= 1) return; 3633 if (!dedupe) paths = paths.map((path) => path.map(String)).sort((a, b) => a.length - b.length); 3634 const [representativePath, ...identicalPaths] = paths; 3635 if (representativePath.length === 0) rootEqualityPaths = identicalPaths.map(stringifyPath); 3636 else result[stringifyPath(representativePath)] = identicalPaths.map(stringifyPath); 3637 }); 3638 if (rootEqualityPaths) if (isEmptyObject(result)) return [rootEqualityPaths]; 3639 else return [rootEqualityPaths, result]; 3640 else return isEmptyObject(result) ? void 0 : result; 3641 } 3642 var walker = (object, identities, superJson, dedupe, path = [], objectsInThisPath = [], seenObjects = /* @__PURE__ */ new Map()) => { 3643 const primitive = isPrimitive(object); 3644 if (!primitive) { 3645 addIdentity(object, path, identities); 3646 const seen = seenObjects.get(object); 3647 if (seen) return dedupe ? { transformedValue: null } : seen; 3648 } 3649 if (!isDeep(object, superJson)) { 3650 const transformed2 = transformValue(object, superJson); 3651 const result2 = transformed2 ? { 3652 transformedValue: transformed2.value, 3653 annotations: [transformed2.type] 3654 } : { transformedValue: object }; 3655 if (!primitive) seenObjects.set(object, result2); 3656 return result2; 3657 } 3658 if (includes(objectsInThisPath, object)) return { transformedValue: null }; 3659 const transformationResult = transformValue(object, superJson); 3660 const transformed = transformationResult?.value ?? object; 3661 const transformedValue = isArray$2(transformed) ? [] : {}; 3662 const innerAnnotations = {}; 3663 forEach(transformed, (value, index) => { 3664 if (index === "__proto__" || index === "constructor" || index === "prototype") throw new Error(`Detected property ${index}. This is a prototype pollution risk, please remove it from your object.`); 3665 const recursiveResult = walker(value, identities, superJson, dedupe, [...path, index], [...objectsInThisPath, object], seenObjects); 3666 transformedValue[index] = recursiveResult.transformedValue; 3667 if (isArray$2(recursiveResult.annotations)) innerAnnotations[index] = recursiveResult.annotations; 3668 else if (isPlainObject$2(recursiveResult.annotations)) forEach(recursiveResult.annotations, (tree, key) => { 3669 innerAnnotations[escapeKey(index) + "." + key] = tree; 3670 }); 3671 }); 3672 const result = isEmptyObject(innerAnnotations) ? { 3673 transformedValue, 3674 annotations: !!transformationResult ? [transformationResult.type] : void 0 3675 } : { 3676 transformedValue, 3677 annotations: !!transformationResult ? [transformationResult.type, innerAnnotations] : innerAnnotations 3678 }; 3679 if (!primitive) seenObjects.set(object, result); 3680 return result; 3681 }; 3682 function getType(payload) { 3683 return Object.prototype.toString.call(payload).slice(8, -1); 3684 } 3685 function isArray$1(payload) { 3686 return getType(payload) === "Array"; 3687 } 3688 function isPlainObject$1(payload) { 3689 if (getType(payload) !== "Object") return false; 3690 const prototype = Object.getPrototypeOf(payload); 3691 return !!prototype && prototype.constructor === Object && prototype === Object.prototype; 3692 } 3693 function isNull(payload) { 3694 return getType(payload) === "Null"; 3695 } 3696 function isOneOf(a, b, c, d, e) { 3697 return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value); 3698 } 3699 function isUndefined(payload) { 3700 return getType(payload) === "Undefined"; 3701 } 3702 isOneOf(isNull, isUndefined); 3703 function assignProp(carry, key, newVal, originalObject, includeNonenumerable) { 3704 const propType = {}.propertyIsEnumerable.call(originalObject, key) ? "enumerable" : "nonenumerable"; 3705 if (propType === "enumerable") carry[key] = newVal; 3706 if (includeNonenumerable && propType === "nonenumerable") Object.defineProperty(carry, key, { 3707 value: newVal, 3708 enumerable: false, 3709 writable: true, 3710 configurable: true 3711 }); 3712 } 3713 function copy(target2, options = {}) { 3714 if (isArray$1(target2)) return target2.map((item) => copy(item, options)); 3715 if (!isPlainObject$1(target2)) return target2; 3716 const props = Object.getOwnPropertyNames(target2); 3717 const symbols = Object.getOwnPropertySymbols(target2); 3718 return [...props, ...symbols].reduce((carry, key) => { 3719 if (isArray$1(options.props) && !options.props.includes(key)) return carry; 3720 const val = target2[key]; 3721 assignProp(carry, key, copy(val, options), target2, options.nonenumerable); 3722 return carry; 3723 }, {}); 3724 } 3725 var SuperJSON = class { 3726 /** 3727 * @param dedupeReferentialEqualities If true, SuperJSON will make sure only one instance of referentially equal objects are serialized and the rest are replaced with `null`. 3728 */ 3729 constructor({ dedupe = false } = {}) { 3730 this.classRegistry = new ClassRegistry(); 3731 this.symbolRegistry = new Registry((s) => s.description ?? ""); 3732 this.customTransformerRegistry = new CustomTransformerRegistry(); 3733 this.allowedErrorProps = []; 3734 this.dedupe = dedupe; 3735 } 3736 serialize(object) { 3737 const identities = /* @__PURE__ */ new Map(); 3738 const output = walker(object, identities, this, this.dedupe); 3739 const res = { json: output.transformedValue }; 3740 if (output.annotations) res.meta = { 3741 ...res.meta, 3742 values: output.annotations 3743 }; 3744 const equalityAnnotations = generateReferentialEqualityAnnotations(identities, this.dedupe); 3745 if (equalityAnnotations) res.meta = { 3746 ...res.meta, 3747 referentialEqualities: equalityAnnotations 3748 }; 3749 return res; 3750 } 3751 deserialize(payload) { 3752 const { json, meta } = payload; 3753 let result = copy(json); 3754 if (meta?.values) result = applyValueAnnotations(result, meta.values, this); 3755 if (meta?.referentialEqualities) result = applyReferentialEqualityAnnotations(result, meta.referentialEqualities); 3756 return result; 3757 } 3758 stringify(object) { 3759 return JSON.stringify(this.serialize(object)); 3760 } 3761 parse(string) { 3762 return this.deserialize(JSON.parse(string)); 3763 } 3764 registerClass(v, options) { 3765 this.classRegistry.register(v, options); 3766 } 3767 registerSymbol(v, identifier) { 3768 this.symbolRegistry.register(v, identifier); 3769 } 3770 registerCustom(transformer, name) { 3771 this.customTransformerRegistry.register({ 3772 name, 3773 ...transformer 3774 }); 3775 } 3776 allowErrorProps(...props) { 3777 this.allowedErrorProps.push(...props); 3778 } 3779 }; 3780 SuperJSON.defaultInstance = new SuperJSON(); 3781 SuperJSON.serialize = SuperJSON.defaultInstance.serialize.bind(SuperJSON.defaultInstance); 3782 SuperJSON.deserialize = SuperJSON.defaultInstance.deserialize.bind(SuperJSON.defaultInstance); 3783 SuperJSON.stringify = SuperJSON.defaultInstance.stringify.bind(SuperJSON.defaultInstance); 3784 SuperJSON.parse = SuperJSON.defaultInstance.parse.bind(SuperJSON.defaultInstance); 3785 SuperJSON.registerClass = SuperJSON.defaultInstance.registerClass.bind(SuperJSON.defaultInstance); 3786 SuperJSON.registerSymbol = SuperJSON.defaultInstance.registerSymbol.bind(SuperJSON.defaultInstance); 3787 SuperJSON.registerCustom = SuperJSON.defaultInstance.registerCustom.bind(SuperJSON.defaultInstance); 3788 SuperJSON.allowErrorProps = SuperJSON.defaultInstance.allowErrorProps.bind(SuperJSON.defaultInstance); 3789 SuperJSON.serialize; 3790 SuperJSON.deserialize; 3791 SuperJSON.stringify; 3792 SuperJSON.parse; 3793 SuperJSON.registerClass; 3794 SuperJSON.registerCustom; 3795 SuperJSON.registerSymbol; 3796 SuperJSON.allowErrorProps; 3797 target.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__ ??= []; 3798 target.__VUE_DEVTOOLS_KIT_RPC_CLIENT__ ??= null; 3799 target.__VUE_DEVTOOLS_KIT_RPC_SERVER__ ??= null; 3800 target.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__ ??= null; 3801 target.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__ ??= null; 3802 target.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__ ??= null; 3803 var MAX_SERIALIZED_SIZE = 2 * 1024 * 1024; 3804 export { 3805 addCustomCommand, 3806 addCustomTab, 3807 onDevToolsClientConnected, 3808 onDevToolsConnected, 3809 removeCustomCommand, 3810 setupDevToolsPlugin, 3811 setupDevToolsPlugin as setupDevtoolsPlugin 3812 }; 3813 //# sourceMappingURL=vitepress___@vue_devtools-api.js.map