@morscherlab/mint-sdk 1.5.0-beta.1 → 1.5.0-beta.10

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.
Files changed (174) hide show
  1. package/dist/{AlertBox-CIhqsWbN.js → AlertBox-Cai0w7gF.js} +3 -3
  2. package/dist/{AlertBox-CIhqsWbN.js.map → AlertBox-Cai0w7gF.js.map} +1 -1
  3. package/dist/{AppSidebar-BDrd7Kwn.js → AppSidebar-C-Vq5x4I.js} +410 -127
  4. package/dist/AppSidebar-C-Vq5x4I.js.map +1 -0
  5. package/dist/{ConfirmDialog-CjWoxAD1.js → ConfirmDialog-BjFsOpBe.js} +3 -3
  6. package/dist/ConfirmDialog-BjFsOpBe.js.map +1 -0
  7. package/dist/{ExperimentPopover-BM92LlrQ.js → ExperimentPopover-DYy_s0kI.js} +25 -37
  8. package/dist/ExperimentPopover-DYy_s0kI.js.map +1 -0
  9. package/dist/{ExperimentSelectorModal-LsB1ABmh.js → ExperimentSelectorModal-Bfh5bdkv.js} +37 -8
  10. package/dist/ExperimentSelectorModal-Bfh5bdkv.js.map +1 -0
  11. package/dist/{SegmentedControl-Dz41vAFM.js → SegmentedControl-B8KgyOjd.js} +2 -2
  12. package/dist/{SegmentedControl-Dz41vAFM.js.map → SegmentedControl-B8KgyOjd.js.map} +1 -1
  13. package/dist/{SettingsModal-C-MSR-bk.js → SettingsModal-DwfrD1ER.js} +7 -7
  14. package/dist/{SettingsModal-C-MSR-bk.js.map → SettingsModal-DwfrD1ER.js.map} +1 -1
  15. package/dist/__tests__/components/AppTopBarCompact.test.d.ts +1 -0
  16. package/dist/__tests__/components/AppTopBarCompactReset.test.d.ts +1 -0
  17. package/dist/__tests__/components/AutoGroupModal.experimentLoad.test.d.ts +1 -0
  18. package/dist/components/AppTopBar.compact.d.ts +5 -0
  19. package/dist/components/AppTopBar.vue.d.ts +17 -17
  20. package/dist/components/FormBuilder.vue.d.ts +1 -1
  21. package/dist/components/PluginIcon.vue.d.ts +2 -2
  22. package/dist/components/PluginWorkspaceView.vue.d.ts +4 -0
  23. package/dist/components/SectionCard.vue.d.ts +13 -1
  24. package/dist/components/SettingsModal.vue.d.ts +1 -1
  25. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -2
  26. package/dist/components/internal/FormSchemaInternal.vue.d.ts +9 -9
  27. package/dist/components/internal/FormSectionRenderer.vue.d.ts +4 -4
  28. package/dist/components/internal/LucideIconInternal.vue.d.ts +17 -0
  29. package/dist/composables/appLayoutSidebar.d.ts +9 -0
  30. package/dist/composables/useExperimentSelector.d.ts +2 -0
  31. package/dist/composables/useOnboarding.d.ts +1 -1
  32. package/dist/composables/usePluginWorkspace.d.ts +2 -0
  33. package/dist/composables/useVersionedSave.d.ts +5 -2
  34. package/dist/{controlSchemaModel-BbXbMgc6.js → controlSchemaModel-BtFNZj8t.js} +2 -2
  35. package/dist/{controlSchemaModel-BbXbMgc6.js.map → controlSchemaModel-BtFNZj8t.js.map} +1 -1
  36. package/dist/{data-LzdkEZJ-.js → data-CJztFns8.js} +31 -15
  37. package/dist/{data-LzdkEZJ-.js.map → data-CJztFns8.js.map} +1 -1
  38. package/dist/data.js +8 -8
  39. package/dist/{experimentStatus-DCn2QKG7.js → experimentStatus-Deokk7Br.js} +2 -2
  40. package/dist/{experimentStatus-DCn2QKG7.js.map → experimentStatus-Deokk7Br.js.map} +1 -1
  41. package/dist/index.d.ts +0 -1
  42. package/dist/index.js +15 -20
  43. package/dist/index.js.map +1 -1
  44. package/dist/{install-UTqrAgHe.js → install-Bk02tJ5M.js} +15 -40
  45. package/dist/install-Bk02tJ5M.js.map +1 -0
  46. package/dist/install.js +1 -1
  47. package/dist/{lab-CbdDLAVr.js → lab-BYhb_cJI.js} +47 -117
  48. package/dist/lab-BYhb_cJI.js.map +1 -0
  49. package/dist/lab.js +4 -4
  50. package/dist/{records-CWRztE5M.js → records-GtiVMlTQ.js} +207 -171
  51. package/dist/records-GtiVMlTQ.js.map +1 -0
  52. package/dist/{runtime-DrL6lKAb.js → runtime-aZPUPxoB.js} +112 -54
  53. package/dist/runtime-aZPUPxoB.js.map +1 -0
  54. package/dist/runtime.js +6 -6
  55. package/dist/{shell-Ch7cJnjo.js → shell-Bk9mD4Lc.js} +5 -5
  56. package/dist/{shell-Ch7cJnjo.js.map → shell-Bk9mD4Lc.js.map} +1 -1
  57. package/dist/shell.js +5 -5
  58. package/dist/styles.css +315 -134
  59. package/dist/styles.d.ts +1 -0
  60. package/dist/types/components.d.ts +22 -2
  61. package/dist/types/generated-ui.d.ts +2 -0
  62. package/dist/types/index.d.ts +2 -2
  63. package/dist/types/instrument.d.ts +5 -17
  64. package/dist/{useDropdownState-uFIz6Yv8.js → useDropdownState-CcBzUYZ6.js} +14 -5
  65. package/dist/useDropdownState-CcBzUYZ6.js.map +1 -0
  66. package/dist/{useExperimentSamples-Cz2v3V_q.js → useExperimentSamples-CpNXvpUn.js} +3 -3
  67. package/dist/{useExperimentSamples-Cz2v3V_q.js.map → useExperimentSamples-CpNXvpUn.js.map} +1 -1
  68. package/dist/{useListReorder-QqJc1dpX.js → useListReorder-Bp4EAI2w.js} +16 -4
  69. package/dist/useListReorder-Bp4EAI2w.js.map +1 -0
  70. package/dist/{useRackEditor-BHGM1Ngz.js → useRackEditor-i2bdPUFf.js} +156 -27
  71. package/dist/useRackEditor-i2bdPUFf.js.map +1 -0
  72. package/dist/{useRealtime-CNQbrS01.js → useRealtime-BLQEjbuq.js} +3 -3
  73. package/dist/{useRealtime-CNQbrS01.js.map → useRealtime-BLQEjbuq.js.map} +1 -1
  74. package/dist/useRequest-CXyPw3eh.js +76 -0
  75. package/dist/useRequest-CXyPw3eh.js.map +1 -0
  76. package/dist/utils/deprecation.d.ts +2 -0
  77. package/dist/utils/lucideIcon.d.ts +4 -0
  78. package/package.json +7 -4
  79. package/src/__tests__/components/AppTopBar.test.ts +102 -20
  80. package/src/__tests__/components/AppTopBarCompact.test.ts +65 -0
  81. package/src/__tests__/components/AppTopBarCompactReset.test.ts +24 -0
  82. package/src/__tests__/components/AppTopBarOnboarding.test.ts +10 -0
  83. package/src/__tests__/components/AutoGroupModal.experimentLoad.test.ts +58 -0
  84. package/src/__tests__/components/BaseModal.test.ts +33 -2
  85. package/src/__tests__/components/ConfirmDialog.test.ts +2 -2
  86. package/src/__tests__/components/ExperimentPopover.test.ts +32 -0
  87. package/src/__tests__/components/ExperimentSelectorModal.test.ts +16 -0
  88. package/src/__tests__/components/PluginWorkspaceView.test.ts +20 -1
  89. package/src/__tests__/components/SectionCard.test.ts +33 -0
  90. package/src/__tests__/components/deprecationTags.test.ts +4 -18
  91. package/src/__tests__/composables/useJobCenter.test.ts +35 -0
  92. package/src/__tests__/composables/useJobsEndpoint.test.ts +50 -0
  93. package/src/__tests__/composables/useOnboarding.test.ts +2 -2
  94. package/src/__tests__/composables/useVersionedSave.test.ts +71 -6
  95. package/src/__tests__/docs/frontendDocsCatalog.test.ts +3 -3
  96. package/src/__tests__/styles/menusShellRefresh.test.ts +10 -0
  97. package/src/components/AppLayout.story.vue +5 -5
  98. package/src/components/AppLayout.vue +13 -1
  99. package/src/components/AppSidebar.vue +2 -2
  100. package/src/components/AppTopBar.compact.ts +60 -0
  101. package/src/components/AppTopBar.story.vue +39 -14
  102. package/src/components/AppTopBar.vue +222 -89
  103. package/src/components/BaseModal.vue +16 -5
  104. package/src/components/CollapsibleCard.vue +1 -1
  105. package/src/components/ConfirmDialog.vue +1 -1
  106. package/src/components/ExperimentPopover.story.vue +2 -2
  107. package/src/components/ExperimentPopover.vue +6 -22
  108. package/src/components/ExperimentSelectorModal.vue +35 -0
  109. package/src/components/FileUploader.vue +3 -35
  110. package/src/components/GeneratedPluginView.vue +34 -81
  111. package/src/components/GeneratedResultRenderer.vue +2 -1
  112. package/src/components/InstrumentStatusPanels.vue +3 -3
  113. package/src/components/PlotlyChart.vue +1 -1
  114. package/src/components/PluginIcon.story.vue +2 -2
  115. package/src/components/PluginIcon.vue +2 -2
  116. package/src/components/PluginWorkspaceView.vue +10 -1
  117. package/src/components/SectionCard.vue +42 -6
  118. package/src/components/internal/AppTopBarOnboardingInternal.vue +30 -14
  119. package/src/components/internal/AppTopBarPageSelectorInternal.vue +12 -0
  120. package/src/components/internal/AutoGroupModalInternal.vue +14 -3
  121. package/src/components/internal/LucideIconInternal.vue +23 -0
  122. package/src/composables/appLayoutSidebar.ts +11 -0
  123. package/src/composables/index.ts +1 -2
  124. package/src/composables/useExperimentSelector.ts +4 -0
  125. package/src/composables/useJobCenter.ts +21 -1
  126. package/src/composables/useJobsEndpoint.ts +15 -4
  127. package/src/composables/useOnboarding.ts +3 -3
  128. package/src/composables/usePluginWorkspace.ts +15 -4
  129. package/src/composables/useVersionedSave.ts +32 -7
  130. package/src/generated-ui/main.ts +3 -1
  131. package/src/index.ts +0 -3
  132. package/src/styles/components/alert-box.css +1 -1
  133. package/src/styles/components/app-layout.css +5 -0
  134. package/src/styles/components/app-sidebar.css +5 -5
  135. package/src/styles/components/app-top-bar.css +130 -9
  136. package/src/styles/components/button.css +3 -3
  137. package/src/styles/components/checkbox.css +1 -1
  138. package/src/styles/components/collapsible-card.css +1 -1
  139. package/src/styles/components/confirm-dialog.css +2 -2
  140. package/src/styles/components/file-uploader.css +3 -3
  141. package/src/styles/components/icon-button.css +3 -3
  142. package/src/styles/components/loading-spinner.css +1 -1
  143. package/src/styles/components/onboarding.css +39 -0
  144. package/src/styles/components/pill.css +1 -1
  145. package/src/styles/components/plugin-icon.css +2 -2
  146. package/src/styles/components/presence-avatars.css +4 -4
  147. package/src/styles/components/progress-bar.css +1 -1
  148. package/src/styles/components/section-card.css +65 -6
  149. package/src/styles/components/sequence-input.css +1 -1
  150. package/src/styles/components/slider.css +1 -1
  151. package/src/styles/components/toggle.css +1 -1
  152. package/src/styles/variables.css +10 -4
  153. package/src/types/components.ts +23 -2
  154. package/src/types/generated-ui.ts +2 -0
  155. package/src/types/index.ts +1 -1
  156. package/src/types/instrument.ts +5 -18
  157. package/src/utils/deprecation.ts +8 -0
  158. package/src/utils/lucideIcon.ts +25 -0
  159. package/src/utils/lucideIconIndex.d.ts +2 -0
  160. package/dist/AppSidebar-BDrd7Kwn.js.map +0 -1
  161. package/dist/ConfirmDialog-CjWoxAD1.js.map +0 -1
  162. package/dist/ExperimentPopover-BM92LlrQ.js.map +0 -1
  163. package/dist/ExperimentSelectorModal-LsB1ABmh.js.map +0 -1
  164. package/dist/deprecatedRootExports.d.ts +0 -191
  165. package/dist/install-UTqrAgHe.js.map +0 -1
  166. package/dist/lab-CbdDLAVr.js.map +0 -1
  167. package/dist/records-CWRztE5M.js.map +0 -1
  168. package/dist/runtime-DrL6lKAb.js.map +0 -1
  169. package/dist/useDropdownState-uFIz6Yv8.js.map +0 -1
  170. package/dist/useListReorder-QqJc1dpX.js.map +0 -1
  171. package/dist/useRackEditor-BHGM1Ngz.js.map +0 -1
  172. package/dist/useRequest-Bfsh7gIm.js +0 -215
  173. package/dist/useRequest-Bfsh7gIm.js.map +0 -1
  174. package/src/deprecatedRootExports.ts +0 -226
@@ -1,215 +0,0 @@
1
- import { a as BaseButton_default, t as useDropdownState } from "./useDropdownState-uFIz6Yv8.js";
2
- import { r as readErrorMessage } from "./experiment-DyO54FQB.js";
3
- import { E as useMenuKeyboard, W as useFloatingPanel } from "./records-CWRztE5M.js";
4
- import { Fragment, Teleport, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, nextTick, normalizeClass, normalizeStyle, onMounted, openBlock, ref, renderList, renderSlot, toDisplayString, unref } from "vue";
5
- import { Check, Ellipsis } from "lucide-vue-next";
6
- //#region src/components/ActionMenu.vue?vue&type=script&setup=true&lang.ts
7
- var _hoisted_1 = {
8
- key: 0,
9
- class: "mint-menu-separator",
10
- role: "separator"
11
- };
12
- var _hoisted_2 = [
13
- "href",
14
- "target",
15
- "rel",
16
- "onClick"
17
- ];
18
- var _hoisted_3 = [
19
- "role",
20
- "aria-checked",
21
- "disabled",
22
- "onClick"
23
- ];
24
- //#endregion
25
- //#region src/components/ActionMenu.vue
26
- var ActionMenu_default = /* @__PURE__ */ defineComponent({
27
- __name: "ActionMenu",
28
- props: {
29
- label: {},
30
- items: {},
31
- disabled: {
32
- type: Boolean,
33
- default: false
34
- }
35
- },
36
- emits: [
37
- "select",
38
- "open",
39
- "close"
40
- ],
41
- setup(__props, { emit: __emit }) {
42
- /** Compact overflow actions with an icon-only BaseButton trigger and a viewport-safe teleported menu. */
43
- const props = __props;
44
- const emit = __emit;
45
- const panelRef = ref(null);
46
- const { isOpen, rootRef, triggerRef, open, close } = useDropdownState({
47
- insideRefs: [panelRef],
48
- onOpen: () => emit("open"),
49
- onClose: () => emit("close")
50
- });
51
- const { style: panelStyle } = useFloatingPanel(triggerRef, panelRef, isOpen, { placement: "bottom-end" });
52
- onMounted(() => {
53
- triggerRef.value = rootRef.value?.querySelector("button") ?? null;
54
- });
55
- function menuItems() {
56
- if (!panelRef.value) return [];
57
- return Array.from(panelRef.value.querySelectorAll(".mint-action-menu__item:not(:disabled)"));
58
- }
59
- /** `focusFirst` is false when the keyboard composable owns the initial focus. */
60
- function openMenu(focusFirst = true) {
61
- if (props.disabled || isOpen.value) return;
62
- open();
63
- if (focusFirst) nextTick(() => menuItems()[0]?.focus());
64
- }
65
- function toggleMenu() {
66
- if (props.disabled) return;
67
- if (isOpen.value) close();
68
- else openMenu();
69
- }
70
- const { handleTriggerKeydown, handlePanelKeydown } = useMenuKeyboard({
71
- items: menuItems,
72
- isOpen: () => isOpen.value,
73
- open: () => openMenu(false),
74
- close
75
- });
76
- function handleSelect(item) {
77
- if (item.disabled) return;
78
- emit("select", item);
79
- close();
80
- }
81
- return (_ctx, _cache) => {
82
- return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", {
83
- ref_key: "rootRef",
84
- ref: rootRef,
85
- class: "mint-action-menu"
86
- }, [renderSlot(_ctx.$slots, "trigger", {
87
- open: unref(isOpen),
88
- toggle: toggleMenu,
89
- keydown: unref(handleTriggerKeydown)
90
- }, () => [createVNode(BaseButton_default, {
91
- variant: "secondary",
92
- size: "sm",
93
- icon: unref(Ellipsis),
94
- label: __props.label,
95
- disabled: __props.disabled,
96
- "aria-haspopup": "menu",
97
- "aria-expanded": unref(isOpen),
98
- onClick: toggleMenu,
99
- onKeydown: unref(handleTriggerKeydown)
100
- }, null, 8, [
101
- "icon",
102
- "label",
103
- "disabled",
104
- "aria-expanded",
105
- "onKeydown"
106
- ])])], 512), (openBlock(), createBlock(Teleport, { to: "body" }, [unref(isOpen) ? (openBlock(), createElementBlock("div", {
107
- key: 0,
108
- ref_key: "panelRef",
109
- ref: panelRef,
110
- class: "mint-popover mint-action-menu__panel",
111
- style: normalizeStyle(unref(panelStyle)),
112
- role: "menu",
113
- onKeydown: _cache[0] || (_cache[0] = (...args) => unref(handlePanelKeydown) && unref(handlePanelKeydown)(...args))
114
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, index) => {
115
- return openBlock(), createElementBlock(Fragment, { key: item.id }, [item.danger && index > 0 && !__props.items[index - 1].danger ? (openBlock(), createElementBlock("div", _hoisted_1)) : createCommentVNode("", true), item.href !== void 0 && !item.disabled ? (openBlock(), createElementBlock("a", {
116
- key: 1,
117
- href: item.href,
118
- target: item.target,
119
- rel: item.target === "_blank" ? "noopener noreferrer" : void 0,
120
- class: normalizeClass(["mint-menu-item mint-action-menu__item", { "mint-menu-item--danger mint-action-menu__item--danger": item.danger }]),
121
- role: "menuitem",
122
- onClick: ($event) => handleSelect(item)
123
- }, toDisplayString(item.label), 11, _hoisted_2)) : (openBlock(), createElementBlock("button", {
124
- key: 2,
125
- type: "button",
126
- class: normalizeClass(["mint-menu-item mint-action-menu__item", { "mint-menu-item--danger mint-action-menu__item--danger": item.danger }]),
127
- role: item.checked === void 0 ? "menuitem" : "menuitemradio",
128
- "aria-checked": item.checked,
129
- disabled: item.disabled,
130
- onClick: ($event) => handleSelect(item)
131
- }, [item.checked !== void 0 ? (openBlock(), createBlock(unref(Check), {
132
- key: 0,
133
- class: normalizeClass(["mint-action-menu__check", { "mint-action-menu__check--off": !item.checked }]),
134
- size: 14,
135
- "aria-hidden": "true"
136
- }, null, 8, ["class"])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(item.label), 1)], 10, _hoisted_3))], 64);
137
- }), 128))], 36)) : createCommentVNode("", true)]))], 64);
138
- };
139
- }
140
- });
141
- //#endregion
142
- //#region src/composables/useRequest.ts
143
- /** Loading, error and timestamp state for one request at a time; `run()` drives it. */
144
- function useRequest(defaultErrorMessage = "Request failed.") {
145
- const isLoading = ref(false);
146
- const error = ref(null);
147
- const lastLoadedAt = ref(null);
148
- const lastSavedAt = ref(null);
149
- const lastRunAt = ref(null);
150
- function clearError() {
151
- error.value = null;
152
- }
153
- function readErrorMessage$1(value, fallback = defaultErrorMessage) {
154
- return readErrorMessage(value, fallback);
155
- }
156
- function setError(value, fallback) {
157
- const message = readErrorMessage$1(value, fallback);
158
- error.value = message;
159
- return message;
160
- }
161
- let runToken = 0;
162
- let activeController = null;
163
- function cancel() {
164
- runToken += 1;
165
- activeController?.abort();
166
- activeController = null;
167
- isLoading.value = false;
168
- }
169
- async function run(operation, options = {}) {
170
- if (options.abortPrevious !== false) activeController?.abort();
171
- const token = runToken += 1;
172
- const controller = new AbortController();
173
- activeController = controller;
174
- const callerSignal = options.signal;
175
- if (callerSignal) {
176
- if (callerSignal.aborted) controller.abort(callerSignal.reason);
177
- else callerSignal.addEventListener("abort", () => controller.abort(callerSignal.reason), { once: true });
178
- }
179
- const isCurrent = () => token === runToken;
180
- isLoading.value = true;
181
- clearError();
182
- try {
183
- const response = await operation(controller.signal);
184
- if (isCurrent() && options.kind) {
185
- const settledAt = /* @__PURE__ */ new Date();
186
- if (options.kind === "load") lastLoadedAt.value = settledAt;
187
- else if (options.kind === "save") lastSavedAt.value = settledAt;
188
- else lastRunAt.value = settledAt;
189
- }
190
- return response;
191
- } catch (err) {
192
- if (isCurrent()) setError(err, options.errorMessage);
193
- throw err;
194
- } finally {
195
- if (isCurrent()) isLoading.value = false;
196
- if (activeController === controller) activeController = null;
197
- }
198
- }
199
- return {
200
- isLoading,
201
- error,
202
- lastLoadedAt,
203
- lastSavedAt,
204
- lastRunAt,
205
- clearError,
206
- readErrorMessage: readErrorMessage$1,
207
- setError,
208
- run,
209
- cancel
210
- };
211
- }
212
- //#endregion
213
- export { ActionMenu_default as n, useRequest as t };
214
-
215
- //# sourceMappingURL=useRequest-Bfsh7gIm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRequest-Bfsh7gIm.js","names":[],"sources":["../src/components/ActionMenu.vue","../src/components/ActionMenu.vue","../src/composables/useRequest.ts"],"sourcesContent":["<script setup lang=\"ts\">\n/** Compact overflow actions with an icon-only BaseButton trigger and a viewport-safe teleported menu. */\nimport { Check, Ellipsis } from 'lucide-vue-next'\nimport { nextTick, onMounted, ref } from 'vue'\nimport { useDropdownState } from '../composables/useDropdownState'\nimport { useFloatingPanel } from '../composables/useFloatingPanel'\nimport { useMenuKeyboard } from '../composables/useMenuKeyboard'\nimport type { ActionMenuItem } from '../types/components'\nimport BaseButton from './BaseButton.vue'\n\ninterface Props {\n label: string\n items: ActionMenuItem[]\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n disabled: false,\n})\n\nconst emit = defineEmits<{\n select: [item: ActionMenuItem]\n open: []\n close: []\n}>()\n\ndefineSlots<{\n /** Replaces the ellipsis button; `toggle` and `keydown` go on the slotted button. */\n trigger?: (props: { open: boolean; toggle: () => void; keydown: (event: KeyboardEvent) => void }) => unknown\n}>()\n\nconst panelRef = ref<HTMLElement | null>(null)\n\n// Disclosure state (outside-click, Escape, focus return) and placement come from\n// the shared composables; the open menu follows its trigger on scroll.\nconst { isOpen, rootRef, triggerRef, open, close } = useDropdownState({\n insideRefs: [panelRef],\n onOpen: () => emit('open'),\n onClose: () => emit('close'),\n})\nconst { style: panelStyle } = useFloatingPanel(triggerRef, panelRef, isOpen, { placement: 'bottom-end' })\n\n// BaseButton owns the actual <button>, so the trigger element is resolved from\n// the wrapper once mounted rather than bound with a template ref.\nonMounted(() => {\n triggerRef.value = rootRef.value?.querySelector('button') ?? null\n})\n\nfunction menuItems(): HTMLElement[] {\n if (!panelRef.value) return []\n return Array.from(\n panelRef.value.querySelectorAll<HTMLElement>('.mint-action-menu__item:not(:disabled)'),\n )\n}\n\n/** `focusFirst` is false when the keyboard composable owns the initial focus. */\nfunction openMenu(focusFirst = true) {\n if (props.disabled || isOpen.value) return\n open()\n if (focusFirst) {\n void nextTick(() => menuItems()[0]?.focus())\n }\n}\n\nfunction toggleMenu() {\n if (props.disabled) return\n if (isOpen.value) close()\n else openMenu()\n}\n\nconst { handleTriggerKeydown, handlePanelKeydown } = useMenuKeyboard({\n items: menuItems,\n isOpen: () => isOpen.value,\n open: () => openMenu(false),\n close,\n})\n\nfunction handleSelect(item: ActionMenuItem) {\n if (item.disabled) return\n emit('select', item)\n close()\n}\n</script>\n\n<template>\n <span ref=\"rootRef\" class=\"mint-action-menu\">\n <!-- A custom trigger must render one <button> and wire toggle + keydown to it. -->\n <slot name=\"trigger\" :open=\"isOpen\" :toggle=\"toggleMenu\" :keydown=\"handleTriggerKeydown\">\n <BaseButton\n variant=\"secondary\"\n size=\"sm\"\n :icon=\"Ellipsis\"\n :label=\"label\"\n :disabled=\"disabled\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n @click=\"toggleMenu\"\n @keydown=\"handleTriggerKeydown\"\n />\n </slot>\n </span>\n\n <Teleport to=\"body\">\n <div\n v-if=\"isOpen\"\n ref=\"panelRef\"\n class=\"mint-popover mint-action-menu__panel\"\n :style=\"panelStyle\"\n role=\"menu\"\n @keydown=\"handlePanelKeydown\"\n >\n <template v-for=\"(item, index) in items\" :key=\"item.id\">\n <div\n v-if=\"item.danger && index > 0 && !items[index - 1].danger\"\n class=\"mint-menu-separator\"\n role=\"separator\"\n />\n <a\n v-if=\"item.href !== undefined && !item.disabled\"\n :href=\"item.href\"\n :target=\"item.target\"\n :rel=\"item.target === '_blank' ? 'noopener noreferrer' : undefined\"\n :class=\"['mint-menu-item mint-action-menu__item', { 'mint-menu-item--danger mint-action-menu__item--danger': item.danger }]\"\n role=\"menuitem\"\n @click=\"handleSelect(item)\"\n >\n {{ item.label }}\n </a>\n <button\n v-else\n type=\"button\"\n :class=\"['mint-menu-item mint-action-menu__item', { 'mint-menu-item--danger mint-action-menu__item--danger': item.danger }]\"\n :role=\"item.checked === undefined ? 'menuitem' : 'menuitemradio'\"\n :aria-checked=\"item.checked\"\n :disabled=\"item.disabled\"\n @click=\"handleSelect(item)\"\n >\n <Check\n v-if=\"item.checked !== undefined\"\n class=\"mint-action-menu__check\"\n :class=\"{ 'mint-action-menu__check--off': !item.checked }\"\n :size=\"14\"\n aria-hidden=\"true\"\n />\n {{ item.label }}\n </button>\n </template>\n </div>\n </Teleport>\n</template>\n","<script setup lang=\"ts\">\n/** Compact overflow actions with an icon-only BaseButton trigger and a viewport-safe teleported menu. */\nimport { Check, Ellipsis } from 'lucide-vue-next'\nimport { nextTick, onMounted, ref } from 'vue'\nimport { useDropdownState } from '../composables/useDropdownState'\nimport { useFloatingPanel } from '../composables/useFloatingPanel'\nimport { useMenuKeyboard } from '../composables/useMenuKeyboard'\nimport type { ActionMenuItem } from '../types/components'\nimport BaseButton from './BaseButton.vue'\n\ninterface Props {\n label: string\n items: ActionMenuItem[]\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n disabled: false,\n})\n\nconst emit = defineEmits<{\n select: [item: ActionMenuItem]\n open: []\n close: []\n}>()\n\ndefineSlots<{\n /** Replaces the ellipsis button; `toggle` and `keydown` go on the slotted button. */\n trigger?: (props: { open: boolean; toggle: () => void; keydown: (event: KeyboardEvent) => void }) => unknown\n}>()\n\nconst panelRef = ref<HTMLElement | null>(null)\n\n// Disclosure state (outside-click, Escape, focus return) and placement come from\n// the shared composables; the open menu follows its trigger on scroll.\nconst { isOpen, rootRef, triggerRef, open, close } = useDropdownState({\n insideRefs: [panelRef],\n onOpen: () => emit('open'),\n onClose: () => emit('close'),\n})\nconst { style: panelStyle } = useFloatingPanel(triggerRef, panelRef, isOpen, { placement: 'bottom-end' })\n\n// BaseButton owns the actual <button>, so the trigger element is resolved from\n// the wrapper once mounted rather than bound with a template ref.\nonMounted(() => {\n triggerRef.value = rootRef.value?.querySelector('button') ?? null\n})\n\nfunction menuItems(): HTMLElement[] {\n if (!panelRef.value) return []\n return Array.from(\n panelRef.value.querySelectorAll<HTMLElement>('.mint-action-menu__item:not(:disabled)'),\n )\n}\n\n/** `focusFirst` is false when the keyboard composable owns the initial focus. */\nfunction openMenu(focusFirst = true) {\n if (props.disabled || isOpen.value) return\n open()\n if (focusFirst) {\n void nextTick(() => menuItems()[0]?.focus())\n }\n}\n\nfunction toggleMenu() {\n if (props.disabled) return\n if (isOpen.value) close()\n else openMenu()\n}\n\nconst { handleTriggerKeydown, handlePanelKeydown } = useMenuKeyboard({\n items: menuItems,\n isOpen: () => isOpen.value,\n open: () => openMenu(false),\n close,\n})\n\nfunction handleSelect(item: ActionMenuItem) {\n if (item.disabled) return\n emit('select', item)\n close()\n}\n</script>\n\n<template>\n <span ref=\"rootRef\" class=\"mint-action-menu\">\n <!-- A custom trigger must render one <button> and wire toggle + keydown to it. -->\n <slot name=\"trigger\" :open=\"isOpen\" :toggle=\"toggleMenu\" :keydown=\"handleTriggerKeydown\">\n <BaseButton\n variant=\"secondary\"\n size=\"sm\"\n :icon=\"Ellipsis\"\n :label=\"label\"\n :disabled=\"disabled\"\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n @click=\"toggleMenu\"\n @keydown=\"handleTriggerKeydown\"\n />\n </slot>\n </span>\n\n <Teleport to=\"body\">\n <div\n v-if=\"isOpen\"\n ref=\"panelRef\"\n class=\"mint-popover mint-action-menu__panel\"\n :style=\"panelStyle\"\n role=\"menu\"\n @keydown=\"handlePanelKeydown\"\n >\n <template v-for=\"(item, index) in items\" :key=\"item.id\">\n <div\n v-if=\"item.danger && index > 0 && !items[index - 1].danger\"\n class=\"mint-menu-separator\"\n role=\"separator\"\n />\n <a\n v-if=\"item.href !== undefined && !item.disabled\"\n :href=\"item.href\"\n :target=\"item.target\"\n :rel=\"item.target === '_blank' ? 'noopener noreferrer' : undefined\"\n :class=\"['mint-menu-item mint-action-menu__item', { 'mint-menu-item--danger mint-action-menu__item--danger': item.danger }]\"\n role=\"menuitem\"\n @click=\"handleSelect(item)\"\n >\n {{ item.label }}\n </a>\n <button\n v-else\n type=\"button\"\n :class=\"['mint-menu-item mint-action-menu__item', { 'mint-menu-item--danger mint-action-menu__item--danger': item.danger }]\"\n :role=\"item.checked === undefined ? 'menuitem' : 'menuitemradio'\"\n :aria-checked=\"item.checked\"\n :disabled=\"item.disabled\"\n @click=\"handleSelect(item)\"\n >\n <Check\n v-if=\"item.checked !== undefined\"\n class=\"mint-action-menu__check\"\n :class=\"{ 'mint-action-menu__check--off': !item.checked }\"\n :size=\"14\"\n aria-hidden=\"true\"\n />\n {{ item.label }}\n </button>\n </template>\n </div>\n </Teleport>\n</template>\n","import { ref, type Ref } from 'vue'\nimport { readErrorMessage as readSharedErrorMessage } from '../utils/errors'\n\nexport type RequestKind = 'load' | 'save' | 'run'\n\n/**\n * The unit of work `run()` drives.\n *\n * It receives an `AbortSignal` that fires when the run is superseded by a\n * newer `run()` or by `cancel()`. Zero-argument operations stay valid and\n * simply ignore it.\n */\nexport type RequestOperation<T> = (signal: AbortSignal) => Promise<T>\n\nexport interface RequestRunOptions {\n /** Which timestamp a successful run moves: `lastLoadedAt`, `lastSavedAt` or `lastRunAt`. */\n kind?: RequestKind\n errorMessage?: string\n /**\n * Abort the previously started run when this one starts. Default `true`;\n * pass `false` to let overlapping runs finish their own work (the stale\n * guard on shared state still applies either way).\n */\n abortPrevious?: boolean\n /** Caller-owned signal; aborting it aborts this run's signal too. */\n signal?: AbortSignal\n}\n\nexport interface UseRequestReturn {\n /** Whether a request is in progress. */\n isLoading: Ref<boolean>\n /** Message from the last failed request, or null. */\n error: Ref<string | null>\n /** Timestamp of the last successful load operation, or null. */\n lastLoadedAt: Ref<Date | null>\n /** Timestamp of the last successful save operation, or null. */\n lastSavedAt: Ref<Date | null>\n /** Timestamp of the last successful run operation, or null. */\n lastRunAt: Ref<Date | null>\n /** Clear the current error without changing loading or timestamps. */\n clearError: () => void\n /** Convert thrown values into a developer-facing error message. */\n readErrorMessage: (value: unknown, fallback?: string) => string\n /** Store and return a normalized error message. */\n setError: (value: unknown, fallback?: string) => string\n /**\n * Run a request with shared loading/error handling and optional sync marking.\n *\n * ## Stale-response semantics\n *\n * Every call takes a monotonically increasing token. Starting a run\n * supersedes any run started before it, and a superseded run writes **no**\n * shared state when it finally settles: it does not clear `isLoading`, does not\n * set `error`, and does not move `lastLoadedAt` / `lastSavedAt` / `lastRunAt`.\n * Only the newest run owns those.\n *\n * The caller's own promise is untouched by the guard — a superseded run still\n * resolves with its value or rejects with its own error, exactly as the\n * operation did. The guard never invents a rejection, so a caller awaiting\n * `run()` never sees a \"superseded\" error it did not cause.\n *\n * The operation additionally receives an `AbortSignal` that fires when its\n * run is superseded or `cancel()` is called, so an operation that forwards\n * the signal (`fetch(url, { signal })`) stops work instead of racing.\n */\n run: <T>(operation: RequestOperation<T>, options?: RequestRunOptions) => Promise<T>\n /**\n * Abort the in-flight run and drop `isLoading`. The aborted run's completion\n * is treated as stale and writes no state.\n */\n cancel: () => void\n}\n\n/** Loading, error and timestamp state for one request at a time; `run()` drives it. */\nexport function useRequest(\n defaultErrorMessage = 'Request failed.',\n): UseRequestReturn {\n const isLoading = ref(false)\n const error = ref<string | null>(null)\n const lastLoadedAt = ref<Date | null>(null)\n const lastSavedAt = ref<Date | null>(null)\n const lastRunAt = ref<Date | null>(null)\n\n function clearError(): void {\n error.value = null\n }\n\n function readErrorMessage(value: unknown, fallback = defaultErrorMessage): string {\n return readSharedErrorMessage(value, fallback)\n }\n\n function setError(value: unknown, fallback?: string): string {\n const message = readErrorMessage(value, fallback)\n error.value = message\n return message\n }\n\n // Monotonic token guarding every write to the shared loading/error/timestamp\n // state. Overlapping runs settle in any order, and a superseded one must not\n // clear a newer run's loading flag or overwrite its error.\n let runToken = 0\n let activeController: AbortController | null = null\n\n function cancel(): void {\n runToken += 1\n activeController?.abort()\n activeController = null\n isLoading.value = false\n }\n\n async function run<T>(\n operation: RequestOperation<T>,\n options: RequestRunOptions = {},\n ): Promise<T> {\n if (options.abortPrevious !== false) {\n activeController?.abort()\n }\n\n const token = (runToken += 1)\n const controller = new AbortController()\n activeController = controller\n\n const callerSignal = options.signal\n if (callerSignal) {\n if (callerSignal.aborted) controller.abort(callerSignal.reason)\n else callerSignal.addEventListener(\n 'abort',\n () => controller.abort(callerSignal.reason),\n { once: true },\n )\n }\n\n const isCurrent = (): boolean => token === runToken\n\n isLoading.value = true\n clearError()\n try {\n const response = await operation(controller.signal)\n if (isCurrent() && options.kind) {\n const settledAt = new Date()\n if (options.kind === 'load') lastLoadedAt.value = settledAt\n else if (options.kind === 'save') lastSavedAt.value = settledAt\n else lastRunAt.value = settledAt\n }\n return response\n } catch (err) {\n if (isCurrent()) {\n setError(err, options.errorMessage)\n }\n throw err\n } finally {\n if (isCurrent()) {\n isLoading.value = false\n }\n if (activeController === controller) {\n activeController = null\n }\n }\n }\n\n return {\n isLoading,\n error,\n lastLoadedAt,\n lastSavedAt,\n lastRunAt,\n clearError,\n readErrorMessage,\n setError,\n run,\n cancel,\n }\n}\n"],"mappings":"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"}
@@ -1,226 +0,0 @@
1
- // Package-root names that spec 3.1 and 3.3 do not list as L1 or L2 (maintainer decision
2
- // 2026-10-23). Each name is also exported from the subpath in its tag. Removed in MINT 1.5.
3
- // `export *` keeps the tags, so editors mark a root import of these names as deprecated.
4
-
5
- export {
6
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ useConcentrationUnits,
7
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type ConcentrationValue,
8
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type ConcentrationUnit,
9
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type MolarityUnit,
10
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type MassVolumeUnit,
11
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type PercentageUnit,
12
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UnitCategory,
13
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UseConcentrationUnitsReturn,
14
- } from './composables/useConcentrationUnits'
15
- export {
16
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ useProtocolTemplates,
17
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type ParameterDefinition,
18
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type StepTemplate,
19
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type ValidationResult,
20
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UseProtocolTemplatesReturn,
21
- } from './composables/useProtocolTemplates'
22
- export {
23
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ useRackEditor,
24
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UseRackEditorOptions,
25
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UseRackEditorReturn,
26
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type PlateEditorListeners,
27
- } from './composables/useRackEditor'
28
- export {
29
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ useSequenceUtils,
30
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SequenceType,
31
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SequenceStats,
32
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SequenceProblems,
33
- } from './composables/useSequenceUtils'
34
- export {
35
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ useScheduleDrag,
36
- } from './composables/useScheduleDrag'
37
- export {
38
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ useReagentSeries,
39
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ generateDilutionSeries,
40
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ DEFAULT_PRESETS,
41
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ DEFAULT_UNITS,
42
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type LevelEntry,
43
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type DilutionPreset,
44
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UseReagentSeriesReturn,
45
- } from './composables/useReagentSeries'
46
- export {
47
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ useSampleGroups,
48
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type DisplaySampleSubGroup,
49
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SampleGroupNode,
50
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SampleGroupSource,
51
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SampleMajorGroup,
52
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UseSampleGroupsOptions,
53
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type UseSampleGroupsReturn,
54
- } from './composables/useSampleGroups'
55
- export {
56
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ hexToHsl,
57
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ hslToHex,
58
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ deriveShade,
59
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type Hsl,
60
- } from './utils/color'
61
- export {
62
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ sampleTypeMarker,
63
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SampleMarkerType,
64
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ type SampleTypeMarker,
65
- } from './utils/sampleTypeMarker'
66
- export {
67
- /** @deprecated Import from '@morscherlab/mint-sdk/lab'. Removed in MINT 1.5. */ mintPlotlyTemplate,
68
- } from './utils/plotlyTemplate'
69
- export {
70
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ resizedLeadingPanelWidth,
71
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ resizedTrailingPanelWidth,
72
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ resizedVerticalSplitPercent,
73
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ useManualLayoutResize,
74
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type ManualLayoutResizeContext,
75
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type ManualLayoutResizeTarget,
76
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type ResizePanelWidthConstraints,
77
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type ResizePercentConstraints,
78
- } from './composables/useManualLayoutResize'
79
- export {
80
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ useSelectionLimit,
81
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type SelectionLimitSource,
82
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseSelectionLimitOptions,
83
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseSelectionLimitReturn,
84
- } from './composables/useSelectionLimit'
85
- export {
86
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ useListSelection,
87
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type ListSelectionSource,
88
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type ListSelectionValue,
89
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseListSelectionOptions,
90
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseListSelectionReturn,
91
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type WidenListSelectionValue,
92
- } from './composables/useListSelection'
93
- export {
94
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ useExpansionSet,
95
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type ExpansionSetSource,
96
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseExpansionSetOptions,
97
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseExpansionSetReturn,
98
- } from './composables/useExpansionSet'
99
- export {
100
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ compareSortValues,
101
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ useSortedItems,
102
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type CompareSortValuesOptions,
103
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type SortComparator,
104
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type SortComparatorContext,
105
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type SortDescriptor,
106
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type SortedItemsSource,
107
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type SortOrder,
108
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseSortedItemsOptions,
109
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UseSortedItemsReturn,
110
- } from './composables/useSortedItems'
111
- export {
112
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ usePluginWorkspace,
113
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type PluginWorkspaceSlotsLike,
114
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UsePluginWorkspaceOptions,
115
- /** @deprecated Import from '@morscherlab/mint-sdk/shell'. Removed in MINT 1.5. */ type UsePluginWorkspaceReturn,
116
- } from './composables/usePluginWorkspace'
117
- export {
118
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ useExperimentSelector,
119
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseExperimentSelectorOptions,
120
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseExperimentSelectorReturn,
121
- } from './composables/useExperimentSelector'
122
- export {
123
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ useFileBrowser,
124
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseFileBrowserOptions,
125
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseFileBrowserReturn,
126
- } from './composables/useFileBrowser'
127
- export {
128
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ buildAnalysisArtifactTargetQuery,
129
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ parseAnalysisArtifactTarget,
130
- } from './composables/analysisArtifactTarget'
131
- export {
132
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ formatExperimentDate,
133
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ resolveExperimentCode,
134
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ datePresetToISO,
135
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ DATE_PRESET_OPTIONS,
136
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ SORT_OPTIONS,
137
- } from './composables/experiment-utils'
138
- export {
139
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ extractSampleNamesFromDesignData,
140
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ extractSampleOptionsFromDesignData,
141
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ unwrapExperimentDesignData,
142
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type ExperimentDesignDataResponse,
143
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type ExtractExperimentSamplesOptions,
144
- } from './composables/experimentDesignData'
145
- export {
146
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ useExperimentSamples,
147
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type ExperimentDesignDataSource,
148
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type ExperimentIdSource,
149
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseExperimentSamplesOptions,
150
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseExperimentSamplesReturn,
151
- } from './composables/useExperimentSamples'
152
- export {
153
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ useAppExperiment,
154
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ APP_EXPERIMENT_KEY,
155
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseAppExperimentOptions,
156
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseAppExperimentReturn,
157
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type AppExperimentState,
158
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type AppExperimentPopoverBinding,
159
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type AppExperimentSelectorModalBinding,
160
- } from './composables/useAppExperiment'
161
- export {
162
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ detectDelimiter,
163
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ readFileAsText,
164
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ useFileImport,
165
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ validateImportFile,
166
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type FileImportOptions,
167
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type FileImportValidationOptions,
168
- /** @deprecated Import from '@morscherlab/mint-sdk/data'. Removed in MINT 1.5. */ type UseFileImportReturn,
169
- } from './composables/useFileImport'
170
- export {
171
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ useForm,
172
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ValidationRule,
173
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type FieldRules,
174
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type FieldState,
175
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type UseFormReturn,
176
- } from './composables/useForm'
177
- export {
178
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ useFormBuilder,
179
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ evaluateCondition,
180
- } from './composables/useFormBuilder'
181
- export {
182
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ getFieldRegistryEntry,
183
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ getTypeDefault,
184
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type RegistryEntry,
185
- } from './composables/formBuilderRegistry'
186
- export {
187
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ defineControlComponentBindings,
188
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ defineControls,
189
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ getDefaultControlView,
190
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ getControlDefaults,
191
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ useControlSchema,
192
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ useControlWorkspace,
193
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlFormSchema,
194
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlFormBinding,
195
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlSettingsBinding,
196
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlSidebarBinding,
197
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlTopBarSettingsBinding,
198
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlValues,
199
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type UseControlSchemaReturn,
200
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlWorkspaceAppTopBarPillBinding,
201
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlWorkspaceComponentBindings,
202
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlWorkspaceFormBinding,
203
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlWorkspacePillNavBinding,
204
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlWorkspaceSidebarBinding,
205
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlWorkspaceTopBarBinding,
206
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type ControlWorkspaceTopBarSettingsBinding,
207
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type UseControlWorkspaceReturn,
208
- } from './composables/useControlSchema'
209
- export {
210
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ resolveCurrentPluginId,
211
- } from './composables/platformContextHelpers'
212
- export {
213
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ resolveJobCapabilities,
214
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ normalizeJobPercent,
215
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ normalizeJobState,
216
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ isActiveJobStatus,
217
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ isTerminalJobStatus,
218
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ jobStatusLabel,
219
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type JobCapabilityInput,
220
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ type JobCapabilities,
221
- } from './jobs'
222
- export {
223
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ generatedJobFormSchema,
224
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ generatedJobDefaults,
225
- /** @deprecated Import from '@morscherlab/mint-sdk/runtime'. Removed in MINT 1.5. */ normalizeGeneratedJobInput,
226
- } from './generated/schema'