vite-plugin-vue-devtools 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{IframeView.vue_vue_type_script_setup_true_lang-3a43e6ae.js → IframeView.vue_vue_type_script_setup_true_lang-fad49b28.js} +1 -1
- package/dist/client/assets/{StateFields.vue_vue_type_script_setup_true_lang-f9c67da8.js → StateFields.vue_vue_type_script_setup_true_lang-766dc2da.js} +4 -4
- package/dist/client/assets/{VIcon.vue_vue_type_script_setup_true_lang-b5034521.js → VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js} +1 -1
- package/dist/client/assets/{VIconButton.vue_vue_type_script_setup_true_lang-66a83f1a.js → VIconButton.vue_vue_type_script_setup_true_lang-1dfaade2.js} +3 -14
- package/dist/client/assets/{VIconTitle.vue_vue_type_script_setup_true_lang-276880a3.js → VIconTitle.vue_vue_type_script_setup_true_lang-3891436f.js} +1 -1
- package/dist/client/assets/{VPanelGrids-08531872.js → VPanelGrids-5c36b027.js} +1 -1
- package/dist/client/assets/{VSectionBlock-c9cecc8a.js → VSectionBlock-de05a5a5.js} +3 -3
- package/dist/client/assets/{VTextInput.vue_vue_type_script_setup_true_lang-96ef132c.js → VTextInput.vue_vue_type_script_setup_true_lang-1c3b455d.js} +2 -2
- package/dist/client/assets/{__eyedropper-dbdd9188.js → __eyedropper-8918265a.js} +2 -2
- package/dist/client/assets/{__inspecting-c3942849.js → __inspecting-9ed1189b.js} +2 -2
- package/dist/client/assets/{assets-dc890f94.js → assets-6e057331.js} +8 -9
- package/dist/client/assets/{component-docs-0d4eec65.js → component-docs-52802cb1.js} +5 -6
- package/dist/client/assets/{components-4bbb4d42.js → components-0083a223.js} +7 -8
- package/dist/client/assets/{documentations-0772e28d.js → documentations-1d60f0ff.js} +6 -7
- package/dist/client/assets/{graph-f04f0659.js → graph-97eb4fb0.js} +2 -2
- package/dist/client/assets/{index-f743edb2.js → index-0158f749.js} +1988 -403
- package/dist/client/assets/{index-4ea8507d.js → index-32549096.js} +1 -1
- package/dist/client/assets/index-5b7de771.css +472 -0
- package/dist/client/assets/{inspect-ef16c665.js → inspect-d5e39a6a.js} +3 -3
- package/dist/client/assets/{npm-8aa51398.js → npm-8ea47586.js} +6 -6
- package/dist/client/assets/{overview-d04e0943.js → overview-3bc4fc18.js} +5 -5
- package/dist/client/assets/{pages-c8759169.js → pages-e0bd078d.js} +5 -5
- package/dist/client/assets/{pinia-a1d3abba.js → pinia-0490bdb1.js} +6 -6
- package/dist/client/assets/{routes-b6e1361f.js → routes-b5c90320.js} +7 -8
- package/dist/client/assets/{rpc-901b9577.js → rpc-6610a4d4.js} +3 -3
- package/dist/client/assets/{settings-7dc3a0fa.js → settings-68a6aaae.js} +8 -7
- package/dist/client/assets/{splitpanes.es-cb929c19.js → splitpanes.es-398427c7.js} +1 -1
- package/dist/client/assets/{timeline-01c3c8d8.js → timeline-f8284402.js} +7 -8
- package/dist/client/index.html +2 -2
- package/dist/index.cjs +3 -3
- package/dist/index.mjs +3 -3
- package/package.json +3 -2
- package/src/node/Container.vue +78 -18
- package/dist/client/assets/VCard-8f584a44.js +0 -15
- package/dist/client/assets/index-76a3c684.css +0 -466
|
@@ -735,7 +735,7 @@ function has$1(target, key) {
|
|
|
735
735
|
}
|
|
736
736
|
return result;
|
|
737
737
|
}
|
|
738
|
-
function ownKeys(target) {
|
|
738
|
+
function ownKeys$1(target) {
|
|
739
739
|
track(target, "iterate", isArray$1(target) ? "length" : ITERATE_KEY);
|
|
740
740
|
return Reflect.ownKeys(target);
|
|
741
741
|
}
|
|
@@ -744,7 +744,7 @@ const mutableHandlers = {
|
|
|
744
744
|
set: set$1,
|
|
745
745
|
deleteProperty,
|
|
746
746
|
has: has$1,
|
|
747
|
-
ownKeys
|
|
747
|
+
ownKeys: ownKeys$1
|
|
748
748
|
};
|
|
749
749
|
const readonlyHandlers = {
|
|
750
750
|
get: readonlyGet,
|
|
@@ -8070,25 +8070,25 @@ const computePosition = (reference, floating, options) => computePosition$1(refe
|
|
|
8070
8070
|
|
|
8071
8071
|
/* Injected with object hook! */
|
|
8072
8072
|
|
|
8073
|
-
var __defProp = Object.defineProperty;
|
|
8074
|
-
var __defProps = Object.defineProperties;
|
|
8075
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
8076
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8077
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8078
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8079
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8080
|
-
var __spreadValues = (a, b) => {
|
|
8073
|
+
var __defProp$1 = Object.defineProperty;
|
|
8074
|
+
var __defProps$1 = Object.defineProperties;
|
|
8075
|
+
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
8076
|
+
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
|
8077
|
+
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
8078
|
+
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
|
8079
|
+
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8080
|
+
var __spreadValues$1 = (a, b) => {
|
|
8081
8081
|
for (var prop in b || (b = {}))
|
|
8082
|
-
if (__hasOwnProp.call(b, prop))
|
|
8083
|
-
__defNormalProp(a, prop, b[prop]);
|
|
8084
|
-
if (__getOwnPropSymbols)
|
|
8085
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
8086
|
-
if (__propIsEnum.call(b, prop))
|
|
8087
|
-
__defNormalProp(a, prop, b[prop]);
|
|
8082
|
+
if (__hasOwnProp$1.call(b, prop))
|
|
8083
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
8084
|
+
if (__getOwnPropSymbols$1)
|
|
8085
|
+
for (var prop of __getOwnPropSymbols$1(b)) {
|
|
8086
|
+
if (__propIsEnum$1.call(b, prop))
|
|
8087
|
+
__defNormalProp$1(a, prop, b[prop]);
|
|
8088
8088
|
}
|
|
8089
8089
|
return a;
|
|
8090
8090
|
};
|
|
8091
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
8091
|
+
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
8092
8092
|
function assign$1(to, from) {
|
|
8093
8093
|
for (const key in from) {
|
|
8094
8094
|
if (Object.prototype.hasOwnProperty.call(from, key)) {
|
|
@@ -8489,7 +8489,7 @@ var PrivatePopper = () => defineComponent({
|
|
|
8489
8489
|
hide: this.hide,
|
|
8490
8490
|
handleResize: this.handleResize,
|
|
8491
8491
|
onResize: this.onResize,
|
|
8492
|
-
classes: __spreadProps(__spreadValues({}, this.classes), {
|
|
8492
|
+
classes: __spreadProps$1(__spreadValues$1({}, this.classes), {
|
|
8493
8493
|
popperClass: this.popperClass
|
|
8494
8494
|
}),
|
|
8495
8495
|
result: this.positioningDisabled ? null : this.result,
|
|
@@ -8505,7 +8505,7 @@ var PrivatePopper = () => defineComponent({
|
|
|
8505
8505
|
return ((_a = this.popperTriggers) == null ? void 0 : _a.includes("hover")) || ((_b = this.popperShowTriggers) == null ? void 0 : _b.includes("hover"));
|
|
8506
8506
|
}
|
|
8507
8507
|
},
|
|
8508
|
-
watch: __spreadValues(__spreadValues({
|
|
8508
|
+
watch: __spreadValues$1(__spreadValues$1({
|
|
8509
8509
|
shown: "$_autoShowHide",
|
|
8510
8510
|
disabled(value) {
|
|
8511
8511
|
if (value) {
|
|
@@ -8761,7 +8761,7 @@ var PrivatePopper = () => defineComponent({
|
|
|
8761
8761
|
y: data.y,
|
|
8762
8762
|
placement: data.placement,
|
|
8763
8763
|
strategy: data.strategy,
|
|
8764
|
-
arrow: __spreadValues(__spreadValues({}, data.middlewareData.arrow), data.middlewareData.arrowOverflow)
|
|
8764
|
+
arrow: __spreadValues$1(__spreadValues$1({}, data.middlewareData.arrow), data.middlewareData.arrowOverflow)
|
|
8765
8765
|
});
|
|
8766
8766
|
},
|
|
8767
8767
|
$_scheduleShow(event = null, skipDelay = false) {
|
|
@@ -9349,11 +9349,11 @@ const _hoisted_2$1$1 = {
|
|
|
9349
9349
|
ref: "inner",
|
|
9350
9350
|
class: "v-popper__inner"
|
|
9351
9351
|
};
|
|
9352
|
-
const _hoisted_3$
|
|
9353
|
-
const _hoisted_4$
|
|
9354
|
-
const _hoisted_5$
|
|
9355
|
-
_hoisted_3$
|
|
9356
|
-
_hoisted_4$
|
|
9352
|
+
const _hoisted_3$4 = /* @__PURE__ */ createBaseVNode("div", { class: "v-popper__arrow-outer" }, null, -1);
|
|
9353
|
+
const _hoisted_4$5 = /* @__PURE__ */ createBaseVNode("div", { class: "v-popper__arrow-inner" }, null, -1);
|
|
9354
|
+
const _hoisted_5$4 = [
|
|
9355
|
+
_hoisted_3$4,
|
|
9356
|
+
_hoisted_4$5
|
|
9357
9357
|
];
|
|
9358
9358
|
function _sfc_render$2$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
9359
9359
|
const _component_ResizeObserver = resolveComponent("ResizeObserver");
|
|
@@ -9412,7 +9412,7 @@ function _sfc_render$2$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
9412
9412
|
left: _ctx.toPx(_ctx.result.arrow.x),
|
|
9413
9413
|
top: _ctx.toPx(_ctx.result.arrow.y)
|
|
9414
9414
|
} : void 0)
|
|
9415
|
-
}, _hoisted_5$
|
|
9415
|
+
}, _hoisted_5$4, 4)
|
|
9416
9416
|
], 4)
|
|
9417
9417
|
], 46, _hoisted_1$1$1);
|
|
9418
9418
|
}
|
|
@@ -9518,19 +9518,19 @@ function _sfc_render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
9518
9518
|
}, 8, ["theme", "target-nodes", "popper-node", "class"]);
|
|
9519
9519
|
}
|
|
9520
9520
|
var PrivatePopperWrapper = /* @__PURE__ */ _export_sfc$1(_sfc_main$4$1, [["render", _sfc_render$1$1]]);
|
|
9521
|
-
const _sfc_main$3$1 = defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
|
|
9521
|
+
const _sfc_main$3$1 = defineComponent(__spreadProps$1(__spreadValues$1({}, PrivatePopperWrapper), {
|
|
9522
9522
|
name: "VDropdown",
|
|
9523
9523
|
vPopperTheme: "dropdown"
|
|
9524
9524
|
}));
|
|
9525
|
-
const _sfc_main$2$1 = defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
|
|
9525
|
+
const _sfc_main$2$1 = defineComponent(__spreadProps$1(__spreadValues$1({}, PrivatePopperWrapper), {
|
|
9526
9526
|
name: "VMenu",
|
|
9527
9527
|
vPopperTheme: "menu"
|
|
9528
9528
|
}));
|
|
9529
|
-
const _sfc_main$1$1 = defineComponent(__spreadProps(__spreadValues({}, PrivatePopperWrapper), {
|
|
9529
|
+
const _sfc_main$1$1 = defineComponent(__spreadProps$1(__spreadValues$1({}, PrivatePopperWrapper), {
|
|
9530
9530
|
name: "VTooltip",
|
|
9531
9531
|
vPopperTheme: "tooltip"
|
|
9532
9532
|
}));
|
|
9533
|
-
const _sfc_main$
|
|
9533
|
+
const _sfc_main$e = defineComponent({
|
|
9534
9534
|
name: "VTooltipDirective",
|
|
9535
9535
|
components: {
|
|
9536
9536
|
Popper: PrivatePopper(),
|
|
@@ -9621,7 +9621,7 @@ const _sfc_main$c = defineComponent({
|
|
|
9621
9621
|
}
|
|
9622
9622
|
}
|
|
9623
9623
|
});
|
|
9624
|
-
const _hoisted_1$
|
|
9624
|
+
const _hoisted_1$9 = ["innerHTML"];
|
|
9625
9625
|
const _hoisted_2$7 = ["textContent"];
|
|
9626
9626
|
function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
9627
9627
|
const _component_PopperContent = resolveComponent("PopperContent");
|
|
@@ -9665,7 +9665,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
9665
9665
|
_ctx.html ? (openBlock(), createElementBlock("div", {
|
|
9666
9666
|
key: 0,
|
|
9667
9667
|
innerHTML: _ctx.finalContent
|
|
9668
|
-
}, null, 8, _hoisted_1$
|
|
9668
|
+
}, null, 8, _hoisted_1$9)) : (openBlock(), createElementBlock("div", {
|
|
9669
9669
|
key: 1,
|
|
9670
9670
|
textContent: toDisplayString(_ctx.finalContent)
|
|
9671
9671
|
}, null, 8, _hoisted_2$7))
|
|
@@ -9676,7 +9676,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
9676
9676
|
_: 1
|
|
9677
9677
|
}, 16, ["theme", "popper-node", "onApplyShow", "onApplyHide"]);
|
|
9678
9678
|
}
|
|
9679
|
-
var PrivateTooltipDirective = /* @__PURE__ */ _export_sfc$1(_sfc_main$
|
|
9679
|
+
var PrivateTooltipDirective = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["render", _sfc_render$4]]);
|
|
9680
9680
|
const TARGET_CLASS = "v-popper--has-tooltip";
|
|
9681
9681
|
function getPlacement(options2, modifiers) {
|
|
9682
9682
|
let result = options2.placement;
|
|
@@ -9723,7 +9723,7 @@ function ensureDirectiveApp() {
|
|
|
9723
9723
|
},
|
|
9724
9724
|
render() {
|
|
9725
9725
|
return this.directives.map((directive) => {
|
|
9726
|
-
return h(PrivateTooltipDirective, __spreadProps(__spreadValues({}, directive.options), {
|
|
9726
|
+
return h(PrivateTooltipDirective, __spreadProps$1(__spreadValues$1({}, directive.options), {
|
|
9727
9727
|
shown: directive.shown || directive.options.shown,
|
|
9728
9728
|
key: directive.id
|
|
9729
9729
|
}));
|
|
@@ -12329,7 +12329,7 @@ function useRoute() {
|
|
|
12329
12329
|
|
|
12330
12330
|
/* Injected with object hook! */
|
|
12331
12331
|
|
|
12332
|
-
const scriptRel = 'modulepreload';const assetsURL = function(dep
|
|
12332
|
+
const scriptRel = 'modulepreload';const assetsURL = function(dep) { return "/__devtools__/"+dep };const seen = {};const __vitePreload = function preload(baseModule, deps, importerUrl) {
|
|
12333
12333
|
// @ts-expect-error true will be replaced with boolean later
|
|
12334
12334
|
if (!true || !deps || deps.length === 0) {
|
|
12335
12335
|
return baseModule();
|
|
@@ -12337,7 +12337,7 @@ const scriptRel = 'modulepreload';const assetsURL = function(dep, importerUrl) {
|
|
|
12337
12337
|
const links = document.getElementsByTagName('link');
|
|
12338
12338
|
return Promise.all(deps.map((dep) => {
|
|
12339
12339
|
// @ts-expect-error assetsURL is declared before preload.toString()
|
|
12340
|
-
dep = assetsURL(dep
|
|
12340
|
+
dep = assetsURL(dep);
|
|
12341
12341
|
if (dep in seen)
|
|
12342
12342
|
return;
|
|
12343
12343
|
seen[dep] = true;
|
|
@@ -12378,7 +12378,7 @@ const scriptRel = 'modulepreload';const assetsURL = function(dep, importerUrl) {
|
|
|
12378
12378
|
};
|
|
12379
12379
|
/* Injected with object hook! */
|
|
12380
12380
|
|
|
12381
|
-
const _sfc_main$
|
|
12381
|
+
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
12382
12382
|
__name: "VButton",
|
|
12383
12383
|
props: {
|
|
12384
12384
|
to: {},
|
|
@@ -12414,37 +12414,37 @@ const _export_sfc = (sfc, props) => {
|
|
|
12414
12414
|
|
|
12415
12415
|
/* Injected with object hook! */
|
|
12416
12416
|
|
|
12417
|
-
/* unplugin-vue-components disabled */const _sfc_main$
|
|
12417
|
+
/* unplugin-vue-components disabled */const _sfc_main$c = {};
|
|
12418
12418
|
|
|
12419
|
-
const _hoisted_1$
|
|
12419
|
+
const _hoisted_1$8 = { class: "mx-0.5 select-none whitespace-nowrap rounded px-1.5 py-0.5 text-xs" };
|
|
12420
12420
|
|
|
12421
12421
|
function _sfc_render$2(_ctx, _cache) {
|
|
12422
|
-
return (openBlock(), createElementBlock("span", _hoisted_1$
|
|
12422
|
+
return (openBlock(), createElementBlock("span", _hoisted_1$8, [
|
|
12423
12423
|
renderSlot(_ctx.$slots, "default")
|
|
12424
12424
|
]))
|
|
12425
12425
|
}
|
|
12426
|
-
const __unplugin_components_1 = /*#__PURE__*/_export_sfc(_sfc_main$
|
|
12426
|
+
const __unplugin_components_1 = /*#__PURE__*/_export_sfc(_sfc_main$c, [['render',_sfc_render$2]]);
|
|
12427
12427
|
/* Injected with object hook! */
|
|
12428
12428
|
|
|
12429
|
-
/* unplugin-vue-components disabled */const _sfc_main$
|
|
12429
|
+
/* unplugin-vue-components disabled */const _sfc_main$b = {};
|
|
12430
12430
|
|
|
12431
|
-
const _hoisted_1$
|
|
12431
|
+
const _hoisted_1$7 = {
|
|
12432
12432
|
viewBox: "0 0 566 154",
|
|
12433
12433
|
fill: "none",
|
|
12434
12434
|
xmlns: "http://www.w3.org/2000/svg"
|
|
12435
12435
|
};
|
|
12436
12436
|
const _hoisted_2$6 = /*#__PURE__*/createStaticVNode("<svg fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 198\" width=\"128\" height=\"128\"><path fill=\"#41B883\" d=\"M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z\"></path><path fill=\"#41B883\" d=\"m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z\"></path><path fill=\"#35495E\" d=\"M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z\"></path></svg><path d=\"M152.571 118V46.1333H176.8C183.576 46.1333 189.77 47.468 195.383 50.1373C200.995 52.8067 205.478 56.8449 208.832 62.252C212.186 67.5907 213.863 74.1956 213.863 82.0667C213.863 89.8693 212.186 96.4742 208.832 101.881C205.478 107.288 200.995 111.327 195.383 113.996C189.77 116.665 183.576 118 176.8 118H152.571ZM175.157 104.653C181.796 104.653 187.306 102.874 191.687 99.3147C196.067 95.6871 198.257 89.9378 198.257 82.0667C198.257 74.1956 196.067 68.4462 191.687 64.8187C187.306 61.1911 181.796 59.3773 175.157 59.3773H167.971V104.653H175.157ZM270.18 100.444C269.153 105.988 266.381 110.437 261.864 113.791C257.347 117.144 251.905 118.821 245.54 118.821C239.928 118.821 235.102 117.555 231.064 115.023C227.094 112.422 224.083 109.068 222.029 104.961C219.976 100.855 218.949 96.5427 218.949 92.0253C218.949 87.4396 219.873 83.1276 221.721 79.0893C223.638 75.0511 226.513 71.7658 230.345 69.2333C234.247 66.7009 238.969 65.4347 244.513 65.4347C250.263 65.4347 255.054 66.6667 258.887 69.1307C262.72 71.5947 265.526 74.7431 267.305 78.576C269.153 82.4089 270.077 86.4471 270.077 90.6907C270.077 92.2649 270.009 93.8049 269.872 95.3107H232.707C233.254 99.0067 234.623 101.916 236.813 104.037C239.072 106.091 241.981 107.117 245.54 107.117C248.415 107.117 250.776 106.57 252.624 105.475C254.472 104.311 255.67 102.634 256.217 100.444H270.18ZM244.513 75.9067C241.228 75.9067 238.627 76.7622 236.711 78.4733C234.794 80.116 233.528 82.7169 232.912 86.276H255.807C255.601 83.2644 254.506 80.8004 252.521 78.884C250.537 76.8991 247.867 75.9067 244.513 75.9067ZM302.77 118H289.629L270.738 66.256H285.317L296.2 99.7253L306.98 66.256H321.661L302.77 118ZM359.731 118H344.331V59.3773H323.079V46.1333H380.983V59.3773H359.731V118ZM402.364 118.821C397.163 118.821 392.474 117.692 388.299 115.433C384.124 113.106 380.873 109.924 378.546 105.885C376.219 101.779 375.055 97.1929 375.055 92.128C375.055 87.0631 376.219 82.5116 378.546 78.4733C380.873 74.3667 384.124 71.184 388.299 68.9253C392.474 66.5982 397.163 65.4347 402.364 65.4347C407.566 65.4347 412.255 66.5982 416.43 68.9253C420.605 71.184 423.856 74.3667 426.183 78.4733C428.51 82.5116 429.674 87.0631 429.674 92.128C429.674 97.1929 428.51 101.779 426.183 105.885C423.856 109.924 420.605 113.106 416.43 115.433C412.255 117.692 407.566 118.821 402.364 118.821ZM402.364 106.501C406.197 106.501 409.311 105.167 411.707 102.497C414.103 99.828 415.3 96.3716 415.3 92.128C415.3 87.816 414.103 84.3253 411.707 81.656C409.311 78.9867 406.197 77.652 402.364 77.652C398.531 77.652 395.417 78.9867 393.022 81.656C390.626 84.3253 389.428 87.816 389.428 92.128C389.428 96.3716 390.626 99.828 393.022 102.497C395.417 105.167 398.531 106.501 402.364 106.501ZM462.12 118.821C456.918 118.821 452.229 117.692 448.054 115.433C443.879 113.106 440.628 109.924 438.301 105.885C435.974 101.779 434.81 97.1929 434.81 92.128C434.81 87.0631 435.974 82.5116 438.301 78.4733C440.628 74.3667 443.879 71.184 448.054 68.9253C452.229 66.5982 456.918 65.4347 462.12 65.4347C467.321 65.4347 472.01 66.5982 476.185 68.9253C480.36 71.184 483.611 74.3667 485.938 78.4733C488.265 82.5116 489.429 87.0631 489.429 92.128C489.429 97.1929 488.265 101.779 485.938 105.885C483.611 109.924 480.36 113.106 476.185 115.433C472.01 117.692 467.321 118.821 462.12 118.821ZM462.12 106.501C465.952 106.501 469.067 105.167 471.462 102.497C473.858 99.828 475.056 96.3716 475.056 92.128C475.056 87.816 473.858 84.3253 471.462 81.656C469.067 78.9867 465.952 77.652 462.12 77.652C458.287 77.652 455.172 78.9867 452.777 81.656C450.381 84.3253 449.184 87.816 449.184 92.128C449.184 96.3716 450.381 99.828 452.777 102.497C455.172 105.167 458.287 106.501 462.12 106.501ZM512.327 118H498.056V43.772H512.327V118ZM542.494 118.821C536.129 118.821 530.961 117.179 526.991 113.893C523.09 110.54 521.002 106.091 520.729 100.547H533.049C533.322 102.874 534.281 104.722 535.923 106.091C537.634 107.391 539.825 108.041 542.494 108.041C544.684 108.041 546.464 107.562 547.833 106.604C549.27 105.646 549.989 104.448 549.989 103.011C549.989 101.094 549.167 99.7596 547.525 99.0067C545.882 98.2538 543.281 97.5693 539.722 96.9533C536.026 96.2689 533.014 95.516 530.687 94.6947C528.36 93.8733 526.341 92.4018 524.63 90.28C522.987 88.0898 522.166 85.0098 522.166 81.04C522.166 78.0284 522.953 75.3591 524.527 73.032C526.17 70.6364 528.394 68.7884 531.201 67.488C534.007 66.1191 537.155 65.4347 540.646 65.4347C546.874 65.4347 551.905 66.9747 555.738 70.0547C559.639 73.1347 561.727 77.2071 562.001 82.272H549.578C549.304 80.1502 548.312 78.5076 546.601 77.344C544.958 76.112 543.11 75.496 541.057 75.496C539.003 75.496 537.361 75.9409 536.129 76.8307C534.897 77.7204 534.281 78.9524 534.281 80.5267C534.281 82.4431 535.068 83.7436 536.642 84.428C538.285 85.044 540.851 85.5916 544.342 86.0707C548.106 86.6182 551.186 87.3027 553.582 88.124C556.046 88.8769 558.168 90.3827 559.947 92.6413C561.727 94.9 562.617 98.1853 562.617 102.497C562.617 107.425 560.769 111.395 557.073 114.407C553.445 117.35 548.585 118.821 542.494 118.821Z\" fill=\"currentColor\"></path>", 2);
|
|
12437
|
-
const _hoisted_4$
|
|
12437
|
+
const _hoisted_4$4 = [
|
|
12438
12438
|
_hoisted_2$6
|
|
12439
12439
|
];
|
|
12440
12440
|
|
|
12441
12441
|
function _sfc_render$1(_ctx, _cache) {
|
|
12442
|
-
return (openBlock(), createElementBlock("svg", _hoisted_1$
|
|
12442
|
+
return (openBlock(), createElementBlock("svg", _hoisted_1$7, _hoisted_4$4))
|
|
12443
12443
|
}
|
|
12444
|
-
const __unplugin_components_0
|
|
12444
|
+
const __unplugin_components_0 = /*#__PURE__*/_export_sfc(_sfc_main$b, [['render',_sfc_render$1]]);
|
|
12445
12445
|
/* Injected with object hook! */
|
|
12446
12446
|
|
|
12447
|
-
function tryOnScopeDispose(fn) {
|
|
12447
|
+
function tryOnScopeDispose$1(fn) {
|
|
12448
12448
|
if (getCurrentScope()) {
|
|
12449
12449
|
onScopeDispose(fn);
|
|
12450
12450
|
return true;
|
|
@@ -12452,7 +12452,7 @@ function tryOnScopeDispose(fn) {
|
|
|
12452
12452
|
return false;
|
|
12453
12453
|
}
|
|
12454
12454
|
|
|
12455
|
-
function toValue(r) {
|
|
12455
|
+
function toValue$1(r) {
|
|
12456
12456
|
return typeof r === "function" ? r() : unref(r);
|
|
12457
12457
|
}
|
|
12458
12458
|
|
|
@@ -12497,7 +12497,7 @@ function reactiveOmit(obj, ...keys) {
|
|
|
12497
12497
|
const flatKeys = keys.flat();
|
|
12498
12498
|
const predicate = flatKeys[0];
|
|
12499
12499
|
return reactiveComputed(
|
|
12500
|
-
() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0])))
|
|
12500
|
+
() => typeof predicate === "function" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue$1(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0])))
|
|
12501
12501
|
);
|
|
12502
12502
|
}
|
|
12503
12503
|
|
|
@@ -12532,8 +12532,8 @@ function debounceFilter(ms, options = {}) {
|
|
|
12532
12532
|
lastRejector = noop;
|
|
12533
12533
|
};
|
|
12534
12534
|
const filter = (invoke) => {
|
|
12535
|
-
const duration = toValue(ms);
|
|
12536
|
-
const maxDuration = toValue(options.maxWait);
|
|
12535
|
+
const duration = toValue$1(ms);
|
|
12536
|
+
const maxDuration = toValue$1(options.maxWait);
|
|
12537
12537
|
if (timer)
|
|
12538
12538
|
_clearTimeout(timer);
|
|
12539
12539
|
if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {
|
|
@@ -12578,7 +12578,7 @@ function throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = fa
|
|
|
12578
12578
|
}
|
|
12579
12579
|
};
|
|
12580
12580
|
const filter = (_invoke) => {
|
|
12581
|
-
const duration = toValue(ms);
|
|
12581
|
+
const duration = toValue$1(ms);
|
|
12582
12582
|
const elapsed = Date.now() - lastExec;
|
|
12583
12583
|
const invoke = () => {
|
|
12584
12584
|
return lastValue = _invoke();
|
|
@@ -12716,7 +12716,7 @@ function useIntervalFn(cb, interval = 1e3, options = {}) {
|
|
|
12716
12716
|
clean();
|
|
12717
12717
|
}
|
|
12718
12718
|
function resume() {
|
|
12719
|
-
const intervalValue = toValue(interval);
|
|
12719
|
+
const intervalValue = toValue$1(interval);
|
|
12720
12720
|
if (intervalValue <= 0)
|
|
12721
12721
|
return;
|
|
12722
12722
|
isActive.value = true;
|
|
@@ -12732,9 +12732,9 @@ function useIntervalFn(cb, interval = 1e3, options = {}) {
|
|
|
12732
12732
|
if (isActive.value && isClient)
|
|
12733
12733
|
resume();
|
|
12734
12734
|
});
|
|
12735
|
-
tryOnScopeDispose(stopWatch);
|
|
12735
|
+
tryOnScopeDispose$1(stopWatch);
|
|
12736
12736
|
}
|
|
12737
|
-
tryOnScopeDispose(pause);
|
|
12737
|
+
tryOnScopeDispose$1(pause);
|
|
12738
12738
|
return {
|
|
12739
12739
|
isActive,
|
|
12740
12740
|
pause,
|
|
@@ -12765,14 +12765,14 @@ function useTimeoutFn(cb, interval, options = {}) {
|
|
|
12765
12765
|
isPending.value = false;
|
|
12766
12766
|
timer = null;
|
|
12767
12767
|
cb(...args);
|
|
12768
|
-
}, toValue(interval));
|
|
12768
|
+
}, toValue$1(interval));
|
|
12769
12769
|
}
|
|
12770
12770
|
if (immediate) {
|
|
12771
12771
|
isPending.value = true;
|
|
12772
12772
|
if (isClient)
|
|
12773
12773
|
start();
|
|
12774
12774
|
}
|
|
12775
|
-
tryOnScopeDispose(stop);
|
|
12775
|
+
tryOnScopeDispose$1(stop);
|
|
12776
12776
|
return {
|
|
12777
12777
|
isPending: readonly(isPending),
|
|
12778
12778
|
start,
|
|
@@ -12830,7 +12830,7 @@ var __spreadValues$2$1 = (a, b) => {
|
|
|
12830
12830
|
return a;
|
|
12831
12831
|
};
|
|
12832
12832
|
var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b));
|
|
12833
|
-
var __objRest$1 = (source, exclude) => {
|
|
12833
|
+
var __objRest$1$1 = (source, exclude) => {
|
|
12834
12834
|
var target = {};
|
|
12835
12835
|
for (var prop in source)
|
|
12836
12836
|
if (__hasOwnProp$2$1.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
@@ -12845,7 +12845,7 @@ var __objRest$1 = (source, exclude) => {
|
|
|
12845
12845
|
function watchPausable(source, cb, options = {}) {
|
|
12846
12846
|
const _a = options, {
|
|
12847
12847
|
eventFilter: filter
|
|
12848
|
-
} = _a, watchOptions = __objRest$1(_a, [
|
|
12848
|
+
} = _a, watchOptions = __objRest$1$1(_a, [
|
|
12849
12849
|
"eventFilter"
|
|
12850
12850
|
]);
|
|
12851
12851
|
const { eventFilter, pause, resume, isActive } = pausableFilter(filter);
|
|
@@ -12919,9 +12919,9 @@ function computedAsync(evaluationCallback, initialState, optionsOrRef) {
|
|
|
12919
12919
|
}
|
|
12920
12920
|
}
|
|
12921
12921
|
|
|
12922
|
-
function unrefElement(elRef) {
|
|
12922
|
+
function unrefElement$1(elRef) {
|
|
12923
12923
|
var _a;
|
|
12924
|
-
const plain = toValue(elRef);
|
|
12924
|
+
const plain = toValue$1(elRef);
|
|
12925
12925
|
return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
|
|
12926
12926
|
}
|
|
12927
12927
|
|
|
@@ -12956,7 +12956,7 @@ function useEventListener(...args) {
|
|
|
12956
12956
|
return () => el.removeEventListener(event, listener, options2);
|
|
12957
12957
|
};
|
|
12958
12958
|
const stopWatch = watch(
|
|
12959
|
-
() => [unrefElement(target), toValue(options)],
|
|
12959
|
+
() => [unrefElement$1(target), toValue$1(options)],
|
|
12960
12960
|
([el, options2]) => {
|
|
12961
12961
|
cleanup();
|
|
12962
12962
|
if (!el)
|
|
@@ -12973,7 +12973,7 @@ function useEventListener(...args) {
|
|
|
12973
12973
|
stopWatch();
|
|
12974
12974
|
cleanup();
|
|
12975
12975
|
};
|
|
12976
|
-
tryOnScopeDispose(stop);
|
|
12976
|
+
tryOnScopeDispose$1(stop);
|
|
12977
12977
|
return stop;
|
|
12978
12978
|
}
|
|
12979
12979
|
|
|
@@ -12992,13 +12992,13 @@ function onClickOutside(target, handler, options = {}) {
|
|
|
12992
12992
|
if (typeof target2 === "string") {
|
|
12993
12993
|
return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el));
|
|
12994
12994
|
} else {
|
|
12995
|
-
const el = unrefElement(target2);
|
|
12995
|
+
const el = unrefElement$1(target2);
|
|
12996
12996
|
return el && (event.target === el || event.composedPath().includes(el));
|
|
12997
12997
|
}
|
|
12998
12998
|
});
|
|
12999
12999
|
};
|
|
13000
13000
|
const listener = (event) => {
|
|
13001
|
-
const el = unrefElement(target);
|
|
13001
|
+
const el = unrefElement$1(target);
|
|
13002
13002
|
if (!el || el === event.target || event.composedPath().includes(el))
|
|
13003
13003
|
return;
|
|
13004
13004
|
if (event.detail === 0)
|
|
@@ -13012,13 +13012,13 @@ function onClickOutside(target, handler, options = {}) {
|
|
|
13012
13012
|
const cleanup = [
|
|
13013
13013
|
useEventListener(window, "click", listener, { passive: true, capture }),
|
|
13014
13014
|
useEventListener(window, "pointerdown", (e) => {
|
|
13015
|
-
const el = unrefElement(target);
|
|
13015
|
+
const el = unrefElement$1(target);
|
|
13016
13016
|
if (el)
|
|
13017
13017
|
shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);
|
|
13018
13018
|
}, { passive: true }),
|
|
13019
13019
|
detectIframe && useEventListener(window, "blur", (event) => {
|
|
13020
13020
|
var _a;
|
|
13021
|
-
const el = unrefElement(target);
|
|
13021
|
+
const el = unrefElement$1(target);
|
|
13022
13022
|
if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window.document.activeElement)))
|
|
13023
13023
|
handler(event);
|
|
13024
13024
|
})
|
|
@@ -13084,7 +13084,7 @@ function onKeyStroke(...args) {
|
|
|
13084
13084
|
} = options;
|
|
13085
13085
|
const predicate = createKeyPredicate(key);
|
|
13086
13086
|
const listener = (e) => {
|
|
13087
|
-
if (e.repeat && toValue(dedupe))
|
|
13087
|
+
if (e.repeat && toValue$1(dedupe))
|
|
13088
13088
|
return;
|
|
13089
13089
|
if (predicate(e))
|
|
13090
13090
|
handler(e);
|
|
@@ -13144,7 +13144,7 @@ function useRafFn(fn, options = {}) {
|
|
|
13144
13144
|
}
|
|
13145
13145
|
if (immediate)
|
|
13146
13146
|
resume();
|
|
13147
|
-
tryOnScopeDispose(pause);
|
|
13147
|
+
tryOnScopeDispose$1(pause);
|
|
13148
13148
|
return {
|
|
13149
13149
|
isActive: readonly(isActive),
|
|
13150
13150
|
pause,
|
|
@@ -13179,7 +13179,7 @@ function useMediaQuery(query, options = {}) {
|
|
|
13179
13179
|
mediaQuery.addListener(update);
|
|
13180
13180
|
};
|
|
13181
13181
|
watchEffect(update);
|
|
13182
|
-
tryOnScopeDispose(() => cleanup());
|
|
13182
|
+
tryOnScopeDispose$1(() => cleanup());
|
|
13183
13183
|
return matches;
|
|
13184
13184
|
}
|
|
13185
13185
|
|
|
@@ -13210,7 +13210,7 @@ function useClipboard(options = {}) {
|
|
|
13210
13210
|
for (const event of events)
|
|
13211
13211
|
useEventListener(event, updateText);
|
|
13212
13212
|
}
|
|
13213
|
-
async function copy(value = toValue(source)) {
|
|
13213
|
+
async function copy(value = toValue$1(source)) {
|
|
13214
13214
|
if (isSupported.value && value != null) {
|
|
13215
13215
|
if (isClipboardApiSupported.value)
|
|
13216
13216
|
await navigator.clipboard.writeText(value);
|
|
@@ -13341,7 +13341,7 @@ function useStorage(key, defaults, storage, options = {}) {
|
|
|
13341
13341
|
}
|
|
13342
13342
|
if (!storage)
|
|
13343
13343
|
return data;
|
|
13344
|
-
const rawInit = toValue(defaults);
|
|
13344
|
+
const rawInit = toValue$1(defaults);
|
|
13345
13345
|
const type = guessSerializerType(rawInit);
|
|
13346
13346
|
const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type];
|
|
13347
13347
|
const { pause: pauseWatch, resume: resumeWatch } = watchPausable(
|
|
@@ -13472,7 +13472,7 @@ function useColorMode(options = {}) {
|
|
|
13472
13472
|
const updateHTMLAttrs = getSSRHandler(
|
|
13473
13473
|
"updateHTMLAttrs",
|
|
13474
13474
|
(selector2, attribute2, value) => {
|
|
13475
|
-
const el = typeof selector2 === "string" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement(selector2);
|
|
13475
|
+
const el = typeof selector2 === "string" ? window == null ? void 0 : window.document.querySelector(selector2) : unrefElement$1(selector2);
|
|
13476
13476
|
if (!el)
|
|
13477
13477
|
return;
|
|
13478
13478
|
let style;
|
|
@@ -13603,7 +13603,7 @@ function useResizeObserver(target, callback, options = {}) {
|
|
|
13603
13603
|
}
|
|
13604
13604
|
};
|
|
13605
13605
|
const targets = computed(
|
|
13606
|
-
() => Array.isArray(target) ? target.map((el) => unrefElement(el)) : [unrefElement(target)]
|
|
13606
|
+
() => Array.isArray(target) ? target.map((el) => unrefElement$1(el)) : [unrefElement$1(target)]
|
|
13607
13607
|
);
|
|
13608
13608
|
const stopWatch = watch(
|
|
13609
13609
|
targets,
|
|
@@ -13621,7 +13621,7 @@ function useResizeObserver(target, callback, options = {}) {
|
|
|
13621
13621
|
cleanup();
|
|
13622
13622
|
stopWatch();
|
|
13623
13623
|
};
|
|
13624
|
-
tryOnScopeDispose(stop);
|
|
13624
|
+
tryOnScopeDispose$1(stop);
|
|
13625
13625
|
return {
|
|
13626
13626
|
isSupported,
|
|
13627
13627
|
stop
|
|
@@ -13644,7 +13644,7 @@ function useElementBounding(target, options = {}) {
|
|
|
13644
13644
|
const x = ref(0);
|
|
13645
13645
|
const y = ref(0);
|
|
13646
13646
|
function update() {
|
|
13647
|
-
const el = unrefElement(target);
|
|
13647
|
+
const el = unrefElement$1(target);
|
|
13648
13648
|
if (!el) {
|
|
13649
13649
|
if (reset) {
|
|
13650
13650
|
height.value = 0;
|
|
@@ -13669,7 +13669,7 @@ function useElementBounding(target, options = {}) {
|
|
|
13669
13669
|
y.value = rect.y;
|
|
13670
13670
|
}
|
|
13671
13671
|
useResizeObserver(target, update);
|
|
13672
|
-
watch(() => unrefElement(target), (ele) => !ele && update());
|
|
13672
|
+
watch(() => unrefElement$1(target), (ele) => !ele && update());
|
|
13673
13673
|
if (windowScroll)
|
|
13674
13674
|
useEventListener("scroll", update, { capture: true, passive: true });
|
|
13675
13675
|
if (windowResize)
|
|
@@ -13695,7 +13695,7 @@ function useElementSize(target, initialSize = { width: 0, height: 0 }, options =
|
|
|
13695
13695
|
const { window = defaultWindow, box = "content-box" } = options;
|
|
13696
13696
|
const isSVG = computed(() => {
|
|
13697
13697
|
var _a, _b;
|
|
13698
|
-
return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg");
|
|
13698
|
+
return (_b = (_a = unrefElement$1(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg");
|
|
13699
13699
|
});
|
|
13700
13700
|
const width = ref(initialSize.width);
|
|
13701
13701
|
const height = ref(initialSize.height);
|
|
@@ -13704,7 +13704,7 @@ function useElementSize(target, initialSize = { width: 0, height: 0 }, options =
|
|
|
13704
13704
|
([entry]) => {
|
|
13705
13705
|
const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;
|
|
13706
13706
|
if (window && isSVG.value) {
|
|
13707
|
-
const $elem = unrefElement(target);
|
|
13707
|
+
const $elem = unrefElement$1(target);
|
|
13708
13708
|
if ($elem) {
|
|
13709
13709
|
const styles = window.getComputedStyle($elem);
|
|
13710
13710
|
width.value = parseFloat(styles.width);
|
|
@@ -13724,7 +13724,7 @@ function useElementSize(target, initialSize = { width: 0, height: 0 }, options =
|
|
|
13724
13724
|
options
|
|
13725
13725
|
);
|
|
13726
13726
|
watch(
|
|
13727
|
-
() => unrefElement(target),
|
|
13727
|
+
() => unrefElement$1(target),
|
|
13728
13728
|
(ele) => {
|
|
13729
13729
|
width.value = ele ? initialSize.width : 0;
|
|
13730
13730
|
height.value = ele ? initialSize.height : 0;
|
|
@@ -13775,13 +13775,13 @@ function useScroll(element, options = {}) {
|
|
|
13775
13775
|
});
|
|
13776
13776
|
function scrollTo(_x, _y) {
|
|
13777
13777
|
var _a, _b, _c;
|
|
13778
|
-
const _element = toValue(element);
|
|
13778
|
+
const _element = toValue$1(element);
|
|
13779
13779
|
if (!_element)
|
|
13780
13780
|
return;
|
|
13781
13781
|
(_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({
|
|
13782
|
-
top: (_a = toValue(_y)) != null ? _a : y.value,
|
|
13783
|
-
left: (_b = toValue(_x)) != null ? _b : x.value,
|
|
13784
|
-
behavior: toValue(behavior)
|
|
13782
|
+
top: (_a = toValue$1(_y)) != null ? _a : y.value,
|
|
13783
|
+
left: (_b = toValue$1(_x)) != null ? _b : x.value,
|
|
13784
|
+
behavior: toValue$1(behavior)
|
|
13785
13785
|
});
|
|
13786
13786
|
}
|
|
13787
13787
|
const isScrolling = ref(false);
|
|
@@ -13866,7 +13866,7 @@ function useScroll(element, options = {}) {
|
|
|
13866
13866
|
arrivedState,
|
|
13867
13867
|
directions,
|
|
13868
13868
|
measure() {
|
|
13869
|
-
const _element = toValue(element);
|
|
13869
|
+
const _element = toValue$1(element);
|
|
13870
13870
|
if (_element)
|
|
13871
13871
|
setArrivedState(_element);
|
|
13872
13872
|
}
|
|
@@ -13910,7 +13910,7 @@ function useInfiniteScroll(element, onLoadMore, options = {}) {
|
|
|
13910
13910
|
const isLoading = computed(() => !!promise.value);
|
|
13911
13911
|
function checkAndLoad() {
|
|
13912
13912
|
state.measure();
|
|
13913
|
-
const el = toValue(element);
|
|
13913
|
+
const el = toValue$1(element);
|
|
13914
13914
|
if (!el)
|
|
13915
13915
|
return;
|
|
13916
13916
|
const isNarrower = direction === "bottom" || direction === "top" ? el.scrollHeight <= el.clientHeight : el.scrollWidth <= el.clientWidth;
|
|
@@ -13927,7 +13927,7 @@ function useInfiniteScroll(element, onLoadMore, options = {}) {
|
|
|
13927
13927
|
}
|
|
13928
13928
|
}
|
|
13929
13929
|
watch(
|
|
13930
|
-
() => [state.arrivedState[direction], toValue(element)],
|
|
13930
|
+
() => [state.arrivedState[direction], toValue$1(element)],
|
|
13931
13931
|
checkAndLoad,
|
|
13932
13932
|
{ immediate: true }
|
|
13933
13933
|
);
|
|
@@ -14011,7 +14011,7 @@ function useScrollLock(element, initialState = false) {
|
|
|
14011
14011
|
immediate: true
|
|
14012
14012
|
});
|
|
14013
14013
|
const lock = () => {
|
|
14014
|
-
const ele = toValue(element);
|
|
14014
|
+
const ele = toValue$1(element);
|
|
14015
14015
|
if (!ele || isLocked.value)
|
|
14016
14016
|
return;
|
|
14017
14017
|
if (isIOS) {
|
|
@@ -14028,14 +14028,14 @@ function useScrollLock(element, initialState = false) {
|
|
|
14028
14028
|
isLocked.value = true;
|
|
14029
14029
|
};
|
|
14030
14030
|
const unlock = () => {
|
|
14031
|
-
const ele = toValue(element);
|
|
14031
|
+
const ele = toValue$1(element);
|
|
14032
14032
|
if (!ele || !isLocked.value)
|
|
14033
14033
|
return;
|
|
14034
14034
|
isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener());
|
|
14035
14035
|
ele.style.overflow = initialOverflow;
|
|
14036
14036
|
isLocked.value = false;
|
|
14037
14037
|
};
|
|
14038
|
-
tryOnScopeDispose(unlock);
|
|
14038
|
+
tryOnScopeDispose$1(unlock);
|
|
14039
14039
|
return computed({
|
|
14040
14040
|
get() {
|
|
14041
14041
|
return isLocked.value;
|
|
@@ -14093,7 +14093,7 @@ function useStyleTag(css, options = {}) {
|
|
|
14093
14093
|
if (immediate && !manual)
|
|
14094
14094
|
tryOnMounted(load);
|
|
14095
14095
|
if (!manual)
|
|
14096
|
-
tryOnScopeDispose(unload);
|
|
14096
|
+
tryOnScopeDispose$1(unload);
|
|
14097
14097
|
return {
|
|
14098
14098
|
id,
|
|
14099
14099
|
css: cssRef,
|
|
@@ -14119,7 +14119,7 @@ var __spreadValues$2 = (a, b) => {
|
|
|
14119
14119
|
}
|
|
14120
14120
|
return a;
|
|
14121
14121
|
};
|
|
14122
|
-
var __objRest = (source, exclude) => {
|
|
14122
|
+
var __objRest$1 = (source, exclude) => {
|
|
14123
14123
|
var target = {};
|
|
14124
14124
|
for (var prop in source)
|
|
14125
14125
|
if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
@@ -14161,8 +14161,8 @@ function useTimeAgo(time, options = {}) {
|
|
|
14161
14161
|
controls: exposeControls = false,
|
|
14162
14162
|
updateInterval = 3e4
|
|
14163
14163
|
} = options;
|
|
14164
|
-
const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, ["now"]);
|
|
14165
|
-
const timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now.value)));
|
|
14164
|
+
const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest$1(_a, ["now"]);
|
|
14165
|
+
const timeAgo = computed(() => formatTimeAgo(new Date(toValue$1(time)), options, toValue$1(now.value)));
|
|
14166
14166
|
if (exposeControls) {
|
|
14167
14167
|
return __spreadValues$2({
|
|
14168
14168
|
timeAgo
|
|
@@ -14290,7 +14290,7 @@ function useFrameState() {
|
|
|
14290
14290
|
|
|
14291
14291
|
/* Injected with object hook! */
|
|
14292
14292
|
|
|
14293
|
-
const _hoisted_1$
|
|
14293
|
+
const _hoisted_1$6 = {
|
|
14294
14294
|
flex: "~ col gap4",
|
|
14295
14295
|
mxa: "",
|
|
14296
14296
|
"h-screen": "",
|
|
@@ -14304,16 +14304,16 @@ const _hoisted_2$5 = {
|
|
|
14304
14304
|
"items-center": "",
|
|
14305
14305
|
"justify-center": ""
|
|
14306
14306
|
};
|
|
14307
|
-
const _hoisted_3$
|
|
14307
|
+
const _hoisted_3$3 = /* @__PURE__ */ createBaseVNode("p", {
|
|
14308
14308
|
my2: "",
|
|
14309
14309
|
"text-xl": "",
|
|
14310
14310
|
"font-bold": ""
|
|
14311
14311
|
}, " 👋 Welcome trying the preview of Vue DevTools! ", -1);
|
|
14312
|
-
const _hoisted_4$
|
|
14312
|
+
const _hoisted_4$3 = /* @__PURE__ */ createBaseVNode("p", { "text-lg": "" }, [
|
|
14313
14313
|
/* @__PURE__ */ createBaseVNode("b", { "font-bold": "" }, "Vue DevTools"),
|
|
14314
14314
|
/* @__PURE__ */ createTextVNode(" is a set of visual tools that help you to know your app/site better, and enhance your development experience with Vue. ")
|
|
14315
14315
|
], -1);
|
|
14316
|
-
const _hoisted_5$
|
|
14316
|
+
const _hoisted_5$3 = /* @__PURE__ */ createBaseVNode("p", { "text-lg": "" }, [
|
|
14317
14317
|
/* @__PURE__ */ createTextVNode(" Be aware that "),
|
|
14318
14318
|
/* @__PURE__ */ createBaseVNode("span", {
|
|
14319
14319
|
rounded: "",
|
|
@@ -14333,7 +14333,7 @@ const _hoisted_5$2 = /* @__PURE__ */ createBaseVNode("p", { "text-lg": "" }, [
|
|
|
14333
14333
|
/* @__PURE__ */ createTextVNode(" if you find any bugs or have any suggestions. Thank you and have fun! ")
|
|
14334
14334
|
], -1);
|
|
14335
14335
|
const _hoisted_6$1 = /* @__PURE__ */ createBaseVNode("span", null, "Get Started", -1);
|
|
14336
|
-
const _sfc_main$
|
|
14336
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
14337
14337
|
__name: "index",
|
|
14338
14338
|
setup(__props) {
|
|
14339
14339
|
const { isFirstVisit } = useFrameState();
|
|
@@ -14343,10 +14343,10 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
14343
14343
|
router.replace("/overview");
|
|
14344
14344
|
}
|
|
14345
14345
|
return (_ctx, _cache) => {
|
|
14346
|
-
const _component_Logo = __unplugin_components_0
|
|
14346
|
+
const _component_Logo = __unplugin_components_0;
|
|
14347
14347
|
const _component_VBadge = __unplugin_components_1;
|
|
14348
|
-
const _component_VButton = _sfc_main$
|
|
14349
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
14348
|
+
const _component_VButton = _sfc_main$d;
|
|
14349
|
+
return openBlock(), createElementBlock("div", _hoisted_1$6, [
|
|
14350
14350
|
createBaseVNode("div", _hoisted_2$5, [
|
|
14351
14351
|
createVNode(_component_Logo, { "h-16": "" }),
|
|
14352
14352
|
createVNode(_component_VBadge, {
|
|
@@ -14358,9 +14358,9 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
14358
14358
|
textContent: "preview"
|
|
14359
14359
|
})
|
|
14360
14360
|
]),
|
|
14361
|
-
_hoisted_3$
|
|
14362
|
-
_hoisted_4$
|
|
14363
|
-
_hoisted_5$
|
|
14361
|
+
_hoisted_3$3,
|
|
14362
|
+
_hoisted_4$3,
|
|
14363
|
+
_hoisted_5$3,
|
|
14364
14364
|
createVNode(_component_VButton, {
|
|
14365
14365
|
"mt-4": "",
|
|
14366
14366
|
n: "xl primary",
|
|
@@ -14378,28 +14378,28 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
14378
14378
|
|
|
14379
14379
|
/* Injected with object hook! */
|
|
14380
14380
|
|
|
14381
|
-
const __pages_import_0__ = () => __vitePreload(() => import('./timeline-
|
|
14382
|
-
const __pages_import_1__ = () => __vitePreload(() => import('./settings-
|
|
14383
|
-
const __pages_import_2__ = () => __vitePreload(() => import('./routes-
|
|
14384
|
-
const __pages_import_3__ = () => __vitePreload(() => import('./pinia-
|
|
14385
|
-
const __pages_import_4__ = () => __vitePreload(() => import('./pages-
|
|
14386
|
-
const __pages_import_5__ = () => __vitePreload(() => import('./overview-
|
|
14387
|
-
const __pages_import_6__ = () => __vitePreload(() => import('./npm-
|
|
14388
|
-
const __pages_import_7__ = () => __vitePreload(() => import('./inspect-
|
|
14389
|
-
const __pages_import_9__ = () => __vitePreload(() => import('./graph-
|
|
14390
|
-
const __pages_import_10__ = () => __vitePreload(() => import('./documentations-
|
|
14391
|
-
const __pages_import_11__ = () => __vitePreload(() => import('./components-
|
|
14392
|
-
const __pages_import_12__ = () => __vitePreload(() => import('./component-docs-
|
|
14393
|
-
const __pages_import_13__ = () => __vitePreload(() => import('./assets-
|
|
14394
|
-
const __pages_import_14__ = () => __vitePreload(() => import('./__inspecting-
|
|
14395
|
-
const __pages_import_15__ = () => __vitePreload(() => import('./__eyedropper-
|
|
14396
|
-
|
|
14397
|
-
const routes$1 = [{"name":"timeline","path":"/timeline","component":__pages_import_0__,"props":true},{"name":"settings","path":"/settings","component":__pages_import_1__,"props":true},{"name":"routes","path":"/routes","component":__pages_import_2__,"props":true},{"name":"pinia","path":"/pinia","component":__pages_import_3__,"props":true},{"name":"pages","path":"/pages","component":__pages_import_4__,"props":true},{"name":"overview","path":"/overview","component":__pages_import_5__,"props":true},{"name":"npm","path":"/npm","component":__pages_import_6__,"props":true},{"name":"inspect","path":"/inspect","component":__pages_import_7__,"props":true},{"name":"index","path":"/","component":_sfc_main$
|
|
14381
|
+
const __pages_import_0__ = () => __vitePreload(() => import('./timeline-f8284402.js'),true?["assets/timeline-f8284402.js","assets/StateFields.vue_vue_type_script_setup_true_lang-766dc2da.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/index-32549096.js","assets/VIconButton.vue_vue_type_script_setup_true_lang-1dfaade2.js","assets/VPanelGrids-5c36b027.js","assets/_commonjsHelpers-c0d8ada0.js","assets/splitpanes.es-398427c7.js","assets/timeline-b315b2e0.css"]:void 0);
|
|
14382
|
+
const __pages_import_1__ = () => __vitePreload(() => import('./settings-68a6aaae.js'),true?["assets/settings-68a6aaae.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/VIconTitle.vue_vue_type_script_setup_true_lang-3891436f.js"]:void 0);
|
|
14383
|
+
const __pages_import_2__ = () => __vitePreload(() => import('./routes-b5c90320.js'),true?["assets/routes-b5c90320.js","assets/VPanelGrids-5c36b027.js","assets/StateFields.vue_vue_type_script_setup_true_lang-766dc2da.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/index-32549096.js","assets/VIconButton.vue_vue_type_script_setup_true_lang-1dfaade2.js","assets/splitpanes.es-398427c7.js"]:void 0);
|
|
14384
|
+
const __pages_import_3__ = () => __vitePreload(() => import('./pinia-0490bdb1.js'),true?["assets/pinia-0490bdb1.js","assets/StateFields.vue_vue_type_script_setup_true_lang-766dc2da.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/index-32549096.js","assets/VIconButton.vue_vue_type_script_setup_true_lang-1dfaade2.js","assets/splitpanes.es-398427c7.js"]:void 0);
|
|
14385
|
+
const __pages_import_4__ = () => __vitePreload(() => import('./pages-e0bd078d.js'),true?["assets/pages-e0bd078d.js","assets/VSectionBlock-de05a5a5.js","assets/VIconTitle.vue_vue_type_script_setup_true_lang-3891436f.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/VSectionBlock-52804693.css","assets/VTextInput.vue_vue_type_script_setup_true_lang-1c3b455d.js"]:void 0);
|
|
14386
|
+
const __pages_import_5__ = () => __vitePreload(() => import('./overview-3bc4fc18.js'),true?["assets/overview-3bc4fc18.js","assets/VPanelGrids-5c36b027.js","assets/rpc-6610a4d4.js","assets/index-32549096.js"]:void 0);
|
|
14387
|
+
const __pages_import_6__ = () => __vitePreload(() => import('./npm-8ea47586.js'),true?["assets/npm-8ea47586.js","assets/VSectionBlock-de05a5a5.js","assets/VIconTitle.vue_vue_type_script_setup_true_lang-3891436f.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/VSectionBlock-52804693.css","assets/VTextInput.vue_vue_type_script_setup_true_lang-1c3b455d.js","assets/_commonjsHelpers-c0d8ada0.js","assets/rpc-6610a4d4.js","assets/npm-125f4259.css"]:void 0);
|
|
14388
|
+
const __pages_import_7__ = () => __vitePreload(() => import('./inspect-d5e39a6a.js'),true?["assets/inspect-d5e39a6a.js","assets/IframeView.vue_vue_type_script_setup_true_lang-fad49b28.js","assets/rpc-6610a4d4.js"]:void 0);
|
|
14389
|
+
const __pages_import_9__ = () => __vitePreload(() => import('./graph-97eb4fb0.js'),true?["assets/graph-97eb4fb0.js","assets/fuse.esm-c317b696.js","assets/rpc-6610a4d4.js"]:void 0);
|
|
14390
|
+
const __pages_import_10__ = () => __vitePreload(() => import('./documentations-1d60f0ff.js'),true?["assets/documentations-1d60f0ff.js","assets/IframeView.vue_vue_type_script_setup_true_lang-fad49b28.js","assets/rpc-6610a4d4.js"]:void 0);
|
|
14391
|
+
const __pages_import_11__ = () => __vitePreload(() => import('./components-0083a223.js'),true?["assets/components-0083a223.js","assets/VPanelGrids-5c36b027.js","assets/StateFields.vue_vue_type_script_setup_true_lang-766dc2da.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/index-32549096.js","assets/VIconButton.vue_vue_type_script_setup_true_lang-1dfaade2.js","assets/splitpanes.es-398427c7.js"]:void 0);
|
|
14392
|
+
const __pages_import_12__ = () => __vitePreload(() => import('./component-docs-52802cb1.js'),true?["assets/component-docs-52802cb1.js","assets/VTextInput.vue_vue_type_script_setup_true_lang-1c3b455d.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/splitpanes.es-398427c7.js","assets/fuse.esm-c317b696.js","assets/rpc-6610a4d4.js","assets/component-docs-351d62d5.css"]:void 0);
|
|
14393
|
+
const __pages_import_13__ = () => __vitePreload(() => import('./assets-6e057331.js'),true?["assets/assets-6e057331.js","assets/VPanelGrids-5c36b027.js","assets/VIconButton.vue_vue_type_script_setup_true_lang-1dfaade2.js","assets/VIcon.vue_vue_type_script_setup_true_lang-8e1bce76.js","assets/rpc-6610a4d4.js","assets/VSectionBlock-de05a5a5.js","assets/VIconTitle.vue_vue_type_script_setup_true_lang-3891436f.js","assets/VSectionBlock-52804693.css","assets/VTextInput.vue_vue_type_script_setup_true_lang-1c3b455d.js","assets/fuse.esm-c317b696.js"]:void 0);
|
|
14394
|
+
const __pages_import_14__ = () => __vitePreload(() => import('./__inspecting-9ed1189b.js'),true?["assets/__inspecting-9ed1189b.js","assets/VPanelGrids-5c36b027.js"]:void 0);
|
|
14395
|
+
const __pages_import_15__ = () => __vitePreload(() => import('./__eyedropper-8918265a.js'),true?["assets/__eyedropper-8918265a.js","assets/VPanelGrids-5c36b027.js"]:void 0);
|
|
14396
|
+
|
|
14397
|
+
const routes$1 = [{"name":"timeline","path":"/timeline","component":__pages_import_0__,"props":true},{"name":"settings","path":"/settings","component":__pages_import_1__,"props":true},{"name":"routes","path":"/routes","component":__pages_import_2__,"props":true},{"name":"pinia","path":"/pinia","component":__pages_import_3__,"props":true},{"name":"pages","path":"/pages","component":__pages_import_4__,"props":true},{"name":"overview","path":"/overview","component":__pages_import_5__,"props":true},{"name":"npm","path":"/npm","component":__pages_import_6__,"props":true},{"name":"inspect","path":"/inspect","component":__pages_import_7__,"props":true},{"name":"index","path":"/","component":_sfc_main$a,"props":true},{"name":"graph","path":"/graph","component":__pages_import_9__,"props":true},{"name":"documentations","path":"/documentations","component":__pages_import_10__,"props":true},{"name":"components","path":"/components","component":__pages_import_11__,"props":true},{"name":"component-docs","path":"/component-docs","component":__pages_import_12__,"props":true},{"name":"assets","path":"/assets","component":__pages_import_13__,"props":true},{"name":"__inspecting","path":"/__inspecting","component":__pages_import_14__,"props":true},{"name":"__eyedropper","path":"/__eyedropper","component":__pages_import_15__,"props":true}];
|
|
14398
14398
|
/* Injected with object hook! */
|
|
14399
14399
|
|
|
14400
|
-
const _hoisted_1$
|
|
14400
|
+
const _hoisted_1$5 = ["src", "alt"];
|
|
14401
14401
|
const _hoisted_2$4 = ["title"];
|
|
14402
|
-
const _sfc_main$
|
|
14402
|
+
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
14403
14403
|
__name: "TabIcon",
|
|
14404
14404
|
props: {
|
|
14405
14405
|
icon: {},
|
|
@@ -14416,7 +14416,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
14416
14416
|
}, _ctx.$attrs, {
|
|
14417
14417
|
src: _ctx.icon,
|
|
14418
14418
|
alt: _ctx.title
|
|
14419
|
-
}), null, 16, _hoisted_1$
|
|
14419
|
+
}), null, 16, _hoisted_1$5)) : (openBlock(), createElementBlock("div", mergeProps({
|
|
14420
14420
|
key: 1,
|
|
14421
14421
|
style: {
|
|
14422
14422
|
width: "1em",
|
|
@@ -14445,7 +14445,7 @@ function useDevtoolsClient() {
|
|
|
14445
14445
|
|
|
14446
14446
|
/* Injected with object hook! */
|
|
14447
14447
|
|
|
14448
|
-
const _sfc_main$
|
|
14448
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
14449
14449
|
__name: "SideNavItem",
|
|
14450
14450
|
props: {
|
|
14451
14451
|
tab: {}
|
|
@@ -14454,7 +14454,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
14454
14454
|
const client = useDevtoolsClient();
|
|
14455
14455
|
const router = useRouter();
|
|
14456
14456
|
return (_ctx, _cache) => {
|
|
14457
|
-
const _component_TabIcon = _sfc_main$
|
|
14457
|
+
const _component_TabIcon = _sfc_main$9;
|
|
14458
14458
|
const _component_VTooltip = resolveComponent("VTooltip");
|
|
14459
14459
|
return openBlock(), createBlock(_component_VTooltip, { placement: "right" }, {
|
|
14460
14460
|
popper: withCtx(() => [
|
|
@@ -14495,7 +14495,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
14495
14495
|
|
|
14496
14496
|
/* Injected with object hook! */
|
|
14497
14497
|
|
|
14498
|
-
const _sfc_main$
|
|
14498
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
14499
14499
|
__name: "VDarkToggle",
|
|
14500
14500
|
setup(__props) {
|
|
14501
14501
|
const mode = useColorMode();
|
|
@@ -14559,274 +14559,1878 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
14559
14559
|
|
|
14560
14560
|
/* Injected with object hook! */
|
|
14561
14561
|
|
|
14562
|
-
const
|
|
14563
|
-
flex: "~ gap-1",
|
|
14564
|
-
"text-lg": ""
|
|
14565
|
-
};
|
|
14566
|
-
const _hoisted_2$3 = ["onClick"];
|
|
14567
|
-
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
14568
|
-
__name: "VPanelPosition",
|
|
14569
|
-
setup(__props) {
|
|
14570
|
-
const { position: _position } = useFrameState();
|
|
14571
|
-
const frameState = computed(() => ({ position: _position.value }));
|
|
14572
|
-
const client = useDevtoolsClient();
|
|
14573
|
-
const dockButton = [
|
|
14574
|
-
{
|
|
14575
|
-
position: "bottom",
|
|
14576
|
-
icon: "i-carbon-open-panel-filled-bottom"
|
|
14577
|
-
},
|
|
14578
|
-
{
|
|
14579
|
-
position: "right",
|
|
14580
|
-
icon: "i-carbon-open-panel-filled-right"
|
|
14581
|
-
},
|
|
14582
|
-
{
|
|
14583
|
-
position: "left",
|
|
14584
|
-
icon: "i-carbon-open-panel-filled-left"
|
|
14585
|
-
},
|
|
14586
|
-
{
|
|
14587
|
-
position: "top",
|
|
14588
|
-
icon: "i-carbon-open-panel-filled-top"
|
|
14589
|
-
}
|
|
14590
|
-
];
|
|
14591
|
-
function toggle(position) {
|
|
14592
|
-
client.value?.panel?.togglePosition(position);
|
|
14593
|
-
_position.value = position;
|
|
14594
|
-
}
|
|
14595
|
-
return (_ctx, _cache) => {
|
|
14596
|
-
return openBlock(), createElementBlock("div", _hoisted_1$3, [
|
|
14597
|
-
(openBlock(), createElementBlock(Fragment, null, renderList(dockButton, (item) => {
|
|
14598
|
-
return createBaseVNode("button", {
|
|
14599
|
-
key: item.position,
|
|
14600
|
-
class: normalizeClass([unref(frameState).position === item.position ? "text-primary" : "op50", item.icon]),
|
|
14601
|
-
onClick: ($event) => toggle(item.position)
|
|
14602
|
-
}, null, 10, _hoisted_2$3);
|
|
14603
|
-
}), 64))
|
|
14604
|
-
]);
|
|
14605
|
-
};
|
|
14606
|
-
}
|
|
14607
|
-
});
|
|
14608
|
-
|
|
14609
|
-
/* Injected with object hook! */
|
|
14610
|
-
|
|
14611
|
-
const _sfc_main$3 = {};
|
|
14562
|
+
/* unplugin-vue-components disabled */const _sfc_main$6 = {};
|
|
14612
14563
|
|
|
14613
|
-
const _hoisted_1$
|
|
14614
|
-
px3: "",
|
|
14615
|
-
py2: "",
|
|
14616
|
-
border: "b base",
|
|
14617
|
-
flex: "~ col gap-1"
|
|
14618
|
-
};
|
|
14619
|
-
const _hoisted_2$2 = /*#__PURE__*/createBaseVNode("div", {
|
|
14620
|
-
"text-sm": "",
|
|
14621
|
-
op50: ""
|
|
14622
|
-
}, " Dock devtools to ", -1);
|
|
14623
|
-
const _hoisted_3$1 = {
|
|
14624
|
-
px3: "",
|
|
14625
|
-
py2: "",
|
|
14626
|
-
border: "b base",
|
|
14627
|
-
flex: "~ gap-2"
|
|
14628
|
-
};
|
|
14629
|
-
const _hoisted_4$1 = /*#__PURE__*/createBaseVNode("div", {
|
|
14630
|
-
"carbon-sun": "",
|
|
14631
|
-
"translate-y--1px": "",
|
|
14632
|
-
"dark:carbon-moon": ""
|
|
14633
|
-
}, null, -1);
|
|
14634
|
-
const _hoisted_5$1 = /*#__PURE__*/createBaseVNode("div", {
|
|
14635
|
-
"carbon-settings": "",
|
|
14636
|
-
"translate-y--1px": ""
|
|
14637
|
-
}, null, -1);
|
|
14564
|
+
const _hoisted_1$4 = { class: "n-card n-card-base" };
|
|
14638
14565
|
|
|
14639
14566
|
function _sfc_render(_ctx, _cache) {
|
|
14640
|
-
|
|
14641
|
-
|
|
14642
|
-
const _component_VDarkToggle = _sfc_main$5;
|
|
14643
|
-
const _component_RouterLink = resolveComponent("RouterLink");
|
|
14644
|
-
|
|
14645
|
-
return (openBlock(), createElementBlock("div", null, [
|
|
14646
|
-
createBaseVNode("div", _hoisted_1$2, [
|
|
14647
|
-
_hoisted_2$2,
|
|
14648
|
-
createVNode(_component_VPanelPosition)
|
|
14649
|
-
]),
|
|
14650
|
-
createBaseVNode("div", _hoisted_3$1, [
|
|
14651
|
-
createVNode(_component_VDarkToggle, null, {
|
|
14652
|
-
default: withCtx(({ toggle, isDark }) => [
|
|
14653
|
-
createVNode(_component_VButton, {
|
|
14654
|
-
n: "sm primary",
|
|
14655
|
-
onClick: toggle
|
|
14656
|
-
}, {
|
|
14657
|
-
default: withCtx(() => [
|
|
14658
|
-
_hoisted_4$1,
|
|
14659
|
-
createTextVNode(" " + toDisplayString(isDark.value ? "Dark" : "Light"), 1)
|
|
14660
|
-
]),
|
|
14661
|
-
_: 2
|
|
14662
|
-
}, 1032, ["onClick"])
|
|
14663
|
-
]),
|
|
14664
|
-
_: 1
|
|
14665
|
-
}),
|
|
14666
|
-
createVNode(_component_RouterLink, {
|
|
14667
|
-
replace: "",
|
|
14668
|
-
class: "n-button-base active:n-button-active focus-visible:n-focus-base n-transition n-primary n-sm hover:n-button-hover n-disabled:n-disabled",
|
|
14669
|
-
to: "/settings"
|
|
14670
|
-
}, {
|
|
14671
|
-
default: withCtx(() => [
|
|
14672
|
-
_hoisted_5$1,
|
|
14673
|
-
createTextVNode(" Settings ")
|
|
14674
|
-
]),
|
|
14675
|
-
_: 1
|
|
14676
|
-
})
|
|
14677
|
-
])
|
|
14567
|
+
return (openBlock(), createElementBlock("div", _hoisted_1$4, [
|
|
14568
|
+
renderSlot(_ctx.$slots, "default")
|
|
14678
14569
|
]))
|
|
14679
14570
|
}
|
|
14680
|
-
const
|
|
14571
|
+
const __unplugin_components_7 = /*#__PURE__*/_export_sfc(_sfc_main$6, [['render',_sfc_render]]);
|
|
14681
14572
|
/* Injected with object hook! */
|
|
14682
14573
|
|
|
14683
|
-
|
|
14684
|
-
|
|
14685
|
-
|
|
14686
|
-
|
|
14687
|
-
}
|
|
14688
|
-
|
|
14689
|
-
|
|
14690
|
-
|
|
14574
|
+
function tryOnScopeDispose(fn) {
|
|
14575
|
+
if (getCurrentScope()) {
|
|
14576
|
+
onScopeDispose(fn);
|
|
14577
|
+
return true;
|
|
14578
|
+
}
|
|
14579
|
+
return false;
|
|
14580
|
+
}
|
|
14581
|
+
|
|
14582
|
+
function toValue(r) {
|
|
14583
|
+
return typeof r === "function" ? r() : unref(r);
|
|
14691
14584
|
}
|
|
14692
14585
|
|
|
14693
14586
|
/* Injected with object hook! */
|
|
14694
14587
|
|
|
14695
|
-
|
|
14696
|
-
|
|
14697
|
-
|
|
14698
|
-
|
|
14699
|
-
icon: "i-carbon-information"
|
|
14700
|
-
},
|
|
14701
|
-
{
|
|
14702
|
-
path: "pages",
|
|
14703
|
-
title: "Pages",
|
|
14704
|
-
icon: "i-carbon-tree-view-alt"
|
|
14705
|
-
},
|
|
14706
|
-
{
|
|
14707
|
-
path: "components",
|
|
14708
|
-
title: "Components",
|
|
14709
|
-
icon: "i-carbon-assembly-cluster"
|
|
14710
|
-
},
|
|
14711
|
-
{
|
|
14712
|
-
path: "assets",
|
|
14713
|
-
title: "Assets",
|
|
14714
|
-
icon: "i-carbon-image-copy"
|
|
14715
|
-
},
|
|
14716
|
-
{
|
|
14717
|
-
path: "routes",
|
|
14718
|
-
title: "Routes",
|
|
14719
|
-
icon: "gis:map-route",
|
|
14720
|
-
category: "modules"
|
|
14721
|
-
},
|
|
14722
|
-
{
|
|
14723
|
-
path: "pinia",
|
|
14724
|
-
title: "Pinia",
|
|
14725
|
-
icon: "icon-park-outline:pineapple",
|
|
14726
|
-
category: "modules"
|
|
14727
|
-
},
|
|
14728
|
-
{
|
|
14729
|
-
path: "timeline",
|
|
14730
|
-
title: "Timeline",
|
|
14731
|
-
icon: "i-icon-park-outline:vertical-timeline"
|
|
14732
|
-
},
|
|
14733
|
-
{
|
|
14734
|
-
title: "Inspector",
|
|
14735
|
-
icon: "i-carbon-select-window",
|
|
14736
|
-
category: "advanced",
|
|
14737
|
-
event: (client, router) => {
|
|
14738
|
-
router.replace("/__inspecting");
|
|
14739
|
-
client?.inspector?.enable();
|
|
14740
|
-
}
|
|
14741
|
-
},
|
|
14742
|
-
{
|
|
14743
|
-
title: "EyeDropper",
|
|
14744
|
-
icon: "i-mdi:eyedropper",
|
|
14745
|
-
category: "advanced",
|
|
14746
|
-
event: (client, router) => {
|
|
14747
|
-
router.replace("/__eyedropper");
|
|
14748
|
-
client.panel?.toggleViewMode("xs");
|
|
14749
|
-
}
|
|
14750
|
-
},
|
|
14751
|
-
{
|
|
14752
|
-
path: "component-docs",
|
|
14753
|
-
title: "Component docs",
|
|
14754
|
-
icon: "i-carbon-document-preliminary",
|
|
14755
|
-
category: "advanced"
|
|
14756
|
-
},
|
|
14757
|
-
{
|
|
14758
|
-
path: "npm",
|
|
14759
|
-
title: "Search packages",
|
|
14760
|
-
icon: "i-teenyicons:npm-outline",
|
|
14761
|
-
category: "advanced"
|
|
14762
|
-
},
|
|
14763
|
-
{
|
|
14764
|
-
path: "graph",
|
|
14765
|
-
title: "Graph",
|
|
14766
|
-
icon: "i-carbon-network-4",
|
|
14767
|
-
category: "advanced"
|
|
14768
|
-
},
|
|
14769
|
-
{
|
|
14770
|
-
path: "inspect",
|
|
14771
|
-
title: "Inspect",
|
|
14772
|
-
icon: "i-carbon-ibm-watson-discovery",
|
|
14773
|
-
category: "advanced"
|
|
14774
|
-
},
|
|
14775
|
-
{
|
|
14776
|
-
path: "documentations",
|
|
14777
|
-
title: "Documentations",
|
|
14778
|
-
icon: "i-carbon-document",
|
|
14779
|
-
category: "advanced"
|
|
14780
|
-
}
|
|
14781
|
-
];
|
|
14782
|
-
function useTabs() {
|
|
14783
|
-
const settings = useDevToolsSettings();
|
|
14784
|
-
return {
|
|
14785
|
-
enabled: computed(() => {
|
|
14786
|
-
return builtinTabs.filter((tab) => !settings.hiddenTabs.value.includes(tab.title ?? ""));
|
|
14787
|
-
}),
|
|
14788
|
-
all: computed(() => builtinTabs)
|
|
14789
|
-
};
|
|
14790
|
-
}
|
|
14791
|
-
function useCategorizedTabs(enabledOnly = true) {
|
|
14792
|
-
const _tabs = useTabs();
|
|
14793
|
-
const tabs = enabledOnly ? _tabs.enabled : _tabs.all;
|
|
14794
|
-
const settings = useDevToolsSettings();
|
|
14795
|
-
return computed(() => {
|
|
14796
|
-
const categories = {
|
|
14797
|
-
app: [],
|
|
14798
|
-
modules: [],
|
|
14799
|
-
advanced: []
|
|
14800
|
-
};
|
|
14801
|
-
for (const tab of tabs.value) {
|
|
14802
|
-
const category = tab?.category || "app";
|
|
14803
|
-
if (enabledOnly && settings.hiddenTabCategories.value.includes(category))
|
|
14804
|
-
continue;
|
|
14805
|
-
if (!categories[category])
|
|
14806
|
-
console.warn(`Unknown tab category: ${category}`);
|
|
14807
|
-
else
|
|
14808
|
-
categories[category].push(tab);
|
|
14809
|
-
}
|
|
14810
|
-
return Object.entries(categories);
|
|
14811
|
-
});
|
|
14588
|
+
function unrefElement(elRef) {
|
|
14589
|
+
var _a;
|
|
14590
|
+
const plain = toValue(elRef);
|
|
14591
|
+
return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
|
|
14812
14592
|
}
|
|
14813
14593
|
|
|
14814
14594
|
/* Injected with object hook! */
|
|
14815
14595
|
|
|
14816
|
-
|
|
14817
|
-
|
|
14818
|
-
|
|
14819
|
-
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
|
|
14823
|
-
|
|
14596
|
+
/*!
|
|
14597
|
+
* tabbable 6.1.2
|
|
14598
|
+
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
|
14599
|
+
*/
|
|
14600
|
+
// NOTE: separate `:not()` selectors has broader browser support than the newer
|
|
14601
|
+
// `:not([inert], [inert] *)` (Feb 2023)
|
|
14602
|
+
// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes
|
|
14603
|
+
// the entire query to fail, resulting in no nodes found, which will break a lot
|
|
14604
|
+
// of things... so we have to rely on JS to identify nodes inside an inert container
|
|
14605
|
+
var candidateSelectors = ['input:not([inert])', 'select:not([inert])', 'textarea:not([inert])', 'a[href]:not([inert])', 'button:not([inert])', '[tabindex]:not(slot):not([inert])', 'audio[controls]:not([inert])', 'video[controls]:not([inert])', '[contenteditable]:not([contenteditable="false"]):not([inert])', 'details>summary:first-of-type:not([inert])', 'details:not([inert])'];
|
|
14606
|
+
var candidateSelector = /* #__PURE__ */candidateSelectors.join(',');
|
|
14607
|
+
var NoElement = typeof Element === 'undefined';
|
|
14608
|
+
var matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
|
|
14609
|
+
var getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {
|
|
14610
|
+
var _element$getRootNode;
|
|
14611
|
+
return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);
|
|
14612
|
+
} : function (element) {
|
|
14613
|
+
return element === null || element === void 0 ? void 0 : element.ownerDocument;
|
|
14824
14614
|
};
|
|
14825
|
-
|
|
14826
|
-
|
|
14827
|
-
|
|
14828
|
-
|
|
14829
|
-
|
|
14615
|
+
|
|
14616
|
+
/**
|
|
14617
|
+
* Determines if a node is inert or in an inert ancestor.
|
|
14618
|
+
* @param {Element} [node]
|
|
14619
|
+
* @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to
|
|
14620
|
+
* see if any of them are inert. If false, only `node` itself is considered.
|
|
14621
|
+
* @returns {boolean} True if inert itself or by way of being in an inert ancestor.
|
|
14622
|
+
* False if `node` is falsy.
|
|
14623
|
+
*/
|
|
14624
|
+
var isInert = function isInert(node, lookUp) {
|
|
14625
|
+
var _node$getAttribute;
|
|
14626
|
+
if (lookUp === void 0) {
|
|
14627
|
+
lookUp = true;
|
|
14628
|
+
}
|
|
14629
|
+
// CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`
|
|
14630
|
+
// JS API property; we have to check the attribute, which can either be empty or 'true';
|
|
14631
|
+
// if it's `null` (not specified) or 'false', it's an active element
|
|
14632
|
+
var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');
|
|
14633
|
+
var inert = inertAtt === '' || inertAtt === 'true';
|
|
14634
|
+
|
|
14635
|
+
// NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`
|
|
14636
|
+
// if it weren't for `matches()` not being a function on shadow roots; the following
|
|
14637
|
+
// code works for any kind of node
|
|
14638
|
+
// CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`
|
|
14639
|
+
// so it likely would not support `:is([inert] *)` either...
|
|
14640
|
+
var result = inert || lookUp && node && isInert(node.parentNode); // recursive
|
|
14641
|
+
|
|
14642
|
+
return result;
|
|
14643
|
+
};
|
|
14644
|
+
|
|
14645
|
+
/**
|
|
14646
|
+
* Determines if a node's content is editable.
|
|
14647
|
+
* @param {Element} [node]
|
|
14648
|
+
* @returns True if it's content-editable; false if it's not or `node` is falsy.
|
|
14649
|
+
*/
|
|
14650
|
+
var isContentEditable = function isContentEditable(node) {
|
|
14651
|
+
var _node$getAttribute2;
|
|
14652
|
+
// CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have
|
|
14653
|
+
// to use the attribute directly to check for this, which can either be empty or 'true';
|
|
14654
|
+
// if it's `null` (not specified) or 'false', it's a non-editable element
|
|
14655
|
+
var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');
|
|
14656
|
+
return attValue === '' || attValue === 'true';
|
|
14657
|
+
};
|
|
14658
|
+
|
|
14659
|
+
/**
|
|
14660
|
+
* @param {Element} el container to check in
|
|
14661
|
+
* @param {boolean} includeContainer add container to check
|
|
14662
|
+
* @param {(node: Element) => boolean} filter filter candidates
|
|
14663
|
+
* @returns {Element[]}
|
|
14664
|
+
*/
|
|
14665
|
+
var getCandidates = function getCandidates(el, includeContainer, filter) {
|
|
14666
|
+
// even if `includeContainer=false`, we still have to check it for inertness because
|
|
14667
|
+
// if it's inert, all its children are inert
|
|
14668
|
+
if (isInert(el)) {
|
|
14669
|
+
return [];
|
|
14670
|
+
}
|
|
14671
|
+
var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));
|
|
14672
|
+
if (includeContainer && matches.call(el, candidateSelector)) {
|
|
14673
|
+
candidates.unshift(el);
|
|
14674
|
+
}
|
|
14675
|
+
candidates = candidates.filter(filter);
|
|
14676
|
+
return candidates;
|
|
14677
|
+
};
|
|
14678
|
+
|
|
14679
|
+
/**
|
|
14680
|
+
* @callback GetShadowRoot
|
|
14681
|
+
* @param {Element} element to check for shadow root
|
|
14682
|
+
* @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.
|
|
14683
|
+
*/
|
|
14684
|
+
|
|
14685
|
+
/**
|
|
14686
|
+
* @callback ShadowRootFilter
|
|
14687
|
+
* @param {Element} shadowHostNode the element which contains shadow content
|
|
14688
|
+
* @returns {boolean} true if a shadow root could potentially contain valid candidates.
|
|
14689
|
+
*/
|
|
14690
|
+
|
|
14691
|
+
/**
|
|
14692
|
+
* @typedef {Object} CandidateScope
|
|
14693
|
+
* @property {Element} scopeParent contains inner candidates
|
|
14694
|
+
* @property {Element[]} candidates list of candidates found in the scope parent
|
|
14695
|
+
*/
|
|
14696
|
+
|
|
14697
|
+
/**
|
|
14698
|
+
* @typedef {Object} IterativeOptions
|
|
14699
|
+
* @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;
|
|
14700
|
+
* if a function, implies shadow support is enabled and either returns the shadow root of an element
|
|
14701
|
+
* or a boolean stating if it has an undisclosed shadow root
|
|
14702
|
+
* @property {(node: Element) => boolean} filter filter candidates
|
|
14703
|
+
* @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list
|
|
14704
|
+
* @property {ShadowRootFilter} shadowRootFilter filter shadow roots;
|
|
14705
|
+
*/
|
|
14706
|
+
|
|
14707
|
+
/**
|
|
14708
|
+
* @param {Element[]} elements list of element containers to match candidates from
|
|
14709
|
+
* @param {boolean} includeContainer add container list to check
|
|
14710
|
+
* @param {IterativeOptions} options
|
|
14711
|
+
* @returns {Array.<Element|CandidateScope>}
|
|
14712
|
+
*/
|
|
14713
|
+
var getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {
|
|
14714
|
+
var candidates = [];
|
|
14715
|
+
var elementsToCheck = Array.from(elements);
|
|
14716
|
+
while (elementsToCheck.length) {
|
|
14717
|
+
var element = elementsToCheck.shift();
|
|
14718
|
+
if (isInert(element, false)) {
|
|
14719
|
+
// no need to look up since we're drilling down
|
|
14720
|
+
// anything inside this container will also be inert
|
|
14721
|
+
continue;
|
|
14722
|
+
}
|
|
14723
|
+
if (element.tagName === 'SLOT') {
|
|
14724
|
+
// add shadow dom slot scope (slot itself cannot be focusable)
|
|
14725
|
+
var assigned = element.assignedElements();
|
|
14726
|
+
var content = assigned.length ? assigned : element.children;
|
|
14727
|
+
var nestedCandidates = getCandidatesIteratively(content, true, options);
|
|
14728
|
+
if (options.flatten) {
|
|
14729
|
+
candidates.push.apply(candidates, nestedCandidates);
|
|
14730
|
+
} else {
|
|
14731
|
+
candidates.push({
|
|
14732
|
+
scopeParent: element,
|
|
14733
|
+
candidates: nestedCandidates
|
|
14734
|
+
});
|
|
14735
|
+
}
|
|
14736
|
+
} else {
|
|
14737
|
+
// check candidate element
|
|
14738
|
+
var validCandidate = matches.call(element, candidateSelector);
|
|
14739
|
+
if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {
|
|
14740
|
+
candidates.push(element);
|
|
14741
|
+
}
|
|
14742
|
+
|
|
14743
|
+
// iterate over shadow content if possible
|
|
14744
|
+
var shadowRoot = element.shadowRoot ||
|
|
14745
|
+
// check for an undisclosed shadow
|
|
14746
|
+
typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);
|
|
14747
|
+
|
|
14748
|
+
// no inert look up because we're already drilling down and checking for inertness
|
|
14749
|
+
// on the way down, so all containers to this root node should have already been
|
|
14750
|
+
// vetted as non-inert
|
|
14751
|
+
var validShadowRoot = !isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));
|
|
14752
|
+
if (shadowRoot && validShadowRoot) {
|
|
14753
|
+
// add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed
|
|
14754
|
+
// shadow exists, so look at light dom children as fallback BUT create a scope for any
|
|
14755
|
+
// child candidates found because they're likely slotted elements (elements that are
|
|
14756
|
+
// children of the web component element (which has the shadow), in the light dom, but
|
|
14757
|
+
// slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,
|
|
14758
|
+
// _after_ we return from this recursive call
|
|
14759
|
+
var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);
|
|
14760
|
+
if (options.flatten) {
|
|
14761
|
+
candidates.push.apply(candidates, _nestedCandidates);
|
|
14762
|
+
} else {
|
|
14763
|
+
candidates.push({
|
|
14764
|
+
scopeParent: element,
|
|
14765
|
+
candidates: _nestedCandidates
|
|
14766
|
+
});
|
|
14767
|
+
}
|
|
14768
|
+
} else {
|
|
14769
|
+
// there's not shadow so just dig into the element's (light dom) children
|
|
14770
|
+
// __without__ giving the element special scope treatment
|
|
14771
|
+
elementsToCheck.unshift.apply(elementsToCheck, element.children);
|
|
14772
|
+
}
|
|
14773
|
+
}
|
|
14774
|
+
}
|
|
14775
|
+
return candidates;
|
|
14776
|
+
};
|
|
14777
|
+
var getTabindex = function getTabindex(node, isScope) {
|
|
14778
|
+
if (node.tabIndex < 0) {
|
|
14779
|
+
// in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
|
|
14780
|
+
// `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,
|
|
14781
|
+
// yet they are still part of the regular tab order; in FF, they get a default
|
|
14782
|
+
// `tabIndex` of 0; since Chrome still puts those elements in the regular tab
|
|
14783
|
+
// order, consider their tab index to be 0.
|
|
14784
|
+
// Also browsers do not return `tabIndex` correctly for contentEditable nodes;
|
|
14785
|
+
// so if they don't have a tabindex attribute specifically set, assume it's 0.
|
|
14786
|
+
//
|
|
14787
|
+
// isScope is positive for custom element with shadow root or slot that by default
|
|
14788
|
+
// have tabIndex -1, but need to be sorted by document order in order for their
|
|
14789
|
+
// content to be inserted in the correct position
|
|
14790
|
+
if ((isScope || /^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && isNaN(parseInt(node.getAttribute('tabindex'), 10))) {
|
|
14791
|
+
return 0;
|
|
14792
|
+
}
|
|
14793
|
+
}
|
|
14794
|
+
return node.tabIndex;
|
|
14795
|
+
};
|
|
14796
|
+
var sortOrderedTabbables = function sortOrderedTabbables(a, b) {
|
|
14797
|
+
return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
|
|
14798
|
+
};
|
|
14799
|
+
var isInput = function isInput(node) {
|
|
14800
|
+
return node.tagName === 'INPUT';
|
|
14801
|
+
};
|
|
14802
|
+
var isHiddenInput = function isHiddenInput(node) {
|
|
14803
|
+
return isInput(node) && node.type === 'hidden';
|
|
14804
|
+
};
|
|
14805
|
+
var isDetailsWithSummary = function isDetailsWithSummary(node) {
|
|
14806
|
+
var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {
|
|
14807
|
+
return child.tagName === 'SUMMARY';
|
|
14808
|
+
});
|
|
14809
|
+
return r;
|
|
14810
|
+
};
|
|
14811
|
+
var getCheckedRadio = function getCheckedRadio(nodes, form) {
|
|
14812
|
+
for (var i = 0; i < nodes.length; i++) {
|
|
14813
|
+
if (nodes[i].checked && nodes[i].form === form) {
|
|
14814
|
+
return nodes[i];
|
|
14815
|
+
}
|
|
14816
|
+
}
|
|
14817
|
+
};
|
|
14818
|
+
var isTabbableRadio = function isTabbableRadio(node) {
|
|
14819
|
+
if (!node.name) {
|
|
14820
|
+
return true;
|
|
14821
|
+
}
|
|
14822
|
+
var radioScope = node.form || getRootNode(node);
|
|
14823
|
+
var queryRadios = function queryRadios(name) {
|
|
14824
|
+
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]');
|
|
14825
|
+
};
|
|
14826
|
+
var radioSet;
|
|
14827
|
+
if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {
|
|
14828
|
+
radioSet = queryRadios(window.CSS.escape(node.name));
|
|
14829
|
+
} else {
|
|
14830
|
+
try {
|
|
14831
|
+
radioSet = queryRadios(node.name);
|
|
14832
|
+
} catch (err) {
|
|
14833
|
+
// eslint-disable-next-line no-console
|
|
14834
|
+
console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);
|
|
14835
|
+
return false;
|
|
14836
|
+
}
|
|
14837
|
+
}
|
|
14838
|
+
var checked = getCheckedRadio(radioSet, node.form);
|
|
14839
|
+
return !checked || checked === node;
|
|
14840
|
+
};
|
|
14841
|
+
var isRadio = function isRadio(node) {
|
|
14842
|
+
return isInput(node) && node.type === 'radio';
|
|
14843
|
+
};
|
|
14844
|
+
var isNonTabbableRadio = function isNonTabbableRadio(node) {
|
|
14845
|
+
return isRadio(node) && !isTabbableRadio(node);
|
|
14846
|
+
};
|
|
14847
|
+
|
|
14848
|
+
// determines if a node is ultimately attached to the window's document
|
|
14849
|
+
var isNodeAttached = function isNodeAttached(node) {
|
|
14850
|
+
var _nodeRoot;
|
|
14851
|
+
// The root node is the shadow root if the node is in a shadow DOM; some document otherwise
|
|
14852
|
+
// (but NOT _the_ document; see second 'If' comment below for more).
|
|
14853
|
+
// If rootNode is shadow root, it'll have a host, which is the element to which the shadow
|
|
14854
|
+
// is attached, and the one we need to check if it's in the document or not (because the
|
|
14855
|
+
// shadow, and all nodes it contains, is never considered in the document since shadows
|
|
14856
|
+
// behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,
|
|
14857
|
+
// is hidden, or is not in the document itself but is detached, it will affect the shadow's
|
|
14858
|
+
// visibility, including all the nodes it contains). The host could be any normal node,
|
|
14859
|
+
// or a custom element (i.e. web component). Either way, that's the one that is considered
|
|
14860
|
+
// part of the document, not the shadow root, nor any of its children (i.e. the node being
|
|
14861
|
+
// tested).
|
|
14862
|
+
// To further complicate things, we have to look all the way up until we find a shadow HOST
|
|
14863
|
+
// that is attached (or find none) because the node might be in nested shadows...
|
|
14864
|
+
// If rootNode is not a shadow root, it won't have a host, and so rootNode should be the
|
|
14865
|
+
// document (per the docs) and while it's a Document-type object, that document does not
|
|
14866
|
+
// appear to be the same as the node's `ownerDocument` for some reason, so it's safer
|
|
14867
|
+
// to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,
|
|
14868
|
+
// using `rootNode.contains(node)` will _always_ be true we'll get false-positives when
|
|
14869
|
+
// node is actually detached.
|
|
14870
|
+
// NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible
|
|
14871
|
+
// if a tabbable/focusable node was quickly added to the DOM, focused, and then removed
|
|
14872
|
+
// from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then
|
|
14873
|
+
// `ownerDocument` will be `null`, hence the optional chaining on it.
|
|
14874
|
+
var nodeRoot = node && getRootNode(node);
|
|
14875
|
+
var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;
|
|
14876
|
+
|
|
14877
|
+
// in some cases, a detached node will return itself as the root instead of a document or
|
|
14878
|
+
// shadow root object, in which case, we shouldn't try to look further up the host chain
|
|
14879
|
+
var attached = false;
|
|
14880
|
+
if (nodeRoot && nodeRoot !== node) {
|
|
14881
|
+
var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;
|
|
14882
|
+
attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));
|
|
14883
|
+
while (!attached && nodeRootHost) {
|
|
14884
|
+
var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;
|
|
14885
|
+
// since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,
|
|
14886
|
+
// which means we need to get the host's host and check if that parent host is contained
|
|
14887
|
+
// in (i.e. attached to) the document
|
|
14888
|
+
nodeRoot = getRootNode(nodeRootHost);
|
|
14889
|
+
nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;
|
|
14890
|
+
attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));
|
|
14891
|
+
}
|
|
14892
|
+
}
|
|
14893
|
+
return attached;
|
|
14894
|
+
};
|
|
14895
|
+
var isZeroArea = function isZeroArea(node) {
|
|
14896
|
+
var _node$getBoundingClie = node.getBoundingClientRect(),
|
|
14897
|
+
width = _node$getBoundingClie.width,
|
|
14898
|
+
height = _node$getBoundingClie.height;
|
|
14899
|
+
return width === 0 && height === 0;
|
|
14900
|
+
};
|
|
14901
|
+
var isHidden = function isHidden(node, _ref) {
|
|
14902
|
+
var displayCheck = _ref.displayCheck,
|
|
14903
|
+
getShadowRoot = _ref.getShadowRoot;
|
|
14904
|
+
// NOTE: visibility will be `undefined` if node is detached from the document
|
|
14905
|
+
// (see notes about this further down), which means we will consider it visible
|
|
14906
|
+
// (this is legacy behavior from a very long way back)
|
|
14907
|
+
// NOTE: we check this regardless of `displayCheck="none"` because this is a
|
|
14908
|
+
// _visibility_ check, not a _display_ check
|
|
14909
|
+
if (getComputedStyle(node).visibility === 'hidden') {
|
|
14910
|
+
return true;
|
|
14911
|
+
}
|
|
14912
|
+
var isDirectSummary = matches.call(node, 'details>summary:first-of-type');
|
|
14913
|
+
var nodeUnderDetails = isDirectSummary ? node.parentElement : node;
|
|
14914
|
+
if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {
|
|
14915
|
+
return true;
|
|
14916
|
+
}
|
|
14917
|
+
if (!displayCheck || displayCheck === 'full' || displayCheck === 'legacy-full') {
|
|
14918
|
+
if (typeof getShadowRoot === 'function') {
|
|
14919
|
+
// figure out if we should consider the node to be in an undisclosed shadow and use the
|
|
14920
|
+
// 'non-zero-area' fallback
|
|
14921
|
+
var originalNode = node;
|
|
14922
|
+
while (node) {
|
|
14923
|
+
var parentElement = node.parentElement;
|
|
14924
|
+
var rootNode = getRootNode(node);
|
|
14925
|
+
if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow
|
|
14926
|
+
) {
|
|
14927
|
+
// node has an undisclosed shadow which means we can only treat it as a black box, so we
|
|
14928
|
+
// fall back to a non-zero-area test
|
|
14929
|
+
return isZeroArea(node);
|
|
14930
|
+
} else if (node.assignedSlot) {
|
|
14931
|
+
// iterate up slot
|
|
14932
|
+
node = node.assignedSlot;
|
|
14933
|
+
} else if (!parentElement && rootNode !== node.ownerDocument) {
|
|
14934
|
+
// cross shadow boundary
|
|
14935
|
+
node = rootNode.host;
|
|
14936
|
+
} else {
|
|
14937
|
+
// iterate up normal dom
|
|
14938
|
+
node = parentElement;
|
|
14939
|
+
}
|
|
14940
|
+
}
|
|
14941
|
+
node = originalNode;
|
|
14942
|
+
}
|
|
14943
|
+
// else, `getShadowRoot` might be true, but all that does is enable shadow DOM support
|
|
14944
|
+
// (i.e. it does not also presume that all nodes might have undisclosed shadows); or
|
|
14945
|
+
// it might be a falsy value, which means shadow DOM support is disabled
|
|
14946
|
+
|
|
14947
|
+
// Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)
|
|
14948
|
+
// now we can just test to see if it would normally be visible or not, provided it's
|
|
14949
|
+
// attached to the main document.
|
|
14950
|
+
// NOTE: We must consider case where node is inside a shadow DOM and given directly to
|
|
14951
|
+
// `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.
|
|
14952
|
+
|
|
14953
|
+
if (isNodeAttached(node)) {
|
|
14954
|
+
// this works wherever the node is: if there's at least one client rect, it's
|
|
14955
|
+
// somehow displayed; it also covers the CSS 'display: contents' case where the
|
|
14956
|
+
// node itself is hidden in place of its contents; and there's no need to search
|
|
14957
|
+
// up the hierarchy either
|
|
14958
|
+
return !node.getClientRects().length;
|
|
14959
|
+
}
|
|
14960
|
+
|
|
14961
|
+
// Else, the node isn't attached to the document, which means the `getClientRects()`
|
|
14962
|
+
// API will __always__ return zero rects (this can happen, for example, if React
|
|
14963
|
+
// is used to render nodes onto a detached tree, as confirmed in this thread:
|
|
14964
|
+
// https://github.com/facebook/react/issues/9117#issuecomment-284228870)
|
|
14965
|
+
//
|
|
14966
|
+
// It also means that even window.getComputedStyle(node).display will return `undefined`
|
|
14967
|
+
// because styles are only computed for nodes that are in the document.
|
|
14968
|
+
//
|
|
14969
|
+
// NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable
|
|
14970
|
+
// somehow. Though it was never stated officially, anyone who has ever used tabbable
|
|
14971
|
+
// APIs on nodes in detached containers has actually implicitly used tabbable in what
|
|
14972
|
+
// was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck="none"` mode -- essentially
|
|
14973
|
+
// considering __everything__ to be visible because of the innability to determine styles.
|
|
14974
|
+
//
|
|
14975
|
+
// v6.0.0: As of this major release, the default 'full' option __no longer treats detached
|
|
14976
|
+
// nodes as visible with the 'none' fallback.__
|
|
14977
|
+
if (displayCheck !== 'legacy-full') {
|
|
14978
|
+
return true; // hidden
|
|
14979
|
+
}
|
|
14980
|
+
// else, fallback to 'none' mode and consider the node visible
|
|
14981
|
+
} else if (displayCheck === 'non-zero-area') {
|
|
14982
|
+
// NOTE: Even though this tests that the node's client rect is non-zero to determine
|
|
14983
|
+
// whether it's displayed, and that a detached node will __always__ have a zero-area
|
|
14984
|
+
// client rect, we don't special-case for whether the node is attached or not. In
|
|
14985
|
+
// this mode, we do want to consider nodes that have a zero area to be hidden at all
|
|
14986
|
+
// times, and that includes attached or not.
|
|
14987
|
+
return isZeroArea(node);
|
|
14988
|
+
}
|
|
14989
|
+
|
|
14990
|
+
// visible, as far as we can tell, or per current `displayCheck=none` mode, we assume
|
|
14991
|
+
// it's visible
|
|
14992
|
+
return false;
|
|
14993
|
+
};
|
|
14994
|
+
|
|
14995
|
+
// form fields (nested) inside a disabled fieldset are not focusable/tabbable
|
|
14996
|
+
// unless they are in the _first_ <legend> element of the top-most disabled
|
|
14997
|
+
// fieldset
|
|
14998
|
+
var isDisabledFromFieldset = function isDisabledFromFieldset(node) {
|
|
14999
|
+
if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {
|
|
15000
|
+
var parentNode = node.parentElement;
|
|
15001
|
+
// check if `node` is contained in a disabled <fieldset>
|
|
15002
|
+
while (parentNode) {
|
|
15003
|
+
if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {
|
|
15004
|
+
// look for the first <legend> among the children of the disabled <fieldset>
|
|
15005
|
+
for (var i = 0; i < parentNode.children.length; i++) {
|
|
15006
|
+
var child = parentNode.children.item(i);
|
|
15007
|
+
// when the first <legend> (in document order) is found
|
|
15008
|
+
if (child.tagName === 'LEGEND') {
|
|
15009
|
+
// if its parent <fieldset> is not nested in another disabled <fieldset>,
|
|
15010
|
+
// return whether `node` is a descendant of its first <legend>
|
|
15011
|
+
return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);
|
|
15012
|
+
}
|
|
15013
|
+
}
|
|
15014
|
+
// the disabled <fieldset> containing `node` has no <legend>
|
|
15015
|
+
return true;
|
|
15016
|
+
}
|
|
15017
|
+
parentNode = parentNode.parentElement;
|
|
15018
|
+
}
|
|
15019
|
+
}
|
|
15020
|
+
|
|
15021
|
+
// else, node's tabbable/focusable state should not be affected by a fieldset's
|
|
15022
|
+
// enabled/disabled state
|
|
15023
|
+
return false;
|
|
15024
|
+
};
|
|
15025
|
+
var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {
|
|
15026
|
+
if (node.disabled ||
|
|
15027
|
+
// we must do an inert look up to filter out any elements inside an inert ancestor
|
|
15028
|
+
// because we're limited in the type of selectors we can use in JSDom (see related
|
|
15029
|
+
// note related to `candidateSelectors`)
|
|
15030
|
+
isInert(node) || isHiddenInput(node) || isHidden(node, options) ||
|
|
15031
|
+
// For a details element with a summary, the summary element gets the focus
|
|
15032
|
+
isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {
|
|
15033
|
+
return false;
|
|
15034
|
+
}
|
|
15035
|
+
return true;
|
|
15036
|
+
};
|
|
15037
|
+
var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {
|
|
15038
|
+
if (isNonTabbableRadio(node) || getTabindex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {
|
|
15039
|
+
return false;
|
|
15040
|
+
}
|
|
15041
|
+
return true;
|
|
15042
|
+
};
|
|
15043
|
+
var isValidShadowRootTabbable = function isValidShadowRootTabbable(shadowHostNode) {
|
|
15044
|
+
var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);
|
|
15045
|
+
if (isNaN(tabIndex) || tabIndex >= 0) {
|
|
15046
|
+
return true;
|
|
15047
|
+
}
|
|
15048
|
+
// If a custom element has an explicit negative tabindex,
|
|
15049
|
+
// browsers will not allow tab targeting said element's children.
|
|
15050
|
+
return false;
|
|
15051
|
+
};
|
|
15052
|
+
|
|
15053
|
+
/**
|
|
15054
|
+
* @param {Array.<Element|CandidateScope>} candidates
|
|
15055
|
+
* @returns Element[]
|
|
15056
|
+
*/
|
|
15057
|
+
var sortByOrder = function sortByOrder(candidates) {
|
|
15058
|
+
var regularTabbables = [];
|
|
15059
|
+
var orderedTabbables = [];
|
|
15060
|
+
candidates.forEach(function (item, i) {
|
|
15061
|
+
var isScope = !!item.scopeParent;
|
|
15062
|
+
var element = isScope ? item.scopeParent : item;
|
|
15063
|
+
var candidateTabindex = getTabindex(element, isScope);
|
|
15064
|
+
var elements = isScope ? sortByOrder(item.candidates) : element;
|
|
15065
|
+
if (candidateTabindex === 0) {
|
|
15066
|
+
isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);
|
|
15067
|
+
} else {
|
|
15068
|
+
orderedTabbables.push({
|
|
15069
|
+
documentOrder: i,
|
|
15070
|
+
tabIndex: candidateTabindex,
|
|
15071
|
+
item: item,
|
|
15072
|
+
isScope: isScope,
|
|
15073
|
+
content: elements
|
|
15074
|
+
});
|
|
15075
|
+
}
|
|
15076
|
+
});
|
|
15077
|
+
return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {
|
|
15078
|
+
sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);
|
|
15079
|
+
return acc;
|
|
15080
|
+
}, []).concat(regularTabbables);
|
|
15081
|
+
};
|
|
15082
|
+
var tabbable = function tabbable(el, options) {
|
|
15083
|
+
options = options || {};
|
|
15084
|
+
var candidates;
|
|
15085
|
+
if (options.getShadowRoot) {
|
|
15086
|
+
candidates = getCandidatesIteratively([el], options.includeContainer, {
|
|
15087
|
+
filter: isNodeMatchingSelectorTabbable.bind(null, options),
|
|
15088
|
+
flatten: false,
|
|
15089
|
+
getShadowRoot: options.getShadowRoot,
|
|
15090
|
+
shadowRootFilter: isValidShadowRootTabbable
|
|
15091
|
+
});
|
|
15092
|
+
} else {
|
|
15093
|
+
candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));
|
|
15094
|
+
}
|
|
15095
|
+
return sortByOrder(candidates);
|
|
15096
|
+
};
|
|
15097
|
+
var focusable = function focusable(el, options) {
|
|
15098
|
+
options = options || {};
|
|
15099
|
+
var candidates;
|
|
15100
|
+
if (options.getShadowRoot) {
|
|
15101
|
+
candidates = getCandidatesIteratively([el], options.includeContainer, {
|
|
15102
|
+
filter: isNodeMatchingSelectorFocusable.bind(null, options),
|
|
15103
|
+
flatten: true,
|
|
15104
|
+
getShadowRoot: options.getShadowRoot
|
|
15105
|
+
});
|
|
15106
|
+
} else {
|
|
15107
|
+
candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));
|
|
15108
|
+
}
|
|
15109
|
+
return candidates;
|
|
15110
|
+
};
|
|
15111
|
+
var isTabbable = function isTabbable(node, options) {
|
|
15112
|
+
options = options || {};
|
|
15113
|
+
if (!node) {
|
|
15114
|
+
throw new Error('No node provided');
|
|
15115
|
+
}
|
|
15116
|
+
if (matches.call(node, candidateSelector) === false) {
|
|
15117
|
+
return false;
|
|
15118
|
+
}
|
|
15119
|
+
return isNodeMatchingSelectorTabbable(options, node);
|
|
15120
|
+
};
|
|
15121
|
+
var focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');
|
|
15122
|
+
var isFocusable = function isFocusable(node, options) {
|
|
15123
|
+
options = options || {};
|
|
15124
|
+
if (!node) {
|
|
15125
|
+
throw new Error('No node provided');
|
|
15126
|
+
}
|
|
15127
|
+
if (matches.call(node, focusableCandidateSelector) === false) {
|
|
15128
|
+
return false;
|
|
15129
|
+
}
|
|
15130
|
+
return isNodeMatchingSelectorFocusable(options, node);
|
|
15131
|
+
};
|
|
15132
|
+
|
|
15133
|
+
|
|
15134
|
+
/* Injected with object hook! */
|
|
15135
|
+
|
|
15136
|
+
/*!
|
|
15137
|
+
* focus-trap 7.4.3
|
|
15138
|
+
* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
|
|
15139
|
+
*/
|
|
15140
|
+
|
|
15141
|
+
function ownKeys(object, enumerableOnly) {
|
|
15142
|
+
var keys = Object.keys(object);
|
|
15143
|
+
if (Object.getOwnPropertySymbols) {
|
|
15144
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
15145
|
+
enumerableOnly && (symbols = symbols.filter(function (sym) {
|
|
15146
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
15147
|
+
})), keys.push.apply(keys, symbols);
|
|
15148
|
+
}
|
|
15149
|
+
return keys;
|
|
15150
|
+
}
|
|
15151
|
+
function _objectSpread2(target) {
|
|
15152
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
15153
|
+
var source = null != arguments[i] ? arguments[i] : {};
|
|
15154
|
+
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
|
|
15155
|
+
_defineProperty(target, key, source[key]);
|
|
15156
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
|
|
15157
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
15158
|
+
});
|
|
15159
|
+
}
|
|
15160
|
+
return target;
|
|
15161
|
+
}
|
|
15162
|
+
function _defineProperty(obj, key, value) {
|
|
15163
|
+
key = _toPropertyKey(key);
|
|
15164
|
+
if (key in obj) {
|
|
15165
|
+
Object.defineProperty(obj, key, {
|
|
15166
|
+
value: value,
|
|
15167
|
+
enumerable: true,
|
|
15168
|
+
configurable: true,
|
|
15169
|
+
writable: true
|
|
15170
|
+
});
|
|
15171
|
+
} else {
|
|
15172
|
+
obj[key] = value;
|
|
15173
|
+
}
|
|
15174
|
+
return obj;
|
|
15175
|
+
}
|
|
15176
|
+
function _toPrimitive(input, hint) {
|
|
15177
|
+
if (typeof input !== "object" || input === null) return input;
|
|
15178
|
+
var prim = input[Symbol.toPrimitive];
|
|
15179
|
+
if (prim !== undefined) {
|
|
15180
|
+
var res = prim.call(input, hint || "default");
|
|
15181
|
+
if (typeof res !== "object") return res;
|
|
15182
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
15183
|
+
}
|
|
15184
|
+
return (hint === "string" ? String : Number)(input);
|
|
15185
|
+
}
|
|
15186
|
+
function _toPropertyKey(arg) {
|
|
15187
|
+
var key = _toPrimitive(arg, "string");
|
|
15188
|
+
return typeof key === "symbol" ? key : String(key);
|
|
15189
|
+
}
|
|
15190
|
+
|
|
15191
|
+
var activeFocusTraps = {
|
|
15192
|
+
activateTrap: function activateTrap(trapStack, trap) {
|
|
15193
|
+
if (trapStack.length > 0) {
|
|
15194
|
+
var activeTrap = trapStack[trapStack.length - 1];
|
|
15195
|
+
if (activeTrap !== trap) {
|
|
15196
|
+
activeTrap.pause();
|
|
15197
|
+
}
|
|
15198
|
+
}
|
|
15199
|
+
var trapIndex = trapStack.indexOf(trap);
|
|
15200
|
+
if (trapIndex === -1) {
|
|
15201
|
+
trapStack.push(trap);
|
|
15202
|
+
} else {
|
|
15203
|
+
// move this existing trap to the front of the queue
|
|
15204
|
+
trapStack.splice(trapIndex, 1);
|
|
15205
|
+
trapStack.push(trap);
|
|
15206
|
+
}
|
|
15207
|
+
},
|
|
15208
|
+
deactivateTrap: function deactivateTrap(trapStack, trap) {
|
|
15209
|
+
var trapIndex = trapStack.indexOf(trap);
|
|
15210
|
+
if (trapIndex !== -1) {
|
|
15211
|
+
trapStack.splice(trapIndex, 1);
|
|
15212
|
+
}
|
|
15213
|
+
if (trapStack.length > 0) {
|
|
15214
|
+
trapStack[trapStack.length - 1].unpause();
|
|
15215
|
+
}
|
|
15216
|
+
}
|
|
15217
|
+
};
|
|
15218
|
+
var isSelectableInput = function isSelectableInput(node) {
|
|
15219
|
+
return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';
|
|
15220
|
+
};
|
|
15221
|
+
var isEscapeEvent = function isEscapeEvent(e) {
|
|
15222
|
+
return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;
|
|
15223
|
+
};
|
|
15224
|
+
var isTabEvent = function isTabEvent(e) {
|
|
15225
|
+
return e.key === 'Tab' || e.keyCode === 9;
|
|
15226
|
+
};
|
|
15227
|
+
|
|
15228
|
+
// checks for TAB by default
|
|
15229
|
+
var isKeyForward = function isKeyForward(e) {
|
|
15230
|
+
return isTabEvent(e) && !e.shiftKey;
|
|
15231
|
+
};
|
|
15232
|
+
|
|
15233
|
+
// checks for SHIFT+TAB by default
|
|
15234
|
+
var isKeyBackward = function isKeyBackward(e) {
|
|
15235
|
+
return isTabEvent(e) && e.shiftKey;
|
|
15236
|
+
};
|
|
15237
|
+
var delay = function delay(fn) {
|
|
15238
|
+
return setTimeout(fn, 0);
|
|
15239
|
+
};
|
|
15240
|
+
|
|
15241
|
+
// Array.find/findIndex() are not supported on IE; this replicates enough
|
|
15242
|
+
// of Array.findIndex() for our needs
|
|
15243
|
+
var findIndex = function findIndex(arr, fn) {
|
|
15244
|
+
var idx = -1;
|
|
15245
|
+
arr.every(function (value, i) {
|
|
15246
|
+
if (fn(value)) {
|
|
15247
|
+
idx = i;
|
|
15248
|
+
return false; // break
|
|
15249
|
+
}
|
|
15250
|
+
|
|
15251
|
+
return true; // next
|
|
15252
|
+
});
|
|
15253
|
+
|
|
15254
|
+
return idx;
|
|
15255
|
+
};
|
|
15256
|
+
|
|
15257
|
+
/**
|
|
15258
|
+
* Get an option's value when it could be a plain value, or a handler that provides
|
|
15259
|
+
* the value.
|
|
15260
|
+
* @param {*} value Option's value to check.
|
|
15261
|
+
* @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.
|
|
15262
|
+
* @returns {*} The `value`, or the handler's returned value.
|
|
15263
|
+
*/
|
|
15264
|
+
var valueOrHandler = function valueOrHandler(value) {
|
|
15265
|
+
for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
15266
|
+
params[_key - 1] = arguments[_key];
|
|
15267
|
+
}
|
|
15268
|
+
return typeof value === 'function' ? value.apply(void 0, params) : value;
|
|
15269
|
+
};
|
|
15270
|
+
var getActualTarget = function getActualTarget(event) {
|
|
15271
|
+
// NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the
|
|
15272
|
+
// shadow host. However, event.target.composedPath() will be an array of
|
|
15273
|
+
// nodes "clicked" from inner-most (the actual element inside the shadow) to
|
|
15274
|
+
// outer-most (the host HTML document). If we have access to composedPath(),
|
|
15275
|
+
// then use its first element; otherwise, fall back to event.target (and
|
|
15276
|
+
// this only works for an _open_ shadow DOM; otherwise,
|
|
15277
|
+
// composedPath()[0] === event.target always).
|
|
15278
|
+
return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target;
|
|
15279
|
+
};
|
|
15280
|
+
|
|
15281
|
+
// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this
|
|
15282
|
+
// current instance use the same stack if `userOptions.trapStack` isn't specified
|
|
15283
|
+
var internalTrapStack = [];
|
|
15284
|
+
var createFocusTrap = function createFocusTrap(elements, userOptions) {
|
|
15285
|
+
// SSR: a live trap shouldn't be created in this type of environment so this
|
|
15286
|
+
// should be safe code to execute if the `document` option isn't specified
|
|
15287
|
+
var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;
|
|
15288
|
+
var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack;
|
|
15289
|
+
var config = _objectSpread2({
|
|
15290
|
+
returnFocusOnDeactivate: true,
|
|
15291
|
+
escapeDeactivates: true,
|
|
15292
|
+
delayInitialFocus: true,
|
|
15293
|
+
isKeyForward: isKeyForward,
|
|
15294
|
+
isKeyBackward: isKeyBackward
|
|
15295
|
+
}, userOptions);
|
|
15296
|
+
var state = {
|
|
15297
|
+
// containers given to createFocusTrap()
|
|
15298
|
+
// @type {Array<HTMLElement>}
|
|
15299
|
+
containers: [],
|
|
15300
|
+
// list of objects identifying tabbable nodes in `containers` in the trap
|
|
15301
|
+
// NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap
|
|
15302
|
+
// is active, but the trap should never get to a state where there isn't at least one group
|
|
15303
|
+
// with at least one tabbable node in it (that would lead to an error condition that would
|
|
15304
|
+
// result in an error being thrown)
|
|
15305
|
+
// @type {Array<{
|
|
15306
|
+
// container: HTMLElement,
|
|
15307
|
+
// tabbableNodes: Array<HTMLElement>, // empty if none
|
|
15308
|
+
// focusableNodes: Array<HTMLElement>, // empty if none
|
|
15309
|
+
// firstTabbableNode: HTMLElement|null,
|
|
15310
|
+
// lastTabbableNode: HTMLElement|null,
|
|
15311
|
+
// nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined
|
|
15312
|
+
// }>}
|
|
15313
|
+
containerGroups: [],
|
|
15314
|
+
// same order/length as `containers` list
|
|
15315
|
+
|
|
15316
|
+
// references to objects in `containerGroups`, but only those that actually have
|
|
15317
|
+
// tabbable nodes in them
|
|
15318
|
+
// NOTE: same order as `containers` and `containerGroups`, but __not necessarily__
|
|
15319
|
+
// the same length
|
|
15320
|
+
tabbableGroups: [],
|
|
15321
|
+
nodeFocusedBeforeActivation: null,
|
|
15322
|
+
mostRecentlyFocusedNode: null,
|
|
15323
|
+
active: false,
|
|
15324
|
+
paused: false,
|
|
15325
|
+
// timer ID for when delayInitialFocus is true and initial focus in this trap
|
|
15326
|
+
// has been delayed during activation
|
|
15327
|
+
delayInitialFocusTimer: undefined
|
|
15328
|
+
};
|
|
15329
|
+
var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later
|
|
15330
|
+
|
|
15331
|
+
/**
|
|
15332
|
+
* Gets a configuration option value.
|
|
15333
|
+
* @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,
|
|
15334
|
+
* value will be taken from this object. Otherwise, value will be taken from base configuration.
|
|
15335
|
+
* @param {string} optionName Name of the option whose value is sought.
|
|
15336
|
+
* @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`
|
|
15337
|
+
* IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.
|
|
15338
|
+
*/
|
|
15339
|
+
var getOption = function getOption(configOverrideOptions, optionName, configOptionName) {
|
|
15340
|
+
return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName];
|
|
15341
|
+
};
|
|
15342
|
+
|
|
15343
|
+
/**
|
|
15344
|
+
* Finds the index of the container that contains the element.
|
|
15345
|
+
* @param {HTMLElement} element
|
|
15346
|
+
* @param {Event} [event]
|
|
15347
|
+
* @returns {number} Index of the container in either `state.containers` or
|
|
15348
|
+
* `state.containerGroups` (the order/length of these lists are the same); -1
|
|
15349
|
+
* if the element isn't found.
|
|
15350
|
+
*/
|
|
15351
|
+
var findContainerIndex = function findContainerIndex(element, event) {
|
|
15352
|
+
var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined;
|
|
15353
|
+
// NOTE: search `containerGroups` because it's possible a group contains no tabbable
|
|
15354
|
+
// nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)
|
|
15355
|
+
// and we still need to find the element in there
|
|
15356
|
+
return state.containerGroups.findIndex(function (_ref) {
|
|
15357
|
+
var container = _ref.container,
|
|
15358
|
+
tabbableNodes = _ref.tabbableNodes;
|
|
15359
|
+
return container.contains(element) || ( // fall back to explicit tabbable search which will take into consideration any
|
|
15360
|
+
// web components if the `tabbableOptions.getShadowRoot` option was used for
|
|
15361
|
+
// the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't
|
|
15362
|
+
// look inside web components even if open)
|
|
15363
|
+
composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function (node) {
|
|
15364
|
+
return node === element;
|
|
15365
|
+
});
|
|
15366
|
+
});
|
|
15367
|
+
};
|
|
15368
|
+
|
|
15369
|
+
/**
|
|
15370
|
+
* Gets the node for the given option, which is expected to be an option that
|
|
15371
|
+
* can be either a DOM node, a string that is a selector to get a node, `false`
|
|
15372
|
+
* (if a node is explicitly NOT given), or a function that returns any of these
|
|
15373
|
+
* values.
|
|
15374
|
+
* @param {string} optionName
|
|
15375
|
+
* @returns {undefined | false | HTMLElement | SVGElement} Returns
|
|
15376
|
+
* `undefined` if the option is not specified; `false` if the option
|
|
15377
|
+
* resolved to `false` (node explicitly not given); otherwise, the resolved
|
|
15378
|
+
* DOM node.
|
|
15379
|
+
* @throws {Error} If the option is set, not `false`, and is not, or does not
|
|
15380
|
+
* resolve to a node.
|
|
15381
|
+
*/
|
|
15382
|
+
var getNodeForOption = function getNodeForOption(optionName) {
|
|
15383
|
+
var optionValue = config[optionName];
|
|
15384
|
+
if (typeof optionValue === 'function') {
|
|
15385
|
+
for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
15386
|
+
params[_key2 - 1] = arguments[_key2];
|
|
15387
|
+
}
|
|
15388
|
+
optionValue = optionValue.apply(void 0, params);
|
|
15389
|
+
}
|
|
15390
|
+
if (optionValue === true) {
|
|
15391
|
+
optionValue = undefined; // use default value
|
|
15392
|
+
}
|
|
15393
|
+
|
|
15394
|
+
if (!optionValue) {
|
|
15395
|
+
if (optionValue === undefined || optionValue === false) {
|
|
15396
|
+
return optionValue;
|
|
15397
|
+
}
|
|
15398
|
+
// else, empty string (invalid), null (invalid), 0 (invalid)
|
|
15399
|
+
|
|
15400
|
+
throw new Error("`".concat(optionName, "` was specified but was not a node, or did not return a node"));
|
|
15401
|
+
}
|
|
15402
|
+
var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point
|
|
15403
|
+
|
|
15404
|
+
if (typeof optionValue === 'string') {
|
|
15405
|
+
node = doc.querySelector(optionValue); // resolve to node, or null if fails
|
|
15406
|
+
if (!node) {
|
|
15407
|
+
throw new Error("`".concat(optionName, "` as selector refers to no known node"));
|
|
15408
|
+
}
|
|
15409
|
+
}
|
|
15410
|
+
return node;
|
|
15411
|
+
};
|
|
15412
|
+
var getInitialFocusNode = function getInitialFocusNode() {
|
|
15413
|
+
var node = getNodeForOption('initialFocus');
|
|
15414
|
+
|
|
15415
|
+
// false explicitly indicates we want no initialFocus at all
|
|
15416
|
+
if (node === false) {
|
|
15417
|
+
return false;
|
|
15418
|
+
}
|
|
15419
|
+
if (node === undefined || !isFocusable(node, config.tabbableOptions)) {
|
|
15420
|
+
// option not specified nor focusable: use fallback options
|
|
15421
|
+
if (findContainerIndex(doc.activeElement) >= 0) {
|
|
15422
|
+
node = doc.activeElement;
|
|
15423
|
+
} else {
|
|
15424
|
+
var firstTabbableGroup = state.tabbableGroups[0];
|
|
15425
|
+
var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;
|
|
15426
|
+
|
|
15427
|
+
// NOTE: `fallbackFocus` option function cannot return `false` (not supported)
|
|
15428
|
+
node = firstTabbableNode || getNodeForOption('fallbackFocus');
|
|
15429
|
+
}
|
|
15430
|
+
}
|
|
15431
|
+
if (!node) {
|
|
15432
|
+
throw new Error('Your focus-trap needs to have at least one focusable element');
|
|
15433
|
+
}
|
|
15434
|
+
return node;
|
|
15435
|
+
};
|
|
15436
|
+
var updateTabbableNodes = function updateTabbableNodes() {
|
|
15437
|
+
state.containerGroups = state.containers.map(function (container) {
|
|
15438
|
+
var tabbableNodes = tabbable(container, config.tabbableOptions);
|
|
15439
|
+
|
|
15440
|
+
// NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes
|
|
15441
|
+
// are a superset of tabbable nodes
|
|
15442
|
+
var focusableNodes = focusable(container, config.tabbableOptions);
|
|
15443
|
+
return {
|
|
15444
|
+
container: container,
|
|
15445
|
+
tabbableNodes: tabbableNodes,
|
|
15446
|
+
focusableNodes: focusableNodes,
|
|
15447
|
+
firstTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[0] : null,
|
|
15448
|
+
lastTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : null,
|
|
15449
|
+
/**
|
|
15450
|
+
* Finds the __tabbable__ node that follows the given node in the specified direction,
|
|
15451
|
+
* in this container, if any.
|
|
15452
|
+
* @param {HTMLElement} node
|
|
15453
|
+
* @param {boolean} [forward] True if going in forward tab order; false if going
|
|
15454
|
+
* in reverse.
|
|
15455
|
+
* @returns {HTMLElement|undefined} The next tabbable node, if any.
|
|
15456
|
+
*/
|
|
15457
|
+
nextTabbableNode: function nextTabbableNode(node) {
|
|
15458
|
+
var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
15459
|
+
// NOTE: If tabindex is positive (in order to manipulate the tab order separate
|
|
15460
|
+
// from the DOM order), this __will not work__ because the list of focusableNodes,
|
|
15461
|
+
// while it contains tabbable nodes, does not sort its nodes in any order other
|
|
15462
|
+
// than DOM order, because it can't: Where would you place focusable (but not
|
|
15463
|
+
// tabbable) nodes in that order? They have no order, because they aren't tabbale...
|
|
15464
|
+
// Support for positive tabindex is already broken and hard to manage (possibly
|
|
15465
|
+
// not supportable, TBD), so this isn't going to make things worse than they
|
|
15466
|
+
// already are, and at least makes things better for the majority of cases where
|
|
15467
|
+
// tabindex is either 0/unset or negative.
|
|
15468
|
+
// FYI, positive tabindex issue: https://github.com/focus-trap/focus-trap/issues/375
|
|
15469
|
+
var nodeIdx = focusableNodes.findIndex(function (n) {
|
|
15470
|
+
return n === node;
|
|
15471
|
+
});
|
|
15472
|
+
if (nodeIdx < 0) {
|
|
15473
|
+
return undefined;
|
|
15474
|
+
}
|
|
15475
|
+
if (forward) {
|
|
15476
|
+
return focusableNodes.slice(nodeIdx + 1).find(function (n) {
|
|
15477
|
+
return isTabbable(n, config.tabbableOptions);
|
|
15478
|
+
});
|
|
15479
|
+
}
|
|
15480
|
+
return focusableNodes.slice(0, nodeIdx).reverse().find(function (n) {
|
|
15481
|
+
return isTabbable(n, config.tabbableOptions);
|
|
15482
|
+
});
|
|
15483
|
+
}
|
|
15484
|
+
};
|
|
15485
|
+
});
|
|
15486
|
+
state.tabbableGroups = state.containerGroups.filter(function (group) {
|
|
15487
|
+
return group.tabbableNodes.length > 0;
|
|
15488
|
+
});
|
|
15489
|
+
|
|
15490
|
+
// throw if no groups have tabbable nodes and we don't have a fallback focus node either
|
|
15491
|
+
if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option
|
|
15492
|
+
) {
|
|
15493
|
+
throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');
|
|
15494
|
+
}
|
|
15495
|
+
};
|
|
15496
|
+
var tryFocus = function tryFocus(node) {
|
|
15497
|
+
if (node === false) {
|
|
15498
|
+
return;
|
|
15499
|
+
}
|
|
15500
|
+
if (node === doc.activeElement) {
|
|
15501
|
+
return;
|
|
15502
|
+
}
|
|
15503
|
+
if (!node || !node.focus) {
|
|
15504
|
+
tryFocus(getInitialFocusNode());
|
|
15505
|
+
return;
|
|
15506
|
+
}
|
|
15507
|
+
node.focus({
|
|
15508
|
+
preventScroll: !!config.preventScroll
|
|
15509
|
+
});
|
|
15510
|
+
state.mostRecentlyFocusedNode = node;
|
|
15511
|
+
if (isSelectableInput(node)) {
|
|
15512
|
+
node.select();
|
|
15513
|
+
}
|
|
15514
|
+
};
|
|
15515
|
+
var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {
|
|
15516
|
+
var node = getNodeForOption('setReturnFocus', previousActiveElement);
|
|
15517
|
+
return node ? node : node === false ? false : previousActiveElement;
|
|
15518
|
+
};
|
|
15519
|
+
|
|
15520
|
+
// This needs to be done on mousedown and touchstart instead of click
|
|
15521
|
+
// so that it precedes the focus event.
|
|
15522
|
+
var checkPointerDown = function checkPointerDown(e) {
|
|
15523
|
+
var target = getActualTarget(e);
|
|
15524
|
+
if (findContainerIndex(target, e) >= 0) {
|
|
15525
|
+
// allow the click since it ocurred inside the trap
|
|
15526
|
+
return;
|
|
15527
|
+
}
|
|
15528
|
+
if (valueOrHandler(config.clickOutsideDeactivates, e)) {
|
|
15529
|
+
// immediately deactivate the trap
|
|
15530
|
+
trap.deactivate({
|
|
15531
|
+
// NOTE: by setting `returnFocus: false`, deactivate() will do nothing,
|
|
15532
|
+
// which will result in the outside click setting focus to the node
|
|
15533
|
+
// that was clicked (and if not focusable, to "nothing"); by setting
|
|
15534
|
+
// `returnFocus: true`, we'll attempt to re-focus the node originally-focused
|
|
15535
|
+
// on activation (or the configured `setReturnFocus` node), whether the
|
|
15536
|
+
// outside click was on a focusable node or not
|
|
15537
|
+
returnFocus: config.returnFocusOnDeactivate
|
|
15538
|
+
});
|
|
15539
|
+
return;
|
|
15540
|
+
}
|
|
15541
|
+
|
|
15542
|
+
// This is needed for mobile devices.
|
|
15543
|
+
// (If we'll only let `click` events through,
|
|
15544
|
+
// then on mobile they will be blocked anyways if `touchstart` is blocked.)
|
|
15545
|
+
if (valueOrHandler(config.allowOutsideClick, e)) {
|
|
15546
|
+
// allow the click outside the trap to take place
|
|
15547
|
+
return;
|
|
15548
|
+
}
|
|
15549
|
+
|
|
15550
|
+
// otherwise, prevent the click
|
|
15551
|
+
e.preventDefault();
|
|
15552
|
+
};
|
|
15553
|
+
|
|
15554
|
+
// In case focus escapes the trap for some strange reason, pull it back in.
|
|
15555
|
+
var checkFocusIn = function checkFocusIn(e) {
|
|
15556
|
+
var target = getActualTarget(e);
|
|
15557
|
+
var targetContained = findContainerIndex(target, e) >= 0;
|
|
15558
|
+
|
|
15559
|
+
// In Firefox when you Tab out of an iframe the Document is briefly focused.
|
|
15560
|
+
if (targetContained || target instanceof Document) {
|
|
15561
|
+
if (targetContained) {
|
|
15562
|
+
state.mostRecentlyFocusedNode = target;
|
|
15563
|
+
}
|
|
15564
|
+
} else {
|
|
15565
|
+
// escaped! pull it back in to where it just left
|
|
15566
|
+
e.stopImmediatePropagation();
|
|
15567
|
+
tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());
|
|
15568
|
+
}
|
|
15569
|
+
};
|
|
15570
|
+
|
|
15571
|
+
// Hijack key nav events on the first and last focusable nodes of the trap,
|
|
15572
|
+
// in order to prevent focus from escaping. If it escapes for even a
|
|
15573
|
+
// moment it can end up scrolling the page and causing confusion so we
|
|
15574
|
+
// kind of need to capture the action at the keydown phase.
|
|
15575
|
+
var checkKeyNav = function checkKeyNav(event) {
|
|
15576
|
+
var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
15577
|
+
var target = getActualTarget(event);
|
|
15578
|
+
updateTabbableNodes();
|
|
15579
|
+
var destinationNode = null;
|
|
15580
|
+
if (state.tabbableGroups.length > 0) {
|
|
15581
|
+
// make sure the target is actually contained in a group
|
|
15582
|
+
// NOTE: the target may also be the container itself if it's focusable
|
|
15583
|
+
// with tabIndex='-1' and was given initial focus
|
|
15584
|
+
var containerIndex = findContainerIndex(target, event);
|
|
15585
|
+
var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;
|
|
15586
|
+
if (containerIndex < 0) {
|
|
15587
|
+
// target not found in any group: quite possible focus has escaped the trap,
|
|
15588
|
+
// so bring it back into...
|
|
15589
|
+
if (isBackward) {
|
|
15590
|
+
// ...the last node in the last group
|
|
15591
|
+
destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;
|
|
15592
|
+
} else {
|
|
15593
|
+
// ...the first node in the first group
|
|
15594
|
+
destinationNode = state.tabbableGroups[0].firstTabbableNode;
|
|
15595
|
+
}
|
|
15596
|
+
} else if (isBackward) {
|
|
15597
|
+
// REVERSE
|
|
15598
|
+
|
|
15599
|
+
// is the target the first tabbable node in a group?
|
|
15600
|
+
var startOfGroupIndex = findIndex(state.tabbableGroups, function (_ref2) {
|
|
15601
|
+
var firstTabbableNode = _ref2.firstTabbableNode;
|
|
15602
|
+
return target === firstTabbableNode;
|
|
15603
|
+
});
|
|
15604
|
+
if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {
|
|
15605
|
+
// an exception case where the target is either the container itself, or
|
|
15606
|
+
// a non-tabbable node that was given focus (i.e. tabindex is negative
|
|
15607
|
+
// and user clicked on it or node was programmatically given focus)
|
|
15608
|
+
// and is not followed by any other tabbable node, in which
|
|
15609
|
+
// case, we should handle shift+tab as if focus were on the container's
|
|
15610
|
+
// first tabbable node, and go to the last tabbable node of the LAST group
|
|
15611
|
+
startOfGroupIndex = containerIndex;
|
|
15612
|
+
}
|
|
15613
|
+
if (startOfGroupIndex >= 0) {
|
|
15614
|
+
// YES: then shift+tab should go to the last tabbable node in the
|
|
15615
|
+
// previous group (and wrap around to the last tabbable node of
|
|
15616
|
+
// the LAST group if it's the first tabbable node of the FIRST group)
|
|
15617
|
+
var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;
|
|
15618
|
+
var destinationGroup = state.tabbableGroups[destinationGroupIndex];
|
|
15619
|
+
destinationNode = destinationGroup.lastTabbableNode;
|
|
15620
|
+
} else if (!isTabEvent(event)) {
|
|
15621
|
+
// user must have customized the nav keys so we have to move focus manually _within_
|
|
15622
|
+
// the active group: do this based on the order determined by tabbable()
|
|
15623
|
+
destinationNode = containerGroup.nextTabbableNode(target, false);
|
|
15624
|
+
}
|
|
15625
|
+
} else {
|
|
15626
|
+
// FORWARD
|
|
15627
|
+
|
|
15628
|
+
// is the target the last tabbable node in a group?
|
|
15629
|
+
var lastOfGroupIndex = findIndex(state.tabbableGroups, function (_ref3) {
|
|
15630
|
+
var lastTabbableNode = _ref3.lastTabbableNode;
|
|
15631
|
+
return target === lastTabbableNode;
|
|
15632
|
+
});
|
|
15633
|
+
if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {
|
|
15634
|
+
// an exception case where the target is the container itself, or
|
|
15635
|
+
// a non-tabbable node that was given focus (i.e. tabindex is negative
|
|
15636
|
+
// and user clicked on it or node was programmatically given focus)
|
|
15637
|
+
// and is not followed by any other tabbable node, in which
|
|
15638
|
+
// case, we should handle tab as if focus were on the container's
|
|
15639
|
+
// last tabbable node, and go to the first tabbable node of the FIRST group
|
|
15640
|
+
lastOfGroupIndex = containerIndex;
|
|
15641
|
+
}
|
|
15642
|
+
if (lastOfGroupIndex >= 0) {
|
|
15643
|
+
// YES: then tab should go to the first tabbable node in the next
|
|
15644
|
+
// group (and wrap around to the first tabbable node of the FIRST
|
|
15645
|
+
// group if it's the last tabbable node of the LAST group)
|
|
15646
|
+
var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;
|
|
15647
|
+
var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];
|
|
15648
|
+
destinationNode = _destinationGroup.firstTabbableNode;
|
|
15649
|
+
} else if (!isTabEvent(event)) {
|
|
15650
|
+
// user must have customized the nav keys so we have to move focus manually _within_
|
|
15651
|
+
// the active group: do this based on the order determined by tabbable()
|
|
15652
|
+
destinationNode = containerGroup.nextTabbableNode(target);
|
|
15653
|
+
}
|
|
15654
|
+
}
|
|
15655
|
+
} else {
|
|
15656
|
+
// no groups available
|
|
15657
|
+
// NOTE: the fallbackFocus option does not support returning false to opt-out
|
|
15658
|
+
destinationNode = getNodeForOption('fallbackFocus');
|
|
15659
|
+
}
|
|
15660
|
+
if (destinationNode) {
|
|
15661
|
+
if (isTabEvent(event)) {
|
|
15662
|
+
// since tab natively moves focus, we wouldn't have a destination node unless we
|
|
15663
|
+
// were on the edge of a container and had to move to the next/previous edge, in
|
|
15664
|
+
// which case we want to prevent default to keep the browser from moving focus
|
|
15665
|
+
// to where it normally would
|
|
15666
|
+
event.preventDefault();
|
|
15667
|
+
}
|
|
15668
|
+
tryFocus(destinationNode);
|
|
15669
|
+
}
|
|
15670
|
+
// else, let the browser take care of [shift+]tab and move the focus
|
|
15671
|
+
};
|
|
15672
|
+
|
|
15673
|
+
var checkKey = function checkKey(event) {
|
|
15674
|
+
if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {
|
|
15675
|
+
event.preventDefault();
|
|
15676
|
+
trap.deactivate();
|
|
15677
|
+
return;
|
|
15678
|
+
}
|
|
15679
|
+
if (config.isKeyForward(event) || config.isKeyBackward(event)) {
|
|
15680
|
+
checkKeyNav(event, config.isKeyBackward(event));
|
|
15681
|
+
}
|
|
15682
|
+
};
|
|
15683
|
+
var checkClick = function checkClick(e) {
|
|
15684
|
+
var target = getActualTarget(e);
|
|
15685
|
+
if (findContainerIndex(target, e) >= 0) {
|
|
15686
|
+
return;
|
|
15687
|
+
}
|
|
15688
|
+
if (valueOrHandler(config.clickOutsideDeactivates, e)) {
|
|
15689
|
+
return;
|
|
15690
|
+
}
|
|
15691
|
+
if (valueOrHandler(config.allowOutsideClick, e)) {
|
|
15692
|
+
return;
|
|
15693
|
+
}
|
|
15694
|
+
e.preventDefault();
|
|
15695
|
+
e.stopImmediatePropagation();
|
|
15696
|
+
};
|
|
15697
|
+
|
|
15698
|
+
//
|
|
15699
|
+
// EVENT LISTENERS
|
|
15700
|
+
//
|
|
15701
|
+
|
|
15702
|
+
var addListeners = function addListeners() {
|
|
15703
|
+
if (!state.active) {
|
|
15704
|
+
return;
|
|
15705
|
+
}
|
|
15706
|
+
|
|
15707
|
+
// There can be only one listening focus trap at a time
|
|
15708
|
+
activeFocusTraps.activateTrap(trapStack, trap);
|
|
15709
|
+
|
|
15710
|
+
// Delay ensures that the focused element doesn't capture the event
|
|
15711
|
+
// that caused the focus trap activation.
|
|
15712
|
+
state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function () {
|
|
15713
|
+
tryFocus(getInitialFocusNode());
|
|
15714
|
+
}) : tryFocus(getInitialFocusNode());
|
|
15715
|
+
doc.addEventListener('focusin', checkFocusIn, true);
|
|
15716
|
+
doc.addEventListener('mousedown', checkPointerDown, {
|
|
15717
|
+
capture: true,
|
|
15718
|
+
passive: false
|
|
15719
|
+
});
|
|
15720
|
+
doc.addEventListener('touchstart', checkPointerDown, {
|
|
15721
|
+
capture: true,
|
|
15722
|
+
passive: false
|
|
15723
|
+
});
|
|
15724
|
+
doc.addEventListener('click', checkClick, {
|
|
15725
|
+
capture: true,
|
|
15726
|
+
passive: false
|
|
15727
|
+
});
|
|
15728
|
+
doc.addEventListener('keydown', checkKey, {
|
|
15729
|
+
capture: true,
|
|
15730
|
+
passive: false
|
|
15731
|
+
});
|
|
15732
|
+
return trap;
|
|
15733
|
+
};
|
|
15734
|
+
var removeListeners = function removeListeners() {
|
|
15735
|
+
if (!state.active) {
|
|
15736
|
+
return;
|
|
15737
|
+
}
|
|
15738
|
+
doc.removeEventListener('focusin', checkFocusIn, true);
|
|
15739
|
+
doc.removeEventListener('mousedown', checkPointerDown, true);
|
|
15740
|
+
doc.removeEventListener('touchstart', checkPointerDown, true);
|
|
15741
|
+
doc.removeEventListener('click', checkClick, true);
|
|
15742
|
+
doc.removeEventListener('keydown', checkKey, true);
|
|
15743
|
+
return trap;
|
|
15744
|
+
};
|
|
15745
|
+
|
|
15746
|
+
//
|
|
15747
|
+
// MUTATION OBSERVER
|
|
15748
|
+
//
|
|
15749
|
+
|
|
15750
|
+
var checkDomRemoval = function checkDomRemoval(mutations) {
|
|
15751
|
+
var isFocusedNodeRemoved = mutations.some(function (mutation) {
|
|
15752
|
+
var removedNodes = Array.from(mutation.removedNodes);
|
|
15753
|
+
return removedNodes.some(function (node) {
|
|
15754
|
+
return node === state.mostRecentlyFocusedNode;
|
|
15755
|
+
});
|
|
15756
|
+
});
|
|
15757
|
+
|
|
15758
|
+
// If the currently focused is removed then browsers will move focus to the
|
|
15759
|
+
// <body> element. If this happens, try to move focus back into the trap.
|
|
15760
|
+
if (isFocusedNodeRemoved) {
|
|
15761
|
+
tryFocus(getInitialFocusNode());
|
|
15762
|
+
}
|
|
15763
|
+
};
|
|
15764
|
+
|
|
15765
|
+
// Use MutationObserver - if supported - to detect if focused node is removed
|
|
15766
|
+
// from the DOM.
|
|
15767
|
+
var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined;
|
|
15768
|
+
var updateObservedNodes = function updateObservedNodes() {
|
|
15769
|
+
if (!mutationObserver) {
|
|
15770
|
+
return;
|
|
15771
|
+
}
|
|
15772
|
+
mutationObserver.disconnect();
|
|
15773
|
+
if (state.active && !state.paused) {
|
|
15774
|
+
state.containers.map(function (container) {
|
|
15775
|
+
mutationObserver.observe(container, {
|
|
15776
|
+
subtree: true,
|
|
15777
|
+
childList: true
|
|
15778
|
+
});
|
|
15779
|
+
});
|
|
15780
|
+
}
|
|
15781
|
+
};
|
|
15782
|
+
|
|
15783
|
+
//
|
|
15784
|
+
// TRAP DEFINITION
|
|
15785
|
+
//
|
|
15786
|
+
|
|
15787
|
+
trap = {
|
|
15788
|
+
get active() {
|
|
15789
|
+
return state.active;
|
|
15790
|
+
},
|
|
15791
|
+
get paused() {
|
|
15792
|
+
return state.paused;
|
|
15793
|
+
},
|
|
15794
|
+
activate: function activate(activateOptions) {
|
|
15795
|
+
if (state.active) {
|
|
15796
|
+
return this;
|
|
15797
|
+
}
|
|
15798
|
+
var onActivate = getOption(activateOptions, 'onActivate');
|
|
15799
|
+
var onPostActivate = getOption(activateOptions, 'onPostActivate');
|
|
15800
|
+
var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');
|
|
15801
|
+
if (!checkCanFocusTrap) {
|
|
15802
|
+
updateTabbableNodes();
|
|
15803
|
+
}
|
|
15804
|
+
state.active = true;
|
|
15805
|
+
state.paused = false;
|
|
15806
|
+
state.nodeFocusedBeforeActivation = doc.activeElement;
|
|
15807
|
+
onActivate === null || onActivate === void 0 ? void 0 : onActivate();
|
|
15808
|
+
var finishActivation = function finishActivation() {
|
|
15809
|
+
if (checkCanFocusTrap) {
|
|
15810
|
+
updateTabbableNodes();
|
|
15811
|
+
}
|
|
15812
|
+
addListeners();
|
|
15813
|
+
updateObservedNodes();
|
|
15814
|
+
onPostActivate === null || onPostActivate === void 0 ? void 0 : onPostActivate();
|
|
15815
|
+
};
|
|
15816
|
+
if (checkCanFocusTrap) {
|
|
15817
|
+
checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);
|
|
15818
|
+
return this;
|
|
15819
|
+
}
|
|
15820
|
+
finishActivation();
|
|
15821
|
+
return this;
|
|
15822
|
+
},
|
|
15823
|
+
deactivate: function deactivate(deactivateOptions) {
|
|
15824
|
+
if (!state.active) {
|
|
15825
|
+
return this;
|
|
15826
|
+
}
|
|
15827
|
+
var options = _objectSpread2({
|
|
15828
|
+
onDeactivate: config.onDeactivate,
|
|
15829
|
+
onPostDeactivate: config.onPostDeactivate,
|
|
15830
|
+
checkCanReturnFocus: config.checkCanReturnFocus
|
|
15831
|
+
}, deactivateOptions);
|
|
15832
|
+
clearTimeout(state.delayInitialFocusTimer); // noop if undefined
|
|
15833
|
+
state.delayInitialFocusTimer = undefined;
|
|
15834
|
+
removeListeners();
|
|
15835
|
+
state.active = false;
|
|
15836
|
+
state.paused = false;
|
|
15837
|
+
updateObservedNodes();
|
|
15838
|
+
activeFocusTraps.deactivateTrap(trapStack, trap);
|
|
15839
|
+
var onDeactivate = getOption(options, 'onDeactivate');
|
|
15840
|
+
var onPostDeactivate = getOption(options, 'onPostDeactivate');
|
|
15841
|
+
var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');
|
|
15842
|
+
var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate');
|
|
15843
|
+
onDeactivate === null || onDeactivate === void 0 ? void 0 : onDeactivate();
|
|
15844
|
+
var finishDeactivation = function finishDeactivation() {
|
|
15845
|
+
delay(function () {
|
|
15846
|
+
if (returnFocus) {
|
|
15847
|
+
tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));
|
|
15848
|
+
}
|
|
15849
|
+
onPostDeactivate === null || onPostDeactivate === void 0 ? void 0 : onPostDeactivate();
|
|
15850
|
+
});
|
|
15851
|
+
};
|
|
15852
|
+
if (returnFocus && checkCanReturnFocus) {
|
|
15853
|
+
checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);
|
|
15854
|
+
return this;
|
|
15855
|
+
}
|
|
15856
|
+
finishDeactivation();
|
|
15857
|
+
return this;
|
|
15858
|
+
},
|
|
15859
|
+
pause: function pause(pauseOptions) {
|
|
15860
|
+
if (state.paused || !state.active) {
|
|
15861
|
+
return this;
|
|
15862
|
+
}
|
|
15863
|
+
var onPause = getOption(pauseOptions, 'onPause');
|
|
15864
|
+
var onPostPause = getOption(pauseOptions, 'onPostPause');
|
|
15865
|
+
state.paused = true;
|
|
15866
|
+
onPause === null || onPause === void 0 ? void 0 : onPause();
|
|
15867
|
+
removeListeners();
|
|
15868
|
+
updateObservedNodes();
|
|
15869
|
+
onPostPause === null || onPostPause === void 0 ? void 0 : onPostPause();
|
|
15870
|
+
return this;
|
|
15871
|
+
},
|
|
15872
|
+
unpause: function unpause(unpauseOptions) {
|
|
15873
|
+
if (!state.paused || !state.active) {
|
|
15874
|
+
return this;
|
|
15875
|
+
}
|
|
15876
|
+
var onUnpause = getOption(unpauseOptions, 'onUnpause');
|
|
15877
|
+
var onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');
|
|
15878
|
+
state.paused = false;
|
|
15879
|
+
onUnpause === null || onUnpause === void 0 ? void 0 : onUnpause();
|
|
15880
|
+
updateTabbableNodes();
|
|
15881
|
+
addListeners();
|
|
15882
|
+
updateObservedNodes();
|
|
15883
|
+
onPostUnpause === null || onPostUnpause === void 0 ? void 0 : onPostUnpause();
|
|
15884
|
+
return this;
|
|
15885
|
+
},
|
|
15886
|
+
updateContainerElements: function updateContainerElements(containerElements) {
|
|
15887
|
+
var elementsAsArray = [].concat(containerElements).filter(Boolean);
|
|
15888
|
+
state.containers = elementsAsArray.map(function (element) {
|
|
15889
|
+
return typeof element === 'string' ? doc.querySelector(element) : element;
|
|
15890
|
+
});
|
|
15891
|
+
if (state.active) {
|
|
15892
|
+
updateTabbableNodes();
|
|
15893
|
+
}
|
|
15894
|
+
updateObservedNodes();
|
|
15895
|
+
return this;
|
|
15896
|
+
}
|
|
15897
|
+
};
|
|
15898
|
+
|
|
15899
|
+
// initialize container elements
|
|
15900
|
+
trap.updateContainerElements(elements);
|
|
15901
|
+
return trap;
|
|
15902
|
+
};
|
|
15903
|
+
|
|
15904
|
+
|
|
15905
|
+
/* Injected with object hook! */
|
|
15906
|
+
|
|
15907
|
+
var __defProp = Object.defineProperty;
|
|
15908
|
+
var __defProps = Object.defineProperties;
|
|
15909
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
15910
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
15911
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
15912
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
15913
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15914
|
+
var __spreadValues = (a, b) => {
|
|
15915
|
+
for (var prop in b || (b = {}))
|
|
15916
|
+
if (__hasOwnProp.call(b, prop))
|
|
15917
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15918
|
+
if (__getOwnPropSymbols)
|
|
15919
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15920
|
+
if (__propIsEnum.call(b, prop))
|
|
15921
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15922
|
+
}
|
|
15923
|
+
return a;
|
|
15924
|
+
};
|
|
15925
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
15926
|
+
var __objRest = (source, exclude) => {
|
|
15927
|
+
var target = {};
|
|
15928
|
+
for (var prop in source)
|
|
15929
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
15930
|
+
target[prop] = source[prop];
|
|
15931
|
+
if (source != null && __getOwnPropSymbols)
|
|
15932
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
15933
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
15934
|
+
target[prop] = source[prop];
|
|
15935
|
+
}
|
|
15936
|
+
return target;
|
|
15937
|
+
};
|
|
15938
|
+
function useFocusTrap(target, options = {}) {
|
|
15939
|
+
let trap;
|
|
15940
|
+
const _a = options, { immediate } = _a, focusTrapOptions = __objRest(_a, ["immediate"]);
|
|
15941
|
+
const hasFocus = ref(false);
|
|
15942
|
+
const isPaused = ref(false);
|
|
15943
|
+
const activate = (opts) => trap && trap.activate(opts);
|
|
15944
|
+
const deactivate = (opts) => trap && trap.deactivate(opts);
|
|
15945
|
+
const pause = () => {
|
|
15946
|
+
if (trap) {
|
|
15947
|
+
trap.pause();
|
|
15948
|
+
isPaused.value = true;
|
|
15949
|
+
}
|
|
15950
|
+
};
|
|
15951
|
+
const unpause = () => {
|
|
15952
|
+
if (trap) {
|
|
15953
|
+
trap.unpause();
|
|
15954
|
+
isPaused.value = false;
|
|
15955
|
+
}
|
|
15956
|
+
};
|
|
15957
|
+
watch(
|
|
15958
|
+
() => unrefElement(target),
|
|
15959
|
+
(el) => {
|
|
15960
|
+
if (!el)
|
|
15961
|
+
return;
|
|
15962
|
+
trap = createFocusTrap(el, __spreadProps(__spreadValues({}, focusTrapOptions), {
|
|
15963
|
+
onActivate() {
|
|
15964
|
+
hasFocus.value = true;
|
|
15965
|
+
if (options.onActivate)
|
|
15966
|
+
options.onActivate();
|
|
15967
|
+
},
|
|
15968
|
+
onDeactivate() {
|
|
15969
|
+
hasFocus.value = false;
|
|
15970
|
+
if (options.onDeactivate)
|
|
15971
|
+
options.onDeactivate();
|
|
15972
|
+
}
|
|
15973
|
+
}));
|
|
15974
|
+
if (immediate)
|
|
15975
|
+
activate();
|
|
15976
|
+
},
|
|
15977
|
+
{ flush: "post" }
|
|
15978
|
+
);
|
|
15979
|
+
tryOnScopeDispose(() => deactivate());
|
|
15980
|
+
return {
|
|
15981
|
+
hasFocus,
|
|
15982
|
+
isPaused,
|
|
15983
|
+
activate,
|
|
15984
|
+
deactivate,
|
|
15985
|
+
pause,
|
|
15986
|
+
unpause
|
|
15987
|
+
};
|
|
15988
|
+
}
|
|
15989
|
+
|
|
15990
|
+
/* Injected with object hook! */
|
|
15991
|
+
|
|
15992
|
+
const __default__ = {
|
|
15993
|
+
inheritAttrs: false
|
|
15994
|
+
};
|
|
15995
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
15996
|
+
...__default__,
|
|
15997
|
+
__name: "VDialog",
|
|
15998
|
+
props: {
|
|
15999
|
+
modelValue: { type: Boolean, default: false },
|
|
16000
|
+
dim: { type: Boolean, default: true }
|
|
16001
|
+
},
|
|
16002
|
+
emits: ["close", "update:modelValue"],
|
|
16003
|
+
setup(__props, { emit }) {
|
|
16004
|
+
const props = __props;
|
|
16005
|
+
const show = useVModel(props, "modelValue", emit, { passive: true });
|
|
16006
|
+
const card = ref(null);
|
|
16007
|
+
const shown = ref(false);
|
|
16008
|
+
const { activate, deactivate } = useFocusTrap(computed(() => card.value || document.body), { immediate: false });
|
|
16009
|
+
watchEffect(
|
|
16010
|
+
() => {
|
|
16011
|
+
if (!shown.value && show.value)
|
|
16012
|
+
shown.value = true;
|
|
16013
|
+
if (show.value && card.value)
|
|
16014
|
+
nextTick(activate);
|
|
16015
|
+
else
|
|
16016
|
+
deactivate();
|
|
16017
|
+
}
|
|
16018
|
+
);
|
|
16019
|
+
function close() {
|
|
16020
|
+
show.value = false;
|
|
16021
|
+
emit("close");
|
|
16022
|
+
}
|
|
16023
|
+
return (_ctx, _cache) => {
|
|
16024
|
+
const _component_VCard = __unplugin_components_7;
|
|
16025
|
+
return shown.value ? (openBlock(), createBlock(Teleport, {
|
|
16026
|
+
key: 0,
|
|
16027
|
+
to: "body"
|
|
16028
|
+
}, [
|
|
16029
|
+
withDirectives(createBaseVNode("div", {
|
|
16030
|
+
class: normalizeClass(["n-dialog fixed inset-0 z-100 flex items-center justify-center n-transition", [
|
|
16031
|
+
unref(show) ? "" : "op0 pointer-events-none visibility-none"
|
|
16032
|
+
]])
|
|
16033
|
+
}, [
|
|
16034
|
+
createBaseVNode("div", {
|
|
16035
|
+
class: normalizeClass(["absolute inset-0 -z-1", [
|
|
16036
|
+
_ctx.dim ? "bg-black/50" : ""
|
|
16037
|
+
]]),
|
|
16038
|
+
onClick: _cache[0] || (_cache[0] = ($event) => close())
|
|
16039
|
+
}, null, 2),
|
|
16040
|
+
createVNode(_component_VCard, mergeProps(_ctx.$attrs, {
|
|
16041
|
+
ref_key: "card",
|
|
16042
|
+
ref: card,
|
|
16043
|
+
class: "max-h-screen of-auto"
|
|
16044
|
+
}), {
|
|
16045
|
+
default: withCtx(() => [
|
|
16046
|
+
renderSlot(_ctx.$slots, "default")
|
|
16047
|
+
]),
|
|
16048
|
+
_: 3
|
|
16049
|
+
}, 16)
|
|
16050
|
+
], 2), [
|
|
16051
|
+
[vShow, unref(show)]
|
|
16052
|
+
])
|
|
16053
|
+
])) : createCommentVNode("", true);
|
|
16054
|
+
};
|
|
16055
|
+
}
|
|
16056
|
+
});
|
|
16057
|
+
|
|
16058
|
+
/* Injected with object hook! */
|
|
16059
|
+
|
|
16060
|
+
function useSingleton() {
|
|
16061
|
+
const key = Symbol("singleton");
|
|
16062
|
+
return [
|
|
16063
|
+
function provide(v) {
|
|
16064
|
+
const vm = getCurrentInstance();
|
|
16065
|
+
vm?.appContext.app.provide(key, v);
|
|
16066
|
+
},
|
|
16067
|
+
function use(fallback) {
|
|
16068
|
+
return inject(key, fallback);
|
|
16069
|
+
}
|
|
16070
|
+
];
|
|
16071
|
+
}
|
|
16072
|
+
const [
|
|
16073
|
+
provideNotification,
|
|
16074
|
+
useNotification
|
|
16075
|
+
] = useSingleton();
|
|
16076
|
+
|
|
16077
|
+
/* Injected with object hook! */
|
|
16078
|
+
|
|
16079
|
+
function useCopy() {
|
|
16080
|
+
const clipboard = useClipboard();
|
|
16081
|
+
const showNotification = useNotification();
|
|
16082
|
+
return (text) => {
|
|
16083
|
+
clipboard.copy(text);
|
|
16084
|
+
showNotification("Copied to clipboard", "i-carbon-checkmark");
|
|
16085
|
+
};
|
|
16086
|
+
}
|
|
16087
|
+
|
|
16088
|
+
/* Injected with object hook! */
|
|
16089
|
+
|
|
16090
|
+
const _hoisted_1$3 = {
|
|
16091
|
+
flex: "~ gap-1",
|
|
16092
|
+
"text-lg": ""
|
|
16093
|
+
};
|
|
16094
|
+
const _hoisted_2$3 = ["onClick"];
|
|
16095
|
+
const _hoisted_3$2 = /* @__PURE__ */ createBaseVNode("h1", { "text-3xl": "" }, " Popup is not Supported ", -1);
|
|
16096
|
+
const _hoisted_4$2 = /* @__PURE__ */ createBaseVNode("p", null, [
|
|
16097
|
+
/* @__PURE__ */ createTextVNode(" To popup the DevTools, it requires the "),
|
|
16098
|
+
/* @__PURE__ */ createBaseVNode("a", {
|
|
16099
|
+
href: "https://developer.chrome.com/docs/web-platform/document-picture-in-picture/",
|
|
16100
|
+
target: "_blank",
|
|
16101
|
+
"font-bold": "",
|
|
16102
|
+
underline: ""
|
|
16103
|
+
}, "Document Picture-in-Picture API"),
|
|
16104
|
+
/* @__PURE__ */ createTextVNode(" which is currently in experimental state. ")
|
|
16105
|
+
], -1);
|
|
16106
|
+
const _hoisted_5$2 = /* @__PURE__ */ createBaseVNode("p", null, [
|
|
16107
|
+
/* @__PURE__ */ createTextVNode(" As June 2023, the API is only available in Chrome 111 and above, under a flag "),
|
|
16108
|
+
/* @__PURE__ */ createBaseVNode("code", null, "#document-picture-in-picture-api"),
|
|
16109
|
+
/* @__PURE__ */ createTextVNode(". ")
|
|
16110
|
+
], -1);
|
|
16111
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
16112
|
+
__name: "PanelPosition",
|
|
16113
|
+
setup(__props) {
|
|
16114
|
+
const { position: _position } = useFrameState();
|
|
16115
|
+
const frameState = computed(() => ({ position: _position.value }));
|
|
16116
|
+
const client = useDevtoolsClient();
|
|
16117
|
+
const showPopupUnsupported = ref(false);
|
|
16118
|
+
const copy = useCopy();
|
|
16119
|
+
const dockButton = [
|
|
16120
|
+
{
|
|
16121
|
+
position: "popup",
|
|
16122
|
+
icon: "i-carbon-launch"
|
|
16123
|
+
},
|
|
16124
|
+
{
|
|
16125
|
+
position: "bottom",
|
|
16126
|
+
icon: "i-carbon-open-panel-filled-bottom"
|
|
16127
|
+
},
|
|
16128
|
+
{
|
|
16129
|
+
position: "right",
|
|
16130
|
+
icon: "i-carbon-open-panel-filled-right"
|
|
16131
|
+
},
|
|
16132
|
+
{
|
|
16133
|
+
position: "left",
|
|
16134
|
+
icon: "i-carbon-open-panel-filled-left"
|
|
16135
|
+
},
|
|
16136
|
+
{
|
|
16137
|
+
position: "top",
|
|
16138
|
+
icon: "i-carbon-open-panel-filled-top"
|
|
16139
|
+
}
|
|
16140
|
+
];
|
|
16141
|
+
function toggle(position) {
|
|
16142
|
+
if (position === "popup") {
|
|
16143
|
+
if (!window.parent.documentPictureInPicture?.requestWindow) {
|
|
16144
|
+
showPopupUnsupported.value = true;
|
|
16145
|
+
return;
|
|
16146
|
+
}
|
|
16147
|
+
} else {
|
|
16148
|
+
_position.value = position;
|
|
16149
|
+
}
|
|
16150
|
+
client.value?.panel?.togglePosition(position);
|
|
16151
|
+
}
|
|
16152
|
+
return (_ctx, _cache) => {
|
|
16153
|
+
const _component_VButton = _sfc_main$d;
|
|
16154
|
+
const _component_VDialog = _sfc_main$5;
|
|
16155
|
+
return openBlock(), createElementBlock(Fragment, null, [
|
|
16156
|
+
createBaseVNode("div", _hoisted_1$3, [
|
|
16157
|
+
(openBlock(), createElementBlock(Fragment, null, renderList(dockButton, (item) => {
|
|
16158
|
+
return createBaseVNode("button", {
|
|
16159
|
+
key: item.position,
|
|
16160
|
+
class: normalizeClass([unref(frameState).position === item.position ? "text-primary" : "op50", item.icon]),
|
|
16161
|
+
onClick: ($event) => toggle(item.position)
|
|
16162
|
+
}, null, 10, _hoisted_2$3);
|
|
16163
|
+
}), 64))
|
|
16164
|
+
]),
|
|
16165
|
+
createVNode(_component_VDialog, {
|
|
16166
|
+
modelValue: unref(showPopupUnsupported),
|
|
16167
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isRef(showPopupUnsupported) ? showPopupUnsupported.value = $event : null),
|
|
16168
|
+
class: "popup-dialog z-2000 max-w-150 p6 pt-2",
|
|
16169
|
+
onClose: _cache[3] || (_cache[3] = ($event) => showPopupUnsupported.value = false)
|
|
16170
|
+
}, {
|
|
16171
|
+
default: withCtx(() => [
|
|
16172
|
+
_hoisted_3$2,
|
|
16173
|
+
_hoisted_4$2,
|
|
16174
|
+
_hoisted_5$2,
|
|
16175
|
+
createBaseVNode("p", null, [
|
|
16176
|
+
createTextVNode(" Your current browser does not seem to support the API, or the flag is not enabled yet. You can try enabling the flag by visiting "),
|
|
16177
|
+
createVNode(_component_VButton, {
|
|
16178
|
+
n: "xs primary",
|
|
16179
|
+
title: "Click to Copy",
|
|
16180
|
+
onClick: _cache[0] || (_cache[0] = ($event) => unref(copy)("chrome://flags/#document-picture-in-picture-api"))
|
|
16181
|
+
}, {
|
|
16182
|
+
default: withCtx(() => [
|
|
16183
|
+
createTextVNode(" chrome://flags/#document-picture-in-picture-api ")
|
|
16184
|
+
]),
|
|
16185
|
+
_: 1
|
|
16186
|
+
}),
|
|
16187
|
+
createTextVNode(" and restart the browser. ")
|
|
16188
|
+
]),
|
|
16189
|
+
createBaseVNode("div", null, [
|
|
16190
|
+
createVNode(_component_VButton, {
|
|
16191
|
+
onClick: _cache[1] || (_cache[1] = ($event) => showPopupUnsupported.value = false)
|
|
16192
|
+
}, {
|
|
16193
|
+
default: withCtx(() => [
|
|
16194
|
+
createTextVNode(" Close ")
|
|
16195
|
+
]),
|
|
16196
|
+
_: 1
|
|
16197
|
+
})
|
|
16198
|
+
])
|
|
16199
|
+
]),
|
|
16200
|
+
_: 1
|
|
16201
|
+
}, 8, ["modelValue"])
|
|
16202
|
+
], 64);
|
|
16203
|
+
};
|
|
16204
|
+
}
|
|
16205
|
+
});
|
|
16206
|
+
|
|
16207
|
+
/* Injected with object hook! */
|
|
16208
|
+
|
|
16209
|
+
const isInPopup = !!window.parent.__VUE_DEVTOOLS_IS_POPUP__;
|
|
16210
|
+
|
|
16211
|
+
/* Injected with object hook! */
|
|
16212
|
+
|
|
16213
|
+
const _hoisted_1$2 = {
|
|
16214
|
+
key: 0,
|
|
16215
|
+
px3: "",
|
|
16216
|
+
py2: "",
|
|
16217
|
+
border: "b base",
|
|
16218
|
+
flex: "~ col gap-1"
|
|
16219
|
+
};
|
|
16220
|
+
const _hoisted_2$2 = /* @__PURE__ */ createBaseVNode("div", {
|
|
16221
|
+
"text-sm": "",
|
|
16222
|
+
op50: ""
|
|
16223
|
+
}, " Dock devtools to ", -1);
|
|
16224
|
+
const _hoisted_3$1 = {
|
|
16225
|
+
px3: "",
|
|
16226
|
+
py2: "",
|
|
16227
|
+
border: "b base",
|
|
16228
|
+
flex: "~ gap-2"
|
|
16229
|
+
};
|
|
16230
|
+
const _hoisted_4$1 = /* @__PURE__ */ createBaseVNode("div", {
|
|
16231
|
+
"carbon-sun": "",
|
|
16232
|
+
"translate-y--1px": "",
|
|
16233
|
+
"dark:carbon-moon": ""
|
|
16234
|
+
}, null, -1);
|
|
16235
|
+
const _hoisted_5$1 = /* @__PURE__ */ createBaseVNode("div", {
|
|
16236
|
+
"carbon-settings": "",
|
|
16237
|
+
"translate-y--1px": ""
|
|
16238
|
+
}, null, -1);
|
|
16239
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
16240
|
+
__name: "DockingPanel",
|
|
16241
|
+
setup(__props) {
|
|
16242
|
+
return (_ctx, _cache) => {
|
|
16243
|
+
const _component_PanelPosition = _sfc_main$4;
|
|
16244
|
+
const _component_VButton = _sfc_main$d;
|
|
16245
|
+
const _component_VDarkToggle = _sfc_main$7;
|
|
16246
|
+
const _component_RouterLink = resolveComponent("RouterLink");
|
|
16247
|
+
return openBlock(), createElementBlock("div", null, [
|
|
16248
|
+
!unref(isInPopup) ? (openBlock(), createElementBlock("div", _hoisted_1$2, [
|
|
16249
|
+
_hoisted_2$2,
|
|
16250
|
+
createVNode(_component_PanelPosition)
|
|
16251
|
+
])) : createCommentVNode("", true),
|
|
16252
|
+
createBaseVNode("div", _hoisted_3$1, [
|
|
16253
|
+
createVNode(_component_VDarkToggle, null, {
|
|
16254
|
+
default: withCtx(({ toggle, isDark }) => [
|
|
16255
|
+
createVNode(_component_VButton, {
|
|
16256
|
+
n: "sm primary",
|
|
16257
|
+
onClick: toggle
|
|
16258
|
+
}, {
|
|
16259
|
+
default: withCtx(() => [
|
|
16260
|
+
_hoisted_4$1,
|
|
16261
|
+
createTextVNode(" " + toDisplayString(isDark.value ? "Dark" : "Light"), 1)
|
|
16262
|
+
]),
|
|
16263
|
+
_: 2
|
|
16264
|
+
}, 1032, ["onClick"])
|
|
16265
|
+
]),
|
|
16266
|
+
_: 1
|
|
16267
|
+
}),
|
|
16268
|
+
createVNode(_component_RouterLink, {
|
|
16269
|
+
replace: "",
|
|
16270
|
+
class: "n-button-base active:n-button-active focus-visible:n-focus-base n-transition n-primary n-sm hover:n-button-hover n-disabled:n-disabled",
|
|
16271
|
+
to: "/settings"
|
|
16272
|
+
}, {
|
|
16273
|
+
default: withCtx(() => [
|
|
16274
|
+
_hoisted_5$1,
|
|
16275
|
+
createTextVNode(" Settings ")
|
|
16276
|
+
]),
|
|
16277
|
+
_: 1
|
|
16278
|
+
})
|
|
16279
|
+
])
|
|
16280
|
+
]);
|
|
16281
|
+
};
|
|
16282
|
+
}
|
|
16283
|
+
});
|
|
16284
|
+
|
|
16285
|
+
/* Injected with object hook! */
|
|
16286
|
+
|
|
16287
|
+
const devToolsSettings = useLocalStorage("__vue-devtools-settings__", {
|
|
16288
|
+
scale: 1,
|
|
16289
|
+
hiddenTabs: [],
|
|
16290
|
+
hiddenTabCategories: []
|
|
16291
|
+
}, { mergeDefaults: true });
|
|
16292
|
+
const devToolsSettingsRefs = toRefs(devToolsSettings);
|
|
16293
|
+
function useDevToolsSettings() {
|
|
16294
|
+
return devToolsSettingsRefs;
|
|
16295
|
+
}
|
|
16296
|
+
|
|
16297
|
+
/* Injected with object hook! */
|
|
16298
|
+
|
|
16299
|
+
const builtinTabs = [
|
|
16300
|
+
{
|
|
16301
|
+
path: "overview",
|
|
16302
|
+
title: "Overview",
|
|
16303
|
+
icon: "i-carbon-information"
|
|
16304
|
+
},
|
|
16305
|
+
{
|
|
16306
|
+
path: "pages",
|
|
16307
|
+
title: "Pages",
|
|
16308
|
+
icon: "i-carbon-tree-view-alt"
|
|
16309
|
+
},
|
|
16310
|
+
{
|
|
16311
|
+
path: "components",
|
|
16312
|
+
title: "Components",
|
|
16313
|
+
icon: "i-carbon-assembly-cluster"
|
|
16314
|
+
},
|
|
16315
|
+
{
|
|
16316
|
+
path: "assets",
|
|
16317
|
+
title: "Assets",
|
|
16318
|
+
icon: "i-carbon-image-copy"
|
|
16319
|
+
},
|
|
16320
|
+
{
|
|
16321
|
+
path: "routes",
|
|
16322
|
+
title: "Routes",
|
|
16323
|
+
icon: "mdi:location-path",
|
|
16324
|
+
category: "modules"
|
|
16325
|
+
},
|
|
16326
|
+
{
|
|
16327
|
+
path: "pinia",
|
|
16328
|
+
title: "Pinia",
|
|
16329
|
+
icon: "icon-park-outline:pineapple",
|
|
16330
|
+
category: "modules"
|
|
16331
|
+
},
|
|
16332
|
+
{
|
|
16333
|
+
path: "timeline",
|
|
16334
|
+
title: "Timeline",
|
|
16335
|
+
icon: "i-icon-park-outline:vertical-timeline"
|
|
16336
|
+
},
|
|
16337
|
+
{
|
|
16338
|
+
title: "Inspector",
|
|
16339
|
+
icon: "i-carbon-select-window",
|
|
16340
|
+
category: "advanced",
|
|
16341
|
+
event: (client, router) => {
|
|
16342
|
+
router.replace("/__inspecting");
|
|
16343
|
+
client?.inspector?.enable();
|
|
16344
|
+
}
|
|
16345
|
+
},
|
|
16346
|
+
{
|
|
16347
|
+
title: "EyeDropper",
|
|
16348
|
+
icon: "i-mdi:eyedropper",
|
|
16349
|
+
category: "advanced",
|
|
16350
|
+
event: (client, router) => {
|
|
16351
|
+
router.replace("/__eyedropper");
|
|
16352
|
+
client.panel?.toggleViewMode("xs");
|
|
16353
|
+
}
|
|
16354
|
+
},
|
|
16355
|
+
{
|
|
16356
|
+
path: "component-docs",
|
|
16357
|
+
title: "Component docs",
|
|
16358
|
+
icon: "i-carbon-document-preliminary",
|
|
16359
|
+
category: "advanced"
|
|
16360
|
+
},
|
|
16361
|
+
{
|
|
16362
|
+
path: "npm",
|
|
16363
|
+
title: "Search packages",
|
|
16364
|
+
icon: "i-teenyicons:npm-outline",
|
|
16365
|
+
category: "advanced"
|
|
16366
|
+
},
|
|
16367
|
+
{
|
|
16368
|
+
path: "graph",
|
|
16369
|
+
title: "Graph",
|
|
16370
|
+
icon: "i-carbon-network-4",
|
|
16371
|
+
category: "advanced"
|
|
16372
|
+
},
|
|
16373
|
+
{
|
|
16374
|
+
path: "inspect",
|
|
16375
|
+
title: "Inspect",
|
|
16376
|
+
icon: "i-carbon-ibm-watson-discovery",
|
|
16377
|
+
category: "advanced"
|
|
16378
|
+
},
|
|
16379
|
+
{
|
|
16380
|
+
path: "documentations",
|
|
16381
|
+
title: "Documentations",
|
|
16382
|
+
icon: "i-carbon-document",
|
|
16383
|
+
category: "advanced"
|
|
16384
|
+
}
|
|
16385
|
+
];
|
|
16386
|
+
function useTabs() {
|
|
16387
|
+
const settings = useDevToolsSettings();
|
|
16388
|
+
return {
|
|
16389
|
+
enabled: computed(() => {
|
|
16390
|
+
return builtinTabs.filter((tab) => !settings.hiddenTabs.value.includes(tab.title ?? ""));
|
|
16391
|
+
}),
|
|
16392
|
+
all: computed(() => builtinTabs)
|
|
16393
|
+
};
|
|
16394
|
+
}
|
|
16395
|
+
function useCategorizedTabs(enabledOnly = true) {
|
|
16396
|
+
const _tabs = useTabs();
|
|
16397
|
+
const tabs = enabledOnly ? _tabs.enabled : _tabs.all;
|
|
16398
|
+
const settings = useDevToolsSettings();
|
|
16399
|
+
return computed(() => {
|
|
16400
|
+
const categories = {
|
|
16401
|
+
app: [],
|
|
16402
|
+
modules: [],
|
|
16403
|
+
advanced: []
|
|
16404
|
+
};
|
|
16405
|
+
for (const tab of tabs.value) {
|
|
16406
|
+
const category = tab?.category || "app";
|
|
16407
|
+
if (enabledOnly && settings.hiddenTabCategories.value.includes(category))
|
|
16408
|
+
continue;
|
|
16409
|
+
if (!categories[category])
|
|
16410
|
+
console.warn(`Unknown tab category: ${category}`);
|
|
16411
|
+
else
|
|
16412
|
+
categories[category].push(tab);
|
|
16413
|
+
}
|
|
16414
|
+
return Object.entries(categories);
|
|
16415
|
+
});
|
|
16416
|
+
}
|
|
16417
|
+
|
|
16418
|
+
/* Injected with object hook! */
|
|
16419
|
+
|
|
16420
|
+
const _hoisted_1$1 = {
|
|
16421
|
+
border: "r base",
|
|
16422
|
+
flex: "~ col gap-0.5",
|
|
16423
|
+
"z-100": "",
|
|
16424
|
+
"h-full": "",
|
|
16425
|
+
"items-center": "",
|
|
16426
|
+
"bg-base": "",
|
|
16427
|
+
class: "no-scrollbar"
|
|
16428
|
+
};
|
|
16429
|
+
const _hoisted_2$1 = {
|
|
16430
|
+
flex: "~ col",
|
|
16431
|
+
sticky: "",
|
|
16432
|
+
"top-0": "",
|
|
16433
|
+
"z-1": "",
|
|
14830
16434
|
mb1: "",
|
|
14831
16435
|
"items-center": "",
|
|
14832
16436
|
pt3: "",
|
|
@@ -14870,10 +16474,10 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
14870
16474
|
setup(__props) {
|
|
14871
16475
|
const categories = useCategorizedTabs();
|
|
14872
16476
|
return (_ctx, _cache) => {
|
|
14873
|
-
const _component_DockingPanel =
|
|
16477
|
+
const _component_DockingPanel = _sfc_main$3;
|
|
14874
16478
|
const _component_VDropdown = resolveComponent("VDropdown");
|
|
14875
|
-
const _component_SideNavItem = _sfc_main$
|
|
14876
|
-
const _component_TabIcon = _sfc_main$
|
|
16479
|
+
const _component_SideNavItem = _sfc_main$8;
|
|
16480
|
+
const _component_TabIcon = _sfc_main$9;
|
|
14877
16481
|
const _component_RouterLink = resolveComponent("RouterLink");
|
|
14878
16482
|
return openBlock(), createElementBlock("div", _hoisted_1$1, [
|
|
14879
16483
|
createBaseVNode("div", _hoisted_2$1, [
|
|
@@ -14943,25 +16547,6 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
14943
16547
|
|
|
14944
16548
|
/* Injected with object hook! */
|
|
14945
16549
|
|
|
14946
|
-
function useSingleton() {
|
|
14947
|
-
const key = Symbol("singleton");
|
|
14948
|
-
return [
|
|
14949
|
-
function provide(v) {
|
|
14950
|
-
const vm = getCurrentInstance();
|
|
14951
|
-
vm?.appContext.app.provide(key, v);
|
|
14952
|
-
},
|
|
14953
|
-
function use(fallback) {
|
|
14954
|
-
return inject(key, fallback);
|
|
14955
|
-
}
|
|
14956
|
-
];
|
|
14957
|
-
}
|
|
14958
|
-
const [
|
|
14959
|
-
provideNotification,
|
|
14960
|
-
useNotification
|
|
14961
|
-
] = useSingleton();
|
|
14962
|
-
|
|
14963
|
-
/* Injected with object hook! */
|
|
14964
|
-
|
|
14965
16550
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
14966
16551
|
__name: "Notification",
|
|
14967
16552
|
setup(__props) {
|
|
@@ -15741,4 +17326,4 @@ app.mount("#app");
|
|
|
15741
17326
|
|
|
15742
17327
|
/* Injected with object hook! */
|
|
15743
17328
|
|
|
15744
|
-
export {
|
|
17329
|
+
export { toggleRouteRecordMatcher as $, timelineLayer as A, activeTimelineEvents as B, activeTimelineEventIndex as C, toggleTimelineEventIndex as D, timelineEventDetails as E, Fragment as F, activeLayerId as G, toggleTimelineLayer as H, useVModel as I, vModelSelect as J, isRef as K, vModelCheckbox as L, withKeys as M, useCategorizedTabs as N, isInPopup as O, createTextVNode as P, useDevToolsSettings as Q, useFrameState as R, _sfc_main$4 as S, _sfc_main$d as T, _sfc_main$7 as U, _sfc_main$9 as V, router$1 as W, routeRecordMatcherState as X, activeRouteRecordMatcherState as Y, activeRouteRecordIndex as Z, __unplugin_components_7 as _, popScopeId as a, __unplugin_components_1 as a0, ref as a1, computed as a2, piniaStoresCategory as a3, toRaw as a4, piniaState as a5, piniaGetters as a6, withModifiers as a7, onMounted as a8, currentRoute as a9, onClickOutside as aA, Transition as aB, useStyleTag as aC, computedAsync as aD, useTimeAgo as aE, onKeyDown as aF, _export_sfc as aG, vModelDynamic as aH, __vitePreload as aI, useDevtoolsClient as aJ, useRouter as aK, routes as aa, vueVersion as ab, __unplugin_components_0 as ac, useEventListener as ad, hookApi as ae, useScrollLock as af, watch as ag, useInfiniteScroll as ah, useStorage as ai, vModelText as aj, useDark as ak, Teleport as al, useColorMode as am, reactive as an, useElementBounding as ao, watchEffect as ap, onUnmounted as aq, shallowRef as ar, onVueInstanceUpdate as as, instance as at, useCopy as au, nanoid as av, vShow as aw, getCurrentInstance as ax, h as ay, useElementSize as az, resolveDirective as b, createBlock as c, withDirectives as d, createElementBlock as e, renderSlot as f, createCommentVNode as g, withCtx as h, renderList as i, resolveDynamicComponent as j, mergeProps as k, normalizeStyle as l, markRaw as m, nextTick as n, openBlock as o, pushScopeId as p, normalizeClass as q, resolveComponent as r, shallowReactive as s, toHandlers as t, createVNode as u, defineComponent as v, withScopeId as w, createBaseVNode as x, toDisplayString as y, unref as z };
|