From 9a961079cd1147dfd27bf901a1f1dcf21e17087e Mon Sep 17 00:00:00 2001 From: JaxxMoss Date: Thu, 8 May 2025 23:13:48 +0200 Subject: [PATCH] .gitignore update: ignore contents of public directory on dev branches --- .gitignore | 2 +- public/assets/DevicesView-DqasecOn.js | 1758 --- public/assets/DevicesView-Dw_Mls3X.css | 87 - public/assets/DialogComp-Ba5-BUTe.js | 106 - public/assets/DialogComp-ByJn29_w.css | 357 - public/assets/MacrosView-B-ccNLSC.css | 624 - public/assets/MacrosView-Bf1eb3go.js | 1419 -- public/assets/PanelsView-DHxhdGwy.js | 9 - public/assets/SettingsView-CVQl1jsc.js | 9 - public/assets/index-DjeOPht9.css | 2256 --- public/assets/index-GNAKlyBz.js | 18013 ----------------------- public/index.html | 19 - 12 files changed, 1 insertion(+), 24658 deletions(-) delete mode 100644 public/assets/DevicesView-DqasecOn.js delete mode 100644 public/assets/DevicesView-Dw_Mls3X.css delete mode 100644 public/assets/DialogComp-Ba5-BUTe.js delete mode 100644 public/assets/DialogComp-ByJn29_w.css delete mode 100644 public/assets/MacrosView-B-ccNLSC.css delete mode 100644 public/assets/MacrosView-Bf1eb3go.js delete mode 100644 public/assets/PanelsView-DHxhdGwy.js delete mode 100644 public/assets/SettingsView-CVQl1jsc.js delete mode 100644 public/assets/index-DjeOPht9.css delete mode 100644 public/assets/index-GNAKlyBz.js delete mode 100644 public/index.html diff --git a/.gitignore b/.gitignore index 345ff6f..9e2e5c8 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ log.txt Macrame.exe -public +public/* macros/* builds node_modules diff --git a/public/assets/DevicesView-DqasecOn.js b/public/assets/DevicesView-DqasecOn.js deleted file mode 100644 index 15fe568..0000000 --- a/public/assets/DevicesView-DqasecOn.js +++ /dev/null @@ -1,1758 +0,0 @@ -import { a as createVueComponent, _ as _export_sfc, c as createElementBlock, o as openBlock, s as createBlock, p as createCommentVNode, v as renderSlot, u as unref, q as normalizeClass, z as useDeviceStore, m as ref, r as reactive, b as onMounted, h as createVNode, f as createBaseVNode, w as withCtx, t as toDisplayString, i as createTextVNode, B as IconDevices, F as Fragment, g as renderList, d as axios, e as appUrl, n as onUpdated, j as withModifiers, x as withDirectives, y as vModelText, A as AuthCall, C as decryptAES, k as isLocal } from "./index-GNAKlyBz.js"; -import { _ as _sfc_main$4, a as _sfc_main$5 } from "./DialogComp-Ba5-BUTe.js"; -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconAlertTriangle = createVueComponent("outline", "alert-triangle", "IconAlertTriangle", [["path", { "d": "M12 9v4", "key": "svg-0" }], ["path", { "d": "M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z", "key": "svg-1" }], ["path", { "d": "M12 16h.01", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconCheck = createVueComponent("outline", "check", "IconCheck", [["path", { "d": "M5 12l5 5l10 -10", "key": "svg-0" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconDeviceDesktop = createVueComponent("outline", "device-desktop", "IconDeviceDesktop", [["path", { "d": "M3 5a1 1 0 0 1 1 -1h16a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-16a1 1 0 0 1 -1 -1v-10z", "key": "svg-0" }], ["path", { "d": "M7 20h10", "key": "svg-1" }], ["path", { "d": "M9 16v4", "key": "svg-2" }], ["path", { "d": "M15 16v4", "key": "svg-3" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconDeviceMobile = createVueComponent("outline", "device-mobile", "IconDeviceMobile", [["path", { "d": "M6 5a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2v-14z", "key": "svg-0" }], ["path", { "d": "M11 4h2", "key": "svg-1" }], ["path", { "d": "M12 17v.01", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconDeviceTablet = createVueComponent("outline", "device-tablet", "IconDeviceTablet", [["path", { "d": "M5 4a1 1 0 0 1 1 -1h12a1 1 0 0 1 1 1v16a1 1 0 0 1 -1 1h-12a1 1 0 0 1 -1 -1v-16z", "key": "svg-0" }], ["path", { "d": "M11 17a1 1 0 1 0 2 0a1 1 0 0 0 -2 0", "key": "svg-1" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconDeviceUnknown = createVueComponent("outline", "device-unknown", "IconDeviceUnknown", [["path", { "d": "M5 5a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M12 16v.01", "key": "svg-1" }], ["path", { "d": "M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconExclamationCircle = createVueComponent("outline", "exclamation-circle", "IconExclamationCircle", [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 9v4", "key": "svg-1" }], ["path", { "d": "M12 16v.01", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconInfoCircle = createVueComponent("outline", "info-circle", "IconInfoCircle", [["path", { "d": "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 9h.01", "key": "svg-1" }], ["path", { "d": "M11 12h1v4h1", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconKey = createVueComponent("outline", "key", "IconKey", [["path", { "d": "M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z", "key": "svg-0" }], ["path", { "d": "M15 9h.01", "key": "svg-1" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconLinkOff = createVueComponent("outline", "link-off", "IconLinkOff", [["path", { "d": "M9 15l3 -3m2 -2l1 -1", "key": "svg-0" }], ["path", { "d": "M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464", "key": "svg-1" }], ["path", { "d": "M3 3l18 18", "key": "svg-2" }], ["path", { "d": "M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463", "key": "svg-3" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconLink = createVueComponent("outline", "link", "IconLink", [["path", { "d": "M9 15l6 -6", "key": "svg-0" }], ["path", { "d": "M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464", "key": "svg-1" }], ["path", { "d": "M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconPlugConnectedX = createVueComponent("outline", "plug-connected-x", "IconPlugConnectedX", [["path", { "d": "M20 16l-4 4", "key": "svg-0" }], ["path", { "d": "M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5z", "key": "svg-1" }], ["path", { "d": "M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5z", "key": "svg-2" }], ["path", { "d": "M3 21l2.5 -2.5", "key": "svg-3" }], ["path", { "d": "M18.5 5.5l2.5 -2.5", "key": "svg-4" }], ["path", { "d": "M10 11l-2 2", "key": "svg-5" }], ["path", { "d": "M13 14l-2 2", "key": "svg-6" }], ["path", { "d": "M16 16l4 4", "key": "svg-7" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconReload = createVueComponent("outline", "reload", "IconReload", [["path", { "d": "M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1 7.935 1.007 9.425 4.747", "key": "svg-0" }], ["path", { "d": "M20 4v5h-5", "key": "svg-1" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconServer = createVueComponent("outline", "server", "IconServer", [["path", { "d": "M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z", "key": "svg-0" }], ["path", { "d": "M3 12m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z", "key": "svg-1" }], ["path", { "d": "M7 8l0 .01", "key": "svg-2" }], ["path", { "d": "M7 16l0 .01", "key": "svg-3" }]]); -const _sfc_main$3 = { - __name: "AlertComp", - props: { - type: String - // info, success, warning, error - }, - setup(__props) { - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", { - class: normalizeClass(`alert alert__${__props.type}`) - }, [ - __props.type === "info" ? (openBlock(), createBlock(unref(IconInfoCircle), { key: 0 })) : createCommentVNode("", true), - __props.type === "success" ? (openBlock(), createBlock(unref(IconCheck), { key: 1 })) : createCommentVNode("", true), - __props.type === "warning" ? (openBlock(), createBlock(unref(IconExclamationCircle), { key: 2 })) : createCommentVNode("", true), - __props.type === "error" ? (openBlock(), createBlock(unref(IconAlertTriangle), { key: 3 })) : createCommentVNode("", true), - renderSlot(_ctx.$slots, "default", {}, void 0, true) - ], 2); - }; - } -}; -const AlertComp = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-87f6de25"]]); -const _hoisted_1$2 = { class: "device-overview" }; -const _hoisted_2$2 = { class: "grid" }; -const _hoisted_3$2 = { class: "mcrm-block block__light flex flex-wrap items-start gap-4" }; -const _hoisted_4$2 = { class: "w-full flex gap-4 items-center justify-between mb-4" }; -const _hoisted_5$1 = { class: "flex gap-4" }; -const _hoisted_6$1 = { class: "grid gap-2" }; -const _hoisted_7$1 = { class: "grid grid-cols-[auto_1fr] gap-2" }; -const _hoisted_8$1 = { class: "w-full truncate" }; -const _hoisted_9 = { - key: 1, - class: "grid w-full gap-4" -}; -const _hoisted_10 = { class: "grid gap-4" }; -const _hoisted_11 = { class: "text-4xl font-mono tracking-wide" }; -const _sfc_main$2 = { - __name: "ServerView", - setup(__props) { - const device = useDeviceStore(); - const pinDialog = ref(); - const remote = reactive({ devices: [], pinlink: false }); - onMounted(() => { - device.serverGetRemotes(); - device.$subscribe((mutation, state) => { - if (Object.keys(state.remote).length) remote.devices = device.remote; - }); - }); - async function startLink(deviceUuid) { - const pin = await device.serverStartLink(deviceUuid); - remote.pinlink = { uuid: deviceUuid, pin }; - pinDialog.value.toggleDialog(true); - pollLink(); - setTimeout(() => { - resetPinLink(); - }, 6e4); - } - function pollLink() { - const pollInterval = setInterval(() => { - axios.post(appUrl() + "/device/link/poll", { uuid: remote.pinlink.uuid }).then((data) => { - if (!data.data) { - clearInterval(pollInterval); - resetPinLink(); - device.serverGetRemotes(); - } - }); - }, 1e3); - } - function resetPinLink() { - remote.pinlink = false; - if (pinDialog.value) pinDialog.value.toggleDialog(false); - } - function unlinkDevice(id) { - axios.post(appUrl() + "/device/link/remove", { uuid: id }).then((data) => { - if (data.data) device.serverGetRemotes(); - }); - } - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$2, [ - createVNode(AlertComp, { type: "info" }, { - default: withCtx(() => [ - createBaseVNode("div", _hoisted_2$2, [ - _cache[1] || (_cache[1] = createBaseVNode("strong", null, "This is a server!", -1)), - createBaseVNode("em", null, "UUID: " + toDisplayString(unref(device).uuid()), 1) - ]) - ]), - _: 1 - }), - createBaseVNode("div", _hoisted_3$2, [ - createBaseVNode("h4", _hoisted_4$2, [ - createBaseVNode("span", _hoisted_5$1, [ - createVNode(unref(IconDevices)), - _cache[2] || (_cache[2] = createTextVNode("Remote devices ")) - ]), - createVNode(_sfc_main$4, { - variant: "primary", - onClick: _cache[0] || (_cache[0] = ($event) => unref(device).serverGetRemotes()) - }, { - default: withCtx(() => [ - createVNode(unref(IconReload)) - ]), - _: 1 - }) - ]), - Object.keys(remote.devices).length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(remote.devices, (remoteDevice, id) => { - return openBlock(), createElementBlock("div", { - class: "mcrm-block block__dark block-size__sm w-64 grid !gap-4 content-start", - key: id - }, [ - createBaseVNode("div", _hoisted_6$1, [ - createBaseVNode("h5", _hoisted_7$1, [ - remoteDevice.settings.type == "unknown" ? (openBlock(), createBlock(unref(IconDeviceUnknown), { key: 0 })) : createCommentVNode("", true), - remoteDevice.settings.type == "mobile" ? (openBlock(), createBlock(unref(IconDeviceMobile), { key: 1 })) : createCommentVNode("", true), - remoteDevice.settings.type == "tablet" ? (openBlock(), createBlock(unref(IconDeviceTablet), { key: 2 })) : createCommentVNode("", true), - remoteDevice.settings.type == "desktop" ? (openBlock(), createBlock(unref(IconDeviceDesktop), { key: 3 })) : createCommentVNode("", true), - createBaseVNode("span", _hoisted_8$1, toDisplayString(remoteDevice.settings.name), 1) - ]), - createBaseVNode("em", null, toDisplayString(id), 1) - ]), - remoteDevice.key ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ - createVNode(AlertComp, { type: "success" }, { - default: withCtx(() => _cache[3] || (_cache[3] = [ - createTextVNode("Authorized") - ])), - _: 1 - }), - createVNode(_sfc_main$4, { - variant: "danger", - onClick: ($event) => unlinkDevice(id) - }, { - default: withCtx(() => [ - createVNode(unref(IconLinkOff)), - _cache[4] || (_cache[4] = createTextVNode("Unlink device ")) - ]), - _: 2 - }, 1032, ["onClick"]) - ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ - createVNode(AlertComp, { type: "warning" }, { - default: withCtx(() => _cache[5] || (_cache[5] = [ - createTextVNode("Unauthorized") - ])), - _: 1 - }), - createVNode(_sfc_main$4, { - variant: "primary", - onClick: ($event) => startLink(id) - }, { - default: withCtx(() => [ - createVNode(unref(IconLink)), - _cache[6] || (_cache[6] = createTextVNode("Link device ")) - ]), - _: 2 - }, 1032, ["onClick"]) - ], 64)), - remote.pinlink.uuid == id ? (openBlock(), createBlock(AlertComp, { - key: 2, - type: "info" - }, { - default: withCtx(() => [ - createTextVNode("One time pin: " + toDisplayString(remote.pinlink.pin), 1) - ]), - _: 1 - })) : createCommentVNode("", true) - ]); - }), 128)) : (openBlock(), createElementBlock("div", _hoisted_9, _cache[7] || (_cache[7] = [ - createBaseVNode("em", { class: "text-slate-300" }, "No remote devices", -1) - ]))), - createVNode(_sfc_main$5, { - ref_key: "pinDialog", - ref: pinDialog - }, { - content: withCtx(() => [ - createBaseVNode("div", _hoisted_10, [ - _cache[8] || (_cache[8] = createBaseVNode("h3", null, "Pin code", -1)), - createBaseVNode("span", _hoisted_11, toDisplayString(remote.pinlink.pin), 1) - ]) - ]), - _: 1 - }, 512) - ]) - ]); - }; - } -}; -const ServerView = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-f4165abd"]]); -var Ni = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; -function Ci(E) { - return E && E.__esModule && Object.prototype.hasOwnProperty.call(E, "default") ? E.default : E; -} -var wi = { exports: {} }; -(function(E, q) { - (function(A, m) { - var F = "1.0.37", M = "", I = "?", R = "function", V = "undefined", ii = "object", j = "string", li = "major", e = "model", a = "name", i = "type", o = "vendor", t = "version", v = "architecture", B = "console", n = "mobile", b = "tablet", h = "smarttv", N = "wearable", ei = "embedded", oi = 500, G = "Amazon", D = "Apple", di = "ASUS", mi = "BlackBerry", T = "Browser", H = "Chrome", yi = "Edge", X = "Firefox", Y = "Google", ui = "Huawei", ai = "LG", ti = "Microsoft", pi = "Motorola", K = "Opera", Z = "Samsung", hi = "Sharp", J = "Sony", ri = "Xiaomi", si = "Zebra", fi = "Facebook", vi = "Chromium OS", gi = "Mac OS", Ti = function(c, l) { - var s = {}; - for (var d in c) - l[d] && l[d].length % 2 === 0 ? s[d] = l[d].concat(c[d]) : s[d] = c[d]; - return s; - }, Q = function(c) { - for (var l = {}, s = 0; s < c.length; s++) - l[c[s].toUpperCase()] = c[s]; - return l; - }, Ei = function(c, l) { - return typeof c === j ? U(l).indexOf(U(c)) !== -1 : false; - }, U = function(c) { - return c.toLowerCase(); - }, _i = function(c) { - return typeof c === j ? c.replace(/[^\d\.]/g, M).split(".")[0] : m; - }, ni = function(c, l) { - if (typeof c === j) - return c = c.replace(/^\s\s*/, M), typeof l === V ? c : c.substring(0, oi); - }, L = function(c, l) { - for (var s = 0, d, y, O, w, r, k; s < l.length && !r; ) { - var ci = l[s], xi = l[s + 1]; - for (d = y = 0; d < ci.length && !r && ci[d]; ) - if (r = ci[d++].exec(c), r) - for (O = 0; O < xi.length; O++) - k = r[++y], w = xi[O], typeof w === ii && w.length > 0 ? w.length === 2 ? typeof w[1] == R ? this[w[0]] = w[1].call(this, k) : this[w[0]] = w[1] : w.length === 3 ? typeof w[1] === R && !(w[1].exec && w[1].test) ? this[w[0]] = k ? w[1].call(this, k, w[2]) : m : this[w[0]] = k ? k.replace(w[1], w[2]) : m : w.length === 4 && (this[w[0]] = k ? w[3].call(this, k.replace(w[1], w[2])) : m) : this[w] = k || m; - s += 2; - } - }, bi = function(c, l) { - for (var s in l) - if (typeof l[s] === ii && l[s].length > 0) { - for (var d = 0; d < l[s].length; d++) - if (Ei(l[s][d], c)) - return s === I ? m : s; - } else if (Ei(l[s], c)) - return s === I ? m : s; - return c; - }, Mi = { - "1.0": "/8", - "1.2": "/1", - "1.3": "/3", - "2.0": "/412", - "2.0.2": "/416", - "2.0.3": "/417", - "2.0.4": "/419", - "?": "/" - }, Oi = { - ME: "4.90", - "NT 3.11": "NT3.51", - "NT 4.0": "NT4.0", - 2e3: "NT 5.0", - XP: ["NT 5.1", "NT 5.2"], - Vista: "NT 6.0", - 7: "NT 6.1", - 8: "NT 6.2", - "8.1": "NT 6.3", - 10: ["NT 6.4", "NT 10.0"], - RT: "ARM" - }, ki = { - browser: [ - [ - /\b(?:crmo|crios)\/([\w\.]+)/i - // Chrome for Android/iOS - ], - [t, [a, "Chrome"]], - [ - /edg(?:e|ios|a)?\/([\w\.]+)/i - // Microsoft Edge - ], - [t, [a, "Edge"]], - [ - // Presto based - /(opera mini)\/([-\w\.]+)/i, - // Opera Mini - /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, - // Opera Mobi/Tablet - /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i - // Opera - ], - [a, t], - [ - /opios[\/ ]+([\w\.]+)/i - // Opera mini on iphone >= 8.0 - ], - [t, [a, K + " Mini"]], - [ - /\bopr\/([\w\.]+)/i - // Opera Webkit - ], - [t, [a, K]], - [ - // Mixed - /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i - // Baidu - ], - [t, [a, "Baidu"]], - [ - /(kindle)\/([\w\.]+)/i, - // Kindle - /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, - // Lunascape/Maxthon/Netfront/Jasmine/Blazer - // Trident based - /(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i, - // Avant/IEMobile/SlimBrowser - /(?:ms|\()(ie) ([\w\.]+)/i, - // Internet Explorer - // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon - /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, - // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ - /(heytap|ovi)browser\/([\d\.]+)/i, - // Heytap/Ovi - /(weibo)__([\d\.]+)/i - // Weibo - ], - [a, t], - [ - /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i - // UCBrowser - ], - [t, [a, "UC" + T]], - [ - /microm.+\bqbcore\/([\w\.]+)/i, - // WeChat Desktop for Windows Built-in Browser - /\bqbcore\/([\w\.]+).+microm/i, - /micromessenger\/([\w\.]+)/i - // WeChat - ], - [t, [a, "WeChat"]], - [ - /konqueror\/([\w\.]+)/i - // Konqueror - ], - [t, [a, "Konqueror"]], - [ - /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i - // IE11 - ], - [t, [a, "IE"]], - [ - /ya(?:search)?browser\/([\w\.]+)/i - // Yandex - ], - [t, [a, "Yandex"]], - [ - /slbrowser\/([\w\.]+)/i - // Smart Lenovo Browser - ], - [t, [a, "Smart Lenovo " + T]], - [ - /(avast|avg)\/([\w\.]+)/i - // Avast/AVG Secure Browser - ], - [[a, /(.+)/, "$1 Secure " + T], t], - [ - /\bfocus\/([\w\.]+)/i - // Firefox Focus - ], - [t, [a, X + " Focus"]], - [ - /\bopt\/([\w\.]+)/i - // Opera Touch - ], - [t, [a, K + " Touch"]], - [ - /coc_coc\w+\/([\w\.]+)/i - // Coc Coc Browser - ], - [t, [a, "Coc Coc"]], - [ - /dolfin\/([\w\.]+)/i - // Dolphin - ], - [t, [a, "Dolphin"]], - [ - /coast\/([\w\.]+)/i - // Opera Coast - ], - [t, [a, K + " Coast"]], - [ - /miuibrowser\/([\w\.]+)/i - // MIUI Browser - ], - [t, [a, "MIUI " + T]], - [ - /fxios\/([-\w\.]+)/i - // Firefox for iOS - ], - [t, [a, X]], - [ - /\bqihu|(qi?ho?o?|360)browser/i - // 360 - ], - [[a, "360 " + T]], - [ - /(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i - ], - [[a, /(.+)/, "$1 " + T], t], - [ - // Oculus/Sailfish/HuaweiBrowser/VivoBrowser - /samsungbrowser\/([\w\.]+)/i - // Samsung Internet - ], - [t, [a, Z + " Internet"]], - [ - /(comodo_dragon)\/([\w\.]+)/i - // Comodo Dragon - ], - [[a, /_/g, " "], t], - [ - /metasr[\/ ]?([\d\.]+)/i - // Sogou Explorer - ], - [t, [a, "Sogou Explorer"]], - [ - /(sogou)mo\w+\/([\d\.]+)/i - // Sogou Mobile - ], - [[a, "Sogou Mobile"], t], - [ - /(electron)\/([\w\.]+) safari/i, - // Electron-based App - /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, - // Tesla - /m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i - // QQBrowser/2345 Browser - ], - [a, t], - [ - /(lbbrowser)/i, - // LieBao Browser - /\[(linkedin)app\]/i - // LinkedIn App for iOS & Android - ], - [a], - [ - // WebView - /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i - // Facebook App for iOS & Android - ], - [[a, fi], t], - [ - /(Klarna)\/([\w\.]+)/i, - // Klarna Shopping Browser for iOS & Android - /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, - // Kakao App - /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, - // Naver InApp - /safari (line)\/([\w\.]+)/i, - // Line App for iOS - /\b(line)\/([\w\.]+)\/iab/i, - // Line App for Android - /(alipay)client\/([\w\.]+)/i, - // Alipay - /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i - // Chromium/Instagram/Snapchat - ], - [a, t], - [ - /\bgsa\/([\w\.]+) .*safari\//i - // Google Search Appliance on iOS - ], - [t, [a, "GSA"]], - [ - /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i - // TikTok - ], - [t, [a, "TikTok"]], - [ - /headlesschrome(?:\/([\w\.]+)| )/i - // Chrome Headless - ], - [t, [a, H + " Headless"]], - [ - / wv\).+(chrome)\/([\w\.]+)/i - // Chrome WebView - ], - [[a, H + " WebView"], t], - [ - /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i - // Android Browser - ], - [t, [a, "Android " + T]], - [ - /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i - // Chrome/OmniWeb/Arora/Tizen/Nokia - ], - [a, t], - [ - /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i - // Mobile Safari - ], - [t, [a, "Mobile Safari"]], - [ - /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i - // Safari & Safari Mobile - ], - [t, a], - [ - /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i - // Safari < 3.0 - ], - [a, [t, bi, Mi]], - [ - /(webkit|khtml)\/([\w\.]+)/i - ], - [a, t], - [ - // Gecko based - /(navigator|netscape\d?)\/([-\w\.]+)/i - // Netscape - ], - [[a, "Netscape"], t], - [ - /mobile vr; rv:([\w\.]+)\).+firefox/i - // Firefox Reality - ], - [t, [a, X + " Reality"]], - [ - /ekiohf.+(flow)\/([\w\.]+)/i, - // Flow - /(swiftfox)/i, - // Swiftfox - /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, - // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar - /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, - // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix - /(firefox)\/([\w\.]+)/i, - // Other Firefox-based - /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, - // Mozilla - // Other - /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, - // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser - /(links) \(([\w\.]+)/i, - // Links - /panasonic;(viera)/i - // Panasonic Viera - ], - [a, t], - [ - /(cobalt)\/([\w\.]+)/i - // Cobalt - ], - [a, [t, /master.|lts./, ""]] - ], - cpu: [ - [ - /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i - // AMD64 (x64) - ], - [[v, "amd64"]], - [ - /(ia32(?=;))/i - // IA32 (quicktime) - ], - [[v, U]], - [ - /((?:i[346]|x)86)[;\)]/i - // IA32 (x86) - ], - [[v, "ia32"]], - [ - /\b(aarch64|arm(v?8e?l?|_?64))\b/i - // ARM64 - ], - [[v, "arm64"]], - [ - /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i - // ARMHF - ], - [[v, "armhf"]], - [ - // PocketPC mistakenly identified as PowerPC - /windows (ce|mobile); ppc;/i - ], - [[v, "arm"]], - [ - /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i - // PowerPC - ], - [[v, /ower/, M, U]], - [ - /(sun4\w)[;\)]/i - // SPARC - ], - [[v, "sparc"]], - [ - /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i - // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC - ], - [[v, U]] - ], - device: [ - [ - ////////////////////////// - // MOBILES & TABLETS - ///////////////////////// - // Samsung - /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i - ], - [e, [o, Z], [i, b]], - [ - /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, - /samsung[- ]([-\w]+)/i, - /sec-(sgh\w+)/i - ], - [e, [o, Z], [i, n]], - [ - // Apple - /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i - // iPod/iPhone - ], - [e, [o, D], [i, n]], - [ - /\((ipad);[-\w\),; ]+apple/i, - // iPad - /applecoremedia\/[\w\.]+ \((ipad)/i, - /\b(ipad)\d\d?,\d\d?[;\]].+ios/i - ], - [e, [o, D], [i, b]], - [ - /(macintosh);/i - ], - [e, [o, D]], - [ - // Sharp - /\b(sh-?[altvz]?\d\d[a-ekm]?)/i - ], - [e, [o, hi], [i, n]], - [ - // Huawei - /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i - ], - [e, [o, ui], [i, b]], - [ - /(?:huawei|honor)([-\w ]+)[;\)]/i, - /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i - ], - [e, [o, ui], [i, n]], - [ - // Xiaomi - /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i, - // Xiaomi POCO - /\b; (\w+) build\/hm\1/i, - // Xiaomi Hongmi 'numeric' models - /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, - // Xiaomi Hongmi - /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, - // Xiaomi Redmi - /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i, - // Xiaomi Redmi 'numeric' models - /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i - // Xiaomi Mi - ], - [[e, /_/g, " "], [o, ri], [i, n]], - [ - /oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, - // Redmi Pad - /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i - // Mi Pad tablets - ], - [[e, /_/g, " "], [o, ri], [i, b]], - [ - // OPPO - /; (\w+) bui.+ oppo/i, - /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i - ], - [e, [o, "OPPO"], [i, n]], - [ - // Vivo - /vivo (\w+)(?: bui|\))/i, - /\b(v[12]\d{3}\w?[at])(?: bui|;)/i - ], - [e, [o, "Vivo"], [i, n]], - [ - // Realme - /\b(rmx[1-3]\d{3})(?: bui|;|\))/i - ], - [e, [o, "Realme"], [i, n]], - [ - // Motorola - /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, - /\bmot(?:orola)?[- ](\w*)/i, - /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i - ], - [e, [o, pi], [i, n]], - [ - /\b(mz60\d|xoom[2 ]{0,2}) build\//i - ], - [e, [o, pi], [i, b]], - [ - // LG - /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i - ], - [e, [o, ai], [i, b]], - [ - /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, - /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, - /\blg-?([\d\w]+) bui/i - ], - [e, [o, ai], [i, n]], - [ - // Lenovo - /(ideatab[-\w ]+)/i, - /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i - ], - [e, [o, "Lenovo"], [i, b]], - [ - // Nokia - /(?:maemo|nokia).*(n900|lumia \d+)/i, - /nokia[-_ ]?([-\w\.]*)/i - ], - [[e, /_/g, " "], [o, "Nokia"], [i, n]], - [ - // Google - /(pixel c)\b/i - // Google Pixel C - ], - [e, [o, Y], [i, b]], - [ - /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i - // Google Pixel - ], - [e, [o, Y], [i, n]], - [ - // Sony - /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i - ], - [e, [o, J], [i, n]], - [ - /sony tablet [ps]/i, - /\b(?:sony)?sgp\w+(?: bui|\))/i - ], - [[e, "Xperia Tablet"], [o, J], [i, b]], - [ - // OnePlus - / (kb2005|in20[12]5|be20[12][59])\b/i, - /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i - ], - [e, [o, "OnePlus"], [i, n]], - [ - // Amazon - /(alexa)webm/i, - /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, - // Kindle Fire without Silk / Echo Show - /(kf[a-z]+)( bui|\)).+silk\//i - // Kindle Fire HD - ], - [e, [o, G], [i, b]], - [ - /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i - // Fire Phone - ], - [[e, /(.+)/g, "Fire Phone $1"], [o, G], [i, n]], - [ - // BlackBerry - /(playbook);[-\w\),; ]+(rim)/i - // BlackBerry PlayBook - ], - [e, o, [i, b]], - [ - /\b((?:bb[a-f]|st[hv])100-\d)/i, - /\(bb10; (\w+)/i - // BlackBerry 10 - ], - [e, [o, mi], [i, n]], - [ - // Asus - /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i - ], - [e, [o, di], [i, b]], - [ - / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i - ], - [e, [o, di], [i, n]], - [ - // HTC - /(nexus 9)/i - // HTC Nexus 9 - ], - [e, [o, "HTC"], [i, b]], - [ - /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, - // HTC - // ZTE - /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, - /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i - // Alcatel/GeeksPhone/Nexian/Panasonic/Sony - ], - [o, [e, /_/g, " "], [i, n]], - [ - // Acer - /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i - ], - [e, [o, "Acer"], [i, b]], - [ - // Meizu - /droid.+; (m[1-5] note) bui/i, - /\bmz-([-\w]{2,})/i - ], - [e, [o, "Meizu"], [i, n]], - [ - // Ulefone - /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i - ], - [e, [o, "Ulefone"], [i, n]], - [ - // MIXED - /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i, - // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron - /(hp) ([\w ]+\w)/i, - // HP iPAQ - /(asus)-?(\w+)/i, - // Asus - /(microsoft); (lumia[\w ]+)/i, - // Microsoft Lumia - /(lenovo)[-_ ]?([-\w]+)/i, - // Lenovo - /(jolla)/i, - // Jolla - /(oppo) ?([\w ]+) bui/i - // OPPO - ], - [o, e, [i, n]], - [ - /(kobo)\s(ereader|touch)/i, - // Kobo - /(archos) (gamepad2?)/i, - // Archos - /(hp).+(touchpad(?!.+tablet)|tablet)/i, - // HP TouchPad - /(kindle)\/([\w\.]+)/i, - // Kindle - /(nook)[\w ]+build\/(\w+)/i, - // Nook - /(dell) (strea[kpr\d ]*[\dko])/i, - // Dell Streak - /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, - // Le Pan Tablets - /(trinity)[- ]*(t\d{3}) bui/i, - // Trinity Tablets - /(gigaset)[- ]+(q\w{1,9}) bui/i, - // Gigaset Tablets - /(vodafone) ([\w ]+)(?:\)| bui)/i - // Vodafone - ], - [o, e, [i, b]], - [ - /(surface duo)/i - // Surface Duo - ], - [e, [o, ti], [i, b]], - [ - /droid [\d\.]+; (fp\du?)(?: b|\))/i - // Fairphone - ], - [e, [o, "Fairphone"], [i, n]], - [ - /(u304aa)/i - // AT&T - ], - [e, [o, "AT&T"], [i, n]], - [ - /\bsie-(\w*)/i - // Siemens - ], - [e, [o, "Siemens"], [i, n]], - [ - /\b(rct\w+) b/i - // RCA Tablets - ], - [e, [o, "RCA"], [i, b]], - [ - /\b(venue[\d ]{2,7}) b/i - // Dell Venue Tablets - ], - [e, [o, "Dell"], [i, b]], - [ - /\b(q(?:mv|ta)\w+) b/i - // Verizon Tablet - ], - [e, [o, "Verizon"], [i, b]], - [ - /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i - // Barnes & Noble Tablet - ], - [e, [o, "Barnes & Noble"], [i, b]], - [ - /\b(tm\d{3}\w+) b/i - ], - [e, [o, "NuVision"], [i, b]], - [ - /\b(k88) b/i - // ZTE K Series Tablet - ], - [e, [o, "ZTE"], [i, b]], - [ - /\b(nx\d{3}j) b/i - // ZTE Nubia - ], - [e, [o, "ZTE"], [i, n]], - [ - /\b(gen\d{3}) b.+49h/i - // Swiss GEN Mobile - ], - [e, [o, "Swiss"], [i, n]], - [ - /\b(zur\d{3}) b/i - // Swiss ZUR Tablet - ], - [e, [o, "Swiss"], [i, b]], - [ - /\b((zeki)?tb.*\b) b/i - // Zeki Tablets - ], - [e, [o, "Zeki"], [i, b]], - [ - /\b([yr]\d{2}) b/i, - /\b(dragon[- ]+touch |dt)(\w{5}) b/i - // Dragon Touch Tablet - ], - [[o, "Dragon Touch"], e, [i, b]], - [ - /\b(ns-?\w{0,9}) b/i - // Insignia Tablets - ], - [e, [o, "Insignia"], [i, b]], - [ - /\b((nxa|next)-?\w{0,9}) b/i - // NextBook Tablets - ], - [e, [o, "NextBook"], [i, b]], - [ - /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i - // Voice Xtreme Phones - ], - [[o, "Voice"], e, [i, n]], - [ - /\b(lvtel\-)?(v1[12]) b/i - // LvTel Phones - ], - [[o, "LvTel"], e, [i, n]], - [ - /\b(ph-1) /i - // Essential PH-1 - ], - [e, [o, "Essential"], [i, n]], - [ - /\b(v(100md|700na|7011|917g).*\b) b/i - // Envizen Tablets - ], - [e, [o, "Envizen"], [i, b]], - [ - /\b(trio[-\w\. ]+) b/i - // MachSpeed Tablets - ], - [e, [o, "MachSpeed"], [i, b]], - [ - /\btu_(1491) b/i - // Rotor Tablets - ], - [e, [o, "Rotor"], [i, b]], - [ - /(shield[\w ]+) b/i - // Nvidia Shield Tablets - ], - [e, [o, "Nvidia"], [i, b]], - [ - /(sprint) (\w+)/i - // Sprint Phones - ], - [o, e, [i, n]], - [ - /(kin\.[onetw]{3})/i - // Microsoft Kin - ], - [[e, /\./g, " "], [o, ti], [i, n]], - [ - /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i - // Zebra - ], - [e, [o, si], [i, b]], - [ - /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i - ], - [e, [o, si], [i, n]], - [ - /////////////////// - // SMARTTVS - /////////////////// - /smart-tv.+(samsung)/i - // Samsung - ], - [o, [i, h]], - [ - /hbbtv.+maple;(\d+)/i - ], - [[e, /^/, "SmartTV"], [o, Z], [i, h]], - [ - /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i - // LG SmartTV - ], - [[o, ai], [i, h]], - [ - /(apple) ?tv/i - // Apple TV - ], - [o, [e, D + " TV"], [i, h]], - [ - /crkey/i - // Google Chromecast - ], - [[e, H + "cast"], [o, Y], [i, h]], - [ - /droid.+aft(\w+)( bui|\))/i - // Fire TV - ], - [e, [o, G], [i, h]], - [ - /\(dtv[\);].+(aquos)/i, - /(aquos-tv[\w ]+)\)/i - // Sharp - ], - [e, [o, hi], [i, h]], - [ - /(bravia[\w ]+)( bui|\))/i - // Sony - ], - [e, [o, J], [i, h]], - [ - /(mitv-\w{5}) bui/i - // Xiaomi - ], - [e, [o, ri], [i, h]], - [ - /Hbbtv.*(technisat) (.*);/i - // TechniSAT - ], - [o, e, [i, h]], - [ - /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, - // Roku - /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i - // HbbTV devices - ], - [[o, ni], [e, ni], [i, h]], - [ - /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i - // SmartTV from Unidentified Vendors - ], - [[i, h]], - [ - /////////////////// - // CONSOLES - /////////////////// - /(ouya)/i, - // Ouya - /(nintendo) ([wids3utch]+)/i - // Nintendo - ], - [o, e, [i, B]], - [ - /droid.+; (shield) bui/i - // Nvidia - ], - [e, [o, "Nvidia"], [i, B]], - [ - /(playstation [345portablevi]+)/i - // Playstation - ], - [e, [o, J], [i, B]], - [ - /\b(xbox(?: one)?(?!; xbox))[\); ]/i - // Microsoft Xbox - ], - [e, [o, ti], [i, B]], - [ - /////////////////// - // WEARABLES - /////////////////// - /((pebble))app/i - // Pebble - ], - [o, e, [i, N]], - [ - /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i - // Apple Watch - ], - [e, [o, D], [i, N]], - [ - /droid.+; (glass) \d/i - // Google Glass - ], - [e, [o, Y], [i, N]], - [ - /droid.+; (wt63?0{2,3})\)/i - ], - [e, [o, si], [i, N]], - [ - /(quest( 2| pro)?)/i - // Oculus Quest - ], - [e, [o, fi], [i, N]], - [ - /////////////////// - // EMBEDDED - /////////////////// - /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i - // Tesla - ], - [o, [i, ei]], - [ - /(aeobc)\b/i - // Echo Dot - ], - [e, [o, G], [i, ei]], - [ - //////////////////// - // MIXED (GENERIC) - /////////////////// - /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i - // Android Phones from Unidentified Vendors - ], - [e, [i, n]], - [ - /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i - // Android Tablets from Unidentified Vendors - ], - [e, [i, b]], - [ - /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i - // Unidentifiable Tablet - ], - [[i, b]], - [ - /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i - // Unidentifiable Mobile - ], - [[i, n]], - [ - /(android[-\w\. ]{0,9});.+buil/i - // Generic Android Device - ], - [e, [o, "Generic"]] - ], - engine: [ - [ - /windows.+ edge\/([\w\.]+)/i - // EdgeHTML - ], - [t, [a, yi + "HTML"]], - [ - /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i - // Blink - ], - [t, [a, "Blink"]], - [ - /(presto)\/([\w\.]+)/i, - // Presto - /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, - // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna - /ekioh(flow)\/([\w\.]+)/i, - // Flow - /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, - // KHTML/Tasman/Links - /(icab)[\/ ]([23]\.[\d\.]+)/i, - // iCab - /\b(libweb)/i - ], - [a, t], - [ - /rv\:([\w\.]{1,9})\b.+(gecko)/i - // Gecko - ], - [t, a] - ], - os: [ - [ - // Windows - /microsoft (windows) (vista|xp)/i - // Windows (iTunes) - ], - [a, t], - [ - /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i - // Windows Phone - ], - [a, [t, bi, Oi]], - [ - /windows nt 6\.2; (arm)/i, - // Windows RT - /windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i, - /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i - ], - [[t, bi, Oi], [a, "Windows"]], - [ - // iOS/macOS - /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, - // iOS - /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i, - /cfnetwork\/.+darwin/i - ], - [[t, /_/g, "."], [a, "iOS"]], - [ - /(mac os x) ?([\w\. ]*)/i, - /(macintosh|mac_powerpc\b)(?!.+haiku)/i - // Mac OS - ], - [[a, gi], [t, /_/g, "."]], - [ - // Mobile OSes - /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i - // Android-x86/HarmonyOS - ], - [t, a], - [ - // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS - /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, - /(blackberry)\w*\/([\w\.]*)/i, - // Blackberry - /(tizen|kaios)[\/ ]([\w\.]+)/i, - // Tizen/KaiOS - /\((series40);/i - // Series 40 - ], - [a, t], - [ - /\(bb(10);/i - // BlackBerry 10 - ], - [t, [a, mi]], - [ - /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i - // Symbian - ], - [t, [a, "Symbian"]], - [ - /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i - // Firefox OS - ], - [t, [a, X + " OS"]], - [ - /web0s;.+rt(tv)/i, - /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i - // WebOS - ], - [t, [a, "webOS"]], - [ - /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i - // watchOS - ], - [t, [a, "watchOS"]], - [ - // Google Chromecast - /crkey\/([\d\.]+)/i - // Google Chromecast - ], - [t, [a, H + "cast"]], - [ - /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i - // Chromium OS - ], - [[a, vi], t], - [ - // Smart TVs - /panasonic;(viera)/i, - // Panasonic Viera - /(netrange)mmh/i, - // Netrange - /(nettv)\/(\d+\.[\w\.]+)/i, - // NetTV - // Console - /(nintendo|playstation) ([wids345portablevuch]+)/i, - // Nintendo/Playstation - /(xbox); +xbox ([^\);]+)/i, - // Microsoft Xbox (360, One, X, S, Series X, Series S) - // Other - /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, - // Joli/Palm - /(mint)[\/\(\) ]?(\w*)/i, - // Mint - /(mageia|vectorlinux)[; ]/i, - // Mageia/VectorLinux - /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, - // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire - /(hurd|linux) ?([\w\.]*)/i, - // Hurd/Linux - /(gnu) ?([\w\.]*)/i, - // GNU - /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, - // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly - /(haiku) (\w+)/i - // Haiku - ], - [a, t], - [ - /(sunos) ?([\w\.\d]*)/i - // Solaris - ], - [[a, "Solaris"], t], - [ - /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, - // Solaris - /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, - // AIX - /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, - // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS - /(unix) ?([\w\.]*)/i - // UNIX - ], - [a, t] - ] - }, g = function(c, l) { - if (typeof c === ii && (l = c, c = m), !(this instanceof g)) - return new g(c, l).getResult(); - var s = typeof A !== V && A.navigator ? A.navigator : m, d = c || (s && s.userAgent ? s.userAgent : M), y = s && s.userAgentData ? s.userAgentData : m, O = l ? Ti(ki, l) : ki, w = s && s.userAgent == d; - return this.getBrowser = function() { - var r = {}; - return r[a] = m, r[t] = m, L.call(r, d, O.browser), r[li] = _i(r[t]), w && s && s.brave && typeof s.brave.isBrave == R && (r[a] = "Brave"), r; - }, this.getCPU = function() { - var r = {}; - return r[v] = m, L.call(r, d, O.cpu), r; - }, this.getDevice = function() { - var r = {}; - return r[o] = m, r[e] = m, r[i] = m, L.call(r, d, O.device), w && !r[i] && y && y.mobile && (r[i] = n), w && r[e] == "Macintosh" && s && typeof s.standalone !== V && s.maxTouchPoints && s.maxTouchPoints > 2 && (r[e] = "iPad", r[i] = b), r; - }, this.getEngine = function() { - var r = {}; - return r[a] = m, r[t] = m, L.call(r, d, O.engine), r; - }, this.getOS = function() { - var r = {}; - return r[a] = m, r[t] = m, L.call(r, d, O.os), w && !r[a] && y && y.platform != "Unknown" && (r[a] = y.platform.replace(/chrome os/i, vi).replace(/macos/i, gi)), r; - }, this.getResult = function() { - return { - ua: this.getUA(), - browser: this.getBrowser(), - engine: this.getEngine(), - os: this.getOS(), - device: this.getDevice(), - cpu: this.getCPU() - }; - }, this.getUA = function() { - return d; - }, this.setUA = function(r) { - return d = typeof r === j && r.length > oi ? ni(r, oi) : r, this; - }, this.setUA(d), this; - }; - g.VERSION = F, g.BROWSER = Q([a, t, li]), g.CPU = Q([v]), g.DEVICE = Q([e, o, i, B, n, h, b, N, ei]), g.ENGINE = g.OS = Q([a, t]), E.exports && (q = E.exports = g), q.UAParser = g; - var C = typeof A !== V && (A.jQuery || A.Zepto); - if (C && !C.ua) { - var $ = new g(); - C.ua = $.getResult(), C.ua.get = function() { - return $.getUA(); - }, C.ua.set = function(c) { - $.setUA(c); - var l = $.getResult(); - for (var s in l) - C.ua[s] = l[s]; - }; - } - })(typeof window == "object" ? window : Ni); -})(wi, wi.exports); -var Pi = wi.exports; -const Bi = /* @__PURE__ */ Ci(Pi), S = { - CONSOLE: "console", - DESKTOP: void 0, - EMBEDDED: "embedded", - MOBILE: "mobile", - SMART_TV: "smarttv", - TABLET: "tablet", - WEARABLE: "wearable" -}, _ = { - ANDROID: "Android", - IOS: "iOS", - LINUX: "Linux", - MAC_OS: "Mac OS", - WINDOWS_PHONE: "Windows Phone", - WINDOWS: "Windows" -}, p = { - CHROME: "Chrome", - CHROMIUM: "Chromium", - EDGE: "Edge", - FIREFOX: "Firefox", - IE: "IE", - INTERNET_EXPLORER: "Internet Explorer", - MIUI: "MIUI Browser", - MOBILE_SAFARI: "Mobile Safari", - OPERA: "Opera", - SAFARI: "Safari", - SAMSUNG_BROWSER: "Samsung Browser", - YANDEX: "Yandex" -}, z = new Bi(), f = z.getDevice(), x = z.getOS(), u = z.getBrowser(); -z.getEngine(); -const P = z.getUA(), W = () => /iPad/.test(P), Ai = () => x.name === _.WINDOWS && x.version === "10" && P.indexOf("Edg/") !== -1; -x.name === _.ANDROID; -u.name === p.CHROME; -u.name === p.CHROMIUM; -f.type === S.CONSOLE; -f.type === S.DESKTOP; -u.name === p.EDGE || Ai(); -Ai(); -u.name === p.EDGE; -/electron/.test(P.toLowerCase()); -f.type === S.EMBEDDED; -u.name === p.FIREFOX; -u.name === p.INTERNET_EXPLORER || u.name === p.IE; -x.name === _.IOS || W(); -x.name === _.LINUX; -x.name === _.MAC_OS; -u.name === p.MIUI; -f.type === S.MOBILE || f.type === S.TABLET || W(); -f.type === S.MOBILE; -u.name === p.MOBILE_SAFARI || W(); -u.name === p.OPERA; -u.name === p.SAFARI || u.name === p.MOBILE_SAFARI; -u.name === p.SAMSUNG_BROWSER; -f.type === S.SMART_TV; -f.type === S.TABLET || W(); -f.type === S.WEARABLE; -x.name === _.WINDOWS; -x.name === _.WINDOWS_PHONE; -u.name === p.YANDEX; -const fe = () => f.model, ve = () => f.type || "desktop", ge = () => f.vendor; -const _hoisted_1$1 = { class: "server-overview" }; -const _hoisted_2$1 = { class: "grid" }; -const _hoisted_3$1 = { class: "mcrm-block block__light grid gap-4" }; -const _hoisted_4$1 = { class: "text-lg flex gap-4 items-center justify-between" }; -const _hoisted_5 = { class: "flex gap-4" }; -const _hoisted_6 = { class: "grid gap-2" }; -const _hoisted_7 = { - key: 0, - class: "grid grid-cols-[2rem_1fr] gap-2" -}; -const _hoisted_8 = { class: "grid gap-4 w-64" }; -const _sfc_main$1 = { - __name: "RemoteView", - setup(__props) { - const device = useDeviceStore(); - const linkPinDialog = ref(); - const server = reactive({ - host: "", - status: false, - link: false, - inputPin: "", - encryptedKey: "", - key: "" - }); - onMounted(async () => { - server.host = window.location.host; - }); - onUpdated(() => { - if (!server.status) checkServerStatus(); - }); - async function checkServerStatus(request = true) { - const status = await device.remoteCheckServerAccess(); - server.status = status; - if (status === "unlinked" || status === "unauthorized") { - if (request) requestAccess(); - return true; - } - if (!device.key()) { - server.status = "unauthorized"; - return true; - } - const handshake = await device.remoteHandshake(device.key()); - if (handshake) server.key = device.key(); - else { - device.removeDeviceKey(); - server.status = "unlinked"; - if (request) requestAccess(); - } - return true; - } - function requestAccess() { - let deviceName = `${ge() ? ge() : "Unknown"} ${ge() ? fe() : ve()}`; - device.remoteRequestServerAccess(deviceName, ve()).then((data) => { - if (data.data) server.status = data.data, pingLink(); - }); - } - function pingLink() { - server.link = "checking"; - device.remotePingLink((encryptedKey) => { - server.link = true; - server.encryptedKey = encryptedKey; - linkPinDialog.value.toggleDialog(true); - }); - } - async function decryptKey() { - const decryptedKey = decryptAES(server.inputPin, server.encryptedKey); - const handshake = await device.remoteHandshake(decryptedKey); - if (handshake) { - device.setDeviceKey(decryptedKey); - server.key = decryptedKey; - linkPinDialog.value.toggleDialog(false); - server.status = "authorized"; - } - } - function disonnectFromServer() { - axios.post(appUrl() + "/device/link/remove", AuthCall({ uuid: device.uuid() })).then((data) => { - if (data.data) checkServerStatus(false); - }); - } - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$1, [ - createVNode(AlertComp, { type: "info" }, { - default: withCtx(() => [ - createBaseVNode("div", _hoisted_2$1, [ - _cache[6] || (_cache[6] = createBaseVNode("strong", null, "This is a remote device.", -1)), - createBaseVNode("em", null, "UUID: " + toDisplayString(unref(device).uuid()), 1) - ]) - ]), - _: 1 - }), - createBaseVNode("div", _hoisted_3$1, [ - createBaseVNode("h4", _hoisted_4$1, [ - createBaseVNode("span", _hoisted_5, [ - createVNode(unref(IconServer)), - _cache[7] || (_cache[7] = createTextVNode("Server")) - ]), - createVNode(_sfc_main$4, { - variant: "primary", - onClick: _cache[0] || (_cache[0] = ($event) => checkServerStatus()) - }, { - default: withCtx(() => [ - createVNode(unref(IconReload)) - ]), - _: 1 - }) - ]), - createBaseVNode("p", null, [ - _cache[8] || (_cache[8] = createTextVNode(" Connected to: ")), - createBaseVNode("strong", null, toDisplayString(server.host), 1) - ]), - server.status === "authorized" ? (openBlock(), createBlock(AlertComp, { - key: 0, - type: "success" - }, { - default: withCtx(() => _cache[9] || (_cache[9] = [ - createTextVNode("Authorized") - ])), - _: 1 - })) : createCommentVNode("", true), - server.status === "unlinked" ? (openBlock(), createBlock(AlertComp, { - key: 1, - type: "warning" - }, { - default: withCtx(() => _cache[10] || (_cache[10] = [ - createTextVNode("Not linked") - ])), - _: 1 - })) : createCommentVNode("", true), - server.status === "unauthorized" ? (openBlock(), createBlock(AlertComp, { - key: 2, - type: "info" - }, { - default: withCtx(() => [ - createBaseVNode("div", _hoisted_6, [ - _cache[13] || (_cache[13] = createBaseVNode("strong", null, "Access requested", -1)), - _cache[14] || (_cache[14] = createBaseVNode("p", null, [ - createTextVNode(" Navigate to "), - createBaseVNode("em", { class: "font-semibold" }, "http://localhost:6970/devices"), - createTextVNode(" on your pc to authorize. ") - ], -1)), - server.link == "checking" ? (openBlock(), createElementBlock("div", _hoisted_7, [ - createVNode(unref(IconReload), { class: "animate-spin" }), - _cache[11] || (_cache[11] = createTextVNode(" Checking server for link... ")) - ])) : createCommentVNode("", true), - server.link === false ? (openBlock(), createBlock(_sfc_main$4, { - key: 1, - variant: "subtle", - onClick: _cache[1] || (_cache[1] = ($event) => pingLink()), - class: "w-fit" - }, { - default: withCtx(() => [ - createVNode(unref(IconReload)), - _cache[12] || (_cache[12] = createTextVNode("Check for server link ")) - ]), - _: 1 - })) : createCommentVNode("", true) - ]) - ]), - _: 1 - })) : createCommentVNode("", true), - server.status === "unauthorized" ? (openBlock(), createBlock(_sfc_main$4, { - key: 3, - variant: "primary", - onClick: _cache[2] || (_cache[2] = ($event) => requestAccess()) - }, { - default: withCtx(() => [ - createVNode(unref(IconKey)), - _cache[15] || (_cache[15] = createTextVNode(" Request access ")) - ]), - _: 1 - })) : createCommentVNode("", true), - server.status === "authorized" ? (openBlock(), createBlock(_sfc_main$4, { - key: 4, - variant: "danger", - onClick: _cache[3] || (_cache[3] = ($event) => disonnectFromServer()) - }, { - default: withCtx(() => [ - createVNode(unref(IconPlugConnectedX)), - _cache[16] || (_cache[16] = createTextVNode(" Disconnect ")) - ]), - _: 1 - })) : createCommentVNode("", true) - ]), - createVNode(_sfc_main$5, { - ref_key: "linkPinDialog", - ref: linkPinDialog - }, { - content: withCtx(() => [ - createBaseVNode("div", _hoisted_8, [ - _cache[18] || (_cache[18] = createBaseVNode("h3", null, "Server link pin:", -1)), - createBaseVNode("form", { - class: "grid gap-4", - onSubmit: _cache[5] || (_cache[5] = withModifiers(($event) => decryptKey(), ["prevent"])) - }, [ - withDirectives(createBaseVNode("input", { - class: "input", - id: "input-pin", - type: "text", - pattern: "[0-9]{4}", - "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => server.inputPin = $event) - }, null, 512), [ - [vModelText, server.inputPin] - ]), - createVNode(_sfc_main$4, { variant: "primary" }, { - default: withCtx(() => _cache[17] || (_cache[17] = [ - createTextVNode("Enter") - ])), - _: 1 - }) - ], 32) - ]) - ]), - _: 1 - }, 512) - ]); - }; - } -}; -const RemoteView = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3109048f"]]); -const _hoisted_1 = { - id: "devices-view", - class: "panel" -}; -const _hoisted_2 = { class: "panel__title" }; -const _hoisted_3 = { class: "text-sm" }; -const _hoisted_4 = { class: "panel__content grid gap-8" }; -const _sfc_main = { - __name: "DevicesView", - setup(__props) { - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1, [ - createBaseVNode("h1", _hoisted_2, [ - _cache[0] || (_cache[0] = createTextVNode(" Devices ")), - createBaseVNode("span", _hoisted_3, toDisplayString(unref(isLocal)() ? "remote" : "servers"), 1) - ]), - createBaseVNode("div", _hoisted_4, [ - unref(isLocal)() ? (openBlock(), createBlock(ServerView, { key: 0 })) : (openBlock(), createBlock(RemoteView, { key: 1 })) - ]) - ]); - }; - } -}; -const DevicesView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-97929e31"]]); -export { - DevicesView as default -}; diff --git a/public/assets/DevicesView-Dw_Mls3X.css b/public/assets/DevicesView-Dw_Mls3X.css deleted file mode 100644 index 4735417..0000000 --- a/public/assets/DevicesView-Dw_Mls3X.css +++ /dev/null @@ -1,87 +0,0 @@ -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.alert[data-v-87f6de25] { - align-items: flex-start; - gap: calc(var(--spacing, .25rem) * 4); - border-radius: var(--radius-md, .375rem); - border-style: var(--tw-border-style); - border-width: 1px; - border-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent); - background-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent); - padding: calc(var(--spacing, .25rem) * 4); - --tw-backdrop-blur: blur(var(--blur-md, 12px)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - grid-template-columns: 1rem 1fr; - display: grid; -} -.alert.alert__info[data-v-87f6de25] { - background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 40%, transparent); - color: var(--color-sky-100, oklch(.951 .026 236.824)); -} -.alert.alert__success[data-v-87f6de25] { - background-color: color-mix(in oklab, var(--color-lime-400, oklch(.841 .238 128.85)) 10%, transparent); - color: var(--color-lime-400, oklch(.841 .238 128.85)); -} -.alert.alert__warning[data-v-87f6de25] { - background-color: color-mix(in oklab, var(--color-amber-400, oklch(.828 .189 84.429)) 10%, transparent); - color: var(--color-amber-400, oklch(.828 .189 84.429)); -} -.alert.alert__error[data-v-87f6de25] { - background-color: color-mix(in oklab, var(--color-rose-400, oklch(.712 .194 13.428)) 10%, transparent); - color: var(--color-rose-400, oklch(.712 .194 13.428)); -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-backdrop-blur { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-brightness { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-contrast { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-grayscale { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-hue-rotate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-invert { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-opacity { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-saturate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-sepia { - syntax: "*"; - inherits: false -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.device-overview[data-v-f4165abd] { - align-content: flex-start; - gap: calc(var(--spacing, .25rem) * 4); - display: grid; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.server-overview[data-v-3109048f] { - align-content: flex-start; - gap: calc(var(--spacing, .25rem) * 4); - display: grid; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ - diff --git a/public/assets/DialogComp-Ba5-BUTe.js b/public/assets/DialogComp-Ba5-BUTe.js deleted file mode 100644 index 70496d5..0000000 --- a/public/assets/DialogComp-Ba5-BUTe.js +++ /dev/null @@ -1,106 +0,0 @@ -import { D as computed, c as createElementBlock, o as openBlock, v as renderSlot, q as normalizeClass, m as ref, b as onMounted, n as onUpdated, f as createBaseVNode, h as createVNode, w as withCtx, u as unref, E as IconX } from "./index-GNAKlyBz.js"; -const _hoisted_1$1 = ["href"]; -const _sfc_main$1 = { - __name: "ButtonComp", - props: { - href: String, - variant: String, - size: String - }, - setup(__props) { - const props = __props; - const classString = computed(() => { - let classes = "btn"; - if (props.variant) classes += ` btn__${props.variant}`; - if (props.size) classes += ` btn__${props.size}`; - return classes; - }); - return (_ctx, _cache) => { - return __props.href ? (openBlock(), createElementBlock("a", { - key: 0, - href: __props.href, - class: normalizeClass(classString.value) - }, [ - renderSlot(_ctx.$slots, "default") - ], 10, _hoisted_1$1)) : (openBlock(), createElementBlock("button", { - key: 1, - class: normalizeClass(classString.value) - }, [ - renderSlot(_ctx.$slots, "default") - ], 2)); - }; - } -}; -const _hoisted_1 = { class: "dialog-container" }; -const _sfc_main = { - __name: "DialogComp", - props: { - open: Boolean - }, - emits: ["onOpen", "onClose", "onToggle"], - setup(__props, { expose: __expose, emit: __emit }) { - const dialog = ref(null); - const openDialog = ref(); - const emit = __emit; - __expose({ toggleDialog }); - const props = __props; - onMounted(() => { - if (props.open === true) toggleDialog(props.open); - }); - onUpdated(() => { - if (props.open === true) toggleDialog(props.open); - }); - function toggleDialog(openToggle) { - if (openToggle) { - dialog.value.showModal(); - emit("onOpen"); - } else { - dialog.value.close(); - emit("onClose"); - } - openDialog.value = openToggle; - emit("onToggle"); - } - onMounted(() => { - openDialog.value = props.open; - if (dialog.value.innerHTML.includes("form")) { - dialog.value.querySelector("form").addEventListener("submit", () => { - toggleDialog(); - }); - } - }); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1, [ - createBaseVNode("div", { - class: "trigger", - onClick: _cache[0] || (_cache[0] = ($event) => toggleDialog(true)) - }, [ - renderSlot(_ctx.$slots, "trigger") - ]), - createBaseVNode("dialog", { - ref_key: "dialog", - ref: dialog, - class: "mcrm-block block__dark" - }, [ - createVNode(_sfc_main$1, { - class: "dialog__close p-0", - variant: "ghost", - size: "sm", - tabindex: "-1", - onClick: _cache[1] || (_cache[1] = ($event) => toggleDialog(false)) - }, { - default: withCtx(() => [ - createVNode(unref(IconX)) - ]), - _: 1 - }), - renderSlot(_ctx.$slots, "content") - ], 512) - ]); - }; - } -}; -export { - _sfc_main$1 as _, - _sfc_main as a -}; diff --git a/public/assets/DialogComp-ByJn29_w.css b/public/assets/DialogComp-ByJn29_w.css deleted file mode 100644 index a8db749..0000000 --- a/public/assets/DialogComp-ByJn29_w.css +++ /dev/null @@ -1,357 +0,0 @@ -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -button, .btn { - cursor: pointer; - align-items: center; - gap: calc(var(--spacing, .25rem) * 3); - border-radius: var(--radius-lg, .5rem); - border-style: var(--tw-border-style); - --tw-border-style: solid; - height: fit-content; - padding-inline: calc(var(--spacing, .25rem) * 4); - padding-block: calc(var(--spacing, .25rem) * 2); - --tw-font-weight: var(--font-weight-normal, 400); - font-weight: var(--font-weight-normal, 400); - --tw-tracking: var(--tracking-wide, .025em); - letter-spacing: var(--tracking-wide, .025em); - transition-property: all; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - border-style: solid; - border-width: 1px; - transition: border-color .1s ease-in-out, background-color .2s; - display: flex; -} -:is(button, .btn):not(.button__subtle, .button__ghost):hover { - --tw-shadow-color: var(--color-black, #000); -} -:is(button, .btn)[disabled], :is(button, .btn).disabled { - pointer-events: none; - cursor: not-allowed; - opacity: .5; -} -:is(button, .btn) svg { - width: calc(var(--spacing, .25rem) * 5); - height: calc(var(--spacing, .25rem) * 5); - transition-property: stroke; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - --tw-duration: .4s; - --tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1)); - transition-duration: .4s; - transition-timing-function: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1)); -} -:is(button, .btn).btn__sm svg { - width: calc(var(--spacing, .25rem) * 4); - height: calc(var(--spacing, .25rem) * 4); -} -:is(button, .btn).btn__lg svg { - width: calc(var(--spacing, .25rem) * 6); - height: calc(var(--spacing, .25rem) * 6); -} -:is(button, .btn):hover { - color: var(--color-white, #fff) !important; -} -:is(button, .btn):hover svg { - stroke: var(--color-white, #fff) !important; -} -:is(button, .btn).btn__primary { - border-color: var(--color-sky-100, oklch(.951 .026 236.824)); - background-color: color-mix(in oklab, var(--color-sky-100, oklch(.951 .026 236.824)) 10%, transparent); - color: var(--color-sky-100, oklch(.951 .026 236.824)); -} -:is(button, .btn).btn__primary svg { - stroke: var(--color-sky-200, oklch(.901 .058 230.902)); -} -:is(button, .btn).btn__primary:hover { - border-color: var(--color-sky-300, oklch(.828 .111 230.318)); - background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 40%, transparent); -} -:is(button, .btn).btn__secondary { - border-color: var(--color-amber-100, oklch(.962 .059 95.617)); - background-color: color-mix(in oklab, var(--color-amber-100, oklch(.962 .059 95.617)) 10%, transparent); - color: var(--color-amber-100, oklch(.962 .059 95.617)); -} -:is(button, .btn).btn__secondary svg { - stroke: var(--color-amber-300, oklch(.879 .169 91.605)); -} -:is(button, .btn).btn__secondary:hover { - border-color: var(--color-amber-400, oklch(.828 .189 84.429)); - background-color: color-mix(in oklab, var(--color-amber-400, oklch(.828 .189 84.429)) 40%, transparent); -} -:is(button, .btn).btn__danger { - border-color: var(--color-rose-100, oklch(.941 .03 12.58)); - background-color: color-mix(in oklab, var(--color-rose-200, oklch(.892 .058 10.001)) 20%, transparent); - color: var(--color-rose-200, oklch(.892 .058 10.001)); -} -:is(button, .btn).btn__danger svg { - stroke: var(--color-rose-400, oklch(.712 .194 13.428)); -} -:is(button, .btn).btn__danger:hover { - border-color: var(--color-rose-500, oklch(.645 .246 16.439)); - background-color: color-mix(in oklab, var(--color-rose-400, oklch(.712 .194 13.428)) 40%, transparent); - color: var(--color-white, #fff); -} -:is(button, .btn).btn__dark { - border-color: var(--color-slate-400, oklch(.704 .04 256.788)); - background-color: color-mix(in oklab, var(--color-slate-200, oklch(.929 .013 255.508)) 10%, transparent); - color: var(--color-slate-100, oklch(.968 .007 247.896)); -} -:is(button, .btn).btn__dark svg { - stroke: var(--color-slate-300, oklch(.869 .022 252.894)); -} -:is(button, .btn).btn__dark:hover { - border-color: var(--color-slate-200, oklch(.929 .013 255.508)); - background-color: color-mix(in oklab, var(--color-slate-400, oklch(.704 .04 256.788)) 40%, transparent); - color: var(--color-white, #fff); -} -:is(button, .btn).btn__success { - border-color: var(--color-lime-100, oklch(.967 .067 122.328)); - background-color: color-mix(in oklab, var(--color-lime-200, oklch(.938 .127 124.321)) 10%, transparent); - color: var(--color-lime-100, oklch(.967 .067 122.328)); -} -:is(button, .btn).btn__success svg { - stroke: var(--color-lime-400, oklch(.841 .238 128.85)); -} -:is(button, .btn).btn__success:hover { - border-color: var(--color-lime-500, oklch(.768 .233 130.85)); - background-color: color-mix(in oklab, var(--color-lime-400, oklch(.841 .238 128.85)) 40%, transparent); - color: var(--color-white, #fff); -} -:is(button, .btn).btn__subtle { - color: var(--color-white, #fff); - background-color: #0000; - border-color: #0000; -} -@media (hover: hover) { -:is(button, .btn).btn__subtle:hover { - background-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent); -} -} -:is(button, .btn).btn__subtle:hover { - border-color: color-mix(in oklab, var(--color-white, #fff) 40%, transparent); - background-color: color-mix(in oklab, var(--color-white, #fff) 20%, transparent); - --tw-gradient-to: color-mix(in oklab, var(--color-white, #fff) 30%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} -:is(button, .btn).btn__ghost { - color: color-mix(in oklab, var(--color-white, #fff) 80%, transparent); - background-color: #0000; - border-color: #0000; -} -@media (hover: hover) { -:is(button, .btn).btn__ghost:hover { - color: var(--color-white, #fff); -} -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-font-weight { - syntax: "*"; - inherits: false -} -@property --tw-tracking { - syntax: "*"; - inherits: false -} -@property --tw-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-ring-inset { - syntax: "*"; - inherits: false -} -@property --tw-ring-offset-width { - syntax: ""; - inherits: false; - initial-value: 0; -} -@property --tw-ring-offset-color { - syntax: "*"; - inherits: false; - initial-value: #fff; -} -@property --tw-ring-offset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-duration { - syntax: "*"; - inherits: false -} -@property --tw-ease { - syntax: "*"; - inherits: false -} -@property --tw-gradient-position { - syntax: "*"; - inherits: false -} -@property --tw-gradient-from { - syntax: ""; - inherits: false; - initial-value: #0000; -} -@property --tw-gradient-via { - syntax: ""; - inherits: false; - initial-value: #0000; -} -@property --tw-gradient-to { - syntax: ""; - inherits: false; - initial-value: #0000; -} -@property --tw-gradient-stops { - syntax: "*"; - inherits: false -} -@property --tw-gradient-via-stops { - syntax: "*"; - inherits: false -} -@property --tw-gradient-from-position { - syntax: ""; - inherits: false; - initial-value: 0%; -} -@property --tw-gradient-via-position { - syntax: ""; - inherits: false; - initial-value: 50%; -} -@property --tw-gradient-to-position { - syntax: ""; - inherits: false; - initial-value: 100%; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.dialog-container { - position: relative; -} -.dialog-container dialog { - pointer-events: none; - z-index: 50; - --tw-translate-x: calc(calc(1 / 2 * 100%) * -1); - max-width: calc(100vw - 2rem); - translate: var(--tw-translate-x) var(--tw-translate-y); - --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - color: var(--color-slate-200, oklch(.929 .013 255.508)); - position: fixed; - top: 50%; - left: 50%; -} -.dialog-container dialog[open] { - pointer-events: auto; -} -.dialog-container dialog::backdrop { - background-color: color-mix(in oklab, var(--color-black, #000) 50%, transparent); - --tw-backdrop-blur: blur(var(--blur-xs, 4px)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); -} -.dialog-container dialog .dialog__close { - top: calc(var(--spacing, .25rem) * 4); - right: calc(var(--spacing, .25rem) * 4); - padding: calc(var(--spacing, .25rem) * 0); - color: var(--color-white, #fff); - position: absolute; -} -.dialog-container dialog .dialog__close svg { - width: calc(var(--spacing, .25rem) * 5); - height: calc(var(--spacing, .25rem) * 5); -} -.dialog__content > :first-child { - padding-right: calc(var(--spacing, .25rem) * 8); -} -@property --tw-translate-x { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-y { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-z { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-backdrop-blur { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-brightness { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-contrast { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-grayscale { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-hue-rotate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-invert { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-opacity { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-saturate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-sepia { - syntax: "*"; - inherits: false -} diff --git a/public/assets/MacrosView-B-ccNLSC.css b/public/assets/MacrosView-B-ccNLSC.css deleted file mode 100644 index fb3f526..0000000 --- a/public/assets/MacrosView-B-ccNLSC.css +++ /dev/null @@ -1,624 +0,0 @@ -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.macro-overview[data-v-f9a187e3] { - grid-template-rows: auto 1fr; - display: grid; - position: relative; -} -.macro-overview[data-v-f9a187e3]:after { - top: calc(var(--spacing, .25rem) * 0); - background-color: var(--color-slate-600, oklch(.446 .043 257.281)); - --tw-content: ""; - content: var(--tw-content); - width: 1px; - height: 100%; - position: absolute; - left: 100%; -} -.macro-overview .macro-overview__list[data-v-f9a187e3] { - align-content: flex-start; - gap: calc(var(--spacing, .25rem) * 1); - display: grid; -} -.macro-overview .macro-item[data-v-f9a187e3] { - align-items: center; - display: flex; -} -.macro-overview .macro-item button[data-v-f9a187e3] { - width: 100%; -} -@property --tw-content { - syntax: "*"; - inherits: false; - initial-value: ""; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -kbd { - height: calc(var(--spacing, .25rem) * 9); - align-items: center; - gap: calc(var(--spacing, .25rem) * 2); - border-radius: var(--radius-md, .375rem); - border-style: var(--tw-border-style); - border-width: 1px; - border-color: var(--color-slate-500, oklch(.554 .046 257.417)); - background-color: var(--color-slate-700, oklch(.372 .044 257.287)); - padding-block: calc(var(--spacing, .25rem) * 1); - padding-right: calc(var(--spacing, .25rem) * 2); - padding-left: calc(var(--spacing, .25rem) * 4); - font-family: var(--font-mono, "Fira Code", monospace); - font-size: var(--text-lg, 1.125rem); - line-height: var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125))); - --tw-font-weight: var(--font-weight-bold, 700); - font-weight: var(--font-weight-bold, 700); - white-space: nowrap; - color: var(--color-white, #fff); - text-transform: uppercase; - --tw-shadow-color: var(--color-slate-500, oklch(.554 .046 257.417)); - transition-property: all; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - box-shadow: 0 .2rem 0 .2rem var(--tw-shadow-color); - display: flex; -} -kbd:has(sup) { - padding-left: calc(var(--spacing, .25rem) * 2); -} -kbd sup { - margin-top: calc(var(--spacing, .25rem) * 1); - font-size: var(--text-xs, .75rem); - line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / .75))); - --tw-font-weight: var(--font-weight-light, 300); - font-weight: var(--font-weight-light, 300); - color: var(--color-slate-200, oklch(.929 .013 255.508)); -} -kbd span.dir { - padding-left: calc(var(--spacing, .25rem) * 1); - color: var(--color-slate-200, oklch(.929 .013 255.508)); -} -kbd.empty { - cursor: pointer; - border-color: var(--color-sky-300, oklch(.828 .111 230.318)); - background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 50%, transparent); - padding-right: calc(var(--spacing, .25rem) * 3); - padding-left: calc(var(--spacing, .25rem) * 3); - --tw-tracking: var(--tracking-widest, .1em); - letter-spacing: var(--tracking-widest, .1em); - --tw-shadow-color: var(--color-sky-600, oklch(.588 .158 241.966)); -} -kbd.insert { - cursor: pointer; - border-color: var(--color-yellow-300, oklch(.905 .182 98.111)); - background-color: color-mix(in oklab, var(--color-yellow-500, oklch(.795 .184 86.047)) 50%, transparent); - --tw-shadow-color: var(--color-yellow-600, oklch(.681 .162 75.834)); -} -:has(kdb):not(.edit) kbd { - pointer-events: none; - cursor: default; -} -.edit kbd { - pointer-events: auto; - cursor: pointer; -} -.edit kbd:hover, .edit kbd.active { - border-color: var(--color-sky-400, oklch(.746 .16 232.661)); - background-color: var(--color-sky-900, oklch(.391 .09 240.876)); - --tw-shadow-color: var(--color-sky-700, oklch(.5 .134 242.749)); -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-font-weight { - syntax: "*"; - inherits: false -} -@property --tw-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-ring-inset { - syntax: "*"; - inherits: false -} -@property --tw-ring-offset-width { - syntax: ""; - inherits: false; - initial-value: 0; -} -@property --tw-ring-offset-color { - syntax: "*"; - inherits: false; - initial-value: #fff; -} -@property --tw-ring-offset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-tracking { - syntax: "*"; - inherits: false -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -span.delay[data-v-05e04cbb] { - cursor: default; - border-radius: var(--radius-sm, .25rem); - border-style: var(--tw-border-style); - border-width: 1px; - border-color: var(--color-slate-400, oklch(.704 .04 256.788)); - background-color: var(--color-slate-500, oklch(.554 .046 257.417)); - padding-inline: calc(var(--spacing, .25rem) * 2); - padding-block: calc(var(--spacing, .25rem) * 1); - font-family: var(--font-sans, "Roboto", sans-serif); - font-size: var(--text-sm, .875rem); - line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875))); - --tw-font-weight: var(--font-weight-semibold, 600); - font-weight: var(--font-weight-semibold, 600); - color: var(--color-slate-950, oklch(.129 .042 264.695)); - align-items: center; - display: flex; -} -span.delay.preset[data-v-05e04cbb] { - border-color: color-mix(in oklab, var(--color-amber-300, oklch(.879 .169 91.605)) 80%, transparent); - background-color: color-mix(in oklab, var(--color-amber-100, oklch(.962 .059 95.617)) 60%, transparent); - color: var(--color-amber-400, oklch(.828 .189 84.429)); -} -span.delay i[data-v-05e04cbb] { - padding-left: calc(var(--spacing, .25rem) * 1); - --tw-font-weight: var(--font-weight-normal, 400); - font-weight: var(--font-weight-normal, 400); - opacity: .8; - font-style: normal; -} -.edit span.delay[data-v-05e04cbb] { - cursor: pointer; -} -.edit span.delay[data-v-05e04cbb]:hover, .edit span.delay.active[data-v-05e04cbb] { - border-color: var(--color-lime-500, oklch(.768 .233 130.85)); - background-color: var(--color-lime-700, oklch(.532 .157 131.589)); - color: var(--color-lime-200, oklch(.938 .127 124.321)); -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-font-weight { - syntax: "*"; - inherits: false -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.macro-recorder__output[data-v-33cbf1af] { - top: calc(var(--spacing, .25rem) * 0); - left: calc(var(--spacing, .25rem) * 0); - align-items: center; - row-gap: calc(var(--spacing, .25rem) * 4); - height: fit-content; - padding: calc(var(--spacing, .25rem) * 4); - flex-wrap: wrap; - display: flex; - position: absolute; -} -hr.spacer[data-v-33cbf1af]:last-of-type { - display: none; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.recorder-input__container[data-v-9a99c4ac], .macro-recorder__input[data-v-9a99c4ac] { - inset: calc(var(--spacing, .25rem) * 0); - opacity: 0; - width: 100%; - height: 100%; - display: none; - position: absolute; -} -:is(.recorder-input__container, .macro-recorder__input).record[data-v-9a99c4ac] { - display: block; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.context-menu { - position: relative; -} -.context-menu .context-menu__content { - pointer-events: none; - z-index: 50; - margin-top: calc(var(--spacing, .25rem) * 2); - --tw-translate-y: -100%; - min-width: 100%; - translate: var(--tw-translate-x) var(--tw-translate-y); - border-radius: var(--radius-md, .375rem); - border-style: var(--tw-border-style); - border-width: 1px; - border-color: color-mix(in oklab, var(--color-white, #fff) 50%, transparent); - background-color: color-mix(in oklab, var(--color-slate-100, oklch(.968 .007 247.896)) 60%, transparent); - color: var(--color-slate-800, oklch(.279 .041 260.031)); - opacity: 0; - --tw-backdrop-blur: blur(var(--blur-3xl, 64px)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - transition-property: all; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - display: grid; - position: absolute; - top: 100%; -} -.context-menu .context-menu__content.open { - pointer-events: auto; - --tw-translate-y: calc(var(--spacing, .25rem) * 0); - translate: var(--tw-translate-x) var(--tw-translate-y); - opacity: 1; -} -.context-menu ul { - color: var(--color-slate-800, oklch(.279 .041 260.031)); -} -:where(.context-menu ul > :not(:last-child)) { - --tw-divide-y-reverse: 0; - border-bottom-style: var(--tw-border-style); - border-top-style: var(--tw-border-style); - border-top-width: calc(1px * var(--tw-divide-y-reverse)); - border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - border-color: var(--color-slate-300, oklch(.869 .022 252.894)); -} -.context-menu ul li { - cursor: pointer; - align-items: center; - gap: calc(var(--spacing, .25rem) * 2); - padding: calc(var(--spacing, .25rem) * 2); - display: flex; -} -@media (hover: hover) { -.context-menu ul li:hover { - background-color: color-mix(in oklab, var(--color-black, #000) 10%, transparent); -} -} -.context-menu ul li svg { - width: calc(var(--spacing, .25rem) * 5); - height: calc(var(--spacing, .25rem) * 5); -} -@property --tw-translate-x { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-y { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-z { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-backdrop-blur { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-brightness { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-contrast { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-grayscale { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-hue-rotate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-invert { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-opacity { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-saturate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-sepia { - syntax: "*"; - inherits: false -} -@property --tw-divide-y-reverse { - syntax: "*"; - inherits: false; - initial-value: 0; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ - -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -button.selected[data-v-601167b6] { - background-color: var(--color-sky-500, oklch(.685 .169 237.323)); - --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - --tw-ring-color: var(--color-sky-500, oklch(.685 .169 237.323)); - --tw-ring-offset-width: 1px; - --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); -} -@property --tw-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-ring-inset { - syntax: "*"; - inherits: false -} -@property --tw-ring-offset-width { - syntax: ""; - inherits: false; - initial-value: 0; -} -@property --tw-ring-offset-color { - syntax: "*"; - inherits: false; - initial-value: #fff; -} -@property --tw-ring-offset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ - -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ - -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.insert-output[data-v-d2aab140] { - margin-bottom: calc(var(--spacing, .25rem) * 4); - justify-content: center; - align-items: center; - width: 100%; - display: flex; -} -.insert-key__direction[data-v-d2aab140] { - margin-top: calc(var(--spacing, .25rem) * 6); - justify-content: center; - gap: calc(var(--spacing, .25rem) * 2); - display: flex; -} -button.selected[data-v-d2aab140] { - background-color: var(--color-sky-500, oklch(.685 .169 237.323)); - --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - --tw-ring-color: var(--color-sky-500, oklch(.685 .169 237.323)); - --tw-ring-offset-width: 1px; - --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); -} -@property --tw-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-shadow-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-inset-ring-color { - syntax: "*"; - inherits: false -} -@property --tw-inset-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -@property --tw-ring-inset { - syntax: "*"; - inherits: false -} -@property --tw-ring-offset-width { - syntax: ""; - inherits: false; - initial-value: 0; -} -@property --tw-ring-offset-color { - syntax: "*"; - inherits: false; - initial-value: #fff; -} -@property --tw-ring-offset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.macro-edit__dialogs[data-v-bf9e32be] { - flex-grow: 1; - justify-content: flex-end; - display: flex; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.macro-recorder__header[data-v-19251359] { - gap: calc(var(--spacing, .25rem) * 4); - width: 100%; - display: grid; -} -.macro-recorder__header .edit__buttons[data-v-19251359] { - justify-content: space-between; - gap: calc(var(--spacing, .25rem) * 2); - width: 100%; - display: flex; -} -.macro-recorder__header > div[data-v-19251359] { - align-items: flex-end; - gap: calc(var(--spacing, .25rem) * 2); - display: flex; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ - -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.macro-recorder__footer[data-v-fec5e8b6] { - justify-content: space-between; - gap: calc(var(--spacing, .25rem) * 2); - display: flex; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.macro-recorder { - height: 100%; -} -.recorder-interface { - gap: calc(var(--spacing, .25rem) * 4); - height: 100%; - transition-property: grid-template-rows; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - grid-template-rows: auto 1fr auto; - display: grid; -} -.recorder-interface__container { - border-radius: var(--radius-lg, .5rem); - border-style: var(--tw-border-style); - border-width: 1px; - border-color: var(--color-slate-600, oklch(.446 .043 257.281)); - background-color: color-mix(in oklab, var(--color-slate-950, oklch(.129 .042 264.695)) 50%, transparent); - width: 100%; - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - position: relative; - overflow: auto; -} -.recorder-interface__container.record { - border-color: var(--color-rose-300, oklch(.81 .117 11.638)); - background-color: color-mix(in oklab, var(--color-rose-400, oklch(.712 .194 13.428)) 10%, transparent); -} -.recorder-interface__container.edit { - border-color: var(--color-sky-300, oklch(.828 .111 230.318)); - background-color: color-mix(in oklab, var(--color-sky-900, oklch(.391 .09 240.876)) 10%, transparent); -} -#macro-name { - border-color: #0000; - border-bottom-color: var(--color-slate-300, oklch(.869 .022 252.894)); - width: 100%; - padding-block: calc(var(--spacing, .25rem) * 0); - font-size: var(--text-lg, 1.125rem); - line-height: var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125))); - outline-style: var(--tw-outline-style); - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - background-color: #0000; - border-radius: 0; - outline-width: 0; -} -#macro-name:focus { - border-color: #0000; - border-bottom-color: var(--color-sky-400, oklch(.746 .16 232.661)); - background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 10%, transparent); -} -.disabled { - pointer-events: none; - cursor: not-allowed; - opacity: .5; -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-outline-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.macro-panel__content[data-v-c7be9772] { - gap: calc(var(--spacing, .25rem) * 6); - padding-top: calc(var(--spacing, .25rem) * 2); - grid-template-columns: 25ch 1fr; - display: grid; -} diff --git a/public/assets/MacrosView-Bf1eb3go.js b/public/assets/MacrosView-Bf1eb3go.js deleted file mode 100644 index 5028ea7..0000000 --- a/public/assets/MacrosView-Bf1eb3go.js +++ /dev/null @@ -1,1419 +0,0 @@ -import { a as createVueComponent, _ as _export_sfc, r as reactive, b as onMounted, d as axios, e as appUrl, c as createElementBlock, f as createBaseVNode, F as Fragment, g as renderList, o as openBlock, h as createVNode, w as withCtx, i as createTextVNode, u as unref, I as IconKeyboard, t as toDisplayString, j as withModifiers, k as isLocal, A as AuthCall, l as defineStore, m as ref, n as onUpdated, p as createCommentVNode, q as normalizeClass, s as createBlock, v as renderSlot, x as withDirectives, y as vModelText } from "./index-GNAKlyBz.js"; -import { _ as _sfc_main$h, a as _sfc_main$i } from "./DialogComp-Ba5-BUTe.js"; -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconAlarm = createVueComponent("outline", "alarm", "IconAlarm", [["path", { "d": "M12 13m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0", "key": "svg-0" }], ["path", { "d": "M12 10l0 3l2 0", "key": "svg-1" }], ["path", { "d": "M7 4l-2.75 2", "key": "svg-2" }], ["path", { "d": "M17 4l2.75 2", "key": "svg-3" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconArrowLeftCircle = createVueComponent("outline", "arrow-left-circle", "IconArrowLeftCircle", [["path", { "d": "M17 12h-14", "key": "svg-0" }], ["path", { "d": "M6 9l-3 3l3 3", "key": "svg-1" }], ["path", { "d": "M19 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconArrowRightCircle = createVueComponent("outline", "arrow-right-circle", "IconArrowRightCircle", [["path", { "d": "M18 15l3 -3l-3 -3", "key": "svg-0" }], ["path", { "d": "M5 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-1" }], ["path", { "d": "M7 12h14", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconDeviceFloppy = createVueComponent("outline", "device-floppy", "IconDeviceFloppy", [["path", { "d": "M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2", "key": "svg-0" }], ["path", { "d": "M12 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-1" }], ["path", { "d": "M14 4l0 4l-6 0l0 -4", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconPencil = createVueComponent("outline", "pencil", "IconPencil", [["path", { "d": "M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4", "key": "svg-0" }], ["path", { "d": "M13.5 6.5l4 4", "key": "svg-1" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconPlus = createVueComponent("outline", "plus", "IconPlus", [["path", { "d": "M12 5l0 14", "key": "svg-0" }], ["path", { "d": "M5 12l14 0", "key": "svg-1" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconRestore = createVueComponent("outline", "restore", "IconRestore", [["path", { "d": "M3.06 13a9 9 0 1 0 .49 -4.087", "key": "svg-0" }], ["path", { "d": "M3 4.001v5h5", "key": "svg-1" }], ["path", { "d": "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconTimeDuration15 = createVueComponent("outline", "time-duration-15", "IconTimeDuration15", [["path", { "d": "M12 15h2a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-2v-3h3", "key": "svg-0" }], ["path", { "d": "M9 9v6", "key": "svg-1" }], ["path", { "d": "M3 12v.01", "key": "svg-2" }], ["path", { "d": "M12 21v.01", "key": "svg-3" }], ["path", { "d": "M7.5 4.2v.01", "key": "svg-4" }], ["path", { "d": "M16.5 19.8v.01", "key": "svg-5" }], ["path", { "d": "M7.5 19.8v.01", "key": "svg-6" }], ["path", { "d": "M4.2 16.5v.01", "key": "svg-7" }], ["path", { "d": "M19.8 16.5v.01", "key": "svg-8" }], ["path", { "d": "M4.2 7.5v.01", "key": "svg-9" }], ["path", { "d": "M21 12a9 9 0 0 0 -9 -9", "key": "svg-10" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconTrash = createVueComponent("outline", "trash", "IconTrash", [["path", { "d": "M4 7l16 0", "key": "svg-0" }], ["path", { "d": "M10 11l0 6", "key": "svg-1" }], ["path", { "d": "M14 11l0 6", "key": "svg-2" }], ["path", { "d": "M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12", "key": "svg-3" }], ["path", { "d": "M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3", "key": "svg-4" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconPlayerRecordFilled = createVueComponent("filled", "player-record-filled", "IconPlayerRecordFilled", [["path", { "d": "M8 5.072a8 8 0 1 1 -3.995 7.213l-.005 -.285l.005 -.285a8 8 0 0 1 3.995 -6.643z", "key": "svg-0" }]]); -/** - * @license @tabler/icons-vue v3.30.0 - MIT - * - * This source code is licensed under the MIT license. - * See the LICENSE file in the root directory of this source tree. - */ -var IconPlayerStopFilled = createVueComponent("filled", "player-stop-filled", "IconPlayerStopFilled", [["path", { "d": "M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z", "key": "svg-0" }]]); -const _hoisted_1$d = { class: "macro-overview mcrm-block block__dark" }; -const _hoisted_2$b = { class: "macro-overview__list" }; -const _sfc_main$g = { - __name: "MacroOverview", - setup(__props) { - const macros = reactive({ - list: [] - }); - onMounted(() => { - axios.post(appUrl() + "/macro/list").then((data) => { - if (data.data.length > 0) macros.list = data.data; - }); - }); - function runMacro(macro) { - const data = isLocal() ? { macro } : AuthCall({ macro }); - axios.post(appUrl() + "/macro/play", data).then((data2) => { - console.log(data2); - }); - } - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$d, [ - _cache[0] || (_cache[0] = createBaseVNode("h4", { class: "border-b-2 border-transparent" }, "Saved Macros", -1)), - createBaseVNode("div", _hoisted_2$b, [ - (openBlock(true), createElementBlock(Fragment, null, renderList(macros.list, (macro, i) => { - return openBlock(), createElementBlock("div", { - class: "macro-item", - key: i - }, [ - createVNode(_sfc_main$h, { - variant: "dark", - class: "w-full", - size: "sm", - onClick: withModifiers(($event) => runMacro(macro), ["prevent"]) - }, { - default: withCtx(() => [ - createVNode(unref(IconKeyboard)), - createTextVNode(" " + toDisplayString(macro), 1) - ]), - _: 2 - }, 1032, ["onClick"]) - ]); - }), 128)) - ]) - ]); - }; - } -}; -const MacroOverview = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-f9a187e3"]]); -const keyMap = { - // Modifier keys - Control: "Ctrl", - Shift: "Shift", - Alt: "Alt", - Meta: "Win", - CapsLock: "Caps", - // Special keys - PageUp: "PgUp", - PageDown: "PgDn", - ScrollLock: "Scr Lk", - Insert: "Ins", - Delete: "Del", - Escape: "Esc", - Space: "Space", - // Symbol keys - Backquote: "`", - Backslash: "\\", - BracketLeft: "[", - BracketRight: "]", - Comma: ",", - Equal: "=", - Minus: "-", - Period: ".", - Quote: "'", - Semicolon: ";", - Slash: "/", - // Arrow keys - ArrowUp: "▲", - ArrowRight: "▶", - ArrowDown: "▼", - ArrowLeft: "◀", - // Media keys - MediaPlayPause: "Play", - MediaStop: "Stop", - MediaTrackNext: "Next", - MediaTrackPrevious: "Prev", - MediaVolumeDown: "Down", - MediaVolumeUp: "Up", - AudioVolumeMute: "Mute", - AudioVolumeDown: "Down", - AudioVolumeUp: "Up" -}; -const filterKey = (e) => { - const k = {}; - if (e.location === 1) k.loc = "left"; - if (e.location === 2) k.loc = "right"; - if (e.location === 3) k.loc = "num"; - if (e.key.includes("Media") || e.key.includes("Audio")) k.loc = mediaPrefix(e); - if (keyMap[e.code] || keyMap[e.key]) { - k.str = keyMap[e.code] || keyMap[e.key]; - } else { - k.str = e.key.toLowerCase(); - } - return k; -}; -const mediaPrefix = (e) => { - switch (e.key) { - case "MediaPlayPause": - case "MediaStop": - case "MediaTrackNext": - case "MediaTrackPrevious": - return "Media"; - case "MediaVolumeDown": - case "MediaVolumeUp": - case "AudioVolumeDown": - case "AudioVolumeUp": - case "AudioVolumeMute": - return "Volume"; - } -}; -const isRepeat = (lastStep, e, direction) => { - return lastStep && lastStep.type === "key" && lastStep.code === e.code && lastStep.direction === direction; -}; -const invalidMacro = (steps) => { - const downKeys = []; - const upKeys = []; - Object.keys(steps).forEach((stepKey) => { - const step = steps[stepKey]; - if (step.type !== "key") return; - if (step.direction == "down") downKeys.push(step.key); - if (step.direction == "up") { - if (!downKeys.includes(step.key)) upKeys.push(step.key); - else downKeys.splice(downKeys.indexOf(step.key), 1); - } - }); - if (upKeys.length === 0 && downKeys.length === 0) return false; - return { down: downKeys, up: upKeys }; -}; -const useMacroRecorderStore = defineStore("macrorecorder", () => { - const state = ref({ - record: false, - edit: false, - editKey: false, - editDelay: false, - validationErrors: false - }); - const macroName = ref(""); - const steps = ref([]); - const delay = ref({ - start: 0, - fixed: false - }); - const getEditKey = () => steps.value[state.value.editKey]; - const getAdjacentKey = (pos, includeDelay = false) => { - let returnVal = false; - const mod = pos == "before" ? -1 : 1; - const keyIndex = state.value.editKey + 2 * mod; - const delayIndex = includeDelay ? state.value.editKey + 1 * mod : false; - if (steps.value[keyIndex]) returnVal = steps.value[keyIndex]; - if (delayIndex && steps.value[delayIndex]) - returnVal = { - delay: steps.value[delayIndex], - key: steps.value[keyIndex], - delayIndex - }; - return returnVal; - }; - const getEditDelay = () => steps.value[state.value.editDelay]; - const recordStep = (e, direction = false, key = false) => { - const lastStep = steps.value[steps.value.length - 1]; - let stepVal = {}; - if (typeof e === "object" && !isRepeat(lastStep, e, direction)) { - if (key === false) recordDelay(); - stepVal = { - type: "key", - key: e.key, - code: e.code, - location: e.location, - direction, - keyObj: filterKey(e) - }; - } else if (direction && key !== false) { - stepVal = steps.value[key]; - stepVal.direction = direction; - } else if (typeof e === "number") { - stepVal = { type: "delay", value: parseFloat(e.toFixed()) }; - } - if (key !== false) steps.value[key] = stepVal; - else steps.value.push(stepVal); - }; - const recordDelay = () => { - if (delay.value.fixed !== false) - recordStep(delay.value.fixed); - else if (delay.value.start == 0) - delay.value.start = performance.now(); - else { - recordStep(performance.now() - delay.value.start); - delay.value.start = performance.now(); - } - }; - const insertKey = (e, direction, adjacentDelayIndex) => { - let min, max, newKeyIndex, newDelayIndex; - if (adjacentDelayIndex === null) { - min = state.value.editKey == 0 ? 0 : state.value.editKey; - max = state.value.editKey == 0 ? 1 : false; - newKeyIndex = max === false ? min + 2 : min; - newDelayIndex = min + 1; - } else if (state.value.editKey < adjacentDelayIndex) { - min = state.value.editKey; - max = adjacentDelayIndex; - newKeyIndex = min + 2; - newDelayIndex = min + 1; - } else { - min = adjacentDelayIndex; - max = state.value.editKey; - newKeyIndex = min + 1; - newDelayIndex = min + 2; - } - if (max !== false) { - for (let i = Object.keys(steps.value).length - 1; i >= max; i--) { - steps.value[i + 2] = steps.value[i]; - } - } - recordStep(e, direction, newKeyIndex); - recordStep(10, false, newDelayIndex); - state.value.editKey = false; - }; - const deleteEditKey = () => { - if (state.value.editKey === 0) steps.value.splice(state.value.editKey, 2); - else steps.value.splice(state.value.editKey - 1, 2); - state.value.editKey = false; - }; - const restartDelay = () => { - delay.value.start = performance.now(); - }; - const changeName = (name) => { - macroName.value = name; - console.log(macroName.value); - }; - const changeDelay = (fixed) => { - delay.value.fixed = fixed; - formatDelays(); - }; - const formatDelays = () => { - steps.value = steps.value.map((step) => { - if (step.type === "delay" && delay.value.fixed !== false) step.value = delay.value.fixed; - return step; - }); - }; - const toggleEdit = (type, key) => { - if (type === "key") { - state.value.editKey = key; - state.value.editDelay = false; - } - if (type === "delay") { - state.value.editKey = false; - state.value.editDelay = key; - } - }; - const resetEdit = () => { - state.value.edit = false; - state.value.editKey = false; - state.value.editDelay = false; - }; - const reset = () => { - state.value.record = false; - delay.value.start = 0; - steps.value = []; - if (state.value.edit) resetEdit(); - }; - const save = () => { - state.value.validationErrors = invalidMacro(steps.value); - if (state.value.validationErrors) return false; - axios.post(appUrl() + "/macro/record", { name: macroName.value, steps: steps.value }).then((data) => { - console.log(data); - }); - return true; - }; - return { - state, - steps, - delay, - getEditKey, - getAdjacentKey, - getEditDelay, - recordStep, - insertKey, - deleteEditKey, - restartDelay, - changeName, - changeDelay, - toggleEdit, - resetEdit, - reset, - save - }; -}); -const _hoisted_1$c = { key: 0 }; -const _hoisted_2$a = ["innerHTML"]; -const _hoisted_3$6 = { class: "dir" }; -const _hoisted_4$4 = { key: 1 }; -const _sfc_main$f = { - __name: "MacroKey", - props: { - keyObj: Object, - direction: String, - active: Boolean, - empty: Boolean - }, - setup(__props) { - const props = __props; - const dir = reactive({ - value: false - }); - onMounted(() => { - if (props.empty) return; - setDirection(); - }); - onUpdated(() => { - setDirection(); - }); - const setDirection = () => { - if (props.direction) dir.value = props.direction; - else dir.value = props.keyObj.direction; - }; - return (_ctx, _cache) => { - return openBlock(), createElementBlock("kbd", { - class: normalizeClass(`${__props.active ? "active" : ""} ${__props.empty ? "empty" : ""}`) - }, [ - __props.keyObj ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ - __props.keyObj.loc ? (openBlock(), createElementBlock("sup", _hoisted_1$c, toDisplayString(__props.keyObj.loc), 1)) : createCommentVNode("", true), - createBaseVNode("span", { - innerHTML: __props.keyObj.str - }, null, 8, _hoisted_2$a), - createBaseVNode("span", _hoisted_3$6, toDisplayString(dir.value === "down" ? "↓" : "↑"), 1) - ], 64)) : __props.empty ? (openBlock(), createElementBlock("span", _hoisted_4$4, "[ ]")) : createCommentVNode("", true) - ], 2); - }; - } -}; -const _sfc_main$e = { - __name: "DelaySpan", - props: { - value: Number, - active: Boolean, - preset: Boolean - }, - setup(__props) { - return (_ctx, _cache) => { - return openBlock(), createElementBlock("span", { - class: normalizeClass(`delay ${__props.active ? "active" : ""} ${__props.preset ? "preset" : ""}`) - }, [ - __props.value < 1e4 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ - createTextVNode(toDisplayString(__props.value) + " ", 1), - _cache[0] || (_cache[0] = createBaseVNode("i", null, "ms", -1)) - ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ - _cache[1] || (_cache[1] = createTextVNode(" >10 ")), - _cache[2] || (_cache[2] = createBaseVNode("i", null, "s", -1)) - ], 64)) - ], 2); - }; - } -}; -const DelaySpan = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-05e04cbb"]]); -const _sfc_main$d = { - __name: "RecorderOutput", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", { - class: normalizeClass(`macro-recorder__output ${unref(macroRecorder).state.record && "record"} ${unref(macroRecorder).state.edit && "edit"}`) - }, [ - (openBlock(true), createElementBlock(Fragment, null, renderList(unref(macroRecorder).steps, (step, key) => { - return openBlock(), createElementBlock(Fragment, null, [ - step.type === "key" ? (openBlock(), createBlock(_sfc_main$f, { - key, - "key-obj": step.keyObj, - direction: step.direction, - active: unref(macroRecorder).state.editKey === key, - onClick: ($event) => unref(macroRecorder).state.edit ? unref(macroRecorder).toggleEdit("key", key) : false - }, null, 8, ["key-obj", "direction", "active", "onClick"])) : step.type === "delay" ? (openBlock(), createBlock(DelaySpan, { - key, - value: step.value, - active: unref(macroRecorder).state.editDelay === key, - onClick: ($event) => unref(macroRecorder).toggleEdit("delay", key) - }, null, 8, ["value", "active", "onClick"])) : createCommentVNode("", true), - _cache[0] || (_cache[0] = createBaseVNode("hr", { class: "spacer" }, null, -1)) - ], 64); - }), 256)) - ], 2); - }; - } -}; -const RecorderOutput = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-33cbf1af"]]); -const _sfc_main$c = { - __name: "RecorderInput", - setup(__props) { - const macroInput = ref(null); - const macroRecorder = useMacroRecorderStore(); - onUpdated(() => { - if (macroRecorder.state.record) { - macroInput.value.focus(); - if (macroRecorder.delay.start !== 0) macroRecorder.restartDelay(); - } - }); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", { - class: normalizeClass(`recorder-input__container ${unref(macroRecorder).state.record && "record"}`) - }, [ - unref(macroRecorder).state.record ? (openBlock(), createElementBlock("input", { - key: 0, - class: normalizeClass(`macro-recorder__input ${unref(macroRecorder).state.record && "record"}`), - type: "text", - ref_key: "macroInput", - ref: macroInput, - onFocus: _cache[0] || (_cache[0] = ($event) => console.log("focus")), - onKeydown: _cache[1] || (_cache[1] = withModifiers(($event) => unref(macroRecorder).recordStep($event, "down"), ["prevent"])), - onKeyup: _cache[2] || (_cache[2] = withModifiers(($event) => unref(macroRecorder).recordStep($event, "up"), ["prevent"])) - }, null, 34)) : createCommentVNode("", true) - ], 2); - }; - } -}; -const RecorderInput = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-9a99c4ac"]]); -const _hoisted_1$b = { class: "context-menu" }; -const _sfc_main$b = { - __name: "ContextMenu", - props: { - open: Boolean - }, - setup(__props, { expose: __expose }) { - __expose({ toggle }); - const props = __props; - const menuOpen = ref(false); - onMounted(() => { - menuOpen.value = props.open; - }); - function toggle() { - console.log("toggle"); - menuOpen.value = !menuOpen.value; - } - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$b, [ - createBaseVNode("div", { - class: "context-menu__trigger", - onClick: toggle - }, [ - renderSlot(_ctx.$slots, "trigger") - ]), - createBaseVNode("div", { - class: normalizeClass(`context-menu__content ${menuOpen.value ? "open" : ""}`) - }, [ - renderSlot(_ctx.$slots, "content") - ], 2) - ]); - }; - } -}; -const _hoisted_1$a = { - type: "number", - step: "10", - min: "0", - max: "3600000", - ref: "customDelayInput", - placeholder: "100" -}; -const _hoisted_2$9 = { class: "flex justify-end" }; -const _sfc_main$a = { - __name: "FixedDelayMenu", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - const ctxtMenu = ref(); - function changeDelay(num) { - macroRecorder.changeDelay(num); - ctxtMenu.value.toggle(); - } - return (_ctx, _cache) => { - return openBlock(), createBlock(_sfc_main$b, { - ref_key: "ctxtMenu", - ref: ctxtMenu - }, { - trigger: withCtx(() => [ - createVNode(_sfc_main$h, { - variant: "secondary", - size: "sm" - }, { - default: withCtx(() => [ - createVNode(unref(IconTimeDuration15)), - _cache[5] || (_cache[5] = createTextVNode("Fixed delay ")) - ]), - _: 1 - }) - ]), - content: withCtx(() => [ - createBaseVNode("ul", null, [ - createBaseVNode("li", { - onClick: _cache[0] || (_cache[0] = ($event) => changeDelay(0)) - }, "0ms"), - createBaseVNode("li", { - onClick: _cache[1] || (_cache[1] = ($event) => changeDelay(15)) - }, "15ms"), - createBaseVNode("li", { - onClick: _cache[2] || (_cache[2] = ($event) => changeDelay(50)) - }, "50ms"), - createBaseVNode("li", { - onClick: _cache[3] || (_cache[3] = ($event) => changeDelay(100)) - }, "100ms"), - createBaseVNode("li", null, [ - createVNode(_sfc_main$i, null, { - trigger: withCtx(() => _cache[6] || (_cache[6] = [ - createBaseVNode("span", null, "Custom delay", -1) - ])), - content: withCtx(() => [ - _cache[9] || (_cache[9] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Custom delay", -1)), - createBaseVNode("form", { - class: "grid gap-4 w-44", - onSubmit: _cache[4] || (_cache[4] = withModifiers(($event) => changeDelay(parseInt(_ctx.$refs.customDelayInput.value)), ["prevent"])) - }, [ - createBaseVNode("div", null, [ - createBaseVNode("input", _hoisted_1$a, null, 512), - _cache[7] || (_cache[7] = createBaseVNode("span", null, "ms", -1)) - ]), - createBaseVNode("div", _hoisted_2$9, [ - createVNode(_sfc_main$h, { - variant: "primary", - size: "sm" - }, { - default: withCtx(() => _cache[8] || (_cache[8] = [ - createTextVNode("Set custom delay") - ])), - _: 1 - }) - ]) - ], 32) - ]), - _: 1 - }) - ]) - ]) - ]), - _: 1 - }, 512); - }; - } -}; -const FixedDelayMenu = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-597b5d4a"]]); -const _hoisted_1$9 = { - id: "edit-key-dialog", - class: "dialog__content" -}; -const _hoisted_2$8 = { - class: "grid gap-4", - "submit.prevent": "" -}; -const _hoisted_3$5 = { class: "flex gap-2 justify-center" }; -const _hoisted_4$3 = { class: "flex justify-end" }; -const _sfc_main$9 = { - __name: "EditKeyDialog", - setup(__props) { - const editable = reactive({ - key: {}, - newKey: {} - }); - const macroRecorder = useMacroRecorderStore(); - const newKeyInput = ref(null); - onMounted(() => { - editable.key = macroRecorder.getEditKey(); - editable.newKey.direction = editable.key.direction; - }); - const handleNewKey = (e) => { - editable.newKey.e = e; - editable.newKey.keyObj = filterKey(e); - }; - const handleNewDirection = (direction) => { - editable.newKey.direction = direction; - editable.newKey.keyObj = filterKey(editable.key); - }; - const changeKey = () => { - macroRecorder.recordStep( - editable.newKey.e, - editable.newKey.direction, - macroRecorder.state.editKey - ); - macroRecorder.state.editKey = false; - }; - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$9, [ - _cache[9] || (_cache[9] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Press a key", -1)), - createBaseVNode("div", { - class: "flex justify-center", - onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$refs.newKeyInput.focus()) - }, [ - editable.key.keyObj ? (openBlock(), createBlock(_sfc_main$f, { - key: 0, - "key-obj": editable.key.keyObj, - direction: editable.key.direction - }, null, 8, ["key-obj", "direction"])) : createCommentVNode("", true), - typeof editable.newKey.keyObj === "object" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [ - _cache[5] || (_cache[5] = createBaseVNode("span", { class: "px-4 flex items-center text-white" }, " >>> ", -1)), - createVNode(_sfc_main$f, { - "key-obj": editable.newKey.keyObj, - direction: editable.newKey.direction - }, null, 8, ["key-obj", "direction"]) - ], 64)) : createCommentVNode("", true) - ]), - createBaseVNode("form", _hoisted_2$8, [ - createBaseVNode("input", { - class: "size-0 opacity-0", - type: "text", - min: "0", - max: "1", - ref_key: "newKeyInput", - ref: newKeyInput, - placeholder: "New key", - autofocus: "", - onKeydown: _cache[1] || (_cache[1] = withModifiers(($event) => handleNewKey($event), ["prevent"])) - }, null, 544), - createBaseVNode("div", _hoisted_3$5, [ - createVNode(_sfc_main$h, { - variant: "secondary", - class: normalizeClass(editable.newKey.direction === "down" ? "selected" : ""), - size: "sm", - onClick: _cache[2] || (_cache[2] = withModifiers(($event) => handleNewDirection("down"), ["prevent"])) - }, { - default: withCtx(() => _cache[6] || (_cache[6] = [ - createTextVNode(" ↓ Down ") - ])), - _: 1 - }, 8, ["class"]), - createVNode(_sfc_main$h, { - variant: "secondary", - class: normalizeClass(editable.newKey.direction === "up" ? "selected" : ""), - size: "sm", - onClick: _cache[3] || (_cache[3] = withModifiers(($event) => handleNewDirection("up"), ["prevent"])) - }, { - default: withCtx(() => _cache[7] || (_cache[7] = [ - createTextVNode(" ↑ Up ") - ])), - _: 1 - }, 8, ["class"]) - ]), - createBaseVNode("div", _hoisted_4$3, [ - createVNode(_sfc_main$h, { - variant: "primary", - size: "sm", - onClick: _cache[4] || (_cache[4] = withModifiers(($event) => changeKey(), ["prevent"])) - }, { - default: withCtx(() => _cache[8] || (_cache[8] = [ - createTextVNode(" Change key ") - ])), - _: 1 - }) - ]) - ]) - ]); - }; - } -}; -const EditKeyDialog = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-601167b6"]]); -const _hoisted_1$8 = { - id: "edit-delay-dialog", - class: "dialog__content" -}; -const _hoisted_2$7 = { - key: 0, - class: "flex justify-center" -}; -const _hoisted_3$4 = { - class: "grid gap-4 mt-6", - "submit.prevent": "" -}; -const _hoisted_4$2 = { key: 0 }; -const _hoisted_5$2 = { class: "flex justify-end" }; -const _sfc_main$8 = { - __name: "EditDelayDialog", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - const editable = reactive({ - delay: {}, - newDelay: { value: 0 } - }); - onMounted(() => { - editable.delay = macroRecorder.getEditDelay(); - editable.newDelay.value = editable.delay.value; - console.log(editable); - }); - const changeDelay = () => { - if (!editable.newDelay.value) return; - macroRecorder.recordStep(editable.newDelay.value, false, macroRecorder.state.editDelay); - macroRecorder.state.editDelay = false; - }; - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$8, [ - _cache[4] || (_cache[4] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Edit delay", -1)), - editable.delay.value ? (openBlock(), createElementBlock("div", _hoisted_2$7, [ - createVNode(DelaySpan, { - class: "!text-lg", - value: editable.delay.value - }, null, 8, ["value"]) - ])) : createCommentVNode("", true), - createBaseVNode("form", _hoisted_3$4, [ - editable.newDelay.value ? (openBlock(), createElementBlock("div", _hoisted_4$2, [ - withDirectives(createBaseVNode("input", { - type: "number", - min: "0", - max: "3600000", - step: "10", - "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => editable.newDelay.value = $event), - autofocus: "" - }, null, 512), [ - [vModelText, editable.newDelay.value] - ]), - _cache[2] || (_cache[2] = createBaseVNode("span", null, "ms", -1)) - ])) : createCommentVNode("", true), - createBaseVNode("div", _hoisted_5$2, [ - createVNode(_sfc_main$h, { - variant: "primary", - size: "sm", - onClick: _cache[1] || (_cache[1] = withModifiers(($event) => changeDelay(), ["prevent"])) - }, { - default: withCtx(() => _cache[3] || (_cache[3] = [ - createTextVNode(" Change delay ") - ])), - _: 1 - }) - ]) - ]) - ]); - }; - } -}; -const EditDelayDialog = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-d4c82ec9"]]); -const _hoisted_1$7 = { - id: "delete-key-dialog", - class: "dialog__content" -}; -const _hoisted_2$6 = { class: "flex justify-center w-full mb-4" }; -const _hoisted_3$3 = { class: "flex justify-end gap-2 mt-6" }; -const _sfc_main$7 = { - __name: "DeleteKeyDialog", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - const keyObj = ref(null); - onMounted(() => { - keyObj.value = filterKey(macroRecorder.getEditKey()); - }); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$7, [ - _cache[2] || (_cache[2] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Delete key", -1)), - createBaseVNode("div", _hoisted_2$6, [ - keyObj.value ? (openBlock(), createBlock(_sfc_main$f, { - key: 0, - "key-obj": keyObj.value - }, null, 8, ["key-obj"])) : createCommentVNode("", true) - ]), - _cache[3] || (_cache[3] = createBaseVNode("p", { class: "text-sm text-slate-300" }, "Are you sure you want to delete this key?", -1)), - createBaseVNode("div", _hoisted_3$3, [ - createVNode(_sfc_main$h, { - variant: "danger", - size: "sm", - onClick: _cache[0] || (_cache[0] = ($event) => unref(macroRecorder).deleteEditKey()) - }, { - default: withCtx(() => _cache[1] || (_cache[1] = [ - createTextVNode(" Delete key ") - ])), - _: 1 - }) - ]) - ]); - }; - } -}; -const DeleteKeyDialog = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-7dc19ba4"]]); -const _hoisted_1$6 = { - id: "insert-key-dialog", - class: "dialog__content w-96" -}; -const _hoisted_2$5 = { class: "text-slate-50 mb-4" }; -const _hoisted_3$2 = { - key: 0, - class: "text-center" -}; -const _hoisted_4$1 = { class: "insert-key__direction" }; -const _hoisted_5$1 = { class: "flex justify-end" }; -const _sfc_main$6 = { - __name: "InsertKeyDialog", - props: { - position: String - }, - setup(__props) { - const props = __props; - const macroRecorder = useMacroRecorderStore(); - const keyObjs = reactive({ - selected: null, - insert: null, - insertEvent: null, - insertDirection: "down", - adjacent: null, - adjacentDelay: null, - adjacentDelayIndex: null - }); - const insertKeyInput = ref(null); - const inputFocus = ref(false); - onMounted(() => { - keyObjs.selected = filterKey(macroRecorder.getEditKey()); - const adjacentKey = macroRecorder.getAdjacentKey(props.position, true); - if (adjacentKey) keyObjs.adjacent = filterKey(adjacentKey.key); - if (adjacentKey.delay) { - keyObjs.adjacentDelay = adjacentKey.delay; - keyObjs.adjacentDelayIndex = adjacentKey.delayIndex; - } - }); - const handleInsertKey = (e) => { - keyObjs.insert = filterKey(e); - keyObjs.insertEvent = e; - }; - const insertKey = () => { - macroRecorder.insertKey(keyObjs.insertEvent, keyObjs.insertDirection, keyObjs.adjacentDelayIndex); - }; - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$6, [ - createBaseVNode("h4", _hoisted_2$5, "Insert key " + toDisplayString(__props.position), 1), - inputFocus.value ? (openBlock(), createElementBlock("p", _hoisted_3$2, "[Press a key]")) : createCommentVNode("", true), - createBaseVNode("input", { - class: "size-0 opacity-0", - type: "text", - min: "0", - max: "1", - ref_key: "insertKeyInput", - ref: insertKeyInput, - placeholder: "New key", - onFocusin: _cache[0] || (_cache[0] = ($event) => inputFocus.value = true), - onFocusout: _cache[1] || (_cache[1] = ($event) => inputFocus.value = false), - onKeydown: _cache[2] || (_cache[2] = withModifiers(($event) => handleInsertKey($event), ["prevent"])), - autofocus: "" - }, null, 544), - createBaseVNode("div", { - class: normalizeClass(["insert-output", __props.position == "before" ? "flex-row-reverse" : ""]) - }, [ - keyObjs.selected ? (openBlock(), createBlock(_sfc_main$f, { - key: 0, - "key-obj": keyObjs.selected - }, null, 8, ["key-obj"])) : createCommentVNode("", true), - _cache[10] || (_cache[10] = createBaseVNode("hr", { class: "spacer" }, null, -1)), - createVNode(DelaySpan, { - preset: true, - value: 10 - }), - _cache[11] || (_cache[11] = createBaseVNode("hr", { class: "spacer" }, null, -1)), - keyObjs.insert ? (openBlock(), createBlock(_sfc_main$f, { - key: 1, - class: "insert", - "key-obj": keyObjs.insert, - direction: keyObjs.insertDirection, - onClick: _cache[3] || (_cache[3] = ($event) => insertKeyInput.value.focus()) - }, null, 8, ["key-obj", "direction"])) : createCommentVNode("", true), - !keyObjs.insert ? (openBlock(), createBlock(_sfc_main$f, { - key: 2, - empty: true, - onClick: _cache[4] || (_cache[4] = ($event) => insertKeyInput.value.focus()) - })) : createCommentVNode("", true), - keyObjs.adjacentDelay ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [ - _cache[8] || (_cache[8] = createBaseVNode("hr", { class: "spacer" }, null, -1)), - createVNode(DelaySpan, { - value: keyObjs.adjacentDelay.value - }, null, 8, ["value"]) - ], 64)) : createCommentVNode("", true), - keyObjs.adjacent ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [ - _cache[9] || (_cache[9] = createBaseVNode("hr", { class: "spacer" }, null, -1)), - createVNode(_sfc_main$f, { - "key-obj": keyObjs.adjacent - }, null, 8, ["key-obj"]) - ], 64)) : createCommentVNode("", true) - ], 2), - createBaseVNode("div", _hoisted_4$1, [ - createVNode(_sfc_main$h, { - variant: "secondary", - class: normalizeClass(keyObjs.insertDirection === "down" ? "selected" : ""), - size: "sm", - onClick: _cache[5] || (_cache[5] = withModifiers(($event) => keyObjs.insertDirection = "down", ["prevent"])) - }, { - default: withCtx(() => _cache[12] || (_cache[12] = [ - createTextVNode(" ↓ Down ") - ])), - _: 1 - }, 8, ["class"]), - createVNode(_sfc_main$h, { - variant: "secondary", - class: normalizeClass(keyObjs.insertDirection === "up" ? "selected" : ""), - size: "sm", - onClick: _cache[6] || (_cache[6] = withModifiers(($event) => keyObjs.insertDirection = "up", ["prevent"])) - }, { - default: withCtx(() => _cache[13] || (_cache[13] = [ - createTextVNode(" ↑ Up ") - ])), - _: 1 - }, 8, ["class"]) - ]), - createBaseVNode("div", _hoisted_5$1, [ - createVNode(_sfc_main$h, { - variant: "primary", - size: "sm", - onClick: _cache[7] || (_cache[7] = ($event) => insertKey()) - }, { - default: withCtx(() => _cache[14] || (_cache[14] = [ - createTextVNode("Insert key") - ])), - _: 1 - }) - ]) - ]); - }; - } -}; -const InsertKeyDialog = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-d2aab140"]]); -const _hoisted_1$5 = { - key: 0, - class: "macro-edit__dialogs" -}; -const _hoisted_2$4 = { - key: 0, - class: "flex gap-2" -}; -const _sfc_main$5 = { - __name: "EditDialogs", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - const insert = reactive({ position: null }); - const ctxtMenu = ref(); - onMounted(() => { - macroRecorder.$subscribe((mutation) => { - if (mutation.events && mutation.events.key == "editKey" && mutation.events.newValue === false) { - insert.position = null; - } - }); - }); - function onOpenDialog() { - if (insert.position !== null) ctxtMenu.value.toggle(); - } - function onCloseDialog() { - macroRecorder.state.editKey = false; - macroRecorder.state.editDelay = false; - insert.position = null; - } - return (_ctx, _cache) => { - return unref(macroRecorder).state.edit !== false ? (openBlock(), createElementBlock("div", _hoisted_1$5, [ - unref(macroRecorder).state.editKey !== false && typeof unref(macroRecorder).getEditKey() === "object" ? (openBlock(), createElementBlock("div", _hoisted_2$4, [ - createVNode(_sfc_main$b, { - ref_key: "ctxtMenu", - ref: ctxtMenu - }, { - trigger: withCtx(() => [ - createVNode(_sfc_main$h, { - variant: "dark", - size: "sm" - }, { - default: withCtx(() => [ - createVNode(unref(IconPlus)), - _cache[2] || (_cache[2] = createTextVNode(" Insert ")) - ]), - _: 1 - }) - ]), - content: withCtx(() => [ - createBaseVNode("ul", null, [ - createBaseVNode("li", { - onClick: _cache[0] || (_cache[0] = ($event) => insert.position = "before") - }, [ - createVNode(unref(IconArrowLeftCircle)), - _cache[3] || (_cache[3] = createTextVNode(" Before")) - ]), - createBaseVNode("li", { - onClick: _cache[1] || (_cache[1] = ($event) => insert.position = "after") - }, [ - createVNode(unref(IconArrowRightCircle)), - _cache[4] || (_cache[4] = createTextVNode(" After")) - ]) - ]) - ]), - _: 1 - }, 512), - insert.position !== null ? (openBlock(), createBlock(_sfc_main$i, { - key: 0, - open: insert.position !== null, - onOnOpen: onOpenDialog, - onOnClose: onCloseDialog - }, { - content: withCtx(() => [ - createVNode(InsertKeyDialog, { - position: insert.position - }, null, 8, ["position"]) - ]), - _: 1 - }, 8, ["open"])) : createCommentVNode("", true), - createVNode(_sfc_main$i, { - id: `edit-key-${unref(macroRecorder).state.editKey}`, - onOnOpen: onOpenDialog, - onOnClose: onCloseDialog - }, { - trigger: withCtx(() => [ - createVNode(_sfc_main$h, { - variant: "secondary", - size: "sm" - }, { - default: withCtx(() => [ - createVNode(unref(IconPencil)), - _cache[5] || (_cache[5] = createTextVNode("Edit ")) - ]), - _: 1 - }) - ]), - content: withCtx(() => [ - createVNode(EditKeyDialog) - ]), - _: 1 - }, 8, ["id"]), - createVNode(_sfc_main$i, { - onOnOpen: onOpenDialog, - onOnClose: onCloseDialog - }, { - trigger: withCtx(() => [ - createVNode(_sfc_main$h, { - size: "sm", - variant: "danger" - }, { - default: withCtx(() => [ - createVNode(unref(IconTrash)), - _cache[6] || (_cache[6] = createTextVNode("Delete ")) - ]), - _: 1 - }) - ]), - content: withCtx(() => [ - createVNode(DeleteKeyDialog) - ]), - _: 1 - }) - ])) : createCommentVNode("", true), - unref(macroRecorder).state.editDelay !== false && typeof unref(macroRecorder).getEditDelay() === "object" ? (openBlock(), createBlock(_sfc_main$i, { - key: 1, - onOnOpen: onOpenDialog, - onOnClose: onCloseDialog - }, { - trigger: withCtx(() => [ - createVNode(_sfc_main$h, { - variant: "secondary", - size: "sm" - }, { - default: withCtx(() => [ - createVNode(unref(IconAlarm)), - _cache[7] || (_cache[7] = createTextVNode("Edit ")) - ]), - _: 1 - }) - ]), - content: withCtx(() => [ - createVNode(EditDelayDialog) - ]), - _: 1 - })) : createCommentVNode("", true) - ])) : createCommentVNode("", true); - }; - } -}; -const EditDialogs = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-bf9e32be"]]); -const _hoisted_1$4 = { class: "macro-recorder__header" }; -const _hoisted_2$3 = { class: "w-full grid grid-cols-[auto_1fr_auto] gap-2" }; -const _sfc_main$4 = { - __name: "RecorderHeader", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - const nameSet = ref(false); - function changeName(name) { - macroRecorder.changeName(name); - nameSet.value = name.length > 0; - } - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$4, [ - createBaseVNode("div", _hoisted_2$3, [ - _cache[7] || (_cache[7] = createBaseVNode("h4", { class: "" }, "Name:", -1)), - createBaseVNode("input", { - id: "macro-name", - type: "text", - onInput: _cache[0] || (_cache[0] = withModifiers(($event) => changeName($event.target.value), ["prevent"])), - placeholder: "New macro" - }, null, 32), - createBaseVNode("div", { - class: normalizeClass(`recording__buttons ${!nameSet.value || unref(macroRecorder).state.edit ? "disabled" : ""}`) - }, [ - createTextVNode(toDisplayString(unref(macroRecorder).name) + " ", 1), - !unref(macroRecorder).state.record ? (openBlock(), createBlock(_sfc_main$h, { - key: 0, - variant: "primary", - size: "sm", - onClick: _cache[1] || (_cache[1] = ($event) => unref(macroRecorder).state.record = true) - }, { - default: withCtx(() => [ - createVNode(unref(IconPlayerRecordFilled), { class: "text-red-500" }), - _cache[5] || (_cache[5] = createTextVNode("Record ")) - ]), - _: 1 - })) : createCommentVNode("", true), - unref(macroRecorder).state.record ? (openBlock(), createBlock(_sfc_main$h, { - key: 1, - variant: "danger", - size: "sm", - onClick: _cache[2] || (_cache[2] = ($event) => unref(macroRecorder).state.record = false) - }, { - default: withCtx(() => [ - createVNode(unref(IconPlayerStopFilled), { class: "text-white" }), - _cache[6] || (_cache[6] = createTextVNode("Stop ")) - ]), - _: 1 - })) : createCommentVNode("", true) - ], 2) - ]), - unref(macroRecorder).steps.length > 0 ? (openBlock(), createElementBlock("div", { - key: 0, - class: normalizeClass(`edit__buttons ${unref(macroRecorder).state.record ? "disabled" : ""}`) - }, [ - createBaseVNode("div", null, [ - !unref(macroRecorder).state.edit ? (openBlock(), createBlock(_sfc_main$h, { - key: 0, - variant: "secondary", - size: "sm", - onClick: _cache[3] || (_cache[3] = ($event) => unref(macroRecorder).state.edit = true) - }, { - default: withCtx(() => [ - createVNode(unref(IconPencil)), - _cache[8] || (_cache[8] = createTextVNode("Edit ")) - ]), - _: 1 - })) : createCommentVNode("", true), - unref(macroRecorder).state.edit ? (openBlock(), createBlock(_sfc_main$h, { - key: 1, - variant: "danger", - size: "sm", - onClick: _cache[4] || (_cache[4] = ($event) => unref(macroRecorder).resetEdit()) - }, { - default: withCtx(() => [ - createVNode(unref(IconPlayerStopFilled)), - _cache[9] || (_cache[9] = createTextVNode("Stop ")) - ]), - _: 1 - })) : createCommentVNode("", true) - ]), - unref(macroRecorder).state.edit ? (openBlock(), createBlock(FixedDelayMenu, { key: 0 })) : createCommentVNode("", true), - createVNode(EditDialogs) - ], 2)) : createCommentVNode("", true) - ]); - }; - } -}; -const RecorderHeader = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-19251359"]]); -const _hoisted_1$3 = { - id: "validation-error__dialog", - class: "dialog__content" -}; -const _hoisted_2$2 = { - key: 0, - class: "grid gap-4" -}; -const _hoisted_3$1 = { key: 0 }; -const _hoisted_4 = { key: 1 }; -const _hoisted_5 = { class: "flex justify-end mt-4" }; -const _sfc_main$3 = { - __name: "ValidationErrorDialog", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - const errors = reactive({ - up: [], - down: [] - }); - onMounted(() => { - macroRecorder.$subscribe((mutation) => { - if (mutation.events && mutation.events.key == "validationErrors") { - errors.up = mutation.events.newValue !== false ? macroRecorder.state.validationErrors.up : []; - errors.down = mutation.events.newValue !== false ? macroRecorder.state.validationErrors.down : []; - } - console.log(mutation); - }); - }); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$3, [ - _cache[4] || (_cache[4] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "There's an error in your macro", -1)), - errors && errors.up.length > 0 || errors.down.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$2, [ - errors.down.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_3$1, [ - _cache[1] || (_cache[1] = createBaseVNode("p", null, [ - createTextVNode(" The following keys have been "), - createBaseVNode("strong", null, "pressed"), - createTextVNode(" down, but "), - createBaseVNode("strong", null, "not released"), - createTextVNode(". ") - ], -1)), - createBaseVNode("ul", null, [ - (openBlock(true), createElementBlock(Fragment, null, renderList(errors.down, (key) => { - return openBlock(), createElementBlock("li", { key }, toDisplayString(key.toUpperCase()), 1); - }), 128)) - ]) - ])) : createCommentVNode("", true), - errors.up.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [ - _cache[2] || (_cache[2] = createBaseVNode("p", null, [ - createTextVNode(" The following keys have been "), - createBaseVNode("strong", null, "released"), - createTextVNode(", but "), - createBaseVNode("strong", null, "not pressed"), - createTextVNode(" down. ") - ], -1)), - createBaseVNode("ul", null, [ - (openBlock(true), createElementBlock(Fragment, null, renderList(errors.up, (key) => { - return openBlock(), createElementBlock("li", { key }, toDisplayString(key.toUpperCase()), 1); - }), 128)) - ]) - ])) : createCommentVNode("", true) - ])) : createCommentVNode("", true), - createBaseVNode("div", _hoisted_5, [ - createVNode(_sfc_main$h, { - size: "sm", - variant: "danger", - onClick: _cache[0] || (_cache[0] = ($event) => unref(macroRecorder).state.validationErrors = false) - }, { - default: withCtx(() => _cache[3] || (_cache[3] = [ - createTextVNode(" Close ") - ])), - _: 1 - }) - ]) - ]); - }; - } -}; -const ValidationErrorDialog = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-ff532573"]]); -const _hoisted_1$2 = { class: "macro-recorder__footer" }; -const _sfc_main$2 = { - __name: "RecorderFooter", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - const errorDialog = ref(); - onMounted(() => { - macroRecorder.$subscribe((mutation) => { - if (mutation.events && mutation.events.key == "validationErrors") { - errorDialog.value.toggleDialog(mutation.events.newValue !== false); - } - }); - }); - const toggleSave = () => { - if (!macroRecorder.save()) errorDialog.value.toggleDialog(true); - }; - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$2, [ - unref(macroRecorder).steps.length > 0 ? (openBlock(), createBlock(_sfc_main$h, { - key: 0, - variant: "danger", - size: "sm", - onClick: _cache[0] || (_cache[0] = ($event) => unref(macroRecorder).reset()) - }, { - default: withCtx(() => [ - createVNode(unref(IconRestore)), - _cache[2] || (_cache[2] = createTextVNode(" Reset ")) - ]), - _: 1 - })) : createCommentVNode("", true), - createVNode(_sfc_main$i, { - ref_key: "errorDialog", - ref: errorDialog - }, { - content: withCtx(() => [ - createVNode(ValidationErrorDialog) - ]), - _: 1 - }, 512), - unref(macroRecorder).steps.length > 0 ? (openBlock(), createBlock(_sfc_main$h, { - key: 1, - disabled: unref(macroRecorder).state.record || unref(macroRecorder).state.edit, - variant: "success", - size: "sm", - onClick: _cache[1] || (_cache[1] = ($event) => toggleSave()) - }, { - default: withCtx(() => [ - createVNode(unref(IconDeviceFloppy)), - _cache[3] || (_cache[3] = createTextVNode(" Save ")) - ]), - _: 1 - }, 8, ["disabled"])) : createCommentVNode("", true) - ]); - }; - } -}; -const RecorderFooter = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-fec5e8b6"]]); -const _hoisted_1$1 = { class: "macro-recorder mcrm-block block__light" }; -const _hoisted_2$1 = { class: "recorder-interface" }; -const _sfc_main$1 = { - __name: "MacroRecorder", - setup(__props) { - const macroRecorder = useMacroRecorderStore(); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1$1, [ - createBaseVNode("div", _hoisted_2$1, [ - createVNode(RecorderHeader), - createBaseVNode("div", { - class: normalizeClass(`recorder-interface__container ${unref(macroRecorder).state.record && "record"} ${unref(macroRecorder).state.edit && "edit"}`) - }, [ - createVNode(RecorderOutput), - createVNode(RecorderInput) - ], 2), - createVNode(RecorderFooter) - ]) - ]); - }; - } -}; -const _hoisted_1 = { - id: "macros", - class: "panel" -}; -const _hoisted_2 = { class: "panel__content !p-0" }; -const _hoisted_3 = { class: "macro-panel__content" }; -const _sfc_main = { - __name: "MacrosView", - setup(__props) { - ref(false); - ref(null); - onMounted(() => { - }); - return (_ctx, _cache) => { - return openBlock(), createElementBlock("div", _hoisted_1, [ - _cache[0] || (_cache[0] = createBaseVNode("h1", { class: "panel__title" }, "Macros", -1)), - createBaseVNode("div", _hoisted_2, [ - createBaseVNode("div", _hoisted_3, [ - createVNode(MacroOverview), - createVNode(_sfc_main$1) - ]) - ]) - ]); - }; - } -}; -const MacrosView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c7be9772"]]); -export { - MacrosView as default -}; diff --git a/public/assets/PanelsView-DHxhdGwy.js b/public/assets/PanelsView-DHxhdGwy.js deleted file mode 100644 index f8d47ff..0000000 --- a/public/assets/PanelsView-DHxhdGwy.js +++ /dev/null @@ -1,9 +0,0 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock } from "./index-GNAKlyBz.js"; -const _sfc_main = {}; -function _sfc_render(_ctx, _cache) { - return openBlock(), createElementBlock("div"); -} -const PanelsView = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); -export { - PanelsView as default -}; diff --git a/public/assets/SettingsView-CVQl1jsc.js b/public/assets/SettingsView-CVQl1jsc.js deleted file mode 100644 index 03a013a..0000000 --- a/public/assets/SettingsView-CVQl1jsc.js +++ /dev/null @@ -1,9 +0,0 @@ -import { _ as _export_sfc, c as createElementBlock, o as openBlock } from "./index-GNAKlyBz.js"; -const _sfc_main = {}; -function _sfc_render(_ctx, _cache) { - return openBlock(), createElementBlock("div"); -} -const SettingsView = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); -export { - SettingsView as default -}; diff --git a/public/assets/index-DjeOPht9.css b/public/assets/index-DjeOPht9.css deleted file mode 100644 index 34c8025..0000000 --- a/public/assets/index-DjeOPht9.css +++ /dev/null @@ -1,2256 +0,0 @@ -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -hr.spacer { - width: calc(var(--spacing) * 6); - border-style: var(--tw-border-style); - border-width: 1px; - border-color: var(--color-gray-300); - opacity: .8; - position: relative; - overflow: visible; -} - -hr.spacer:before, hr.spacer:after { - width: calc(var(--spacing) * 2); - height: calc(var(--spacing) * 2); - --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - background-color: var(--color-gray-300); - --tw-content: ""; - content: var(--tw-content); - border-radius: 3.40282e38px; - position: absolute; - top: 50%; -} - -hr.spacer:before { - left: calc(var(--spacing) * -1); -} - -hr.spacer:after { - right: calc(var(--spacing) * -1); -} - -.mcrm-block { - column-gap: calc(var(--spacing) * 6); - row-gap: calc(var(--spacing) * 2); - border-radius: var(--radius-2xl); - padding: calc(var(--spacing) * 6); - --tw-backdrop-blur: blur(var(--blur-lg)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - position: relative; - overflow: hidden; -} - -.mcrm-block:before { - inset: calc(var(--spacing) * 0); - z-index: -1; - border-radius: var(--radius-2xl); - --tw-gradient-position: to bottom right in oklab; - background-image: linear-gradient(var(--tw-gradient-stops)); - --tw-gradient-to: transparent; - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - --tw-content: ""; - content: var(--tw-content); - -webkit-mask-composite: xor, source-over; - width: 100%; - height: 100%; - padding: 1px; - position: absolute; - -webkit-mask: linear-gradient(#000 0 0), linear-gradient(#000 0 0) content-box; - -webkit-mask-composite: xor, source-over; - mask: linear-gradient(#000 0 0) exclude, linear-gradient(#000 0 0) content-box; -} - -.mcrm-block.block__light { - background-color: color-mix(in oklab, var(--color-white) 20%, transparent); -} - -.mcrm-block.block__light:before { - --tw-gradient-from: color-mix(in oklab, var(--color-white) 20%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} - -.mcrm-block.block__dark { - background-color: color-mix(in oklab, var(--color-slate-900) 70%, transparent); -} - -.mcrm-block.block__dark:before { - --tw-gradient-from: color-mix(in oklab, var(--color-slate-400) 40%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} - -.mcrm-block.block__primary { - background-color: color-mix(in oklab, var(--color-sky-300) 40%, transparent); -} - -.mcrm-block.block__primary:before { - --tw-gradient-from: color-mix(in oklab, var(--color-sky-100) 40%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} - -.mcrm-block.block__secondary { - background-color: color-mix(in oklab, var(--color-amber-300) 40%, transparent); -} - -.mcrm-block.block__secondary:before { - --tw-gradient-from: color-mix(in oklab, var(--color-amber-100) 40%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} - -.mcrm-block.block__success { - background-color: color-mix(in oklab, var(--color-emerald-300) 40%, transparent); -} - -.mcrm-block.block__success:before { - --tw-gradient-from: color-mix(in oklab, var(--color-emerald-100) 40%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} - -.mcrm-block.block__warning { - background-color: color-mix(in oklab, var(--color-orange-300) 40%, transparent); -} - -.mcrm-block.block__warning:before { - --tw-gradient-from: color-mix(in oklab, var(--color-orange-100) 40%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} - -.mcrm-block.block__danger { - background-color: color-mix(in oklab, var(--color-rose-300) 40%, transparent); -} - -.mcrm-block.block__danger:before { - --tw-gradient-from: color-mix(in oklab, var(--color-rose-100) 40%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); -} - -.mcrm-block.block-spacing__sm, .mcrm-block.block-size__sm { - column-gap: calc(var(--spacing) * 4); - row-gap: calc(var(--spacing) * 2); - padding: calc(var(--spacing) * 4); -} - -.mcrm-block.block-size__sm, .mcrm-block.block-size__sm:before { - border-radius: var(--radius-lg); -} - -.mcrm-block.block-spacing__lg, .mcrm-block.block-size__lg { - column-gap: calc(var(--spacing) * 8); - row-gap: calc(var(--spacing) * 4); - padding: calc(var(--spacing) * 8); -} - -.mcrm-block.block-size__lg, .mcrm-block.block-size__lg:before { - border-radius: var(--radius-3xl); -} - -.panel { - top: calc(var(--spacing) * 2); - right: calc(var(--spacing) * 4); - bottom: calc(var(--spacing) * 2); - left: calc(var(--spacing) * 4); - grid-template-rows: auto 1fr; - display: grid; - position: fixed; - overflow: hidden; -} - -@media (width >= 40rem) { - .panel { - right: calc(var(--spacing) * 16); - left: calc(var(--spacing) * 16); - } -} - -.panel > .panel__header, .panel > .panel__title { - padding-inline: calc(var(--spacing) * 4); - padding-block: calc(var(--spacing) * 2); -} - -.panel .panel__title { - --tw-gradient-position: to right in oklab; - background-image: linear-gradient(var(--tw-gradient-stops)); - --tw-gradient-from: var(--color-amber-300); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - --tw-gradient-to: color-mix(in oklab, var(--color-white) 50%, transparent); - width: fit-content; - padding-top: calc(var(--spacing) * 3); - padding-left: calc(var(--spacing) * 16); - color: #0000; - -webkit-background-clip: text; - background-clip: text; -} - -@media (width >= 40rem) { - .panel .panel__title { - padding-left: calc(var(--spacing) * 4); - } -} - -.panel .panel__content { - height: 100%; - padding-top: calc(var(--spacing) * 4); - padding-left: calc(var(--spacing) * 0); - display: grid; - overflow: auto; -} - -@media (width >= 40rem) { - .panel .panel__content { - padding-top: calc(var(--spacing) * 0); - padding-left: calc(var(--spacing) * 4); - } -} - -@layer theme { - :root, :host { - --font-sans: "Roboto", sans-serif; - --font-mono: "Fira Code", monospace; - --color-red-500: oklch(.637 .237 25.331); - --color-orange-100: oklch(.954 .038 75.164); - --color-orange-300: oklch(.837 .128 66.29); - --color-amber-100: oklch(.962 .059 95.617); - --color-amber-300: oklch(.879 .169 91.605); - --color-amber-400: oklch(.828 .189 84.429); - --color-yellow-300: oklch(.905 .182 98.111); - --color-yellow-500: oklch(.795 .184 86.047); - --color-yellow-600: oklch(.681 .162 75.834); - --color-lime-100: oklch(.967 .067 122.328); - --color-lime-200: oklch(.938 .127 124.321); - --color-lime-400: oklch(.841 .238 128.85); - --color-lime-500: oklch(.768 .233 130.85); - --color-lime-600: oklch(.648 .2 131.684); - --color-lime-700: oklch(.532 .157 131.589); - --color-emerald-100: oklch(.95 .052 163.051); - --color-emerald-300: oklch(.845 .143 164.978); - --color-sky-100: oklch(.951 .026 236.824); - --color-sky-200: oklch(.901 .058 230.902); - --color-sky-300: oklch(.828 .111 230.318); - --color-sky-400: oklch(.746 .16 232.661); - --color-sky-500: oklch(.685 .169 237.323); - --color-sky-600: oklch(.588 .158 241.966); - --color-sky-700: oklch(.5 .134 242.749); - --color-sky-900: oklch(.391 .09 240.876); - --color-rose-100: oklch(.941 .03 12.58); - --color-rose-200: oklch(.892 .058 10.001); - --color-rose-300: oklch(.81 .117 11.638); - --color-rose-400: oklch(.712 .194 13.428); - --color-rose-500: oklch(.645 .246 16.439); - --color-slate-50: oklch(.984 .003 247.858); - --color-slate-100: oklch(.968 .007 247.896); - --color-slate-200: oklch(.929 .013 255.508); - --color-slate-300: oklch(.869 .022 252.894); - --color-slate-400: oklch(.704 .04 256.788); - --color-slate-500: oklch(.554 .046 257.417); - --color-slate-600: oklch(.446 .043 257.281); - --color-slate-700: oklch(.372 .044 257.287); - --color-slate-800: oklch(.279 .041 260.031); - --color-slate-900: oklch(.208 .042 265.755); - --color-slate-950: oklch(.129 .042 264.695); - --color-gray-300: oklch(.872 .01 258.338); - --color-black: #000; - --color-white: #fff; - --spacing: .25rem; - --text-xs: .75rem; - --text-xs--line-height: calc(1 / .75); - --text-sm: .875rem; - --text-sm--line-height: calc(1.25 / .875); - --text-lg: 1.125rem; - --text-lg--line-height: calc(1.75 / 1.125); - --text-xl: 1.25rem; - --text-xl--line-height: calc(1.75 / 1.25); - --text-2xl: 1.5rem; - --text-2xl--line-height: calc(2 / 1.5); - --text-3xl: 1.875rem; - --text-3xl--line-height: calc(2.25 / 1.875); - --text-4xl: 2.25rem; - --text-4xl--line-height: calc(2.5 / 2.25); - --font-weight-light: 300; - --font-weight-normal: 400; - --font-weight-semibold: 600; - --font-weight-bold: 700; - --tracking-wide: .025em; - --tracking-widest: .1em; - --radius-sm: .25rem; - --radius-md: .375rem; - --radius-lg: .5rem; - --radius-xl: .75rem; - --radius-2xl: 1rem; - --radius-3xl: 1.5rem; - --ease-in-out: cubic-bezier(.4, 0, .2, 1); - --animate-spin: spin 1s linear infinite; - --blur-xs: 4px; - --blur-md: 12px; - --blur-lg: 16px; - --blur-3xl: 64px; - --default-transition-duration: .15s; - --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1); - --default-font-family: var(--font-sans); - --default-font-feature-settings: var(--font-sans--font-feature-settings); - --default-font-variation-settings: var(--font-sans--font-variation-settings); - --default-mono-font-family: var(--font-mono); - --default-mono-font-feature-settings: var(--font-mono--font-feature-settings); - --default-mono-font-variation-settings: var(--font-mono--font-variation-settings); - } -} - -@layer base { - *, :after, :before, ::backdrop { - box-sizing: border-box; - border: 0 solid; - margin: 0; - padding: 0; - } - - ::file-selector-button { - box-sizing: border-box; - border: 0 solid; - margin: 0; - padding: 0; - } - - html, :host { - -webkit-text-size-adjust: 100%; - tab-size: 4; - line-height: 1.5; - font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); - font-feature-settings: var(--default-font-feature-settings, normal); - font-variation-settings: var(--default-font-variation-settings, normal); - -webkit-tap-highlight-color: transparent; - } - - body { - line-height: inherit; - } - - hr { - height: 0; - color: inherit; - border-top-width: 1px; - } - - abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - } - - h1, h2, h3, h4, h5, h6 { - font-size: inherit; - font-weight: inherit; - } - - a { - color: inherit; - -webkit-text-decoration: inherit; - -webkit-text-decoration: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; - } - - b, strong { - font-weight: bolder; - } - - code, kbd, samp, pre { - font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); - font-feature-settings: var(--default-mono-font-feature-settings, normal); - font-variation-settings: var(--default-mono-font-variation-settings, normal); - font-size: 1em; - } - - small { - font-size: 80%; - } - - sub, sup { - vertical-align: baseline; - font-size: 75%; - line-height: 0; - position: relative; - } - - sub { - bottom: -.25em; - } - - sup { - top: -.5em; - } - - table { - text-indent: 0; - border-color: inherit; - border-collapse: collapse; - } - - :-moz-focusring { - outline: auto; - } - - progress { - vertical-align: baseline; - } - - summary { - display: list-item; - } - - ol, ul, menu { - list-style: none; - } - - img, svg, video, canvas, audio, iframe, embed, object { - vertical-align: middle; - display: block; - } - - img, video { - max-width: 100%; - height: auto; - } - - button, input, select, optgroup, textarea { - font: inherit; - font-feature-settings: inherit; - font-variation-settings: inherit; - letter-spacing: inherit; - color: inherit; - opacity: 1; - background-color: #0000; - border-radius: 0; - } - - ::file-selector-button { - font: inherit; - font-feature-settings: inherit; - font-variation-settings: inherit; - letter-spacing: inherit; - color: inherit; - opacity: 1; - background-color: #0000; - border-radius: 0; - } - - :where(select:is([multiple], [size])) optgroup { - font-weight: bolder; - } - - :where(select:is([multiple], [size])) optgroup option { - padding-inline-start: 20px; - } - - ::file-selector-button { - margin-inline-end: 4px; - } - - ::placeholder { - opacity: 1; - color: color-mix(in oklab, currentColor 50%, transparent); - } - - textarea { - resize: vertical; - } - - ::-webkit-search-decoration { - -webkit-appearance: none; - } - - ::-webkit-date-and-time-value { - min-height: 1lh; - text-align: inherit; - } - - ::-webkit-datetime-edit { - display: inline-flex; - } - - ::-webkit-datetime-edit-fields-wrapper { - padding: 0; - } - - ::-webkit-datetime-edit { - padding-block: 0; - } - - ::-webkit-datetime-edit-year-field { - padding-block: 0; - } - - ::-webkit-datetime-edit-month-field { - padding-block: 0; - } - - ::-webkit-datetime-edit-day-field { - padding-block: 0; - } - - ::-webkit-datetime-edit-hour-field { - padding-block: 0; - } - - ::-webkit-datetime-edit-minute-field { - padding-block: 0; - } - - ::-webkit-datetime-edit-second-field { - padding-block: 0; - } - - ::-webkit-datetime-edit-millisecond-field { - padding-block: 0; - } - - ::-webkit-datetime-edit-meridiem-field { - padding-block: 0; - } - - :-moz-ui-invalid { - box-shadow: none; - } - - button, input:where([type="button"], [type="reset"], [type="submit"]) { - appearance: button; - } - - ::file-selector-button { - appearance: button; - } - - ::-webkit-inner-spin-button { - height: auto; - } - - ::-webkit-outer-spin-button { - height: auto; - } - - [hidden]:where(:not([hidden="until-found"])) { - display: none !important; - } -} - -@layer components; - -@layer utilities { - .pointer-events-auto { - pointer-events: auto; - } - - .pointer-events-none { - pointer-events: none; - } - - .absolute { - position: absolute; - } - - .fixed { - position: fixed; - } - - .relative { - position: relative; - } - - .inset-0 { - inset: calc(var(--spacing) * 0); - } - - .inset-1\/2 { - inset: 50%; - } - - .top-0 { - top: calc(var(--spacing) * 0); - } - - .top-1\/2 { - top: 50%; - } - - .top-4 { - top: calc(var(--spacing) * 4); - } - - .top-20 { - top: calc(var(--spacing) * 20); - } - - .top-\[10\%\] { - top: 10%; - } - - .top-full { - top: 100%; - } - - .right-4 { - right: calc(var(--spacing) * 4); - } - - .left-0 { - left: calc(var(--spacing) * 0); - } - - .left-1\/2 { - left: 50%; - } - - .left-4 { - left: calc(var(--spacing) * 4); - } - - .left-\[10\%\] { - left: 10%; - } - - .left-full { - left: 100%; - } - - .z-50 { - z-index: 50; - } - - .z-\[-1\] { - z-index: -1; - } - - .container { - width: 100%; - } - - @media (width >= 40rem) { - .container { - max-width: 40rem; - } - } - - @media (width >= 48rem) { - .container { - max-width: 48rem; - } - } - - @media (width >= 64rem) { - .container { - max-width: 64rem; - } - } - - @media (width >= 80rem) { - .container { - max-width: 80rem; - } - } - - @media (width >= 96rem) { - .container { - max-width: 96rem; - } - } - - .mt-1 { - margin-top: calc(var(--spacing) * 1); - } - - .mt-2 { - margin-top: calc(var(--spacing) * 2); - } - - .mt-4 { - margin-top: calc(var(--spacing) * 4); - } - - .mt-6 { - margin-top: calc(var(--spacing) * 6); - } - - .mb-4 { - margin-bottom: calc(var(--spacing) * 4); - } - - .block { - display: block; - } - - .flex { - display: flex; - } - - .grid { - display: grid; - } - - .hidden { - display: none; - } - - .aspect-square { - aspect-ratio: 1; - } - - .size-0 { - width: calc(var(--spacing) * 0); - height: calc(var(--spacing) * 0); - } - - .size-4 { - width: calc(var(--spacing) * 4); - height: calc(var(--spacing) * 4); - } - - .size-5 { - width: calc(var(--spacing) * 5); - height: calc(var(--spacing) * 5); - } - - .size-6 { - width: calc(var(--spacing) * 6); - height: calc(var(--spacing) * 6); - } - - .size-12 { - width: calc(var(--spacing) * 12); - height: calc(var(--spacing) * 12); - } - - .size-full { - width: 100%; - height: 100%; - } - - .h-9 { - height: calc(var(--spacing) * 9); - } - - .h-fit { - height: fit-content; - } - - .h-full { - height: 100%; - } - - .w-44 { - width: calc(var(--spacing) * 44); - } - - .w-64 { - width: calc(var(--spacing) * 64); - } - - .w-96 { - width: calc(var(--spacing) * 96); - } - - .w-fit { - width: fit-content; - } - - .w-full { - width: 100%; - } - - .w-px { - width: 1px; - } - - .max-w-\[calc\(100vw-2rem\)\] { - max-width: calc(100vw - 2rem); - } - - .min-w-full { - min-width: 100%; - } - - .flex-grow { - flex-grow: 1; - } - - .-translate-1\/2 { - --tw-translate-x: calc(calc(1 / 2 * 100%) * -1); - --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - - .-translate-x-1\/2 { - --tw-translate-x: calc(calc(1 / 2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - - .-translate-x-full { - --tw-translate-x: -100%; - translate: var(--tw-translate-x) var(--tw-translate-y); - } - - .translate-x-0 { - --tw-translate-x: calc(var(--spacing) * 0); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - - .-translate-y-1\/2 { - --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - - .-translate-y-full { - --tw-translate-y: -100%; - translate: var(--tw-translate-x) var(--tw-translate-y); - } - - .translate-y-0 { - --tw-translate-y: calc(var(--spacing) * 0); - translate: var(--tw-translate-x) var(--tw-translate-y); - } - - .scale-\[1\.8\] { - scale: 1.8; - } - - .animate-spin { - animation: var(--animate-spin); - } - - .cursor-default { - cursor: default; - } - - .cursor-not-allowed { - cursor: not-allowed; - } - - .cursor-pointer { - cursor: pointer; - } - - .list-none { - list-style-type: none; - } - - .grid-cols-\[1rem_1fr\] { - grid-template-columns: 1rem 1fr; - } - - .grid-cols-\[2rem_1fr\] { - grid-template-columns: 2rem 1fr; - } - - .grid-cols-\[25ch_1fr\] { - grid-template-columns: 25ch 1fr; - } - - .grid-cols-\[auto_1fr\] { - grid-template-columns: auto 1fr; - } - - .grid-cols-\[auto_1fr_auto\] { - grid-template-columns: auto 1fr auto; - } - - .grid-rows-\[0fr\] { - grid-template-rows: 0fr; - } - - .grid-rows-\[auto_1fr\] { - grid-template-rows: auto 1fr; - } - - .grid-rows-\[auto_1fr_auto\] { - grid-template-rows: auto 1fr auto; - } - - .flex-row-reverse { - flex-direction: row-reverse; - } - - .flex-wrap { - flex-wrap: wrap; - } - - .content-start { - align-content: flex-start; - } - - .items-center { - align-items: center; - } - - .items-end { - align-items: flex-end; - } - - .items-start { - align-items: flex-start; - } - - .justify-between { - justify-content: space-between; - } - - .justify-center { - justify-content: center; - } - - .justify-end { - justify-content: flex-end; - } - - .\!gap-4 { - gap: calc(var(--spacing) * 4) !important; - } - - .gap-1 { - gap: calc(var(--spacing) * 1); - } - - .gap-2 { - gap: calc(var(--spacing) * 2); - } - - .gap-3 { - gap: calc(var(--spacing) * 3); - } - - .gap-4 { - gap: calc(var(--spacing) * 4); - } - - .gap-6 { - gap: calc(var(--spacing) * 6); - } - - .gap-8 { - gap: calc(var(--spacing) * 8); - } - - .gap-y-4 { - row-gap: calc(var(--spacing) * 4); - } - - :where(.divide-y > :not(:last-child)) { - --tw-divide-y-reverse: 0; - border-bottom-style: var(--tw-border-style); - border-top-style: var(--tw-border-style); - border-top-width: calc(1px * var(--tw-divide-y-reverse)); - border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - } - - :where(.divide-slate-300 > :not(:last-child)) { - border-color: var(--color-slate-300); - } - - :where(.divide-slate-600 > :not(:last-child)) { - border-color: var(--color-slate-600); - } - - .truncate { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - } - - .overflow-auto { - overflow: auto; - } - - .overflow-hidden { - overflow: hidden; - } - - .rounded-full { - border-radius: 3.40282e38px; - } - - .rounded-lg { - border-radius: var(--radius-lg); - } - - .rounded-md { - border-radius: var(--radius-md); - } - - .rounded-none { - border-radius: 0; - } - - .rounded-sm { - border-radius: var(--radius-sm); - } - - .rounded-xl { - border-radius: var(--radius-xl); - } - - .border { - border-style: var(--tw-border-style); - border-width: 1px; - } - - .border-0 { - border-style: var(--tw-border-style); - border-width: 0; - } - - .border-b-2 { - border-bottom-style: var(--tw-border-style); - border-bottom-width: 2px; - } - - .border-solid { - --tw-border-style: solid; - border-style: solid; - } - - .border-amber-100 { - border-color: var(--color-amber-100); - } - - .border-amber-300\/80 { - border-color: color-mix(in oklab, var(--color-amber-300) 80%, transparent); - } - - .border-amber-400 { - border-color: var(--color-amber-400); - } - - .border-lime-100 { - border-color: var(--color-lime-100); - } - - .border-lime-500 { - border-color: var(--color-lime-500); - } - - .border-lime-600 { - border-color: var(--color-lime-600); - } - - .border-rose-100 { - border-color: var(--color-rose-100); - } - - .border-rose-300 { - border-color: var(--color-rose-300); - } - - .border-rose-500 { - border-color: var(--color-rose-500); - } - - .border-sky-100 { - border-color: var(--color-sky-100); - } - - .border-sky-300 { - border-color: var(--color-sky-300); - } - - .border-sky-400 { - border-color: var(--color-sky-400); - } - - .border-slate-200 { - border-color: var(--color-slate-200); - } - - .border-slate-400 { - border-color: var(--color-slate-400); - } - - .border-slate-500 { - border-color: var(--color-slate-500); - } - - .border-slate-600 { - border-color: var(--color-slate-600); - } - - .border-transparent { - border-color: #0000; - } - - .border-white\/10 { - border-color: color-mix(in oklab, var(--color-white) 10%, transparent); - } - - .border-white\/40 { - border-color: color-mix(in oklab, var(--color-white) 40%, transparent); - } - - .border-white\/50 { - border-color: color-mix(in oklab, var(--color-white) 50%, transparent); - } - - .border-yellow-300 { - border-color: var(--color-yellow-300); - } - - .border-b-slate-300 { - border-bottom-color: var(--color-slate-300); - } - - .bg-amber-100\/10 { - background-color: color-mix(in oklab, var(--color-amber-100) 10%, transparent); - } - - .bg-amber-100\/60 { - background-color: color-mix(in oklab, var(--color-amber-100) 60%, transparent); - } - - .bg-amber-400\/10 { - background-color: color-mix(in oklab, var(--color-amber-400) 10%, transparent); - } - - .bg-amber-400\/40 { - background-color: color-mix(in oklab, var(--color-amber-400) 40%, transparent); - } - - .bg-black\/50 { - background-color: color-mix(in oklab, var(--color-black) 50%, transparent); - } - - .bg-lime-200\/10 { - background-color: color-mix(in oklab, var(--color-lime-200) 10%, transparent); - } - - .bg-lime-400\/10 { - background-color: color-mix(in oklab, var(--color-lime-400) 10%, transparent); - } - - .bg-lime-400\/40 { - background-color: color-mix(in oklab, var(--color-lime-400) 40%, transparent); - } - - .bg-lime-500\/80 { - background-color: color-mix(in oklab, var(--color-lime-500) 80%, transparent); - } - - .bg-lime-700 { - background-color: var(--color-lime-700); - } - - .bg-rose-200\/20 { - background-color: color-mix(in oklab, var(--color-rose-200) 20%, transparent); - } - - .bg-rose-400\/10 { - background-color: color-mix(in oklab, var(--color-rose-400) 10%, transparent); - } - - .bg-rose-400\/40 { - background-color: color-mix(in oklab, var(--color-rose-400) 40%, transparent); - } - - .bg-sky-100\/10 { - background-color: color-mix(in oklab, var(--color-sky-100) 10%, transparent); - } - - .bg-sky-200\/20 { - background-color: color-mix(in oklab, var(--color-sky-200) 20%, transparent); - } - - .bg-sky-400\/40 { - background-color: color-mix(in oklab, var(--color-sky-400) 40%, transparent); - } - - .bg-sky-400\/50 { - background-color: color-mix(in oklab, var(--color-sky-400) 50%, transparent); - } - - .bg-sky-500 { - background-color: var(--color-sky-500); - } - - .bg-sky-900 { - background-color: var(--color-sky-900); - } - - .bg-sky-900\/10 { - background-color: color-mix(in oklab, var(--color-sky-900) 10%, transparent); - } - - .bg-slate-100\/60 { - background-color: color-mix(in oklab, var(--color-slate-100) 60%, transparent); - } - - .bg-slate-200\/10 { - background-color: color-mix(in oklab, var(--color-slate-200) 10%, transparent); - } - - .bg-slate-400\/40 { - background-color: color-mix(in oklab, var(--color-slate-400) 40%, transparent); - } - - .bg-slate-500 { - background-color: var(--color-slate-500); - } - - .bg-slate-600 { - background-color: var(--color-slate-600); - } - - .bg-slate-700 { - background-color: var(--color-slate-700); - } - - .bg-slate-700\/80 { - background-color: color-mix(in oklab, var(--color-slate-700) 80%, transparent); - } - - .bg-slate-950\/50 { - background-color: color-mix(in oklab, var(--color-slate-950) 50%, transparent); - } - - .bg-transparent { - background-color: #0000; - } - - .bg-white\/10 { - background-color: color-mix(in oklab, var(--color-white) 10%, transparent); - } - - .bg-white\/20 { - background-color: color-mix(in oklab, var(--color-white) 20%, transparent); - } - - .bg-yellow-500\/50 { - background-color: color-mix(in oklab, var(--color-yellow-500) 50%, transparent); - } - - .to-white\/30 { - --tw-gradient-to: color-mix(in oklab, var(--color-white) 30%, transparent); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - - .\!stroke-white { - stroke: var(--color-white) !important; - } - - .stroke-amber-300 { - stroke: var(--color-amber-300); - } - - .stroke-lime-400 { - stroke: var(--color-lime-400); - } - - .stroke-rose-400 { - stroke: var(--color-rose-400); - } - - .stroke-sky-200 { - stroke: var(--color-sky-200); - } - - .stroke-slate-300 { - stroke: var(--color-slate-300); - } - - .object-cover { - object-fit: cover; - } - - .\!p-0 { - padding: calc(var(--spacing) * 0) !important; - } - - .p-0 { - padding: calc(var(--spacing) * 0); - } - - .p-1 { - padding: calc(var(--spacing) * 1); - } - - .p-2 { - padding: calc(var(--spacing) * 2); - } - - .p-4 { - padding: calc(var(--spacing) * 4); - } - - .p-28 { - padding: calc(var(--spacing) * 28); - } - - .px-2 { - padding-inline: calc(var(--spacing) * 2); - } - - .px-4 { - padding-inline: calc(var(--spacing) * 4); - } - - .py-0 { - padding-block: calc(var(--spacing) * 0); - } - - .py-1 { - padding-block: calc(var(--spacing) * 1); - } - - .py-2 { - padding-block: calc(var(--spacing) * 2); - } - - .pt-2 { - padding-top: calc(var(--spacing) * 2); - } - - .pr-2 { - padding-right: calc(var(--spacing) * 2); - } - - .pr-3 { - padding-right: calc(var(--spacing) * 3); - } - - .pr-8 { - padding-right: calc(var(--spacing) * 8); - } - - .pl-1 { - padding-left: calc(var(--spacing) * 1); - } - - .pl-2 { - padding-left: calc(var(--spacing) * 2); - } - - .pl-3 { - padding-left: calc(var(--spacing) * 3); - } - - .pl-4 { - padding-left: calc(var(--spacing) * 4); - } - - .text-center { - text-align: center; - } - - .font-mono { - font-family: var(--font-mono); - } - - .font-sans { - font-family: var(--font-sans); - } - - .\!text-lg { - font-size: var(--text-lg) !important; - line-height: var(--tw-leading, var(--text-lg--line-height)) !important; - } - - .text-4xl { - font-size: var(--text-4xl); - line-height: var(--tw-leading, var(--text-4xl--line-height)); - } - - .text-lg { - font-size: var(--text-lg); - line-height: var(--tw-leading, var(--text-lg--line-height)); - } - - .text-sm { - font-size: var(--text-sm); - line-height: var(--tw-leading, var(--text-sm--line-height)); - } - - .text-xs { - font-size: var(--text-xs); - line-height: var(--tw-leading, var(--text-xs--line-height)); - } - - .font-bold { - --tw-font-weight: var(--font-weight-bold); - font-weight: var(--font-weight-bold); - } - - .font-light { - --tw-font-weight: var(--font-weight-light); - font-weight: var(--font-weight-light); - } - - .font-normal { - --tw-font-weight: var(--font-weight-normal); - font-weight: var(--font-weight-normal); - } - - .font-semibold { - --tw-font-weight: var(--font-weight-semibold); - font-weight: var(--font-weight-semibold); - } - - .tracking-wide { - --tw-tracking: var(--tracking-wide); - letter-spacing: var(--tracking-wide); - } - - .tracking-widest { - --tw-tracking: var(--tracking-widest); - letter-spacing: var(--tracking-widest); - } - - .whitespace-nowrap { - white-space: nowrap; - } - - .\!text-white { - color: var(--color-white) !important; - } - - .text-amber-100 { - color: var(--color-amber-100); - } - - .text-amber-400 { - color: var(--color-amber-400); - } - - .text-lime-100 { - color: var(--color-lime-100); - } - - .text-lime-200 { - color: var(--color-lime-200); - } - - .text-lime-400 { - color: var(--color-lime-400); - } - - .text-red-500 { - color: var(--color-red-500); - } - - .text-rose-200 { - color: var(--color-rose-200); - } - - .text-rose-400 { - color: var(--color-rose-400); - } - - .text-sky-100 { - color: var(--color-sky-100); - } - - .text-sky-300 { - color: var(--color-sky-300); - } - - .text-slate-50 { - color: var(--color-slate-50); - } - - .text-slate-100 { - color: var(--color-slate-100); - } - - .text-slate-200 { - color: var(--color-slate-200); - } - - .text-slate-300 { - color: var(--color-slate-300); - } - - .text-slate-800 { - color: var(--color-slate-800); - } - - .text-slate-950 { - color: var(--color-slate-950); - } - - .text-white { - color: var(--color-white); - } - - .text-white\/40 { - color: color-mix(in oklab, var(--color-white) 40%, transparent); - } - - .text-white\/80 { - color: color-mix(in oklab, var(--color-white) 80%, transparent); - } - - .uppercase { - text-transform: uppercase; - } - - .not-italic { - font-style: normal; - } - - .opacity-0 { - opacity: 0; - } - - .opacity-35 { - opacity: .35; - } - - .opacity-40 { - opacity: .4; - } - - .opacity-50 { - opacity: .5; - } - - .opacity-80 { - opacity: .8; - } - - .opacity-100 { - opacity: 1; - } - - .mix-blend-overlay { - mix-blend-mode: overlay; - } - - .shadow-md { - --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - - .ring-2 { - --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - - .shadow-black { - --tw-shadow-color: var(--color-black); - } - - .shadow-sky-600 { - --tw-shadow-color: var(--color-sky-600); - } - - .shadow-sky-700 { - --tw-shadow-color: var(--color-sky-700); - } - - .shadow-slate-500 { - --tw-shadow-color: var(--color-slate-500); - } - - .shadow-yellow-600 { - --tw-shadow-color: var(--color-yellow-600); - } - - .ring-sky-500 { - --tw-ring-color: var(--color-sky-500); - } - - .ring-offset-1 { - --tw-ring-offset-width: 1px; - --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - } - - .outline-0 { - outline-style: var(--tw-outline-style); - outline-width: 0; - } - - .filter { - filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, ); - } - - .backdrop-blur-3xl { - --tw-backdrop-blur: blur(var(--blur-3xl)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - } - - .backdrop-blur-md { - --tw-backdrop-blur: blur(var(--blur-md)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - } - - .backdrop-blur-xs { - --tw-backdrop-blur: blur(var(--blur-xs)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - } - - .transition { - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - - .transition-\[grid-template-rows\] { - transition-property: grid-template-rows; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - - .transition-\[stroke\] { - transition-property: stroke; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - - .transition-all { - transition-property: all; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - - .transition-colors { - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - - .transition-opacity { - transition-property: opacity; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - - .transition-transform { - transition-property: transform, translate, scale, rotate; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); - } - - .duration-300 { - --tw-duration: .3s; - transition-duration: .3s; - } - - .duration-400 { - --tw-duration: .4s; - transition-duration: .4s; - } - - .ease-in-out { - --tw-ease: var(--ease-in-out); - transition-timing-function: var(--ease-in-out); - } - - .content-\[\'\'\] { - --tw-content: ""; - content: var(--tw-content); - } - - @media (hover: hover) { - .hover\:bg-black\/10:hover { - background-color: color-mix(in oklab, var(--color-black) 10%, transparent); - } - - .hover\:bg-lime-500:hover { - background-color: var(--color-lime-500); - } - - .hover\:bg-slate-700:hover { - background-color: var(--color-slate-700); - } - - .hover\:bg-white\/10:hover { - background-color: color-mix(in oklab, var(--color-white) 10%, transparent); - } - - .hover\:bg-white\/40:hover { - background-color: color-mix(in oklab, var(--color-white) 40%, transparent); - } - - .hover\:text-white:hover { - color: var(--color-white); - } - } - - .focus\:border-transparent:focus { - border-color: #0000; - } - - .focus\:border-b-sky-400:focus { - border-bottom-color: var(--color-sky-400); - } - - .focus\:bg-sky-400\/10:focus { - background-color: color-mix(in oklab, var(--color-sky-400) 10%, transparent); - } -} - -body { - background-color: var(--color-slate-900); - font-family: var(--font-sans); - --tw-font-weight: var(--font-weight-light); - font-weight: var(--font-weight-light); - --tw-tracking: var(--tracking-wide); - letter-spacing: var(--tracking-wide); - color: var(--color-slate-50); -} - -h1, h2 { - font-family: var(--font-mono); - --tw-font-weight: var(--font-weight-bold); - font-weight: var(--font-weight-bold); -} - -h3, h4, h5, h6 { - --tw-font-weight: var(--font-weight-semibold); - font-weight: var(--font-weight-semibold); -} - -h1 { - font-size: var(--text-4xl); - line-height: var(--tw-leading, var(--text-4xl--line-height)); -} - -h2 { - font-size: var(--text-3xl); - line-height: var(--tw-leading, var(--text-3xl--line-height)); -} - -h3 { - font-size: var(--text-2xl); - line-height: var(--tw-leading, var(--text-2xl--line-height)); -} - -h4 { - font-size: var(--text-xl); - line-height: var(--tw-leading, var(--text-xl--line-height)); -} - -h5 { - font-size: var(--text-lg); - line-height: var(--tw-leading, var(--text-lg--line-height)); -} - -input { - border-radius: var(--radius-md); - border-style: var(--tw-border-style); - border-width: 1px; - border-color: var(--color-slate-400); - background-color: color-mix(in oklab, var(--color-black) 20%, transparent); - width: 100%; - padding-inline: calc(var(--spacing) * 2); - padding-block: calc(var(--spacing) * 1); - color: var(--color-white); -} - -:has( > input + span) { - display: flex; -} - -:has( > input + span) input { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -:has( > input + span) span { - border-top-right-radius: var(--radius-md); - border-bottom-right-radius: var(--radius-md); - background-color: var(--color-slate-400); - padding-inline: calc(var(--spacing) * 2); - color: var(--color-white); - align-items: center; - display: flex; -} - -ul { - list-style-type: disc; - list-style-position: inside; -} - -strong { - --tw-font-weight: var(--font-weight-bold); - font-weight: var(--font-weight-bold); -} - -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} - -@property --tw-translate-x { - syntax: "*"; - inherits: false; - initial-value: 0; -} - -@property --tw-translate-y { - syntax: "*"; - inherits: false; - initial-value: 0; -} - -@property --tw-translate-z { - syntax: "*"; - inherits: false; - initial-value: 0; -} - -@property --tw-content { - syntax: "*"; - inherits: false; - initial-value: ""; -} - -@property --tw-backdrop-blur { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-brightness { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-contrast { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-grayscale { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-hue-rotate { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-invert { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-opacity { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-saturate { - syntax: "*"; - inherits: false -} - -@property --tw-backdrop-sepia { - syntax: "*"; - inherits: false -} - -@property --tw-gradient-position { - syntax: "*"; - inherits: false -} - -@property --tw-gradient-from { - syntax: ""; - inherits: false; - initial-value: #0000; -} - -@property --tw-gradient-via { - syntax: ""; - inherits: false; - initial-value: #0000; -} - -@property --tw-gradient-to { - syntax: ""; - inherits: false; - initial-value: #0000; -} - -@property --tw-gradient-stops { - syntax: "*"; - inherits: false -} - -@property --tw-gradient-via-stops { - syntax: "*"; - inherits: false -} - -@property --tw-gradient-from-position { - syntax: ""; - inherits: false; - initial-value: 0%; -} - -@property --tw-gradient-via-position { - syntax: ""; - inherits: false; - initial-value: 50%; -} - -@property --tw-gradient-to-position { - syntax: ""; - inherits: false; - initial-value: 100%; -} - -@property --tw-divide-y-reverse { - syntax: "*"; - inherits: false; - initial-value: 0; -} - -@property --tw-font-weight { - syntax: "*"; - inherits: false -} - -@property --tw-tracking { - syntax: "*"; - inherits: false -} - -@property --tw-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} - -@property --tw-shadow-color { - syntax: "*"; - inherits: false -} - -@property --tw-inset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} - -@property --tw-inset-shadow-color { - syntax: "*"; - inherits: false -} - -@property --tw-ring-color { - syntax: "*"; - inherits: false -} - -@property --tw-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} - -@property --tw-inset-ring-color { - syntax: "*"; - inherits: false -} - -@property --tw-inset-ring-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} - -@property --tw-ring-inset { - syntax: "*"; - inherits: false -} - -@property --tw-ring-offset-width { - syntax: ""; - inherits: false; - initial-value: 0; -} - -@property --tw-ring-offset-color { - syntax: "*"; - inherits: false; - initial-value: #fff; -} - -@property --tw-ring-offset-shadow { - syntax: "*"; - inherits: false; - initial-value: 0 0 #0000; -} - -@property --tw-outline-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} - -@property --tw-blur { - syntax: "*"; - inherits: false -} - -@property --tw-brightness { - syntax: "*"; - inherits: false -} - -@property --tw-contrast { - syntax: "*"; - inherits: false -} - -@property --tw-grayscale { - syntax: "*"; - inherits: false -} - -@property --tw-hue-rotate { - syntax: "*"; - inherits: false -} - -@property --tw-invert { - syntax: "*"; - inherits: false -} - -@property --tw-opacity { - syntax: "*"; - inherits: false -} - -@property --tw-saturate { - syntax: "*"; - inherits: false -} - -@property --tw-sepia { - syntax: "*"; - inherits: false -} - -@property --tw-drop-shadow { - syntax: "*"; - inherits: false -} - -@property --tw-duration { - syntax: "*"; - inherits: false -} - -@property --tw-ease { - syntax: "*"; - inherits: false -} - -@keyframes spin { - to { - transform: rotate(360deg); - } -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -nav { - z-index: 50; - display: flex; - position: relative; -} -nav button { - top: calc(var(--spacing, .25rem) * 4); - left: calc(var(--spacing, .25rem) * 4); - aspect-ratio: 1; - width: calc(var(--spacing, .25rem) * 12); - height: calc(var(--spacing, .25rem) * 12); - cursor: pointer; - border-style: var(--tw-border-style); - background-color: color-mix(in oklab, var(--color-white, #fff) 20%, transparent); - --tw-backdrop-blur: blur(var(--blur-md, 12px)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - border-width: 0; - border-radius: 3.40282e38px; - position: absolute; -} -@media (hover: hover) { -nav button:hover { - background-color: color-mix(in oklab, var(--color-white, #fff) 40%, transparent); -} -} -nav button .logo, nav button svg { - --tw-translate-x: calc(calc(1 / 2 * 100%) * -1); - --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - transition-property: opacity; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - --tw-duration: .4s; - --tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1)); - transition-duration: .4s; - transition-timing-function: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1)); - position: absolute; - inset: 50%; -} -nav button .logo { - width: 100%; -} -nav ul { - top: calc(var(--spacing, .25rem) * 20); - left: calc(var(--spacing, .25rem) * 0); - --tw-translate-x: -100%; - translate: var(--tw-translate-x) var(--tw-translate-y); - border-radius: var(--radius-xl, .75rem); - background-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent); - --tw-backdrop-blur: blur(var(--blur-md, 12px)); - -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, ); - transition-property: transform, translate, scale, rotate; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - --tw-duration: .3s; - --tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1)); - transition-duration: .3s; - transition-timing-function: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1)); - list-style-type: none; - display: grid; - position: absolute; - overflow: hidden; -} -:where(nav ul > :not(:last-child)) { - --tw-divide-y-reverse: 0; - border-bottom-style: var(--tw-border-style); - border-top-style: var(--tw-border-style); - border-top-width: calc(1px * var(--tw-divide-y-reverse)); - border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - border-color: var(--color-slate-600, oklch(.446 .043 257.281)); -} -nav ul.open { - left: calc(var(--spacing, .25rem) * 4); - --tw-translate-x: calc(var(--spacing, .25rem) * 0); - translate: var(--tw-translate-x) var(--tw-translate-y); -} -nav ul li a { - align-items: center; - gap: calc(var(--spacing, .25rem) * 2); - padding-inline: calc(var(--spacing, .25rem) * 4); - padding-block: calc(var(--spacing, .25rem) * 2); - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); - border-color: #0000; - display: flex; -} -nav ul li a svg { - color: color-mix(in oklab, var(--color-white, #fff) 40%, transparent); - transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1))); - transition-duration: var(--tw-duration, var(--default-transition-duration, .15s)); -} -nav ul li a:hover { - background-color: color-mix(in oklab, var(--color-white, #fff) 20%, transparent); -} -nav ul li a:hover svg { - color: var(--color-white, #fff); -} -nav ul li a.router-link-active { - background-color: color-mix(in oklab, var(--color-sky-200, oklch(.901 .058 230.902)) 20%, transparent); - color: var(--color-sky-300, oklch(.828 .111 230.318)); -} -@property --tw-border-style { - syntax: "*"; - inherits: false; - initial-value: solid; -} -@property --tw-backdrop-blur { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-brightness { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-contrast { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-grayscale { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-hue-rotate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-invert { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-opacity { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-saturate { - syntax: "*"; - inherits: false -} -@property --tw-backdrop-sepia { - syntax: "*"; - inherits: false -} -@property --tw-translate-x { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-y { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-translate-z { - syntax: "*"; - inherits: false; - initial-value: 0; -} -@property --tw-duration { - syntax: "*"; - inherits: false -} -@property --tw-ease { - syntax: "*"; - inherits: false -} -@property --tw-divide-y-reverse { - syntax: "*"; - inherits: false; - initial-value: 0; -} -/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */ -.app-background[data-v-bf34f349] { - pointer-events: none; - inset: calc(var(--spacing, .25rem) * 0); - z-index: -1; - opacity: .4; - width: 100%; - height: 100%; - position: fixed; - overflow: hidden; -} -.app-background img[data-v-bf34f349] { - object-fit: cover; - width: 100%; - height: 100%; - position: absolute; -} -.app-background .logo[data-v-bf34f349] { - padding: calc(var(--spacing, .25rem) * 28); - opacity: .35; - mix-blend-mode: overlay; - position: absolute; - top: 10%; - left: 10%; - scale: 1.8; -} diff --git a/public/assets/index-GNAKlyBz.js b/public/assets/index-GNAKlyBz.js deleted file mode 100644 index e973032..0000000 --- a/public/assets/index-GNAKlyBz.js +++ /dev/null @@ -1,18013 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MacrosView-Bf1eb3go.js","assets/DialogComp-Ba5-BUTe.js","assets/DialogComp-ByJn29_w.css","assets/MacrosView-B-ccNLSC.css","assets/DevicesView-DqasecOn.js","assets/DevicesView-Dw_Mls3X.css"])))=>i.map(i=>d[i]); -(function polyfill() { - const relList = document.createElement("link").relList; - if (relList && relList.supports && relList.supports("modulepreload")) { - return; - } - for (const link of document.querySelectorAll('link[rel="modulepreload"]')) { - processPreload(link); - } - new MutationObserver((mutations) => { - for (const mutation of mutations) { - if (mutation.type !== "childList") { - continue; - } - for (const node of mutation.addedNodes) { - if (node.tagName === "LINK" && node.rel === "modulepreload") - processPreload(node); - } - } - }).observe(document, { childList: true, subtree: true }); - function getFetchOpts(link) { - const fetchOpts = {}; - if (link.integrity) fetchOpts.integrity = link.integrity; - if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy; - if (link.crossOrigin === "use-credentials") - fetchOpts.credentials = "include"; - else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit"; - else fetchOpts.credentials = "same-origin"; - return fetchOpts; - } - function processPreload(link) { - if (link.ep) - return; - link.ep = true; - const fetchOpts = getFetchOpts(link); - fetch(link.href, fetchOpts); - } -})(); -/** -* @vue/shared v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/ -/*! #__NO_SIDE_EFFECTS__ */ -// @__NO_SIDE_EFFECTS__ -function makeMap(str) { - const map = /* @__PURE__ */ Object.create(null); - for (const key of str.split(",")) map[key] = 1; - return (val) => val in map; -} -const EMPTY_OBJ = {}; -const EMPTY_ARR = []; -const NOOP = () => { -}; -const NO = () => false; -const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter -(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); -const isModelListener = (key) => key.startsWith("onUpdate:"); -const extend$1 = Object.assign; -const remove = (arr, el) => { - const i = arr.indexOf(el); - if (i > -1) { - arr.splice(i, 1); - } -}; -const hasOwnProperty$2 = Object.prototype.hasOwnProperty; -const hasOwn = (val, key) => hasOwnProperty$2.call(val, key); -const isArray$2 = Array.isArray; -const isMap = (val) => toTypeString(val) === "[object Map]"; -const isSet = (val) => toTypeString(val) === "[object Set]"; -const isFunction$1 = (val) => typeof val === "function"; -const isString$1 = (val) => typeof val === "string"; -const isSymbol = (val) => typeof val === "symbol"; -const isObject$1 = (val) => val !== null && typeof val === "object"; -const isPromise = (val) => { - return (isObject$1(val) || isFunction$1(val)) && isFunction$1(val.then) && isFunction$1(val.catch); -}; -const objectToString = Object.prototype.toString; -const toTypeString = (value) => objectToString.call(value); -const toRawType = (value) => { - return toTypeString(value).slice(8, -1); -}; -const isPlainObject$2 = (val) => toTypeString(val) === "[object Object]"; -const isIntegerKey = (key) => isString$1(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; -const isReservedProp = /* @__PURE__ */ makeMap( - // the leading comma is intentional so empty string "" is also included - ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" -); -const cacheStringFunction = (fn) => { - const cache = /* @__PURE__ */ Object.create(null); - return (str) => { - const hit = cache[str]; - return hit || (cache[str] = fn(str)); - }; -}; -const camelizeRE = /-(\w)/g; -const camelize = cacheStringFunction( - (str) => { - return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); - } -); -const hyphenateRE = /\B([A-Z])/g; -const hyphenate = cacheStringFunction( - (str) => str.replace(hyphenateRE, "-$1").toLowerCase() -); -const capitalize = cacheStringFunction((str) => { - return str.charAt(0).toUpperCase() + str.slice(1); -}); -const toHandlerKey = cacheStringFunction( - (str) => { - const s = str ? `on${capitalize(str)}` : ``; - return s; - } -); -const hasChanged = (value, oldValue) => !Object.is(value, oldValue); -const invokeArrayFns = (fns, ...arg) => { - for (let i = 0; i < fns.length; i++) { - fns[i](...arg); - } -}; -const def = (obj, key, value, writable = false) => { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - writable, - value - }); -}; -const looseToNumber = (val) => { - const n = parseFloat(val); - return isNaN(n) ? val : n; -}; -let _globalThis; -const getGlobalThis = () => { - return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); -}; -function normalizeStyle(value) { - if (isArray$2(value)) { - const res = {}; - for (let i = 0; i < value.length; i++) { - const item = value[i]; - const normalized = isString$1(item) ? parseStringStyle(item) : normalizeStyle(item); - if (normalized) { - for (const key in normalized) { - res[key] = normalized[key]; - } - } - } - return res; - } else if (isString$1(value) || isObject$1(value)) { - return value; - } -} -const listDelimiterRE = /;(?![^(]*\))/g; -const propertyDelimiterRE = /:([^]+)/; -const styleCommentRE = /\/\*[^]*?\*\//g; -function parseStringStyle(cssText) { - const ret = {}; - cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { - if (item) { - const tmp = item.split(propertyDelimiterRE); - tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); - } - }); - return ret; -} -function normalizeClass(value) { - let res = ""; - if (isString$1(value)) { - res = value; - } else if (isArray$2(value)) { - for (let i = 0; i < value.length; i++) { - const normalized = normalizeClass(value[i]); - if (normalized) { - res += normalized + " "; - } - } - } else if (isObject$1(value)) { - for (const name in value) { - if (value[name]) { - res += name + " "; - } - } - } - return res.trim(); -} -const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; -const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); -function includeBooleanAttr(value) { - return !!value || value === ""; -} -const isRef$1 = (val) => { - return !!(val && val["__v_isRef"] === true); -}; -const toDisplayString = (val) => { - return isString$1(val) ? val : val == null ? "" : isArray$2(val) || isObject$1(val) && (val.toString === objectToString || !isFunction$1(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val); -}; -const replacer = (_key, val) => { - if (isRef$1(val)) { - return replacer(_key, val.value); - } else if (isMap(val)) { - return { - [`Map(${val.size})`]: [...val.entries()].reduce( - (entries, [key, val2], i) => { - entries[stringifySymbol(key, i) + " =>"] = val2; - return entries; - }, - {} - ) - }; - } else if (isSet(val)) { - return { - [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) - }; - } else if (isSymbol(val)) { - return stringifySymbol(val); - } else if (isObject$1(val) && !isArray$2(val) && !isPlainObject$2(val)) { - return String(val); - } - return val; -}; -const stringifySymbol = (v, i = "") => { - var _a; - return ( - // Symbol.description in es2019+ so we need to cast here to pass - // the lib: es2016 check - isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v - ); -}; -/** -* @vue/reactivity v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/ -let activeEffectScope; -class EffectScope { - constructor(detached = false) { - this.detached = detached; - this._active = true; - this.effects = []; - this.cleanups = []; - this._isPaused = false; - this.parent = activeEffectScope; - if (!detached && activeEffectScope) { - this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( - this - ) - 1; - } - } - get active() { - return this._active; - } - pause() { - if (this._active) { - this._isPaused = true; - let i, l; - if (this.scopes) { - for (i = 0, l = this.scopes.length; i < l; i++) { - this.scopes[i].pause(); - } - } - for (i = 0, l = this.effects.length; i < l; i++) { - this.effects[i].pause(); - } - } - } - /** - * Resumes the effect scope, including all child scopes and effects. - */ - resume() { - if (this._active) { - if (this._isPaused) { - this._isPaused = false; - let i, l; - if (this.scopes) { - for (i = 0, l = this.scopes.length; i < l; i++) { - this.scopes[i].resume(); - } - } - for (i = 0, l = this.effects.length; i < l; i++) { - this.effects[i].resume(); - } - } - } - } - run(fn) { - if (this._active) { - const currentEffectScope = activeEffectScope; - try { - activeEffectScope = this; - return fn(); - } finally { - activeEffectScope = currentEffectScope; - } - } - } - /** - * This should only be called on non-detached scopes - * @internal - */ - on() { - activeEffectScope = this; - } - /** - * This should only be called on non-detached scopes - * @internal - */ - off() { - activeEffectScope = this.parent; - } - stop(fromParent) { - if (this._active) { - this._active = false; - let i, l; - for (i = 0, l = this.effects.length; i < l; i++) { - this.effects[i].stop(); - } - this.effects.length = 0; - for (i = 0, l = this.cleanups.length; i < l; i++) { - this.cleanups[i](); - } - this.cleanups.length = 0; - if (this.scopes) { - for (i = 0, l = this.scopes.length; i < l; i++) { - this.scopes[i].stop(true); - } - this.scopes.length = 0; - } - if (!this.detached && this.parent && !fromParent) { - const last = this.parent.scopes.pop(); - if (last && last !== this) { - this.parent.scopes[this.index] = last; - last.index = this.index; - } - } - this.parent = void 0; - } - } -} -function effectScope(detached) { - return new EffectScope(detached); -} -function getCurrentScope() { - return activeEffectScope; -} -function onScopeDispose(fn, failSilently = false) { - if (activeEffectScope) { - activeEffectScope.cleanups.push(fn); - } -} -let activeSub; -const pausedQueueEffects = /* @__PURE__ */ new WeakSet(); -class ReactiveEffect { - constructor(fn) { - this.fn = fn; - this.deps = void 0; - this.depsTail = void 0; - this.flags = 1 | 4; - this.next = void 0; - this.cleanup = void 0; - this.scheduler = void 0; - if (activeEffectScope && activeEffectScope.active) { - activeEffectScope.effects.push(this); - } - } - pause() { - this.flags |= 64; - } - resume() { - if (this.flags & 64) { - this.flags &= -65; - if (pausedQueueEffects.has(this)) { - pausedQueueEffects.delete(this); - this.trigger(); - } - } - } - /** - * @internal - */ - notify() { - if (this.flags & 2 && !(this.flags & 32)) { - return; - } - if (!(this.flags & 8)) { - batch(this); - } - } - run() { - if (!(this.flags & 1)) { - return this.fn(); - } - this.flags |= 2; - cleanupEffect(this); - prepareDeps(this); - const prevEffect = activeSub; - const prevShouldTrack = shouldTrack; - activeSub = this; - shouldTrack = true; - try { - return this.fn(); - } finally { - cleanupDeps(this); - activeSub = prevEffect; - shouldTrack = prevShouldTrack; - this.flags &= -3; - } - } - stop() { - if (this.flags & 1) { - for (let link = this.deps; link; link = link.nextDep) { - removeSub(link); - } - this.deps = this.depsTail = void 0; - cleanupEffect(this); - this.onStop && this.onStop(); - this.flags &= -2; - } - } - trigger() { - if (this.flags & 64) { - pausedQueueEffects.add(this); - } else if (this.scheduler) { - this.scheduler(); - } else { - this.runIfDirty(); - } - } - /** - * @internal - */ - runIfDirty() { - if (isDirty(this)) { - this.run(); - } - } - get dirty() { - return isDirty(this); - } -} -let batchDepth = 0; -let batchedSub; -let batchedComputed; -function batch(sub, isComputed2 = false) { - sub.flags |= 8; - if (isComputed2) { - sub.next = batchedComputed; - batchedComputed = sub; - return; - } - sub.next = batchedSub; - batchedSub = sub; -} -function startBatch() { - batchDepth++; -} -function endBatch() { - if (--batchDepth > 0) { - return; - } - if (batchedComputed) { - let e = batchedComputed; - batchedComputed = void 0; - while (e) { - const next = e.next; - e.next = void 0; - e.flags &= -9; - e = next; - } - } - let error; - while (batchedSub) { - let e = batchedSub; - batchedSub = void 0; - while (e) { - const next = e.next; - e.next = void 0; - e.flags &= -9; - if (e.flags & 1) { - try { - ; - e.trigger(); - } catch (err) { - if (!error) error = err; - } - } - e = next; - } - } - if (error) throw error; -} -function prepareDeps(sub) { - for (let link = sub.deps; link; link = link.nextDep) { - link.version = -1; - link.prevActiveLink = link.dep.activeLink; - link.dep.activeLink = link; - } -} -function cleanupDeps(sub) { - let head; - let tail = sub.depsTail; - let link = tail; - while (link) { - const prev = link.prevDep; - if (link.version === -1) { - if (link === tail) tail = prev; - removeSub(link); - removeDep(link); - } else { - head = link; - } - link.dep.activeLink = link.prevActiveLink; - link.prevActiveLink = void 0; - link = prev; - } - sub.deps = head; - sub.depsTail = tail; -} -function isDirty(sub) { - for (let link = sub.deps; link; link = link.nextDep) { - if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) { - return true; - } - } - if (sub._dirty) { - return true; - } - return false; -} -function refreshComputed(computed2) { - if (computed2.flags & 4 && !(computed2.flags & 16)) { - return; - } - computed2.flags &= -17; - if (computed2.globalVersion === globalVersion) { - return; - } - computed2.globalVersion = globalVersion; - const dep = computed2.dep; - computed2.flags |= 2; - if (dep.version > 0 && !computed2.isSSR && computed2.deps && !isDirty(computed2)) { - computed2.flags &= -3; - return; - } - const prevSub = activeSub; - const prevShouldTrack = shouldTrack; - activeSub = computed2; - shouldTrack = true; - try { - prepareDeps(computed2); - const value = computed2.fn(computed2._value); - if (dep.version === 0 || hasChanged(value, computed2._value)) { - computed2._value = value; - dep.version++; - } - } catch (err) { - dep.version++; - throw err; - } finally { - activeSub = prevSub; - shouldTrack = prevShouldTrack; - cleanupDeps(computed2); - computed2.flags &= -3; - } -} -function removeSub(link, soft = false) { - const { dep, prevSub, nextSub } = link; - if (prevSub) { - prevSub.nextSub = nextSub; - link.prevSub = void 0; - } - if (nextSub) { - nextSub.prevSub = prevSub; - link.nextSub = void 0; - } - if (dep.subs === link) { - dep.subs = prevSub; - if (!prevSub && dep.computed) { - dep.computed.flags &= -5; - for (let l = dep.computed.deps; l; l = l.nextDep) { - removeSub(l, true); - } - } - } - if (!soft && !--dep.sc && dep.map) { - dep.map.delete(dep.key); - } -} -function removeDep(link) { - const { prevDep, nextDep } = link; - if (prevDep) { - prevDep.nextDep = nextDep; - link.prevDep = void 0; - } - if (nextDep) { - nextDep.prevDep = prevDep; - link.nextDep = void 0; - } -} -let shouldTrack = true; -const trackStack = []; -function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; -} -function resetTracking() { - const last = trackStack.pop(); - shouldTrack = last === void 0 ? true : last; -} -function cleanupEffect(e) { - const { cleanup } = e; - e.cleanup = void 0; - if (cleanup) { - const prevSub = activeSub; - activeSub = void 0; - try { - cleanup(); - } finally { - activeSub = prevSub; - } - } -} -let globalVersion = 0; -class Link { - constructor(sub, dep) { - this.sub = sub; - this.dep = dep; - this.version = dep.version; - this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; - } -} -class Dep { - constructor(computed2) { - this.computed = computed2; - this.version = 0; - this.activeLink = void 0; - this.subs = void 0; - this.map = void 0; - this.key = void 0; - this.sc = 0; - } - track(debugInfo) { - if (!activeSub || !shouldTrack || activeSub === this.computed) { - return; - } - let link = this.activeLink; - if (link === void 0 || link.sub !== activeSub) { - link = this.activeLink = new Link(activeSub, this); - if (!activeSub.deps) { - activeSub.deps = activeSub.depsTail = link; - } else { - link.prevDep = activeSub.depsTail; - activeSub.depsTail.nextDep = link; - activeSub.depsTail = link; - } - addSub(link); - } else if (link.version === -1) { - link.version = this.version; - if (link.nextDep) { - const next = link.nextDep; - next.prevDep = link.prevDep; - if (link.prevDep) { - link.prevDep.nextDep = next; - } - link.prevDep = activeSub.depsTail; - link.nextDep = void 0; - activeSub.depsTail.nextDep = link; - activeSub.depsTail = link; - if (activeSub.deps === link) { - activeSub.deps = next; - } - } - } - return link; - } - trigger(debugInfo) { - this.version++; - globalVersion++; - this.notify(debugInfo); - } - notify(debugInfo) { - startBatch(); - try { - if (false) ; - for (let link = this.subs; link; link = link.prevSub) { - if (link.sub.notify()) { - ; - link.sub.dep.notify(); - } - } - } finally { - endBatch(); - } - } -} -function addSub(link) { - link.dep.sc++; - if (link.sub.flags & 4) { - const computed2 = link.dep.computed; - if (computed2 && !link.dep.subs) { - computed2.flags |= 4 | 16; - for (let l = computed2.deps; l; l = l.nextDep) { - addSub(l); - } - } - const currentTail = link.dep.subs; - if (currentTail !== link) { - link.prevSub = currentTail; - if (currentTail) currentTail.nextSub = link; - } - link.dep.subs = link; - } -} -const targetMap = /* @__PURE__ */ new WeakMap(); -const ITERATE_KEY = Symbol( - "" -); -const MAP_KEY_ITERATE_KEY = Symbol( - "" -); -const ARRAY_ITERATE_KEY = Symbol( - "" -); -function track(target, type, key) { - if (shouldTrack && activeSub) { - let depsMap = targetMap.get(target); - if (!depsMap) { - targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); - } - let dep = depsMap.get(key); - if (!dep) { - depsMap.set(key, dep = new Dep()); - dep.map = depsMap; - dep.key = key; - } - { - dep.track(); - } - } -} -function trigger(target, type, key, newValue, oldValue, oldTarget) { - const depsMap = targetMap.get(target); - if (!depsMap) { - globalVersion++; - return; - } - const run = (dep) => { - if (dep) { - { - dep.trigger(); - } - } - }; - startBatch(); - if (type === "clear") { - depsMap.forEach(run); - } else { - const targetIsArray = isArray$2(target); - const isArrayIndex = targetIsArray && isIntegerKey(key); - if (targetIsArray && key === "length") { - const newLength = Number(newValue); - depsMap.forEach((dep, key2) => { - if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) { - run(dep); - } - }); - } else { - if (key !== void 0 || depsMap.has(void 0)) { - run(depsMap.get(key)); - } - if (isArrayIndex) { - run(depsMap.get(ARRAY_ITERATE_KEY)); - } - switch (type) { - case "add": - if (!targetIsArray) { - run(depsMap.get(ITERATE_KEY)); - if (isMap(target)) { - run(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } else if (isArrayIndex) { - run(depsMap.get("length")); - } - break; - case "delete": - if (!targetIsArray) { - run(depsMap.get(ITERATE_KEY)); - if (isMap(target)) { - run(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - break; - case "set": - if (isMap(target)) { - run(depsMap.get(ITERATE_KEY)); - } - break; - } - } - } - endBatch(); -} -function getDepFromReactive(object, key) { - const depMap = targetMap.get(object); - return depMap && depMap.get(key); -} -function reactiveReadArray(array) { - const raw = toRaw(array); - if (raw === array) return raw; - track(raw, "iterate", ARRAY_ITERATE_KEY); - return isShallow(array) ? raw : raw.map(toReactive); -} -function shallowReadArray(arr) { - track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY); - return arr; -} -const arrayInstrumentations = { - __proto__: null, - [Symbol.iterator]() { - return iterator(this, Symbol.iterator, toReactive); - }, - concat(...args) { - return reactiveReadArray(this).concat( - ...args.map((x) => isArray$2(x) ? reactiveReadArray(x) : x) - ); - }, - entries() { - return iterator(this, "entries", (value) => { - value[1] = toReactive(value[1]); - return value; - }); - }, - every(fn, thisArg) { - return apply(this, "every", fn, thisArg, void 0, arguments); - }, - filter(fn, thisArg) { - return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments); - }, - find(fn, thisArg) { - return apply(this, "find", fn, thisArg, toReactive, arguments); - }, - findIndex(fn, thisArg) { - return apply(this, "findIndex", fn, thisArg, void 0, arguments); - }, - findLast(fn, thisArg) { - return apply(this, "findLast", fn, thisArg, toReactive, arguments); - }, - findLastIndex(fn, thisArg) { - return apply(this, "findLastIndex", fn, thisArg, void 0, arguments); - }, - // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement - forEach(fn, thisArg) { - return apply(this, "forEach", fn, thisArg, void 0, arguments); - }, - includes(...args) { - return searchProxy(this, "includes", args); - }, - indexOf(...args) { - return searchProxy(this, "indexOf", args); - }, - join(separator) { - return reactiveReadArray(this).join(separator); - }, - // keys() iterator only reads `length`, no optimisation required - lastIndexOf(...args) { - return searchProxy(this, "lastIndexOf", args); - }, - map(fn, thisArg) { - return apply(this, "map", fn, thisArg, void 0, arguments); - }, - pop() { - return noTracking(this, "pop"); - }, - push(...args) { - return noTracking(this, "push", args); - }, - reduce(fn, ...args) { - return reduce(this, "reduce", fn, args); - }, - reduceRight(fn, ...args) { - return reduce(this, "reduceRight", fn, args); - }, - shift() { - return noTracking(this, "shift"); - }, - // slice could use ARRAY_ITERATE but also seems to beg for range tracking - some(fn, thisArg) { - return apply(this, "some", fn, thisArg, void 0, arguments); - }, - splice(...args) { - return noTracking(this, "splice", args); - }, - toReversed() { - return reactiveReadArray(this).toReversed(); - }, - toSorted(comparer) { - return reactiveReadArray(this).toSorted(comparer); - }, - toSpliced(...args) { - return reactiveReadArray(this).toSpliced(...args); - }, - unshift(...args) { - return noTracking(this, "unshift", args); - }, - values() { - return iterator(this, "values", toReactive); - } -}; -function iterator(self2, method, wrapValue) { - const arr = shallowReadArray(self2); - const iter = arr[method](); - if (arr !== self2 && !isShallow(self2)) { - iter._next = iter.next; - iter.next = () => { - const result = iter._next(); - if (result.value) { - result.value = wrapValue(result.value); - } - return result; - }; - } - return iter; -} -const arrayProto = Array.prototype; -function apply(self2, method, fn, thisArg, wrappedRetFn, args) { - const arr = shallowReadArray(self2); - const needsWrap = arr !== self2 && !isShallow(self2); - const methodFn = arr[method]; - if (methodFn !== arrayProto[method]) { - const result2 = methodFn.apply(self2, args); - return needsWrap ? toReactive(result2) : result2; - } - let wrappedFn = fn; - if (arr !== self2) { - if (needsWrap) { - wrappedFn = function(item, index) { - return fn.call(this, toReactive(item), index, self2); - }; - } else if (fn.length > 2) { - wrappedFn = function(item, index) { - return fn.call(this, item, index, self2); - }; - } - } - const result = methodFn.call(arr, wrappedFn, thisArg); - return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result; -} -function reduce(self2, method, fn, args) { - const arr = shallowReadArray(self2); - let wrappedFn = fn; - if (arr !== self2) { - if (!isShallow(self2)) { - wrappedFn = function(acc, item, index) { - return fn.call(this, acc, toReactive(item), index, self2); - }; - } else if (fn.length > 3) { - wrappedFn = function(acc, item, index) { - return fn.call(this, acc, item, index, self2); - }; - } - } - return arr[method](wrappedFn, ...args); -} -function searchProxy(self2, method, args) { - const arr = toRaw(self2); - track(arr, "iterate", ARRAY_ITERATE_KEY); - const res = arr[method](...args); - if ((res === -1 || res === false) && isProxy(args[0])) { - args[0] = toRaw(args[0]); - return arr[method](...args); - } - return res; -} -function noTracking(self2, method, args = []) { - pauseTracking(); - startBatch(); - const res = toRaw(self2)[method].apply(self2, args); - endBatch(); - resetTracking(); - return res; -} -const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); -const builtInSymbols = new Set( - /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) -); -function hasOwnProperty$1(key) { - if (!isSymbol(key)) key = String(key); - const obj = toRaw(this); - track(obj, "has", key); - return obj.hasOwnProperty(key); -} -class BaseReactiveHandler { - constructor(_isReadonly = false, _isShallow = false) { - this._isReadonly = _isReadonly; - this._isShallow = _isShallow; - } - get(target, key, receiver) { - if (key === "__v_skip") return target["__v_skip"]; - const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; - if (key === "__v_isReactive") { - return !isReadonly2; - } else if (key === "__v_isReadonly") { - return isReadonly2; - } else if (key === "__v_isShallow") { - return isShallow2; - } else if (key === "__v_raw") { - if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype - // this means the receiver is a user proxy of the reactive proxy - Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { - return target; - } - return; - } - const targetIsArray = isArray$2(target); - if (!isReadonly2) { - let fn; - if (targetIsArray && (fn = arrayInstrumentations[key])) { - return fn; - } - if (key === "hasOwnProperty") { - return hasOwnProperty$1; - } - } - const res = Reflect.get( - target, - key, - // if this is a proxy wrapping a ref, return methods using the raw ref - // as receiver so that we don't have to call `toRaw` on the ref in all - // its class methods - isRef(target) ? target : receiver - ); - if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { - return res; - } - if (!isReadonly2) { - track(target, "get", key); - } - if (isShallow2) { - return res; - } - if (isRef(res)) { - return targetIsArray && isIntegerKey(key) ? res : res.value; - } - if (isObject$1(res)) { - return isReadonly2 ? readonly(res) : reactive(res); - } - return res; - } -} -class MutableReactiveHandler extends BaseReactiveHandler { - constructor(isShallow2 = false) { - super(false, isShallow2); - } - set(target, key, value, receiver) { - let oldValue = target[key]; - if (!this._isShallow) { - const isOldValueReadonly = isReadonly(oldValue); - if (!isShallow(value) && !isReadonly(value)) { - oldValue = toRaw(oldValue); - value = toRaw(value); - } - if (!isArray$2(target) && isRef(oldValue) && !isRef(value)) { - if (isOldValueReadonly) { - return false; - } else { - oldValue.value = value; - return true; - } - } - } - const hadKey = isArray$2(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); - const result = Reflect.set( - target, - key, - value, - isRef(target) ? target : receiver - ); - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, "add", key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, "set", key, value); - } - } - return result; - } - deleteProperty(target, key) { - const hadKey = hasOwn(target, key); - target[key]; - const result = Reflect.deleteProperty(target, key); - if (result && hadKey) { - trigger(target, "delete", key, void 0); - } - return result; - } - has(target, key) { - const result = Reflect.has(target, key); - if (!isSymbol(key) || !builtInSymbols.has(key)) { - track(target, "has", key); - } - return result; - } - ownKeys(target) { - track( - target, - "iterate", - isArray$2(target) ? "length" : ITERATE_KEY - ); - return Reflect.ownKeys(target); - } -} -class ReadonlyReactiveHandler extends BaseReactiveHandler { - constructor(isShallow2 = false) { - super(true, isShallow2); - } - set(target, key) { - return true; - } - deleteProperty(target, key) { - return true; - } -} -const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); -const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); -const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true); -const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); -const toShallow = (value) => value; -const getProto = (v) => Reflect.getPrototypeOf(v); -function createIterableMethod(method, isReadonly2, isShallow2) { - return function(...args) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const targetIsMap = isMap(rawTarget); - const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; - const isKeyOnly = method === "keys" && targetIsMap; - const innerIterator = target[method](...args); - const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive; - !isReadonly2 && track( - rawTarget, - "iterate", - isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY - ); - return { - // iterator protocol - next() { - const { value, done } = innerIterator.next(); - return done ? { value, done } : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done - }; - }, - // iterable protocol - [Symbol.iterator]() { - return this; - } - }; - }; -} -function createReadonlyMethod(type) { - return function(...args) { - return type === "delete" ? false : type === "clear" ? void 0 : this; - }; -} -function createInstrumentations(readonly2, shallow) { - const instrumentations = { - get(key) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!readonly2) { - if (hasChanged(key, rawKey)) { - track(rawTarget, "get", key); - } - track(rawTarget, "get", rawKey); - } - const { has } = getProto(rawTarget); - const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive; - if (has.call(rawTarget, key)) { - return wrap(target.get(key)); - } else if (has.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } else if (target !== rawTarget) { - target.get(key); - } - }, - get size() { - const target = this["__v_raw"]; - !readonly2 && track(toRaw(target), "iterate", ITERATE_KEY); - return Reflect.get(target, "size", target); - }, - has(key) { - const target = this["__v_raw"]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (!readonly2) { - if (hasChanged(key, rawKey)) { - track(rawTarget, "has", key); - } - track(rawTarget, "has", rawKey); - } - return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); - }, - forEach(callback, thisArg) { - const observed = this; - const target = observed["__v_raw"]; - const rawTarget = toRaw(target); - const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive; - !readonly2 && track(rawTarget, "iterate", ITERATE_KEY); - return target.forEach((value, key) => { - return callback.call(thisArg, wrap(value), wrap(key), observed); - }); - } - }; - extend$1( - instrumentations, - readonly2 ? { - add: createReadonlyMethod("add"), - set: createReadonlyMethod("set"), - delete: createReadonlyMethod("delete"), - clear: createReadonlyMethod("clear") - } : { - add(value) { - if (!shallow && !isShallow(value) && !isReadonly(value)) { - value = toRaw(value); - } - const target = toRaw(this); - const proto = getProto(target); - const hadKey = proto.has.call(target, value); - if (!hadKey) { - target.add(value); - trigger(target, "add", value, value); - } - return this; - }, - set(key, value) { - if (!shallow && !isShallow(value) && !isReadonly(value)) { - value = toRaw(value); - } - const target = toRaw(this); - const { has, get } = getProto(target); - let hadKey = has.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } - const oldValue = get.call(target, key); - target.set(key, value); - if (!hadKey) { - trigger(target, "add", key, value); - } else if (hasChanged(value, oldValue)) { - trigger(target, "set", key, value); - } - return this; - }, - delete(key) { - const target = toRaw(this); - const { has, get } = getProto(target); - let hadKey = has.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } - get ? get.call(target, key) : void 0; - const result = target.delete(key); - if (hadKey) { - trigger(target, "delete", key, void 0); - } - return result; - }, - clear() { - const target = toRaw(this); - const hadItems = target.size !== 0; - const result = target.clear(); - if (hadItems) { - trigger( - target, - "clear", - void 0, - void 0 - ); - } - return result; - } - } - ); - const iteratorMethods = [ - "keys", - "values", - "entries", - Symbol.iterator - ]; - iteratorMethods.forEach((method) => { - instrumentations[method] = createIterableMethod(method, readonly2, shallow); - }); - return instrumentations; -} -function createInstrumentationGetter(isReadonly2, shallow) { - const instrumentations = createInstrumentations(isReadonly2, shallow); - return (target, key, receiver) => { - if (key === "__v_isReactive") { - return !isReadonly2; - } else if (key === "__v_isReadonly") { - return isReadonly2; - } else if (key === "__v_raw") { - return target; - } - return Reflect.get( - hasOwn(instrumentations, key) && key in target ? instrumentations : target, - key, - receiver - ); - }; -} -const mutableCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(false, false) -}; -const shallowCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(false, true) -}; -const readonlyCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(true, false) -}; -const shallowReadonlyCollectionHandlers = { - get: /* @__PURE__ */ createInstrumentationGetter(true, true) -}; -const reactiveMap = /* @__PURE__ */ new WeakMap(); -const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); -const readonlyMap = /* @__PURE__ */ new WeakMap(); -const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); -function targetTypeMap(rawType) { - switch (rawType) { - case "Object": - case "Array": - return 1; - case "Map": - case "Set": - case "WeakMap": - case "WeakSet": - return 2; - default: - return 0; - } -} -function getTargetType(value) { - return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); -} -function reactive(target) { - if (isReadonly(target)) { - return target; - } - return createReactiveObject( - target, - false, - mutableHandlers, - mutableCollectionHandlers, - reactiveMap - ); -} -function shallowReactive(target) { - return createReactiveObject( - target, - false, - shallowReactiveHandlers, - shallowCollectionHandlers, - shallowReactiveMap - ); -} -function readonly(target) { - return createReactiveObject( - target, - true, - readonlyHandlers, - readonlyCollectionHandlers, - readonlyMap - ); -} -function shallowReadonly(target) { - return createReactiveObject( - target, - true, - shallowReadonlyHandlers, - shallowReadonlyCollectionHandlers, - shallowReadonlyMap - ); -} -function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { - if (!isObject$1(target)) { - return target; - } - if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { - return target; - } - const existingProxy = proxyMap.get(target); - if (existingProxy) { - return existingProxy; - } - const targetType = getTargetType(target); - if (targetType === 0) { - return target; - } - const proxy = new Proxy( - target, - targetType === 2 ? collectionHandlers : baseHandlers - ); - proxyMap.set(target, proxy); - return proxy; -} -function isReactive(value) { - if (isReadonly(value)) { - return isReactive(value["__v_raw"]); - } - return !!(value && value["__v_isReactive"]); -} -function isReadonly(value) { - return !!(value && value["__v_isReadonly"]); -} -function isShallow(value) { - return !!(value && value["__v_isShallow"]); -} -function isProxy(value) { - return value ? !!value["__v_raw"] : false; -} -function toRaw(observed) { - const raw = observed && observed["__v_raw"]; - return raw ? toRaw(raw) : observed; -} -function markRaw(value) { - if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) { - def(value, "__v_skip", true); - } - return value; -} -const toReactive = (value) => isObject$1(value) ? reactive(value) : value; -const toReadonly = (value) => isObject$1(value) ? readonly(value) : value; -function isRef(r) { - return r ? r["__v_isRef"] === true : false; -} -function ref(value) { - return createRef(value, false); -} -function shallowRef(value) { - return createRef(value, true); -} -function createRef(rawValue, shallow) { - if (isRef(rawValue)) { - return rawValue; - } - return new RefImpl(rawValue, shallow); -} -class RefImpl { - constructor(value, isShallow2) { - this.dep = new Dep(); - this["__v_isRef"] = true; - this["__v_isShallow"] = false; - this._rawValue = isShallow2 ? value : toRaw(value); - this._value = isShallow2 ? value : toReactive(value); - this["__v_isShallow"] = isShallow2; - } - get value() { - { - this.dep.track(); - } - return this._value; - } - set value(newValue) { - const oldValue = this._rawValue; - const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue); - newValue = useDirectValue ? newValue : toRaw(newValue); - if (hasChanged(newValue, oldValue)) { - this._rawValue = newValue; - this._value = useDirectValue ? newValue : toReactive(newValue); - { - this.dep.trigger(); - } - } - } -} -function unref(ref2) { - return isRef(ref2) ? ref2.value : ref2; -} -const shallowUnwrapHandlers = { - get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)), - set: (target, key, value, receiver) => { - const oldValue = target[key]; - if (isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } else { - return Reflect.set(target, key, value, receiver); - } - } -}; -function proxyRefs(objectWithRefs) { - return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); -} -function toRefs(object) { - const ret = isArray$2(object) ? new Array(object.length) : {}; - for (const key in object) { - ret[key] = propertyToRef(object, key); - } - return ret; -} -class ObjectRefImpl { - constructor(_object, _key, _defaultValue) { - this._object = _object; - this._key = _key; - this._defaultValue = _defaultValue; - this["__v_isRef"] = true; - this._value = void 0; - } - get value() { - const val = this._object[this._key]; - return this._value = val === void 0 ? this._defaultValue : val; - } - set value(newVal) { - this._object[this._key] = newVal; - } - get dep() { - return getDepFromReactive(toRaw(this._object), this._key); - } -} -function propertyToRef(source, key, defaultValue) { - const val = source[key]; - return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); -} -class ComputedRefImpl { - constructor(fn, setter, isSSR) { - this.fn = fn; - this.setter = setter; - this._value = void 0; - this.dep = new Dep(this); - this.__v_isRef = true; - this.deps = void 0; - this.depsTail = void 0; - this.flags = 16; - this.globalVersion = globalVersion - 1; - this.next = void 0; - this.effect = this; - this["__v_isReadonly"] = !setter; - this.isSSR = isSSR; - } - /** - * @internal - */ - notify() { - this.flags |= 16; - if (!(this.flags & 8) && // avoid infinite self recursion - activeSub !== this) { - batch(this, true); - return true; - } - } - get value() { - const link = this.dep.track(); - refreshComputed(this); - if (link) { - link.version = this.dep.version; - } - return this._value; - } - set value(newValue) { - if (this.setter) { - this.setter(newValue); - } - } -} -function computed$1(getterOrOptions, debugOptions, isSSR = false) { - let getter; - let setter; - if (isFunction$1(getterOrOptions)) { - getter = getterOrOptions; - } else { - getter = getterOrOptions.get; - setter = getterOrOptions.set; - } - const cRef = new ComputedRefImpl(getter, setter, isSSR); - return cRef; -} -const INITIAL_WATCHER_VALUE = {}; -const cleanupMap = /* @__PURE__ */ new WeakMap(); -let activeWatcher = void 0; -function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) { - if (owner) { - let cleanups = cleanupMap.get(owner); - if (!cleanups) cleanupMap.set(owner, cleanups = []); - cleanups.push(cleanupFn); - } -} -function watch$1(source, cb, options = EMPTY_OBJ) { - const { immediate, deep, once, scheduler, augmentJob, call } = options; - const reactiveGetter = (source2) => { - if (deep) return source2; - if (isShallow(source2) || deep === false || deep === 0) - return traverse(source2, 1); - return traverse(source2); - }; - let effect2; - let getter; - let cleanup; - let boundCleanup; - let forceTrigger = false; - let isMultiSource = false; - if (isRef(source)) { - getter = () => source.value; - forceTrigger = isShallow(source); - } else if (isReactive(source)) { - getter = () => reactiveGetter(source); - forceTrigger = true; - } else if (isArray$2(source)) { - isMultiSource = true; - forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); - getter = () => source.map((s) => { - if (isRef(s)) { - return s.value; - } else if (isReactive(s)) { - return reactiveGetter(s); - } else if (isFunction$1(s)) { - return call ? call(s, 2) : s(); - } else ; - }); - } else if (isFunction$1(source)) { - if (cb) { - getter = call ? () => call(source, 2) : source; - } else { - getter = () => { - if (cleanup) { - pauseTracking(); - try { - cleanup(); - } finally { - resetTracking(); - } - } - const currentEffect = activeWatcher; - activeWatcher = effect2; - try { - return call ? call(source, 3, [boundCleanup]) : source(boundCleanup); - } finally { - activeWatcher = currentEffect; - } - }; - } - } else { - getter = NOOP; - } - if (cb && deep) { - const baseGetter = getter; - const depth = deep === true ? Infinity : deep; - getter = () => traverse(baseGetter(), depth); - } - const scope = getCurrentScope(); - const watchHandle = () => { - effect2.stop(); - if (scope && scope.active) { - remove(scope.effects, effect2); - } - }; - if (once && cb) { - const _cb = cb; - cb = (...args) => { - _cb(...args); - watchHandle(); - }; - } - let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; - const job = (immediateFirstRun) => { - if (!(effect2.flags & 1) || !effect2.dirty && !immediateFirstRun) { - return; - } - if (cb) { - const newValue = effect2.run(); - if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) { - if (cleanup) { - cleanup(); - } - const currentWatcher = activeWatcher; - activeWatcher = effect2; - try { - const args = [ - newValue, - // pass undefined as the old value when it's changed for the first time - oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, - boundCleanup - ]; - call ? call(cb, 3, args) : ( - // @ts-expect-error - cb(...args) - ); - oldValue = newValue; - } finally { - activeWatcher = currentWatcher; - } - } - } else { - effect2.run(); - } - }; - if (augmentJob) { - augmentJob(job); - } - effect2 = new ReactiveEffect(getter); - effect2.scheduler = scheduler ? () => scheduler(job, false) : job; - boundCleanup = (fn) => onWatcherCleanup(fn, false, effect2); - cleanup = effect2.onStop = () => { - const cleanups = cleanupMap.get(effect2); - if (cleanups) { - if (call) { - call(cleanups, 4); - } else { - for (const cleanup2 of cleanups) cleanup2(); - } - cleanupMap.delete(effect2); - } - }; - if (cb) { - if (immediate) { - job(true); - } else { - oldValue = effect2.run(); - } - } else if (scheduler) { - scheduler(job.bind(null, true), true); - } else { - effect2.run(); - } - watchHandle.pause = effect2.pause.bind(effect2); - watchHandle.resume = effect2.resume.bind(effect2); - watchHandle.stop = watchHandle; - return watchHandle; -} -function traverse(value, depth = Infinity, seen2) { - if (depth <= 0 || !isObject$1(value) || value["__v_skip"]) { - return value; - } - seen2 = seen2 || /* @__PURE__ */ new Set(); - if (seen2.has(value)) { - return value; - } - seen2.add(value); - depth--; - if (isRef(value)) { - traverse(value.value, depth, seen2); - } else if (isArray$2(value)) { - for (let i = 0; i < value.length; i++) { - traverse(value[i], depth, seen2); - } - } else if (isSet(value) || isMap(value)) { - value.forEach((v) => { - traverse(v, depth, seen2); - }); - } else if (isPlainObject$2(value)) { - for (const key in value) { - traverse(value[key], depth, seen2); - } - for (const key of Object.getOwnPropertySymbols(value)) { - if (Object.prototype.propertyIsEnumerable.call(value, key)) { - traverse(value[key], depth, seen2); - } - } - } - return value; -} -/** -* @vue/runtime-core v3.5.13 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/ -const stack = []; -let isWarning = false; -function warn$1(msg, ...args) { - if (isWarning) return; - isWarning = true; - pauseTracking(); - const instance = stack.length ? stack[stack.length - 1].component : null; - const appWarnHandler = instance && instance.appContext.config.warnHandler; - const trace = getComponentTrace(); - if (appWarnHandler) { - callWithErrorHandling( - appWarnHandler, - instance, - 11, - [ - // eslint-disable-next-line no-restricted-syntax - msg + args.map((a) => { - var _a, _b; - return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); - }).join(""), - instance && instance.proxy, - trace.map( - ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` - ).join("\n"), - trace - ] - ); - } else { - const warnArgs = [`[Vue warn]: ${msg}`, ...args]; - if (trace.length && // avoid spamming console during tests - true) { - warnArgs.push(` -`, ...formatTrace(trace)); - } - console.warn(...warnArgs); - } - resetTracking(); - isWarning = false; -} -function getComponentTrace() { - let currentVNode = stack[stack.length - 1]; - if (!currentVNode) { - return []; - } - const normalizedStack = []; - while (currentVNode) { - const last = normalizedStack[0]; - if (last && last.vnode === currentVNode) { - last.recurseCount++; - } else { - normalizedStack.push({ - vnode: currentVNode, - recurseCount: 0 - }); - } - const parentInstance = currentVNode.component && currentVNode.component.parent; - currentVNode = parentInstance && parentInstance.vnode; - } - return normalizedStack; -} -function formatTrace(trace) { - const logs = []; - trace.forEach((entry, i) => { - logs.push(...i === 0 ? [] : [` -`], ...formatTraceEntry(entry)); - }); - return logs; -} -function formatTraceEntry({ vnode, recurseCount }) { - const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; - const isRoot = vnode.component ? vnode.component.parent == null : false; - const open = ` at <${formatComponentName( - vnode.component, - vnode.type, - isRoot - )}`; - const close = `>` + postfix; - return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; -} -function formatProps(props) { - const res = []; - const keys = Object.keys(props); - keys.slice(0, 3).forEach((key) => { - res.push(...formatProp(key, props[key])); - }); - if (keys.length > 3) { - res.push(` ...`); - } - return res; -} -function formatProp(key, value, raw) { - if (isString$1(value)) { - value = JSON.stringify(value); - return raw ? value : [`${key}=${value}`]; - } else if (typeof value === "number" || typeof value === "boolean" || value == null) { - return raw ? value : [`${key}=${value}`]; - } else if (isRef(value)) { - value = formatProp(key, toRaw(value.value), true); - return raw ? value : [`${key}=Ref<`, value, `>`]; - } else if (isFunction$1(value)) { - return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; - } else { - value = toRaw(value); - return raw ? value : [`${key}=`, value]; - } -} -function callWithErrorHandling(fn, instance, type, args) { - try { - return args ? fn(...args) : fn(); - } catch (err) { - handleError(err, instance, type); - } -} -function callWithAsyncErrorHandling(fn, instance, type, args) { - if (isFunction$1(fn)) { - const res = callWithErrorHandling(fn, instance, type, args); - if (res && isPromise(res)) { - res.catch((err) => { - handleError(err, instance, type); - }); - } - return res; - } - if (isArray$2(fn)) { - const values = []; - for (let i = 0; i < fn.length; i++) { - values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); - } - return values; - } -} -function handleError(err, instance, type, throwInDev = true) { - const contextVNode = instance ? instance.vnode : null; - const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ; - if (instance) { - let cur = instance.parent; - const exposedInstance = instance.proxy; - const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`; - while (cur) { - const errorCapturedHooks = cur.ec; - if (errorCapturedHooks) { - for (let i = 0; i < errorCapturedHooks.length; i++) { - if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { - return; - } - } - } - cur = cur.parent; - } - if (errorHandler) { - pauseTracking(); - callWithErrorHandling(errorHandler, null, 10, [ - err, - exposedInstance, - errorInfo - ]); - resetTracking(); - return; - } - } - logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction); -} -function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) { - if (throwInProd) { - throw err; - } else { - console.error(err); - } -} -const queue = []; -let flushIndex = -1; -const pendingPostFlushCbs = []; -let activePostFlushCbs = null; -let postFlushIndex = 0; -const resolvedPromise = /* @__PURE__ */ Promise.resolve(); -let currentFlushPromise = null; -function nextTick(fn) { - const p2 = currentFlushPromise || resolvedPromise; - return fn ? p2.then(this ? fn.bind(this) : fn) : p2; -} -function findInsertionIndex$1(id) { - let start = flushIndex + 1; - let end = queue.length; - while (start < end) { - const middle = start + end >>> 1; - const middleJob = queue[middle]; - const middleJobId = getId(middleJob); - if (middleJobId < id || middleJobId === id && middleJob.flags & 2) { - start = middle + 1; - } else { - end = middle; - } - } - return start; -} -function queueJob(job) { - if (!(job.flags & 1)) { - const jobId = getId(job); - const lastJob = queue[queue.length - 1]; - if (!lastJob || // fast path when the job id is larger than the tail - !(job.flags & 2) && jobId >= getId(lastJob)) { - queue.push(job); - } else { - queue.splice(findInsertionIndex$1(jobId), 0, job); - } - job.flags |= 1; - queueFlush(); - } -} -function queueFlush() { - if (!currentFlushPromise) { - currentFlushPromise = resolvedPromise.then(flushJobs); - } -} -function queuePostFlushCb(cb) { - if (!isArray$2(cb)) { - if (activePostFlushCbs && cb.id === -1) { - activePostFlushCbs.splice(postFlushIndex + 1, 0, cb); - } else if (!(cb.flags & 1)) { - pendingPostFlushCbs.push(cb); - cb.flags |= 1; - } - } else { - pendingPostFlushCbs.push(...cb); - } - queueFlush(); -} -function flushPreFlushCbs(instance, seen2, i = flushIndex + 1) { - for (; i < queue.length; i++) { - const cb = queue[i]; - if (cb && cb.flags & 2) { - if (instance && cb.id !== instance.uid) { - continue; - } - queue.splice(i, 1); - i--; - if (cb.flags & 4) { - cb.flags &= -2; - } - cb(); - if (!(cb.flags & 4)) { - cb.flags &= -2; - } - } - } -} -function flushPostFlushCbs(seen2) { - if (pendingPostFlushCbs.length) { - const deduped = [...new Set(pendingPostFlushCbs)].sort( - (a, b) => getId(a) - getId(b) - ); - pendingPostFlushCbs.length = 0; - if (activePostFlushCbs) { - activePostFlushCbs.push(...deduped); - return; - } - activePostFlushCbs = deduped; - for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { - const cb = activePostFlushCbs[postFlushIndex]; - if (cb.flags & 4) { - cb.flags &= -2; - } - if (!(cb.flags & 8)) cb(); - cb.flags &= -2; - } - activePostFlushCbs = null; - postFlushIndex = 0; - } -} -const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id; -function flushJobs(seen2) { - try { - for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { - const job = queue[flushIndex]; - if (job && !(job.flags & 8)) { - if (false) ; - if (job.flags & 4) { - job.flags &= ~1; - } - callWithErrorHandling( - job, - job.i, - job.i ? 15 : 14 - ); - if (!(job.flags & 4)) { - job.flags &= ~1; - } - } - } - } finally { - for (; flushIndex < queue.length; flushIndex++) { - const job = queue[flushIndex]; - if (job) { - job.flags &= -2; - } - } - flushIndex = -1; - queue.length = 0; - flushPostFlushCbs(); - currentFlushPromise = null; - if (queue.length || pendingPostFlushCbs.length) { - flushJobs(); - } - } -} -let currentRenderingInstance = null; -let currentScopeId = null; -function setCurrentRenderingInstance(instance) { - const prev = currentRenderingInstance; - currentRenderingInstance = instance; - currentScopeId = instance && instance.type.__scopeId || null; - return prev; -} -function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { - if (!ctx) return fn; - if (fn._n) { - return fn; - } - const renderFnWithContext = (...args) => { - if (renderFnWithContext._d) { - setBlockTracking(-1); - } - const prevInstance = setCurrentRenderingInstance(ctx); - let res; - try { - res = fn(...args); - } finally { - setCurrentRenderingInstance(prevInstance); - if (renderFnWithContext._d) { - setBlockTracking(1); - } - } - return res; - }; - renderFnWithContext._n = true; - renderFnWithContext._c = true; - renderFnWithContext._d = true; - return renderFnWithContext; -} -function withDirectives(vnode, directives) { - if (currentRenderingInstance === null) { - return vnode; - } - const instance = getComponentPublicInstance(currentRenderingInstance); - const bindings = vnode.dirs || (vnode.dirs = []); - for (let i = 0; i < directives.length; i++) { - let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; - if (dir) { - if (isFunction$1(dir)) { - dir = { - mounted: dir, - updated: dir - }; - } - if (dir.deep) { - traverse(value); - } - bindings.push({ - dir, - instance, - value, - oldValue: void 0, - arg, - modifiers - }); - } - } - return vnode; -} -function invokeDirectiveHook(vnode, prevVNode, instance, name) { - const bindings = vnode.dirs; - const oldBindings = prevVNode && prevVNode.dirs; - for (let i = 0; i < bindings.length; i++) { - const binding = bindings[i]; - if (oldBindings) { - binding.oldValue = oldBindings[i].value; - } - let hook = binding.dir[name]; - if (hook) { - pauseTracking(); - callWithAsyncErrorHandling(hook, instance, 8, [ - vnode.el, - binding, - vnode, - prevVNode - ]); - resetTracking(); - } - } -} -const TeleportEndKey = Symbol("_vte"); -const isTeleport = (type) => type.__isTeleport; -function setTransitionHooks(vnode, hooks) { - if (vnode.shapeFlag & 6 && vnode.component) { - vnode.transition = hooks; - setTransitionHooks(vnode.component.subTree, hooks); - } else if (vnode.shapeFlag & 128) { - vnode.ssContent.transition = hooks.clone(vnode.ssContent); - vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); - } else { - vnode.transition = hooks; - } -} -/*! #__NO_SIDE_EFFECTS__ */ -// @__NO_SIDE_EFFECTS__ -function defineComponent(options, extraOptions) { - return isFunction$1(options) ? ( - // #8236: extend call and options.name access are considered side-effects - // by Rollup, so we have to wrap it in a pure-annotated IIFE. - /* @__PURE__ */ (() => extend$1({ name: options.name }, extraOptions, { setup: options }))() - ) : options; -} -function markAsyncBoundary(instance) { - instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0]; -} -function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { - if (isArray$2(rawRef)) { - rawRef.forEach( - (r, i) => setRef( - r, - oldRawRef && (isArray$2(oldRawRef) ? oldRawRef[i] : oldRawRef), - parentSuspense, - vnode, - isUnmount - ) - ); - return; - } - if (isAsyncWrapper(vnode) && !isUnmount) { - if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) { - setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree); - } - return; - } - const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el; - const value = isUnmount ? null : refValue; - const { i: owner, r: ref3 } = rawRef; - const oldRef = oldRawRef && oldRawRef.r; - const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs; - const setupState = owner.setupState; - const rawSetupState = toRaw(setupState); - const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => { - return hasOwn(rawSetupState, key); - }; - if (oldRef != null && oldRef !== ref3) { - if (isString$1(oldRef)) { - refs[oldRef] = null; - if (canSetSetupRef(oldRef)) { - setupState[oldRef] = null; - } - } else if (isRef(oldRef)) { - oldRef.value = null; - } - } - if (isFunction$1(ref3)) { - callWithErrorHandling(ref3, owner, 12, [value, refs]); - } else { - const _isString = isString$1(ref3); - const _isRef = isRef(ref3); - if (_isString || _isRef) { - const doSet = () => { - if (rawRef.f) { - const existing = _isString ? canSetSetupRef(ref3) ? setupState[ref3] : refs[ref3] : ref3.value; - if (isUnmount) { - isArray$2(existing) && remove(existing, refValue); - } else { - if (!isArray$2(existing)) { - if (_isString) { - refs[ref3] = [refValue]; - if (canSetSetupRef(ref3)) { - setupState[ref3] = refs[ref3]; - } - } else { - ref3.value = [refValue]; - if (rawRef.k) refs[rawRef.k] = ref3.value; - } - } else if (!existing.includes(refValue)) { - existing.push(refValue); - } - } - } else if (_isString) { - refs[ref3] = value; - if (canSetSetupRef(ref3)) { - setupState[ref3] = value; - } - } else if (_isRef) { - ref3.value = value; - if (rawRef.k) refs[rawRef.k] = value; - } else ; - }; - if (value) { - doSet.id = -1; - queuePostRenderEffect(doSet, parentSuspense); - } else { - doSet(); - } - } - } -} -getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1)); -getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id)); -const isAsyncWrapper = (i) => !!i.type.__asyncLoader; -const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; -function onActivated(hook, target) { - registerKeepAliveHook(hook, "a", target); -} -function onDeactivated(hook, target) { - registerKeepAliveHook(hook, "da", target); -} -function registerKeepAliveHook(hook, type, target = currentInstance) { - const wrappedHook = hook.__wdc || (hook.__wdc = () => { - let current = target; - while (current) { - if (current.isDeactivated) { - return; - } - current = current.parent; - } - return hook(); - }); - injectHook(type, wrappedHook, target); - if (target) { - let current = target.parent; - while (current && current.parent) { - if (isKeepAlive(current.parent.vnode)) { - injectToKeepAliveRoot(wrappedHook, type, target, current); - } - current = current.parent; - } - } -} -function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { - const injected = injectHook( - type, - hook, - keepAliveRoot, - true - /* prepend */ - ); - onUnmounted(() => { - remove(keepAliveRoot[type], injected); - }, target); -} -function injectHook(type, hook, target = currentInstance, prepend = false) { - if (target) { - const hooks = target[type] || (target[type] = []); - const wrappedHook = hook.__weh || (hook.__weh = (...args) => { - pauseTracking(); - const reset = setCurrentInstance(target); - const res = callWithAsyncErrorHandling(hook, target, type, args); - reset(); - resetTracking(); - return res; - }); - if (prepend) { - hooks.unshift(wrappedHook); - } else { - hooks.push(wrappedHook); - } - return wrappedHook; - } -} -const createHook = (lifecycle) => (hook, target = currentInstance) => { - if (!isInSSRComponentSetup || lifecycle === "sp") { - injectHook(lifecycle, (...args) => hook(...args), target); - } -}; -const onBeforeMount = createHook("bm"); -const onMounted = createHook("m"); -const onBeforeUpdate = createHook( - "bu" -); -const onUpdated = createHook("u"); -const onBeforeUnmount = createHook( - "bum" -); -const onUnmounted = createHook("um"); -const onServerPrefetch = createHook( - "sp" -); -const onRenderTriggered = createHook("rtg"); -const onRenderTracked = createHook("rtc"); -function onErrorCaptured(hook, target = currentInstance) { - injectHook("ec", hook, target); -} -const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); -function renderList(source, renderItem, cache, index) { - let ret; - const cached = cache; - const sourceIsArray = isArray$2(source); - if (sourceIsArray || isString$1(source)) { - const sourceIsReactiveArray = sourceIsArray && isReactive(source); - let needsWrap = false; - if (sourceIsReactiveArray) { - needsWrap = !isShallow(source); - source = shallowReadArray(source); - } - ret = new Array(source.length); - for (let i = 0, l = source.length; i < l; i++) { - ret[i] = renderItem( - needsWrap ? toReactive(source[i]) : source[i], - i, - void 0, - cached - ); - } - } else if (typeof source === "number") { - ret = new Array(source); - for (let i = 0; i < source; i++) { - ret[i] = renderItem(i + 1, i, void 0, cached); - } - } else if (isObject$1(source)) { - if (source[Symbol.iterator]) { - ret = Array.from( - source, - (item, i) => renderItem(item, i, void 0, cached) - ); - } else { - const keys = Object.keys(source); - ret = new Array(keys.length); - for (let i = 0, l = keys.length; i < l; i++) { - const key = keys[i]; - ret[i] = renderItem(source[key], key, i, cached); - } - } - } else { - ret = []; - } - return ret; -} -function renderSlot(slots, name, props = {}, fallback, noSlotted) { - if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) { - if (name !== "default") props.name = name; - return openBlock(), createBlock( - Fragment, - null, - [createVNode("slot", props, fallback)], - 64 - ); - } - let slot = slots[name]; - if (slot && slot._c) { - slot._d = false; - } - openBlock(); - const validSlotContent = slot && ensureValidVNode(slot(props)); - const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch - // key attached in the `createSlots` helper, respect that - validSlotContent && validSlotContent.key; - const rendered = createBlock( - Fragment, - { - key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content - "" - }, - validSlotContent || [], - validSlotContent && slots._ === 1 ? 64 : -2 - ); - if (!noSlotted && rendered.scopeId) { - rendered.slotScopeIds = [rendered.scopeId + "-s"]; - } - if (slot && slot._c) { - slot._d = true; - } - return rendered; -} -function ensureValidVNode(vnodes) { - return vnodes.some((child) => { - if (!isVNode(child)) return true; - if (child.type === Comment) return false; - if (child.type === Fragment && !ensureValidVNode(child.children)) - return false; - return true; - }) ? vnodes : null; -} -const getPublicInstance = (i) => { - if (!i) return null; - if (isStatefulComponent(i)) return getComponentPublicInstance(i); - return getPublicInstance(i.parent); -}; -const publicPropertiesMap = ( - // Move PURE marker to new line to workaround compiler discarding it - // due to type annotation - /* @__PURE__ */ extend$1(/* @__PURE__ */ Object.create(null), { - $: (i) => i, - $el: (i) => i.vnode.el, - $data: (i) => i.data, - $props: (i) => i.props, - $attrs: (i) => i.attrs, - $slots: (i) => i.slots, - $refs: (i) => i.refs, - $parent: (i) => getPublicInstance(i.parent), - $root: (i) => getPublicInstance(i.root), - $host: (i) => i.ce, - $emit: (i) => i.emit, - $options: (i) => resolveMergedOptions(i), - $forceUpdate: (i) => i.f || (i.f = () => { - queueJob(i.update); - }), - $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), - $watch: (i) => instanceWatch.bind(i) - }) -); -const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); -const PublicInstanceProxyHandlers = { - get({ _: instance }, key) { - if (key === "__v_skip") { - return true; - } - const { ctx, setupState, data, props, accessCache, type, appContext } = instance; - let normalizedProps; - if (key[0] !== "$") { - const n = accessCache[key]; - if (n !== void 0) { - switch (n) { - case 1: - return setupState[key]; - case 2: - return data[key]; - case 4: - return ctx[key]; - case 3: - return props[key]; - } - } else if (hasSetupBinding(setupState, key)) { - accessCache[key] = 1; - return setupState[key]; - } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { - accessCache[key] = 2; - return data[key]; - } else if ( - // only cache other properties when instance has declared (thus stable) - // props - (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) - ) { - accessCache[key] = 3; - return props[key]; - } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { - accessCache[key] = 4; - return ctx[key]; - } else if (shouldCacheAccess) { - accessCache[key] = 0; - } - } - const publicGetter = publicPropertiesMap[key]; - let cssModule, globalProperties; - if (publicGetter) { - if (key === "$attrs") { - track(instance.attrs, "get", ""); - } - return publicGetter(instance); - } else if ( - // css module (injected by vue-loader) - (cssModule = type.__cssModules) && (cssModule = cssModule[key]) - ) { - return cssModule; - } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { - accessCache[key] = 4; - return ctx[key]; - } else if ( - // global properties - globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) - ) { - { - return globalProperties[key]; - } - } else ; - }, - set({ _: instance }, key, value) { - const { data, setupState, ctx } = instance; - if (hasSetupBinding(setupState, key)) { - setupState[key] = value; - return true; - } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { - data[key] = value; - return true; - } else if (hasOwn(instance.props, key)) { - return false; - } - if (key[0] === "$" && key.slice(1) in instance) { - return false; - } else { - { - ctx[key] = value; - } - } - return true; - }, - has({ - _: { data, setupState, accessCache, ctx, appContext, propsOptions } - }, key) { - let normalizedProps; - return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key); - }, - defineProperty(target, key, descriptor) { - if (descriptor.get != null) { - target._.accessCache[key] = 0; - } else if (hasOwn(descriptor, "value")) { - this.set(target, key, descriptor.value, null); - } - return Reflect.defineProperty(target, key, descriptor); - } -}; -function normalizePropsOrEmits(props) { - return isArray$2(props) ? props.reduce( - (normalized, p2) => (normalized[p2] = null, normalized), - {} - ) : props; -} -let shouldCacheAccess = true; -function applyOptions(instance) { - const options = resolveMergedOptions(instance); - const publicThis = instance.proxy; - const ctx = instance.ctx; - shouldCacheAccess = false; - if (options.beforeCreate) { - callHook(options.beforeCreate, instance, "bc"); - } - const { - // state - data: dataOptions, - computed: computedOptions, - methods, - watch: watchOptions, - provide: provideOptions, - inject: injectOptions, - // lifecycle - created, - beforeMount, - mounted, - beforeUpdate, - updated, - activated, - deactivated, - beforeDestroy, - beforeUnmount, - destroyed, - unmounted, - render, - renderTracked, - renderTriggered, - errorCaptured, - serverPrefetch, - // public API - expose, - inheritAttrs, - // assets - components, - directives, - filters - } = options; - const checkDuplicateProperties = null; - if (injectOptions) { - resolveInjections(injectOptions, ctx, checkDuplicateProperties); - } - if (methods) { - for (const key in methods) { - const methodHandler = methods[key]; - if (isFunction$1(methodHandler)) { - { - ctx[key] = methodHandler.bind(publicThis); - } - } - } - } - if (dataOptions) { - const data = dataOptions.call(publicThis, publicThis); - if (!isObject$1(data)) ; - else { - instance.data = reactive(data); - } - } - shouldCacheAccess = true; - if (computedOptions) { - for (const key in computedOptions) { - const opt = computedOptions[key]; - const get = isFunction$1(opt) ? opt.bind(publicThis, publicThis) : isFunction$1(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP; - const set = !isFunction$1(opt) && isFunction$1(opt.set) ? opt.set.bind(publicThis) : NOOP; - const c = computed({ - get, - set - }); - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => c.value, - set: (v) => c.value = v - }); - } - } - if (watchOptions) { - for (const key in watchOptions) { - createWatcher(watchOptions[key], ctx, publicThis, key); - } - } - if (provideOptions) { - const provides = isFunction$1(provideOptions) ? provideOptions.call(publicThis) : provideOptions; - Reflect.ownKeys(provides).forEach((key) => { - provide(key, provides[key]); - }); - } - if (created) { - callHook(created, instance, "c"); - } - function registerLifecycleHook(register, hook) { - if (isArray$2(hook)) { - hook.forEach((_hook) => register(_hook.bind(publicThis))); - } else if (hook) { - register(hook.bind(publicThis)); - } - } - registerLifecycleHook(onBeforeMount, beforeMount); - registerLifecycleHook(onMounted, mounted); - registerLifecycleHook(onBeforeUpdate, beforeUpdate); - registerLifecycleHook(onUpdated, updated); - registerLifecycleHook(onActivated, activated); - registerLifecycleHook(onDeactivated, deactivated); - registerLifecycleHook(onErrorCaptured, errorCaptured); - registerLifecycleHook(onRenderTracked, renderTracked); - registerLifecycleHook(onRenderTriggered, renderTriggered); - registerLifecycleHook(onBeforeUnmount, beforeUnmount); - registerLifecycleHook(onUnmounted, unmounted); - registerLifecycleHook(onServerPrefetch, serverPrefetch); - if (isArray$2(expose)) { - if (expose.length) { - const exposed = instance.exposed || (instance.exposed = {}); - expose.forEach((key) => { - Object.defineProperty(exposed, key, { - get: () => publicThis[key], - set: (val) => publicThis[key] = val - }); - }); - } else if (!instance.exposed) { - instance.exposed = {}; - } - } - if (render && instance.render === NOOP) { - instance.render = render; - } - if (inheritAttrs != null) { - instance.inheritAttrs = inheritAttrs; - } - if (components) instance.components = components; - if (directives) instance.directives = directives; - if (serverPrefetch) { - markAsyncBoundary(instance); - } -} -function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) { - if (isArray$2(injectOptions)) { - injectOptions = normalizeInject(injectOptions); - } - for (const key in injectOptions) { - const opt = injectOptions[key]; - let injected; - if (isObject$1(opt)) { - if ("default" in opt) { - injected = inject( - opt.from || key, - opt.default, - true - ); - } else { - injected = inject(opt.from || key); - } - } else { - injected = inject(opt); - } - if (isRef(injected)) { - Object.defineProperty(ctx, key, { - enumerable: true, - configurable: true, - get: () => injected.value, - set: (v) => injected.value = v - }); - } else { - ctx[key] = injected; - } - } -} -function callHook(hook, instance, type) { - callWithAsyncErrorHandling( - isArray$2(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy), - instance, - type - ); -} -function createWatcher(raw, ctx, publicThis, key) { - let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; - if (isString$1(raw)) { - const handler = ctx[raw]; - if (isFunction$1(handler)) { - { - watch(getter, handler); - } - } - } else if (isFunction$1(raw)) { - { - watch(getter, raw.bind(publicThis)); - } - } else if (isObject$1(raw)) { - if (isArray$2(raw)) { - raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); - } else { - const handler = isFunction$1(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; - if (isFunction$1(handler)) { - watch(getter, handler, raw); - } - } - } else ; -} -function resolveMergedOptions(instance) { - const base = instance.type; - const { mixins, extends: extendsOptions } = base; - const { - mixins: globalMixins, - optionsCache: cache, - config: { optionMergeStrategies } - } = instance.appContext; - const cached = cache.get(base); - let resolved; - if (cached) { - resolved = cached; - } else if (!globalMixins.length && !mixins && !extendsOptions) { - { - resolved = base; - } - } else { - resolved = {}; - if (globalMixins.length) { - globalMixins.forEach( - (m) => mergeOptions$1(resolved, m, optionMergeStrategies, true) - ); - } - mergeOptions$1(resolved, base, optionMergeStrategies); - } - if (isObject$1(base)) { - cache.set(base, resolved); - } - return resolved; -} -function mergeOptions$1(to, from, strats, asMixin = false) { - const { mixins, extends: extendsOptions } = from; - if (extendsOptions) { - mergeOptions$1(to, extendsOptions, strats, true); - } - if (mixins) { - mixins.forEach( - (m) => mergeOptions$1(to, m, strats, true) - ); - } - for (const key in from) { - if (asMixin && key === "expose") ; - else { - const strat = internalOptionMergeStrats[key] || strats && strats[key]; - to[key] = strat ? strat(to[key], from[key]) : from[key]; - } - } - return to; -} -const internalOptionMergeStrats = { - data: mergeDataFn, - props: mergeEmitsOrPropsOptions, - emits: mergeEmitsOrPropsOptions, - // objects - methods: mergeObjectOptions, - computed: mergeObjectOptions, - // lifecycle - beforeCreate: mergeAsArray, - created: mergeAsArray, - beforeMount: mergeAsArray, - mounted: mergeAsArray, - beforeUpdate: mergeAsArray, - updated: mergeAsArray, - beforeDestroy: mergeAsArray, - beforeUnmount: mergeAsArray, - destroyed: mergeAsArray, - unmounted: mergeAsArray, - activated: mergeAsArray, - deactivated: mergeAsArray, - errorCaptured: mergeAsArray, - serverPrefetch: mergeAsArray, - // assets - components: mergeObjectOptions, - directives: mergeObjectOptions, - // watch - watch: mergeWatchOptions, - // provide / inject - provide: mergeDataFn, - inject: mergeInject -}; -function mergeDataFn(to, from) { - if (!from) { - return to; - } - if (!to) { - return from; - } - return function mergedDataFn() { - return extend$1( - isFunction$1(to) ? to.call(this, this) : to, - isFunction$1(from) ? from.call(this, this) : from - ); - }; -} -function mergeInject(to, from) { - return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); -} -function normalizeInject(raw) { - if (isArray$2(raw)) { - const res = {}; - for (let i = 0; i < raw.length; i++) { - res[raw[i]] = raw[i]; - } - return res; - } - return raw; -} -function mergeAsArray(to, from) { - return to ? [...new Set([].concat(to, from))] : from; -} -function mergeObjectOptions(to, from) { - return to ? extend$1(/* @__PURE__ */ Object.create(null), to, from) : from; -} -function mergeEmitsOrPropsOptions(to, from) { - if (to) { - if (isArray$2(to) && isArray$2(from)) { - return [.../* @__PURE__ */ new Set([...to, ...from])]; - } - return extend$1( - /* @__PURE__ */ Object.create(null), - normalizePropsOrEmits(to), - normalizePropsOrEmits(from != null ? from : {}) - ); - } else { - return from; - } -} -function mergeWatchOptions(to, from) { - if (!to) return from; - if (!from) return to; - const merged = extend$1(/* @__PURE__ */ Object.create(null), to); - for (const key in from) { - merged[key] = mergeAsArray(to[key], from[key]); - } - return merged; -} -function createAppContext() { - return { - app: null, - config: { - isNativeTag: NO, - performance: false, - globalProperties: {}, - optionMergeStrategies: {}, - errorHandler: void 0, - warnHandler: void 0, - compilerOptions: {} - }, - mixins: [], - components: {}, - directives: {}, - provides: /* @__PURE__ */ Object.create(null), - optionsCache: /* @__PURE__ */ new WeakMap(), - propsCache: /* @__PURE__ */ new WeakMap(), - emitsCache: /* @__PURE__ */ new WeakMap() - }; -} -let uid$1 = 0; -function createAppAPI(render, hydrate) { - return function createApp2(rootComponent, rootProps = null) { - if (!isFunction$1(rootComponent)) { - rootComponent = extend$1({}, rootComponent); - } - if (rootProps != null && !isObject$1(rootProps)) { - rootProps = null; - } - const context = createAppContext(); - const installedPlugins = /* @__PURE__ */ new WeakSet(); - const pluginCleanupFns = []; - let isMounted = false; - const app2 = context.app = { - _uid: uid$1++, - _component: rootComponent, - _props: rootProps, - _container: null, - _context: context, - _instance: null, - version, - get config() { - return context.config; - }, - set config(v) { - }, - use(plugin, ...options) { - if (installedPlugins.has(plugin)) ; - else if (plugin && isFunction$1(plugin.install)) { - installedPlugins.add(plugin); - plugin.install(app2, ...options); - } else if (isFunction$1(plugin)) { - installedPlugins.add(plugin); - plugin(app2, ...options); - } else ; - return app2; - }, - mixin(mixin) { - { - if (!context.mixins.includes(mixin)) { - context.mixins.push(mixin); - } - } - return app2; - }, - component(name, component) { - if (!component) { - return context.components[name]; - } - context.components[name] = component; - return app2; - }, - directive(name, directive) { - if (!directive) { - return context.directives[name]; - } - context.directives[name] = directive; - return app2; - }, - mount(rootContainer, isHydrate, namespace) { - if (!isMounted) { - const vnode = app2._ceVNode || createVNode(rootComponent, rootProps); - vnode.appContext = context; - if (namespace === true) { - namespace = "svg"; - } else if (namespace === false) { - namespace = void 0; - } - { - render(vnode, rootContainer, namespace); - } - isMounted = true; - app2._container = rootContainer; - rootContainer.__vue_app__ = app2; - return getComponentPublicInstance(vnode.component); - } - }, - onUnmount(cleanupFn) { - pluginCleanupFns.push(cleanupFn); - }, - unmount() { - if (isMounted) { - callWithAsyncErrorHandling( - pluginCleanupFns, - app2._instance, - 16 - ); - render(null, app2._container); - delete app2._container.__vue_app__; - } - }, - provide(key, value) { - context.provides[key] = value; - return app2; - }, - runWithContext(fn) { - const lastApp = currentApp; - currentApp = app2; - try { - return fn(); - } finally { - currentApp = lastApp; - } - } - }; - return app2; - }; -} -let currentApp = null; -function provide(key, value) { - if (!currentInstance) ; - else { - let provides = currentInstance.provides; - const parentProvides = currentInstance.parent && currentInstance.parent.provides; - if (parentProvides === provides) { - provides = currentInstance.provides = Object.create(parentProvides); - } - provides[key] = value; - } -} -function inject(key, defaultValue, treatDefaultAsFactory = false) { - const instance = currentInstance || currentRenderingInstance; - if (instance || currentApp) { - const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0; - if (provides && key in provides) { - return provides[key]; - } else if (arguments.length > 1) { - return treatDefaultAsFactory && isFunction$1(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; - } else ; - } -} -function hasInjectionContext() { - return !!(currentInstance || currentRenderingInstance || currentApp); -} -const internalObjectProto = {}; -const createInternalObject = () => Object.create(internalObjectProto); -const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto; -function initProps(instance, rawProps, isStateful, isSSR = false) { - const props = {}; - const attrs = createInternalObject(); - instance.propsDefaults = /* @__PURE__ */ Object.create(null); - setFullProps(instance, rawProps, props, attrs); - for (const key in instance.propsOptions[0]) { - if (!(key in props)) { - props[key] = void 0; - } - } - if (isStateful) { - instance.props = isSSR ? props : shallowReactive(props); - } else { - if (!instance.type.props) { - instance.props = attrs; - } else { - instance.props = props; - } - } - instance.attrs = attrs; -} -function updateProps(instance, rawProps, rawPrevProps, optimized) { - const { - props, - attrs, - vnode: { patchFlag } - } = instance; - const rawCurrentProps = toRaw(props); - const [options] = instance.propsOptions; - let hasAttrsChanged = false; - if ( - // always force full diff in dev - // - #1942 if hmr is enabled with sfc component - // - vite#872 non-sfc component used by sfc component - (optimized || patchFlag > 0) && !(patchFlag & 16) - ) { - if (patchFlag & 8) { - const propsToUpdate = instance.vnode.dynamicProps; - for (let i = 0; i < propsToUpdate.length; i++) { - let key = propsToUpdate[i]; - if (isEmitListener(instance.emitsOptions, key)) { - continue; - } - const value = rawProps[key]; - if (options) { - if (hasOwn(attrs, key)) { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } else { - const camelizedKey = camelize(key); - props[camelizedKey] = resolvePropValue( - options, - rawCurrentProps, - camelizedKey, - value, - instance, - false - ); - } - } else { - if (value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - } else { - if (setFullProps(instance, rawProps, props, attrs)) { - hasAttrsChanged = true; - } - let kebabKey; - for (const key in rawCurrentProps) { - if (!rawProps || // for camelCase - !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case - // and converted to camelCase (#955) - ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) { - if (options) { - if (rawPrevProps && // for camelCase - (rawPrevProps[key] !== void 0 || // for kebab-case - rawPrevProps[kebabKey] !== void 0)) { - props[key] = resolvePropValue( - options, - rawCurrentProps, - key, - void 0, - instance, - true - ); - } - } else { - delete props[key]; - } - } - } - if (attrs !== rawCurrentProps) { - for (const key in attrs) { - if (!rawProps || !hasOwn(rawProps, key) && true) { - delete attrs[key]; - hasAttrsChanged = true; - } - } - } - } - if (hasAttrsChanged) { - trigger(instance.attrs, "set", ""); - } -} -function setFullProps(instance, rawProps, props, attrs) { - const [options, needCastKeys] = instance.propsOptions; - let hasAttrsChanged = false; - let rawCastValues; - if (rawProps) { - for (let key in rawProps) { - if (isReservedProp(key)) { - continue; - } - const value = rawProps[key]; - let camelKey; - if (options && hasOwn(options, camelKey = camelize(key))) { - if (!needCastKeys || !needCastKeys.includes(camelKey)) { - props[camelKey] = value; - } else { - (rawCastValues || (rawCastValues = {}))[camelKey] = value; - } - } else if (!isEmitListener(instance.emitsOptions, key)) { - if (!(key in attrs) || value !== attrs[key]) { - attrs[key] = value; - hasAttrsChanged = true; - } - } - } - } - if (needCastKeys) { - const rawCurrentProps = toRaw(props); - const castValues = rawCastValues || EMPTY_OBJ; - for (let i = 0; i < needCastKeys.length; i++) { - const key = needCastKeys[i]; - props[key] = resolvePropValue( - options, - rawCurrentProps, - key, - castValues[key], - instance, - !hasOwn(castValues, key) - ); - } - } - return hasAttrsChanged; -} -function resolvePropValue(options, props, key, value, instance, isAbsent) { - const opt = options[key]; - if (opt != null) { - const hasDefault = hasOwn(opt, "default"); - if (hasDefault && value === void 0) { - const defaultValue = opt.default; - if (opt.type !== Function && !opt.skipFactory && isFunction$1(defaultValue)) { - const { propsDefaults } = instance; - if (key in propsDefaults) { - value = propsDefaults[key]; - } else { - const reset = setCurrentInstance(instance); - value = propsDefaults[key] = defaultValue.call( - null, - props - ); - reset(); - } - } else { - value = defaultValue; - } - if (instance.ce) { - instance.ce._setProp(key, value); - } - } - if (opt[ - 0 - /* shouldCast */ - ]) { - if (isAbsent && !hasDefault) { - value = false; - } else if (opt[ - 1 - /* shouldCastTrue */ - ] && (value === "" || value === hyphenate(key))) { - value = true; - } - } - } - return value; -} -const mixinPropsCache = /* @__PURE__ */ new WeakMap(); -function normalizePropsOptions(comp, appContext, asMixin = false) { - const cache = asMixin ? mixinPropsCache : appContext.propsCache; - const cached = cache.get(comp); - if (cached) { - return cached; - } - const raw = comp.props; - const normalized = {}; - const needCastKeys = []; - let hasExtends = false; - if (!isFunction$1(comp)) { - const extendProps = (raw2) => { - hasExtends = true; - const [props, keys] = normalizePropsOptions(raw2, appContext, true); - extend$1(normalized, props); - if (keys) needCastKeys.push(...keys); - }; - if (!asMixin && appContext.mixins.length) { - appContext.mixins.forEach(extendProps); - } - if (comp.extends) { - extendProps(comp.extends); - } - if (comp.mixins) { - comp.mixins.forEach(extendProps); - } - } - if (!raw && !hasExtends) { - if (isObject$1(comp)) { - cache.set(comp, EMPTY_ARR); - } - return EMPTY_ARR; - } - if (isArray$2(raw)) { - for (let i = 0; i < raw.length; i++) { - const normalizedKey = camelize(raw[i]); - if (validatePropName(normalizedKey)) { - normalized[normalizedKey] = EMPTY_OBJ; - } - } - } else if (raw) { - for (const key in raw) { - const normalizedKey = camelize(key); - if (validatePropName(normalizedKey)) { - const opt = raw[key]; - const prop = normalized[normalizedKey] = isArray$2(opt) || isFunction$1(opt) ? { type: opt } : extend$1({}, opt); - const propType = prop.type; - let shouldCast = false; - let shouldCastTrue = true; - if (isArray$2(propType)) { - for (let index = 0; index < propType.length; ++index) { - const type = propType[index]; - const typeName = isFunction$1(type) && type.name; - if (typeName === "Boolean") { - shouldCast = true; - break; - } else if (typeName === "String") { - shouldCastTrue = false; - } - } - } else { - shouldCast = isFunction$1(propType) && propType.name === "Boolean"; - } - prop[ - 0 - /* shouldCast */ - ] = shouldCast; - prop[ - 1 - /* shouldCastTrue */ - ] = shouldCastTrue; - if (shouldCast || hasOwn(prop, "default")) { - needCastKeys.push(normalizedKey); - } - } - } - } - const res = [normalized, needCastKeys]; - if (isObject$1(comp)) { - cache.set(comp, res); - } - return res; -} -function validatePropName(key) { - if (key[0] !== "$" && !isReservedProp(key)) { - return true; - } - return false; -} -const isInternalKey = (key) => key[0] === "_" || key === "$stable"; -const normalizeSlotValue = (value) => isArray$2(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; -const normalizeSlot$1 = (key, rawSlot, ctx) => { - if (rawSlot._n) { - return rawSlot; - } - const normalized = withCtx((...args) => { - if (false) ; - return normalizeSlotValue(rawSlot(...args)); - }, ctx); - normalized._c = false; - return normalized; -}; -const normalizeObjectSlots = (rawSlots, slots, instance) => { - const ctx = rawSlots._ctx; - for (const key in rawSlots) { - if (isInternalKey(key)) continue; - const value = rawSlots[key]; - if (isFunction$1(value)) { - slots[key] = normalizeSlot$1(key, value, ctx); - } else if (value != null) { - const normalized = normalizeSlotValue(value); - slots[key] = () => normalized; - } - } -}; -const normalizeVNodeSlots = (instance, children) => { - const normalized = normalizeSlotValue(children); - instance.slots.default = () => normalized; -}; -const assignSlots = (slots, children, optimized) => { - for (const key in children) { - if (optimized || key !== "_") { - slots[key] = children[key]; - } - } -}; -const initSlots = (instance, children, optimized) => { - const slots = instance.slots = createInternalObject(); - if (instance.vnode.shapeFlag & 32) { - const type = children._; - if (type) { - assignSlots(slots, children, optimized); - if (optimized) { - def(slots, "_", type, true); - } - } else { - normalizeObjectSlots(children, slots); - } - } else if (children) { - normalizeVNodeSlots(instance, children); - } -}; -const updateSlots = (instance, children, optimized) => { - const { vnode, slots } = instance; - let needDeletionCheck = true; - let deletionComparisonTarget = EMPTY_OBJ; - if (vnode.shapeFlag & 32) { - const type = children._; - if (type) { - if (optimized && type === 1) { - needDeletionCheck = false; - } else { - assignSlots(slots, children, optimized); - } - } else { - needDeletionCheck = !children.$stable; - normalizeObjectSlots(children, slots); - } - deletionComparisonTarget = children; - } else if (children) { - normalizeVNodeSlots(instance, children); - deletionComparisonTarget = { default: 1 }; - } - if (needDeletionCheck) { - for (const key in slots) { - if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { - delete slots[key]; - } - } - } -}; -const queuePostRenderEffect = queueEffectWithSuspense; -function createRenderer(options) { - return baseCreateRenderer(options); -} -function baseCreateRenderer(options, createHydrationFns) { - const target = getGlobalThis(); - target.__VUE__ = true; - const { - insert: hostInsert, - remove: hostRemove, - patchProp: hostPatchProp, - createElement: hostCreateElement, - createText: hostCreateText, - createComment: hostCreateComment, - setText: hostSetText, - setElementText: hostSetElementText, - parentNode: hostParentNode, - nextSibling: hostNextSibling, - setScopeId: hostSetScopeId = NOOP, - insertStaticContent: hostInsertStaticContent - } = options; - const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => { - if (n1 === n2) { - return; - } - if (n1 && !isSameVNodeType(n1, n2)) { - anchor = getNextHostNode(n1); - unmount(n1, parentComponent, parentSuspense, true); - n1 = null; - } - if (n2.patchFlag === -2) { - optimized = false; - n2.dynamicChildren = null; - } - const { type, ref: ref3, shapeFlag } = n2; - switch (type) { - case Text: - processText(n1, n2, container, anchor); - break; - case Comment: - processCommentNode(n1, n2, container, anchor); - break; - case Static: - if (n1 == null) { - mountStaticNode(n2, container, anchor, namespace); - } - break; - case Fragment: - processFragment( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized - ); - break; - default: - if (shapeFlag & 1) { - processElement( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized - ); - } else if (shapeFlag & 6) { - processComponent( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized - ); - } else if (shapeFlag & 64) { - type.process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized, - internals - ); - } else if (shapeFlag & 128) { - type.process( - n1, - n2, - container, - anchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized, - internals - ); - } else ; - } - if (ref3 != null && parentComponent) { - setRef(ref3, n1 && n1.ref, parentSuspense, n2 || n1, !n2); - } - }; - const processText = (n1, n2, container, anchor) => { - if (n1 == null) { - hostInsert( - n2.el = hostCreateText(n2.children), - container, - anchor - ); - } else { - const el = n2.el = n1.el; - if (n2.children !== n1.children) { - hostSetText(el, n2.children); - } - } - }; - const processCommentNode = (n1, n2, container, anchor) => { - if (n1 == null) { - hostInsert( - n2.el = hostCreateComment(n2.children || ""), - container, - anchor - ); - } else { - n2.el = n1.el; - } - }; - const mountStaticNode = (n2, container, anchor, namespace) => { - [n2.el, n2.anchor] = hostInsertStaticContent( - n2.children, - container, - anchor, - namespace, - n2.el, - n2.anchor - ); - }; - const moveStaticNode = ({ el, anchor }, container, nextSibling) => { - let next; - while (el && el !== anchor) { - next = hostNextSibling(el); - hostInsert(el, container, nextSibling); - el = next; - } - hostInsert(anchor, container, nextSibling); - }; - const removeStaticNode = ({ el, anchor }) => { - let next; - while (el && el !== anchor) { - next = hostNextSibling(el); - hostRemove(el); - el = next; - } - hostRemove(anchor); - }; - const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { - if (n2.type === "svg") { - namespace = "svg"; - } else if (n2.type === "math") { - namespace = "mathml"; - } - if (n1 == null) { - mountElement( - n2, - container, - anchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized - ); - } else { - patchElement( - n1, - n2, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized - ); - } - }; - const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { - let el; - let vnodeHook; - const { props, shapeFlag, transition, dirs } = vnode; - el = vnode.el = hostCreateElement( - vnode.type, - namespace, - props && props.is, - props - ); - if (shapeFlag & 8) { - hostSetElementText(el, vnode.children); - } else if (shapeFlag & 16) { - mountChildren( - vnode.children, - el, - null, - parentComponent, - parentSuspense, - resolveChildrenNamespace(vnode, namespace), - slotScopeIds, - optimized - ); - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "created"); - } - setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); - if (props) { - for (const key in props) { - if (key !== "value" && !isReservedProp(key)) { - hostPatchProp(el, key, null, props[key], namespace, parentComponent); - } - } - if ("value" in props) { - hostPatchProp(el, "value", null, props.value, namespace); - } - if (vnodeHook = props.onVnodeBeforeMount) { - invokeVNodeHook(vnodeHook, parentComponent, vnode); - } - } - if (dirs) { - invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); - } - const needCallTransitionHooks = needTransition(parentSuspense, transition); - if (needCallTransitionHooks) { - transition.beforeEnter(el); - } - hostInsert(el, container, anchor); - if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); - needCallTransitionHooks && transition.enter(el); - dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); - }, parentSuspense); - } - }; - const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { - if (scopeId) { - hostSetScopeId(el, scopeId); - } - if (slotScopeIds) { - for (let i = 0; i < slotScopeIds.length; i++) { - hostSetScopeId(el, slotScopeIds[i]); - } - } - if (parentComponent) { - let subTree = parentComponent.subTree; - if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) { - const parentVNode = parentComponent.vnode; - setScopeId( - el, - parentVNode, - parentVNode.scopeId, - parentVNode.slotScopeIds, - parentComponent.parent - ); - } - } - }; - const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => { - for (let i = start; i < children.length; i++) { - const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); - patch( - null, - child, - container, - anchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized - ); - } - }; - const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { - const el = n2.el = n1.el; - let { patchFlag, dynamicChildren, dirs } = n2; - patchFlag |= n1.patchFlag & 16; - const oldProps = n1.props || EMPTY_OBJ; - const newProps = n2.props || EMPTY_OBJ; - let vnodeHook; - parentComponent && toggleRecurse(parentComponent, false); - if (vnodeHook = newProps.onVnodeBeforeUpdate) { - invokeVNodeHook(vnodeHook, parentComponent, n2, n1); - } - if (dirs) { - invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); - } - parentComponent && toggleRecurse(parentComponent, true); - if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) { - hostSetElementText(el, ""); - } - if (dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - el, - parentComponent, - parentSuspense, - resolveChildrenNamespace(n2, namespace), - slotScopeIds - ); - } else if (!optimized) { - patchChildren( - n1, - n2, - el, - null, - parentComponent, - parentSuspense, - resolveChildrenNamespace(n2, namespace), - slotScopeIds, - false - ); - } - if (patchFlag > 0) { - if (patchFlag & 16) { - patchProps(el, oldProps, newProps, parentComponent, namespace); - } else { - if (patchFlag & 2) { - if (oldProps.class !== newProps.class) { - hostPatchProp(el, "class", null, newProps.class, namespace); - } - } - if (patchFlag & 4) { - hostPatchProp(el, "style", oldProps.style, newProps.style, namespace); - } - if (patchFlag & 8) { - const propsToUpdate = n2.dynamicProps; - for (let i = 0; i < propsToUpdate.length; i++) { - const key = propsToUpdate[i]; - const prev = oldProps[key]; - const next = newProps[key]; - if (next !== prev || key === "value") { - hostPatchProp(el, key, prev, next, namespace, parentComponent); - } - } - } - } - if (patchFlag & 1) { - if (n1.children !== n2.children) { - hostSetElementText(el, n2.children); - } - } - } else if (!optimized && dynamicChildren == null) { - patchProps(el, oldProps, newProps, parentComponent, namespace); - } - if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { - queuePostRenderEffect(() => { - vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); - dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); - }, parentSuspense); - } - }; - const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => { - for (let i = 0; i < newChildren.length; i++) { - const oldVNode = oldChildren[i]; - const newVNode = newChildren[i]; - const container = ( - // oldVNode may be an errored async setup() component inside Suspense - // which will not have a mounted element - oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent - // of the Fragment itself so it can move its children. - (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement - // which also requires the correct parent container - !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. - oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : ( - // In other cases, the parent container is not actually used so we - // just pass the block element here to avoid a DOM parentNode call. - fallbackContainer - ) - ); - patch( - oldVNode, - newVNode, - container, - null, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - true - ); - } - }; - const patchProps = (el, oldProps, newProps, parentComponent, namespace) => { - if (oldProps !== newProps) { - if (oldProps !== EMPTY_OBJ) { - for (const key in oldProps) { - if (!isReservedProp(key) && !(key in newProps)) { - hostPatchProp( - el, - key, - oldProps[key], - null, - namespace, - parentComponent - ); - } - } - } - for (const key in newProps) { - if (isReservedProp(key)) continue; - const next = newProps[key]; - const prev = oldProps[key]; - if (next !== prev && key !== "value") { - hostPatchProp(el, key, prev, next, namespace, parentComponent); - } - } - if ("value" in newProps) { - hostPatchProp(el, "value", oldProps.value, newProps.value, namespace); - } - } - }; - const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => { - const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); - const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); - let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; - if (fragmentSlotScopeIds) { - slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; - } - if (n1 == null) { - hostInsert(fragmentStartAnchor, container, anchor); - hostInsert(fragmentEndAnchor, container, anchor); - mountChildren( - // #10007 - // such fragment like `<>` will be compiled into - // a fragment which doesn't have a children. - // In this case fallback to an empty array - n2.children || [], - container, - fragmentEndAnchor, - parentComponent, - parentSuspense, - namespace, - slotScopeIds, - optimized - ); - } else { - if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result - // of renderSlot() with no valid children - n1.dynamicChildren) { - patchBlockChildren( - n1.dynamicChildren, - dynamicChildren, - container, - parentComponent, - parentSuspense, - namespace, - slotScopeIds - ); - if ( - // #2080 if the stable fragment has a key, it's a