"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __esm = (fn, res) => function __init() {
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
};
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target10, all) => {
for (var name in all)
__defProp(target10, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target10) => (target10 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target10, "default", { value: mod, enumerable: true }) : target10,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// ../../node_modules/.pnpm/tsup@8.0.2_postcss@8.4.38_typescript@5.4.3/node_modules/tsup/assets/cjs_shims.js
var init_cjs_shims = __esm({
"../../node_modules/.pnpm/tsup@8.0.2_postcss@8.4.38_typescript@5.4.3/node_modules/tsup/assets/cjs_shims.js"() {
"use strict";
}
});
// ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js
var require_speakingurl = __commonJS({
"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(exports2, module2) {
"use strict";
init_cjs_shims();
(function(root) {
"use strict";
var charMap = {
// latin
"\xC0": "A",
"\xC1": "A",
"\xC2": "A",
"\xC3": "A",
"\xC4": "Ae",
"\xC5": "A",
"\xC6": "AE",
"\xC7": "C",
"\xC8": "E",
"\xC9": "E",
"\xCA": "E",
"\xCB": "E",
"\xCC": "I",
"\xCD": "I",
"\xCE": "I",
"\xCF": "I",
"\xD0": "D",
"\xD1": "N",
"\xD2": "O",
"\xD3": "O",
"\xD4": "O",
"\xD5": "O",
"\xD6": "Oe",
"\u0150": "O",
"\xD8": "O",
"\xD9": "U",
"\xDA": "U",
"\xDB": "U",
"\xDC": "Ue",
"\u0170": "U",
"\xDD": "Y",
"\xDE": "TH",
"\xDF": "ss",
"\xE0": "a",
"\xE1": "a",
"\xE2": "a",
"\xE3": "a",
"\xE4": "ae",
"\xE5": "a",
"\xE6": "ae",
"\xE7": "c",
"\xE8": "e",
"\xE9": "e",
"\xEA": "e",
"\xEB": "e",
"\xEC": "i",
"\xED": "i",
"\xEE": "i",
"\xEF": "i",
"\xF0": "d",
"\xF1": "n",
"\xF2": "o",
"\xF3": "o",
"\xF4": "o",
"\xF5": "o",
"\xF6": "oe",
"\u0151": "o",
"\xF8": "o",
"\xF9": "u",
"\xFA": "u",
"\xFB": "u",
"\xFC": "ue",
"\u0171": "u",
"\xFD": "y",
"\xFE": "th",
"\xFF": "y",
"\u1E9E": "SS",
// language specific
// Arabic
"\u0627": "a",
"\u0623": "a",
"\u0625": "i",
"\u0622": "aa",
"\u0624": "u",
"\u0626": "e",
"\u0621": "a",
"\u0628": "b",
"\u062A": "t",
"\u062B": "th",
"\u062C": "j",
"\u062D": "h",
"\u062E": "kh",
"\u062F": "d",
"\u0630": "th",
"\u0631": "r",
"\u0632": "z",
"\u0633": "s",
"\u0634": "sh",
"\u0635": "s",
"\u0636": "dh",
"\u0637": "t",
"\u0638": "z",
"\u0639": "a",
"\u063A": "gh",
"\u0641": "f",
"\u0642": "q",
"\u0643": "k",
"\u0644": "l",
"\u0645": "m",
"\u0646": "n",
"\u0647": "h",
"\u0648": "w",
"\u064A": "y",
"\u0649": "a",
"\u0629": "h",
"\uFEFB": "la",
"\uFEF7": "laa",
"\uFEF9": "lai",
"\uFEF5": "laa",
// Persian additional characters than Arabic
"\u06AF": "g",
"\u0686": "ch",
"\u067E": "p",
"\u0698": "zh",
"\u06A9": "k",
"\u06CC": "y",
// Arabic diactrics
"\u064E": "a",
"\u064B": "an",
"\u0650": "e",
"\u064D": "en",
"\u064F": "u",
"\u064C": "on",
"\u0652": "",
// Arabic numbers
"\u0660": "0",
"\u0661": "1",
"\u0662": "2",
"\u0663": "3",
"\u0664": "4",
"\u0665": "5",
"\u0666": "6",
"\u0667": "7",
"\u0668": "8",
"\u0669": "9",
// Persian numbers
"\u06F0": "0",
"\u06F1": "1",
"\u06F2": "2",
"\u06F3": "3",
"\u06F4": "4",
"\u06F5": "5",
"\u06F6": "6",
"\u06F7": "7",
"\u06F8": "8",
"\u06F9": "9",
// Burmese consonants
"\u1000": "k",
"\u1001": "kh",
"\u1002": "g",
"\u1003": "ga",
"\u1004": "ng",
"\u1005": "s",
"\u1006": "sa",
"\u1007": "z",
"\u1005\u103B": "za",
"\u100A": "ny",
"\u100B": "t",
"\u100C": "ta",
"\u100D": "d",
"\u100E": "da",
"\u100F": "na",
"\u1010": "t",
"\u1011": "ta",
"\u1012": "d",
"\u1013": "da",
"\u1014": "n",
"\u1015": "p",
"\u1016": "pa",
"\u1017": "b",
"\u1018": "ba",
"\u1019": "m",
"\u101A": "y",
"\u101B": "ya",
"\u101C": "l",
"\u101D": "w",
"\u101E": "th",
"\u101F": "h",
"\u1020": "la",
"\u1021": "a",
// consonant character combos
"\u103C": "y",
"\u103B": "ya",
"\u103D": "w",
"\u103C\u103D": "yw",
"\u103B\u103D": "ywa",
"\u103E": "h",
// independent vowels
"\u1027": "e",
"\u104F": "-e",
"\u1023": "i",
"\u1024": "-i",
"\u1009": "u",
"\u1026": "-u",
"\u1029": "aw",
"\u101E\u103C\u1031\u102C": "aw",
"\u102A": "aw",
// numbers
"\u1040": "0",
"\u1041": "1",
"\u1042": "2",
"\u1043": "3",
"\u1044": "4",
"\u1045": "5",
"\u1046": "6",
"\u1047": "7",
"\u1048": "8",
"\u1049": "9",
// virama and tone marks which are silent in transliteration
"\u1039": "",
"\u1037": "",
"\u1038": "",
// Czech
"\u010D": "c",
"\u010F": "d",
"\u011B": "e",
"\u0148": "n",
"\u0159": "r",
"\u0161": "s",
"\u0165": "t",
"\u016F": "u",
"\u017E": "z",
"\u010C": "C",
"\u010E": "D",
"\u011A": "E",
"\u0147": "N",
"\u0158": "R",
"\u0160": "S",
"\u0164": "T",
"\u016E": "U",
"\u017D": "Z",
// Dhivehi
"\u0780": "h",
"\u0781": "sh",
"\u0782": "n",
"\u0783": "r",
"\u0784": "b",
"\u0785": "lh",
"\u0786": "k",
"\u0787": "a",
"\u0788": "v",
"\u0789": "m",
"\u078A": "f",
"\u078B": "dh",
"\u078C": "th",
"\u078D": "l",
"\u078E": "g",
"\u078F": "gn",
"\u0790": "s",
"\u0791": "d",
"\u0792": "z",
"\u0793": "t",
"\u0794": "y",
"\u0795": "p",
"\u0796": "j",
"\u0797": "ch",
"\u0798": "tt",
"\u0799": "hh",
"\u079A": "kh",
"\u079B": "th",
"\u079C": "z",
"\u079D": "sh",
"\u079E": "s",
"\u079F": "d",
"\u07A0": "t",
"\u07A1": "z",
"\u07A2": "a",
"\u07A3": "gh",
"\u07A4": "q",
"\u07A5": "w",
"\u07A6": "a",
"\u07A7": "aa",
"\u07A8": "i",
"\u07A9": "ee",
"\u07AA": "u",
"\u07AB": "oo",
"\u07AC": "e",
"\u07AD": "ey",
"\u07AE": "o",
"\u07AF": "oa",
"\u07B0": "",
// Georgian https://en.wikipedia.org/wiki/Romanization_of_Georgian
// National system (2002)
"\u10D0": "a",
"\u10D1": "b",
"\u10D2": "g",
"\u10D3": "d",
"\u10D4": "e",
"\u10D5": "v",
"\u10D6": "z",
"\u10D7": "t",
"\u10D8": "i",
"\u10D9": "k",
"\u10DA": "l",
"\u10DB": "m",
"\u10DC": "n",
"\u10DD": "o",
"\u10DE": "p",
"\u10DF": "zh",
"\u10E0": "r",
"\u10E1": "s",
"\u10E2": "t",
"\u10E3": "u",
"\u10E4": "p",
"\u10E5": "k",
"\u10E6": "gh",
"\u10E7": "q",
"\u10E8": "sh",
"\u10E9": "ch",
"\u10EA": "ts",
"\u10EB": "dz",
"\u10EC": "ts",
"\u10ED": "ch",
"\u10EE": "kh",
"\u10EF": "j",
"\u10F0": "h",
// Greek
"\u03B1": "a",
"\u03B2": "v",
"\u03B3": "g",
"\u03B4": "d",
"\u03B5": "e",
"\u03B6": "z",
"\u03B7": "i",
"\u03B8": "th",
"\u03B9": "i",
"\u03BA": "k",
"\u03BB": "l",
"\u03BC": "m",
"\u03BD": "n",
"\u03BE": "ks",
"\u03BF": "o",
"\u03C0": "p",
"\u03C1": "r",
"\u03C3": "s",
"\u03C4": "t",
"\u03C5": "y",
"\u03C6": "f",
"\u03C7": "x",
"\u03C8": "ps",
"\u03C9": "o",
"\u03AC": "a",
"\u03AD": "e",
"\u03AF": "i",
"\u03CC": "o",
"\u03CD": "y",
"\u03AE": "i",
"\u03CE": "o",
"\u03C2": "s",
"\u03CA": "i",
"\u03B0": "y",
"\u03CB": "y",
"\u0390": "i",
"\u0391": "A",
"\u0392": "B",
"\u0393": "G",
"\u0394": "D",
"\u0395": "E",
"\u0396": "Z",
"\u0397": "I",
"\u0398": "TH",
"\u0399": "I",
"\u039A": "K",
"\u039B": "L",
"\u039C": "M",
"\u039D": "N",
"\u039E": "KS",
"\u039F": "O",
"\u03A0": "P",
"\u03A1": "R",
"\u03A3": "S",
"\u03A4": "T",
"\u03A5": "Y",
"\u03A6": "F",
"\u03A7": "X",
"\u03A8": "PS",
"\u03A9": "O",
"\u0386": "A",
"\u0388": "E",
"\u038A": "I",
"\u038C": "O",
"\u038E": "Y",
"\u0389": "I",
"\u038F": "O",
"\u03AA": "I",
"\u03AB": "Y",
// Latvian
"\u0101": "a",
// 'č': 'c', // duplicate
"\u0113": "e",
"\u0123": "g",
"\u012B": "i",
"\u0137": "k",
"\u013C": "l",
"\u0146": "n",
// 'š': 's', // duplicate
"\u016B": "u",
// 'ž': 'z', // duplicate
"\u0100": "A",
// 'Č': 'C', // duplicate
"\u0112": "E",
"\u0122": "G",
"\u012A": "I",
"\u0136": "k",
"\u013B": "L",
"\u0145": "N",
// 'Š': 'S', // duplicate
"\u016A": "U",
// 'Ž': 'Z', // duplicate
// Macedonian
"\u040C": "Kj",
"\u045C": "kj",
"\u0409": "Lj",
"\u0459": "lj",
"\u040A": "Nj",
"\u045A": "nj",
"\u0422\u0441": "Ts",
"\u0442\u0441": "ts",
// Polish
"\u0105": "a",
"\u0107": "c",
"\u0119": "e",
"\u0142": "l",
"\u0144": "n",
// 'ó': 'o', // duplicate
"\u015B": "s",
"\u017A": "z",
"\u017C": "z",
"\u0104": "A",
"\u0106": "C",
"\u0118": "E",
"\u0141": "L",
"\u0143": "N",
"\u015A": "S",
"\u0179": "Z",
"\u017B": "Z",
// Ukranian
"\u0404": "Ye",
"\u0406": "I",
"\u0407": "Yi",
"\u0490": "G",
"\u0454": "ye",
"\u0456": "i",
"\u0457": "yi",
"\u0491": "g",
// Romanian
"\u0103": "a",
"\u0102": "A",
"\u0219": "s",
"\u0218": "S",
// 'ş': 's', // duplicate
// 'Ş': 'S', // duplicate
"\u021B": "t",
"\u021A": "T",
"\u0163": "t",
"\u0162": "T",
// Russian https://en.wikipedia.org/wiki/Romanization_of_Russian
// ICAO
"\u0430": "a",
"\u0431": "b",
"\u0432": "v",
"\u0433": "g",
"\u0434": "d",
"\u0435": "e",
"\u0451": "yo",
"\u0436": "zh",
"\u0437": "z",
"\u0438": "i",
"\u0439": "i",
"\u043A": "k",
"\u043B": "l",
"\u043C": "m",
"\u043D": "n",
"\u043E": "o",
"\u043F": "p",
"\u0440": "r",
"\u0441": "s",
"\u0442": "t",
"\u0443": "u",
"\u0444": "f",
"\u0445": "kh",
"\u0446": "c",
"\u0447": "ch",
"\u0448": "sh",
"\u0449": "sh",
"\u044A": "",
"\u044B": "y",
"\u044C": "",
"\u044D": "e",
"\u044E": "yu",
"\u044F": "ya",
"\u0410": "A",
"\u0411": "B",
"\u0412": "V",
"\u0413": "G",
"\u0414": "D",
"\u0415": "E",
"\u0401": "Yo",
"\u0416": "Zh",
"\u0417": "Z",
"\u0418": "I",
"\u0419": "I",
"\u041A": "K",
"\u041B": "L",
"\u041C": "M",
"\u041D": "N",
"\u041E": "O",
"\u041F": "P",
"\u0420": "R",
"\u0421": "S",
"\u0422": "T",
"\u0423": "U",
"\u0424": "F",
"\u0425": "Kh",
"\u0426": "C",
"\u0427": "Ch",
"\u0428": "Sh",
"\u0429": "Sh",
"\u042A": "",
"\u042B": "Y",
"\u042C": "",
"\u042D": "E",
"\u042E": "Yu",
"\u042F": "Ya",
// Serbian
"\u0452": "dj",
"\u0458": "j",
// 'љ': 'lj', // duplicate
// 'њ': 'nj', // duplicate
"\u045B": "c",
"\u045F": "dz",
"\u0402": "Dj",
"\u0408": "j",
// 'Љ': 'Lj', // duplicate
// 'Њ': 'Nj', // duplicate
"\u040B": "C",
"\u040F": "Dz",
// Slovak
"\u013E": "l",
"\u013A": "l",
"\u0155": "r",
"\u013D": "L",
"\u0139": "L",
"\u0154": "R",
// Turkish
"\u015F": "s",
"\u015E": "S",
"\u0131": "i",
"\u0130": "I",
// 'ç': 'c', // duplicate
// 'Ç': 'C', // duplicate
// 'ü': 'u', // duplicate, see langCharMap
// 'Ü': 'U', // duplicate, see langCharMap
// 'ö': 'o', // duplicate, see langCharMap
// 'Ö': 'O', // duplicate, see langCharMap
"\u011F": "g",
"\u011E": "G",
// Vietnamese
"\u1EA3": "a",
"\u1EA2": "A",
"\u1EB3": "a",
"\u1EB2": "A",
"\u1EA9": "a",
"\u1EA8": "A",
"\u0111": "d",
"\u0110": "D",
"\u1EB9": "e",
"\u1EB8": "E",
"\u1EBD": "e",
"\u1EBC": "E",
"\u1EBB": "e",
"\u1EBA": "E",
"\u1EBF": "e",
"\u1EBE": "E",
"\u1EC1": "e",
"\u1EC0": "E",
"\u1EC7": "e",
"\u1EC6": "E",
"\u1EC5": "e",
"\u1EC4": "E",
"\u1EC3": "e",
"\u1EC2": "E",
"\u1ECF": "o",
"\u1ECD": "o",
"\u1ECC": "o",
"\u1ED1": "o",
"\u1ED0": "O",
"\u1ED3": "o",
"\u1ED2": "O",
"\u1ED5": "o",
"\u1ED4": "O",
"\u1ED9": "o",
"\u1ED8": "O",
"\u1ED7": "o",
"\u1ED6": "O",
"\u01A1": "o",
"\u01A0": "O",
"\u1EDB": "o",
"\u1EDA": "O",
"\u1EDD": "o",
"\u1EDC": "O",
"\u1EE3": "o",
"\u1EE2": "O",
"\u1EE1": "o",
"\u1EE0": "O",
"\u1EDE": "o",
"\u1EDF": "o",
"\u1ECB": "i",
"\u1ECA": "I",
"\u0129": "i",
"\u0128": "I",
"\u1EC9": "i",
"\u1EC8": "i",
"\u1EE7": "u",
"\u1EE6": "U",
"\u1EE5": "u",
"\u1EE4": "U",
"\u0169": "u",
"\u0168": "U",
"\u01B0": "u",
"\u01AF": "U",
"\u1EE9": "u",
"\u1EE8": "U",
"\u1EEB": "u",
"\u1EEA": "U",
"\u1EF1": "u",
"\u1EF0": "U",
"\u1EEF": "u",
"\u1EEE": "U",
"\u1EED": "u",
"\u1EEC": "\u01B0",
"\u1EF7": "y",
"\u1EF6": "y",
"\u1EF3": "y",
"\u1EF2": "Y",
"\u1EF5": "y",
"\u1EF4": "Y",
"\u1EF9": "y",
"\u1EF8": "Y",
"\u1EA1": "a",
"\u1EA0": "A",
"\u1EA5": "a",
"\u1EA4": "A",
"\u1EA7": "a",
"\u1EA6": "A",
"\u1EAD": "a",
"\u1EAC": "A",
"\u1EAB": "a",
"\u1EAA": "A",
// 'ă': 'a', // duplicate
// 'Ă': 'A', // duplicate
"\u1EAF": "a",
"\u1EAE": "A",
"\u1EB1": "a",
"\u1EB0": "A",
"\u1EB7": "a",
"\u1EB6": "A",
"\u1EB5": "a",
"\u1EB4": "A",
"\u24EA": "0",
"\u2460": "1",
"\u2461": "2",
"\u2462": "3",
"\u2463": "4",
"\u2464": "5",
"\u2465": "6",
"\u2466": "7",
"\u2467": "8",
"\u2468": "9",
"\u2469": "10",
"\u246A": "11",
"\u246B": "12",
"\u246C": "13",
"\u246D": "14",
"\u246E": "15",
"\u246F": "16",
"\u2470": "17",
"\u2471": "18",
"\u2472": "18",
"\u2473": "18",
"\u24F5": "1",
"\u24F6": "2",
"\u24F7": "3",
"\u24F8": "4",
"\u24F9": "5",
"\u24FA": "6",
"\u24FB": "7",
"\u24FC": "8",
"\u24FD": "9",
"\u24FE": "10",
"\u24FF": "0",
"\u24EB": "11",
"\u24EC": "12",
"\u24ED": "13",
"\u24EE": "14",
"\u24EF": "15",
"\u24F0": "16",
"\u24F1": "17",
"\u24F2": "18",
"\u24F3": "19",
"\u24F4": "20",
"\u24B6": "A",
"\u24B7": "B",
"\u24B8": "C",
"\u24B9": "D",
"\u24BA": "E",
"\u24BB": "F",
"\u24BC": "G",
"\u24BD": "H",
"\u24BE": "I",
"\u24BF": "J",
"\u24C0": "K",
"\u24C1": "L",
"\u24C2": "M",
"\u24C3": "N",
"\u24C4": "O",
"\u24C5": "P",
"\u24C6": "Q",
"\u24C7": "R",
"\u24C8": "S",
"\u24C9": "T",
"\u24CA": "U",
"\u24CB": "V",
"\u24CC": "W",
"\u24CD": "X",
"\u24CE": "Y",
"\u24CF": "Z",
"\u24D0": "a",
"\u24D1": "b",
"\u24D2": "c",
"\u24D3": "d",
"\u24D4": "e",
"\u24D5": "f",
"\u24D6": "g",
"\u24D7": "h",
"\u24D8": "i",
"\u24D9": "j",
"\u24DA": "k",
"\u24DB": "l",
"\u24DC": "m",
"\u24DD": "n",
"\u24DE": "o",
"\u24DF": "p",
"\u24E0": "q",
"\u24E1": "r",
"\u24E2": "s",
"\u24E3": "t",
"\u24E4": "u",
"\u24E6": "v",
"\u24E5": "w",
"\u24E7": "x",
"\u24E8": "y",
"\u24E9": "z",
// symbols
"\u201C": '"',
"\u201D": '"',
"\u2018": "'",
"\u2019": "'",
"\u2202": "d",
"\u0192": "f",
"\u2122": "(TM)",
"\xA9": "(C)",
"\u0153": "oe",
"\u0152": "OE",
"\xAE": "(R)",
"\u2020": "+",
"\u2120": "(SM)",
"\u2026": "...",
"\u02DA": "o",
"\xBA": "o",
"\xAA": "a",
"\u2022": "*",
"\u104A": ",",
"\u104B": ".",
// currency
"$": "USD",
"\u20AC": "EUR",
"\u20A2": "BRN",
"\u20A3": "FRF",
"\xA3": "GBP",
"\u20A4": "ITL",
"\u20A6": "NGN",
"\u20A7": "ESP",
"\u20A9": "KRW",
"\u20AA": "ILS",
"\u20AB": "VND",
"\u20AD": "LAK",
"\u20AE": "MNT",
"\u20AF": "GRD",
"\u20B1": "ARS",
"\u20B2": "PYG",
"\u20B3": "ARA",
"\u20B4": "UAH",
"\u20B5": "GHS",
"\xA2": "cent",
"\xA5": "CNY",
"\u5143": "CNY",
"\u5186": "YEN",
"\uFDFC": "IRR",
"\u20A0": "EWE",
"\u0E3F": "THB",
"\u20A8": "INR",
"\u20B9": "INR",
"\u20B0": "PF",
"\u20BA": "TRY",
"\u060B": "AFN",
"\u20BC": "AZN",
"\u043B\u0432": "BGN",
"\u17DB": "KHR",
"\u20A1": "CRC",
"\u20B8": "KZT",
"\u0434\u0435\u043D": "MKD",
"z\u0142": "PLN",
"\u20BD": "RUB",
"\u20BE": "GEL"
};
var lookAheadCharArray = [
// burmese
"\u103A",
// Dhivehi
"\u07B0"
];
var diatricMap = {
// Burmese
// dependent vowels
"\u102C": "a",
"\u102B": "a",
"\u1031": "e",
"\u1032": "e",
"\u102D": "i",
"\u102E": "i",
"\u102D\u102F": "o",
"\u102F": "u",
"\u1030": "u",
"\u1031\u102B\u1004\u103A": "aung",
"\u1031\u102C": "aw",
"\u1031\u102C\u103A": "aw",
"\u1031\u102B": "aw",
"\u1031\u102B\u103A": "aw",
"\u103A": "\u103A",
// this is special case but the character will be converted to latin in the code
"\u1000\u103A": "et",
"\u102D\u102F\u1000\u103A": "aik",
"\u1031\u102C\u1000\u103A": "auk",
"\u1004\u103A": "in",
"\u102D\u102F\u1004\u103A": "aing",
"\u1031\u102C\u1004\u103A": "aung",
"\u1005\u103A": "it",
"\u100A\u103A": "i",
"\u1010\u103A": "at",
"\u102D\u1010\u103A": "eik",
"\u102F\u1010\u103A": "ok",
"\u103D\u1010\u103A": "ut",
"\u1031\u1010\u103A": "it",
"\u1012\u103A": "d",
"\u102D\u102F\u1012\u103A": "ok",
"\u102F\u1012\u103A": "ait",
"\u1014\u103A": "an",
"\u102C\u1014\u103A": "an",
"\u102D\u1014\u103A": "ein",
"\u102F\u1014\u103A": "on",
"\u103D\u1014\u103A": "un",
"\u1015\u103A": "at",
"\u102D\u1015\u103A": "eik",
"\u102F\u1015\u103A": "ok",
"\u103D\u1015\u103A": "ut",
"\u1014\u103A\u102F\u1015\u103A": "nub",
"\u1019\u103A": "an",
"\u102D\u1019\u103A": "ein",
"\u102F\u1019\u103A": "on",
"\u103D\u1019\u103A": "un",
"\u101A\u103A": "e",
"\u102D\u102F\u101C\u103A": "ol",
"\u1009\u103A": "in",
"\u1036": "an",
"\u102D\u1036": "ein",
"\u102F\u1036": "on",
// Dhivehi
"\u07A6\u0787\u07B0": "ah",
"\u07A6\u0781\u07B0": "ah"
};
var langCharMap = {
"en": {},
// default language
"az": {
// Azerbaijani
"\xE7": "c",
"\u0259": "e",
"\u011F": "g",
"\u0131": "i",
"\xF6": "o",
"\u015F": "s",
"\xFC": "u",
"\xC7": "C",
"\u018F": "E",
"\u011E": "G",
"\u0130": "I",
"\xD6": "O",
"\u015E": "S",
"\xDC": "U"
},
"cs": {
// Czech
"\u010D": "c",
"\u010F": "d",
"\u011B": "e",
"\u0148": "n",
"\u0159": "r",
"\u0161": "s",
"\u0165": "t",
"\u016F": "u",
"\u017E": "z",
"\u010C": "C",
"\u010E": "D",
"\u011A": "E",
"\u0147": "N",
"\u0158": "R",
"\u0160": "S",
"\u0164": "T",
"\u016E": "U",
"\u017D": "Z"
},
"fi": {
// Finnish
// 'å': 'a', duplicate see charMap/latin
// 'Å': 'A', duplicate see charMap/latin
"\xE4": "a",
// ok
"\xC4": "A",
// ok
"\xF6": "o",
// ok
"\xD6": "O"
// ok
},
"hu": {
// Hungarian
"\xE4": "a",
// ok
"\xC4": "A",
// ok
// 'á': 'a', duplicate see charMap/latin
// 'Á': 'A', duplicate see charMap/latin
"\xF6": "o",
// ok
"\xD6": "O",
// ok
// 'ő': 'o', duplicate see charMap/latin
// 'Ő': 'O', duplicate see charMap/latin
"\xFC": "u",
"\xDC": "U",
"\u0171": "u",
"\u0170": "U"
},
"lt": {
// Lithuanian
"\u0105": "a",
"\u010D": "c",
"\u0119": "e",
"\u0117": "e",
"\u012F": "i",
"\u0161": "s",
"\u0173": "u",
"\u016B": "u",
"\u017E": "z",
"\u0104": "A",
"\u010C": "C",
"\u0118": "E",
"\u0116": "E",
"\u012E": "I",
"\u0160": "S",
"\u0172": "U",
"\u016A": "U"
},
"lv": {
// Latvian
"\u0101": "a",
"\u010D": "c",
"\u0113": "e",
"\u0123": "g",
"\u012B": "i",
"\u0137": "k",
"\u013C": "l",
"\u0146": "n",
"\u0161": "s",
"\u016B": "u",
"\u017E": "z",
"\u0100": "A",
"\u010C": "C",
"\u0112": "E",
"\u0122": "G",
"\u012A": "i",
"\u0136": "k",
"\u013B": "L",
"\u0145": "N",
"\u0160": "S",
"\u016A": "u",
"\u017D": "Z"
},
"pl": {
// Polish
"\u0105": "a",
"\u0107": "c",
"\u0119": "e",
"\u0142": "l",
"\u0144": "n",
"\xF3": "o",
"\u015B": "s",
"\u017A": "z",
"\u017C": "z",
"\u0104": "A",
"\u0106": "C",
"\u0118": "e",
"\u0141": "L",
"\u0143": "N",
"\xD3": "O",
"\u015A": "S",
"\u0179": "Z",
"\u017B": "Z"
},
"sv": {
// Swedish
// 'å': 'a', duplicate see charMap/latin
// 'Å': 'A', duplicate see charMap/latin
"\xE4": "a",
// ok
"\xC4": "A",
// ok
"\xF6": "o",
// ok
"\xD6": "O"
// ok
},
"sk": {
// Slovak
"\xE4": "a",
"\xC4": "A"
},
"sr": {
// Serbian
"\u0459": "lj",
"\u045A": "nj",
"\u0409": "Lj",
"\u040A": "Nj",
"\u0111": "dj",
"\u0110": "Dj"
},
"tr": {
// Turkish
"\xDC": "U",
"\xD6": "O",
"\xFC": "u",
"\xF6": "o"
}
};
var symbolMap = {
"ar": {
"\u2206": "delta",
"\u221E": "la-nihaya",
"\u2665": "hob",
"&": "wa",
"|": "aw",
"<": "aqal-men",
">": "akbar-men",
"\u2211": "majmou",
"\xA4": "omla"
},
"az": {},
"ca": {
"\u2206": "delta",
"\u221E": "infinit",
"\u2665": "amor",
"&": "i",
"|": "o",
"<": "menys que",
">": "mes que",
"\u2211": "suma dels",
"\xA4": "moneda"
},
"cs": {
"\u2206": "delta",
"\u221E": "nekonecno",
"\u2665": "laska",
"&": "a",
"|": "nebo",
"<": "mensi nez",
">": "vetsi nez",
"\u2211": "soucet",
"\xA4": "mena"
},
"de": {
"\u2206": "delta",
"\u221E": "unendlich",
"\u2665": "Liebe",
"&": "und",
"|": "oder",
"<": "kleiner als",
">": "groesser als",
"\u2211": "Summe von",
"\xA4": "Waehrung"
},
"dv": {
"\u2206": "delta",
"\u221E": "kolunulaa",
"\u2665": "loabi",
"&": "aai",
"|": "noonee",
"<": "ah vure kuda",
">": "ah vure bodu",
"\u2211": "jumula",
"\xA4": "faisaa"
},
"en": {
"\u2206": "delta",
"\u221E": "infinity",
"\u2665": "love",
"&": "and",
"|": "or",
"<": "less than",
">": "greater than",
"\u2211": "sum",
"\xA4": "currency"
},
"es": {
"\u2206": "delta",
"\u221E": "infinito",
"\u2665": "amor",
"&": "y",
"|": "u",
"<": "menos que",
">": "mas que",
"\u2211": "suma de los",
"\xA4": "moneda"
},
"fa": {
"\u2206": "delta",
"\u221E": "bi-nahayat",
"\u2665": "eshgh",
"&": "va",
"|": "ya",
"<": "kamtar-az",
">": "bishtar-az",
"\u2211": "majmooe",
"\xA4": "vahed"
},
"fi": {
"\u2206": "delta",
"\u221E": "aarettomyys",
"\u2665": "rakkaus",
"&": "ja",
"|": "tai",
"<": "pienempi kuin",
">": "suurempi kuin",
"\u2211": "summa",
"\xA4": "valuutta"
},
"fr": {
"\u2206": "delta",
"\u221E": "infiniment",
"\u2665": "Amour",
"&": "et",
"|": "ou",
"<": "moins que",
">": "superieure a",
"\u2211": "somme des",
"\xA4": "monnaie"
},
"ge": {
"\u2206": "delta",
"\u221E": "usasruloba",
"\u2665": "siqvaruli",
"&": "da",
"|": "an",
"<": "naklebi",
">": "meti",
"\u2211": "jami",
"\xA4": "valuta"
},
"gr": {},
"hu": {
"\u2206": "delta",
"\u221E": "vegtelen",
"\u2665": "szerelem",
"&": "es",
"|": "vagy",
"<": "kisebb mint",
">": "nagyobb mint",
"\u2211": "szumma",
"\xA4": "penznem"
},
"it": {
"\u2206": "delta",
"\u221E": "infinito",
"\u2665": "amore",
"&": "e",
"|": "o",
"<": "minore di",
">": "maggiore di",
"\u2211": "somma",
"\xA4": "moneta"
},
"lt": {
"\u2206": "delta",
"\u221E": "begalybe",
"\u2665": "meile",
"&": "ir",
"|": "ar",
"<": "maziau nei",
">": "daugiau nei",
"\u2211": "suma",
"\xA4": "valiuta"
},
"lv": {
"\u2206": "delta",
"\u221E": "bezgaliba",
"\u2665": "milestiba",
"&": "un",
"|": "vai",
"<": "mazak neka",
">": "lielaks neka",
"\u2211": "summa",
"\xA4": "valuta"
},
"my": {
"\u2206": "kwahkhyaet",
"\u221E": "asaonasme",
"\u2665": "akhyait",
"&": "nhin",
"|": "tho",
"<": "ngethaw",
">": "kyithaw",
"\u2211": "paungld",
"\xA4": "ngwekye"
},
"mk": {},
"nl": {
"\u2206": "delta",
"\u221E": "oneindig",
"\u2665": "liefde",
"&": "en",
"|": "of",
"<": "kleiner dan",
">": "groter dan",
"\u2211": "som",
"\xA4": "valuta"
},
"pl": {
"\u2206": "delta",
"\u221E": "nieskonczonosc",
"\u2665": "milosc",
"&": "i",
"|": "lub",
"<": "mniejsze niz",
">": "wieksze niz",
"\u2211": "suma",
"\xA4": "waluta"
},
"pt": {
"\u2206": "delta",
"\u221E": "infinito",
"\u2665": "amor",
"&": "e",
"|": "ou",
"<": "menor que",
">": "maior que",
"\u2211": "soma",
"\xA4": "moeda"
},
"ro": {
"\u2206": "delta",
"\u221E": "infinit",
"\u2665": "dragoste",
"&": "si",
"|": "sau",
"<": "mai mic ca",
">": "mai mare ca",
"\u2211": "suma",
"\xA4": "valuta"
},
"ru": {
"\u2206": "delta",
"\u221E": "beskonechno",
"\u2665": "lubov",
"&": "i",
"|": "ili",
"<": "menshe",
">": "bolshe",
"\u2211": "summa",
"\xA4": "valjuta"
},
"sk": {
"\u2206": "delta",
"\u221E": "nekonecno",
"\u2665": "laska",
"&": "a",
"|": "alebo",
"<": "menej ako",
">": "viac ako",
"\u2211": "sucet",
"\xA4": "mena"
},
"sr": {},
"tr": {
"\u2206": "delta",
"\u221E": "sonsuzluk",
"\u2665": "ask",
"&": "ve",
"|": "veya",
"<": "kucuktur",
">": "buyuktur",
"\u2211": "toplam",
"\xA4": "para birimi"
},
"uk": {
"\u2206": "delta",
"\u221E": "bezkinechnist",
"\u2665": "lubov",
"&": "i",
"|": "abo",
"<": "menshe",
">": "bilshe",
"\u2211": "suma",
"\xA4": "valjuta"
},
"vn": {
"\u2206": "delta",
"\u221E": "vo cuc",
"\u2665": "yeu",
"&": "va",
"|": "hoac",
"<": "nho hon",
">": "lon hon",
"\u2211": "tong",
"\xA4": "tien te"
}
};
var uricChars = [";", "?", ":", "@", "&", "=", "+", "$", ",", "/"].join("");
var uricNoSlashChars = [";", "?", ":", "@", "&", "=", "+", "$", ","].join("");
var markChars = [".", "!", "~", "*", "'", "(", ")"].join("");
var getSlug = function getSlug2(input, opts) {
var separator = "-";
var result = "";
var diatricString = "";
var convertSymbols = true;
var customReplacements = {};
var maintainCase;
var titleCase;
var truncate;
var uricFlag;
var uricNoSlashFlag;
var markFlag;
var symbol;
var langChar;
var lucky;
var i;
var ch;
var l;
var lastCharWasSymbol;
var lastCharWasDiatric;
var allowedChars = "";
if (typeof input !== "string") {
return "";
}
if (typeof opts === "string") {
separator = opts;
}
symbol = symbolMap.en;
langChar = langCharMap.en;
if (typeof opts === "object") {
maintainCase = opts.maintainCase || false;
customReplacements = opts.custom && typeof opts.custom === "object" ? opts.custom : customReplacements;
truncate = +opts.truncate > 1 && opts.truncate || false;
uricFlag = opts.uric || false;
uricNoSlashFlag = opts.uricNoSlash || false;
markFlag = opts.mark || false;
convertSymbols = opts.symbols === false || opts.lang === false ? false : true;
separator = opts.separator || separator;
if (uricFlag) {
allowedChars += uricChars;
}
if (uricNoSlashFlag) {
allowedChars += uricNoSlashChars;
}
if (markFlag) {
allowedChars += markChars;
}
symbol = opts.lang && symbolMap[opts.lang] && convertSymbols ? symbolMap[opts.lang] : convertSymbols ? symbolMap.en : {};
langChar = opts.lang && langCharMap[opts.lang] ? langCharMap[opts.lang] : opts.lang === false || opts.lang === true ? {} : langCharMap.en;
if (opts.titleCase && typeof opts.titleCase.length === "number" && Array.prototype.toString.call(opts.titleCase)) {
opts.titleCase.forEach(function(v) {
customReplacements[v + ""] = v + "";
});
titleCase = true;
} else {
titleCase = !!opts.titleCase;
}
if (opts.custom && typeof opts.custom.length === "number" && Array.prototype.toString.call(opts.custom)) {
opts.custom.forEach(function(v) {
customReplacements[v + ""] = v + "";
});
}
Object.keys(customReplacements).forEach(function(v) {
var r;
if (v.length > 1) {
r = new RegExp("\\b" + escapeChars(v) + "\\b", "gi");
} else {
r = new RegExp(escapeChars(v), "gi");
}
input = input.replace(r, customReplacements[v]);
});
for (ch in customReplacements) {
allowedChars += ch;
}
}
allowedChars += separator;
allowedChars = escapeChars(allowedChars);
input = input.replace(/(^\s+|\s+$)/g, "");
lastCharWasSymbol = false;
lastCharWasDiatric = false;
for (i = 0, l = input.length; i < l; i++) {
ch = input[i];
if (isReplacedCustomChar(ch, customReplacements)) {
lastCharWasSymbol = false;
} else if (langChar[ch]) {
ch = lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) ? " " + langChar[ch] : langChar[ch];
lastCharWasSymbol = false;
} else if (ch in charMap) {
if (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) {
diatricString += ch;
ch = "";
} else if (lastCharWasDiatric === true) {
ch = diatricMap[diatricString] + charMap[ch];
diatricString = "";
} else {
ch = lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) ? " " + charMap[ch] : charMap[ch];
}
lastCharWasSymbol = false;
lastCharWasDiatric = false;
} else if (ch in diatricMap) {
diatricString += ch;
ch = "";
if (i === l - 1) {
ch = diatricMap[diatricString];
}
lastCharWasDiatric = true;
} else if (
// process symbol chars
symbol[ch] && !(uricFlag && uricChars.indexOf(ch) !== -1) && !(uricNoSlashFlag && uricNoSlashChars.indexOf(ch) !== -1)
) {
ch = lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) ? separator + symbol[ch] : symbol[ch];
ch += input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) ? separator : "";
lastCharWasSymbol = true;
} else {
if (lastCharWasDiatric === true) {
ch = diatricMap[diatricString] + ch;
diatricString = "";
lastCharWasDiatric = false;
} else if (lastCharWasSymbol && (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/))) {
ch = " " + ch;
}
lastCharWasSymbol = false;
}
result += ch.replace(new RegExp("[^\\w\\s" + allowedChars + "_-]", "g"), separator);
}
if (titleCase) {
result = result.replace(/(\w)(\S*)/g, function(_, i2, r) {
var j = i2.toUpperCase() + (r !== null ? r : "");
return Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0 ? j : j.toLowerCase();
});
}
result = result.replace(/\s+/g, separator).replace(new RegExp("\\" + separator + "+", "g"), separator).replace(new RegExp("(^\\" + separator + "+|\\" + separator + "+$)", "g"), "");
if (truncate && result.length > truncate) {
lucky = result.charAt(truncate) === separator;
result = result.slice(0, truncate);
if (!lucky) {
result = result.slice(0, result.lastIndexOf(separator));
}
}
if (!maintainCase && !titleCase) {
result = result.toLowerCase();
}
return result;
};
var createSlug = function createSlug2(opts) {
return function getSlugWithConfig(input) {
return getSlug(input, opts);
};
};
var escapeChars = function escapeChars2(input) {
return input.replace(/[-\\^$*+?.()|[\]{}\/]/g, "\\$&");
};
var isReplacedCustomChar = function(ch, customReplacements) {
for (var c in customReplacements) {
if (customReplacements[c] === ch) {
return true;
}
}
};
if (typeof module2 !== "undefined" && module2.exports) {
module2.exports = getSlug;
module2.exports.createSlug = createSlug;
} else if (typeof define !== "undefined" && define.amd) {
define([], function() {
return getSlug;
});
} else {
try {
if (root.getSlug || root.createSlug) {
throw "speakingurl: globals exists /(getSlug|createSlug)/";
} else {
root.getSlug = getSlug;
root.createSlug = createSlug;
}
} catch (e) {
}
}
})(exports2);
}
});
// ../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js
var require_speakingurl2 = __commonJS({
"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(exports2, module2) {
"use strict";
init_cjs_shims();
module2.exports = require_speakingurl();
}
});
// src/index.ts
var src_exports = {};
__export(src_exports, {
UNDEFINED: () => UNDEFINED,
addCustomCommand: () => addCustomCommand,
addCustomTab: () => addCustomTab,
devtools: () => devtools,
formatInspectorStateValue: () => formatInspectorStateValue,
getInspectorStateValueType: () => getInspectorStateValueType,
getRaw: () => getRaw,
onDevToolsClientConnected: () => onDevToolsClientConnected,
onDevToolsConnected: () => onDevToolsConnected,
parse: () => parse,
removeCustomCommand: () => removeCustomCommand,
setDevToolsEnv: () => setDevToolsEnv,
setupDevToolsPlugin: () => setupDevToolsPlugin,
stringify: () => stringify,
toEdit: () => toEdit,
toSubmit: () => toSubmit,
toggleComponentInspectorEnabled: () => toggleComponentInspectorEnabled,
toggleHighPerfMode: () => toggleHighPerfMode
});
module.exports = __toCommonJS(src_exports);
init_cjs_shims();
// src/core/index.ts
init_cjs_shims();
var import_devtools_shared16 = require("@vue/devtools-shared");
// src/hook/index.ts
init_cjs_shims();
var import_devtools_shared = require("@vue/devtools-shared");
var import_hookable = require("hookable");
// src/types/index.ts
init_cjs_shims();
// src/types/app.ts
init_cjs_shims();
// src/types/hook.ts
init_cjs_shims();
// src/types/state.ts
init_cjs_shims();
// src/types/context.ts
init_cjs_shims();
// src/types/router.ts
init_cjs_shims();
// src/types/env.ts
init_cjs_shims();
// src/hook/index.ts
var _a, _b;
var devtoolsHooks = (_b = (_a = import_devtools_shared.target).__VUE_DEVTOOLS_HOOK) != null ? _b : _a.__VUE_DEVTOOLS_HOOK = (0, import_hookable.createHooks)();
var on = {
vueAppInit(fn) {
devtoolsHooks.hook("app:init" /* APP_INIT */, fn);
},
vueAppConnected(fn) {
devtoolsHooks.hook("app:connected" /* APP_CONNECTED */, fn);
},
componentAdded(fn) {
return devtoolsHooks.hook("component:added" /* COMPONENT_ADDED */, fn);
},
componentUpdated(fn) {
return devtoolsHooks.hook("component:updated" /* COMPONENT_UPDATED */, fn);
},
componentRemoved(fn) {
return devtoolsHooks.hook("component:removed" /* COMPONENT_REMOVED */, fn);
},
setupDevtoolsPlugin(fn) {
devtoolsHooks.hook("devtools-plugin:setup" /* SETUP_DEVTOOLS_PLUGIN */, fn);
}
};
function createDevToolsHook() {
return {
id: "vue-devtools-next",
devtoolsVersion: "7.0",
enabled: false,
appRecords: [],
apps: [],
events: /* @__PURE__ */ new Map(),
on(event, fn) {
var _a10;
if (!this.events.has(event))
this.events.set(event, []);
(_a10 = this.events.get(event)) == null ? void 0 : _a10.push(fn);
return () => this.off(event, fn);
},
once(event, fn) {
const onceFn = (...args) => {
this.off(event, onceFn);
fn(...args);
};
this.on(event, onceFn);
return [event, onceFn];
},
off(event, fn) {
if (this.events.has(event)) {
const eventCallbacks = this.events.get(event);
const index = eventCallbacks.indexOf(fn);
if (index !== -1)
eventCallbacks.splice(index, 1);
}
},
emit(event, ...payload) {
if (this.events.has(event))
this.events.get(event).forEach((fn) => fn(...payload));
}
};
}
function subscribeDevToolsHook() {
const hook2 = import_devtools_shared.target.__VUE_DEVTOOLS_GLOBAL_HOOK__;
hook2.on("app:init" /* APP_INIT */, (app, version) => {
var _a10, _b10, _c;
if ((_c = (_b10 = (_a10 = app == null ? void 0 : app._instance) == null ? void 0 : _a10.type) == null ? void 0 : _b10.devtools) == null ? void 0 : _c.hide)
return;
devtoolsHooks.callHook("app:init" /* APP_INIT */, app, version);
});
hook2.on("component:added" /* COMPONENT_ADDED */, async (app, uid, parentUid, component) => {
var _a10, _b10, _c;
if ((_c = (_b10 = (_a10 = app == null ? void 0 : app._instance) == null ? void 0 : _a10.type) == null ? void 0 : _b10.devtools) == null ? void 0 : _c.hide)
return;
if (!app || typeof uid !== "number" && !uid || !component)
return;
devtoolsHooks.callHook("component:added" /* COMPONENT_ADDED */, app, uid, parentUid, component);
});
hook2.on("component:updated" /* COMPONENT_UPDATED */, (app, uid, parentUid, component) => {
if (!app || typeof uid !== "number" && !uid || !component)
return;
devtoolsHooks.callHook("component:updated" /* COMPONENT_UPDATED */, app, uid, parentUid, component);
});
hook2.on("component:removed" /* COMPONENT_REMOVED */, async (app, uid, parentUid, component) => {
if (!app || typeof uid !== "number" && !uid || !component)
return;
devtoolsHooks.callHook("component:removed" /* COMPONENT_REMOVED */, app, uid, parentUid, component);
});
hook2.on("devtools-plugin:setup" /* SETUP_DEVTOOLS_PLUGIN */, (pluginDescriptor, setupFn, options) => {
if ((options == null ? void 0 : options.target) === "legacy")
return;
devtoolsHooks.callHook("devtools-plugin:setup" /* SETUP_DEVTOOLS_PLUGIN */, pluginDescriptor, setupFn);
});
}
var hook = {
on,
setupDevToolsPlugin(pluginDescriptor, setupFn) {
return devtoolsHooks.callHook("devtools-plugin:setup" /* SETUP_DEVTOOLS_PLUGIN */, pluginDescriptor, setupFn);
}
};
// src/state/index.ts
init_cjs_shims();
// src/state/state.ts
init_cjs_shims();
var import_devtools_shared10 = require("@vue/devtools-shared");
var import_perfect_debounce3 = require("perfect-debounce");
// src/api/index.ts
init_cjs_shims();
// src/api/api.ts
init_cjs_shims();
// src/core/timeline/index.ts
init_cjs_shims();
function addTimelineLayer(payload) {
devtoolsContext.timelineLayer.push(payload);
}
// src/core/inspector/index.ts
init_cjs_shims();
function addInspector(payload) {
devtoolsContext.inspector.push(payload);
}
function getInspector(inspectorId) {
return devtoolsContext.inspector.find((inspector) => inspector.id === inspectorId);
}
function updateInspector(inspectorId, payload) {
const inspector = getInspector(inspectorId);
inspector && Object.assign(inspector, payload);
}
// src/core/app-record/index.ts
init_cjs_shims();
var import_speakingurl = __toESM(require_speakingurl2(), 1);
// src/api/plugin.ts
init_cjs_shims();
// src/core/router/index.ts
init_cjs_shims();
var import_devtools_shared3 = require("@vue/devtools-shared");
var import_perfect_debounce = require("perfect-debounce");
// src/api/hook.ts
init_cjs_shims();
var import_devtools_shared2 = require("@vue/devtools-shared");
var import_hookable2 = require("hookable");
var _a2, _b2;
var apiHooks = (_b2 = (_a2 = import_devtools_shared2.target).__VUE_DEVTOOLS_API_HOOK) != null ? _b2 : _a2.__VUE_DEVTOOLS_API_HOOK = (0, import_hookable2.createHooks)();
// src/core/router/index.ts
function getRoutes(router) {
const routesMap = /* @__PURE__ */ new Map();
return ((router == null ? void 0 : router.getRoutes()) || []).filter((i) => !routesMap.has(i.path) && routesMap.set(i.path, 1));
}
function filterRoutes(routes) {
return routes.map((item) => {
let { path, name, children } = item;
if (children == null ? void 0 : children.length)
children = filterRoutes(children);
return {
path,
name,
children
};
});
}
function filterCurrentRoute(route) {
if (route) {
const { fullPath, hash, href, path, name, matched, params, query } = route;
return {
fullPath,
hash,
href,
path,
name,
params,
query,
matched: filterRoutes(matched)
};
}
return route;
}
function normalizeRouterInfo(appRecord) {
function init() {
var _a10;
const router = (_a10 = appRecord.app) == null ? void 0 : _a10.config.globalProperties.$router;
const currentRoute = filterCurrentRoute(router == null ? void 0 : router.currentRoute.value);
const routes = filterRoutes(getRoutes(router));
const c = console.warn;
console.warn = () => {
};
import_devtools_shared3.target[ROUTER_INFO_KEY] = {
currentRoute: currentRoute ? (0, import_devtools_shared3.deepClone)(currentRoute) : {},
routes: (0, import_devtools_shared3.deepClone)(routes)
};
import_devtools_shared3.target[ROUTER_KEY] = router;
console.warn = c;
}
init();
hook.on.componentUpdated((0, import_perfect_debounce.debounce)(() => {
init();
apiHooks.callHook("router-info:updated" /* ROUTER_INFO_UPDATED */, import_devtools_shared3.target[ROUTER_INFO_KEY]);
}, 200));
}
function getRouterDevToolsId(id) {
return id.replace(/\D/g, "") || "0";
}
// src/api/plugin.ts
function collectDevToolsPlugin(pluginDescriptor, setupFn) {
devtoolsState.pluginBuffer.push([pluginDescriptor, setupFn]);
}
function setupDevToolsPlugin(pluginDescriptor, setupFn) {
return hook.setupDevToolsPlugin(pluginDescriptor, setupFn);
}
function setupExternalPlugin(plugin, app, api) {
const [pluginDescriptor, setupFn] = plugin;
if (pluginDescriptor.app !== app)
return;
if (pluginDescriptor.packageName === "vue-query") {
return;
}
if (pluginDescriptor.packageName === "vue-router") {
const id = getRouterDevToolsId(`${pluginDescriptor.id}`);
if (pluginDescriptor.app === app) {
devtoolsAppRecords.value = devtoolsAppRecords.value.map((item) => ({
...item,
routerId: id
}));
}
}
setupFn(api);
}
function registerPlugin(app, api) {
devtoolsState.pluginBuffer.forEach((plugin) => setupExternalPlugin(plugin, app, api));
devtoolsAppRecords.value = devtoolsAppRecords.value.map((record) => {
var _a10, _b10;
const globalProperties = (_b10 = (_a10 = record.app) == null ? void 0 : _a10.config) == null ? void 0 : _b10.globalProperties;
if (!globalProperties)
return record;
return {
...record,
moduleDetectives: {
vueRouter: !!globalProperties.$router,
pinia: !!globalProperties.$pinia,
vueI18n: !!globalProperties.$i18n
}
};
});
}
// src/plugins/index.ts
init_cjs_shims();
// src/plugins/component.ts
init_cjs_shims();
var import_perfect_debounce2 = require("perfect-debounce");
// src/core/component/utils/index.ts
init_cjs_shims();
var import_devtools_shared4 = require("@vue/devtools-shared");
var import_vue = require("vue");
function getComponentTypeName(options) {
return options.name || options._componentTag || options.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ || options.__name;
}
function getComponentFileName(options) {
const file = options.__file;
if (file)
return (0, import_devtools_shared4.classify)((0, import_devtools_shared4.basename)(file, ".vue"));
}
function getComponentName(options) {
const name = options.displayName || options.name || options._componentTag;
if (name)
return name;
return getComponentFileName(options);
}
function saveComponentGussedName(instance, name) {
instance.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__ = name;
return name;
}
function getAppRecord(instance) {
if (instance.__VUE_DEVTOOLS_APP_RECORD__)
return instance.__VUE_DEVTOOLS_APP_RECORD__;
else if (instance.root)
return instance.appContext.app.__VUE_DEVTOOLS_APP_RECORD__;
}
async function getComponentId(options) {
const { app, uid, instance } = options;
try {
if (instance.__VUE_DEVTOOLS_UID__)
return instance.__VUE_DEVTOOLS_UID__;
const appRecord = await getAppRecord(app);
if (!appRecord)
return null;
const isRoot = appRecord.rootInstance === instance;
return `${appRecord.id}:${isRoot ? "root" : uid}`;
} catch (e) {
}
}
function isFragment(instance) {
var _a10;
const subTreeType = (_a10 = instance.subTree) == null ? void 0 : _a10.type;
return subTreeType === import_vue.Fragment;
}
function isBeingDestroyed(instance) {
return instance._isBeingDestroyed || instance.isUnmounted;
}
function getInstanceName(instance) {
var _a10, _b10, _c;
const name = getComponentTypeName(instance.type || {});
if (name)
return name;
if (instance.root === instance)
return "Root";
for (const key in (_b10 = (_a10 = instance.parent) == null ? void 0 : _a10.type) == null ? void 0 : _b10.components) {
if (instance.parent.type.components[key] === instance.type)
return saveComponentGussedName(instance, key);
}
for (const key in (_c = instance.appContext) == null ? void 0 : _c.components) {
if (instance.appContext.components[key] === instance.type)
return saveComponentGussedName(instance, key);
}
const fileName = getComponentFileName(instance.type || {});
if (fileName)
return fileName;
return "Anonymous Component";
}
function getUniqueComponentId(instance) {
var _a10, _b10, _c;
const appId = (_c = (_b10 = (_a10 = instance == null ? void 0 : instance.appContext) == null ? void 0 : _a10.app) == null ? void 0 : _b10.__VUE_DEVTOOLS_APP_RECORD_ID__) != null ? _c : 0;
const instanceId = instance === instance.root ? "root" : instance.uid;
return `${appId}:${instanceId}`;
}
function getRenderKey(value) {
if (value == null)
return "";
if (typeof value === "number")
return value;
else if (typeof value === "string")
return `'${value}'`;
else if (Array.isArray(value))
return "Array";
else
return "Object";
}
function returnError(cb) {
try {
return cb();
} catch (e) {
return e;
}
}
function getComponentInstance(appRecord, instanceId) {
instanceId = instanceId || `${appRecord.id}:root`;
const instance = appRecord.instanceMap.get(instanceId);
return instance || appRecord.instanceMap.get(":root");
}
// src/core/component/state/bounding-rect.ts
init_cjs_shims();
function createRect() {
const rect = {
top: 0,
bottom: 0,
left: 0,
right: 0,
get width() {
return rect.right - rect.left;
},
get height() {
return rect.bottom - rect.top;
}
};
return rect;
}
var range;
function getTextRect(node) {
if (!range)
range = document.createRange();
range.selectNode(node);
return range.getBoundingClientRect();
}
function getFragmentRect(vnode) {
const rect = createRect();
if (!vnode.children)
return rect;
for (let i = 0, l = vnode.children.length; i < l; i++) {
const childVnode = vnode.children[i];
let childRect;
if (childVnode.component) {
childRect = getComponentBoundingRect(childVnode.component);
} else if (childVnode.el) {
const el = childVnode.el;
if (el.nodeType === 1 || el.getBoundingClientRect)
childRect = el.getBoundingClientRect();
else if (el.nodeType === 3 && el.data.trim())
childRect = getTextRect(el);
}
if (childRect)
mergeRects(rect, childRect);
}
return rect;
}
function mergeRects(a, b) {
if (!a.top || b.top < a.top)
a.top = b.top;
if (!a.bottom || b.bottom > a.bottom)
a.bottom = b.bottom;
if (!a.left || b.left < a.left)
a.left = b.left;
if (!a.right || b.right > a.right)
a.right = b.right;
return a;
}
var DEFAULT_RECT = {
top: 0,
left: 0,
right: 0,
bottom: 0,
width: 0,
height: 0
};
function getComponentBoundingRect(instance) {
const el = instance.subTree.el;
if (typeof window === "undefined") {
return DEFAULT_RECT;
}
if (isFragment(instance))
return getFragmentRect(instance.subTree);
else if ((el == null ? void 0 : el.nodeType) === 1)
return el == null ? void 0 : el.getBoundingClientRect();
else if (instance.subTree.component)
return getComponentBoundingRect(instance.subTree.component);
else
return DEFAULT_RECT;
}
// src/core/component/tree/walker.ts
init_cjs_shims();
// src/core/component/tree/el.ts
init_cjs_shims();
function getRootElementsFromComponentInstance(instance) {
if (isFragment(instance))
return getFragmentRootElements(instance.subTree);
if (!instance.subTree)
return [];
return [instance.subTree.el];
}
function getFragmentRootElements(vnode) {
if (!vnode.children)
return [];
const list = [];
vnode.children.forEach((childVnode) => {
if (childVnode.component)
list.push(...getRootElementsFromComponentInstance(childVnode.component));
else if (childVnode == null ? void 0 : childVnode.el)
list.push(childVnode.el);
});
return list;
}
// src/core/component/tree/filter.ts
init_cjs_shims();
var import_devtools_shared5 = require("@vue/devtools-shared");
var ComponentFilter = class {
constructor(filter) {
this.filter = filter || "";
}
/**
* Check if an instance is qualified.
*
* @param {Vue|Vnode} instance
* @return {boolean}
*/
isQualified(instance) {
const name = getInstanceName(instance);
return (0, import_devtools_shared5.classify)(name).toLowerCase().includes(this.filter) || (0, import_devtools_shared5.kebabize)(name).toLowerCase().includes(this.filter);
}
};
function createComponentFilter(filterText) {
return new ComponentFilter(filterText);
}
// src/core/component/tree/walker.ts
var ComponentWalker = class {
constructor(options) {
// Dedupe instances (Some instances may be both on a component and on a child abstract/functional component)
this.captureIds = /* @__PURE__ */ new Map();
const { filterText = "", maxDepth, recursively } = options;
this.componentFilter = createComponentFilter(filterText);
this.maxDepth = maxDepth;
this.recursively = recursively;
}
getComponentTree(instance) {
this.captureIds = /* @__PURE__ */ new Map();
return this.findQualifiedChildren(instance, 0);
}
getComponentParents(instance) {
this.captureIds = /* @__PURE__ */ new Map();
const parents = [];
this.captureId(instance);
let parent = instance;
while (parent = parent.parent) {
this.captureId(parent);
parents.push(parent);
}
return parents;
}
captureId(instance) {
if (!instance)
return null;
const id = instance.__VUE_DEVTOOLS_UID__ != null ? instance.__VUE_DEVTOOLS_UID__ : getUniqueComponentId(instance);
instance.__VUE_DEVTOOLS_UID__ = id;
if (this.captureIds.has(id))
return null;
else
this.captureIds.set(id, void 0);
this.mark(instance);
return id;
}
/**
* Capture the meta information of an instance. (recursive)
*
* @param {Vue} instance
* @return {object}
*/
async capture(instance, depth) {
var _a10;
if (!instance)
return null;
const id = this.captureId(instance);
const name = getInstanceName(instance);
const children = this.getInternalInstanceChildren(instance.subTree).filter((child) => !isBeingDestroyed(child));
const parents = this.getComponentParents(instance) || [];
const inactive = !!instance.isDeactivated || parents.some((parent) => parent.isDeactivated);
const treeNode = {
uid: instance.uid,
id,
name,
renderKey: getRenderKey(instance.vnode ? instance.vnode.key : null),
inactive,
children: [],
isFragment: isFragment(instance),
tags: typeof instance.type !== "function" ? [] : [
{
label: "functional",
textColor: 5592405,
backgroundColor: 15658734
}
],
autoOpen: this.recursively,
file: instance.type.__file || ""
};
if (depth < this.maxDepth || instance.type.__isKeepAlive || parents.some((parent) => parent.type.__isKeepAlive)) {
treeNode.children = await Promise.all(children.map((child) => this.capture(child, depth + 1)).filter(Boolean));
}
if (this.isKeepAlive(instance)) {
const cachedComponents = this.getKeepAliveCachedInstances(instance);
const childrenIds = children.map((child) => child.__VUE_DEVTOOLS_UID__);
for (const cachedChild of cachedComponents) {
if (!childrenIds.includes(cachedChild.__VUE_DEVTOOLS_UID__)) {
const node = await this.capture({ ...cachedChild, isDeactivated: true }, depth + 1);
if (node)
treeNode.children.push(node);
}
}
}
const rootElements = getRootElementsFromComponentInstance(instance);
const firstElement = rootElements[0];
if (firstElement == null ? void 0 : firstElement.parentElement) {
const parentInstance = instance.parent;
const parentRootElements = parentInstance ? getRootElementsFromComponentInstance(parentInstance) : [];
let el = firstElement;
const indexList = [];
do {
indexList.push(Array.from(el.parentElement.childNodes).indexOf(el));
el = el.parentElement;
} while (el.parentElement && parentRootElements.length && !parentRootElements.includes(el));
treeNode.domOrder = indexList.reverse();
} else {
treeNode.domOrder = [-1];
}
if ((_a10 = instance.suspense) == null ? void 0 : _a10.suspenseKey) {
treeNode.tags.push({
label: instance.suspense.suspenseKey,
backgroundColor: 14979812,
textColor: 16777215
});
this.mark(instance, true);
}
devtoolsContext.api.visitComponentTree({
treeNode,
componentInstance: instance,
app: instance.appContext.app,
filter: this.componentFilter.filter
});
return treeNode;
}
/**
* Find qualified children from a single instance.
* If the instance itself is qualified, just return itself.
* This is ok because [].concat works in both cases.
*
* @param {Vue|Vnode} instance
* @return {Vue|Array}
*/
async findQualifiedChildren(instance, depth) {
var _a10;
if (this.componentFilter.isQualified(instance) && !((_a10 = instance.type.devtools) == null ? void 0 : _a10.hide)) {
return [await this.capture(instance, depth)];
} else if (instance.subTree) {
const list = this.isKeepAlive(instance) ? this.getKeepAliveCachedInstances(instance) : this.getInternalInstanceChildren(instance.subTree);
return this.findQualifiedChildrenFromList(list, depth);
} else {
return [];
}
}
/**
* Iterate through an array of instances and flatten it into
* an array of qualified instances. This is a depth-first
* traversal - e.g. if an instance is not matched, we will
* recursively go deeper until a qualified child is found.
*
* @param {Array} instances
* @return {Array}
*/
async findQualifiedChildrenFromList(instances, depth) {
instances = instances.filter((child) => {
var _a10;
return !isBeingDestroyed(child) && !((_a10 = child.type.devtools) == null ? void 0 : _a10.hide);
});
if (!this.componentFilter.filter)
return Promise.all(instances.map((child) => this.capture(child, depth)));
else
return Array.prototype.concat.apply([], await Promise.all(instances.map((i) => this.findQualifiedChildren(i, depth))));
}
/**
* Get children from a component instance.
*/
getInternalInstanceChildren(subTree, suspense = null) {
const list = [];
if (subTree) {
if (subTree.component) {
!suspense ? list.push(subTree.component) : list.push({ ...subTree.component, suspense });
} else if (subTree.suspense) {
const suspenseKey = !subTree.suspense.isInFallback ? "suspense default" : "suspense fallback";
list.push(...this.getInternalInstanceChildren(subTree.suspense.activeBranch, { ...subTree.suspense, suspenseKey }));
} else if (Array.isArray(subTree.children)) {
subTree.children.forEach((childSubTree) => {
if (childSubTree.component)
!suspense ? list.push(childSubTree.component) : list.push({ ...childSubTree.component, suspense });
else
list.push(...this.getInternalInstanceChildren(childSubTree, suspense));
});
}
}
return list.filter((child) => {
var _a10;
return !isBeingDestroyed(child) && !((_a10 = child.type.devtools) == null ? void 0 : _a10.hide);
});
}
/**
* Mark an instance as captured and store it in the instance map.
*
* @param {Vue} instance
*/
mark(instance, force = false) {
const instanceMap = getAppRecord(instance).instanceMap;
if (force || !instanceMap.has(instance.__VUE_DEVTOOLS_UID__)) {
instanceMap.set(instance.__VUE_DEVTOOLS_UID__, instance);
devtoolsAppRecords.active.instanceMap = instanceMap;
}
}
isKeepAlive(instance) {
return instance.type.__isKeepAlive && instance.__v_cache;
}
getKeepAliveCachedInstances(instance) {
return Array.from(instance.__v_cache.values()).map((vnode) => vnode.component).filter(Boolean);
}
};
// src/core/component/state/editor.ts
init_cjs_shims();
var import_vue2 = require("vue");
var StateEditor = class {
constructor() {
this.refEditor = new RefStateEditor();
}
set(object, path, value, cb) {
const sections = Array.isArray(path) ? path : path.split(".");
const markRef = false;
while (sections.length > 1) {
const section = sections.shift();
if (object instanceof Map)
object = object.get(section);
if (object instanceof Set)
object = Array.from(object.values())[section];
else
object = object[section];
if (this.refEditor.isRef(object))
object = this.refEditor.get(object);
}
const field = sections[0];
const item = this.refEditor.get(object)[field];
if (cb) {
cb(object, field, value);
} else {
if (this.refEditor.isRef(item))
this.refEditor.set(item, value);
else if (markRef)
object[field] = value;
else
object[field] = value;
}
}
get(object, path) {
const sections = Array.isArray(path) ? path : path.split(".");
for (let i = 0; i < sections.length; i++) {
if (object instanceof Map)
object = object.get(sections[i]);
else
object = object[sections[i]];
if (this.refEditor.isRef(object))
object = this.refEditor.get(object);
if (!object)
return void 0;
}
return object;
}
has(object, path, parent = false) {
if (typeof object === "undefined")
return false;
const sections = Array.isArray(path) ? path.slice() : path.split(".");
const size = !parent ? 1 : 2;
while (object && sections.length > size) {
const section = sections.shift();
object = object[section];
if (this.refEditor.isRef(object))
object = this.refEditor.get(object);
}
return object != null && Object.prototype.hasOwnProperty.call(object, sections[0]);
}
createDefaultSetCallback(state) {
return (object, field, value) => {
if (state.remove || state.newKey) {
if (Array.isArray(object))
object.splice(field, 1);
else if ((0, import_vue2.toRaw)(object) instanceof Map)
object.delete(field);
else if ((0, import_vue2.toRaw)(object) instanceof Set)
object.delete(Array.from(object.values())[field]);
else
Reflect.deleteProperty(object, field);
}
if (!state.remove) {
const target10 = object[state.newKey || field];
if (this.refEditor.isRef(target10))
this.refEditor.set(target10, value);
else if ((0, import_vue2.toRaw)(object) instanceof Map)
object.set(state.newKey || field, value);
else if ((0, import_vue2.toRaw)(object) instanceof Set)
object.add(value);
else
object[state.newKey || field] = value;
}
};
}
};
var RefStateEditor = class {
set(ref, value) {
if ((0, import_vue2.isRef)(ref)) {
ref.value = value;
} else {
if (ref instanceof Set && Array.isArray(value)) {
ref.clear();
value.forEach((v) => ref.add(v));
return;
}
const currentKeys = Object.keys(value);
if (ref instanceof Map) {
const previousKeysSet2 = new Set(ref.keys());
currentKeys.forEach((key) => {
ref.set(key, Reflect.get(value, key));
previousKeysSet2.delete(key);
});
previousKeysSet2.forEach((key) => ref.delete(key));
return;
}
const previousKeysSet = new Set(Object.keys(ref));
currentKeys.forEach((key) => {
Reflect.set(ref, key, Reflect.get(value, key));
previousKeysSet.delete(key);
});
previousKeysSet.forEach((key) => Reflect.deleteProperty(ref, key));
}
}
get(ref) {
return (0, import_vue2.isRef)(ref) ? ref.value : ref;
}
isRef(ref) {
return (0, import_vue2.isRef)(ref) || (0, import_vue2.isReactive)(ref);
}
};
async function editComponentState(payload, stateEditor2) {
const { path, nodeId, state, type } = payload;
const instance = getComponentInstance(devtoolsContext.appRecord, nodeId);
if (!instance)
return;
const targetPath = path.slice();
let target10;
if (instance.devtoolsRawSetupState && Object.keys(instance.devtoolsRawSetupState).includes(path[0])) {
target10 = instance.devtoolsRawSetupState;
}
if (target10 && targetPath) {
if (state.type === "object" && type === "reactive") {
}
stateEditor2.set(target10, targetPath, state.value, stateEditor2.createDefaultSetCallback(state));
}
}
var stateEditor = new StateEditor();
async function editState(payload) {
editComponentState(payload, stateEditor);
}
// src/core/component/state/index.ts
init_cjs_shims();
// src/core/component/state/process.ts
init_cjs_shims();
var import_devtools_shared6 = require("@vue/devtools-shared");
// src/core/component/state/constants.ts
init_cjs_shims();
var vueBuiltins = /* @__PURE__ */ new Set([
"nextTick",
"defineComponent",
"defineAsyncComponent",
"defineCustomElement",
"ref",
"computed",
"reactive",
"readonly",
"watchEffect",
"watchPostEffect",
"watchSyncEffect",
"watch",
"isRef",
"unref",
"toRef",
"toRefs",
"isProxy",
"isReactive",
"isReadonly",
"shallowRef",
"triggerRef",
"customRef",
"shallowReactive",
"shallowReadonly",
"toRaw",
"markRaw",
"effectScope",
"getCurrentScope",
"onScopeDispose",
"onMounted",
"onUpdated",
"onUnmounted",
"onBeforeMount",
"onBeforeUpdate",
"onBeforeUnmount",
"onErrorCaptured",
"onRenderTracked",
"onRenderTriggered",
"onActivated",
"onDeactivated",
"onServerPrefetch",
"provide",
"inject",
"h",
"mergeProps",
"cloneVNode",
"isVNode",
"resolveComponent",
"resolveDirective",
"withDirectives",
"withModifiers"
]);
var symbolRE = /^\[native Symbol Symbol\((.*)\)\]$/;
var rawTypeRE = /^\[object (\w+)]$/;
var specialTypeRE = /^\[native (\w+) (.*?)(<>((.|\s)*))?\]$/;
var fnTypeRE = /^(?:function|class) (\w+)/;
var MAX_STRING_SIZE = 1e4;
var MAX_ARRAY_SIZE = 5e3;
var UNDEFINED = "__vue_devtool_undefined__";
var INFINITY = "__vue_devtool_infinity__";
var NEGATIVE_INFINITY = "__vue_devtool_negative_infinity__";
var NAN = "__vue_devtool_nan__";
var ESC = {
"<": "<",
">": ">",
'"': """,
"&": "&"
};
// src/core/component/state/util.ts
init_cjs_shims();
// src/core/component/state/is.ts
init_cjs_shims();
function isVueInstance(value) {
return value._ && Object.keys(value._).includes("vnode");
}
function isPlainObject(obj) {
return Object.prototype.toString.call(obj) === "[object Object]";
}
function isPrimitive(data) {
if (data == null)
return true;
const type = typeof data;
return type === "string" || type === "number" || type === "boolean";
}
function isRef2(raw) {
return !!raw.__v_isRef;
}
function isComputed(raw) {
return isRef2(raw) && !!raw.effect;
}
function isReactive2(raw) {
return !!raw.__v_isReactive;
}
function isReadOnly(raw) {
return !!raw.__v_isReadonly;
}
// src/core/component/state/util.ts
var tokenMap = {
[UNDEFINED]: "undefined",
[NAN]: "NaN",
[INFINITY]: "Infinity",
[NEGATIVE_INFINITY]: "-Infinity"
};
var reversedTokenMap = Object.entries(tokenMap).reduce((acc, [key, value]) => {
acc[value] = key;
return acc;
}, {});
function internalStateTokenToString(value) {
if (value === null)
return "null";
return typeof value === "string" && tokenMap[value] || false;
}
function replaceTokenToString(value) {
const replaceRegex = new RegExp(`"(${Object.keys(tokenMap).join("|")})"`, "g");
return value.replace(replaceRegex, (_, g1) => tokenMap[g1]);
}
function replaceStringToToken(value) {
const literalValue = reversedTokenMap[value.trim()];
if (literalValue)
return `"${literalValue}"`;
const replaceRegex = new RegExp(`:\\s*(${Object.keys(reversedTokenMap).join("|")})`, "g");
return value.replace(replaceRegex, (_, g1) => `:"${reversedTokenMap[g1]}"`);
}
function getPropType(type) {
if (Array.isArray(type))
return type.map((t) => getPropType(t)).join(" or ");
if (type == null)
return "null";
const match = type.toString().match(fnTypeRE);
return typeof type === "function" ? match && match[1] || "any" : "any";
}
function sanitize(data) {
if (!isPrimitive(data) && !Array.isArray(data) && !isPlainObject(data)) {
return Object.prototype.toString.call(data);
} else {
return data;
}
}
function getSetupStateType(raw) {
return {
ref: isRef2(raw),
computed: isComputed(raw),
reactive: isReactive2(raw),
readonly: isReadOnly(raw)
};
}
function toRaw2(value) {
if (value == null ? void 0 : value.__v_raw)
return value.__v_raw;
return value;
}
function escape(s) {
return s.replace(/[<>"&]/g, (s2) => {
return ESC[s2] || s2;
});
}
// src/core/component/state/process.ts
function mergeOptions(to, from, instance) {
if (typeof from === "function")
from = from.options;
if (!from)
return to;
const { mixins, extends: extendsOptions } = from;
extendsOptions && mergeOptions(to, extendsOptions, instance);
mixins && mixins.forEach(
(m) => mergeOptions(to, m, instance)
);
for (const key of ["computed", "inject"]) {
if (Object.prototype.hasOwnProperty.call(from, key)) {
if (!to[key])
to[key] = from[key];
else
Object.assign(to[key], from[key]);
}
}
return to;
}
function resolveMergedOptions(instance) {
const raw = instance.type;
const { mixins, extends: extendsOptions } = raw;
const globalMixins = instance.appContext.mixins;
if (!globalMixins.length && !mixins && !extendsOptions)
return raw;
const options = {};
globalMixins.forEach((m) => mergeOptions(options, m, instance));
mergeOptions(options, raw, instance);
return options;
}
function processProps(instance) {
const props = [];
const propDefinitions = instance.type.props;
for (const key in instance.props) {
const propDefinition = propDefinitions ? propDefinitions[key] : null;
const camelizeKey = (0, import_devtools_shared6.camelize)(key);
props.push({
type: "props",
key: camelizeKey,
value: returnError(() => instance.props[key]),
meta: propDefinition ? {
type: propDefinition.type ? getPropType(propDefinition.type) : "any",
required: !!propDefinition.required,
...propDefinition.default ? {
default: propDefinition.default.toString()
} : {}
} : { type: "invalid" }
});
}
return props;
}
function processState(instance) {
const type = instance.type;
const props = type.props;
const getters = type.vuex && type.vuex.getters;
const computedDefs = type.computed;
const data = {
...instance.data,
...instance.renderContext
};
return Object.keys(data).filter((key) => !(props && key in props) && !(getters && key in getters) && !(computedDefs && key in computedDefs)).map((key) => ({
key,
type: "data",
value: returnError(() => data[key]),
editable: true
}));
}
function getStateTypeAndName(info) {
const stateType = info.computed ? "computed" : info.ref ? "ref" : info.reactive ? "reactive" : null;
const stateTypeName = stateType ? `${stateType.charAt(0).toUpperCase()}${stateType.slice(1)}` : null;
return {
stateType,
stateTypeName
};
}
function processSetupState(instance) {
const raw = instance.devtoolsRawSetupState || {};
return Object.keys(instance.setupState).filter((key) => !vueBuiltins.has(key) && key.split(/(?=[A-Z])/)[0] !== "use").map((key) => {
var _a10, _b10, _c, _d;
const value = returnError(() => toRaw2(instance.setupState[key]));
const rawData = raw[key];
let result;
let isOtherType = typeof value === "function" || typeof (value == null ? void 0 : value.render) === "function" || typeof (value == null ? void 0 : value.__asyncLoader) === "function";
if (rawData) {
const info = getSetupStateType(rawData);
const { stateType, stateTypeName } = getStateTypeAndName(info);
const isState = info.ref || info.computed || info.reactive;
const raw2 = ((_b10 = (_a10 = rawData.effect) == null ? void 0 : _a10.raw) == null ? void 0 : _b10.toString()) || ((_d = (_c = rawData.effect) == null ? void 0 : _c.fn) == null ? void 0 : _d.toString());
if (stateType)
isOtherType = false;
result = {
...stateType ? { stateType, stateTypeName } : {},
...raw2 ? { raw: raw2 } : {},
editable: isState && !info.readonly
};
}
const type = isOtherType ? "setup (other)" : "setup";
return {
key,
value,
type,
// @ts-expect-error ignore
...result
};
});
}
function processComputed(instance, mergedType) {
const type = mergedType;
const computed = [];
const defs = type.computed || {};
for (const key in defs) {
const def = defs[key];
const type2 = typeof def === "function" && def.vuex ? "vuex bindings" : "computed";
computed.push({
type: type2,
key,
value: returnError(() => {
var _a10;
return (_a10 = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a10[key];
}),
editable: typeof def.set === "function"
});
}
return computed;
}
function processAttrs(instance) {
return Object.keys(instance.attrs).map((key) => ({
type: "attrs",
key,
value: returnError(() => instance.attrs[key])
}));
}
function processProvide(instance) {
return Reflect.ownKeys(instance.provides).map((key) => ({
type: "provided",
key: key.toString(),
value: returnError(() => instance.provides[key])
}));
}
function processInject(instance, mergedType) {
if (!(mergedType == null ? void 0 : mergedType.inject))
return [];
let keys = [];
let defaultValue;
if (Array.isArray(mergedType.inject)) {
keys = mergedType.inject.map((key) => ({
key,
originalKey: key
}));
} else {
keys = Reflect.ownKeys(mergedType.inject).map((key) => {
const value = mergedType.inject[key];
let originalKey;
if (typeof value === "string" || typeof value === "symbol") {
originalKey = value;
} else {
originalKey = value.from;
defaultValue = value.default;
}
return {
key,
originalKey
};
});
}
return keys.map(({ key, originalKey }) => ({
type: "injected",
key: originalKey && key !== originalKey ? `${originalKey.toString()} \u279E ${key.toString()}` : key.toString(),
// eslint-disable-next-line no-prototype-builtins
value: returnError(() => instance.ctx.hasOwnProperty(key) ? instance.ctx[key] : instance.provides.hasOwnProperty(originalKey) ? instance.provides[originalKey] : defaultValue)
}));
}
function processRefs(instance) {
return Object.keys(instance.refs).map((key) => ({
type: "refs",
key,
value: returnError(() => instance.refs[key])
}));
}
function processEventListeners(instance) {
var _a10;
const emitsDefinition = instance.type.emits;
const declaredEmits = Array.isArray(emitsDefinition) ? emitsDefinition : Object.keys(emitsDefinition != null ? emitsDefinition : {});
const keys = Object.keys((_a10 = instance.vnode.props) != null ? _a10 : {});
const result = [];
for (const key of keys) {
const [prefix, ...eventNameParts] = key.split(/(?=[A-Z])/);
if (prefix === "on") {
const eventName = eventNameParts.join("-").toLowerCase();
const isDeclared = declaredEmits.includes(eventName);
result.push({
type: "event listeners",
key: eventName,
value: {
_custom: {
displayText: isDeclared ? "\u2705 Declared" : "\u26A0\uFE0F Not declared",
key: isDeclared ? "\u2705 Declared" : "\u26A0\uFE0F Not declared",
value: isDeclared ? "\u2705 Declared" : "\u26A0\uFE0F Not declared",
tooltipText: !isDeclared ? `The event ${eventName}
is not declared in the emits
option. It will leak into the component's attributes ($attrs
).` : null
}
}
});
}
}
return result;
}
function processInstanceState(instance) {
const mergedType = resolveMergedOptions(instance);
return processProps(instance).concat(
processState(instance),
processSetupState(instance),
processComputed(instance, mergedType),
processAttrs(instance),
processProvide(instance),
processInject(instance, mergedType),
processRefs(instance),
processEventListeners(instance)
);
}
// src/core/component/state/index.ts
function getInstanceState(params) {
var _a10;
const instance = getComponentInstance(devtoolsContext.appRecord, params.instanceId);
const id = getUniqueComponentId(instance);
const name = getInstanceName(instance);
const file = (_a10 = instance == null ? void 0 : instance.type) == null ? void 0 : _a10.__file;
const state = processInstanceState(instance);
return {
id,
name,
file,
state,
instance
};
}
// src/plugins/component.ts
var INSPECTOR_ID = "components";
function registerComponentDevToolsPlugin(app) {
setupDevToolsPlugin({
id: INSPECTOR_ID,
label: "Components",
app
}, (api) => {
api.addInspector({
id: INSPECTOR_ID,
label: "Components",
treeFilterPlaceholder: "Search components"
});
api.on.getComponentBoundingRect((payload) => {
if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {
const instance = getComponentInstance(devtoolsContext.appRecord, payload.instanceId);
if (instance) {
if (typeof DOMRect === "undefined")
return;
payload.rect = getComponentBoundingRect(instance);
if (payload.rect instanceof DOMRect) {
payload.rect = {
top: payload.rect.top,
left: payload.rect.left,
right: payload.rect.right,
bottom: payload.rect.bottom,
width: payload.rect.width,
height: payload.rect.height
};
}
}
}
});
api.on.getInspectorTree(async (payload) => {
if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {
const instance = getComponentInstance(devtoolsContext.appRecord, payload.instanceId);
if (instance) {
const walker = new ComponentWalker({
filterText: payload.filter,
// @TODO: should make this configurable?
maxDepth: 100,
recursively: false
});
payload.rootNodes = await walker.getComponentTree(instance);
}
}
});
api.on.getInspectorState(async (payload) => {
var _a10;
if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {
const result = getInstanceState({
instanceId: payload.nodeId
});
const componentInstance = result.instance;
const app2 = (_a10 = result.instance) == null ? void 0 : _a10.appContext.app;
const _payload = {
componentInstance,
app: app2,
instanceData: result
};
apiHooks.callHookWith((callbacks) => {
callbacks.forEach((cb) => cb(_payload));
}, "component-state:inspect" /* COMPONENT_STATE_INSPECT */);
payload.state = result;
}
});
api.on.editInspectorState(async (payload) => {
if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {
editState(payload);
await api.sendInspectorState("components");
}
});
const debounceSendInspectorTree = (0, import_perfect_debounce2.debounce)(() => {
api.sendInspectorTree(INSPECTOR_ID);
}, 120);
const debounceSendInspectorState = (0, import_perfect_debounce2.debounce)(() => {
api.sendInspectorState(INSPECTOR_ID);
}, 120);
const componentAddedCleanup = hook.on.componentAdded(async (app2, uid, parentUid, component) => {
var _a10, _b10, _c;
if (devtoolsState.highPerfModeEnabled)
return;
if ((_c = (_b10 = (_a10 = app2 == null ? void 0 : app2._instance) == null ? void 0 : _a10.type) == null ? void 0 : _b10.devtools) == null ? void 0 : _c.hide)
return;
if (!app2 || typeof uid !== "number" && !uid || !component)
return;
const id = await getComponentId({
app: app2,
uid,
instance: component
});
const appRecord = await getAppRecord(app2);
if (component) {
if (component.__VUE_DEVTOOLS_UID__ == null)
component.__VUE_DEVTOOLS_UID__ = id;
if (!(appRecord == null ? void 0 : appRecord.instanceMap.has(id))) {
appRecord == null ? void 0 : appRecord.instanceMap.set(id, component);
devtoolsAppRecords.active.instanceMap = appRecord.instanceMap;
}
}
if (!appRecord)
return;
debounceSendInspectorTree();
});
const componentUpdatedCleanup = hook.on.componentUpdated(async (app2, uid, parentUid, component) => {
var _a10, _b10, _c;
if (devtoolsState.highPerfModeEnabled)
return;
if ((_c = (_b10 = (_a10 = app2 == null ? void 0 : app2._instance) == null ? void 0 : _a10.type) == null ? void 0 : _b10.devtools) == null ? void 0 : _c.hide)
return;
if (!app2 || typeof uid !== "number" && !uid || !component)
return;
const id = await getComponentId({
app: app2,
uid,
instance: component
});
const appRecord = await getAppRecord(app2);
if (component) {
if (component.__VUE_DEVTOOLS_UID__ == null)
component.__VUE_DEVTOOLS_UID__ = id;
if (!(appRecord == null ? void 0 : appRecord.instanceMap.has(id))) {
appRecord == null ? void 0 : appRecord.instanceMap.set(id, component);
devtoolsAppRecords.active.instanceMap = appRecord.instanceMap;
}
}
if (!appRecord)
return;
debounceSendInspectorTree();
debounceSendInspectorState();
});
const componentRemovedCleanup = hook.on.componentRemoved(async (app2, uid, parentUid, component) => {
var _a10, _b10, _c;
if (devtoolsState.highPerfModeEnabled)
return;
if ((_c = (_b10 = (_a10 = app2 == null ? void 0 : app2._instance) == null ? void 0 : _a10.type) == null ? void 0 : _b10.devtools) == null ? void 0 : _c.hide)
return;
if (!app2 || typeof uid !== "number" && !uid || !component)
return;
const appRecord = await getAppRecord(app2);
if (!appRecord)
return;
const id = await getComponentId({
app: app2,
uid,
instance: component
});
appRecord == null ? void 0 : appRecord.instanceMap.delete(id);
devtoolsAppRecords.active.instanceMap = appRecord.instanceMap;
debounceSendInspectorTree();
});
devtoolsContext.componentPluginHookBuffer = [
componentAddedCleanup,
componentUpdatedCleanup,
componentRemovedCleanup
];
});
}
// src/core/app-record/index.ts
function getAppRecordName(app, fallbackName) {
var _a10;
return ((_a10 = app == null ? void 0 : app._component) == null ? void 0 : _a10.name) || `App ${fallbackName}`;
}
function getAppRootInstance(app) {
var _a10, _b10, _c, _d;
if (app._instance)
return app._instance;
else if ((_b10 = (_a10 = app._container) == null ? void 0 : _a10._vnode) == null ? void 0 : _b10.component)
return (_d = (_c = app._container) == null ? void 0 : _c._vnode) == null ? void 0 : _d.component;
}
function getAppRecordId(app, defaultId) {
if (app.__VUE_DEVTOOLS_APP_RECORD_ID__ != null)
return app.__VUE_DEVTOOLS_APP_RECORD_ID__;
let id = defaultId != null ? defaultId : (appRecordInfo.id++).toString();
if (defaultId && appRecordInfo.appIds.has(id)) {
let count = 1;
while (appRecordInfo.appIds.has(`${defaultId}_${count}`))
count++;
id = `${defaultId}_${count}`;
}
appRecordInfo.appIds.add(id);
app.__VUE_DEVTOOLS_APP_RECORD_ID__ = id;
return id;
}
function createAppRecord(app) {
const rootInstance = getAppRootInstance(app);
if (rootInstance) {
appRecordInfo.id++;
const name = getAppRecordName(app, appRecordInfo.id.toString());
const id = getAppRecordId(app, (0, import_speakingurl.default)(name));
const record = {
id,
name,
instanceMap: /* @__PURE__ */ new Map(),
rootInstance
};
app.__VUE_DEVTOOLS_APP_RECORD__ = record;
const rootId = `${record.id}:root`;
record.instanceMap.set(rootId, record.rootInstance);
record.rootInstance.__VUE_DEVTOOLS_UID__ = rootId;
return record;
} else {
return {};
}
}
async function setActiveAppRecord(appRecord) {
await registerComponentDevToolsPlugin(appRecord == null ? void 0 : appRecord.app);
devtoolsAppRecords.active = appRecord;
devtoolsAppRecords.activeId = `${appRecord.id}`;
registerPlugin(appRecord.app, appRecord.api);
}
async function toggleActiveAppRecord(id) {
devtoolsContext.componentPluginHookBuffer.forEach((cleanup) => cleanup());
devtoolsContext.api.clear();
devtoolsContext.clear();
const appRecord = devtoolsAppRecords.value.find((record) => record.id === id);
if (appRecord) {
devtoolsState.pluginBuffer = devtoolsState.pluginBuffer.filter(([plugin]) => plugin.id !== "components");
const api = new DevToolsPluginApi();
appRecord.api = api;
setActiveAppRecord(appRecord);
}
}
// src/core/component-highlighter/index.ts
init_cjs_shims();
var CONTAINER_ELEMENT_ID = "__vue-devtools-component-inspector__";
var CARD_ELEMENT_ID = "__vue-devtools-component-inspector__card__";
var COMPONENT_NAME_ELEMENT_ID = "__vue-devtools-component-inspector__name__";
var INDICATOR_ELEMENT_ID = "__vue-devtools-component-inspector__indicator__";
var containerStyles = {
display: "block",
zIndex: 2147483640,
position: "fixed",
backgroundColor: "#42b88325",
border: "1px solid #42b88350",
borderRadius: "5px",
transition: "all 0.1s ease-in",
pointerEvents: "none"
};
var cardStyles = {
fontFamily: "Arial, Helvetica, sans-serif",
padding: "5px 8px",
borderRadius: "4px",
textAlign: "left",
position: "absolute",
left: 0,
color: "#e9e9e9",
fontSize: "14px",
fontWeight: 600,
lineHeight: "24px",
backgroundColor: "#42b883",
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)"
};
var indicatorStyles = {
display: "inline-block",
fontWeight: 400,
fontStyle: "normal",
fontSize: "12px",
opacity: 0.7
};
function getContainerElement() {
return document.getElementById(CONTAINER_ELEMENT_ID);
}
function getCardElement() {
return document.getElementById(CARD_ELEMENT_ID);
}
function getIndicatorElement() {
return document.getElementById(INDICATOR_ELEMENT_ID);
}
function getNameElement() {
return document.getElementById(COMPONENT_NAME_ELEMENT_ID);
}
function getStyles(bounds) {
return {
left: `${Math.round(bounds.left * 100) / 100}px`,
top: `${Math.round(bounds.top * 100) / 100}px`,
width: `${Math.round(bounds.width * 100) / 100}px`,
height: `${Math.round(bounds.height * 100) / 100}px`
};
}
function create(options) {
var _a10;
const containerEl = document.createElement("div");
containerEl.id = (_a10 = options.elementId) != null ? _a10 : CONTAINER_ELEMENT_ID;
Object.assign(containerEl.style, {
...containerStyles,
...getStyles(options.bounds),
...options.style
});
const cardEl = document.createElement("span");
cardEl.id = CARD_ELEMENT_ID;
Object.assign(cardEl.style, {
...cardStyles,
top: options.bounds.top < 35 ? 0 : "-35px"
});
const nameEl = document.createElement("span");
nameEl.id = COMPONENT_NAME_ELEMENT_ID;
nameEl.innerHTML = `<${options.name}> `;
const indicatorEl = document.createElement("i");
indicatorEl.id = INDICATOR_ELEMENT_ID;
indicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;
Object.assign(indicatorEl.style, indicatorStyles);
cardEl.appendChild(nameEl);
cardEl.appendChild(indicatorEl);
containerEl.appendChild(cardEl);
document.body.appendChild(containerEl);
return containerEl;
}
function update(options) {
const containerEl = getContainerElement();
const cardEl = getCardElement();
const nameEl = getNameElement();
const indicatorEl = getIndicatorElement();
if (containerEl) {
Object.assign(containerEl.style, {
...containerStyles,
...getStyles(options.bounds)
});
Object.assign(cardEl.style, {
top: options.bounds.top < 35 ? 0 : "-35px"
});
nameEl.innerHTML = `<${options.name}> `;
indicatorEl.innerHTML = `${Math.round(options.bounds.width * 100) / 100} x ${Math.round(options.bounds.height * 100) / 100}`;
}
}
function toggleComponentHighLighter(options) {
if (options.visible) {
const instance = getComponentInstance(devtoolsContext.appRecord, options.id);
if (instance && (options.bounds.width || options.bounds.height)) {
const name = getInstanceName(instance);
const el = getContainerElement();
el ? update({ ...options, name }) : create({ ...options, name });
}
} else {
const el = getContainerElement();
if (el)
el.style.display = "none";
}
}
function highlight(instance) {
const bounds = getComponentBoundingRect(instance);
const name = getInstanceName(instance);
const container = getContainerElement();
container ? update({ bounds, name }) : create({ bounds, name });
}
function unhighlight() {
const el = getContainerElement();
if (el)
el.style.display = "none";
}
var inspectInstance = null;
function inspectFn(e) {
const target10 = e.target;
if (target10) {
const instance = target10.__vueParentComponent;
if (instance) {
inspectInstance = instance;
const el = instance.vnode.el;
if (el) {
const bounds = getComponentBoundingRect(instance);
const name = getInstanceName(instance);
const container = getContainerElement();
container ? update({ bounds, name }) : create({ bounds, name });
}
}
}
}
function selectComponentFn(e, cb) {
var _a10;
e.preventDefault();
e.stopPropagation();
if (inspectInstance) {
const app = (_a10 = devtoolsContext.appRecord) == null ? void 0 : _a10.app;
getComponentId({
app,
uid: app.uid,
instance: inspectInstance
}).then((id) => {
cb(id);
});
}
}
function inspectComponentHighLighter() {
window.addEventListener("mouseover", inspectFn);
return new Promise((resolve) => {
function onSelect(e) {
e.preventDefault();
e.stopPropagation();
selectComponentFn(e, (id) => {
window.removeEventListener("click", onSelect);
window.removeEventListener("mouseover", inspectFn);
const el = getContainerElement();
if (el)
el.style.display = "none";
resolve(JSON.stringify({ id }));
});
}
window.addEventListener("click", onSelect);
});
}
function scrollToComponent(options) {
const instance = getComponentInstance(devtoolsContext.appRecord, options.id);
if (instance) {
const [el] = getRootElementsFromComponentInstance(instance);
if (typeof el.scrollIntoView === "function") {
el.scrollIntoView({
behavior: "smooth"
});
} else {
const bounds = getComponentBoundingRect(instance);
const scrollTarget = document.createElement("div");
const styles = {
...getStyles(bounds),
position: "absolute"
};
Object.assign(scrollTarget.style, styles);
document.body.appendChild(scrollTarget);
scrollTarget.scrollIntoView({
behavior: "smooth"
});
setTimeout(() => {
document.body.removeChild(scrollTarget);
}, 2e3);
}
setTimeout(() => {
const bounds = getComponentBoundingRect(instance);
if (bounds.width || bounds.height) {
const name = getInstanceName(instance);
const el2 = getContainerElement();
el2 ? update({ ...options, name, bounds }) : create({ ...options, name, bounds });
setTimeout(() => {
if (el2)
el2.style.display = "none";
}, 1500);
}
}, 1200);
}
}
// src/shared/index.ts
init_cjs_shims();
// src/shared/util.ts
init_cjs_shims();
// src/core/component/state/replacer.ts
init_cjs_shims();
// src/core/component/state/custom.ts
init_cjs_shims();
function getFunctionDetails(func) {
let string = "";
let matches = null;
try {
string = Function.prototype.toString.call(func);
matches = String.prototype.match.call(string, /\([\s\S]*?\)/);
} catch (e) {
}
const match = matches && matches[0];
const args = typeof match === "string" ? match : "(?)";
const name = typeof func.name === "string" ? func.name : "";
return {
_custom: {
type: "function",
displayText: `function ${escape(name)}${args}`,
tooltipText: string.trim() ? `
${string}` : null } }; } function getBigIntDetails(val) { const stringifiedBigInt = BigInt.prototype.toString.call(val); return { _custom: { type: "bigint", displayText: `BigInt(${stringifiedBigInt})`, value: stringifiedBigInt } }; } function getDateDetails(val) { const date = new Date(val.getTime()); date.setMinutes(date.getMinutes() - date.getTimezoneOffset()); return { _custom: { type: "date", displayText: Date.prototype.toString.call(val), value: date.toISOString().slice(0, -1) } }; } function getMapDetails(val) { const list = Object.fromEntries(val); return { _custom: { type: "map", displayText: "Map", value: list, readOnly: true, fields: { abstract: true } } }; } function getSetDetails(val) { const list = Array.from(val); return { _custom: { type: "set", displayText: `Set[${list.length}]`, value: list, readOnly: true } }; } function getCatchedGetters(store) { const getters = {}; const origGetters = store.getters || {}; const keys = Object.keys(origGetters); for (let i = 0; i < keys.length; i++) { const key = keys[i]; Object.defineProperty(getters, key, { enumerable: true, get: () => { try { return origGetters[key]; } catch (e) { return e; } } }); } return getters; } function reduceStateList(list) { if (!list.length) return void 0; return list.reduce((map, item) => { const key = item.type || "data"; const obj = map[key] = map[key] || {}; obj[item.key] = item.value; return map; }, {}); } function namedNodeMapToObject(map) { const result = {}; const l = map.length; for (let i = 0; i < l; i++) { const node = map.item(i); result[node.name] = node.value; } return result; } function getStoreDetails(store) { return { _custom: { type: "store", displayText: "Store", value: { state: store.state, getters: getCatchedGetters(store) }, fields: { abstract: true } } }; } function getRouterDetails(router) { return { _custom: { type: "router", displayText: "VueRouter", value: { options: router.options, currentRoute: router.currentRoute }, fields: { abstract: true } } }; } function getInstanceDetails(instance) { if (instance._) instance = instance._; const state = processInstanceState(instance); return { _custom: { type: "component", id: instance.__VUE_DEVTOOLS_UID__, displayText: getInstanceName(instance), tooltipText: "Component instance", value: reduceStateList(state), fields: { abstract: true } } }; } function getComponentDefinitionDetails(definition) { let display = getComponentName(definition); if (display) { if (definition.name && definition.__file) display += ` (${definition.__file})`; } else { display = "Unknown Component"; } return { _custom: { type: "component-definition", displayText: display, tooltipText: "Component definition", ...definition.__file ? { file: definition.__file } : {} } }; } function getHTMLElementDetails(value) { try { return { _custom: { type: "HTMLElement", displayText: `<${value.tagName.toLowerCase()}>`, value: namedNodeMapToObject(value.attributes) } }; } catch (e) { return { _custom: { type: "HTMLElement", displayText: `${String(value)}` } }; } } function getObjectDetails(object) { var _a10, _b10, _c, _d; const info = getSetupStateType(object); const isState = info.ref || info.computed || info.reactive; if (isState) { const stateTypeName = info.computed ? "Computed" : info.ref ? "Ref" : info.reactive ? "Reactive" : null; const value = toRaw2(info.reactive ? object : object._value); const raw = ((_b10 = (_a10 = object.effect) == null ? void 0 : _a10.raw) == null ? void 0 : _b10.toString()) || ((_d = (_c = object.effect) == null ? void 0 : _c.fn) == null ? void 0 : _d.toString()); return { _custom: { type: stateTypeName == null ? void 0 : stateTypeName.toLowerCase(), stateTypeName, value, ...raw ? { tooltipText: `${raw}` } : {} } }; } if (typeof object.__asyncLoader === "function") { return { _custom: { type: "component-definition", display: "Async component definition" } }; } } // src/core/component/state/replacer.ts function stringifyReplacer(key) { var _a10; if (key === "compilerOptions") return; const val = this[key]; const type = typeof val; if (Array.isArray(val)) { const l = val.length; if (l > MAX_ARRAY_SIZE) { return { _isArray: true, length: l, items: val.slice(0, MAX_ARRAY_SIZE) }; } return val; } else if (typeof val === "string") { if (val.length > MAX_STRING_SIZE) return `${val.substring(0, MAX_STRING_SIZE)}... (${val.length} total length)`; else return val; } else if (type === "undefined") { return UNDEFINED; } else if (val === Number.POSITIVE_INFINITY) { return INFINITY; } else if (val === Number.NEGATIVE_INFINITY) { return NEGATIVE_INFINITY; } else if (typeof val === "function") { return getFunctionDetails(val); } else if (type === "symbol") { return `[native Symbol ${Symbol.prototype.toString.call(val)}]`; } else if (typeof val === "bigint") { return getBigIntDetails(val); } else if (val !== null && typeof val === "object") { const proto = Object.prototype.toString.call(val); if (proto === "[object Map]") { return getMapDetails(val); } else if (proto === "[object Set]") { return getSetDetails(val); } else if (proto === "[object RegExp]") { return `[native RegExp ${RegExp.prototype.toString.call(val)}]`; } else if (proto === "[object Date]") { return getDateDetails(val); } else if (proto === "[object Error]") { return `[native Error ${val.message}<>${val.stack}]`; } else if (val.state && val._vm) { return getStoreDetails(val); } else if (val.constructor && val.constructor.name === "VueRouter") { return getRouterDetails(val); } else if (isVueInstance(val)) { return getInstanceDetails(val); } else if (typeof val.render === "function") { return getComponentDefinitionDetails(val); } else if (val.constructor && val.constructor.name === "VNode") { return `[native VNode <${val.tag}>]`; } else if (typeof HTMLElement !== "undefined" && val instanceof HTMLElement) { return getHTMLElementDetails(val); } else if (((_a10 = val.constructor) == null ? void 0 : _a10.name) === "Store" && val._wrappedGetters) { return "[object Store]"; } else if (val.currentRoute) { return "[object Router]"; } const customDetails = getObjectDetails(val); if (customDetails != null) return customDetails; } else if (Number.isNaN(val)) { return NAN; } return sanitize(val); } // src/core/component/state/reviver.ts init_cjs_shims(); var import_devtools_shared7 = require("@vue/devtools-shared"); function reviveSet(val) { const result = /* @__PURE__ */ new Set(); const list = val._custom.value; for (let i = 0; i < list.length; i++) { const value = list[i]; result.add(revive(value)); } return result; } function reviveMap(val) { const result = /* @__PURE__ */ new Map(); const list = val._custom.value; for (let i = 0; i < list.length; i++) { const { key, value } = list[i]; result.set(key, revive(value)); } return result; } function revive(val) { var _a10; if (val === UNDEFINED) { return void 0; } else if (val === INFINITY) { return Number.POSITIVE_INFINITY; } else if (val === NEGATIVE_INFINITY) { return Number.NEGATIVE_INFINITY; } else if (val === NAN) { return Number.NaN; } else if (val && val._custom) { const { _custom: custom } = val; if (custom.type === "component") return (_a10 = devtoolsContext.appRecord) == null ? void 0 : _a10.instanceMap.get(custom.id); else if (custom.type === "map") return reviveMap(val); else if (custom.type === "set") return reviveSet(val); else if (custom.type === "bigint") return BigInt(custom.value); else return revive(custom.value); } else if (symbolRE.test(val)) { const [, string] = symbolRE.exec(val); return Symbol.for(string); } else if (specialTypeRE.test(val)) { const [, type, string, , details] = specialTypeRE.exec(val); const result = new import_devtools_shared7.target[type](string); if (type === "Error" && details) result.stack = details; return result; } else { return val; } } function reviver(key, value) { return revive(value); } // src/shared/transfer.ts init_cjs_shims(); var MAX_SERIALIZED_SIZE = 512 * 1024; function encode(data, replacer, list, seen) { let stored, key, value, i, l; const seenIndex = seen.get(data); if (seenIndex != null) return seenIndex; const index = list.length; const proto = Object.prototype.toString.call(data); if (proto === "[object Object]") { stored = {}; seen.set(data, index); list.push(stored); const keys = Object.keys(data); for (i = 0, l = keys.length; i < l; i++) { key = keys[i]; try { if (key === "compilerOptions") return; value = data[key]; if (replacer) value = replacer.call(data, key, value); } catch (e) { value = e; } stored[key] = encode(value, replacer, list, seen); } } else if (proto === "[object Array]") { stored = []; seen.set(data, index); list.push(stored); for (i = 0, l = data.length; i < l; i++) { try { value = data[i]; if (replacer) value = replacer.call(data, i, value); } catch (e) { value = e; } stored[i] = encode(value, replacer, list, seen); } } else { list.push(data); } return index; } function decode(list, reviver2 = null) { let i = list.length; let j, k, data, key, value, proto; while (i--) { data = list[i]; proto = Object.prototype.toString.call(data); if (proto === "[object Object]") { const keys = Object.keys(data); for (j = 0, k = keys.length; j < k; j++) { key = keys[j]; value = list[data[key]]; if (reviver2) value = reviver2.call(data, key, value); data[key] = value; } } else if (proto === "[object Array]") { for (j = 0, k = data.length; j < k; j++) { value = list[data[j]]; if (reviver2) value = reviver2.call(data, j, value); data[j] = value; } } } } function stringifyCircularAutoChunks(data, replacer = null, space = null) { let result; try { result = arguments.length === 1 ? JSON.stringify(data) : JSON.stringify(data, replacer, space); } catch (e) { result = stringifyStrictCircularAutoChunks(data, replacer, space); } if (result.length > MAX_SERIALIZED_SIZE) { const chunkCount = Math.ceil(result.length / MAX_SERIALIZED_SIZE); const chunks = []; for (let i = 0; i < chunkCount; i++) chunks.push(result.slice(i * MAX_SERIALIZED_SIZE, (i + 1) * MAX_SERIALIZED_SIZE)); return chunks; } return result; } function stringifyStrictCircularAutoChunks(data, replacer = null, space = null) { const list = []; encode(data, replacer, list, /* @__PURE__ */ new Map()); return space ? ` ${JSON.stringify(list, null, space)}` : ` ${JSON.stringify(list)}`; } function parseCircularAutoChunks(data, reviver2 = null) { if (Array.isArray(data)) data = data.join(""); const hasCircular = /^\s/.test(data); if (!hasCircular) { return arguments.length === 1 ? JSON.parse(data) : JSON.parse(data, reviver2); } else { const list = JSON.parse(data); decode(list, reviver2); return list[0]; } } // src/core/component/state/format.ts init_cjs_shims(); function getInspectorStateValueType(value, raw = true) { const type = typeof value; if (value == null || value === UNDEFINED || value === "undefined") { return "null"; } else if (type === "boolean" || type === "number" || value === INFINITY || value === NEGATIVE_INFINITY || value === NAN) { return "literal"; } else if (value == null ? void 0 : value._custom) { if (raw || value._custom.display != null || value._custom.displayText != null) return "custom"; else return getInspectorStateValueType(value._custom.value); } else if (typeof value === "string") { const typeMatch = specialTypeRE.exec(value); if (typeMatch) { const [, type2] = typeMatch; return `native ${type2}`; } else { return "string"; } } else if (Array.isArray(value) || (value == null ? void 0 : value._isArray)) { return "array"; } else if (isPlainObject(value)) { return "plain-object"; } else { return "unknown"; } } function formatInspectorStateValue(value, quotes = false) { var _a10, _b10; let result; const type = getInspectorStateValueType(value, false); if (type !== "custom" && (value == null ? void 0 : value._custom)) value = value._custom.value; if (result = internalStateTokenToString(value)) { return result; } else if (type === "custom") { const nestedName = ((_a10 = value._custom.value) == null ? void 0 : _a10._custom) && formatInspectorStateValue(value._custom.value); return nestedName || value._custom.displayText || value._custom.display; } else if (type === "array") { return `Array[${value.length}]`; } else if (type === "plain-object") { return `Object${Object.keys(value).length ? "" : " (empty)"}`; } else if (type == null ? void 0 : type.includes("native")) { return escape((_b10 = specialTypeRE.exec(value)) == null ? void 0 : _b10[2]); } else if (typeof value === "string") { const typeMatch = value.match(rawTypeRE); if (typeMatch) value = escape(typeMatch[1]); else if (quotes) value = `"${escape(value)}"`; else value = escape(value); value = value.replace(/ /g, " ").replace(/\n/g, "\\n"); } return value; } function getRaw(value) { var _a10, _b10, _c; let customType; const isCustom = getInspectorStateValueType(value) === "custom"; let inherit = {}; if (isCustom) { const data = value; const customValue = (_a10 = data._custom) == null ? void 0 : _a10.value; const currentCustomType = (_b10 = data._custom) == null ? void 0 : _b10.type; const nestedCustom = typeof customValue === "object" && customValue !== null && "_custom" in customValue ? getRaw(customValue) : { inherit: void 0, value: void 0, customType: void 0 }; inherit = nestedCustom.inherit || ((_c = data._custom) == null ? void 0 : _c.fields) || {}; value = nestedCustom.value || customValue; customType = nestedCustom.customType || currentCustomType; } if (value && value._isArray) value = value.items; return { value, inherit, customType }; } function toEdit(value, customType) { if (customType === "bigint") return value; if (customType === "date") return value; return replaceTokenToString(JSON.stringify(value)); } function toSubmit(value, customType) { if (customType === "bigint") return BigInt(value); if (customType === "date") return new Date(value); return JSON.parse(replaceStringToToken(value), reviver); } // src/shared/util.ts function stringify(data) { return stringifyCircularAutoChunks(data, stringifyReplacer); } function parse(data, revive2 = false) { if (data == void 0) return {}; return revive2 ? parseCircularAutoChunks(data, reviver) : parseCircularAutoChunks(data); } // src/shared/time.ts init_cjs_shims(); function now() { return Date.now(); } // src/shared/env.ts init_cjs_shims(); // src/core/custom-tab/index.ts init_cjs_shims(); function addCustomTab(tab) { if (devtoolsState.tabs.some((t) => t.name === tab.name)) return; devtoolsState.tabs.push(tab); } // src/core/custom-command/index.ts init_cjs_shims(); function addCustomCommand(action) { if (devtoolsState.commands.some((t) => t.id === action.id)) return; devtoolsState.commands.push(action); } function removeCustomCommand(actionId) { const index = devtoolsState.commands.findIndex((t) => t.id === actionId); if (index === -1) return; devtoolsState.commands.splice(index, 1); } // src/core/component-inspector/index.ts init_cjs_shims(); var import_devtools_shared8 = require("@vue/devtools-shared"); var _a3, _b3; (_b3 = (_a3 = import_devtools_shared8.target).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__) != null ? _b3 : _a3.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = true; function toggleComponentInspectorEnabled(enabled) { import_devtools_shared8.target.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = enabled; } function waitForInspectorInit(cb) { let total = 0; const timer = setInterval(() => { if (import_devtools_shared8.target.__VUE_INSPECTOR__) { clearInterval(timer); total += 30; cb(); } if (total >= /* 5s */ 5e3) clearInterval(timer); }, 30); } function setupInspector() { const inspector = import_devtools_shared8.target.__VUE_INSPECTOR__; const _openInEditor = inspector.openInEditor; inspector.openInEditor = async (...params) => { inspector.disable(); _openInEditor(...params); }; } function getComponentInspector() { return new Promise((resolve) => { function setup() { setupInspector(); resolve(import_devtools_shared8.target.__VUE_INSPECTOR__); } if (!import_devtools_shared8.target.__VUE_INSPECTOR__) { waitForInspectorInit(() => { setup(); }); } else { setup(); } }); } // src/core/open-in-editor/index.ts init_cjs_shims(); var import_devtools_shared9 = require("@vue/devtools-shared"); function openInEditor(options = {}) { const { file, baseUrl = window.location.origin, line = 0, column = 0 } = options; if (file) { if (devtoolsState.vitePluginDetected) { import_devtools_shared9.target.__VUE_INSPECTOR__.openInEditor(baseUrl, file, line, column); } else { } } } // src/api/on.ts init_cjs_shims(); var on2 = { // #region compatible with old devtools addTimelineEvent(fn) { apiHooks.hook("timeline:add-event" /* ADD_TIMELINE_EVENT */, fn); }, inspectComponent(fn) { apiHooks.hook("component-state:inspect" /* COMPONENT_STATE_INSPECT */, fn); }, visitComponentTree(fn) { apiHooks.hook("component-tree:visit" /* VISIT_COMPONENT_TREE */, fn); }, getInspectorTree(fn) { apiHooks.hook("inspector-tree:get" /* GET_INSPECTOR_TREE */, fn); }, getInspectorState(fn) { apiHooks.hook("inspector-state:get" /* GET_INSPECTOR_STATE */, fn); }, sendInspectorTree(fn) { apiHooks.hook("inspector-tree:send" /* SEND_INSPECTOR_TREE */, fn); }, sendInspectorState(fn) { apiHooks.hook("inspector-state:send" /* SEND_INSPECTOR_STATE */, fn); }, editInspectorState(fn) { apiHooks.hook("inspector-state:edit" /* EDIT_INSPECTOR_STATE */, fn); }, editComponentState() { }, componentUpdated(fn) { apiHooks.hook("component:updated" /* COMPONENT_UPDATED */, fn); }, // #endregion compatible with old devtools // router routerInfoUpdated(fn) { apiHooks.hook("router-info:updated" /* ROUTER_INFO_UPDATED */, fn); }, // component highlighter getComponentBoundingRect(fn) { apiHooks.hook("component-bounding-rect:get" /* GET_COMPONENT_BOUNDING_RECT */, fn); }, // custom tabs customTabsUpdated(fn) { apiHooks.hook("custom-tabs:updated" /* CUSTOM_TABS_UPDATED */, fn); }, // custom commands customCommandsUpdated(fn) { apiHooks.hook("custom-commands:updated" /* CUSTOM_COMMANDS_UPDATED */, fn); }, devtoolsStateUpdated(fn) { apiHooks.hook("devtools:state-updated" /* DEVTOOLS_STATE_UPDATED */, fn); } }; // src/api/off.ts init_cjs_shims(); function remove() { apiHooks.removeAllHooks(); } // src/api/api.ts var DevToolsPluginApi = class { constructor() { this.clear = remove; this.on = on2; } // #region compatible with old devtools // timeline layer addTimelineLayer(payload) { addTimelineLayer(payload); } // timeline event addTimelineEvent(...params) { apiHooks.callHook("timeline:add-event" /* ADD_TIMELINE_EVENT */, ...params); } // add inspector addInspector(payload) { addInspector({ id: payload.id, nodeId: "", filter: "", treeFilterPlaceholder: payload.treeFilterPlaceholder || "" }); } highlightElement(instance) { highlight(instance); } unhighlightElement() { unhighlight(); } // inspector async getInspectorTree(payload = {}) { var _a10; const { inspectorId, filter = "", instanceId = "" } = payload; const _payload = { app: (_a10 = devtoolsContext.appRecord) == null ? void 0 : _a10.app, inspectorId, instanceId, filter, rootNodes: [] }; updateInspector(inspectorId, { filter }); await new Promise((resolve) => { apiHooks.callHookWith(async (callbacks) => { await Promise.all(callbacks.map((cb) => cb(_payload))); resolve(); }, "inspector-tree:get" /* GET_INSPECTOR_TREE */); }); return _payload.rootNodes; } getInspectorState(payload = {}) { var _a10; const { inspectorId, nodeId } = payload; const _payload = { app: (_a10 = devtoolsContext.appRecord) == null ? void 0 : _a10.app, inspectorId, nodeId }; updateInspector(inspectorId, { nodeId }); apiHooks.callHookWith((callbacks) => { callbacks.forEach((cb) => cb(_payload)); }, "inspector-state:get" /* GET_INSPECTOR_STATE */); const state = _payload.state; delete state.instance; return state; } async editInspectorState(payload) { var _a10; const stateEditor2 = new StateEditor(); apiHooks.callHook("inspector-state:edit" /* EDIT_INSPECTOR_STATE */, { ...payload, app: (_a10 = devtoolsContext.appRecord) == null ? void 0 : _a10.app, set: (obj, path = payload.path, value = payload.state.value, cb) => { stateEditor2.set(obj, path, value, cb || stateEditor2.createDefaultSetCallback(payload.state)); } }); } async sendInspectorTree(inspectorId) { const inspector = getInspector(inspectorId); if (inspector) { const res = await this.getInspectorTree({ inspectorId }); apiHooks.callHook("inspector-tree:send" /* SEND_INSPECTOR_TREE */, { inspectorId, data: res }); } } async sendInspectorState(inspectorId) { const inspector = getInspector(inspectorId); if (inspector && inspector.nodeId) { const res = await this.getInspectorState({ inspectorId, nodeId: inspector.nodeId }); apiHooks.callHook("inspector-state:send" /* SEND_INSPECTOR_STATE */, { ...res, inspectorId }); } } async getComponentInstances(app) { const appRecord = app.__VUE_DEVTOOLS_APP_RECORD__; const appId = appRecord.id.toString(); const instances = [...appRecord.instanceMap].filter(([key]) => key.split(":")[0] === appId).map(([, instance]) => instance); return instances; } visitComponentTree(...params) { apiHooks.callHook("component-tree:visit" /* VISIT_COMPONENT_TREE */, ...params); } notifyComponentUpdate() { apiHooks.callHook("component:updated" /* COMPONENT_UPDATED */); } now() { return now(); } getSettings() { return { logStoreChanges: null }; } // #endregion compatible with old devtools // #region highlighter toggleComponentInspector(...params) { return toggleComponentHighLighter(...params); } inspectComponentInspector() { return inspectComponentHighLighter(); } scrollToComponent(...params) { return scrollToComponent(...params); } getComponentBoundingRect(...params) { var _a10; const { inspectorId, instanceId = "" } = params[0]; const _payload = { app: (_a10 = devtoolsContext.appRecord) == null ? void 0 : _a10.app, inspectorId, instanceId, rect: { top: 0, left: 0, width: 0, height: 0 } }; apiHooks.callHookWith((callbacks) => { callbacks.map((cb) => cb(_payload)); }, "component-bounding-rect:get" /* GET_COMPONENT_BOUNDING_RECT */); return stringify(_payload.rect); } // #endregion highlighter toggleApp(id) { return toggleActiveAppRecord(id); } addCustomTab(tab) { addCustomTab(tab); } addCustomCommand(action) { addCustomCommand(action); } removeCustomCommand(actionId) { removeCustomCommand(actionId); } openInEditor(payload) { openInEditor(payload); } getVueInspector() { return getComponentInspector(); } }; // src/state/state.ts var STATE_KEY = "__VUE_DEVTOOLS_GLOBAL_STATE__"; function initStateFactory() { return { connected: false, clientConnected: false, appRecords: [], activeAppRecord: null, selectedComponentId: null, pluginBuffer: [], tabs: [], commands: [], vitePluginDetected: false, activeAppRecordId: null, highPerfModeEnabled: false }; } var _a4, _b4; (_b4 = (_a4 = import_devtools_shared10.target)[STATE_KEY]) != null ? _b4 : _a4[STATE_KEY] = initStateFactory(); var callStateUpdatedHook = (0, import_perfect_debounce3.debounce)((state, oldState) => { apiHooks.callHook("devtools:state-updated" /* DEVTOOLS_STATE_UPDATED */, state, oldState); }, 80); var callConnectedUpdatedHook = (0, import_perfect_debounce3.debounce)((state, oldState) => { apiHooks.callHook("devtools:connected-updated" /* DEVTOOLS_CONNECTED_UPDATED */, state, oldState); }, 80); var devtoolsState = new Proxy(import_devtools_shared10.target[STATE_KEY], { get(target10, property) { return import_devtools_shared10.target[STATE_KEY][property]; }, deleteProperty(target10, property) { delete target10[property]; return true; }, set(target10, property, value) { const oldState = { ...import_devtools_shared10.target[STATE_KEY] }; target10[property] = value; import_devtools_shared10.target[STATE_KEY][property] = value; callStateUpdatedHook(import_devtools_shared10.target[STATE_KEY], oldState); if (["connected", "clientConnected"].includes(property.toString()) && oldState[property] !== value) callConnectedUpdatedHook(import_devtools_shared10.target[STATE_KEY], oldState); return true; } }); Object.defineProperty(devtoolsState.tabs, "push", { configurable: true, value(...items) { const result = Array.prototype.push.apply(this, items); devtoolsState.tabs = this; apiHooks.callHook("custom-tabs:updated" /* CUSTOM_TABS_UPDATED */, this); return result; } }); ["push", "splice"].forEach((method) => { Object.defineProperty(devtoolsState.commands, method, { configurable: true, value(...args) { const result = Array.prototype[method].apply(this, args); devtoolsState.commands = this; apiHooks.callHook("custom-commands:updated" /* CUSTOM_COMMANDS_UPDATED */, this); return result; } }); }); // src/state/app-record.ts init_cjs_shims(); var import_devtools_shared13 = require("@vue/devtools-shared"); // src/state/router.ts init_cjs_shims(); var import_devtools_shared11 = require("@vue/devtools-shared"); var ROUTER_KEY = "__VUE_DEVTOOLS_ROUTER__"; var ROUTER_INFO_KEY = "__VUE_DEVTOOLS_ROUTER_INFO__"; var _a5, _b5; (_b5 = (_a5 = import_devtools_shared11.target)[ROUTER_INFO_KEY]) != null ? _b5 : _a5[ROUTER_INFO_KEY] = { currentRoute: null, routes: [] }; var _a6, _b6; (_b6 = (_a6 = import_devtools_shared11.target)[ROUTER_KEY]) != null ? _b6 : _a6[ROUTER_KEY] = null; var devtoolsRouterInfo = new Proxy(import_devtools_shared11.target[ROUTER_INFO_KEY], { get(target10, property) { return import_devtools_shared11.target[ROUTER_INFO_KEY][property]; } }); // src/state/context.ts init_cjs_shims(); var import_devtools_shared12 = require("@vue/devtools-shared"); var CONTEXT_KEY = "__VUE_DEVTOOLS_CONTEXT__"; function initContextFactory() { return { appRecord: null, api: null, inspector: [], timelineLayer: [], routerInfo: {}, router: null, activeInspectorTreeId: "", componentPluginHookBuffer: [] }; } var _a7, _b7; (_b7 = (_a7 = import_devtools_shared12.target)[CONTEXT_KEY]) != null ? _b7 : _a7[CONTEXT_KEY] = initContextFactory(); function resetDevToolsContext() { import_devtools_shared12.target[CONTEXT_KEY] = initContextFactory(); } var devtoolsContext = new Proxy(import_devtools_shared12.target[CONTEXT_KEY], { get(target10, property) { if (property === "router") return import_devtools_shared12.target[ROUTER_KEY]; else if (property === "clear") return resetDevToolsContext; return import_devtools_shared12.target[CONTEXT_KEY][property]; }, set(target10, property, value) { import_devtools_shared12.target[CONTEXT_KEY][property] = value; return true; } }); // src/state/app-record.ts var devtoolsAppRecords = new Proxy(devtoolsState.appRecords, { get(_, property) { if (property === "value") return devtoolsState.appRecords; else if (property === "active") return devtoolsState.activeAppRecord; else if (property === "activeId") return devtoolsState.activeAppRecordId; }, set(target10, property, value) { var _a10; const oldState = { ...devtoolsState }; if (property === "value") { devtoolsState.appRecords = value; } else if (property === "active") { const _value = value; devtoolsState.activeAppRecord = _value; devtoolsContext.appRecord = _value; devtoolsContext.api = _value.api; devtoolsContext.inspector = (_a10 = _value.inspector) != null ? _a10 : []; normalizeRouterInfo(value); devtoolsContext.routerInfo = devtoolsRouterInfo; } else if (property === "activeId") { devtoolsState.activeAppRecordId = value; } callStateUpdatedHook(devtoolsState, oldState); if (["connected", "clientConnected"].includes(property.toString()) && oldState[property] !== value) callConnectedUpdatedHook(devtoolsState, oldState); return true; } }); var _a8, _b8; var appRecordInfo = (_b8 = (_a8 = import_devtools_shared13.target).__VUE_DEVTOOLS_APP_RECROD_INFO__) != null ? _b8 : _a8.__VUE_DEVTOOLS_APP_RECROD_INFO__ = { id: 0, appIds: /* @__PURE__ */ new Set() }; // src/state/env.ts init_cjs_shims(); var import_devtools_shared14 = require("@vue/devtools-shared"); var _a9, _b9; (_b9 = (_a9 = import_devtools_shared14.target).__VUE_DEVTOOLS_ENV__) != null ? _b9 : _a9.__VUE_DEVTOOLS_ENV__ = { vitePluginDetected: false }; function getDevToolsEnv() { return import_devtools_shared14.target.__VUE_DEVTOOLS_ENV__; } function setDevToolsEnv(env) { import_devtools_shared14.target.__VUE_DEVTOOLS_ENV__ = { ...import_devtools_shared14.target.__VUE_DEVTOOLS_ENV__, ...env }; } // src/compat/index.ts init_cjs_shims(); var import_devtools_shared15 = require("@vue/devtools-shared"); function onLegacyDevToolsPluginApiAvailabled(cb) { if (import_devtools_shared15.target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__) { cb(); return; } Object.defineProperty(import_devtools_shared15.target, "__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__", { set(value) { if (value) cb(); }, configurable: true }); } // src/core/index.ts function initDevTools() { var _a10; devtoolsState.vitePluginDetected = getDevToolsEnv().vitePluginDetected; const isDevToolsNext = ((_a10 = import_devtools_shared16.target.__VUE_DEVTOOLS_GLOBAL_HOOK__) == null ? void 0 : _a10.id) === "vue-devtools-next"; if (import_devtools_shared16.target.__VUE_DEVTOOLS_GLOBAL_HOOK__ && isDevToolsNext) return; if (!import_devtools_shared16.target.__VUE_DEVTOOLS_GLOBAL_HOOK__) { import_devtools_shared16.target.__VUE_DEVTOOLS_GLOBAL_HOOK__ = createDevToolsHook(); } else { if (!import_devtools_shared16.isNuxtApp) { Object.assign(__VUE_DEVTOOLS_GLOBAL_HOOK__, createDevToolsHook()); } } hook.on.setupDevtoolsPlugin((pluginDescriptor, setupFn) => { collectDevToolsPlugin(pluginDescriptor, setupFn); const { app, api } = devtoolsAppRecords.active || {}; if (!app || !api) return; setupExternalPlugin([pluginDescriptor, setupFn], app, api); }); onLegacyDevToolsPluginApiAvailabled(() => { const normalizedPluginBuffer = devtoolsState.pluginBuffer.filter(([item]) => item.id !== "components"); normalizedPluginBuffer.forEach(([pluginDescriptor, setupFn]) => { import_devtools_shared16.target.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit("devtools-plugin:setup" /* SETUP_DEVTOOLS_PLUGIN */, pluginDescriptor, setupFn, { target: "legacy" }); }); }); hook.on.vueAppInit(async (app, version) => { const record = createAppRecord(app); const api = new DevToolsPluginApi(); devtoolsAppRecords.value = [ ...devtoolsAppRecords.value, { ...record, app, version, api } ]; if (devtoolsAppRecords.value.length === 1) { await setActiveAppRecord(devtoolsAppRecords.value[0]); devtoolsState.connected = true; devtoolsHooks.callHook("app:connected" /* APP_CONNECTED */); } }); subscribeDevToolsHook(); } function onDevToolsConnected(fn) { return new Promise((resolve) => { if (devtoolsState.connected) { fn(); resolve(); return; } apiHooks.hook("devtools:connected-updated" /* DEVTOOLS_CONNECTED_UPDATED */, (state) => { if (state.connected) { fn(); resolve(); } }); }); } function onDevToolsClientConnected(fn) { return new Promise((resolve) => { if (devtoolsState.connected && devtoolsState.clientConnected) { fn(); resolve(); return; } apiHooks.hook("devtools:connected-updated" /* DEVTOOLS_CONNECTED_UPDATED */, (state) => { if (state.connected && state.clientConnected) { fn(); resolve(); } }); }); } // src/core/high-perf-mode/index.ts init_cjs_shims(); function toggleHighPerfMode(state) { devtoolsState.highPerfModeEnabled = state != null ? state : !devtoolsState.highPerfModeEnabled; } // src/index.ts var devtools = { state: devtoolsState, context: devtoolsContext, hook, init: initDevTools, get api() { return devtoolsContext.api; } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { UNDEFINED, addCustomCommand, addCustomTab, devtools, formatInspectorStateValue, getInspectorStateValueType, getRaw, onDevToolsClientConnected, onDevToolsConnected, parse, removeCustomCommand, setDevToolsEnv, setupDevToolsPlugin, stringify, toEdit, toSubmit, toggleComponentInspectorEnabled, toggleHighPerfMode });