@morscherlab/mint-sdk 1.5.0-beta.6 → 1.5.0-beta.8
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/{AlertBox-CexONPhA.js → AlertBox-Cai0w7gF.js} +3 -3
- package/dist/{AlertBox-CexONPhA.js.map → AlertBox-Cai0w7gF.js.map} +1 -1
- package/dist/{AppSidebar-FxlF5_dI.js → AppSidebar-C1DT4nsZ.js} +351 -90
- package/dist/AppSidebar-C1DT4nsZ.js.map +1 -0
- package/dist/{ConfirmDialog-D9QXFpsy.js → ConfirmDialog-BjFsOpBe.js} +2 -2
- package/dist/{ConfirmDialog-D9QXFpsy.js.map → ConfirmDialog-BjFsOpBe.js.map} +1 -1
- package/dist/{ExperimentPopover-Bbd6RaoH.js → ExperimentPopover-DYy_s0kI.js} +25 -37
- package/dist/ExperimentPopover-DYy_s0kI.js.map +1 -0
- package/dist/{ExperimentSelectorModal-CUkKmgfr.js → ExperimentSelectorModal-Bfh5bdkv.js} +5 -5
- package/dist/{ExperimentSelectorModal-CUkKmgfr.js.map → ExperimentSelectorModal-Bfh5bdkv.js.map} +1 -1
- package/dist/{SegmentedControl-C-sckoJZ.js → SegmentedControl-B8KgyOjd.js} +2 -2
- package/dist/{SegmentedControl-C-sckoJZ.js.map → SegmentedControl-B8KgyOjd.js.map} +1 -1
- package/dist/{SettingsModal-BIC0dAYc.js → SettingsModal-DPNblTe9.js} +7 -7
- package/dist/{SettingsModal-BIC0dAYc.js.map → SettingsModal-DPNblTe9.js.map} +1 -1
- package/dist/__tests__/components/AppTopBarCompact.test.d.ts +1 -0
- package/dist/__tests__/components/AppTopBarCompactReset.test.d.ts +1 -0
- package/dist/__tests__/components/AutoGroupModal.experimentLoad.test.d.ts +1 -0
- package/dist/components/AppTopBar.compact.d.ts +5 -0
- package/dist/components/AppTopBar.vue.d.ts +17 -17
- package/dist/components/PluginWorkspaceView.vue.d.ts +4 -0
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -2
- package/dist/components/internal/LucideIconInternal.vue.d.ts +17 -0
- package/dist/composables/appLayoutSidebar.d.ts +9 -0
- package/dist/composables/useVersionedSave.d.ts +5 -2
- package/dist/{controlSchemaModel-C_XqpkgE.js → controlSchemaModel-BtFNZj8t.js} +2 -2
- package/dist/{controlSchemaModel-C_XqpkgE.js.map → controlSchemaModel-BtFNZj8t.js.map} +1 -1
- package/dist/{data-CfY7o8QC.js → data-CJztFns8.js} +31 -15
- package/dist/{data-CfY7o8QC.js.map → data-CJztFns8.js.map} +1 -1
- package/dist/data.js +8 -8
- package/dist/{experimentStatus-DCn2QKG7.js → experimentStatus-Deokk7Br.js} +2 -2
- package/dist/{experimentStatus-DCn2QKG7.js.map → experimentStatus-Deokk7Br.js.map} +1 -1
- package/dist/index.js +14 -14
- package/dist/{install-QF3Sh82O.js → install-9FkKs0iW.js} +14 -15
- package/dist/{install-QF3Sh82O.js.map → install-9FkKs0iW.js.map} +1 -1
- package/dist/install.js +1 -1
- package/dist/{lab-BcX5JBSY.js → lab-BYhb_cJI.js} +22 -14
- package/dist/lab-BYhb_cJI.js.map +1 -0
- package/dist/lab.js +4 -4
- package/dist/{records-BAymyHAn.js → records-GtiVMlTQ.js} +198 -62
- package/dist/records-GtiVMlTQ.js.map +1 -0
- package/dist/{runtime-DngeJtdq.js → runtime-DcMsvlaS.js} +29 -12
- package/dist/runtime-DcMsvlaS.js.map +1 -0
- package/dist/runtime.js +6 -6
- package/dist/{shell-CWZi97nW.js → shell-XZYkAZS_.js} +5 -5
- package/dist/{shell-CWZi97nW.js.map → shell-XZYkAZS_.js.map} +1 -1
- package/dist/shell.js +5 -5
- package/dist/styles.css +136 -12
- package/dist/types/components.d.ts +22 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/{useDropdownState-uFIz6Yv8.js → useDropdownState-CcBzUYZ6.js} +14 -5
- package/dist/useDropdownState-CcBzUYZ6.js.map +1 -0
- package/dist/{useExperimentSamples-DEDAKa2E.js → useExperimentSamples-CpNXvpUn.js} +3 -3
- package/dist/{useExperimentSamples-DEDAKa2E.js.map → useExperimentSamples-CpNXvpUn.js.map} +1 -1
- package/dist/{useListReorder-W1bzK_bo.js → useListReorder-Bp4EAI2w.js} +3 -3
- package/dist/{useListReorder-W1bzK_bo.js.map → useListReorder-Bp4EAI2w.js.map} +1 -1
- package/dist/{useRackEditor-Bmtuo0aj.js → useRackEditor-i2bdPUFf.js} +8 -8
- package/dist/{useRackEditor-Bmtuo0aj.js.map → useRackEditor-i2bdPUFf.js.map} +1 -1
- package/dist/{useRealtime-jOetF2mM.js → useRealtime-BLQEjbuq.js} +3 -3
- package/dist/{useRealtime-jOetF2mM.js.map → useRealtime-BLQEjbuq.js.map} +1 -1
- package/dist/useRequest-CXyPw3eh.js +76 -0
- package/dist/useRequest-CXyPw3eh.js.map +1 -0
- package/dist/utils/deprecation.d.ts +2 -0
- package/dist/utils/lucideIcon.d.ts +4 -0
- package/package.json +1 -1
- package/src/__tests__/components/AppTopBar.test.ts +102 -20
- package/src/__tests__/components/AppTopBarCompact.test.ts +65 -0
- package/src/__tests__/components/AppTopBarCompactReset.test.ts +24 -0
- package/src/__tests__/components/AutoGroupModal.experimentLoad.test.ts +58 -0
- package/src/__tests__/components/BaseModal.test.ts +33 -2
- package/src/__tests__/components/ExperimentPopover.test.ts +32 -0
- package/src/__tests__/components/PluginWorkspaceView.test.ts +1 -1
- package/src/__tests__/composables/useJobCenter.test.ts +35 -0
- package/src/__tests__/composables/useVersionedSave.test.ts +71 -6
- package/src/__tests__/styles/menusShellRefresh.test.ts +5 -0
- package/src/components/AppLayout.story.vue +5 -5
- package/src/components/AppLayout.vue +13 -1
- package/src/components/AppTopBar.compact.ts +60 -0
- package/src/components/AppTopBar.story.vue +39 -14
- package/src/components/AppTopBar.vue +222 -89
- package/src/components/BaseModal.vue +16 -5
- package/src/components/ExperimentPopover.story.vue +2 -2
- package/src/components/ExperimentPopover.vue +6 -22
- package/src/components/GeneratedPluginView.vue +0 -1
- package/src/components/PluginWorkspaceView.vue +8 -0
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +12 -0
- package/src/components/internal/AutoGroupModalInternal.vue +14 -3
- package/src/components/internal/LucideIconInternal.vue +23 -0
- package/src/composables/appLayoutSidebar.ts +11 -0
- package/src/composables/useJobCenter.ts +21 -1
- package/src/composables/usePluginWorkspace.ts +1 -1
- package/src/composables/useVersionedSave.ts +32 -7
- package/src/styles/components/app-layout.css +5 -0
- package/src/styles/components/app-top-bar.css +128 -8
- package/src/types/components.ts +23 -2
- package/src/types/index.ts +1 -0
- package/src/utils/deprecation.ts +8 -0
- package/src/utils/lucideIcon.ts +25 -0
- package/src/utils/lucideIconIndex.d.ts +2 -0
- package/dist/AppSidebar-FxlF5_dI.js.map +0 -1
- package/dist/ExperimentPopover-Bbd6RaoH.js.map +0 -1
- package/dist/lab-BcX5JBSY.js.map +0 -1
- package/dist/records-BAymyHAn.js.map +0 -1
- package/dist/runtime-DngeJtdq.js.map +0 -1
- package/dist/useDropdownState-uFIz6Yv8.js.map +0 -1
- package/dist/useRequest-D9-3BS-3.js +0 -215
- package/dist/useRequest-D9-3BS-3.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as BaseButton_default, i as useEventListener, t as useDropdownState } from "./useDropdownState-
|
|
1
|
+
import { a as BaseButton_default, i as useEventListener, t as useDropdownState } from "./useDropdownState-CcBzUYZ6.js";
|
|
2
2
|
import { n as integrationHost, u as useSettingsStore } from "./experiment-DyO54FQB.js";
|
|
3
|
-
import {
|
|
4
|
-
import { F as applySpecDefaults, M as usePlatform, _ as getTypeDefault, a as StepWizard_default, c as normalizeControls, d as numericValue, g as getFieldRegistryEntry, l as normalizeOption, o as defaultValueForControl, p as orderedUnique, u as humanize } from "./useListReorder-
|
|
5
|
-
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineAsyncComponent, defineComponent, guardReactiveProps, inject, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, toValue, unref, useId, useSlots, useTemplateRef, vShow, watch, withCtx, withDirectives, withModifiers } from "vue";
|
|
6
|
-
import { Check, CircleAlert, CircleCheck, CircleHelp, CircleX, ListChecks, LoaderCircle, Moon, Play, Sun, X } from "lucide-vue-next";
|
|
3
|
+
import { B as BaseCheckbox_default, D as useMenuKeyboard, L as FormField_default, T as ActionMenu_default, _ as APP_EXPERIMENT_KEY, t as isRecord } from "./records-GtiVMlTQ.js";
|
|
4
|
+
import { F as applySpecDefaults, M as usePlatform, _ as getTypeDefault, a as StepWizard_default, c as normalizeControls, d as numericValue, g as getFieldRegistryEntry, l as normalizeOption, o as defaultValueForControl, p as orderedUnique, u as humanize } from "./useListReorder-Bp4EAI2w.js";
|
|
5
|
+
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineAsyncComponent, defineComponent, guardReactiveProps, inject, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, toValue, unref, useId, useSlots, useTemplateRef, vShow, watch, watchEffect, withCtx, withDirectives, withModifiers } from "vue";
|
|
6
|
+
import { Check, CircleAlert, CircleCheck, CircleHelp, CircleX, Ellipsis, ListChecks, LoaderCircle, Menu, Moon, Play, Sun, X } from "lucide-vue-next";
|
|
7
7
|
import { autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
|
|
8
8
|
//#region src/composables/useTheme.ts
|
|
9
9
|
/** Reads and toggles the active theme (light/dark/system) with reactivity to OS preference changes. */
|
|
@@ -81,11 +81,11 @@ var _hoisted_11$6 = {
|
|
|
81
81
|
};
|
|
82
82
|
var _hoisted_12$5 = ["d"];
|
|
83
83
|
var _hoisted_13$5 = ["d"];
|
|
84
|
-
var _hoisted_14$
|
|
84
|
+
var _hoisted_14$4 = {
|
|
85
85
|
key: 1,
|
|
86
86
|
class: "mint-collapsible-card__action-text-icon"
|
|
87
87
|
};
|
|
88
|
-
var _hoisted_15$
|
|
88
|
+
var _hoisted_15$4 = [
|
|
89
89
|
"disabled",
|
|
90
90
|
"aria-label",
|
|
91
91
|
"aria-expanded"
|
|
@@ -216,7 +216,7 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
|
|
|
216
216
|
}), 128)) : (openBlock(), createElementBlock("path", {
|
|
217
217
|
key: 1,
|
|
218
218
|
d: action.icon
|
|
219
|
-
}, null, 8, _hoisted_13$5))])) : action.icon ? (openBlock(), createElementBlock("span", _hoisted_14$
|
|
219
|
+
}, null, 8, _hoisted_13$5))])) : action.icon ? (openBlock(), createElementBlock("span", _hoisted_14$4, toDisplayString(action.icon), 1)) : createCommentVNode("", true)], 14, _hoisted_10$6);
|
|
220
220
|
}), 128)),
|
|
221
221
|
__props.showToggle ? (openBlock(), createElementBlock("div", {
|
|
222
222
|
key: 1,
|
|
@@ -245,7 +245,7 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
|
|
|
245
245
|
"stroke-linejoin": "round",
|
|
246
246
|
viewBox: "0 0 24 24",
|
|
247
247
|
"aria-hidden": "true"
|
|
248
|
-
}, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_15$
|
|
248
|
+
}, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_15$4)
|
|
249
249
|
])]), createVNode(Transition, { name: "collapse" }, {
|
|
250
250
|
default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_16$3, [createElementVNode("div", _hoisted_17$2, [renderSlot(_ctx.$slots, "default")])], 512), [[vShow, isOpen.value]])]),
|
|
251
251
|
_: 3
|
|
@@ -763,7 +763,6 @@ function usePluginWorkspace(options) {
|
|
|
763
763
|
const { props, slots, emit } = options;
|
|
764
764
|
const sidebarSpec = computed(() => props.spec?.sidebar ?? {});
|
|
765
765
|
const topBarSpec = computed(() => props.spec?.topBar === false ? false : applySpecDefaults({
|
|
766
|
-
themeToggle: true,
|
|
767
766
|
settings: {},
|
|
768
767
|
standaloneLabel: false
|
|
769
768
|
}, props.spec?.topBar));
|
|
@@ -848,6 +847,18 @@ function usePluginWorkspace(options) {
|
|
|
848
847
|
};
|
|
849
848
|
}
|
|
850
849
|
//#endregion
|
|
850
|
+
//#region src/utils/deprecation.ts
|
|
851
|
+
var warned = /* @__PURE__ */ new Set();
|
|
852
|
+
/** Warn once per page load that a deprecated SDK option or slot is in use. */
|
|
853
|
+
function warnDeprecatedOnce(key, message) {
|
|
854
|
+
if (warned.has(key)) return;
|
|
855
|
+
warned.add(key);
|
|
856
|
+
console.warn(`[mint-sdk] ${message}`);
|
|
857
|
+
}
|
|
858
|
+
//#endregion
|
|
859
|
+
//#region src/composables/appLayoutSidebar.ts
|
|
860
|
+
var APP_LAYOUT_SIDEBAR_KEY = Symbol("mint-app-layout-sidebar");
|
|
861
|
+
//#endregion
|
|
851
862
|
//#region src/components/AppLayout.vue?vue&type=script&setup=true&lang.ts
|
|
852
863
|
var _hoisted_1$11 = {
|
|
853
864
|
key: 0,
|
|
@@ -930,6 +941,7 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
|
|
|
930
941
|
*/
|
|
931
942
|
const props = __props;
|
|
932
943
|
const emit = __emit;
|
|
944
|
+
const slots = useSlots();
|
|
933
945
|
const internalSidebarOpen = ref(props.defaultSidebarOpen);
|
|
934
946
|
const sidebarOpenModel = computed({
|
|
935
947
|
get: () => props.sidebarOpen ?? internalSidebarOpen.value,
|
|
@@ -951,6 +963,12 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
|
|
|
951
963
|
function toggleSidebar() {
|
|
952
964
|
sidebarOpenModel.value = !sidebarOpenModel.value;
|
|
953
965
|
}
|
|
966
|
+
if (props.responsiveSidebar && slots.sidebar) provide(APP_LAYOUT_SIDEBAR_KEY, {
|
|
967
|
+
open: computed(() => sidebarOpenModel.value),
|
|
968
|
+
toggle: toggleSidebar,
|
|
969
|
+
openLabel: computed(() => props.sidebarToggleLabel),
|
|
970
|
+
closeLabel: computed(() => props.sidebarCloseLabel)
|
|
971
|
+
});
|
|
954
972
|
function closeSidebar() {
|
|
955
973
|
sidebarOpenModel.value = false;
|
|
956
974
|
}
|
|
@@ -980,6 +998,51 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
|
|
|
980
998
|
}
|
|
981
999
|
});
|
|
982
1000
|
//#endregion
|
|
1001
|
+
//#region src/utils/lucideIcon.ts
|
|
1002
|
+
/** A Lucide icon name in kebab case, such as `activity` or `flask-conical`. */
|
|
1003
|
+
var LUCIDE_NAME = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
1004
|
+
function isLucideIconName(value) {
|
|
1005
|
+
return !!value && LUCIDE_NAME.test(value);
|
|
1006
|
+
}
|
|
1007
|
+
function pascalCase(name) {
|
|
1008
|
+
return name.replace(/(^|-)([a-z0-9])/g, (_, __, char) => char.toUpperCase());
|
|
1009
|
+
}
|
|
1010
|
+
var iconSet;
|
|
1011
|
+
/** The Lucide component for `name`, or undefined when Lucide has no such icon. */
|
|
1012
|
+
async function loadLucideIcon(name) {
|
|
1013
|
+
iconSet ??= import("lucide-vue-next/dist/esm/icons/index.js");
|
|
1014
|
+
return (await iconSet)[pascalCase(name)];
|
|
1015
|
+
}
|
|
1016
|
+
//#endregion
|
|
1017
|
+
//#region src/components/internal/LucideIconInternal.vue
|
|
1018
|
+
var LucideIconInternal_default = /* @__PURE__ */ defineComponent({
|
|
1019
|
+
__name: "LucideIconInternal",
|
|
1020
|
+
props: {
|
|
1021
|
+
name: {},
|
|
1022
|
+
size: {}
|
|
1023
|
+
},
|
|
1024
|
+
setup(__props) {
|
|
1025
|
+
/** Internal: renders a Lucide icon by name; shows `fallback` until it loads or when the name is unknown. */
|
|
1026
|
+
const props = __props;
|
|
1027
|
+
const icon = shallowRef();
|
|
1028
|
+
watchEffect(async (onCleanup) => {
|
|
1029
|
+
let stale = false;
|
|
1030
|
+
onCleanup(() => {
|
|
1031
|
+
stale = true;
|
|
1032
|
+
});
|
|
1033
|
+
const loaded = await loadLucideIcon(props.name);
|
|
1034
|
+
if (!stale) icon.value = loaded;
|
|
1035
|
+
});
|
|
1036
|
+
return (_ctx, _cache) => {
|
|
1037
|
+
return icon.value ? (openBlock(), createBlock(resolveDynamicComponent(icon.value), {
|
|
1038
|
+
key: 0,
|
|
1039
|
+
size: __props.size ?? 14,
|
|
1040
|
+
"aria-hidden": "true"
|
|
1041
|
+
}, null, 8, ["size"])) : renderSlot(_ctx.$slots, "fallback", {}, void 0, void 0, 1);
|
|
1042
|
+
};
|
|
1043
|
+
}
|
|
1044
|
+
});
|
|
1045
|
+
//#endregion
|
|
983
1046
|
//#region src/utils/items.ts
|
|
984
1047
|
function normalizeItemInput(item) {
|
|
985
1048
|
if (typeof item === "object") return item;
|
|
@@ -1374,31 +1437,33 @@ var _hoisted_1$8 = {
|
|
|
1374
1437
|
};
|
|
1375
1438
|
var _hoisted_2$6 = { class: "mint-page-selector__plugin" };
|
|
1376
1439
|
var _hoisted_3$6 = ["aria-expanded"];
|
|
1377
|
-
var _hoisted_4$6 = {
|
|
1378
|
-
|
|
1440
|
+
var _hoisted_4$6 = { class: "mint-page-selector__icon-fallback" };
|
|
1441
|
+
var _hoisted_5$6 = {
|
|
1442
|
+
key: 2,
|
|
1379
1443
|
class: "mint-page-selector__icon-fallback"
|
|
1380
1444
|
};
|
|
1381
|
-
var
|
|
1382
|
-
var
|
|
1445
|
+
var _hoisted_6$5 = { class: "mint-page-selector__label" };
|
|
1446
|
+
var _hoisted_7$5 = {
|
|
1383
1447
|
class: "mint-page-selector__chevron-wrap",
|
|
1384
1448
|
"aria-hidden": "true"
|
|
1385
1449
|
};
|
|
1386
|
-
var
|
|
1387
|
-
var
|
|
1450
|
+
var _hoisted_8$5 = ["aria-label"];
|
|
1451
|
+
var _hoisted_9$5 = {
|
|
1388
1452
|
class: "mint-page-selector__menu-title",
|
|
1389
1453
|
"aria-hidden": "true"
|
|
1390
1454
|
};
|
|
1391
|
-
var
|
|
1392
|
-
|
|
1455
|
+
var _hoisted_10$5 = { class: "mint-page-selector__icon-fallback" };
|
|
1456
|
+
var _hoisted_11$5 = {
|
|
1457
|
+
key: 2,
|
|
1393
1458
|
class: "mint-page-selector__icon-fallback"
|
|
1394
1459
|
};
|
|
1395
|
-
var
|
|
1396
|
-
var
|
|
1397
|
-
var
|
|
1460
|
+
var _hoisted_12$4 = { class: "mint-page-selector__item-text" };
|
|
1461
|
+
var _hoisted_13$4 = { class: "mint-page-selector__item-label" };
|
|
1462
|
+
var _hoisted_14$3 = {
|
|
1398
1463
|
key: 0,
|
|
1399
1464
|
class: "mint-page-selector__item-hint"
|
|
1400
1465
|
};
|
|
1401
|
-
var
|
|
1466
|
+
var _hoisted_15$3 = {
|
|
1402
1467
|
key: 0,
|
|
1403
1468
|
class: "mint-page-selector__item-key",
|
|
1404
1469
|
"aria-hidden": "true"
|
|
@@ -1503,9 +1568,15 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1503
1568
|
icon: current.value.icon,
|
|
1504
1569
|
size: "sm",
|
|
1505
1570
|
variant: "solid"
|
|
1506
|
-
}, null, 8, ["icon"])) : (
|
|
1507
|
-
|
|
1508
|
-
|
|
1571
|
+
}, null, 8, ["icon"])) : unref(isLucideIconName)(current.value.icon) ? (openBlock(), createBlock(LucideIconInternal_default, {
|
|
1572
|
+
key: 1,
|
|
1573
|
+
name: current.value.icon
|
|
1574
|
+
}, {
|
|
1575
|
+
fallback: withCtx(() => [createElementVNode("span", _hoisted_4$6, toDisplayString(current.value.label.charAt(0)), 1)]),
|
|
1576
|
+
_: 1
|
|
1577
|
+
}, 8, ["name"])) : (openBlock(), createElementBlock("span", _hoisted_5$6, toDisplayString(current.value.label.charAt(0)), 1))])], 2)) : createCommentVNode("", true),
|
|
1578
|
+
createElementVNode("span", _hoisted_6$5, toDisplayString(current.value?.label ?? __props.placeholder), 1),
|
|
1579
|
+
createElementVNode("span", _hoisted_7$5, [(openBlock(), createElementBlock("svg", {
|
|
1509
1580
|
class: normalizeClass(["mint-page-selector__chevron", { "mint-page-selector__chevron--open": unref(isOpen) }]),
|
|
1510
1581
|
viewBox: "0 0 24 24",
|
|
1511
1582
|
fill: "none",
|
|
@@ -1521,7 +1592,7 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1521
1592
|
role: "menu",
|
|
1522
1593
|
"aria-label": menuTitle.value,
|
|
1523
1594
|
onKeydown: handleMenuKeydown
|
|
1524
|
-
}, [createElementVNode("div",
|
|
1595
|
+
}, [createElementVNode("div", _hoisted_9$5, toDisplayString(menuTitle.value), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(normalizedPages.value, (page, index) => {
|
|
1525
1596
|
return openBlock(), createBlock(ActionItemInternal_default, {
|
|
1526
1597
|
key: page.id,
|
|
1527
1598
|
href: page.href,
|
|
@@ -1544,9 +1615,15 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1544
1615
|
icon: page.icon,
|
|
1545
1616
|
size: "sm",
|
|
1546
1617
|
variant: "solid"
|
|
1547
|
-
}, null, 8, ["icon"])) : (
|
|
1548
|
-
|
|
1549
|
-
|
|
1618
|
+
}, null, 8, ["icon"])) : unref(isLucideIconName)(page.icon) ? (openBlock(), createBlock(LucideIconInternal_default, {
|
|
1619
|
+
key: 1,
|
|
1620
|
+
name: page.icon
|
|
1621
|
+
}, {
|
|
1622
|
+
fallback: withCtx(() => [createElementVNode("span", _hoisted_10$5, toDisplayString(page.label.charAt(0)), 1)]),
|
|
1623
|
+
_: 2
|
|
1624
|
+
}, 1032, ["name"])) : (openBlock(), createElementBlock("span", _hoisted_11$5, toDisplayString(page.label.charAt(0)), 1))])], 2),
|
|
1625
|
+
createElementVNode("span", _hoisted_12$4, [createElementVNode("span", _hoisted_13$4, toDisplayString(page.label), 1), page.hint ? (openBlock(), createElementBlock("span", _hoisted_14$3, toDisplayString(page.hint), 1)) : createCommentVNode("", true)]),
|
|
1626
|
+
index < 9 ? (openBlock(), createElementBlock("span", _hoisted_15$3, toDisplayString(index + 1), 1)) : createCommentVNode("", true)
|
|
1550
1627
|
]),
|
|
1551
1628
|
_: 2
|
|
1552
1629
|
}, 1032, [
|
|
@@ -1558,7 +1635,7 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1558
1635
|
"aria-keyshortcuts",
|
|
1559
1636
|
"onClick"
|
|
1560
1637
|
]);
|
|
1561
|
-
}), 128))], 40,
|
|
1638
|
+
}), 128))], 40, _hoisted_8$5)) : createCommentVNode("", true)], 4)], 512);
|
|
1562
1639
|
};
|
|
1563
1640
|
}
|
|
1564
1641
|
});
|
|
@@ -2647,9 +2724,53 @@ function trackTopBarForToasts(el) {
|
|
|
2647
2724
|
};
|
|
2648
2725
|
}
|
|
2649
2726
|
//#endregion
|
|
2727
|
+
//#region src/components/AppTopBar.compact.ts
|
|
2728
|
+
var CHIP_MIN_PX = 192;
|
|
2729
|
+
var LABELS = ".mint-experiment-popover__save-label, .mint-topbar__job-label";
|
|
2730
|
+
/** Identity text that truncates when the left side is squeezed. */
|
|
2731
|
+
var IDENTITY_TEXT = ".mint-page-selector__plugin, .mint-page-selector__label, .mint-topbar__plugin-name, .mint-topbar-title, .mint-topbar__title-only";
|
|
2732
|
+
function overflows(el) {
|
|
2733
|
+
return !!el && el.scrollWidth > el.clientWidth + 1;
|
|
2734
|
+
}
|
|
2735
|
+
function trackTopBarCompact(header, compact) {
|
|
2736
|
+
if (typeof ResizeObserver === "undefined") return {
|
|
2737
|
+
reset: () => {},
|
|
2738
|
+
stop: () => {}
|
|
2739
|
+
};
|
|
2740
|
+
let expandAt = 0;
|
|
2741
|
+
function check() {
|
|
2742
|
+
const width = header.clientWidth;
|
|
2743
|
+
if (compact.value) {
|
|
2744
|
+
if (width >= expandAt) compact.value = false;
|
|
2745
|
+
return;
|
|
2746
|
+
}
|
|
2747
|
+
const chip = header.querySelector(".mint-experiment-popover__trigger");
|
|
2748
|
+
if (!(chip && chip.getBoundingClientRect().width < CHIP_MIN_PX && overflows(chip.querySelector(".mint-experiment-popover__trigger-text")) || [...header.querySelectorAll(IDENTITY_TEXT)].some(overflows) || overflows(header.querySelector(".mint-topbar__center")) || overflows(header.querySelector(".mint-topbar__context")))) return;
|
|
2749
|
+
const labelsWidth = [...header.querySelectorAll(LABELS)].reduce((sum, el) => sum + el.getBoundingClientRect().width, 0);
|
|
2750
|
+
if (labelsWidth === 0) return;
|
|
2751
|
+
expandAt = width + labelsWidth;
|
|
2752
|
+
compact.value = true;
|
|
2753
|
+
}
|
|
2754
|
+
const observer = new ResizeObserver(check);
|
|
2755
|
+
function observe() {
|
|
2756
|
+
observer.disconnect();
|
|
2757
|
+
observer.observe(header);
|
|
2758
|
+
for (const el of header.querySelectorAll(".mint-topbar__center, .mint-topbar__context")) observer.observe(el);
|
|
2759
|
+
}
|
|
2760
|
+
observe();
|
|
2761
|
+
return {
|
|
2762
|
+
reset: () => {
|
|
2763
|
+
compact.value = false;
|
|
2764
|
+
expandAt = 0;
|
|
2765
|
+
requestAnimationFrame(observe);
|
|
2766
|
+
},
|
|
2767
|
+
stop: () => observer.disconnect()
|
|
2768
|
+
};
|
|
2769
|
+
}
|
|
2770
|
+
//#endregion
|
|
2650
2771
|
//#region src/components/AppTopBar.vue?vue&type=script&setup=true&lang.ts
|
|
2651
|
-
var _hoisted_1$4 = { class: "mint-
|
|
2652
|
-
var _hoisted_2$2 =
|
|
2772
|
+
var _hoisted_1$4 = { class: "mint-topbar__start" };
|
|
2773
|
+
var _hoisted_2$2 = ["aria-label", "aria-expanded"];
|
|
2653
2774
|
var _hoisted_3$2 = { class: "mint-topbar__brand" };
|
|
2654
2775
|
var _hoisted_4$2 = ["href"];
|
|
2655
2776
|
var _hoisted_5$2 = {
|
|
@@ -2677,7 +2798,7 @@ var _hoisted_10$1 = {
|
|
|
2677
2798
|
class: "mint-topbar__logo"
|
|
2678
2799
|
};
|
|
2679
2800
|
var _hoisted_11$1 = {
|
|
2680
|
-
key:
|
|
2801
|
+
key: 1,
|
|
2681
2802
|
class: "mint-topbar__plugin-identity"
|
|
2682
2803
|
};
|
|
2683
2804
|
var _hoisted_12$1 = { class: "mint-topbar__plugin-name" };
|
|
@@ -2686,13 +2807,13 @@ var _hoisted_13$1 = {
|
|
|
2686
2807
|
class: "mint-topbar__plugin-subtitle"
|
|
2687
2808
|
};
|
|
2688
2809
|
var _hoisted_14$1 = {
|
|
2689
|
-
key:
|
|
2810
|
+
key: 4,
|
|
2690
2811
|
class: "mint-topbar-title-group"
|
|
2691
2812
|
};
|
|
2692
2813
|
var _hoisted_15$1 = { class: "mint-topbar-title" };
|
|
2693
2814
|
var _hoisted_16$1 = { class: "mint-topbar-subtitle" };
|
|
2694
2815
|
var _hoisted_17$1 = {
|
|
2695
|
-
key:
|
|
2816
|
+
key: 5,
|
|
2696
2817
|
class: "mint-topbar__title-only"
|
|
2697
2818
|
};
|
|
2698
2819
|
var _hoisted_18$1 = {
|
|
@@ -2703,33 +2824,56 @@ var _hoisted_18$1 = {
|
|
|
2703
2824
|
var _hoisted_19$1 = { class: "mint-topbar__right" };
|
|
2704
2825
|
var _hoisted_20$1 = {
|
|
2705
2826
|
key: 0,
|
|
2706
|
-
class: "mint-
|
|
2827
|
+
class: "mint-topbar__context"
|
|
2707
2828
|
};
|
|
2708
2829
|
var _hoisted_21$1 = {
|
|
2830
|
+
key: 0,
|
|
2831
|
+
class: "mint-topbar__standalone-badge"
|
|
2832
|
+
};
|
|
2833
|
+
var _hoisted_22$1 = {
|
|
2709
2834
|
class: "mint-topbar__job-status",
|
|
2710
2835
|
"aria-live": "polite"
|
|
2711
2836
|
};
|
|
2712
|
-
var
|
|
2837
|
+
var _hoisted_23$1 = [
|
|
2713
2838
|
"title",
|
|
2714
2839
|
"aria-label",
|
|
2715
2840
|
"aria-expanded",
|
|
2716
2841
|
"aria-controls"
|
|
2717
2842
|
];
|
|
2718
|
-
var
|
|
2843
|
+
var _hoisted_24$1 = {
|
|
2719
2844
|
key: 0,
|
|
2720
2845
|
class: "mint-topbar__job-bar",
|
|
2721
2846
|
"aria-hidden": "true"
|
|
2722
2847
|
};
|
|
2723
|
-
var
|
|
2848
|
+
var _hoisted_25$1 = [
|
|
2724
2849
|
"aria-label",
|
|
2725
2850
|
"aria-expanded",
|
|
2726
2851
|
"aria-controls"
|
|
2727
2852
|
];
|
|
2728
|
-
var
|
|
2853
|
+
var _hoisted_26$1 = {
|
|
2729
2854
|
key: 0,
|
|
2730
2855
|
class: "mint-topbar__job-count",
|
|
2731
2856
|
"aria-hidden": "true"
|
|
2732
2857
|
};
|
|
2858
|
+
var _hoisted_27$1 = [
|
|
2859
|
+
"aria-label",
|
|
2860
|
+
"title",
|
|
2861
|
+
"disabled",
|
|
2862
|
+
"aria-busy",
|
|
2863
|
+
"data-action",
|
|
2864
|
+
"onClick"
|
|
2865
|
+
];
|
|
2866
|
+
var _hoisted_28$1 = [
|
|
2867
|
+
"aria-expanded",
|
|
2868
|
+
"onClick",
|
|
2869
|
+
"onKeydown"
|
|
2870
|
+
];
|
|
2871
|
+
var _hoisted_29$1 = {
|
|
2872
|
+
key: 4,
|
|
2873
|
+
class: "mint-topbar__legacy-actions"
|
|
2874
|
+
};
|
|
2875
|
+
var _hoisted_30$1 = { class: "mint-topbar__tail" };
|
|
2876
|
+
var MAX_VISIBLE_ACTIONS = 2;
|
|
2733
2877
|
//#endregion
|
|
2734
2878
|
//#region src/components/AppTopBar.vue
|
|
2735
2879
|
var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
@@ -2762,29 +2906,50 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2762
2906
|
* Full application top bar with brand logo, static plugin identity, page selector, centered pill nav, experiment popover, and an account slot.
|
|
2763
2907
|
*
|
|
2764
2908
|
* The `#icon` slot applies in standalone mode only; integrated branding comes from `Metadata.icon`.
|
|
2909
|
+
*
|
|
2910
|
+
* The order is fixed: identity or page selector, pills, the context group (standalone badge, run slot,
|
|
2911
|
+
* onboarding, `spec.actions`), then the tail: theme toggle, settings, `#account`. Below 1024px of bar
|
|
2912
|
+
* width the pills and the context group move to a second row. Inside a responsive AppLayout the bar
|
|
2913
|
+
* holds the sidebar drawer button.
|
|
2765
2914
|
*/
|
|
2766
2915
|
const props = __props;
|
|
2767
2916
|
const config = computed(() => applySpecDefaults({
|
|
2768
2917
|
variant: "card",
|
|
2769
2918
|
homePath: "/",
|
|
2770
2919
|
logo: true,
|
|
2771
|
-
themeToggle: false,
|
|
2772
|
-
settings: false,
|
|
2773
2920
|
standaloneLabel: "Standalone"
|
|
2774
2921
|
}, props.spec));
|
|
2775
|
-
const settingsConfig = computed(() => toValue(config.value.settings) ||
|
|
2776
|
-
|
|
2777
|
-
const
|
|
2778
|
-
const
|
|
2779
|
-
const
|
|
2922
|
+
const settingsConfig = computed(() => toValue(config.value.settings) || {});
|
|
2923
|
+
/** Plugin buttons: two show, the rest fold into the More menu. */
|
|
2924
|
+
const visibleActions = computed(() => (config.value.actions ?? []).slice(0, MAX_VISIBLE_ACTIONS));
|
|
2925
|
+
const overflowActions = computed(() => (config.value.actions ?? []).slice(MAX_VISIBLE_ACTIONS));
|
|
2926
|
+
const overflowMenuItems = computed(() => overflowActions.value.map(({ id, label, disabled, loading }) => ({
|
|
2927
|
+
id,
|
|
2928
|
+
label,
|
|
2929
|
+
disabled: disabled || loading
|
|
2930
|
+
})));
|
|
2931
|
+
function selectOverflowAction(item) {
|
|
2932
|
+
overflowActions.value.find((action) => action.id === item.id)?.onSelect();
|
|
2933
|
+
}
|
|
2934
|
+
const drawer = inject(APP_LAYOUT_SIDEBAR_KEY, null);
|
|
2935
|
+
const SettingsModal = defineAsyncComponent(() => import("./SettingsModal-DPNblTe9.js").then((n) => n.n));
|
|
2936
|
+
const ExperimentPopover = defineAsyncComponent(() => import("./ExperimentPopover-DYy_s0kI.js").then((n) => n.n));
|
|
2937
|
+
const ExperimentSelectorModal = defineAsyncComponent(() => import("./ExperimentSelectorModal-Bfh5bdkv.js").then((n) => n.n));
|
|
2780
2938
|
const emit = __emit;
|
|
2781
2939
|
const settingsOpen = ref(false);
|
|
2782
2940
|
const headerEl = ref(null);
|
|
2783
2941
|
let untrackToastOffset;
|
|
2942
|
+
const compact = ref(false);
|
|
2943
|
+
let compactTracker;
|
|
2784
2944
|
onMounted(() => {
|
|
2785
|
-
if (headerEl.value)
|
|
2945
|
+
if (!headerEl.value) return;
|
|
2946
|
+
untrackToastOffset = trackTopBarForToasts(headerEl.value);
|
|
2947
|
+
compactTracker = trackTopBarCompact(headerEl.value, compact);
|
|
2948
|
+
});
|
|
2949
|
+
onBeforeUnmount(() => {
|
|
2950
|
+
untrackToastOffset?.();
|
|
2951
|
+
compactTracker?.stop();
|
|
2786
2952
|
});
|
|
2787
|
-
onBeforeUnmount(() => untrackToastOffset?.());
|
|
2788
2953
|
const { integrated: isIntegrated, plugin } = usePlatform();
|
|
2789
2954
|
const isStandalone = computed(() => !isIntegrated.value);
|
|
2790
2955
|
const appExperiment = inject(APP_EXPERIMENT_KEY, null);
|
|
@@ -2822,6 +2987,14 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2822
2987
|
cancelled: CircleX
|
|
2823
2988
|
};
|
|
2824
2989
|
const slots = useSlots();
|
|
2990
|
+
if (props.spec.themeToggle !== void 0) warnDeprecatedOnce("topbar.themeToggle", "AppTopBar spec.themeToggle is ignored: the theme toggle always shows. Remove it; it is removed in 2.0.");
|
|
2991
|
+
for (const name of [
|
|
2992
|
+
"nav",
|
|
2993
|
+
"center",
|
|
2994
|
+
"actions",
|
|
2995
|
+
"page-selector-icon",
|
|
2996
|
+
"page-selector-item-icon"
|
|
2997
|
+
]) if (slots[name]) warnDeprecatedOnce(`topbar.slot.${name}`, name.startsWith("page-selector") ? `AppTopBar #${name} is deprecated: give the page an icon (a Lucide name). It is removed in 2.0.` : `AppTopBar #${name} is deprecated${name === "actions" ? ": use spec.actions" : ""}. It is removed in 2.0.`);
|
|
2825
2998
|
const pluginIcon = computed(() => plugin.value?.icon || (slots.logo ? void 0 : pluginIdentity.icon));
|
|
2826
2999
|
const seeded = computed(() => isStandalone.value && !props.title && !props.subtitle);
|
|
2827
3000
|
const titleText = computed(() => props.title || (seeded.value ? pluginIdentity.name : void 0));
|
|
@@ -2840,6 +3013,17 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2840
3013
|
const pageSelectorPluginName = computed(() => isIntegrated.value ? plugin.value?.display_name || plugin.value?.name : props.title || pluginIdentity.name);
|
|
2841
3014
|
const identitySubtitle = computed(() => plugin.value?.subtitle || plugin.value?.description);
|
|
2842
3015
|
const hasPillNav = computed(() => !!config.value.pills?.length);
|
|
3016
|
+
const showStandaloneBadge = computed(() => config.value.standaloneLabel !== false && isStandalone.value);
|
|
3017
|
+
const showRunSlot = computed(() => showExperiment.value || props.job !== void 0 || runSlotJoined.value);
|
|
3018
|
+
/** The context group: standalone badge, run slot, onboarding and plugin buttons. Below 1024px it is row 2. */
|
|
3019
|
+
watch([
|
|
3020
|
+
() => config.value.actions?.map((action) => action.label).join(),
|
|
3021
|
+
() => props.job === void 0,
|
|
3022
|
+
() => props.job === null,
|
|
3023
|
+
showExperiment,
|
|
3024
|
+
() => config.value.pills?.length
|
|
3025
|
+
], () => compactTracker?.reset());
|
|
3026
|
+
const hasContext = computed(() => showStandaloneBadge.value || showRunSlot.value || !!config.value.actions?.length || !!slots.actions || !!onboarding?.enabled.value);
|
|
2843
3027
|
const hasTitleGroup = computed(() => !hasPageSelector.value && !identityName.value && !!titleText.value && !!subtitleText.value);
|
|
2844
3028
|
const hasTitleOnly = computed(() => !hasPageSelector.value && !identityName.value && !hasTitleGroup.value && !!titleText.value);
|
|
2845
3029
|
const normalizedPageSelector = computed(() => props.pageSelector?.map(normalizeItemInput) ?? []);
|
|
@@ -2855,9 +3039,24 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2855
3039
|
createElementVNode("header", {
|
|
2856
3040
|
ref_key: "headerEl",
|
|
2857
3041
|
ref: headerEl,
|
|
2858
|
-
class: normalizeClass([
|
|
2859
|
-
|
|
2860
|
-
|
|
3042
|
+
class: normalizeClass([
|
|
3043
|
+
"mint-topbar",
|
|
3044
|
+
`mint-topbar--${config.value.variant}`,
|
|
3045
|
+
{ "mint-topbar--compact": compact.value }
|
|
3046
|
+
])
|
|
3047
|
+
}, [createElementVNode("div", { class: normalizeClass(["mint-topbar__container", { "mint-topbar__container--stackable": hasPillNav.value || _ctx.$slots.center || hasContext.value }]) }, [
|
|
3048
|
+
createElementVNode("div", _hoisted_1$4, [
|
|
3049
|
+
unref(drawer) ? (openBlock(), createElementBlock("button", {
|
|
3050
|
+
key: 0,
|
|
3051
|
+
type: "button",
|
|
3052
|
+
class: "mint-topbar__icon-btn mint-topbar__sidebar-toggle",
|
|
3053
|
+
"aria-label": unref(drawer).open.value ? unref(drawer).closeLabel.value : unref(drawer).openLabel.value,
|
|
3054
|
+
"aria-expanded": unref(drawer).open.value,
|
|
3055
|
+
onClick: _cache[0] || (_cache[0] = ($event) => unref(drawer).toggle())
|
|
3056
|
+
}, [(openBlock(), createBlock(resolveDynamicComponent(unref(drawer).open.value ? unref(X) : unref(Menu)), {
|
|
3057
|
+
class: "mint-topbar__icon-btn-icon",
|
|
3058
|
+
"aria-hidden": "true"
|
|
3059
|
+
}))], 8, _hoisted_2$2)) : createCommentVNode("", true),
|
|
2861
3060
|
createElementVNode("div", _hoisted_3$2, [config.value.homePath && (config.value.homePath.startsWith("http") || config.value.homePath.startsWith("/")) ? (openBlock(), createElementBlock("a", {
|
|
2862
3061
|
key: 0,
|
|
2863
3062
|
href: config.value.homePath,
|
|
@@ -2874,7 +3073,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2874
3073
|
icon: pluginIcon.value,
|
|
2875
3074
|
size: "topbar",
|
|
2876
3075
|
variant: "solid"
|
|
2877
|
-
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_6$1, [..._cache[
|
|
3076
|
+
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_6$1, [..._cache[12] || (_cache[12] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)], void 0, 1)], void 0, 1)])) : createCommentVNode("", true)], 8, _hoisted_4$2)) : config.value.homePath ? (openBlock(), createBlock(_component_router_link, {
|
|
2878
3077
|
key: 1,
|
|
2879
3078
|
to: config.value.homePath,
|
|
2880
3079
|
class: "mint-topbar-home-link"
|
|
@@ -2891,7 +3090,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2891
3090
|
icon: pluginIcon.value,
|
|
2892
3091
|
size: "topbar",
|
|
2893
3092
|
variant: "solid"
|
|
2894
|
-
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_8$1, [..._cache[
|
|
3093
|
+
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_8$1, [..._cache[13] || (_cache[13] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)], void 0, 1)], void 0, 1)])) : createCommentVNode("", true)]),
|
|
2895
3094
|
_: 3
|
|
2896
3095
|
}, 8, ["to"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [unref(isIntegrated) || _ctx.$slots.icon || _ctx.$slots.logo || pluginIcon.value || config.value.logo ? (openBlock(), createElementBlock("span", _hoisted_9$1, [unref(isIntegrated) ? (openBlock(), createBlock(PluginIcon_default, {
|
|
2897
3096
|
key: 0,
|
|
@@ -2905,21 +3104,21 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2905
3104
|
icon: pluginIcon.value,
|
|
2906
3105
|
size: "topbar",
|
|
2907
3106
|
variant: "solid"
|
|
2908
|
-
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_10$1, [..._cache[
|
|
3107
|
+
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_10$1, [..._cache[14] || (_cache[14] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)], void 0, 1)], void 0, 1)])) : createCommentVNode("", true)], 64))]),
|
|
2909
3108
|
identityName.value ? (openBlock(), createElementBlock("span", _hoisted_11$1, [createElementVNode("span", _hoisted_12$1, toDisplayString(identityName.value), 1), identitySubtitle.value ? (openBlock(), createElementBlock("span", _hoisted_13$1, toDisplayString(identitySubtitle.value), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
|
|
2910
3109
|
hasPlatformPageSelector.value ? (openBlock(), createElementBlock("span", {
|
|
2911
|
-
key:
|
|
3110
|
+
key: 2,
|
|
2912
3111
|
ref_key: "platformPageSelectorEl",
|
|
2913
3112
|
ref: platformPageSelectorEl,
|
|
2914
3113
|
class: "mint-topbar__platform-page-selector",
|
|
2915
3114
|
"data-onboarding": "topbar-page-selector"
|
|
2916
3115
|
}, null, 512)) : hasPropPageSelector.value ? (openBlock(), createBlock(AppTopBarPageSelectorInternal_default, {
|
|
2917
|
-
key:
|
|
3116
|
+
key: 3,
|
|
2918
3117
|
"data-onboarding": "topbar-page-selector",
|
|
2919
3118
|
pages: normalizedPageSelector.value,
|
|
2920
3119
|
"current-page-id": __props.currentPageSelectorId,
|
|
2921
3120
|
"plugin-name": pageSelectorPluginName.value,
|
|
2922
|
-
onSelect: _cache[
|
|
3121
|
+
onSelect: _cache[1] || (_cache[1] = ($event) => emit("page-selector-select", $event))
|
|
2923
3122
|
}, createSlots({ _: 2 }, [_ctx.$slots["page-selector-icon"] ? {
|
|
2924
3123
|
name: "icon",
|
|
2925
3124
|
fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, "page-selector-icon", normalizeProps(guardReactiveProps(slotProps)))]),
|
|
@@ -2941,11 +3140,11 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2941
3140
|
items: normalizedPillNav.value,
|
|
2942
3141
|
"current-item-id": __props.pill,
|
|
2943
3142
|
onSelect: handlePillSelect,
|
|
2944
|
-
onOptionSelect: _cache[
|
|
3143
|
+
onOptionSelect: _cache[2] || (_cache[2] = (option, item) => emit("pill-option-select", option, item))
|
|
2945
3144
|
}, null, 8, ["items", "current-item-id"])) : createCommentVNode("", true)])])) : createCommentVNode("", true),
|
|
2946
|
-
createElementVNode("div", _hoisted_19$1, [
|
|
2947
|
-
|
|
2948
|
-
|
|
3145
|
+
createElementVNode("div", _hoisted_19$1, [hasContext.value ? (openBlock(), createElementBlock("div", _hoisted_20$1, [
|
|
3146
|
+
showStandaloneBadge.value ? (openBlock(), createElementBlock("span", _hoisted_21$1, toDisplayString(config.value.standaloneLabel), 1)) : createCommentVNode("", true),
|
|
3147
|
+
showRunSlot.value ? (openBlock(), createElementBlock("div", {
|
|
2949
3148
|
key: 1,
|
|
2950
3149
|
class: normalizeClass(["mint-topbar__run-slot", { "mint-topbar__run-slot--joined": runSlotJoined.value }]),
|
|
2951
3150
|
"data-onboarding": "topbar-run"
|
|
@@ -2954,11 +3153,11 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2954
3153
|
...unref(appExperiment).popover.value,
|
|
2955
3154
|
showSave: false
|
|
2956
3155
|
} : unref(appExperiment).popover.value, {
|
|
2957
|
-
onSelect: _cache[
|
|
2958
|
-
onSave: _cache[
|
|
2959
|
-
onDetach: _cache[
|
|
3156
|
+
onSelect: _cache[3] || (_cache[3] = ($event) => unref(appExperiment).openModal()),
|
|
3157
|
+
onSave: _cache[4] || (_cache[4] = ($event) => unref(appExperiment).handleSave()),
|
|
3158
|
+
onDetach: _cache[5] || (_cache[5] = ($event) => unref(appExperiment).handleDetach())
|
|
2960
3159
|
}), null, 16)) : createCommentVNode("", true),
|
|
2961
|
-
createElementVNode("span",
|
|
3160
|
+
createElementVNode("span", _hoisted_22$1, toDisplayString(__props.job ? JOB_STATUS_TEXT[__props.job.status] : ""), 1),
|
|
2962
3161
|
createVNode(Transition, {
|
|
2963
3162
|
name: "mint-topbar-job",
|
|
2964
3163
|
mode: "out-in",
|
|
@@ -2974,48 +3173,110 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2974
3173
|
"aria-label": jobName.value,
|
|
2975
3174
|
"aria-expanded": __props.jobsOpen,
|
|
2976
3175
|
"aria-controls": __props.jobsPanelId,
|
|
2977
|
-
onClick: _cache[
|
|
3176
|
+
onClick: _cache[6] || (_cache[6] = ($event) => emit("job-click"))
|
|
2978
3177
|
}, [(openBlock(), createBlock(resolveDynamicComponent(JOB_ICONS[__props.job.status]), {
|
|
2979
3178
|
class: normalizeClass(["mint-topbar__job-icon", { "mint-topbar__job-icon--spin": __props.job.status === "running" || __props.job.status === "queued" }]),
|
|
2980
3179
|
size: 14,
|
|
2981
3180
|
"aria-hidden": "true"
|
|
2982
|
-
}, null, 8, ["class"])), jobPercent.value != null ? (openBlock(), createElementBlock("span",
|
|
3181
|
+
}, null, 8, ["class"])), jobPercent.value != null ? (openBlock(), createElementBlock("span", _hoisted_24$1, [createElementVNode("span", { style: normalizeStyle({ width: `${jobPercent.value}%` }) }, null, 4)])) : createCommentVNode("", true)], 10, _hoisted_23$1)) : __props.job === null ? (openBlock(), createElementBlock("button", {
|
|
2983
3182
|
key: "idle",
|
|
2984
3183
|
type: "button",
|
|
2985
3184
|
class: "mint-topbar__job mint-topbar__job--idle",
|
|
2986
|
-
"aria-label": __props.jobsDone ? `Jobs, ${__props.jobsDone} completed` :
|
|
3185
|
+
"aria-label": __props.jobsDone ? `Jobs, ${__props.jobsDone} completed` : "Jobs",
|
|
3186
|
+
title: "Jobs",
|
|
2987
3187
|
"aria-expanded": __props.jobsOpen,
|
|
2988
3188
|
"aria-controls": __props.jobsPanelId,
|
|
2989
|
-
onClick: _cache[
|
|
3189
|
+
onClick: _cache[7] || (_cache[7] = ($event) => emit("job-click"))
|
|
2990
3190
|
}, [
|
|
2991
3191
|
createVNode(unref(ListChecks), {
|
|
2992
3192
|
class: "mint-topbar__job-icon",
|
|
2993
3193
|
size: 14,
|
|
2994
3194
|
"aria-hidden": "true"
|
|
2995
3195
|
}),
|
|
2996
|
-
_cache[
|
|
2997
|
-
__props.jobsDone ? (openBlock(), createElementBlock("span",
|
|
2998
|
-
], 8,
|
|
3196
|
+
_cache[15] || (_cache[15] = createElementVNode("span", { class: "mint-topbar__job-label" }, "Jobs", -1)),
|
|
3197
|
+
__props.jobsDone ? (openBlock(), createElementBlock("span", _hoisted_26$1, toDisplayString(__props.jobsDone), 1)) : createCommentVNode("", true)
|
|
3198
|
+
], 8, _hoisted_25$1)) : createCommentVNode("", true)]),
|
|
2999
3199
|
_: 1
|
|
3000
3200
|
})
|
|
3001
3201
|
], 2)) : createCommentVNode("", true),
|
|
3002
|
-
renderSlot(_ctx.$slots, "actions"),
|
|
3003
3202
|
unref(onboarding)?.enabled.value ? (openBlock(), createBlock(AppTopBarOnboardingInternal_default, {
|
|
3004
3203
|
key: 2,
|
|
3005
3204
|
state: unref(onboarding)
|
|
3006
3205
|
}, null, 8, ["state"])) : createCommentVNode("", true),
|
|
3007
|
-
|
|
3206
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(visibleActions.value, (action) => {
|
|
3207
|
+
return openBlock(), createElementBlock(Fragment, { key: action.id }, [action.icon ? (openBlock(), createElementBlock("button", {
|
|
3208
|
+
key: 0,
|
|
3209
|
+
type: "button",
|
|
3210
|
+
class: "mint-topbar__icon-btn",
|
|
3211
|
+
"aria-label": action.label,
|
|
3212
|
+
title: action.title ?? action.label,
|
|
3213
|
+
disabled: action.disabled || action.loading,
|
|
3214
|
+
"aria-busy": action.loading || void 0,
|
|
3215
|
+
"data-action": action.id,
|
|
3216
|
+
onClick: ($event) => action.onSelect()
|
|
3217
|
+
}, [action.loading ? (openBlock(), createBlock(unref(LoaderCircle), {
|
|
3218
|
+
key: 0,
|
|
3219
|
+
class: "mint-topbar__icon-btn-icon mint-topbar__job-icon--spin",
|
|
3220
|
+
"aria-hidden": "true"
|
|
3221
|
+
})) : (openBlock(), createBlock(LucideIconInternal_default, {
|
|
3222
|
+
key: 1,
|
|
3223
|
+
name: action.icon,
|
|
3224
|
+
size: 16
|
|
3225
|
+
}, null, 8, ["name"])), action.dot ? (openBlock(), createElementBlock("span", {
|
|
3226
|
+
key: 2,
|
|
3227
|
+
class: normalizeClass(["mint-topbar__icon-btn-dot", `mint-topbar__icon-btn-dot--${action.dot}`]),
|
|
3228
|
+
"aria-hidden": "true"
|
|
3229
|
+
}, null, 2)) : createCommentVNode("", true)], 8, _hoisted_27$1)) : (openBlock(), createBlock(BaseButton_default, {
|
|
3230
|
+
key: 1,
|
|
3231
|
+
variant: "secondary",
|
|
3232
|
+
size: "sm",
|
|
3233
|
+
title: action.title,
|
|
3234
|
+
loading: action.loading,
|
|
3235
|
+
disabled: action.disabled,
|
|
3236
|
+
"data-action": action.id,
|
|
3237
|
+
onClick: ($event) => action.onSelect()
|
|
3238
|
+
}, {
|
|
3239
|
+
default: withCtx(() => [createTextVNode(toDisplayString(action.label), 1)]),
|
|
3240
|
+
_: 2
|
|
3241
|
+
}, 1032, [
|
|
3242
|
+
"title",
|
|
3243
|
+
"loading",
|
|
3244
|
+
"disabled",
|
|
3245
|
+
"data-action",
|
|
3246
|
+
"onClick"
|
|
3247
|
+
]))], 64);
|
|
3248
|
+
}), 128)),
|
|
3249
|
+
overflowMenuItems.value.length ? (openBlock(), createBlock(ActionMenu_default, {
|
|
3008
3250
|
key: 3,
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3251
|
+
label: "More actions",
|
|
3252
|
+
items: overflowMenuItems.value,
|
|
3253
|
+
onSelect: selectOverflowAction
|
|
3254
|
+
}, {
|
|
3255
|
+
trigger: withCtx(({ open, toggle, keydown }) => [createElementVNode("button", {
|
|
3256
|
+
type: "button",
|
|
3257
|
+
class: "mint-topbar__icon-btn",
|
|
3258
|
+
"aria-label": "More actions",
|
|
3259
|
+
title: "More actions",
|
|
3260
|
+
"aria-haspopup": "menu",
|
|
3261
|
+
"aria-expanded": open,
|
|
3262
|
+
onClick: toggle,
|
|
3263
|
+
onKeydown: keydown
|
|
3264
|
+
}, [createVNode(unref(Ellipsis), {
|
|
3265
|
+
class: "mint-topbar__icon-btn-icon",
|
|
3266
|
+
"aria-hidden": "true"
|
|
3267
|
+
})], 40, _hoisted_28$1)]),
|
|
3268
|
+
_: 1
|
|
3269
|
+
}, 8, ["items"])) : createCommentVNode("", true),
|
|
3270
|
+
_ctx.$slots.actions ? (openBlock(), createElementBlock("span", _hoisted_29$1, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)
|
|
3271
|
+
])) : createCommentVNode("", true), createElementVNode("div", _hoisted_30$1, [
|
|
3272
|
+
createVNode(ThemeToggle_default, { size: "sm" }),
|
|
3273
|
+
createElementVNode("button", {
|
|
3013
3274
|
type: "button",
|
|
3014
3275
|
class: "mint-topbar__settings-btn",
|
|
3015
3276
|
"aria-label": "Open settings",
|
|
3016
3277
|
"data-onboarding": "topbar-settings",
|
|
3017
|
-
onClick: _cache[
|
|
3018
|
-
}, [..._cache[
|
|
3278
|
+
onClick: _cache[8] || (_cache[8] = ($event) => settingsOpen.value = true)
|
|
3279
|
+
}, [..._cache[16] || (_cache[16] = [createElementVNode("svg", {
|
|
3019
3280
|
class: "mint-topbar__settings-icon",
|
|
3020
3281
|
viewBox: "0 0 24 24",
|
|
3021
3282
|
fill: "none",
|
|
@@ -3027,14 +3288,14 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
3027
3288
|
cx: "12",
|
|
3028
3289
|
cy: "12",
|
|
3029
3290
|
r: "3"
|
|
3030
|
-
})], -1)])])
|
|
3291
|
+
})], -1)])]),
|
|
3031
3292
|
renderSlot(_ctx.$slots, "account")
|
|
3032
|
-
])
|
|
3033
|
-
])], 2),
|
|
3034
|
-
|
|
3293
|
+
])])
|
|
3294
|
+
], 2)], 2),
|
|
3295
|
+
settingsOpen.value ? (openBlock(), createBlock(unref(SettingsModal), {
|
|
3035
3296
|
key: 0,
|
|
3036
3297
|
open: settingsOpen.value,
|
|
3037
|
-
"onUpdate:open": _cache[
|
|
3298
|
+
"onUpdate:open": _cache[9] || (_cache[9] = ($event) => settingsOpen.value = $event),
|
|
3038
3299
|
title: settingsConfig.value?.title,
|
|
3039
3300
|
tabs: normalizedSettingsTabs.value,
|
|
3040
3301
|
"show-appearance": settingsConfig.value?.showAppearance ?? true,
|
|
@@ -3044,7 +3305,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
3044
3305
|
spec: settingsConfig.value?.spec,
|
|
3045
3306
|
values: settingsConfig.value?.values,
|
|
3046
3307
|
"user-type": settingsConfig.value?.userType,
|
|
3047
|
-
"onUpdate:values": _cache[
|
|
3308
|
+
"onUpdate:values": _cache[10] || (_cache[10] = ($event) => emit("settings-values-change", $event))
|
|
3048
3309
|
}, createSlots({
|
|
3049
3310
|
appearance: withCtx(() => [renderSlot(_ctx.$slots, "settings-appearance")]),
|
|
3050
3311
|
_: 2
|
|
@@ -3065,7 +3326,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
3065
3326
|
"values",
|
|
3066
3327
|
"user-type"
|
|
3067
3328
|
])) : createCommentVNode("", true),
|
|
3068
|
-
unref(appExperiment) && !isStandalone.value && canBindExperiment.value && unref(appExperiment).selectorModal.value.open ? (openBlock(), createBlock(unref(ExperimentSelectorModal), mergeProps({ key: 1 }, unref(appExperiment).selectorModal.value, { "onUpdate:open": _cache[
|
|
3329
|
+
unref(appExperiment) && !isStandalone.value && canBindExperiment.value && unref(appExperiment).selectorModal.value.open ? (openBlock(), createBlock(unref(ExperimentSelectorModal), mergeProps({ key: 1 }, unref(appExperiment).selectorModal.value, { "onUpdate:open": _cache[11] || (_cache[11] = ($event) => $event ? unref(appExperiment).openModal() : unref(appExperiment).closeModal()) }), null, 16)) : createCommentVNode("", true)
|
|
3069
3330
|
], 64);
|
|
3070
3331
|
};
|
|
3071
3332
|
}
|
|
@@ -4534,6 +4795,6 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
|
|
|
4534
4795
|
}
|
|
4535
4796
|
});
|
|
4536
4797
|
//#endregion
|
|
4537
|
-
export {
|
|
4798
|
+
export { controlValuesToComponentBindings as A, warnDeprecatedOnce as C, getControlDefaults as D, defineControls as E, controlsToSettingsSchema as F, getDefaultControlView as I, CollapsibleCard_default as L, controlValuesToComponentProps as M, controlsTo as N, useControlSchema as O, controlsToFormSchema as P, ThemeToggle_default as R, AppLayout_default as S, defineControlComponentBindings as T, provideOnboarding as _, pickExistingRecordKeys as a, normalizeItemInput as b, valuesEqual as c, useForm as d, AppTopBar_default as f, defineOnboarding as g, ONBOARDING_KEY as h, formSchemaFieldNames as i, controlValuesToComponentBindingsById as j, controlBindings as k, useFormBuilder as l, ANCHOR_WAIT_MS as m, FormSchemaInternal_default as n, pickRecordKeys as o, providePluginIdentity as p, FormFieldRendererInternal_default as r, recordValuesEqualForKeys as s, AppSidebar_default as t, evaluateCondition as u, useOnboarding as v, usePluginWorkspace as w, normalizeLabelItemInput as x, PluginIcon_default as y, useTheme as z };
|
|
4538
4799
|
|
|
4539
|
-
//# sourceMappingURL=AppSidebar-
|
|
4800
|
+
//# sourceMappingURL=AppSidebar-C1DT4nsZ.js.map
|