@morscherlab/mint-sdk 1.3.11 → 1.4.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 (1056) hide show
  1. package/README.md +152 -177
  2. package/dist/AlertBox-B2Bgr3ei.js +276 -0
  3. package/dist/AlertBox-B2Bgr3ei.js.map +1 -0
  4. package/dist/AppSidebar-mvm--GxN.js +3565 -0
  5. package/dist/AppSidebar-mvm--GxN.js.map +1 -0
  6. package/dist/ConfirmDialog-nbJj51is.js +102 -0
  7. package/dist/ConfirmDialog-nbJj51is.js.map +1 -0
  8. package/dist/ExperimentPopover-5T1fAq2L.js +337 -0
  9. package/dist/ExperimentPopover-5T1fAq2L.js.map +1 -0
  10. package/dist/ExperimentSelectorModal-65peG4Up.js +544 -0
  11. package/dist/ExperimentSelectorModal-65peG4Up.js.map +1 -0
  12. package/dist/SegmentedControl-BtnnjWzs.js +129 -0
  13. package/dist/SegmentedControl-BtnnjWzs.js.map +1 -0
  14. package/dist/SettingsModal-DO3IZ7qz.js +666 -0
  15. package/dist/SettingsModal-DO3IZ7qz.js.map +1 -0
  16. package/dist/analysisArtifactTypes-Cy3D0Ipg.js.map +1 -1
  17. package/dist/auth-SliLnFre.js +65 -0
  18. package/dist/auth-SliLnFre.js.map +1 -0
  19. package/dist/components/ActionMenu.vue.d.ts +1 -1
  20. package/dist/components/AdductText.vue.d.ts +1 -1
  21. package/dist/components/AlertBox.vue.d.ts +3 -3
  22. package/dist/components/AppContainer.vue.d.ts +1 -1
  23. package/dist/components/AppSidebar.vue.d.ts +15 -95
  24. package/dist/components/AppTopBar.vue.d.ts +16 -70
  25. package/dist/components/ArtifactSaveDialog.vue.d.ts +13 -5
  26. package/dist/components/ArtifactSelectorModal.vue.d.ts +4 -4
  27. package/dist/components/AuditTrail.vue.d.ts +2 -2
  28. package/dist/components/BaseButton.vue.d.ts +11 -4
  29. package/dist/components/BaseCheckbox.vue.d.ts +9 -3
  30. package/dist/components/BaseInput.vue.d.ts +13 -9
  31. package/dist/components/BaseModal.vue.d.ts +4 -4
  32. package/dist/components/BasePill.vue.d.ts +15 -8
  33. package/dist/components/BaseRadioGroup.vue.d.ts +2 -2
  34. package/dist/components/BaseSelect.vue.d.ts +51 -19
  35. package/dist/components/BaseTabs.vue.d.ts +6 -5
  36. package/dist/components/BatchProgressList.vue.d.ts +2 -2
  37. package/dist/components/ChartContainer.vue.d.ts +4 -2
  38. package/dist/components/ChemicalFormula.vue.d.ts +2 -2
  39. package/dist/components/CollapsibleCard.vue.d.ts +3 -3
  40. package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -3
  41. package/dist/components/ConcentrationInput.vue.d.ts +2 -2
  42. package/dist/components/ConfirmDialog.vue.d.ts +8 -7
  43. package/dist/components/DataFrame.vue.d.ts +32 -74
  44. package/dist/components/DatePicker.vue.d.ts +24 -2
  45. package/dist/components/DoseCalculator.vue.d.ts +1 -1
  46. package/dist/components/DoseCalculatorVolumeField.vue.d.ts +1 -1
  47. package/dist/components/EmptyState.vue.d.ts +3 -2
  48. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  49. package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -7
  50. package/dist/components/FilePicker.vue.d.ts +1 -1
  51. package/dist/components/FileUploader.vue.d.ts +2 -2
  52. package/dist/components/FormBuilder.vue.d.ts +17 -74
  53. package/dist/components/FormulaInput.vue.d.ts +2 -2
  54. package/dist/components/GeneratedPluginView.vue.d.ts +1 -1
  55. package/dist/components/GeneratedResultRenderer.vue.d.ts +5 -1
  56. package/dist/components/{StatusIndicator.vue.d.ts → InstrumentStatusPanels.vue.d.ts} +8 -9
  57. package/dist/components/JobsStatusTray.vue.d.ts +2 -9
  58. package/dist/components/LoadingSpinner.vue.d.ts +3 -3
  59. package/dist/components/MoleculeInput.vue.d.ts +2 -2
  60. package/dist/components/NumberInput.vue.d.ts +19 -5
  61. package/dist/components/PlateEditor.vue.d.ts +11 -61
  62. package/dist/components/PlotlyChart.vue.d.ts +2 -2
  63. package/dist/components/PluginIcon.vue.d.ts +5 -1
  64. package/dist/components/PluginWorkspaceView.controls.d.ts +2 -9
  65. package/dist/components/PluginWorkspaceView.navigation.d.ts +1 -7
  66. package/dist/components/PluginWorkspaceView.props.d.ts +18 -137
  67. package/dist/components/PluginWorkspaceView.shell.d.ts +2 -10
  68. package/dist/components/PluginWorkspaceView.vue.d.ts +14 -84
  69. package/dist/components/PresenceAvatars.vue.d.ts +31 -0
  70. package/dist/components/ProgressBar.vue.d.ts +3 -2
  71. package/dist/components/ProtocolStep.presentation.d.ts +0 -1
  72. package/dist/components/SampleHierarchyTree.vue.d.ts +3 -3
  73. package/dist/components/SampleSelector.vue.d.ts +8 -8
  74. package/dist/components/ScheduleCalendar.vue.d.ts +1 -1
  75. package/dist/components/ScientificNumber.vue.d.ts +1 -1
  76. package/dist/components/SecretInput.vue.d.ts +2 -2
  77. package/dist/components/SegmentedControl.vue.d.ts +2 -2
  78. package/dist/components/SequenceInput.vue.d.ts +2 -2
  79. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  80. package/dist/components/SettingsModal.vue.d.ts +12 -20
  81. package/dist/components/SmartGroup.types.d.ts +0 -1
  82. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
  83. package/dist/components/StaleFormBanner.vue.d.ts +20 -0
  84. package/dist/components/StepWizard.vue.d.ts +3 -0
  85. package/dist/components/TagsInput.vue.d.ts +4 -3
  86. package/dist/components/TimeRangeInput.vue.d.ts +2 -2
  87. package/dist/components/VersionConflictDialog.vue.d.ts +24 -0
  88. package/dist/components/WellPlate.geometry.d.ts +0 -6
  89. package/dist/components/WellPlate.rendering.d.ts +0 -2
  90. package/dist/components/WellPlate.vue.d.ts +7 -52
  91. package/dist/components/index.d.ts +0 -90
  92. package/dist/components/{AutoGroupModal.adapter.d.ts → internal/AutoGroupModalInternal.adapter.d.ts} +6 -6
  93. package/dist/components/{AutoGroupModal.vue.d.ts → internal/AutoGroupModalInternal.vue.d.ts} +6 -6
  94. package/dist/components/{BaseToggle.vue.d.ts → internal/CheckboxSwitchInternal.vue.d.ts} +2 -2
  95. package/dist/components/{MultiSelect.vue.d.ts → internal/DatePickerDateInternal.vue.d.ts} +11 -9
  96. package/dist/components/{DateTimePicker.vue.d.ts → internal/DatePickerDateTimeInternal.vue.d.ts} +2 -2
  97. package/dist/components/{TimePicker.vue.d.ts → internal/DatePickerTimeInternal.vue.d.ts} +4 -4
  98. package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -2
  99. package/dist/components/internal/FormSchemaInternal.vue.d.ts +95 -0
  100. package/dist/components/{UnitInput.vue.d.ts → internal/NumberUnitInputInternal.vue.d.ts} +6 -14
  101. package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +3 -2
  102. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +5 -10
  103. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +27 -0
  104. package/dist/components/{SearchableSelect.vue.d.ts → internal/SelectSearchableInternal.vue.d.ts} +5 -2
  105. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +1 -15
  106. package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +4 -4
  107. package/dist/{composables → components/internal}/autoGroup/classKey.d.ts +1 -1
  108. package/dist/{composables → components/internal}/autoGroup/classify.d.ts +1 -1
  109. package/dist/{composables → components/internal}/autoGroup/columns.d.ts +1 -1
  110. package/dist/{composables → components/internal}/autoGroup/compose.d.ts +1 -1
  111. package/dist/{composables → components/internal}/autoGroup/cooccurrence.d.ts +1 -1
  112. package/dist/{composables → components/internal}/autoGroup/csv-shim.d.ts +1 -1
  113. package/dist/{composables → components/internal}/autoGroup/fingerprint.d.ts +1 -1
  114. package/dist/{composables → components/internal}/autoGroup/template.d.ts +1 -1
  115. package/dist/{composables → components/internal}/autoGroup/tokenLength.d.ts +1 -1
  116. package/dist/components/internal/generatedJobsApi.d.ts +1 -1
  117. package/dist/{composables → components/internal}/useAutoGroup.d.ts +9 -18
  118. package/dist/composables/componentSpecs.d.ts +41 -0
  119. package/dist/composables/controlComponentBindings.d.ts +6 -0
  120. package/dist/composables/controlSchemaAdapters.d.ts +28 -2
  121. package/dist/composables/controlSchemaDoseDesign.d.ts +1 -1
  122. package/dist/composables/controlSchemaModel.d.ts +1 -1
  123. package/dist/composables/controlSchemaTypes.d.ts +35 -23
  124. package/dist/composables/{usePluginClient.d.ts → createClient.d.ts} +22 -49
  125. package/dist/composables/{useEventStream.d.ts → eventStream.d.ts} +2 -2
  126. package/dist/composables/experiment-utils.d.ts +1 -6
  127. package/dist/composables/index.d.ts +7 -59
  128. package/dist/composables/platformContextHelpers.d.ts +0 -11
  129. package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
  130. package/dist/composables/pluginIdentity.d.ts +24 -0
  131. package/dist/composables/pluginWorkspaceModel.d.ts +16 -99
  132. package/dist/composables/useApi.d.ts +1 -3
  133. package/dist/composables/useAppExperiment.d.ts +9 -1
  134. package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
  135. package/dist/composables/useCalendarGrid.d.ts +1 -1
  136. package/dist/composables/useExperiment.d.ts +30 -0
  137. package/dist/composables/useExperimentSelector.d.ts +6 -2
  138. package/dist/composables/useFilePicker.d.ts +2 -2
  139. package/dist/composables/useJobCenter.d.ts +63 -0
  140. package/dist/composables/{useGeneratedAnalysis.d.ts → useJobsEndpoint.d.ts} +22 -23
  141. package/dist/composables/useMenuKeyboard.d.ts +1 -1
  142. package/dist/composables/usePlatform.d.ts +64 -0
  143. package/dist/composables/usePluginWorkspace.d.ts +6 -11
  144. package/dist/composables/usePresence.d.ts +41 -0
  145. package/dist/composables/useRackEditor.d.ts +2 -2
  146. package/dist/composables/useRealtime.d.ts +71 -0
  147. package/dist/composables/{useRequestSyncState.d.ts → useRequest.d.ts} +12 -17
  148. package/dist/composables/useToast.d.ts +7 -5
  149. package/dist/composables/useVersionedSave.d.ts +76 -0
  150. package/dist/controlSchemaModel-B8CTXagP.js +95 -0
  151. package/dist/controlSchemaModel-B8CTXagP.js.map +1 -0
  152. package/dist/data-CgILxDLW.js +3865 -0
  153. package/dist/data-CgILxDLW.js.map +1 -0
  154. package/dist/data.d.ts +32 -0
  155. package/dist/data.js +10 -0
  156. package/dist/deprecatedRootExports.d.ts +191 -0
  157. package/dist/experiment-43OJtH7R.js +673 -0
  158. package/dist/experiment-43OJtH7R.js.map +1 -0
  159. package/dist/experimentStatus-Cqp6qNrR.js +60 -0
  160. package/dist/experimentStatus-Cqp6qNrR.js.map +1 -0
  161. package/dist/host.d.ts +10 -0
  162. package/dist/host.js +26 -0
  163. package/dist/host.js.map +1 -0
  164. package/dist/index.d.ts +1 -12
  165. package/dist/index.js +65 -277
  166. package/dist/index.js.map +1 -1
  167. package/dist/install-CsPFJSx3.js +669 -0
  168. package/dist/install-CsPFJSx3.js.map +1 -0
  169. package/dist/install.d.ts +2 -1
  170. package/dist/install.js +1 -21
  171. package/dist/instrument.d.ts +0 -6
  172. package/dist/lab-MHzp-_J8.js +7494 -0
  173. package/dist/lab-MHzp-_J8.js.map +1 -0
  174. package/dist/lab.d.ts +42 -0
  175. package/dist/lab.js +5 -0
  176. package/dist/permissions.d.ts +0 -4
  177. package/dist/permissions.js +1 -20
  178. package/dist/permissions.js.map +1 -1
  179. package/dist/records-B6gpM_3e.js +3268 -0
  180. package/dist/records-B6gpM_3e.js.map +1 -0
  181. package/dist/runtime-8bs8EogX.js +1491 -0
  182. package/dist/runtime-8bs8EogX.js.map +1 -0
  183. package/dist/runtime.d.ts +25 -0
  184. package/dist/runtime.js +8 -0
  185. package/dist/shell-CywENwBT.js +197 -0
  186. package/dist/shell-CywENwBT.js.map +1 -0
  187. package/dist/shell.d.ts +16 -0
  188. package/dist/shell.js +8 -0
  189. package/dist/stores/auth.d.ts +13 -35
  190. package/dist/stores/experiment.d.ts +4 -0
  191. package/dist/stores/index.js +2 -2
  192. package/dist/styles.css +12161 -15036
  193. package/dist/types/analysisArtifactTypes.d.ts +1 -1
  194. package/dist/types/auth.d.ts +0 -8
  195. package/dist/types/componentLabTypes.d.ts +98 -34
  196. package/dist/types/componentWorkflowTypes.d.ts +2 -27
  197. package/dist/types/components.d.ts +145 -74
  198. package/dist/types/form-builder.d.ts +4 -0
  199. package/dist/types/generated/platformContext.d.ts +53 -0
  200. package/dist/types/generated-ui.d.ts +6 -2
  201. package/dist/types/index.d.ts +4 -5
  202. package/dist/types/instrument.d.ts +41 -0
  203. package/dist/types/platform.d.ts +20 -58
  204. package/dist/useDebouncedWatch-BPwyl6eS.js +73 -0
  205. package/dist/useDebouncedWatch-BPwyl6eS.js.map +1 -0
  206. package/dist/{experiment-utils-DTANyVKV.js → useDropdownState-8yWMu-7_.js} +127 -144
  207. package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
  208. package/dist/useExpansionSet-CvoNMZJi.js +68 -0
  209. package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
  210. package/dist/useExperimentSamples-DHnxKFAF.js +366 -0
  211. package/dist/useExperimentSamples-DHnxKFAF.js.map +1 -0
  212. package/dist/useListReorder-BitdUhxn.js +5294 -0
  213. package/dist/useListReorder-BitdUhxn.js.map +1 -0
  214. package/dist/useRackEditor-DiwCt77M.js +5930 -0
  215. package/dist/useRackEditor-DiwCt77M.js.map +1 -0
  216. package/dist/useRealtime-C3iy9QkU.js +699 -0
  217. package/dist/useRealtime-C3iy9QkU.js.map +1 -0
  218. package/dist/useRequest-D506eHi8.js +244 -0
  219. package/dist/useRequest-D506eHi8.js.map +1 -0
  220. package/dist/utils/color.d.ts +0 -5
  221. package/dist/{composables/useDoseCalculator.d.ts → utils/dose.d.ts} +10 -13
  222. package/dist/utils/experimentStatus.d.ts +9 -0
  223. package/dist/{composables/useChemicalFormula.d.ts → utils/formula.d.ts} +3 -6
  224. package/dist/utils/integrationHost.d.ts +18 -0
  225. package/dist/utils/plotlyTemplate.d.ts +2 -0
  226. package/dist/utils/pluginSecrets.d.ts +12 -12
  227. package/dist/utils/presenceAvatars.d.ts +30 -0
  228. package/dist/utils/records.d.ts +0 -2
  229. package/dist/{composables/useTimeUtils.d.ts → utils/time.d.ts} +7 -18
  230. package/package.json +20 -17
  231. package/src/__tests__/components/ActionMenu.test.ts +0 -13
  232. package/src/__tests__/components/AlertBox.test.ts +1 -1
  233. package/src/__tests__/components/AppSidebar.test.ts +119 -167
  234. package/src/__tests__/components/AppToastContainer.test.ts +2 -2
  235. package/src/__tests__/components/AppTopBar.test.ts +230 -176
  236. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  237. package/src/__tests__/components/ArtifactSaveDialog.test.ts +83 -3
  238. package/src/__tests__/components/ArtifactSelectorModal.test.ts +6 -4
  239. package/src/__tests__/components/AuditTrail.test.ts +1 -1
  240. package/src/__tests__/components/AutoGroupModal.adapter.test.ts +1 -1
  241. package/src/__tests__/components/AutoGroupModal.anatomy.test.ts +2 -2
  242. package/src/__tests__/components/AutoGroupModal.wiring.test.ts +2 -2
  243. package/src/__tests__/components/BaseButton.test.ts +51 -0
  244. package/src/__tests__/components/{BaseToggle.test.ts → BaseCheckbox.switch.test.ts} +8 -6
  245. package/src/__tests__/components/BaseInput.test.ts +13 -34
  246. package/src/__tests__/components/BaseModal.test.ts +6 -6
  247. package/src/__tests__/components/BasePill.test.ts +33 -39
  248. package/src/__tests__/components/BaseSelect.multiple.test.ts +118 -0
  249. package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
  250. package/src/__tests__/components/BaseSelect.test.ts +11 -0
  251. package/src/__tests__/components/BaseTabs.test.ts +13 -13
  252. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  253. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  254. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  255. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  256. package/src/__tests__/components/CollapsibleCard.test.ts +1 -1
  257. package/src/__tests__/components/ComponentBindingRenderer.test.ts +25 -73
  258. package/src/__tests__/components/ConcentrationInput.test.ts +3 -3
  259. package/src/__tests__/components/ConfirmDialog.test.ts +23 -0
  260. package/src/__tests__/components/DataFrame.test.ts +140 -142
  261. package/src/__tests__/components/DataStates.test.ts +6 -22
  262. package/src/__tests__/components/{DateTimePicker.test.ts → DatePicker.datetime.test.ts} +15 -7
  263. package/src/__tests__/components/DatePicker.test.ts +21 -0
  264. package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +20 -19
  265. package/src/__tests__/components/DoseCalculator.test.ts +12 -7
  266. package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
  267. package/src/__tests__/components/EmptyState.test.ts +1 -1
  268. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  269. package/src/__tests__/components/ExperimentSelectorModal.test.ts +134 -28
  270. package/src/__tests__/components/FormBuilder.test.ts +49 -167
  271. package/src/__tests__/components/FormSchemaInternal.test.ts +91 -0
  272. package/src/__tests__/components/GeneratedPathInput.test.ts +18 -13
  273. package/src/__tests__/components/GeneratedPluginView.test.ts +60 -25
  274. package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -4
  275. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  276. package/src/__tests__/components/InstrumentStatusPanels.test.ts +79 -0
  277. package/src/__tests__/components/JobsStatusTray.test.ts +4 -4
  278. package/src/__tests__/components/NumberInput.test.ts +28 -0
  279. package/src/__tests__/components/{UnitInput.test.ts → NumberInput.units.test.ts} +6 -6
  280. package/src/__tests__/components/PlateEditor.test.ts +108 -108
  281. package/src/__tests__/components/PlateEditorBindingInternal.test.ts +13 -13
  282. package/src/__tests__/components/PlotlyChart.test.ts +1 -1
  283. package/src/__tests__/components/PluginIcon.test.ts +9 -4
  284. package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +16 -29
  285. package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +28 -34
  286. package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +4 -19
  287. package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +1 -6
  288. package/src/__tests__/components/PluginWorkspaceView.test.ts +183 -155
  289. package/src/__tests__/components/PresenceAvatars.test.ts +90 -0
  290. package/src/__tests__/components/ProtocolStep.presentation.test.ts +1 -3
  291. package/src/__tests__/components/ProtocolStepEditor.test.ts +10 -11
  292. package/src/__tests__/components/ProtocolStepParameterField.test.ts +8 -7
  293. package/src/__tests__/components/ResourcePickerListInternal.test.ts +2 -22
  294. package/src/__tests__/components/RetiredStyles.test.ts +0 -18
  295. package/src/__tests__/components/SampleSelector.test.ts +30 -25
  296. package/src/__tests__/components/SecretInput.test.ts +14 -19
  297. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  298. package/src/__tests__/components/SettingsModal.test.ts +76 -84
  299. package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
  300. package/src/__tests__/components/StepWizard.test.ts +11 -0
  301. package/src/__tests__/components/ThemeToggle.test.ts +1 -1
  302. package/src/__tests__/components/WellPlate.decoration.test.ts +20 -11
  303. package/src/__tests__/components/WellPlate.interaction.test.ts +6 -7
  304. package/src/__tests__/components/WellPlate.keyboard.test.ts +2 -2
  305. package/src/__tests__/components/deprecationTags.test.ts +90 -0
  306. package/src/__tests__/composables/analysisArtifactTarget.test.ts +1 -12
  307. package/src/__tests__/composables/autoGroup/classKey.test.ts +1 -1
  308. package/src/__tests__/composables/autoGroup/classify.test.ts +1 -1
  309. package/src/__tests__/composables/autoGroup/columns.test.ts +1 -1
  310. package/src/__tests__/composables/autoGroup/compose.test.ts +1 -1
  311. package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +1 -1
  312. package/src/__tests__/composables/autoGroup/fieldEdits.test.ts +1 -1
  313. package/src/__tests__/composables/autoGroup/fingerprint.test.ts +1 -1
  314. package/src/__tests__/composables/autoGroup/golden.test.ts +1 -1
  315. package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +1 -1
  316. package/src/__tests__/composables/autoGroup/groupTree.test.ts +1 -1
  317. package/src/__tests__/composables/autoGroup/integration.test.ts +1 -1
  318. package/src/__tests__/composables/autoGroup/template.test.ts +1 -1
  319. package/src/__tests__/composables/autoGroup/tokenLength.test.ts +1 -1
  320. package/src/__tests__/composables/autoGroup/tokenize.test.ts +1 -1
  321. package/src/__tests__/composables/{usePluginClient.test.ts → createClient.test.ts} +84 -222
  322. package/src/__tests__/composables/{useEventStream.test.ts → eventStream.test.ts} +6 -6
  323. package/src/__tests__/composables/experiment-utils.test.ts +13 -14
  324. package/src/__tests__/composables/useApi.test.ts +32 -21
  325. package/src/__tests__/composables/useAppExperiment.test.ts +46 -3
  326. package/src/__tests__/composables/{useAnalysisArtifacts.test.ts → useArtifacts.test.ts} +19 -27
  327. package/src/__tests__/composables/useAutoGroup.test.ts +3 -13
  328. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  329. package/src/__tests__/composables/useControlSchema.test.ts +41 -99
  330. package/src/__tests__/composables/useExperiment.test.ts +63 -0
  331. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  332. package/src/__tests__/composables/useFileBrowser.test.ts +4 -6
  333. package/src/__tests__/composables/{useJobsStatusTray.test.ts → useJobCenter.test.ts} +31 -31
  334. package/src/__tests__/composables/{useGeneratedAnalysis.test.ts → useJobsEndpoint.test.ts} +213 -139
  335. package/src/__tests__/composables/usePlatform.test.ts +102 -0
  336. package/src/__tests__/composables/usePresence.test.ts +164 -0
  337. package/src/__tests__/composables/useRackEditor.test.ts +2 -2
  338. package/src/__tests__/composables/useRealtime.test.ts +196 -0
  339. package/src/__tests__/composables/{useRequestSyncState.test.ts → useRequest.test.ts} +32 -47
  340. package/src/__tests__/composables/useVersionedSave.test.ts +194 -0
  341. package/src/__tests__/docs/extractDocsComponents.test.ts +36 -0
  342. package/src/__tests__/docs/extractDocsParsing.test.ts +2 -2
  343. package/src/__tests__/docs/extractDocsTheme.test.ts +1 -46
  344. package/src/__tests__/docs/frontendDocsCatalog.test.ts +164 -84
  345. package/src/__tests__/styles/baseControlsRules.test.ts +7 -3
  346. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  347. package/src/__tests__/styles/cssTokens.test.ts +2 -2
  348. package/src/__tests__/styles/darkModeRules.test.ts +0 -6
  349. package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
  350. package/src/__tests__/{composables/useChemicalFormula.test.ts → utils/formula.test.ts} +3 -5
  351. package/src/__tests__/utils/permissions.test.ts +1 -36
  352. package/src/__tests__/utils/plotlyTemplate.test.ts +20 -5
  353. package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +18 -8
  354. package/src/components/ActionMenu.vue +7 -13
  355. package/src/components/AdductText.story.vue +7 -0
  356. package/src/components/AdductText.vue +1 -1
  357. package/src/components/AlertBox.story.vue +27 -27
  358. package/src/components/AlertBox.vue +22 -20
  359. package/src/components/AppLayout.story.vue +33 -44
  360. package/src/components/AppLayout.vue +1 -1
  361. package/src/components/AppSidebar.story.vue +40 -101
  362. package/src/components/AppSidebar.vue +66 -147
  363. package/src/components/AppToastContainer.story.vue +1 -1
  364. package/src/components/AppTopBar.story.vue +97 -111
  365. package/src/components/AppTopBar.vue +170 -290
  366. package/src/components/ArtifactSaveDialog.story.vue +32 -9
  367. package/src/components/ArtifactSaveDialog.vue +125 -38
  368. package/src/components/ArtifactSelectorModal.story.vue +4 -4
  369. package/src/components/ArtifactSelectorModal.vue +10 -10
  370. package/src/components/AuditTrail.story.vue +6 -5
  371. package/src/components/AuditTrail.vue +5 -24
  372. package/src/components/Avatar.story.vue +2 -3
  373. package/src/components/Avatar.vue +11 -16
  374. package/src/components/BaseButton.story.vue +25 -0
  375. package/src/components/BaseButton.vue +39 -10
  376. package/src/components/BaseCheckbox.story.vue +2 -2
  377. package/src/components/{BaseToggle.story.vue → BaseCheckbox.switch.story.vue} +22 -19
  378. package/src/components/BaseCheckbox.vue +39 -7
  379. package/src/components/BaseInput.story.vue +3 -15
  380. package/src/components/{BaseTextarea.story.vue → BaseInput.textarea.story.vue} +14 -10
  381. package/src/components/BaseInput.vue +53 -26
  382. package/src/components/BaseModal.story.vue +11 -11
  383. package/src/components/BaseModal.vue +8 -8
  384. package/src/components/BasePill.story.vue +48 -28
  385. package/src/components/BasePill.vue +22 -11
  386. package/src/components/BaseRadioGroup.story.vue +4 -4
  387. package/src/components/BaseRadioGroup.vue +3 -3
  388. package/src/components/{MultiSelect.story.vue → BaseSelect.multiple.story.vue} +33 -16
  389. package/src/components/{SearchableSelect.story.vue → BaseSelect.searchable.story.vue} +4 -4
  390. package/src/components/BaseSelect.story.vue +2 -2
  391. package/src/components/BaseSelect.vue +118 -22
  392. package/src/components/BaseTabs.story.vue +20 -20
  393. package/src/components/BaseTabs.vue +17 -9
  394. package/src/components/BatchProgressList.vue +38 -28
  395. package/src/components/ChartContainer.story.vue +9 -13
  396. package/src/components/ChartContainer.vue +10 -8
  397. package/src/components/ChemicalFormula.vue +1 -2
  398. package/src/components/CollapsibleCard.vue +5 -4
  399. package/src/components/ComponentBindingRenderer.story.vue +0 -29
  400. package/src/components/ComponentBindingRenderer.vue +15 -39
  401. package/src/components/ConcentrationInput.story.vue +2 -2
  402. package/src/components/ConcentrationInput.vue +9 -9
  403. package/src/components/ConfirmDialog.story.vue +22 -22
  404. package/src/components/ConfirmDialog.vue +15 -14
  405. package/src/components/DataFrame.story.vue +28 -40
  406. package/src/components/DataFrame.vue +112 -128
  407. package/src/components/{DateTimePicker.story.vue → DatePicker.datetime.story.vue} +19 -14
  408. package/src/components/DatePicker.story.vue +2 -2
  409. package/src/components/{TimePicker.story.vue → DatePicker.time.story.vue} +15 -12
  410. package/src/components/DatePicker.vue +82 -220
  411. package/src/components/DoseCalculator.vue +13 -19
  412. package/src/components/DoseCalculatorVolumeField.vue +6 -6
  413. package/src/components/EmptyState.story.vue +17 -17
  414. package/src/components/EmptyState.vue +6 -5
  415. package/src/components/ExperimentPopover.story.vue +165 -53
  416. package/src/components/ExperimentPopover.vue +172 -190
  417. package/src/components/ExperimentSelectorModal.story.vue +43 -39
  418. package/src/components/ExperimentSelectorModal.vue +134 -122
  419. package/src/components/FilePicker.vue +1 -1
  420. package/src/components/FormBuilder.story.vue +9 -4
  421. package/src/components/FormBuilder.vue +46 -253
  422. package/src/components/FormField.story.vue +9 -50
  423. package/src/components/FormulaInput.story.vue +2 -2
  424. package/src/components/FormulaInput.vue +5 -6
  425. package/src/components/GeneratedPathInput.vue +8 -9
  426. package/src/components/GeneratedPluginView.story.vue +1 -1
  427. package/src/components/GeneratedPluginView.vue +29 -22
  428. package/src/components/GeneratedResultRenderer.vue +16 -17
  429. package/src/components/InstrumentStateBadge.vue +1 -1
  430. package/src/components/InstrumentStatusPanels.story.vue +64 -0
  431. package/src/components/InstrumentStatusPanels.vue +133 -0
  432. package/src/components/JobsStatusTray.story.vue +2 -2
  433. package/src/components/JobsStatusTray.vue +5 -20
  434. package/src/components/LoadingSpinner.story.vue +11 -11
  435. package/src/components/LoadingSpinner.vue +7 -5
  436. package/src/components/MoleculeInput.story.vue +2 -2
  437. package/src/components/MoleculeInput.vue +3 -3
  438. package/src/components/NumberInput.story.vue +55 -15
  439. package/src/components/NumberInput.vue +83 -24
  440. package/src/components/PlateEditor.story.vue +51 -43
  441. package/src/components/PlateEditor.vue +97 -128
  442. package/src/components/PlotlyChart.story.vue +1 -1
  443. package/src/components/PlotlyChart.vue +6 -4
  444. package/src/components/PluginIcon.story.vue +6 -11
  445. package/src/components/PluginIcon.vue +7 -2
  446. package/src/components/PluginWorkspaceView.controls.ts +9 -29
  447. package/src/components/PluginWorkspaceView.navigation.ts +2 -23
  448. package/src/components/PluginWorkspaceView.props.ts +17 -151
  449. package/src/components/PluginWorkspaceView.shell.ts +13 -24
  450. package/src/components/PluginWorkspaceView.story.vue +65 -63
  451. package/src/components/PluginWorkspaceView.vue +21 -78
  452. package/src/components/PresenceAvatars.story.vue +75 -0
  453. package/src/components/PresenceAvatars.vue +114 -0
  454. package/src/components/ProgressBar.story.vue +7 -7
  455. package/src/components/ProgressBar.vue +4 -3
  456. package/src/components/ProtocolStep.presentation.ts +0 -11
  457. package/src/components/ProtocolStepEditor.vue +6 -5
  458. package/src/components/ProtocolStepParameterField.vue +15 -12
  459. package/src/components/RuntimeUpdateNotice.vue +1 -1
  460. package/src/components/SampleSelector.colors.ts +1 -1
  461. package/src/components/SampleSelector.story.vue +1 -1
  462. package/src/components/SampleSelector.vue +33 -43
  463. package/src/components/SampleSelectorGroupNode.vue +1 -1
  464. package/src/components/ScheduleCalendar.vue +4 -4
  465. package/src/components/SecretInput.story.vue +1 -1
  466. package/src/components/SecretInput.vue +16 -25
  467. package/src/components/SectionCard.story.vue +2 -2
  468. package/src/components/SegmentedControl.story.vue +7 -7
  469. package/src/components/SegmentedControl.vue +5 -3
  470. package/src/components/SequenceInput.story.vue +2 -2
  471. package/src/components/SequenceInput.vue +3 -3
  472. package/src/components/SequenceProgressBar.story.vue +9 -0
  473. package/src/components/SequenceProgressBar.vue +6 -1
  474. package/src/components/SettingsModal.schema.ts +1 -1
  475. package/src/components/SettingsModal.story.vue +13 -14
  476. package/src/components/SettingsModal.vue +31 -49
  477. package/src/components/SmartGroup.types.ts +4 -6
  478. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  479. package/src/components/SmartGroupFieldRecipe.vue +7 -5
  480. package/src/components/SmartGroupManual.story.vue +1 -1
  481. package/src/components/StaleFormBanner.story.vue +90 -0
  482. package/src/components/StaleFormBanner.vue +83 -0
  483. package/src/components/StepWizard.story.vue +33 -0
  484. package/src/components/StepWizard.vue +8 -1
  485. package/src/components/TagsInput.story.vue +7 -7
  486. package/src/components/TagsInput.vue +7 -6
  487. package/src/components/ThemeToggle.vue +5 -30
  488. package/src/components/TimeRangeInput.story.vue +1 -1
  489. package/src/components/TimeRangeInput.vue +10 -8
  490. package/src/components/VersionConflictDialog.story.vue +60 -0
  491. package/src/components/VersionConflictDialog.vue +79 -0
  492. package/src/components/WellPlate.geometry.ts +0 -38
  493. package/src/components/WellPlate.rendering.ts +0 -13
  494. package/src/components/WellPlate.story.vue +64 -51
  495. package/src/components/WellPlate.vue +68 -87
  496. package/src/components/index.ts +3 -105
  497. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  498. package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts} +8 -8
  499. package/src/components/{AutoGroupModal.vue → internal/AutoGroupModalInternal.vue} +23 -23
  500. package/src/components/{BaseToggle.vue → internal/CheckboxSwitchInternal.vue} +8 -8
  501. package/src/components/internal/DataStateInternal.vue +1 -1
  502. package/src/components/internal/DatePickerDateInternal.vue +219 -0
  503. package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +12 -22
  504. package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +12 -15
  505. package/src/components/internal/FilePickerListInternal.vue +8 -14
  506. package/src/components/{FormActions.vue → internal/FormActionsInternal.vue} +2 -2
  507. package/src/components/internal/FormFieldRendererInternal.vue +1 -1
  508. package/src/components/internal/FormSchemaInternal.vue +253 -0
  509. package/src/components/{UnitInput.vue → internal/NumberUnitInputInternal.vue} +28 -28
  510. package/src/components/internal/PlateEditorBindingInternal.vue +8 -7
  511. package/src/components/internal/ResourcePickerListInternal.vue +48 -88
  512. package/src/components/internal/SelectMultipleInternal.vue +242 -0
  513. package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +26 -11
  514. package/src/components/internal/WellEditPopupInternal.vue +4 -9
  515. package/src/components/internal/WorkspaceShellInternal.vue +3 -36
  516. package/src/components/internal/WorkspaceSidebarInternal.vue +4 -25
  517. package/src/{composables → components/internal}/autoGroup/classKey.ts +1 -1
  518. package/src/{composables → components/internal}/autoGroup/classify.ts +1 -1
  519. package/src/{composables → components/internal}/autoGroup/columns.ts +1 -1
  520. package/src/{composables → components/internal}/autoGroup/compose.ts +3 -3
  521. package/src/{composables → components/internal}/autoGroup/cooccurrence.ts +1 -1
  522. package/src/{composables → components/internal}/autoGroup/csv-shim.ts +1 -1
  523. package/src/{composables → components/internal}/autoGroup/fingerprint.ts +1 -1
  524. package/src/{composables → components/internal}/autoGroup/index.ts +1 -2
  525. package/src/{composables → components/internal}/autoGroup/template.ts +1 -1
  526. package/src/{composables → components/internal}/autoGroup/tokenLength.ts +1 -1
  527. package/src/components/internal/generatedJobsApi.ts +1 -1
  528. package/src/{composables → components/internal}/useAutoGroup.ts +3 -57
  529. package/src/composables/componentSpecs.ts +62 -0
  530. package/src/composables/controlComponentBindings.ts +7 -0
  531. package/src/composables/controlSchemaAdapters.ts +45 -7
  532. package/src/composables/controlSchemaDoseDesign.ts +16 -5
  533. package/src/composables/controlSchemaModel.ts +1 -1
  534. package/src/composables/controlSchemaTypes.ts +31 -22
  535. package/src/composables/{usePluginClient.ts → createClient.ts} +54 -190
  536. package/src/composables/{useEventStream.ts → eventStream.ts} +3 -3
  537. package/src/composables/experiment-utils.ts +1 -39
  538. package/src/composables/formBuilderRegistry.ts +6 -12
  539. package/src/composables/index.ts +17 -480
  540. package/src/composables/platformContextHelpers.ts +0 -57
  541. package/src/composables/pluginEndpointBuilder.ts +8 -10
  542. package/src/composables/pluginIdentity.ts +31 -0
  543. package/src/composables/pluginWorkspaceModel.ts +16 -107
  544. package/src/composables/useApi.ts +18 -30
  545. package/src/composables/useAppExperiment.ts +26 -5
  546. package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
  547. package/src/composables/useCalendarGrid.ts +4 -3
  548. package/src/composables/useControlSchema.ts +5 -9
  549. package/src/composables/useControlWorkspace.ts +4 -7
  550. package/src/composables/useExperiment.ts +49 -0
  551. package/src/composables/useExperimentData.ts +4 -4
  552. package/src/composables/useExperimentSelector.ts +82 -36
  553. package/src/composables/useFileBrowser.ts +5 -13
  554. package/src/composables/useFilePicker.ts +2 -2
  555. package/src/composables/useFormBuilder.ts +3 -4
  556. package/src/composables/useJobCenter.ts +324 -0
  557. package/src/composables/{useGeneratedAnalysis.ts → useJobsEndpoint.ts} +53 -67
  558. package/src/composables/useMenuKeyboard.ts +1 -1
  559. package/src/composables/usePlatform.ts +95 -0
  560. package/src/composables/usePlatformFilePickerAdapter.ts +2 -1
  561. package/src/composables/usePluginWorkspace.ts +62 -107
  562. package/src/composables/usePresence.ts +110 -0
  563. package/src/composables/useRackEditor.ts +3 -3
  564. package/src/composables/useRealtime.ts +194 -0
  565. package/src/composables/{useRequestSyncState.ts → useRequest.ts} +25 -48
  566. package/src/composables/useScheduleCalendarLayout.ts +1 -1
  567. package/src/composables/useToast.ts +14 -11
  568. package/src/composables/useVersionedSave.ts +165 -0
  569. package/src/data.ts +130 -0
  570. package/src/deprecatedRootExports.ts +226 -0
  571. package/src/generated/schema.ts +1 -0
  572. package/src/host.ts +27 -0
  573. package/src/index.ts +2 -71
  574. package/src/install.ts +15 -2
  575. package/src/instrument.ts +1 -6
  576. package/src/lab.ts +128 -0
  577. package/src/permissions.ts +0 -27
  578. package/src/runtime.ts +145 -0
  579. package/src/shell.ts +103 -0
  580. package/src/stores/auth.ts +26 -162
  581. package/src/stores/experiment.ts +27 -1
  582. package/src/styles/components/action-menu.css +0 -5
  583. package/src/styles/components/adduct-text.css +13 -5
  584. package/src/styles/components/alert-box.css +39 -40
  585. package/src/styles/components/app-layout.css +6 -5
  586. package/src/styles/components/app-page-selector.css +3 -1
  587. package/src/styles/components/app-pill-nav.css +11 -12
  588. package/src/styles/components/app-sidebar.css +9 -18
  589. package/src/styles/components/app-top-bar.css +64 -103
  590. package/src/styles/components/artifact-save-dialog.css +153 -2
  591. package/src/styles/components/audit-trail.css +16 -19
  592. package/src/styles/components/avatar.css +6 -4
  593. package/src/styles/components/batch-progress-list.css +38 -36
  594. package/src/styles/components/button.css +40 -59
  595. package/src/styles/components/calendar.css +12 -12
  596. package/src/styles/components/chart-container.css +34 -23
  597. package/src/styles/components/checkbox.css +3 -13
  598. package/src/styles/components/collapsible-card.css +28 -30
  599. package/src/styles/components/confirm-dialog.css +31 -16
  600. package/src/styles/components/dataframe.css +12 -4
  601. package/src/styles/components/date-picker.css +80 -92
  602. package/src/styles/components/datetime-picker.css +31 -43
  603. package/src/styles/components/divider.css +20 -20
  604. package/src/styles/components/dose-calculator.css +3 -3
  605. package/src/styles/components/empty-state.css +23 -18
  606. package/src/styles/components/experiment-code-badge.css +2 -0
  607. package/src/styles/components/experiment-popover.css +174 -329
  608. package/src/styles/components/experiment-selector-modal.css +75 -56
  609. package/src/styles/components/file-picker.css +4 -4
  610. package/src/styles/components/file-uploader.css +38 -49
  611. package/src/styles/components/form-builder.css +3 -3
  612. package/src/styles/components/formula-input.css +1 -1
  613. package/src/styles/components/icon-button.css +19 -25
  614. package/src/styles/components/input.css +5 -4
  615. package/src/styles/components/instrument-monitor.css +13 -15
  616. package/src/styles/components/jobs-status-tray.css +31 -25
  617. package/src/styles/components/loading-spinner.css +9 -12
  618. package/src/styles/components/modal.css +2 -4
  619. package/src/styles/components/molecule-input.css +2 -2
  620. package/src/styles/components/multi-select.css +65 -112
  621. package/src/styles/components/number-input.css +26 -19
  622. package/src/styles/components/pill.css +43 -37
  623. package/src/styles/components/plate-editor.css +0 -1
  624. package/src/styles/components/plugin-icon.css +34 -22
  625. package/src/styles/components/popover.css +2 -2
  626. package/src/styles/components/presence-avatars.css +194 -0
  627. package/src/styles/components/progress-bar.css +2 -0
  628. package/src/styles/components/protocol-step-editor.css +1 -3
  629. package/src/styles/components/resource-card.css +2 -2
  630. package/src/styles/components/resource-picker-list.css +6 -57
  631. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  632. package/src/styles/components/sample-selector.css +95 -79
  633. package/src/styles/components/schedule-calendar.css +8 -8
  634. package/src/styles/components/searchable-select.css +15 -12
  635. package/src/styles/components/section-card.css +28 -47
  636. package/src/styles/components/segmented-control.css +18 -15
  637. package/src/styles/components/select.css +3 -3
  638. package/src/styles/components/sequence-input.css +2 -2
  639. package/src/styles/components/sequence-progress-bar.css +17 -8
  640. package/src/styles/components/smart-group.css +19 -24
  641. package/src/styles/components/step-wizard.css +52 -16
  642. package/src/styles/components/tabs.css +2 -2
  643. package/src/styles/components/textarea.css +4 -4
  644. package/src/styles/components/time-picker.css +36 -21
  645. package/src/styles/components/toast.css +12 -10
  646. package/src/styles/components/toggle.css +3 -13
  647. package/src/styles/components/tooltip.css +10 -9
  648. package/src/styles/components/unit-input.css +8 -7
  649. package/src/styles/components/version-conflict.css +122 -0
  650. package/src/styles/components/well-plate.css +8 -8
  651. package/src/styles/index.css +2 -11
  652. package/src/styles/variables.css +107 -602
  653. package/src/types/analysisArtifactTypes.ts +1 -1
  654. package/src/types/auth.ts +0 -10
  655. package/src/types/componentLabTypes.ts +103 -53
  656. package/src/types/componentWorkflowTypes.ts +4 -33
  657. package/src/types/components.ts +148 -114
  658. package/src/types/form-builder.ts +4 -0
  659. package/src/types/generated/platformContext.ts +60 -0
  660. package/src/types/generated-ui.ts +6 -2
  661. package/src/types/index.ts +15 -53
  662. package/src/types/instrument.ts +27 -0
  663. package/src/types/platform.ts +25 -89
  664. package/src/utils/color.ts +1 -12
  665. package/src/utils/dose.ts +335 -0
  666. package/src/utils/experimentStatus.ts +43 -0
  667. package/src/utils/formula.ts +292 -0
  668. package/src/utils/integrationHost.ts +27 -0
  669. package/src/utils/plotlyTemplate.ts +6 -0
  670. package/src/utils/pluginSecrets.ts +23 -23
  671. package/src/utils/presenceAvatars.ts +53 -0
  672. package/src/utils/records.ts +0 -5
  673. package/src/{composables/useTimeUtils.ts → utils/time.ts} +21 -21
  674. package/dist/ResourcePickerListInternal-CFAw4vTZ.js +0 -605
  675. package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +0 -1
  676. package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +0 -1
  677. package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +0 -1
  678. package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +0 -1
  679. package/dist/__tests__/composables/useChemicalFormula.test.d.ts +0 -1
  680. package/dist/__tests__/composables/useEventStream.test.d.ts +0 -1
  681. package/dist/__tests__/composables/useExperimentSave.test.d.ts +0 -1
  682. package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +0 -1
  683. package/dist/__tests__/composables/useGroupAssignment.test.d.ts +0 -1
  684. package/dist/__tests__/composables/useJobsStatusTray.test.d.ts +0 -1
  685. package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +0 -1
  686. package/dist/__tests__/composables/usePlatformContext.test.d.ts +0 -1
  687. package/dist/__tests__/composables/usePluginClient.test.d.ts +0 -1
  688. package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +0 -1
  689. package/dist/__tests__/composables/useRequestSyncState.test.d.ts +0 -1
  690. package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +0 -1
  691. package/dist/__tests__/composables/useTemplateCollection.test.d.ts +0 -1
  692. package/dist/__tests__/composables/useTimeUtils.test.d.ts +0 -1
  693. package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +0 -1
  694. package/dist/__tests__/templates/templates.test.d.ts +0 -1
  695. package/dist/__tests__/templates/templatesDeprecation.test.d.ts +0 -1
  696. package/dist/__tests__/utils/lcms.test.d.ts +0 -1
  697. package/dist/__tests__/utils/rack.test.d.ts +0 -1
  698. package/dist/components/AppAvatarMenu.vue.d.ts +0 -47
  699. package/dist/components/AppTopBar.navigation.d.ts +0 -10
  700. package/dist/components/BaseTextarea.vue.d.ts +0 -31
  701. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +0 -112
  702. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +0 -86
  703. package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +0 -80
  704. package/dist/components/BioTemplateRenderer.vue.d.ts +0 -30
  705. package/dist/components/ControlWorkspaceView.vue.d.ts +0 -138
  706. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +0 -140
  707. package/dist/components/ExperimentDataViewer.vue.d.ts +0 -54
  708. package/dist/components/ExperimentTimeline.vue.d.ts +0 -70
  709. package/dist/components/FitPanel.vue.d.ts +0 -56
  710. package/dist/components/GroupAssigner.vue.d.ts +0 -26
  711. package/dist/components/IconButton.vue.d.ts +0 -30
  712. package/dist/components/MobileSupportGate.vue.d.ts +0 -32
  713. package/dist/components/ReagentEditor.vue.d.ts +0 -31
  714. package/dist/components/ReagentList.presentation.d.ts +0 -17
  715. package/dist/components/ReagentList.vue.d.ts +0 -58
  716. package/dist/components/SampleLegend.vue.d.ts +0 -33
  717. package/dist/components/SmartGroupModal.vue.d.ts +0 -29
  718. package/dist/components/index.js +0 -5
  719. package/dist/components-BOA5e7kb.js +0 -23137
  720. package/dist/components-BOA5e7kb.js.map +0 -1
  721. package/dist/composables/flattenWorkspaceBindings.d.ts +0 -61
  722. package/dist/composables/index.js +0 -7
  723. package/dist/composables/useBioTemplateComponents.d.ts +0 -34
  724. package/dist/composables/useBioTemplateControls.d.ts +0 -10
  725. package/dist/composables/useBioTemplatePackWorkspace.d.ts +0 -56
  726. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +0 -79
  727. package/dist/composables/useBioTemplateWorkspace.d.ts +0 -39
  728. package/dist/composables/useExperimentSave.d.ts +0 -69
  729. package/dist/composables/useGroupAssignment.d.ts +0 -35
  730. package/dist/composables/useJobsStatusTray.d.ts +0 -87
  731. package/dist/composables/useMobileSupportGate.d.ts +0 -14
  732. package/dist/composables/usePlatformContext.d.ts +0 -218
  733. package/dist/composables/usePresenceHeartbeat.d.ts +0 -49
  734. package/dist/composables/useRuntimeAlignment.d.ts +0 -44
  735. package/dist/composables/useTemplateCollection.d.ts +0 -62
  736. package/dist/composables/workspaceRecipes.d.ts +0 -189
  737. package/dist/composables-izSQH8Ky.js +0 -591
  738. package/dist/composables-izSQH8Ky.js.map +0 -1
  739. package/dist/experiment-D49y_Kro.js +0 -459
  740. package/dist/experiment-D49y_Kro.js.map +0 -1
  741. package/dist/experiment-utils-DTANyVKV.js.map +0 -1
  742. package/dist/install.js.map +0 -1
  743. package/dist/lcms.d.ts +0 -38
  744. package/dist/settings-BG6v13Zq.js +0 -341
  745. package/dist/settings-BG6v13Zq.js.map +0 -1
  746. package/dist/tailwind.preset.d.ts +0 -63
  747. package/dist/tailwind.preset.js +0 -71
  748. package/dist/tailwind.preset.js.map +0 -1
  749. package/dist/templates/adapters.d.ts +0 -19
  750. package/dist/templates/assayLookups.d.ts +0 -3
  751. package/dist/templates/assayMatrixAdapters.d.ts +0 -13
  752. package/dist/templates/assayMatrixBuilder.d.ts +0 -3
  753. package/dist/templates/assayNormalizers.d.ts +0 -4
  754. package/dist/templates/builderIdUtils.d.ts +0 -4
  755. package/dist/templates/builderPresetControls.d.ts +0 -11
  756. package/dist/templates/builderReadUtils.d.ts +0 -8
  757. package/dist/templates/builders.d.ts +0 -26
  758. package/dist/templates/calibrationCurveAdapters.d.ts +0 -7
  759. package/dist/templates/calibrationCurveBuilder.d.ts +0 -3
  760. package/dist/templates/calibrationNormalizers.d.ts +0 -5
  761. package/dist/templates/catalog.d.ts +0 -192
  762. package/dist/templates/componentBindingCatalog.d.ts +0 -25
  763. package/dist/templates/componentBindingHelpers.d.ts +0 -17
  764. package/dist/templates/componentBindings.d.ts +0 -97
  765. package/dist/templates/componentDoseResponseProps.d.ts +0 -3
  766. package/dist/templates/componentGenericProps.d.ts +0 -8
  767. package/dist/templates/componentPlateHelpers.d.ts +0 -11
  768. package/dist/templates/componentPlateMapProps.d.ts +0 -3
  769. package/dist/templates/componentPropsFactory.d.ts +0 -3
  770. package/dist/templates/componentQpcrPlateProps.d.ts +0 -3
  771. package/dist/templates/componentTargetResolvers.d.ts +0 -5
  772. package/dist/templates/componentTemplateProps.d.ts +0 -3
  773. package/dist/templates/controlSchemaClone.d.ts +0 -4
  774. package/dist/templates/controlSchemaConstants.d.ts +0 -10
  775. package/dist/templates/controlSchemaMerge.d.ts +0 -3
  776. package/dist/templates/controlSchemaTargets.d.ts +0 -17
  777. package/dist/templates/controlSchemaTypes.d.ts +0 -4
  778. package/dist/templates/controlSchemas.d.ts +0 -34
  779. package/dist/templates/defaultBioTemplateBuilder.d.ts +0 -3
  780. package/dist/templates/doseResponseAdapters.d.ts +0 -6
  781. package/dist/templates/doseResponseBuilder.d.ts +0 -3
  782. package/dist/templates/elisaAssayCollectionBuilder.d.ts +0 -3
  783. package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +0 -3
  784. package/dist/templates/flowCytometryPanelBuilder.d.ts +0 -3
  785. package/dist/templates/flowNormalizers.d.ts +0 -8
  786. package/dist/templates/flowPanelAdapters.d.ts +0 -7
  787. package/dist/templates/index.d.ts +0 -15
  788. package/dist/templates/index.js +0 -2
  789. package/dist/templates/instrumentRunAdapterHelpers.d.ts +0 -8
  790. package/dist/templates/instrumentRunAdapters.d.ts +0 -19
  791. package/dist/templates/instrumentRunBuilder.d.ts +0 -3
  792. package/dist/templates/lcmsBatchCollectionBuilder.d.ts +0 -3
  793. package/dist/templates/lookup.d.ts +0 -4
  794. package/dist/templates/packs.d.ts +0 -21
  795. package/dist/templates/plateMapAdapters.d.ts +0 -5
  796. package/dist/templates/plateMapBuilder.d.ts +0 -3
  797. package/dist/templates/presetControlSchemas.d.ts +0 -534
  798. package/dist/templates/presets.d.ts +0 -106
  799. package/dist/templates/protocolAdapters.d.ts +0 -9
  800. package/dist/templates/protocolNormalizers.d.ts +0 -6
  801. package/dist/templates/protocolStepsBuilder.d.ts +0 -3
  802. package/dist/templates/qpcrAdapters.d.ts +0 -9
  803. package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +0 -3
  804. package/dist/templates/qpcrPlateBuilder.d.ts +0 -3
  805. package/dist/templates/reagentAdapters.d.ts +0 -9
  806. package/dist/templates/reagentListBuilder.d.ts +0 -3
  807. package/dist/templates/runNormalizers.d.ts +0 -10
  808. package/dist/templates/sampleNormalizers.d.ts +0 -4
  809. package/dist/templates/samplePrepAdapters.d.ts +0 -7
  810. package/dist/templates/samplePrepBuilder.d.ts +0 -3
  811. package/dist/templates/sampleSheetAdapters.d.ts +0 -9
  812. package/dist/templates/sampleSheetBuilder.d.ts +0 -3
  813. package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +0 -3
  814. package/dist/templates/targetedMetabolomicsHelpers.d.ts +0 -5
  815. package/dist/templates/templateAdapterTypes.d.ts +0 -48
  816. package/dist/templates/templateControlSchemas.d.ts +0 -400
  817. package/dist/templates/templateCreateOptions.d.ts +0 -165
  818. package/dist/templates/templateEnvelopes.d.ts +0 -17
  819. package/dist/templates/templatePackCollectionBuilder.d.ts +0 -3
  820. package/dist/templates/templatePresetCollectionBuilder.d.ts +0 -20
  821. package/dist/templates/templateQpcrTypes.d.ts +0 -42
  822. package/dist/templates/templateValidators.d.ts +0 -25
  823. package/dist/templates/timeCourseAdapters.d.ts +0 -9
  824. package/dist/templates/timeCourseBuilder.d.ts +0 -3
  825. package/dist/templates/types.d.ts +0 -304
  826. package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +0 -3
  827. package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +0 -3
  828. package/dist/templates-B2DB0MCM.js +0 -12304
  829. package/dist/templates-B2DB0MCM.js.map +0 -1
  830. package/dist/utils/rack.d.ts +0 -63
  831. package/dist/validation-C_eH_vIg.js +0 -7999
  832. package/dist/validation-C_eH_vIg.js.map +0 -1
  833. package/src/__tests__/components/AppAvatarMenu.test.ts +0 -186
  834. package/src/__tests__/components/AppTopBar.navigation.test.ts +0 -68
  835. package/src/__tests__/components/AppTopBarPresence.test.ts +0 -47
  836. package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +0 -159
  837. package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +0 -192
  838. package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -307
  839. package/src/__tests__/components/BioTemplateRenderer.test.ts +0 -96
  840. package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -1100
  841. package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -183
  842. package/src/__tests__/components/ExperimentTimeline.test.ts +0 -108
  843. package/src/__tests__/components/FitPanel.test.ts +0 -96
  844. package/src/__tests__/components/GroupAssigner.test.ts +0 -101
  845. package/src/__tests__/components/MobileSupportGate.test.ts +0 -120
  846. package/src/__tests__/components/MultiSelect.test.ts +0 -54
  847. package/src/__tests__/components/ReagentList.presentation.test.ts +0 -73
  848. package/src/__tests__/components/ReagentList.test.ts +0 -167
  849. package/src/__tests__/components/SampleLegend.test.ts +0 -18
  850. package/src/__tests__/components/SmartGroupModal.test.ts +0 -69
  851. package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +0 -58
  852. package/src/__tests__/components/iconButtonIconSizing.test.ts +0 -18
  853. package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +0 -125
  854. package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +0 -199
  855. package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +0 -104
  856. package/src/__tests__/composables/useExperimentSave.test.ts +0 -542
  857. package/src/__tests__/composables/useGroupAssignment.test.ts +0 -73
  858. package/src/__tests__/composables/useMobileSupportGate.test.ts +0 -74
  859. package/src/__tests__/composables/usePlatformContext.test.ts +0 -148
  860. package/src/__tests__/composables/usePresenceHeartbeat.test.ts +0 -164
  861. package/src/__tests__/composables/useRuntimeAlignment.test.ts +0 -145
  862. package/src/__tests__/composables/useTemplateCollection.test.ts +0 -147
  863. package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -53
  864. package/src/__tests__/fixtures/templates/dose-response.json +0 -81
  865. package/src/__tests__/fixtures/templates/plate-map.json +0 -54
  866. package/src/__tests__/fixtures/templates/qpcr-plate.json +0 -96
  867. package/src/__tests__/fixtures/templates/sample-sheet.json +0 -71
  868. package/src/__tests__/templates/templates.test.ts +0 -1235
  869. package/src/__tests__/templates/templatesDeprecation.test.ts +0 -78
  870. package/src/__tests__/utils/lcms.test.ts +0 -73
  871. package/src/__tests__/utils/rack.test.ts +0 -120
  872. package/src/components/AppAvatarMenu.story.vue +0 -155
  873. package/src/components/AppAvatarMenu.vue +0 -154
  874. package/src/components/AppTopBar.navigation.ts +0 -60
  875. package/src/components/AutoGroupModal.story.vue +0 -458
  876. package/src/components/BaseTextarea.vue +0 -58
  877. package/src/components/BioTemplateExperimentWorkspaceView.story.vue +0 -123
  878. package/src/components/BioTemplateExperimentWorkspaceView.vue +0 -339
  879. package/src/components/BioTemplatePackWorkspaceView.story.vue +0 -107
  880. package/src/components/BioTemplatePackWorkspaceView.vue +0 -180
  881. package/src/components/BioTemplatePresetWorkspaceView.story.vue +0 -163
  882. package/src/components/BioTemplatePresetWorkspaceView.vue +0 -403
  883. package/src/components/BioTemplateRenderer.story.vue +0 -57
  884. package/src/components/BioTemplateRenderer.vue +0 -64
  885. package/src/components/ControlWorkspaceView.story.vue +0 -347
  886. package/src/components/ControlWorkspaceView.vue +0 -370
  887. package/src/components/DoseDesignWorkspaceView.story.vue +0 -77
  888. package/src/components/DoseDesignWorkspaceView.vue +0 -243
  889. package/src/components/ExperimentDataViewer.story.vue +0 -177
  890. package/src/components/ExperimentDataViewer.vue +0 -313
  891. package/src/components/ExperimentTimeline.story.vue +0 -208
  892. package/src/components/ExperimentTimeline.vue +0 -383
  893. package/src/components/FitPanel.story.vue +0 -191
  894. package/src/components/FitPanel.vue +0 -168
  895. package/src/components/FormActions.story.vue +0 -96
  896. package/src/components/GroupAssigner.story.vue +0 -83
  897. package/src/components/GroupAssigner.vue +0 -319
  898. package/src/components/IconButton.story.vue +0 -140
  899. package/src/components/IconButton.vue +0 -69
  900. package/src/components/MobileSupportGate.story.vue +0 -52
  901. package/src/components/MobileSupportGate.vue +0 -111
  902. package/src/components/MultiSelect.vue +0 -119
  903. package/src/components/ReagentEditor.story.vue +0 -153
  904. package/src/components/ReagentEditor.vue +0 -414
  905. package/src/components/ReagentList.presentation.ts +0 -106
  906. package/src/components/ReagentList.story.vue +0 -155
  907. package/src/components/ReagentList.vue +0 -438
  908. package/src/components/SampleLegend.story.vue +0 -91
  909. package/src/components/SampleLegend.vue +0 -121
  910. package/src/components/SmartGroupModal.story.vue +0 -61
  911. package/src/components/SmartGroupModal.vue +0 -61
  912. package/src/components/StatusIndicator.story.vue +0 -99
  913. package/src/components/StatusIndicator.vue +0 -36
  914. package/src/components/UnitInput.story.vue +0 -194
  915. package/src/composables/flattenWorkspaceBindings.ts +0 -104
  916. package/src/composables/useBioTemplateComponents.ts +0 -117
  917. package/src/composables/useBioTemplateControls.ts +0 -45
  918. package/src/composables/useBioTemplatePackWorkspace.ts +0 -201
  919. package/src/composables/useBioTemplatePresetWorkspace.ts +0 -329
  920. package/src/composables/useBioTemplateWorkspace.ts +0 -120
  921. package/src/composables/useChemicalFormula.ts +0 -301
  922. package/src/composables/useDoseCalculator.ts +0 -370
  923. package/src/composables/useExperimentSave.ts +0 -348
  924. package/src/composables/useGroupAssignment.ts +0 -152
  925. package/src/composables/useJobsStatusTray.ts +0 -493
  926. package/src/composables/useMobileSupportGate.ts +0 -80
  927. package/src/composables/usePlatformContext.ts +0 -299
  928. package/src/composables/usePresenceHeartbeat.ts +0 -201
  929. package/src/composables/useRuntimeAlignment.ts +0 -184
  930. package/src/composables/useTemplateCollection.ts +0 -233
  931. package/src/composables/workspaceRecipes.ts +0 -268
  932. package/src/lcms.ts +0 -119
  933. package/src/styles/components/app-avatar-menu.css +0 -121
  934. package/src/styles/components/experiment-data-viewer.css +0 -138
  935. package/src/styles/components/experiment-timeline.css +0 -572
  936. package/src/styles/components/fit-panel.css +0 -153
  937. package/src/styles/components/group-assigner.css +0 -198
  938. package/src/styles/components/mobile-support-gate.css +0 -117
  939. package/src/styles/components/reagent-editor.css +0 -501
  940. package/src/styles/components/reagent-list.css +0 -408
  941. package/src/styles/components/sample-legend.css +0 -212
  942. package/src/styles/components/status-indicator.css +0 -66
  943. package/src/styles/components/theme-toggle.css +0 -6
  944. package/src/tailwind.preset.ts +0 -66
  945. package/src/templates/adapters.ts +0 -141
  946. package/src/templates/assayLookups.ts +0 -33
  947. package/src/templates/assayMatrixAdapters.ts +0 -85
  948. package/src/templates/assayMatrixBuilder.ts +0 -60
  949. package/src/templates/assayNormalizers.ts +0 -34
  950. package/src/templates/builderIdUtils.ts +0 -20
  951. package/src/templates/builderPresetControls.ts +0 -166
  952. package/src/templates/builderReadUtils.ts +0 -55
  953. package/src/templates/builders.ts +0 -122
  954. package/src/templates/calibrationCurveAdapters.ts +0 -62
  955. package/src/templates/calibrationCurveBuilder.ts +0 -100
  956. package/src/templates/calibrationNormalizers.ts +0 -60
  957. package/src/templates/catalog.ts +0 -249
  958. package/src/templates/componentBindingCatalog.ts +0 -90
  959. package/src/templates/componentBindingHelpers.ts +0 -93
  960. package/src/templates/componentBindings.ts +0 -279
  961. package/src/templates/componentDoseResponseProps.ts +0 -41
  962. package/src/templates/componentGenericProps.ts +0 -77
  963. package/src/templates/componentPlateHelpers.ts +0 -52
  964. package/src/templates/componentPlateMapProps.ts +0 -34
  965. package/src/templates/componentPropsFactory.ts +0 -21
  966. package/src/templates/componentQpcrPlateProps.ts +0 -27
  967. package/src/templates/componentTargetResolvers.ts +0 -67
  968. package/src/templates/componentTemplateProps.ts +0 -78
  969. package/src/templates/controlSchemaClone.ts +0 -32
  970. package/src/templates/controlSchemaConstants.ts +0 -11
  971. package/src/templates/controlSchemaMerge.ts +0 -40
  972. package/src/templates/controlSchemaTargets.ts +0 -85
  973. package/src/templates/controlSchemaTypes.ts +0 -20
  974. package/src/templates/controlSchemas.ts +0 -113
  975. package/src/templates/defaultBioTemplateBuilder.ts +0 -125
  976. package/src/templates/doseResponseAdapters.ts +0 -36
  977. package/src/templates/doseResponseBuilder.ts +0 -45
  978. package/src/templates/elisaAssayCollectionBuilder.ts +0 -63
  979. package/src/templates/flowCytometryAssayCollectionBuilder.ts +0 -42
  980. package/src/templates/flowCytometryPanelBuilder.ts +0 -54
  981. package/src/templates/flowNormalizers.ts +0 -58
  982. package/src/templates/flowPanelAdapters.ts +0 -61
  983. package/src/templates/index.ts +0 -330
  984. package/src/templates/instrumentRunAdapterHelpers.ts +0 -94
  985. package/src/templates/instrumentRunAdapters.ts +0 -174
  986. package/src/templates/instrumentRunBuilder.ts +0 -98
  987. package/src/templates/lcmsBatchCollectionBuilder.ts +0 -39
  988. package/src/templates/lookup.ts +0 -18
  989. package/src/templates/packs.ts +0 -166
  990. package/src/templates/plateMapAdapters.ts +0 -38
  991. package/src/templates/plateMapBuilder.ts +0 -44
  992. package/src/templates/presetControlSchemas.ts +0 -258
  993. package/src/templates/presets.ts +0 -183
  994. package/src/templates/protocolAdapters.ts +0 -73
  995. package/src/templates/protocolNormalizers.ts +0 -37
  996. package/src/templates/protocolStepsBuilder.ts +0 -37
  997. package/src/templates/qpcrAdapters.ts +0 -108
  998. package/src/templates/qpcrExpressionCollectionBuilder.ts +0 -34
  999. package/src/templates/qpcrPlateBuilder.ts +0 -97
  1000. package/src/templates/reagentAdapters.ts +0 -81
  1001. package/src/templates/reagentListBuilder.ts +0 -31
  1002. package/src/templates/runNormalizers.ts +0 -63
  1003. package/src/templates/sampleNormalizers.ts +0 -58
  1004. package/src/templates/samplePrepAdapters.ts +0 -66
  1005. package/src/templates/samplePrepBuilder.ts +0 -52
  1006. package/src/templates/sampleSheetAdapters.ts +0 -79
  1007. package/src/templates/sampleSheetBuilder.ts +0 -24
  1008. package/src/templates/targetedMetabolomicsCollectionBuilder.ts +0 -80
  1009. package/src/templates/targetedMetabolomicsHelpers.ts +0 -102
  1010. package/src/templates/templateAdapterTypes.ts +0 -58
  1011. package/src/templates/templateControlSchemas.ts +0 -320
  1012. package/src/templates/templateCreateOptions.ts +0 -208
  1013. package/src/templates/templateEnvelopes.ts +0 -145
  1014. package/src/templates/templatePackCollectionBuilder.ts +0 -24
  1015. package/src/templates/templatePresetCollectionBuilder.ts +0 -141
  1016. package/src/templates/templateQpcrTypes.ts +0 -48
  1017. package/src/templates/templateValidators.ts +0 -426
  1018. package/src/templates/timeCourseAdapters.ts +0 -77
  1019. package/src/templates/timeCourseBuilder.ts +0 -65
  1020. package/src/templates/types.ts +0 -493
  1021. package/src/templates/wellPlateScreenCollectionBuilder.ts +0 -37
  1022. package/src/templates/westernBlotAssayCollectionBuilder.ts +0 -69
  1023. package/src/utils/rack.ts +0 -225
  1024. /package/dist/__tests__/components/{AppAvatarMenu.test.d.ts → BaseButton.test.d.ts} +0 -0
  1025. /package/dist/__tests__/components/{AppTopBar.navigation.test.d.ts → BaseCheckbox.switch.test.d.ts} +0 -0
  1026. /package/dist/__tests__/components/{AppTopBarPresence.test.d.ts → BaseSelect.multiple.test.d.ts} +0 -0
  1027. /package/dist/__tests__/components/{BaseToggle.test.d.ts → BaseSelect.searchable.test.d.ts} +0 -0
  1028. /package/dist/__tests__/components/{BioTemplateExperimentWorkspaceView.test.d.ts → ConfirmDialog.test.d.ts} +0 -0
  1029. /package/dist/__tests__/components/{BioTemplatePackWorkspaceView.test.d.ts → DatePicker.datetime.test.d.ts} +0 -0
  1030. /package/dist/__tests__/components/{BioTemplatePresetWorkspaceView.test.d.ts → DatePicker.time.test.d.ts} +0 -0
  1031. /package/dist/__tests__/components/{BioTemplateRenderer.test.d.ts → FormSchemaInternal.test.d.ts} +0 -0
  1032. /package/dist/__tests__/components/{ControlWorkspaceView.test.d.ts → InstrumentStatusPanels.test.d.ts} +0 -0
  1033. /package/dist/__tests__/components/{DateTimePicker.test.d.ts → NumberInput.units.test.d.ts} +0 -0
  1034. /package/dist/__tests__/components/{DoseDesignWorkspaceView.test.d.ts → PresenceAvatars.test.d.ts} +0 -0
  1035. /package/dist/__tests__/components/{ExperimentTimeline.test.d.ts → StaleFormBanner.test.d.ts} +0 -0
  1036. /package/dist/__tests__/components/{FitPanel.test.d.ts → deprecationTags.test.d.ts} +0 -0
  1037. /package/dist/__tests__/{components/GroupAssigner.test.d.ts → composables/createClient.test.d.ts} +0 -0
  1038. /package/dist/__tests__/{components/MobileSupportGate.test.d.ts → composables/eventStream.test.d.ts} +0 -0
  1039. /package/dist/__tests__/{components/MultiSelect.test.d.ts → composables/useArtifacts.test.d.ts} +0 -0
  1040. /package/dist/__tests__/{components/ReagentList.presentation.test.d.ts → composables/useExperiment.test.d.ts} +0 -0
  1041. /package/dist/__tests__/{components/ReagentList.test.d.ts → composables/useJobCenter.test.d.ts} +0 -0
  1042. /package/dist/__tests__/{components/SampleLegend.test.d.ts → composables/useJobsEndpoint.test.d.ts} +0 -0
  1043. /package/dist/__tests__/{components/SearchableSelect.test.d.ts → composables/usePlatform.test.d.ts} +0 -0
  1044. /package/dist/__tests__/{components/SmartGroupModal.test.d.ts → composables/usePresence.test.d.ts} +0 -0
  1045. /package/dist/__tests__/{components/TimePicker.test.d.ts → composables/useRealtime.test.d.ts} +0 -0
  1046. /package/dist/__tests__/{components/UnitInput.test.d.ts → composables/useRequest.test.d.ts} +0 -0
  1047. /package/dist/__tests__/{components/WellPlate.sampleTypeIndicator.test.d.ts → composables/useVersionedSave.test.d.ts} +0 -0
  1048. /package/dist/__tests__/{components/iconButtonIconSizing.test.d.ts → utils/formula.test.d.ts} +0 -0
  1049. /package/dist/__tests__/{composables/useAnalysisArtifacts.test.d.ts → utils/time.test.d.ts} +0 -0
  1050. /package/dist/components/{FormActions.vue.d.ts → internal/FormActionsInternal.vue.d.ts} +0 -0
  1051. /package/dist/{composables → components/internal}/autoGroup/colors.d.ts +0 -0
  1052. /package/dist/{composables → components/internal}/autoGroup/index.d.ts +0 -0
  1053. /package/dist/{composables → components/internal}/autoGroup/tokenize.d.ts +0 -0
  1054. /package/src/{composables → components/internal}/autoGroup/colors.ts +0 -0
  1055. /package/src/{composables → components/internal}/autoGroup/tokenize.ts +0 -0
  1056. /package/src/{composables → components/internal}/autoGroup/vocab.json +0 -0
@@ -76,7 +76,7 @@ describe('PlateEditor — controlled data', () => {
76
76
  it('should leave modelValue untouched when a well is edited', async () => {
77
77
  const racks = makeRacks()
78
78
  const snapshot = structuredClone(racks)
79
- const wrapper = mountEditor({ modelValue: racks, sampleDrop: true, fillSeries: true, clear: 'undo' })
79
+ const wrapper = mountEditor({ spec: { sampleDrop: true, fillSeries: true, clear: 'undo' }, modelValue: racks })
80
80
 
81
81
  plate(wrapper).vm.$emit('well-edit', 'A2', editData)
82
82
  plate(wrapper).vm.$emit('well-move', 'A1', 'B1')
@@ -119,43 +119,43 @@ describe('PlateEditor — controlled data', () => {
119
119
  })
120
120
 
121
121
  it('should hide the toolbar in readonly mode', () => {
122
- const wrapper = mountEditor({ readonly: true, slots: true, fillSeries: true })
122
+ const wrapper = mountEditor({ spec: { slots: true, fillSeries: true }, readonly: true })
123
123
 
124
124
  expect(wrapper.find('.mint-plate-editor__toolbar').exists()).toBe(false)
125
125
  })
126
126
  })
127
127
 
128
128
  describe('PlateEditor — plate tabs', () => {
129
- it('should emit update:activeRackId when a tab is clicked', async () => {
129
+ it('should emit update:activeRack when a tab is clicked', async () => {
130
130
  const wrapper = mountEditor()
131
131
 
132
132
  await tabs(wrapper)[1].trigger('click')
133
133
 
134
- expect(wrapper.emitted('update:activeRackId')?.[0]).toEqual(['rack-2'])
134
+ expect(wrapper.emitted('update:activeRack')?.[0]).toEqual(['rack-2'])
135
135
  })
136
136
 
137
- it('should show the second rack after its tab is clicked without a bound activeRackId', async () => {
137
+ it('should show the second rack after its tab is clicked without a bound activeRack', async () => {
138
138
  const wrapper = mountEditor()
139
139
 
140
140
  await tabs(wrapper)[1].trigger('click')
141
141
 
142
- expect(plate(wrapper).props('format')).toBe(96)
142
+ expect(plate(wrapper).props('spec')?.format).toBe(96)
143
143
  })
144
144
 
145
145
  it('should keep showing the bound rack when the parent ignores a tab change', async () => {
146
- const wrapper = mountEditor({ activeRackId: 'rack-1', 'onUpdate:activeRackId': () => {} })
146
+ const wrapper = mountEditor({ activeRack: 'rack-1', 'onUpdate:activeRack': () => {} })
147
147
 
148
148
  await tabs(wrapper)[1].trigger('click')
149
149
 
150
- expect(plate(wrapper).props('format')).toBe(54)
150
+ expect(plate(wrapper).props('spec')?.format).toBe(54)
151
151
  })
152
152
 
153
- it('should show the rack named by a new activeRackId', async () => {
154
- const wrapper = mountEditor({ activeRackId: 'rack-1' })
153
+ it('should show the rack named by a new activeRack', async () => {
154
+ const wrapper = mountEditor({ activeRack: 'rack-1' })
155
155
 
156
- await wrapper.setProps({ activeRackId: 'rack-2' })
156
+ await wrapper.setProps({ activeRack: 'rack-2' })
157
157
 
158
- expect(plate(wrapper).props('format')).toBe(96)
158
+ expect(plate(wrapper).props('spec')?.format).toBe(96)
159
159
  })
160
160
 
161
161
  it('should render the well count as a bare mono count', () => {
@@ -185,7 +185,7 @@ describe('PlateEditor — plate tabs', () => {
185
185
  })
186
186
 
187
187
  it('should hide the close button at minRacks', () => {
188
- const wrapper = mountEditor({ minRacks: 2 })
188
+ const wrapper = mountEditor({ spec: { minRacks: 2 } })
189
189
 
190
190
  expect(wrapper.find('.mint-plate-editor__tab-close').exists()).toBe(false)
191
191
  })
@@ -199,7 +199,7 @@ describe('PlateEditor — plate tabs', () => {
199
199
  })
200
200
 
201
201
  it('should hide the add button at maxRacks', () => {
202
- const wrapper = mountEditor({ maxRacks: 2 })
202
+ const wrapper = mountEditor({ spec: { maxRacks: 2 } })
203
203
 
204
204
  expect(wrapper.find('.mint-plate-editor__add').exists()).toBe(false)
205
205
  })
@@ -213,7 +213,7 @@ describe('PlateEditor — plate tabs', () => {
213
213
  })
214
214
 
215
215
  it('should not reorder when reorder is off', async () => {
216
- const wrapper = mountEditor({ reorder: false })
216
+ const wrapper = mountEditor({ spec: { reorder: false } })
217
217
 
218
218
  await tabs(wrapper)[0].trigger('keydown', { key: 'ArrowRight', altKey: true })
219
219
 
@@ -243,13 +243,13 @@ describe('PlateEditor — toolbar', () => {
243
243
  })
244
244
 
245
245
  it('should hide the format control when only one format is allowed', () => {
246
- const wrapper = mountEditor({ formats: [54] })
246
+ const wrapper = mountEditor({ spec: { formats: [54] } })
247
247
 
248
248
  expect(wrapper.find('.mint-plate-editor__toolbar [role="radio"]').exists()).toBe(false)
249
249
  })
250
250
 
251
251
  it('should emit update:slot from a slot button', async () => {
252
- const wrapper = mountEditor({ slots: true })
252
+ const wrapper = mountEditor({ spec: { slots: true } })
253
253
 
254
254
  await wrapper.findAll('.mint-plate-editor__slot')[2].trigger('click')
255
255
 
@@ -257,19 +257,19 @@ describe('PlateEditor — toolbar', () => {
257
257
  })
258
258
 
259
259
  it('should limit slot buttons to the listed slots', () => {
260
- const wrapper = mountEditor({ slots: ['R', 'G'] })
260
+ const wrapper = mountEditor({ spec: { slots: ['R', 'G'] } })
261
261
 
262
262
  expect(wrapper.findAll('.mint-plate-editor__slot')).toHaveLength(2)
263
263
  })
264
264
 
265
265
  it('should mark the active slot as pressed', () => {
266
- const wrapper = mountEditor({ slots: true })
266
+ const wrapper = mountEditor({ spec: { slots: true } })
267
267
 
268
268
  expect(wrapper.get('.mint-plate-editor__slot--active').text()).toBe('R')
269
269
  })
270
270
 
271
271
  it('should emit fill-series from its button', async () => {
272
- const wrapper = mountEditor({ fillSeries: true })
272
+ const wrapper = mountEditor({ spec: { fillSeries: true } })
273
273
 
274
274
  await wrapper.get('[data-action="fill-series"]').trigger('click')
275
275
 
@@ -280,7 +280,7 @@ describe('PlateEditor — toolbar', () => {
280
280
  const racks = makeRacks()
281
281
  racks[0].format = 6
282
282
  racks[0].wells = Object.fromEntries(['A1', 'A2', 'A3', 'B1', 'B2', 'B3'].map(id => [id, { sampleType: 'sample' }]))
283
- const wrapper = mountEditor({ modelValue: racks, fillSeries: true })
283
+ const wrapper = mountEditor({ spec: { fillSeries: true }, modelValue: racks })
284
284
 
285
285
  expect(wrapper.get('[data-action="fill-series"]').attributes('disabled')).toBeDefined()
286
286
  })
@@ -303,7 +303,7 @@ describe('PlateEditor — toolbar', () => {
303
303
  })
304
304
 
305
305
  it('should emit clear at once when clear is undo', async () => {
306
- const wrapper = mountEditor({ clear: 'undo' })
306
+ const wrapper = mountEditor({ spec: { clear: 'undo' } })
307
307
 
308
308
  await wrapper.get('.mint-plate-editor__action--danger').trigger('click')
309
309
 
@@ -311,7 +311,7 @@ describe('PlateEditor — toolbar', () => {
311
311
  })
312
312
 
313
313
  it('should emit undo from the undo button', async () => {
314
- const wrapper = mountEditor({ clear: 'undo', canUndo: true })
314
+ const wrapper = mountEditor({ spec: { clear: 'undo' }, canUndo: true })
315
315
 
316
316
  await wrapper.get('[aria-label="Undo"]').trigger('click')
317
317
 
@@ -319,7 +319,7 @@ describe('PlateEditor — toolbar', () => {
319
319
  })
320
320
 
321
321
  it('should emit undo on Ctrl+Z inside the editor', async () => {
322
- const wrapper = mountEditor({ clear: 'undo', canUndo: true })
322
+ const wrapper = mountEditor({ spec: { clear: 'undo' }, canUndo: true })
323
323
 
324
324
  await wrapper.get('.mint-plate-editor').trigger('keydown', { key: 'z', ctrlKey: true })
325
325
 
@@ -327,13 +327,13 @@ describe('PlateEditor — toolbar', () => {
327
327
  })
328
328
 
329
329
  it('should hide the clear button when clear is false', () => {
330
- const wrapper = mountEditor({ clear: false })
330
+ const wrapper = mountEditor({ spec: { clear: false } })
331
331
 
332
332
  expect(wrapper.find('.mint-plate-editor__action--danger').exists()).toBe(false)
333
333
  })
334
334
 
335
335
  it('should emit the chosen file from import', async () => {
336
- const wrapper = mountEditor({ import: true })
336
+ const wrapper = mountEditor({ spec: { import: true } })
337
337
  const file = new File(['a,b'], 'plate.csv')
338
338
  const input = wrapper.get('input[type="file"]')
339
339
  Object.defineProperty(input.element, 'files', { value: [file] })
@@ -352,15 +352,15 @@ describe('PlateEditor — toolbar', () => {
352
352
 
353
353
  describe('PlateEditor — wells', () => {
354
354
  it('should switch the plate into drag mode from the Drag toggle', async () => {
355
- const wrapper = mountEditor({ wellDrag: true })
355
+ const wrapper = mountEditor({ spec: { wellDrag: true } })
356
356
 
357
357
  await wrapper.get('[data-action="drag"]').trigger('click')
358
358
 
359
- expect(plate(wrapper).props('selectionMode')).toBe('drag')
359
+ expect(plate(wrapper).props('spec')?.selectionMode).toBe('drag')
360
360
  })
361
361
 
362
362
  it('should show the hint prop in the footer until drag mode replaces it', async () => {
363
- const wrapper = mountEditor({ wellDrag: true, hint: 'Drop samples here' })
363
+ const wrapper = mountEditor({ spec: { wellDrag: true }, hint: 'Drop samples here' })
364
364
 
365
365
  expect(wrapper.get('.mint-plate-editor__hint').text()).toBe('Drop samples here')
366
366
 
@@ -370,7 +370,7 @@ describe('PlateEditor — wells', () => {
370
370
  })
371
371
 
372
372
  it('should emit well-move with the active rack id', () => {
373
- const wrapper = mountEditor({ wellDrag: true })
373
+ const wrapper = mountEditor({ spec: { wellDrag: true } })
374
374
 
375
375
  plate(wrapper).vm.$emit('well-move', 'A1', 'B2')
376
376
 
@@ -378,29 +378,29 @@ describe('PlateEditor — wells', () => {
378
378
  })
379
379
 
380
380
  it('should emit sample-drop for a JSON sample payload', () => {
381
- const wrapper = mountEditor({ sampleDrop: true })
382
- const parser = plate(wrapper).props('sampleDropParser') as (e: DragEvent) => unknown
381
+ const wrapper = mountEditor({ spec: { sampleDrop: true } })
382
+ const parser = plate(wrapper).props('spec')?.sampleDropParser as (e: DragEvent) => unknown
383
383
  const data = parser(dropEvent({ 'application/json': JSON.stringify({ id: 's1', sampleName: 'Liver' }) }))
384
384
 
385
385
  expect(data).toMatchObject({ id: 's1', sampleName: 'Liver' })
386
386
  })
387
387
 
388
388
  it('should reject a plain-text drop', () => {
389
- const wrapper = mountEditor({ sampleDrop: true })
390
- const parser = plate(wrapper).props('sampleDropParser') as (e: DragEvent) => unknown
389
+ const wrapper = mountEditor({ spec: { sampleDrop: true } })
390
+ const parser = plate(wrapper).props('spec')?.sampleDropParser as (e: DragEvent) => unknown
391
391
 
392
392
  expect(parser(dropEvent({ 'text/plain': 'Liver' }))).toBeNull()
393
393
  })
394
394
 
395
395
  it('should pass a custom drop parser through', () => {
396
396
  const custom = vi.fn(() => null)
397
- const wrapper = mountEditor({ sampleDrop: custom })
397
+ const wrapper = mountEditor({ spec: { sampleDrop: custom } })
398
398
 
399
- expect(plate(wrapper).props('sampleDropParser')).toBe(custom)
399
+ expect(plate(wrapper).props('spec')?.sampleDropParser).toBe(custom)
400
400
  })
401
401
 
402
402
  it('should forward sample-drop with the active rack id', () => {
403
- const wrapper = mountEditor({ sampleDrop: true })
403
+ const wrapper = mountEditor({ spec: { sampleDrop: true } })
404
404
  const event = dropEvent({})
405
405
 
406
406
  plate(wrapper).vm.$emit('sample-drop', 'B1', { sampleName: 'Liver' }, event)
@@ -409,9 +409,9 @@ describe('PlateEditor — wells', () => {
409
409
  })
410
410
 
411
411
  it('should turn off the inspector when wellFields is false', () => {
412
- const wrapper = mountEditor({ wellFields: false })
412
+ const wrapper = mountEditor({ spec: { wellFields: false } })
413
413
 
414
- expect(plate(wrapper).props('editable')).toBe(false)
414
+ expect(plate(wrapper).props('spec')?.editable).toBe(false)
415
415
  })
416
416
 
417
417
  it('should pass rack-aware props to the #well-editor slot', async () => {
@@ -432,7 +432,7 @@ describe('PlateEditor — groups', () => {
432
432
  ]
433
433
 
434
434
  it('should show the selection bar once wells are selected', async () => {
435
- const wrapper = mountEditor({ groups })
435
+ const wrapper = mountEditor({ spec: { groups } })
436
436
 
437
437
  plate(wrapper).vm.$emit('selection-change', ['A1', 'A2'])
438
438
  await nextTick()
@@ -441,7 +441,7 @@ describe('PlateEditor — groups', () => {
441
441
  })
442
442
 
443
443
  it('should emit assign with the chosen group', async () => {
444
- const wrapper = mountEditor({ groups })
444
+ const wrapper = mountEditor({ spec: { groups } })
445
445
  plate(wrapper).vm.$emit('selection-change', ['A1', 'A2'])
446
446
  await nextTick()
447
447
 
@@ -451,7 +451,7 @@ describe('PlateEditor — groups', () => {
451
451
  })
452
452
 
453
453
  it('should emit assign without a group from the clear button', async () => {
454
- const wrapper = mountEditor({ groups })
454
+ const wrapper = mountEditor({ spec: { groups } })
455
455
  plate(wrapper).vm.$emit('selection-change', ['A1'])
456
456
  await nextTick()
457
457
 
@@ -461,7 +461,7 @@ describe('PlateEditor — groups', () => {
461
461
  })
462
462
 
463
463
  it('should drop the selection bar on cancel', async () => {
464
- const wrapper = mountEditor({ groups })
464
+ const wrapper = mountEditor({ spec: { groups } })
465
465
  plate(wrapper).vm.$emit('selection-change', ['A1'])
466
466
  await nextTick()
467
467
 
@@ -471,13 +471,13 @@ describe('PlateEditor — groups', () => {
471
471
  })
472
472
 
473
473
  it('should color wells by group id', () => {
474
- const wrapper = mountEditor({ groups })
474
+ const wrapper = mountEditor({ spec: { groups } })
475
475
 
476
- expect(plate(wrapper).props('sampleColors')).toEqual({ ctrl: 'var(--mint-sample-1)', trt: 'var(--mint-sample-3)' })
476
+ expect(plate(wrapper).props('spec')?.sampleColors).toEqual({ ctrl: 'var(--mint-sample-1)', trt: 'var(--mint-sample-3)' })
477
477
  })
478
478
 
479
479
  it('should emit selection-change', () => {
480
- const wrapper = mountEditor({ groups })
480
+ const wrapper = mountEditor({ spec: { groups } })
481
481
 
482
482
  plate(wrapper).vm.$emit('selection-change', ['A1'])
483
483
 
@@ -502,7 +502,7 @@ describe('PlateEditor — groups and the inspector', () => {
502
502
  ]
503
503
 
504
504
  it('should keep a grouped well saved without a name', () => {
505
- const wrapper = mountEditor({ modelValue: grouped(), groups })
505
+ const wrapper = mountEditor({ spec: { groups }, modelValue: grouped() })
506
506
 
507
507
  plate(wrapper).vm.$emit('well-edit', 'A1', { ...editData, wellId: 'A1', label: '', sampleType: 'sample' })
508
508
 
@@ -510,13 +510,13 @@ describe('PlateEditor — groups and the inspector', () => {
510
510
  })
511
511
 
512
512
  it('should keep the type field in the inspector when there are groups', () => {
513
- const wrapper = mountEditor({ groups })
513
+ const wrapper = mountEditor({ spec: { groups } })
514
514
 
515
- expect(plate(wrapper).props('editFields')).toContain('sampleType')
515
+ expect(plate(wrapper).props('spec')?.editFields).toContain('sampleType')
516
516
  })
517
517
 
518
518
  it('should clear the selection when the plate format changes', async () => {
519
- const wrapper = mountEditor({ modelValue: grouped(), groups, formats: [96, 384] })
519
+ const wrapper = mountEditor({ spec: { groups, formats: [96, 384] }, modelValue: grouped() })
520
520
  plate(wrapper).vm.$emit('selection-change', ['A1'])
521
521
  await nextTick()
522
522
 
@@ -526,7 +526,7 @@ describe('PlateEditor — groups and the inspector', () => {
526
526
  })
527
527
 
528
528
  it('should report the cleared selection when switching plates', async () => {
529
- const wrapper = mountEditor({ modelValue: grouped(), groups })
529
+ const wrapper = mountEditor({ spec: { groups }, modelValue: grouped() })
530
530
  plate(wrapper).vm.$emit('selection-change', ['A1'])
531
531
  await nextTick()
532
532
 
@@ -544,19 +544,19 @@ describe('PlateEditor — history and import / export (7a)', () => {
544
544
  })
545
545
 
546
546
  it('should show redo with history', () => {
547
- const wrapper = mountEditor({ history: true })
547
+ const wrapper = mountEditor({ spec: { history: true } })
548
548
 
549
549
  expect(wrapper.find('[aria-label="Redo"]').exists()).toBe(true)
550
550
  })
551
551
 
552
552
  it('should disable undo when canUndo is false', () => {
553
- const wrapper = mountEditor({ history: true })
553
+ const wrapper = mountEditor({ spec: { history: true } })
554
554
 
555
555
  expect(wrapper.get('[aria-label="Undo"]').attributes('disabled')).toBeDefined()
556
556
  })
557
557
 
558
558
  it('should keep focus in the editor when undo runs out of steps', async () => {
559
- const wrapper = mountEditor({ history: true, canUndo: true }, { attachTo: document.body })
559
+ const wrapper = mountEditor({ spec: { history: true }, canUndo: true }, { attachTo: document.body })
560
560
  ;(wrapper.get('[aria-label="Undo"]').element as HTMLElement).focus()
561
561
 
562
562
  await wrapper.setProps({ canUndo: false })
@@ -566,7 +566,7 @@ describe('PlateEditor — history and import / export (7a)', () => {
566
566
  })
567
567
 
568
568
  it('should keep focus in the editor when redo runs out of steps', async () => {
569
- const wrapper = mountEditor({ history: true, canRedo: true }, { attachTo: document.body })
569
+ const wrapper = mountEditor({ spec: { history: true }, canRedo: true }, { attachTo: document.body })
570
570
  ;(wrapper.get('[aria-label="Redo"]').element as HTMLElement).focus()
571
571
 
572
572
  await wrapper.setProps({ canRedo: false })
@@ -576,7 +576,7 @@ describe('PlateEditor — history and import / export (7a)', () => {
576
576
  })
577
577
 
578
578
  it('should emit redo from the redo button', async () => {
579
- const wrapper = mountEditor({ history: true, canRedo: true })
579
+ const wrapper = mountEditor({ spec: { history: true }, canRedo: true })
580
580
 
581
581
  await wrapper.get('[aria-label="Redo"]').trigger('click')
582
582
 
@@ -584,7 +584,7 @@ describe('PlateEditor — history and import / export (7a)', () => {
584
584
  })
585
585
 
586
586
  it('should emit redo on Ctrl+Shift+Z inside the editor', async () => {
587
- const wrapper = mountEditor({ history: true, canRedo: true })
587
+ const wrapper = mountEditor({ spec: { history: true }, canRedo: true })
588
588
 
589
589
  await wrapper.get('.mint-plate-editor').trigger('keydown', { key: 'Z', ctrlKey: true, shiftKey: true })
590
590
 
@@ -592,7 +592,7 @@ describe('PlateEditor — history and import / export (7a)', () => {
592
592
  })
593
593
 
594
594
  it('should leave Ctrl+Z in a text field to the field', async () => {
595
- const wrapper = mountEditor({ history: true, canUndo: true }, {
595
+ const wrapper = mountEditor({ spec: { history: true }, canUndo: true }, {
596
596
  slots: { 'toolbar-extra': () => h('input', { class: 'field' }) },
597
597
  })
598
598
 
@@ -602,13 +602,13 @@ describe('PlateEditor — history and import / export (7a)', () => {
602
602
  })
603
603
 
604
604
  it('should label the menu Import / Export when both are on', () => {
605
- const wrapper = mountEditor({ import: true, export: ['csv'] })
605
+ const wrapper = mountEditor({ spec: { import: true, export: ['csv'] } })
606
606
 
607
607
  expect(wrapper.get('[data-action="import-export"]').text()).toBe('Import / Export')
608
608
  })
609
609
 
610
610
  it('should emit export with the chosen format', () => {
611
- const wrapper = mountEditor({ export: ['csv', 'json'] })
611
+ const wrapper = mountEditor({ spec: { export: ['csv', 'json'] } })
612
612
 
613
613
  wrapper.findComponent(ActionMenu).vm.$emit('select', { id: 'export:json', label: 'Export JSON' })
614
614
 
@@ -616,7 +616,7 @@ describe('PlateEditor — history and import / export (7a)', () => {
616
616
  })
617
617
 
618
618
  it('should open the file picker from the import menu item', () => {
619
- const wrapper = mountEditor({ import: true, export: ['csv'] })
619
+ const wrapper = mountEditor({ spec: { import: true, export: ['csv'] } })
620
620
  const click = vi.spyOn(HTMLInputElement.prototype, 'click').mockImplementation(() => {})
621
621
 
622
622
  wrapper.findComponent(ActionMenu).vm.$emit('select', { id: 'import', label: 'Import file' })
@@ -637,33 +637,33 @@ describe('PlateEditor — paste import', () => {
637
637
  }
638
638
 
639
639
  it('should offer Paste in the menu when importMode is both', () => {
640
- const wrapper = mountEditor({ import: true, importMode: 'both' })
640
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'both' } })
641
641
 
642
642
  expect(wrapper.getComponent(ActionMenu).props('items').map((item: { id: string }) => item.id)).toEqual(['import', 'paste'])
643
643
  })
644
644
 
645
645
  it('should label the menu Import when only imports are offered', () => {
646
- const wrapper = mountEditor({ import: true, importMode: 'both' })
646
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'both' } })
647
647
 
648
648
  expect(wrapper.get('[data-action="import-export"]').text()).toBe('Import')
649
649
  })
650
650
 
651
651
  it('should drop the file picker when importMode is paste', () => {
652
- const wrapper = mountEditor({ import: true, importMode: 'paste', export: ['csv'] })
652
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'paste', export: ['csv'] } })
653
653
 
654
654
  expect(wrapper.find('input[type="file"]').exists()).toBe(false)
655
655
  })
656
656
 
657
657
  it('should open the paste dialog from the Paste menu item', async () => {
658
- const wrapper = mountEditor({ import: true, importMode: 'paste', export: ['csv'] })
658
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'paste', export: ['csv'] } })
659
659
 
660
660
  await openPaste(wrapper)
661
661
 
662
- expect(pasteDialog(wrapper).props('modelValue')).toBe(true)
662
+ expect(pasteDialog(wrapper).props('open')).toBe(true)
663
663
  })
664
664
 
665
665
  it('should emit import-text with the pasted text on confirm', async () => {
666
- const wrapper = mountEditor({ import: true, importMode: 'paste', export: ['csv'] })
666
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'paste', export: ['csv'] } })
667
667
  await openPaste(wrapper)
668
668
  await wrapper.get('textarea').setValue('A1\tS001')
669
669
 
@@ -676,7 +676,7 @@ describe('PlateEditor — paste import', () => {
676
676
  const files: File[] = []
677
677
  // Typed as the file-only listener callers had before paste existed; it must still type-check.
678
678
  const wrapper = mount(PlateEditor, {
679
- props: { modelValue: makeRacks(), import: true, importMode: 'both', onImport: (file: File) => { files.push(file) } },
679
+ props: { spec: { import: true, importMode: 'both' }, modelValue: makeRacks(), onImport: (file: File) => { files.push(file) } },
680
680
  global: { stubs: { teleport: true } },
681
681
  })
682
682
  await openPaste(wrapper)
@@ -688,7 +688,7 @@ describe('PlateEditor — paste import', () => {
688
688
  })
689
689
 
690
690
  it('should not emit import-text when the pasted text is blank', async () => {
691
- const wrapper = mountEditor({ import: true, importMode: 'paste', export: ['csv'] })
691
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'paste', export: ['csv'] } })
692
692
  await openPaste(wrapper)
693
693
  await wrapper.get('textarea').setValue(' ')
694
694
 
@@ -698,18 +698,18 @@ describe('PlateEditor — paste import', () => {
698
698
  })
699
699
 
700
700
  it('should close the paste dialog on confirm', async () => {
701
- const wrapper = mountEditor({ import: true, importMode: 'paste', export: ['csv'] })
701
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'paste', export: ['csv'] } })
702
702
  await openPaste(wrapper)
703
703
  await wrapper.get('textarea').setValue('A1')
704
704
 
705
705
  pasteDialog(wrapper).vm.$emit('confirm')
706
706
  await nextTick()
707
707
 
708
- expect(pasteDialog(wrapper).props('modelValue')).toBe(false)
708
+ expect(pasteDialog(wrapper).props('open')).toBe(false)
709
709
  })
710
710
 
711
711
  it('should open an empty paste dialog when the previous paste was canceled', async () => {
712
- const wrapper = mountEditor({ import: true, importMode: 'paste', export: ['csv'] })
712
+ const wrapper = mountEditor({ spec: { import: true, importMode: 'paste', export: ['csv'] } })
713
713
  await openPaste(wrapper)
714
714
  await wrapper.get('textarea').setValue('A1\tS001')
715
715
  pasteDialog(wrapper).vm.$emit('update:modelValue', false)
@@ -723,7 +723,7 @@ describe('PlateEditor — paste import', () => {
723
723
 
724
724
  describe('PlateEditor — Shift-click range', () => {
725
725
  it('should emit the range between the edited well and a Shift-clicked well', async () => {
726
- const wrapper = mountEditor({ groups: [{ id: 'ctrl', name: 'Control' }] })
726
+ const wrapper = mountEditor({ spec: { groups: [{ id: 'ctrl', name: 'Control' }] } })
727
727
 
728
728
  await cell(wrapper, 'A1').trigger('click')
729
729
  await cell(wrapper, 'B2').trigger('click', { shiftKey: true })
@@ -732,10 +732,10 @@ describe('PlateEditor — Shift-click range', () => {
732
732
  })
733
733
 
734
734
  it('should not range from a well clicked on another rack', async () => {
735
- const wrapper = mountEditor({ groups: [{ id: 'ctrl', name: 'Control' }], activeRackId: 'rack-1' })
735
+ const wrapper = mountEditor({ spec: { groups: [{ id: 'ctrl', name: 'Control' }] }, activeRack: 'rack-1' })
736
736
 
737
737
  await cell(wrapper, 'A1').trigger('click')
738
- await wrapper.setProps({ activeRackId: 'rack-2' })
738
+ await wrapper.setProps({ activeRack: 'rack-2' })
739
739
  await cell(wrapper, 'C3').trigger('click', { shiftKey: true })
740
740
 
741
741
  expect(wrapper.emitted('selection-change')?.at(-1)).toEqual([['C3']])
@@ -746,13 +746,13 @@ describe('PlateEditor — compact wells (7a)', () => {
746
746
  it('should default to the xs well size', () => {
747
747
  const wrapper = mountEditor()
748
748
 
749
- expect(plate(wrapper).props('size')).toBe('xs')
749
+ expect(plate(wrapper).props('spec')?.size).toBe('xs')
750
750
  })
751
751
 
752
752
  it('should hide well labels at the xs size', () => {
753
753
  const wrapper = mountEditor()
754
754
 
755
- expect(plate(wrapper).props('showWellLabels')).toBe(false)
755
+ expect(plate(wrapper).props('spec')?.showWellLabels).toBe(false)
756
756
  })
757
757
  })
758
758
 
@@ -766,25 +766,25 @@ describe('PlateEditor — rail (7a)', () => {
766
766
  ]
767
767
 
768
768
  it('should collapse the rail in a narrow container', () => {
769
- const wrapper = mountEditor({ groups })
769
+ const wrapper = mountEditor({ spec: { groups } })
770
770
 
771
771
  expect(wrapper.find('.mint-plate-editor__rail').exists()).toBe(false)
772
772
  })
773
773
 
774
774
  it('should show the rail in a wide container', async () => {
775
- const wrapper = await mountWide({ groups })
775
+ const wrapper = await mountWide({ spec: { groups } })
776
776
 
777
777
  expect(wrapper.find('.mint-plate-editor__rail').exists()).toBe(true)
778
778
  })
779
779
 
780
780
  it('should count the wells of each group in the rail', async () => {
781
- const wrapper = await mountWide({ modelValue: grouped(), groups })
781
+ const wrapper = await mountWide({ spec: { groups }, modelValue: grouped() })
782
782
 
783
783
  expect(wrapper.get('.mint-plate-editor__rail-row .mint-plate-editor__rail-count').text()).toBe('2')
784
784
  })
785
785
 
786
786
  it('should emit group-add from the New group row', async () => {
787
- const wrapper = await mountWide({ groups })
787
+ const wrapper = await mountWide({ spec: { groups } })
788
788
 
789
789
  await wrapper.get('[data-action="group-add"]').trigger('click')
790
790
 
@@ -792,7 +792,7 @@ describe('PlateEditor — rail (7a)', () => {
792
792
  })
793
793
 
794
794
  it('should hide New group when readonly', async () => {
795
- const wrapper = await mountWide({ groups, readonly: true })
795
+ const wrapper = await mountWide({ spec: { groups }, readonly: true })
796
796
 
797
797
  expect(wrapper.find('[data-action="group-add"]').exists()).toBe(false)
798
798
  })
@@ -804,21 +804,21 @@ describe('PlateEditor — rail (7a)', () => {
804
804
  })
805
805
 
806
806
  it('should move the legend from under the plate into the rail', async () => {
807
- const wrapper = await mountWide({ groups })
807
+ const wrapper = await mountWide({ spec: { groups } })
808
808
 
809
- expect(plate(wrapper).props('showLegend')).toBe(false)
809
+ expect(plate(wrapper).props('spec')?.showLegend).toBe(false)
810
810
  })
811
811
 
812
812
  it('should keep the legend under the plate in a narrow container', () => {
813
- const wrapper = mountEditor({ groups })
813
+ const wrapper = mountEditor({ spec: { groups } })
814
814
 
815
- expect(plate(wrapper).props('showLegend')).toBe(true)
815
+ expect(plate(wrapper).props('spec')?.showLegend).toBe(true)
816
816
  })
817
817
 
818
818
  it('should not open the popover inspector beside a rail', async () => {
819
819
  const wrapper = await mountWide()
820
820
 
821
- expect(plate(wrapper).props('editable')).toBe(false)
821
+ expect(plate(wrapper).props('spec')?.editable).toBe(false)
822
822
  })
823
823
 
824
824
  it('should select only the clicked well on a plain click without groups', async () => {
@@ -840,7 +840,7 @@ describe('PlateEditor — rail (7a)', () => {
840
840
  })
841
841
 
842
842
  it('should add a well to the selection on Cmd-click beside the rail with groups', async () => {
843
- const wrapper = await mountWide({ groups })
843
+ const wrapper = await mountWide({ spec: { groups } })
844
844
  await cell(wrapper, 'A1').trigger('click')
845
845
 
846
846
  await cell(wrapper, 'A2').trigger('click', { metaKey: true })
@@ -849,9 +849,9 @@ describe('PlateEditor — rail (7a)', () => {
849
849
  })
850
850
 
851
851
  it('should select wells by rectangle with groups', async () => {
852
- const wrapper = await mountWide({ groups })
852
+ const wrapper = await mountWide({ spec: { groups } })
853
853
 
854
- expect(plate(wrapper).props('selectionMode')).toBe('rectangle')
854
+ expect(plate(wrapper).props('spec')?.selectionMode).toBe('rectangle')
855
855
  })
856
856
 
857
857
  it('should show the inline inspector for one selected well', async () => {
@@ -937,7 +937,7 @@ describe('PlateEditor — rail (7a)', () => {
937
937
  })
938
938
 
939
939
  it('should not select a well on a plain click beside the rail when wellFields is false and there are no groups', async () => {
940
- const wrapper = await mountWide({ wellFields: false })
940
+ const wrapper = await mountWide({ spec: { wellFields: false } })
941
941
 
942
942
  await cell(wrapper, 'A1').trigger('click')
943
943
 
@@ -945,7 +945,7 @@ describe('PlateEditor — rail (7a)', () => {
945
945
  })
946
946
 
947
947
  it('should keep the selection bar for several wells', async () => {
948
- const wrapper = await mountWide({ groups })
948
+ const wrapper = await mountWide({ spec: { groups } })
949
949
 
950
950
  plate(wrapper).vm.$emit('selection-change', ['A1', 'A2'])
951
951
  await nextTick()
@@ -954,7 +954,7 @@ describe('PlateEditor — rail (7a)', () => {
954
954
  })
955
955
 
956
956
  it('should offer the group bar for one selected well beside the rail', async () => {
957
- const wrapper = await mountWide({ groups })
957
+ const wrapper = await mountWide({ spec: { groups } })
958
958
  plate(wrapper).vm.$emit('selection-change', ['D5'])
959
959
  await nextTick()
960
960
 
@@ -992,7 +992,7 @@ describe('PlateEditor — rail (7a)', () => {
992
992
  })
993
993
 
994
994
  it('should show the rail beside a 96-well plate at size fill', async () => {
995
- const wrapper = await mountWide({ modelValue: grouped(), size: 'fill' })
995
+ const wrapper = await mountWide({ spec: { size: 'fill' }, modelValue: grouped() })
996
996
 
997
997
  expect(wrapper.find('.mint-plate-editor__rail').exists()).toBe(true)
998
998
  })
@@ -1012,7 +1012,7 @@ describe('PlateEditor — rail (7a)', () => {
1012
1012
  describe('PlateEditor — inspector marker (7a)', () => {
1013
1013
  it('should tint the rail inspector marker with the group color', async () => {
1014
1014
  const racks: Rack[] = [{ id: 'rack-1', name: 'P1', format: 96, slot: 'R', injectionVolume: 5, wells: { A1: { sampleType: 'sample', group: 'trt', state: 'filled' } } }]
1015
- const wrapper = await mountWide({ modelValue: racks, groups: [{ id: 'ctrl', name: 'Control' }, { id: 'trt', name: 'Treated' }] })
1015
+ const wrapper = await mountWide({ spec: { groups: [{ id: 'ctrl', name: 'Control' }, { id: 'trt', name: 'Treated' }] }, modelValue: racks })
1016
1016
  plate(wrapper).vm.$emit('selection-change', ['A1'])
1017
1017
  await nextTick()
1018
1018
 
@@ -1021,7 +1021,7 @@ describe('PlateEditor — inspector marker (7a)', () => {
1021
1021
 
1022
1022
  it('should name the group of the well in the rail inspector', async () => {
1023
1023
  const racks: Rack[] = [{ id: 'rack-1', name: 'P1', format: 96, slot: 'R', injectionVolume: 5, wells: { A1: { sampleType: 'sample', group: 'trt', state: 'filled' } } }]
1024
- const wrapper = await mountWide({ modelValue: racks, groups: [{ id: 'ctrl', name: 'Control' }, { id: 'trt', name: 'Treated' }] })
1024
+ const wrapper = await mountWide({ spec: { groups: [{ id: 'ctrl', name: 'Control' }, { id: 'trt', name: 'Treated' }] }, modelValue: racks })
1025
1025
  plate(wrapper).vm.$emit('selection-change', ['A1'])
1026
1026
  await nextTick()
1027
1027
 
@@ -1029,7 +1029,7 @@ describe('PlateEditor — inspector marker (7a)', () => {
1029
1029
  })
1030
1030
 
1031
1031
  it('should give the rail inspector the Type field when there are groups', async () => {
1032
- const wrapper = await mountWide({ groups: [{ id: 'ctrl', name: 'Control' }] })
1032
+ const wrapper = await mountWide({ spec: { groups: [{ id: 'ctrl', name: 'Control' }] } })
1033
1033
  plate(wrapper).vm.$emit('selection-change', ['A1'])
1034
1034
  await nextTick()
1035
1035
 
@@ -1065,7 +1065,7 @@ describe('PlateEditor — modifier clicks in the popover mode', () => {
1065
1065
  })
1066
1066
 
1067
1067
  it('should not select a well on a plain click when wellFields is false and there are no groups', async () => {
1068
- const wrapper = mountEditor({ wellFields: false })
1068
+ const wrapper = mountEditor({ spec: { wellFields: false } })
1069
1069
 
1070
1070
  await cell(wrapper, 'A1').trigger('click')
1071
1071
 
@@ -1073,7 +1073,7 @@ describe('PlateEditor — modifier clicks in the popover mode', () => {
1073
1073
  })
1074
1074
 
1075
1075
  it('should add a well to the selection on Ctrl-click with groups', async () => {
1076
- const wrapper = mountEditor({ groups: [{ id: 'ctrl', name: 'Control' }] })
1076
+ const wrapper = mountEditor({ spec: { groups: [{ id: 'ctrl', name: 'Control' }] } })
1077
1077
  await cell(wrapper, 'A1').trigger('click', { ctrlKey: true })
1078
1078
 
1079
1079
  await cell(wrapper, 'A2').trigger('click', { ctrlKey: true })
@@ -1093,27 +1093,27 @@ describe('PlateEditor — designer options', () => {
1093
1093
  }]
1094
1094
 
1095
1095
  it('should use the clearConfirm title in the confirmation', () => {
1096
- const wrapper = mountEditor({ clearConfirm: { title: 'Unplace samples' } })
1096
+ const wrapper = mountEditor({ spec: { clearConfirm: { title: 'Unplace samples' } } })
1097
1097
 
1098
1098
  expect(wrapper.getComponent(ConfirmDialog).props('title')).toBe('Unplace samples')
1099
1099
  })
1100
1100
 
1101
1101
  it('should use the clearConfirm message in the confirmation', () => {
1102
- const wrapper = mountEditor({ clearConfirm: { message: 'All 1 placed samples go back to the Sample List unplaced.' } })
1102
+ const wrapper = mountEditor({ spec: { clearConfirm: { message: 'All 1 placed samples go back to the Sample List unplaced.' } } })
1103
1103
 
1104
1104
  expect(wrapper.getComponent(ConfirmDialog).props('message')).toBe('All 1 placed samples go back to the Sample List unplaced.')
1105
1105
  })
1106
1106
 
1107
1107
  it('should use the clearConfirm confirm label in the confirmation', () => {
1108
- const wrapper = mountEditor({ clearConfirm: { confirmLabel: 'Unplace all' } })
1108
+ const wrapper = mountEditor({ spec: { clearConfirm: { confirmLabel: 'Unplace all' } } })
1109
1109
 
1110
1110
  expect(wrapper.getComponent(ConfirmDialog).props('confirmLabel')).toBe('Unplace all')
1111
1111
  })
1112
1112
 
1113
- it('should pass the clearConfirm variant to the confirmation', () => {
1114
- const wrapper = mountEditor({ clearConfirm: { variant: 'warning' } })
1113
+ it('should pass the clearConfirm tone to the confirmation', () => {
1114
+ const wrapper = mountEditor({ spec: { clearConfirm: { tone: 'warning' } } })
1115
1115
 
1116
- expect(wrapper.getComponent(ConfirmDialog).props('variant')).toBe('warning')
1116
+ expect(wrapper.getComponent(ConfirmDialog).props('tone')).toBe('warning')
1117
1117
  })
1118
1118
 
1119
1119
  it('should keep the default clear message without clearConfirm', () => {
@@ -1123,13 +1123,13 @@ describe('PlateEditor — designer options', () => {
1123
1123
  })
1124
1124
 
1125
1125
  it('should keep fill-series enabled on a full plate when fillSeriesWhenFull is emit', () => {
1126
- const wrapper = mountEditor({ modelValue: fullRack(), fillSeries: true, fillSeriesWhenFull: 'emit' })
1126
+ const wrapper = mountEditor({ spec: { fillSeries: true, fillSeriesWhenFull: 'emit' }, modelValue: fullRack() })
1127
1127
 
1128
1128
  expect(wrapper.get('[data-action="fill-series"]').attributes('disabled')).toBeUndefined()
1129
1129
  })
1130
1130
 
1131
1131
  it('should emit fill-series on a full plate when fillSeriesWhenFull is emit', async () => {
1132
- const wrapper = mountEditor({ modelValue: fullRack(), fillSeries: true, fillSeriesWhenFull: 'emit' })
1132
+ const wrapper = mountEditor({ spec: { fillSeries: true, fillSeriesWhenFull: 'emit' }, modelValue: fullRack() })
1133
1133
 
1134
1134
  await wrapper.get('[data-action="fill-series"]').trigger('click')
1135
1135
 
@@ -1137,7 +1137,7 @@ describe('PlateEditor — designer options', () => {
1137
1137
  })
1138
1138
 
1139
1139
  it('should set the file input accept from importAccept', () => {
1140
- const wrapper = mountEditor({ import: true, importAccept: '.csv,text/csv' })
1140
+ const wrapper = mountEditor({ spec: { import: true, importAccept: '.csv,text/csv' } })
1141
1141
 
1142
1142
  expect(wrapper.get('input[type="file"]').attributes('accept')).toBe('.csv,text/csv')
1143
1143
  })