@morscherlab/mint-sdk 1.3.8 → 1.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (966) hide show
  1. package/README.md +152 -177
  2. package/dist/ActionMenu-CScINahU.js +445 -0
  3. package/dist/ActionMenu-CScINahU.js.map +1 -0
  4. package/dist/AppSidebar-BmiiPfz9.js +3514 -0
  5. package/dist/AppSidebar-BmiiPfz9.js.map +1 -0
  6. package/dist/{experiment-utils-DTANyVKV.js → BaseModal-DfRIuVoj.js} +74 -149
  7. package/dist/BaseModal-DfRIuVoj.js.map +1 -0
  8. package/dist/ConfirmDialog-CJ7hqYUP.js +102 -0
  9. package/dist/ConfirmDialog-CJ7hqYUP.js.map +1 -0
  10. package/dist/ExperimentPopover-C4sGw-is.js +359 -0
  11. package/dist/ExperimentPopover-C4sGw-is.js.map +1 -0
  12. package/dist/ExperimentSelectorModal-D-9z7cNx.js +527 -0
  13. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +1 -0
  14. package/dist/SegmentedControl-DERBN-Xd.js +129 -0
  15. package/dist/SegmentedControl-DERBN-Xd.js.map +1 -0
  16. package/dist/SettingsModal-CSLE31yg.js +666 -0
  17. package/dist/SettingsModal-CSLE31yg.js.map +1 -0
  18. package/dist/analysisArtifactTypes-Cy3D0Ipg.js.map +1 -1
  19. package/dist/auth-SliLnFre.js +65 -0
  20. package/dist/auth-SliLnFre.js.map +1 -0
  21. package/dist/components/ActionMenu.vue.d.ts +1 -1
  22. package/dist/components/AdductText.vue.d.ts +1 -1
  23. package/dist/components/AlertBox.vue.d.ts +3 -3
  24. package/dist/components/AppContainer.vue.d.ts +1 -1
  25. package/dist/components/AppSidebar.vue.d.ts +14 -94
  26. package/dist/components/AppTopBar.vue.d.ts +16 -70
  27. package/dist/components/ArtifactSaveDialog.vue.d.ts +4 -4
  28. package/dist/components/ArtifactSelectorModal.vue.d.ts +4 -4
  29. package/dist/components/AuditTrail.vue.d.ts +2 -2
  30. package/dist/components/BaseButton.vue.d.ts +11 -4
  31. package/dist/components/BaseCheckbox.vue.d.ts +9 -3
  32. package/dist/components/BaseInput.vue.d.ts +13 -9
  33. package/dist/components/BaseModal.vue.d.ts +4 -4
  34. package/dist/components/BasePill.vue.d.ts +15 -8
  35. package/dist/components/BaseRadioGroup.vue.d.ts +2 -2
  36. package/dist/components/BaseSelect.vue.d.ts +51 -19
  37. package/dist/components/BaseTabs.vue.d.ts +6 -5
  38. package/dist/components/BatchProgressList.vue.d.ts +2 -2
  39. package/dist/components/ChartContainer.vue.d.ts +2 -2
  40. package/dist/components/ChemicalFormula.vue.d.ts +2 -2
  41. package/dist/components/CollapsibleCard.vue.d.ts +3 -3
  42. package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -3
  43. package/dist/components/ConcentrationInput.vue.d.ts +2 -2
  44. package/dist/components/ConfirmDialog.vue.d.ts +8 -7
  45. package/dist/components/DataFrame.vue.d.ts +32 -74
  46. package/dist/components/DatePicker.vue.d.ts +24 -2
  47. package/dist/components/DoseCalculator.vue.d.ts +1 -1
  48. package/dist/components/DoseCalculatorVolumeField.vue.d.ts +1 -1
  49. package/dist/components/EmptyState.vue.d.ts +3 -2
  50. package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -3
  51. package/dist/components/FormBuilder.vue.d.ts +17 -74
  52. package/dist/components/FormulaInput.vue.d.ts +2 -2
  53. package/dist/components/GeneratedPluginView.vue.d.ts +1 -1
  54. package/dist/components/GeneratedResultRenderer.vue.d.ts +5 -1
  55. package/dist/components/{StatusIndicator.vue.d.ts → InstrumentStatusPanels.vue.d.ts} +8 -9
  56. package/dist/components/JobsStatusTray.vue.d.ts +2 -9
  57. package/dist/components/LoadingSpinner.vue.d.ts +3 -3
  58. package/dist/components/MoleculeInput.vue.d.ts +2 -2
  59. package/dist/components/NumberInput.vue.d.ts +19 -5
  60. package/dist/components/PlateEditor.vue.d.ts +11 -61
  61. package/dist/components/PlotlyChart.vue.d.ts +2 -2
  62. package/dist/components/PluginIcon.vue.d.ts +5 -1
  63. package/dist/components/PluginWorkspaceView.controls.d.ts +2 -9
  64. package/dist/components/PluginWorkspaceView.navigation.d.ts +1 -7
  65. package/dist/components/PluginWorkspaceView.props.d.ts +18 -137
  66. package/dist/components/PluginWorkspaceView.shell.d.ts +2 -10
  67. package/dist/components/PluginWorkspaceView.vue.d.ts +14 -84
  68. package/dist/components/PresenceAvatars.vue.d.ts +31 -0
  69. package/dist/components/ProgressBar.vue.d.ts +3 -2
  70. package/dist/components/ProtocolStep.presentation.d.ts +0 -1
  71. package/dist/components/SampleHierarchyTree.vue.d.ts +3 -3
  72. package/dist/components/SampleSelector.vue.d.ts +3 -3
  73. package/dist/components/ScheduleCalendar.vue.d.ts +1 -1
  74. package/dist/components/ScientificNumber.vue.d.ts +1 -1
  75. package/dist/components/SecretInput.vue.d.ts +2 -2
  76. package/dist/components/SegmentedControl.vue.d.ts +2 -2
  77. package/dist/components/SequenceInput.vue.d.ts +2 -2
  78. package/dist/components/SettingsModal.vue.d.ts +12 -20
  79. package/dist/components/SmartGroup.types.d.ts +0 -1
  80. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
  81. package/dist/components/StaleFormBanner.vue.d.ts +20 -0
  82. package/dist/components/TagsInput.vue.d.ts +4 -3
  83. package/dist/components/TimeRangeInput.vue.d.ts +2 -2
  84. package/dist/components/VersionConflictDialog.vue.d.ts +24 -0
  85. package/dist/components/WellPlate.geometry.d.ts +0 -6
  86. package/dist/components/WellPlate.rendering.d.ts +0 -2
  87. package/dist/components/WellPlate.vue.d.ts +7 -52
  88. package/dist/components/index.d.ts +0 -90
  89. package/dist/components/{AutoGroupModal.adapter.d.ts → internal/AutoGroupModalInternal.adapter.d.ts} +6 -6
  90. package/dist/components/{AutoGroupModal.vue.d.ts → internal/AutoGroupModalInternal.vue.d.ts} +6 -6
  91. package/dist/components/{BaseToggle.vue.d.ts → internal/CheckboxSwitchInternal.vue.d.ts} +2 -2
  92. package/dist/components/internal/DatePickerDateInternal.vue.d.ts +22 -0
  93. package/dist/components/{DateTimePicker.vue.d.ts → internal/DatePickerDateTimeInternal.vue.d.ts} +2 -2
  94. package/dist/components/{TimePicker.vue.d.ts → internal/DatePickerTimeInternal.vue.d.ts} +3 -3
  95. package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -2
  96. package/dist/components/internal/FormSchemaInternal.vue.d.ts +95 -0
  97. package/dist/components/{UnitInput.vue.d.ts → internal/NumberUnitInputInternal.vue.d.ts} +6 -14
  98. package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +3 -2
  99. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +3 -3
  100. package/dist/components/{MultiSelect.vue.d.ts → internal/SelectMultipleInternal.vue.d.ts} +11 -8
  101. package/dist/components/{SearchableSelect.vue.d.ts → internal/SelectSearchableInternal.vue.d.ts} +5 -2
  102. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +1 -15
  103. package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +4 -4
  104. package/dist/{composables → components/internal}/autoGroup/classKey.d.ts +1 -1
  105. package/dist/{composables → components/internal}/autoGroup/classify.d.ts +1 -1
  106. package/dist/{composables → components/internal}/autoGroup/columns.d.ts +1 -1
  107. package/dist/{composables → components/internal}/autoGroup/compose.d.ts +1 -1
  108. package/dist/{composables → components/internal}/autoGroup/cooccurrence.d.ts +1 -1
  109. package/dist/{composables → components/internal}/autoGroup/csv-shim.d.ts +1 -1
  110. package/dist/{composables → components/internal}/autoGroup/fingerprint.d.ts +1 -1
  111. package/dist/{composables → components/internal}/autoGroup/template.d.ts +1 -1
  112. package/dist/{composables → components/internal}/autoGroup/tokenLength.d.ts +1 -1
  113. package/dist/components/internal/generatedJobsApi.d.ts +1 -1
  114. package/dist/{composables → components/internal}/useAutoGroup.d.ts +9 -18
  115. package/dist/composables/componentSpecs.d.ts +41 -0
  116. package/dist/composables/controlComponentBindings.d.ts +6 -0
  117. package/dist/composables/controlSchemaAdapters.d.ts +28 -2
  118. package/dist/composables/controlSchemaDoseDesign.d.ts +1 -1
  119. package/dist/composables/controlSchemaModel.d.ts +1 -1
  120. package/dist/composables/controlSchemaTypes.d.ts +35 -23
  121. package/dist/composables/{usePluginClient.d.ts → createClient.d.ts} +20 -49
  122. package/dist/composables/{useEventStream.d.ts → eventStream.d.ts} +2 -2
  123. package/dist/composables/experiment-utils.d.ts +1 -6
  124. package/dist/composables/index.d.ts +6 -59
  125. package/dist/composables/platformContextHelpers.d.ts +0 -11
  126. package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
  127. package/dist/composables/pluginWorkspaceModel.d.ts +14 -97
  128. package/dist/composables/useApi.d.ts +1 -3
  129. package/dist/composables/useAppExperiment.d.ts +1 -1
  130. package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
  131. package/dist/composables/useExperiment.d.ts +30 -0
  132. package/dist/composables/useFilePicker.d.ts +2 -2
  133. package/dist/composables/useJobCenter.d.ts +63 -0
  134. package/dist/composables/{useGeneratedAnalysis.d.ts → useJobsEndpoint.d.ts} +22 -23
  135. package/dist/composables/useMenuKeyboard.d.ts +1 -1
  136. package/dist/composables/usePlatform.d.ts +63 -0
  137. package/dist/composables/usePluginWorkspace.d.ts +6 -11
  138. package/dist/composables/usePresence.d.ts +41 -0
  139. package/dist/composables/useRackEditor.d.ts +2 -2
  140. package/dist/composables/useRealtime.d.ts +71 -0
  141. package/dist/composables/{useRequestSyncState.d.ts → useRequest.d.ts} +12 -17
  142. package/dist/composables/useToast.d.ts +7 -5
  143. package/dist/composables/useVersionedSave.d.ts +76 -0
  144. package/dist/controlSchemaModel-CP5-_nAj.js +95 -0
  145. package/dist/controlSchemaModel-CP5-_nAj.js.map +1 -0
  146. package/dist/data-C2PwI_dn.js +3811 -0
  147. package/dist/data-C2PwI_dn.js.map +1 -0
  148. package/dist/data.d.ts +32 -0
  149. package/dist/data.js +10 -0
  150. package/dist/deprecatedRootExports.d.ts +191 -0
  151. package/dist/experiment-43OJtH7R.js +673 -0
  152. package/dist/experiment-43OJtH7R.js.map +1 -0
  153. package/dist/experimentStatus-BZmU4czV.js +60 -0
  154. package/dist/experimentStatus-BZmU4czV.js.map +1 -0
  155. package/dist/host.d.ts +10 -0
  156. package/dist/host.js +26 -0
  157. package/dist/host.js.map +1 -0
  158. package/dist/index.d.ts +1 -12
  159. package/dist/index.js +65 -277
  160. package/dist/index.js.map +1 -1
  161. package/dist/install-DAID6c2-.js +668 -0
  162. package/dist/install-DAID6c2-.js.map +1 -0
  163. package/dist/install.d.ts +2 -1
  164. package/dist/install.js +1 -21
  165. package/dist/instrument.d.ts +0 -6
  166. package/dist/lab-DLwRl_Ql.js +7513 -0
  167. package/dist/lab-DLwRl_Ql.js.map +1 -0
  168. package/dist/lab.d.ts +42 -0
  169. package/dist/lab.js +4 -0
  170. package/dist/permissions.d.ts +0 -4
  171. package/dist/permissions.js +1 -20
  172. package/dist/permissions.js.map +1 -1
  173. package/dist/records-BzTcxekG.js +3070 -0
  174. package/dist/records-BzTcxekG.js.map +1 -0
  175. package/dist/runtime-D6gVat6r.js +1495 -0
  176. package/dist/runtime-D6gVat6r.js.map +1 -0
  177. package/dist/runtime.d.ts +25 -0
  178. package/dist/runtime.js +8 -0
  179. package/dist/shell-5ju97nOS.js +197 -0
  180. package/dist/shell-5ju97nOS.js.map +1 -0
  181. package/dist/shell.d.ts +16 -0
  182. package/dist/shell.js +8 -0
  183. package/dist/stores/auth.d.ts +13 -35
  184. package/dist/stores/experiment.d.ts +4 -0
  185. package/dist/stores/index.js +2 -2
  186. package/dist/styles.css +12030 -14845
  187. package/dist/types/analysisArtifactTypes.d.ts +1 -1
  188. package/dist/types/auth.d.ts +0 -8
  189. package/dist/types/componentLabTypes.d.ts +98 -34
  190. package/dist/types/componentWorkflowTypes.d.ts +0 -27
  191. package/dist/types/components.d.ts +145 -74
  192. package/dist/types/form-builder.d.ts +4 -0
  193. package/dist/types/generated/platformContext.d.ts +52 -0
  194. package/dist/types/generated-ui.d.ts +2 -2
  195. package/dist/types/index.d.ts +4 -5
  196. package/dist/types/instrument.d.ts +41 -0
  197. package/dist/types/platform.d.ts +20 -58
  198. package/dist/useDebouncedWatch-BPwyl6eS.js +73 -0
  199. package/dist/useDebouncedWatch-BPwyl6eS.js.map +1 -0
  200. package/dist/useExpansionSet-CvoNMZJi.js +68 -0
  201. package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
  202. package/dist/useExperimentSamples-CxcnxZ8h.js +366 -0
  203. package/dist/useExperimentSamples-CxcnxZ8h.js.map +1 -0
  204. package/dist/useListReorder-CcbEYxX-.js +5462 -0
  205. package/dist/useListReorder-CcbEYxX-.js.map +1 -0
  206. package/dist/useRackEditor-BD5NIo5s.js +5916 -0
  207. package/dist/useRackEditor-BD5NIo5s.js.map +1 -0
  208. package/dist/useRealtime-PalKue84.js +696 -0
  209. package/dist/useRealtime-PalKue84.js.map +1 -0
  210. package/dist/useRequest-D5JDfsgZ.js +76 -0
  211. package/dist/useRequest-D5JDfsgZ.js.map +1 -0
  212. package/dist/utils/color.d.ts +0 -5
  213. package/dist/{composables/useDoseCalculator.d.ts → utils/dose.d.ts} +10 -13
  214. package/dist/utils/experimentStatus.d.ts +9 -0
  215. package/dist/{composables/useChemicalFormula.d.ts → utils/formula.d.ts} +3 -6
  216. package/dist/utils/integrationHost.d.ts +18 -0
  217. package/dist/utils/plotlyTemplate.d.ts +2 -0
  218. package/dist/utils/pluginSecrets.d.ts +12 -12
  219. package/dist/utils/presenceAvatars.d.ts +30 -0
  220. package/dist/utils/records.d.ts +0 -2
  221. package/dist/{composables/useTimeUtils.d.ts → utils/time.d.ts} +0 -18
  222. package/package.json +20 -17
  223. package/src/__tests__/components/ActionMenu.test.ts +0 -13
  224. package/src/__tests__/components/AlertBox.test.ts +1 -1
  225. package/src/__tests__/components/AppSidebar.test.ts +119 -167
  226. package/src/__tests__/components/AppToastContainer.test.ts +2 -2
  227. package/src/__tests__/components/AppTopBar.test.ts +181 -176
  228. package/src/__tests__/components/ArtifactSaveDialog.test.ts +5 -3
  229. package/src/__tests__/components/ArtifactSelectorModal.test.ts +6 -4
  230. package/src/__tests__/components/AuditTrail.test.ts +1 -1
  231. package/src/__tests__/components/AutoGroupModal.adapter.test.ts +1 -1
  232. package/src/__tests__/components/AutoGroupModal.anatomy.test.ts +2 -2
  233. package/src/__tests__/components/AutoGroupModal.wiring.test.ts +2 -2
  234. package/src/__tests__/components/BaseButton.test.ts +51 -0
  235. package/src/__tests__/components/{BaseToggle.test.ts → BaseCheckbox.switch.test.ts} +8 -6
  236. package/src/__tests__/components/BaseInput.test.ts +13 -34
  237. package/src/__tests__/components/BaseModal.test.ts +6 -6
  238. package/src/__tests__/components/BasePill.test.ts +33 -39
  239. package/src/__tests__/components/{MultiSelect.test.ts → BaseSelect.multiple.test.ts} +16 -7
  240. package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
  241. package/src/__tests__/components/BaseSelect.test.ts +10 -0
  242. package/src/__tests__/components/BaseTabs.test.ts +13 -13
  243. package/src/__tests__/components/CollapsibleCard.test.ts +1 -1
  244. package/src/__tests__/components/ComponentBindingRenderer.test.ts +25 -73
  245. package/src/__tests__/components/ConcentrationInput.test.ts +3 -3
  246. package/src/__tests__/components/ConfirmDialog.test.ts +23 -0
  247. package/src/__tests__/components/DataFrame.test.ts +140 -142
  248. package/src/__tests__/components/DataStates.test.ts +6 -22
  249. package/src/__tests__/components/{DateTimePicker.test.ts → DatePicker.datetime.test.ts} +9 -7
  250. package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +18 -17
  251. package/src/__tests__/components/DoseCalculator.test.ts +12 -7
  252. package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
  253. package/src/__tests__/components/ExperimentSelectorModal.test.ts +15 -15
  254. package/src/__tests__/components/FormBuilder.test.ts +49 -167
  255. package/src/__tests__/components/FormSchemaInternal.test.ts +91 -0
  256. package/src/__tests__/components/GeneratedPathInput.test.ts +18 -13
  257. package/src/__tests__/components/GeneratedPluginView.test.ts +38 -24
  258. package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -4
  259. package/src/__tests__/components/InstrumentStatusPanels.test.ts +79 -0
  260. package/src/__tests__/components/JobsStatusTray.test.ts +4 -4
  261. package/src/__tests__/components/NumberInput.test.ts +28 -0
  262. package/src/__tests__/components/{UnitInput.test.ts → NumberInput.units.test.ts} +6 -6
  263. package/src/__tests__/components/PlateEditor.test.ts +108 -108
  264. package/src/__tests__/components/PlateEditorBindingInternal.test.ts +13 -13
  265. package/src/__tests__/components/PlotlyChart.test.ts +1 -1
  266. package/src/__tests__/components/PluginIcon.test.ts +9 -4
  267. package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +16 -29
  268. package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +28 -34
  269. package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +4 -19
  270. package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +1 -6
  271. package/src/__tests__/components/PluginWorkspaceView.test.ts +176 -155
  272. package/src/__tests__/components/PresenceAvatars.test.ts +90 -0
  273. package/src/__tests__/components/ProtocolStep.presentation.test.ts +1 -3
  274. package/src/__tests__/components/ProtocolStepEditor.test.ts +10 -11
  275. package/src/__tests__/components/ProtocolStepParameterField.test.ts +8 -7
  276. package/src/__tests__/components/ResourcePickerListInternal.test.ts +2 -2
  277. package/src/__tests__/components/RetiredStyles.test.ts +0 -18
  278. package/src/__tests__/components/SampleSelector.test.ts +17 -17
  279. package/src/__tests__/components/SecretInput.test.ts +14 -19
  280. package/src/__tests__/components/SettingsModal.test.ts +76 -84
  281. package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
  282. package/src/__tests__/components/ThemeToggle.test.ts +1 -1
  283. package/src/__tests__/components/WellPlate.decoration.test.ts +10 -8
  284. package/src/__tests__/components/WellPlate.interaction.test.ts +6 -7
  285. package/src/__tests__/components/WellPlate.keyboard.test.ts +2 -2
  286. package/src/__tests__/components/deprecationTags.test.ts +90 -0
  287. package/src/__tests__/composables/analysisArtifactTarget.test.ts +1 -12
  288. package/src/__tests__/composables/autoGroup/classKey.test.ts +1 -1
  289. package/src/__tests__/composables/autoGroup/classify.test.ts +1 -1
  290. package/src/__tests__/composables/autoGroup/columns.test.ts +1 -1
  291. package/src/__tests__/composables/autoGroup/compose.test.ts +1 -1
  292. package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +1 -1
  293. package/src/__tests__/composables/autoGroup/fieldEdits.test.ts +1 -1
  294. package/src/__tests__/composables/autoGroup/fingerprint.test.ts +1 -1
  295. package/src/__tests__/composables/autoGroup/golden.test.ts +1 -1
  296. package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +1 -1
  297. package/src/__tests__/composables/autoGroup/groupTree.test.ts +1 -1
  298. package/src/__tests__/composables/autoGroup/integration.test.ts +1 -1
  299. package/src/__tests__/composables/autoGroup/template.test.ts +1 -1
  300. package/src/__tests__/composables/autoGroup/tokenLength.test.ts +1 -1
  301. package/src/__tests__/composables/autoGroup/tokenize.test.ts +1 -1
  302. package/src/__tests__/composables/{usePluginClient.test.ts → createClient.test.ts} +84 -222
  303. package/src/__tests__/composables/{useEventStream.test.ts → eventStream.test.ts} +6 -6
  304. package/src/__tests__/composables/experiment-utils.test.ts +13 -14
  305. package/src/__tests__/composables/useApi.test.ts +32 -21
  306. package/src/__tests__/composables/useAppExperiment.test.ts +19 -2
  307. package/src/__tests__/composables/{useAnalysisArtifacts.test.ts → useArtifacts.test.ts} +19 -27
  308. package/src/__tests__/composables/useAutoGroup.test.ts +3 -13
  309. package/src/__tests__/composables/useControlSchema.test.ts +41 -99
  310. package/src/__tests__/composables/useExperiment.test.ts +63 -0
  311. package/src/__tests__/composables/useFileBrowser.test.ts +4 -6
  312. package/src/__tests__/composables/{useJobsStatusTray.test.ts → useJobCenter.test.ts} +31 -31
  313. package/src/__tests__/composables/{useGeneratedAnalysis.test.ts → useJobsEndpoint.test.ts} +213 -139
  314. package/src/__tests__/composables/usePlatform.test.ts +102 -0
  315. package/src/__tests__/composables/usePresence.test.ts +164 -0
  316. package/src/__tests__/composables/useRackEditor.test.ts +2 -2
  317. package/src/__tests__/composables/useRealtime.test.ts +196 -0
  318. package/src/__tests__/composables/{useRequestSyncState.test.ts → useRequest.test.ts} +32 -47
  319. package/src/__tests__/composables/useVersionedSave.test.ts +194 -0
  320. package/src/__tests__/docs/extractDocsComponents.test.ts +36 -0
  321. package/src/__tests__/docs/extractDocsParsing.test.ts +2 -2
  322. package/src/__tests__/docs/extractDocsTheme.test.ts +1 -46
  323. package/src/__tests__/docs/frontendDocsCatalog.test.ts +164 -84
  324. package/src/__tests__/styles/baseControlsRules.test.ts +1 -1
  325. package/src/__tests__/styles/darkModeRules.test.ts +0 -6
  326. package/src/__tests__/{composables/useChemicalFormula.test.ts → utils/formula.test.ts} +3 -5
  327. package/src/__tests__/utils/permissions.test.ts +1 -36
  328. package/src/__tests__/utils/plotlyTemplate.test.ts +16 -1
  329. package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +2 -9
  330. package/src/components/ActionMenu.vue +7 -13
  331. package/src/components/AlertBox.story.vue +25 -25
  332. package/src/components/AlertBox.vue +8 -8
  333. package/src/components/AppLayout.story.vue +33 -44
  334. package/src/components/AppLayout.vue +1 -1
  335. package/src/components/AppSidebar.story.vue +40 -73
  336. package/src/components/AppSidebar.vue +66 -147
  337. package/src/components/AppToastContainer.story.vue +1 -1
  338. package/src/components/AppTopBar.story.vue +51 -100
  339. package/src/components/AppTopBar.vue +74 -198
  340. package/src/components/ArtifactSaveDialog.story.vue +9 -9
  341. package/src/components/ArtifactSaveDialog.vue +23 -26
  342. package/src/components/ArtifactSelectorModal.story.vue +4 -4
  343. package/src/components/ArtifactSelectorModal.vue +10 -10
  344. package/src/components/AuditTrail.story.vue +4 -4
  345. package/src/components/AuditTrail.vue +3 -3
  346. package/src/components/Avatar.story.vue +2 -3
  347. package/src/components/Avatar.vue +1 -2
  348. package/src/components/BaseButton.story.vue +25 -0
  349. package/src/components/BaseButton.vue +39 -10
  350. package/src/components/BaseCheckbox.story.vue +2 -2
  351. package/src/components/{BaseToggle.story.vue → BaseCheckbox.switch.story.vue} +22 -19
  352. package/src/components/BaseCheckbox.vue +39 -7
  353. package/src/components/BaseInput.story.vue +3 -15
  354. package/src/components/{BaseTextarea.story.vue → BaseInput.textarea.story.vue} +14 -10
  355. package/src/components/BaseInput.vue +53 -26
  356. package/src/components/BaseModal.story.vue +11 -11
  357. package/src/components/BaseModal.vue +8 -8
  358. package/src/components/BasePill.story.vue +48 -28
  359. package/src/components/BasePill.vue +22 -11
  360. package/src/components/BaseRadioGroup.story.vue +4 -4
  361. package/src/components/BaseRadioGroup.vue +3 -3
  362. package/src/components/{MultiSelect.story.vue → BaseSelect.multiple.story.vue} +20 -14
  363. package/src/components/{SearchableSelect.story.vue → BaseSelect.searchable.story.vue} +4 -4
  364. package/src/components/BaseSelect.story.vue +2 -2
  365. package/src/components/BaseSelect.vue +117 -22
  366. package/src/components/BaseTabs.story.vue +20 -20
  367. package/src/components/BaseTabs.vue +17 -9
  368. package/src/components/BatchProgressList.vue +3 -3
  369. package/src/components/ChartContainer.story.vue +8 -13
  370. package/src/components/ChartContainer.vue +3 -3
  371. package/src/components/ChemicalFormula.vue +1 -2
  372. package/src/components/CollapsibleCard.vue +5 -4
  373. package/src/components/ComponentBindingRenderer.story.vue +0 -29
  374. package/src/components/ComponentBindingRenderer.vue +15 -39
  375. package/src/components/ConcentrationInput.story.vue +2 -2
  376. package/src/components/ConcentrationInput.vue +9 -9
  377. package/src/components/ConfirmDialog.story.vue +21 -21
  378. package/src/components/ConfirmDialog.vue +15 -14
  379. package/src/components/DataFrame.story.vue +28 -40
  380. package/src/components/DataFrame.vue +112 -128
  381. package/src/components/{DateTimePicker.story.vue → DatePicker.datetime.story.vue} +19 -14
  382. package/src/components/DatePicker.story.vue +2 -2
  383. package/src/components/{TimePicker.story.vue → DatePicker.time.story.vue} +15 -12
  384. package/src/components/DatePicker.vue +82 -220
  385. package/src/components/DoseCalculator.vue +13 -19
  386. package/src/components/DoseCalculatorVolumeField.vue +6 -6
  387. package/src/components/EmptyState.story.vue +17 -17
  388. package/src/components/EmptyState.vue +5 -4
  389. package/src/components/ExperimentPopover.story.vue +1 -1
  390. package/src/components/ExperimentPopover.vue +4 -4
  391. package/src/components/ExperimentSelectorModal.story.vue +5 -5
  392. package/src/components/ExperimentSelectorModal.vue +11 -13
  393. package/src/components/FilePicker.vue +1 -1
  394. package/src/components/FormBuilder.story.vue +9 -4
  395. package/src/components/FormBuilder.vue +46 -253
  396. package/src/components/FormField.story.vue +1 -2
  397. package/src/components/FormulaInput.story.vue +2 -2
  398. package/src/components/FormulaInput.vue +5 -6
  399. package/src/components/GeneratedPathInput.vue +8 -9
  400. package/src/components/GeneratedPluginView.story.vue +1 -1
  401. package/src/components/GeneratedPluginView.vue +23 -22
  402. package/src/components/GeneratedResultRenderer.vue +16 -17
  403. package/src/components/InstrumentStatusPanels.story.vue +64 -0
  404. package/src/components/InstrumentStatusPanels.vue +133 -0
  405. package/src/components/JobsStatusTray.story.vue +2 -2
  406. package/src/components/JobsStatusTray.vue +4 -19
  407. package/src/components/LoadingSpinner.story.vue +11 -11
  408. package/src/components/LoadingSpinner.vue +6 -4
  409. package/src/components/MoleculeInput.story.vue +2 -2
  410. package/src/components/MoleculeInput.vue +3 -3
  411. package/src/components/NumberInput.story.vue +55 -15
  412. package/src/components/NumberInput.vue +80 -18
  413. package/src/components/PlateEditor.story.vue +51 -43
  414. package/src/components/PlateEditor.vue +97 -128
  415. package/src/components/PlotlyChart.story.vue +1 -1
  416. package/src/components/PlotlyChart.vue +6 -4
  417. package/src/components/PluginIcon.story.vue +9 -6
  418. package/src/components/PluginIcon.vue +7 -2
  419. package/src/components/PluginWorkspaceView.controls.ts +9 -29
  420. package/src/components/PluginWorkspaceView.navigation.ts +2 -23
  421. package/src/components/PluginWorkspaceView.props.ts +17 -151
  422. package/src/components/PluginWorkspaceView.shell.ts +13 -24
  423. package/src/components/PluginWorkspaceView.story.vue +64 -62
  424. package/src/components/PluginWorkspaceView.vue +21 -78
  425. package/src/components/PresenceAvatars.story.vue +75 -0
  426. package/src/components/PresenceAvatars.vue +114 -0
  427. package/src/components/ProgressBar.story.vue +7 -7
  428. package/src/components/ProgressBar.vue +4 -3
  429. package/src/components/ProtocolStep.presentation.ts +0 -11
  430. package/src/components/ProtocolStepEditor.vue +6 -5
  431. package/src/components/ProtocolStepParameterField.vue +15 -12
  432. package/src/components/SampleSelector.colors.ts +1 -1
  433. package/src/components/SampleSelector.vue +6 -6
  434. package/src/components/ScheduleCalendar.vue +4 -4
  435. package/src/components/SecretInput.story.vue +1 -1
  436. package/src/components/SecretInput.vue +16 -25
  437. package/src/components/SegmentedControl.story.vue +7 -7
  438. package/src/components/SegmentedControl.vue +5 -3
  439. package/src/components/SequenceInput.story.vue +2 -2
  440. package/src/components/SequenceInput.vue +3 -3
  441. package/src/components/SettingsModal.story.vue +13 -14
  442. package/src/components/SettingsModal.vue +29 -47
  443. package/src/components/SmartGroup.types.ts +4 -6
  444. package/src/components/SmartGroupFieldRecipe.vue +7 -5
  445. package/src/components/StaleFormBanner.story.vue +90 -0
  446. package/src/components/StaleFormBanner.vue +83 -0
  447. package/src/components/TagsInput.story.vue +7 -7
  448. package/src/components/TagsInput.vue +7 -6
  449. package/src/components/ThemeToggle.vue +5 -30
  450. package/src/components/TimeRangeInput.story.vue +1 -1
  451. package/src/components/TimeRangeInput.vue +10 -8
  452. package/src/components/VersionConflictDialog.story.vue +60 -0
  453. package/src/components/VersionConflictDialog.vue +79 -0
  454. package/src/components/WellPlate.geometry.ts +0 -38
  455. package/src/components/WellPlate.rendering.ts +0 -13
  456. package/src/components/WellPlate.story.vue +61 -50
  457. package/src/components/WellPlate.vue +61 -87
  458. package/src/components/index.ts +3 -105
  459. package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts} +8 -8
  460. package/src/components/{AutoGroupModal.vue → internal/AutoGroupModalInternal.vue} +23 -23
  461. package/src/components/{BaseToggle.vue → internal/CheckboxSwitchInternal.vue} +8 -8
  462. package/src/components/internal/DataStateInternal.vue +1 -1
  463. package/src/components/internal/DatePickerDateInternal.vue +243 -0
  464. package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +9 -9
  465. package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +7 -7
  466. package/src/components/internal/FilePickerListInternal.vue +8 -14
  467. package/src/components/{FormActions.vue → internal/FormActionsInternal.vue} +2 -2
  468. package/src/components/internal/FormFieldRendererInternal.vue +1 -1
  469. package/src/components/internal/FormSchemaInternal.vue +253 -0
  470. package/src/components/{UnitInput.vue → internal/NumberUnitInputInternal.vue} +28 -28
  471. package/src/components/internal/PlateEditorBindingInternal.vue +8 -7
  472. package/src/components/internal/ResourcePickerListInternal.vue +4 -4
  473. package/src/components/{MultiSelect.vue → internal/SelectMultipleInternal.vue} +21 -15
  474. package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +24 -8
  475. package/src/components/internal/WellEditPopupInternal.vue +4 -9
  476. package/src/components/internal/WorkspaceShellInternal.vue +3 -36
  477. package/src/components/internal/WorkspaceSidebarInternal.vue +4 -25
  478. package/src/{composables → components/internal}/autoGroup/classKey.ts +1 -1
  479. package/src/{composables → components/internal}/autoGroup/classify.ts +1 -1
  480. package/src/{composables → components/internal}/autoGroup/columns.ts +1 -1
  481. package/src/{composables → components/internal}/autoGroup/compose.ts +3 -3
  482. package/src/{composables → components/internal}/autoGroup/cooccurrence.ts +1 -1
  483. package/src/{composables → components/internal}/autoGroup/csv-shim.ts +1 -1
  484. package/src/{composables → components/internal}/autoGroup/fingerprint.ts +1 -1
  485. package/src/{composables → components/internal}/autoGroup/index.ts +1 -2
  486. package/src/{composables → components/internal}/autoGroup/template.ts +1 -1
  487. package/src/{composables → components/internal}/autoGroup/tokenLength.ts +1 -1
  488. package/src/components/internal/generatedJobsApi.ts +1 -1
  489. package/src/{composables → components/internal}/useAutoGroup.ts +3 -57
  490. package/src/composables/componentSpecs.ts +62 -0
  491. package/src/composables/controlComponentBindings.ts +7 -0
  492. package/src/composables/controlSchemaAdapters.ts +45 -7
  493. package/src/composables/controlSchemaDoseDesign.ts +16 -5
  494. package/src/composables/controlSchemaModel.ts +1 -1
  495. package/src/composables/controlSchemaTypes.ts +31 -22
  496. package/src/composables/{usePluginClient.ts → createClient.ts} +52 -190
  497. package/src/composables/{useEventStream.ts → eventStream.ts} +3 -3
  498. package/src/composables/experiment-utils.ts +1 -39
  499. package/src/composables/formBuilderRegistry.ts +6 -12
  500. package/src/composables/index.ts +16 -480
  501. package/src/composables/platformContextHelpers.ts +0 -57
  502. package/src/composables/pluginEndpointBuilder.ts +8 -10
  503. package/src/composables/pluginWorkspaceModel.ts +14 -105
  504. package/src/composables/useApi.ts +18 -30
  505. package/src/composables/useAppExperiment.ts +6 -5
  506. package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
  507. package/src/composables/useControlSchema.ts +5 -9
  508. package/src/composables/useControlWorkspace.ts +4 -7
  509. package/src/composables/useExperiment.ts +49 -0
  510. package/src/composables/useExperimentData.ts +4 -4
  511. package/src/composables/useExperimentSelector.ts +5 -5
  512. package/src/composables/useFileBrowser.ts +5 -13
  513. package/src/composables/useFilePicker.ts +2 -2
  514. package/src/composables/useFormBuilder.ts +3 -4
  515. package/src/composables/useJobCenter.ts +324 -0
  516. package/src/composables/{useGeneratedAnalysis.ts → useJobsEndpoint.ts} +53 -67
  517. package/src/composables/useMenuKeyboard.ts +1 -1
  518. package/src/composables/usePlatform.ts +95 -0
  519. package/src/composables/usePlatformFilePickerAdapter.ts +2 -1
  520. package/src/composables/usePluginWorkspace.ts +62 -107
  521. package/src/composables/usePresence.ts +110 -0
  522. package/src/composables/useRackEditor.ts +3 -3
  523. package/src/composables/useRealtime.ts +194 -0
  524. package/src/composables/{useRequestSyncState.ts → useRequest.ts} +25 -48
  525. package/src/composables/useScheduleCalendarLayout.ts +1 -1
  526. package/src/composables/useToast.ts +14 -11
  527. package/src/composables/useVersionedSave.ts +165 -0
  528. package/src/data.ts +130 -0
  529. package/src/deprecatedRootExports.ts +226 -0
  530. package/src/generated/schema.ts +1 -0
  531. package/src/host.ts +27 -0
  532. package/src/index.ts +2 -71
  533. package/src/install.ts +15 -2
  534. package/src/instrument.ts +1 -6
  535. package/src/lab.ts +128 -0
  536. package/src/permissions.ts +0 -27
  537. package/src/runtime.ts +145 -0
  538. package/src/shell.ts +103 -0
  539. package/src/stores/auth.ts +26 -162
  540. package/src/stores/experiment.ts +27 -1
  541. package/src/styles/components/action-menu.css +0 -5
  542. package/src/styles/components/alert-box.css +18 -0
  543. package/src/styles/components/app-top-bar.css +7 -48
  544. package/src/styles/components/button.css +12 -0
  545. package/src/styles/components/checkbox.css +1 -1
  546. package/src/styles/components/collapsible-card.css +1 -1
  547. package/src/styles/components/confirm-dialog.css +18 -2
  548. package/src/styles/components/empty-state.css +4 -2
  549. package/src/styles/components/file-picker.css +1 -1
  550. package/src/styles/components/icon-button.css +1 -1
  551. package/src/styles/components/loading-spinner.css +9 -12
  552. package/src/styles/components/multi-select.css +6 -1
  553. package/src/styles/components/pill.css +40 -35
  554. package/src/styles/components/plugin-icon.css +9 -0
  555. package/src/styles/components/presence-avatars.css +194 -0
  556. package/src/styles/components/progress-bar.css +2 -0
  557. package/src/styles/components/searchable-select.css +3 -0
  558. package/src/styles/components/smart-group.css +1 -6
  559. package/src/styles/components/textarea.css +1 -1
  560. package/src/styles/components/toggle.css +2 -2
  561. package/src/styles/components/version-conflict.css +122 -0
  562. package/src/styles/components/well-plate.css +0 -7
  563. package/src/styles/index.css +2 -11
  564. package/src/styles/variables.css +1 -527
  565. package/src/types/analysisArtifactTypes.ts +1 -1
  566. package/src/types/auth.ts +0 -10
  567. package/src/types/componentLabTypes.ts +103 -53
  568. package/src/types/componentWorkflowTypes.ts +2 -33
  569. package/src/types/components.ts +148 -114
  570. package/src/types/form-builder.ts +4 -0
  571. package/src/types/generated/platformContext.ts +59 -0
  572. package/src/types/generated-ui.ts +2 -2
  573. package/src/types/index.ts +15 -53
  574. package/src/types/instrument.ts +27 -0
  575. package/src/types/platform.ts +25 -89
  576. package/src/utils/color.ts +1 -12
  577. package/src/utils/dose.ts +335 -0
  578. package/src/utils/experimentStatus.ts +43 -0
  579. package/src/utils/formula.ts +292 -0
  580. package/src/utils/integrationHost.ts +27 -0
  581. package/src/utils/plotlyTemplate.ts +6 -0
  582. package/src/utils/pluginSecrets.ts +23 -23
  583. package/src/utils/presenceAvatars.ts +53 -0
  584. package/src/utils/records.ts +0 -5
  585. package/src/{composables/useTimeUtils.ts → utils/time.ts} +0 -21
  586. package/dist/ResourcePickerListInternal-CFAw4vTZ.js +0 -605
  587. package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +0 -1
  588. package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +0 -1
  589. package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +0 -1
  590. package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +0 -1
  591. package/dist/__tests__/composables/useChemicalFormula.test.d.ts +0 -1
  592. package/dist/__tests__/composables/useEventStream.test.d.ts +0 -1
  593. package/dist/__tests__/composables/useExperimentSave.test.d.ts +0 -1
  594. package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +0 -1
  595. package/dist/__tests__/composables/useGroupAssignment.test.d.ts +0 -1
  596. package/dist/__tests__/composables/useJobsStatusTray.test.d.ts +0 -1
  597. package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +0 -1
  598. package/dist/__tests__/composables/usePlatformContext.test.d.ts +0 -1
  599. package/dist/__tests__/composables/usePluginClient.test.d.ts +0 -1
  600. package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +0 -1
  601. package/dist/__tests__/composables/useRequestSyncState.test.d.ts +0 -1
  602. package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +0 -1
  603. package/dist/__tests__/composables/useTemplateCollection.test.d.ts +0 -1
  604. package/dist/__tests__/composables/useTimeUtils.test.d.ts +0 -1
  605. package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +0 -1
  606. package/dist/__tests__/templates/templates.test.d.ts +0 -1
  607. package/dist/__tests__/templates/templatesDeprecation.test.d.ts +0 -1
  608. package/dist/__tests__/utils/lcms.test.d.ts +0 -1
  609. package/dist/__tests__/utils/rack.test.d.ts +0 -1
  610. package/dist/components/AppAvatarMenu.vue.d.ts +0 -47
  611. package/dist/components/AppTopBar.navigation.d.ts +0 -10
  612. package/dist/components/BaseTextarea.vue.d.ts +0 -31
  613. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +0 -112
  614. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +0 -86
  615. package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +0 -80
  616. package/dist/components/BioTemplateRenderer.vue.d.ts +0 -30
  617. package/dist/components/ControlWorkspaceView.vue.d.ts +0 -138
  618. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +0 -140
  619. package/dist/components/ExperimentDataViewer.vue.d.ts +0 -54
  620. package/dist/components/ExperimentTimeline.vue.d.ts +0 -70
  621. package/dist/components/FitPanel.vue.d.ts +0 -56
  622. package/dist/components/GroupAssigner.vue.d.ts +0 -26
  623. package/dist/components/IconButton.vue.d.ts +0 -30
  624. package/dist/components/MobileSupportGate.vue.d.ts +0 -32
  625. package/dist/components/ReagentEditor.vue.d.ts +0 -31
  626. package/dist/components/ReagentList.presentation.d.ts +0 -17
  627. package/dist/components/ReagentList.vue.d.ts +0 -58
  628. package/dist/components/SampleLegend.vue.d.ts +0 -33
  629. package/dist/components/SmartGroupModal.vue.d.ts +0 -29
  630. package/dist/components/index.js +0 -5
  631. package/dist/components-BOA5e7kb.js +0 -23137
  632. package/dist/components-BOA5e7kb.js.map +0 -1
  633. package/dist/composables/flattenWorkspaceBindings.d.ts +0 -61
  634. package/dist/composables/index.js +0 -7
  635. package/dist/composables/useBioTemplateComponents.d.ts +0 -34
  636. package/dist/composables/useBioTemplateControls.d.ts +0 -10
  637. package/dist/composables/useBioTemplatePackWorkspace.d.ts +0 -56
  638. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +0 -79
  639. package/dist/composables/useBioTemplateWorkspace.d.ts +0 -39
  640. package/dist/composables/useExperimentSave.d.ts +0 -69
  641. package/dist/composables/useGroupAssignment.d.ts +0 -35
  642. package/dist/composables/useJobsStatusTray.d.ts +0 -87
  643. package/dist/composables/useMobileSupportGate.d.ts +0 -14
  644. package/dist/composables/usePlatformContext.d.ts +0 -218
  645. package/dist/composables/usePresenceHeartbeat.d.ts +0 -49
  646. package/dist/composables/useRuntimeAlignment.d.ts +0 -44
  647. package/dist/composables/useTemplateCollection.d.ts +0 -62
  648. package/dist/composables/workspaceRecipes.d.ts +0 -189
  649. package/dist/composables-izSQH8Ky.js +0 -591
  650. package/dist/composables-izSQH8Ky.js.map +0 -1
  651. package/dist/experiment-D49y_Kro.js +0 -459
  652. package/dist/experiment-D49y_Kro.js.map +0 -1
  653. package/dist/experiment-utils-DTANyVKV.js.map +0 -1
  654. package/dist/install.js.map +0 -1
  655. package/dist/lcms.d.ts +0 -38
  656. package/dist/settings-BG6v13Zq.js +0 -341
  657. package/dist/settings-BG6v13Zq.js.map +0 -1
  658. package/dist/tailwind.preset.d.ts +0 -63
  659. package/dist/tailwind.preset.js +0 -71
  660. package/dist/tailwind.preset.js.map +0 -1
  661. package/dist/templates/adapters.d.ts +0 -19
  662. package/dist/templates/assayLookups.d.ts +0 -3
  663. package/dist/templates/assayMatrixAdapters.d.ts +0 -13
  664. package/dist/templates/assayMatrixBuilder.d.ts +0 -3
  665. package/dist/templates/assayNormalizers.d.ts +0 -4
  666. package/dist/templates/builderIdUtils.d.ts +0 -4
  667. package/dist/templates/builderPresetControls.d.ts +0 -11
  668. package/dist/templates/builderReadUtils.d.ts +0 -8
  669. package/dist/templates/builders.d.ts +0 -26
  670. package/dist/templates/calibrationCurveAdapters.d.ts +0 -7
  671. package/dist/templates/calibrationCurveBuilder.d.ts +0 -3
  672. package/dist/templates/calibrationNormalizers.d.ts +0 -5
  673. package/dist/templates/catalog.d.ts +0 -192
  674. package/dist/templates/componentBindingCatalog.d.ts +0 -25
  675. package/dist/templates/componentBindingHelpers.d.ts +0 -17
  676. package/dist/templates/componentBindings.d.ts +0 -97
  677. package/dist/templates/componentDoseResponseProps.d.ts +0 -3
  678. package/dist/templates/componentGenericProps.d.ts +0 -8
  679. package/dist/templates/componentPlateHelpers.d.ts +0 -11
  680. package/dist/templates/componentPlateMapProps.d.ts +0 -3
  681. package/dist/templates/componentPropsFactory.d.ts +0 -3
  682. package/dist/templates/componentQpcrPlateProps.d.ts +0 -3
  683. package/dist/templates/componentTargetResolvers.d.ts +0 -5
  684. package/dist/templates/componentTemplateProps.d.ts +0 -3
  685. package/dist/templates/controlSchemaClone.d.ts +0 -4
  686. package/dist/templates/controlSchemaConstants.d.ts +0 -10
  687. package/dist/templates/controlSchemaMerge.d.ts +0 -3
  688. package/dist/templates/controlSchemaTargets.d.ts +0 -17
  689. package/dist/templates/controlSchemaTypes.d.ts +0 -4
  690. package/dist/templates/controlSchemas.d.ts +0 -34
  691. package/dist/templates/defaultBioTemplateBuilder.d.ts +0 -3
  692. package/dist/templates/doseResponseAdapters.d.ts +0 -6
  693. package/dist/templates/doseResponseBuilder.d.ts +0 -3
  694. package/dist/templates/elisaAssayCollectionBuilder.d.ts +0 -3
  695. package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +0 -3
  696. package/dist/templates/flowCytometryPanelBuilder.d.ts +0 -3
  697. package/dist/templates/flowNormalizers.d.ts +0 -8
  698. package/dist/templates/flowPanelAdapters.d.ts +0 -7
  699. package/dist/templates/index.d.ts +0 -15
  700. package/dist/templates/index.js +0 -2
  701. package/dist/templates/instrumentRunAdapterHelpers.d.ts +0 -8
  702. package/dist/templates/instrumentRunAdapters.d.ts +0 -19
  703. package/dist/templates/instrumentRunBuilder.d.ts +0 -3
  704. package/dist/templates/lcmsBatchCollectionBuilder.d.ts +0 -3
  705. package/dist/templates/lookup.d.ts +0 -4
  706. package/dist/templates/packs.d.ts +0 -21
  707. package/dist/templates/plateMapAdapters.d.ts +0 -5
  708. package/dist/templates/plateMapBuilder.d.ts +0 -3
  709. package/dist/templates/presetControlSchemas.d.ts +0 -534
  710. package/dist/templates/presets.d.ts +0 -106
  711. package/dist/templates/protocolAdapters.d.ts +0 -9
  712. package/dist/templates/protocolNormalizers.d.ts +0 -6
  713. package/dist/templates/protocolStepsBuilder.d.ts +0 -3
  714. package/dist/templates/qpcrAdapters.d.ts +0 -9
  715. package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +0 -3
  716. package/dist/templates/qpcrPlateBuilder.d.ts +0 -3
  717. package/dist/templates/reagentAdapters.d.ts +0 -9
  718. package/dist/templates/reagentListBuilder.d.ts +0 -3
  719. package/dist/templates/runNormalizers.d.ts +0 -10
  720. package/dist/templates/sampleNormalizers.d.ts +0 -4
  721. package/dist/templates/samplePrepAdapters.d.ts +0 -7
  722. package/dist/templates/samplePrepBuilder.d.ts +0 -3
  723. package/dist/templates/sampleSheetAdapters.d.ts +0 -9
  724. package/dist/templates/sampleSheetBuilder.d.ts +0 -3
  725. package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +0 -3
  726. package/dist/templates/targetedMetabolomicsHelpers.d.ts +0 -5
  727. package/dist/templates/templateAdapterTypes.d.ts +0 -48
  728. package/dist/templates/templateControlSchemas.d.ts +0 -400
  729. package/dist/templates/templateCreateOptions.d.ts +0 -165
  730. package/dist/templates/templateEnvelopes.d.ts +0 -17
  731. package/dist/templates/templatePackCollectionBuilder.d.ts +0 -3
  732. package/dist/templates/templatePresetCollectionBuilder.d.ts +0 -20
  733. package/dist/templates/templateQpcrTypes.d.ts +0 -42
  734. package/dist/templates/templateValidators.d.ts +0 -25
  735. package/dist/templates/timeCourseAdapters.d.ts +0 -9
  736. package/dist/templates/timeCourseBuilder.d.ts +0 -3
  737. package/dist/templates/types.d.ts +0 -304
  738. package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +0 -3
  739. package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +0 -3
  740. package/dist/templates-B2DB0MCM.js +0 -12304
  741. package/dist/templates-B2DB0MCM.js.map +0 -1
  742. package/dist/utils/rack.d.ts +0 -63
  743. package/dist/validation-C_eH_vIg.js +0 -7999
  744. package/dist/validation-C_eH_vIg.js.map +0 -1
  745. package/src/__tests__/components/AppAvatarMenu.test.ts +0 -186
  746. package/src/__tests__/components/AppTopBar.navigation.test.ts +0 -68
  747. package/src/__tests__/components/AppTopBarPresence.test.ts +0 -47
  748. package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +0 -159
  749. package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +0 -192
  750. package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -307
  751. package/src/__tests__/components/BioTemplateRenderer.test.ts +0 -96
  752. package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -1100
  753. package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -183
  754. package/src/__tests__/components/ExperimentTimeline.test.ts +0 -108
  755. package/src/__tests__/components/FitPanel.test.ts +0 -96
  756. package/src/__tests__/components/GroupAssigner.test.ts +0 -101
  757. package/src/__tests__/components/MobileSupportGate.test.ts +0 -120
  758. package/src/__tests__/components/ReagentList.presentation.test.ts +0 -73
  759. package/src/__tests__/components/ReagentList.test.ts +0 -167
  760. package/src/__tests__/components/SampleLegend.test.ts +0 -18
  761. package/src/__tests__/components/SmartGroupModal.test.ts +0 -69
  762. package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +0 -58
  763. package/src/__tests__/components/iconButtonIconSizing.test.ts +0 -18
  764. package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +0 -125
  765. package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +0 -199
  766. package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +0 -104
  767. package/src/__tests__/composables/useExperimentSave.test.ts +0 -542
  768. package/src/__tests__/composables/useGroupAssignment.test.ts +0 -73
  769. package/src/__tests__/composables/useMobileSupportGate.test.ts +0 -74
  770. package/src/__tests__/composables/usePlatformContext.test.ts +0 -148
  771. package/src/__tests__/composables/usePresenceHeartbeat.test.ts +0 -164
  772. package/src/__tests__/composables/useRuntimeAlignment.test.ts +0 -145
  773. package/src/__tests__/composables/useTemplateCollection.test.ts +0 -147
  774. package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -53
  775. package/src/__tests__/fixtures/templates/dose-response.json +0 -81
  776. package/src/__tests__/fixtures/templates/plate-map.json +0 -54
  777. package/src/__tests__/fixtures/templates/qpcr-plate.json +0 -96
  778. package/src/__tests__/fixtures/templates/sample-sheet.json +0 -71
  779. package/src/__tests__/templates/templates.test.ts +0 -1235
  780. package/src/__tests__/templates/templatesDeprecation.test.ts +0 -78
  781. package/src/__tests__/utils/lcms.test.ts +0 -73
  782. package/src/__tests__/utils/rack.test.ts +0 -120
  783. package/src/components/AppAvatarMenu.story.vue +0 -155
  784. package/src/components/AppAvatarMenu.vue +0 -154
  785. package/src/components/AppTopBar.navigation.ts +0 -60
  786. package/src/components/AutoGroupModal.story.vue +0 -458
  787. package/src/components/BaseTextarea.vue +0 -58
  788. package/src/components/BioTemplateExperimentWorkspaceView.story.vue +0 -123
  789. package/src/components/BioTemplateExperimentWorkspaceView.vue +0 -339
  790. package/src/components/BioTemplatePackWorkspaceView.story.vue +0 -107
  791. package/src/components/BioTemplatePackWorkspaceView.vue +0 -180
  792. package/src/components/BioTemplatePresetWorkspaceView.story.vue +0 -163
  793. package/src/components/BioTemplatePresetWorkspaceView.vue +0 -403
  794. package/src/components/BioTemplateRenderer.story.vue +0 -57
  795. package/src/components/BioTemplateRenderer.vue +0 -64
  796. package/src/components/ControlWorkspaceView.story.vue +0 -347
  797. package/src/components/ControlWorkspaceView.vue +0 -370
  798. package/src/components/DoseDesignWorkspaceView.story.vue +0 -77
  799. package/src/components/DoseDesignWorkspaceView.vue +0 -243
  800. package/src/components/ExperimentDataViewer.story.vue +0 -177
  801. package/src/components/ExperimentDataViewer.vue +0 -313
  802. package/src/components/ExperimentTimeline.story.vue +0 -208
  803. package/src/components/ExperimentTimeline.vue +0 -383
  804. package/src/components/FitPanel.story.vue +0 -191
  805. package/src/components/FitPanel.vue +0 -168
  806. package/src/components/FormActions.story.vue +0 -96
  807. package/src/components/GroupAssigner.story.vue +0 -83
  808. package/src/components/GroupAssigner.vue +0 -319
  809. package/src/components/IconButton.story.vue +0 -140
  810. package/src/components/IconButton.vue +0 -69
  811. package/src/components/MobileSupportGate.story.vue +0 -52
  812. package/src/components/MobileSupportGate.vue +0 -111
  813. package/src/components/ReagentEditor.story.vue +0 -153
  814. package/src/components/ReagentEditor.vue +0 -414
  815. package/src/components/ReagentList.presentation.ts +0 -106
  816. package/src/components/ReagentList.story.vue +0 -155
  817. package/src/components/ReagentList.vue +0 -438
  818. package/src/components/SampleLegend.story.vue +0 -91
  819. package/src/components/SampleLegend.vue +0 -121
  820. package/src/components/SmartGroupModal.story.vue +0 -61
  821. package/src/components/SmartGroupModal.vue +0 -61
  822. package/src/components/StatusIndicator.story.vue +0 -99
  823. package/src/components/StatusIndicator.vue +0 -36
  824. package/src/components/UnitInput.story.vue +0 -194
  825. package/src/composables/flattenWorkspaceBindings.ts +0 -104
  826. package/src/composables/useBioTemplateComponents.ts +0 -117
  827. package/src/composables/useBioTemplateControls.ts +0 -45
  828. package/src/composables/useBioTemplatePackWorkspace.ts +0 -201
  829. package/src/composables/useBioTemplatePresetWorkspace.ts +0 -329
  830. package/src/composables/useBioTemplateWorkspace.ts +0 -120
  831. package/src/composables/useChemicalFormula.ts +0 -301
  832. package/src/composables/useDoseCalculator.ts +0 -370
  833. package/src/composables/useExperimentSave.ts +0 -348
  834. package/src/composables/useGroupAssignment.ts +0 -152
  835. package/src/composables/useJobsStatusTray.ts +0 -493
  836. package/src/composables/useMobileSupportGate.ts +0 -80
  837. package/src/composables/usePlatformContext.ts +0 -299
  838. package/src/composables/usePresenceHeartbeat.ts +0 -201
  839. package/src/composables/useRuntimeAlignment.ts +0 -184
  840. package/src/composables/useTemplateCollection.ts +0 -233
  841. package/src/composables/workspaceRecipes.ts +0 -268
  842. package/src/lcms.ts +0 -119
  843. package/src/styles/components/app-avatar-menu.css +0 -121
  844. package/src/styles/components/experiment-data-viewer.css +0 -138
  845. package/src/styles/components/experiment-timeline.css +0 -572
  846. package/src/styles/components/fit-panel.css +0 -153
  847. package/src/styles/components/group-assigner.css +0 -198
  848. package/src/styles/components/mobile-support-gate.css +0 -117
  849. package/src/styles/components/reagent-editor.css +0 -501
  850. package/src/styles/components/reagent-list.css +0 -408
  851. package/src/styles/components/sample-legend.css +0 -212
  852. package/src/styles/components/status-indicator.css +0 -66
  853. package/src/styles/components/theme-toggle.css +0 -6
  854. package/src/tailwind.preset.ts +0 -66
  855. package/src/templates/adapters.ts +0 -141
  856. package/src/templates/assayLookups.ts +0 -33
  857. package/src/templates/assayMatrixAdapters.ts +0 -85
  858. package/src/templates/assayMatrixBuilder.ts +0 -60
  859. package/src/templates/assayNormalizers.ts +0 -34
  860. package/src/templates/builderIdUtils.ts +0 -20
  861. package/src/templates/builderPresetControls.ts +0 -166
  862. package/src/templates/builderReadUtils.ts +0 -55
  863. package/src/templates/builders.ts +0 -122
  864. package/src/templates/calibrationCurveAdapters.ts +0 -62
  865. package/src/templates/calibrationCurveBuilder.ts +0 -100
  866. package/src/templates/calibrationNormalizers.ts +0 -60
  867. package/src/templates/catalog.ts +0 -249
  868. package/src/templates/componentBindingCatalog.ts +0 -90
  869. package/src/templates/componentBindingHelpers.ts +0 -93
  870. package/src/templates/componentBindings.ts +0 -279
  871. package/src/templates/componentDoseResponseProps.ts +0 -41
  872. package/src/templates/componentGenericProps.ts +0 -77
  873. package/src/templates/componentPlateHelpers.ts +0 -52
  874. package/src/templates/componentPlateMapProps.ts +0 -34
  875. package/src/templates/componentPropsFactory.ts +0 -21
  876. package/src/templates/componentQpcrPlateProps.ts +0 -27
  877. package/src/templates/componentTargetResolvers.ts +0 -67
  878. package/src/templates/componentTemplateProps.ts +0 -78
  879. package/src/templates/controlSchemaClone.ts +0 -32
  880. package/src/templates/controlSchemaConstants.ts +0 -11
  881. package/src/templates/controlSchemaMerge.ts +0 -40
  882. package/src/templates/controlSchemaTargets.ts +0 -85
  883. package/src/templates/controlSchemaTypes.ts +0 -20
  884. package/src/templates/controlSchemas.ts +0 -113
  885. package/src/templates/defaultBioTemplateBuilder.ts +0 -125
  886. package/src/templates/doseResponseAdapters.ts +0 -36
  887. package/src/templates/doseResponseBuilder.ts +0 -45
  888. package/src/templates/elisaAssayCollectionBuilder.ts +0 -63
  889. package/src/templates/flowCytometryAssayCollectionBuilder.ts +0 -42
  890. package/src/templates/flowCytometryPanelBuilder.ts +0 -54
  891. package/src/templates/flowNormalizers.ts +0 -58
  892. package/src/templates/flowPanelAdapters.ts +0 -61
  893. package/src/templates/index.ts +0 -330
  894. package/src/templates/instrumentRunAdapterHelpers.ts +0 -94
  895. package/src/templates/instrumentRunAdapters.ts +0 -174
  896. package/src/templates/instrumentRunBuilder.ts +0 -98
  897. package/src/templates/lcmsBatchCollectionBuilder.ts +0 -39
  898. package/src/templates/lookup.ts +0 -18
  899. package/src/templates/packs.ts +0 -166
  900. package/src/templates/plateMapAdapters.ts +0 -38
  901. package/src/templates/plateMapBuilder.ts +0 -44
  902. package/src/templates/presetControlSchemas.ts +0 -258
  903. package/src/templates/presets.ts +0 -183
  904. package/src/templates/protocolAdapters.ts +0 -73
  905. package/src/templates/protocolNormalizers.ts +0 -37
  906. package/src/templates/protocolStepsBuilder.ts +0 -37
  907. package/src/templates/qpcrAdapters.ts +0 -108
  908. package/src/templates/qpcrExpressionCollectionBuilder.ts +0 -34
  909. package/src/templates/qpcrPlateBuilder.ts +0 -97
  910. package/src/templates/reagentAdapters.ts +0 -81
  911. package/src/templates/reagentListBuilder.ts +0 -31
  912. package/src/templates/runNormalizers.ts +0 -63
  913. package/src/templates/sampleNormalizers.ts +0 -58
  914. package/src/templates/samplePrepAdapters.ts +0 -66
  915. package/src/templates/samplePrepBuilder.ts +0 -52
  916. package/src/templates/sampleSheetAdapters.ts +0 -79
  917. package/src/templates/sampleSheetBuilder.ts +0 -24
  918. package/src/templates/targetedMetabolomicsCollectionBuilder.ts +0 -80
  919. package/src/templates/targetedMetabolomicsHelpers.ts +0 -102
  920. package/src/templates/templateAdapterTypes.ts +0 -58
  921. package/src/templates/templateControlSchemas.ts +0 -320
  922. package/src/templates/templateCreateOptions.ts +0 -208
  923. package/src/templates/templateEnvelopes.ts +0 -145
  924. package/src/templates/templatePackCollectionBuilder.ts +0 -24
  925. package/src/templates/templatePresetCollectionBuilder.ts +0 -141
  926. package/src/templates/templateQpcrTypes.ts +0 -48
  927. package/src/templates/templateValidators.ts +0 -426
  928. package/src/templates/timeCourseAdapters.ts +0 -77
  929. package/src/templates/timeCourseBuilder.ts +0 -65
  930. package/src/templates/types.ts +0 -493
  931. package/src/templates/wellPlateScreenCollectionBuilder.ts +0 -37
  932. package/src/templates/westernBlotAssayCollectionBuilder.ts +0 -69
  933. package/src/utils/rack.ts +0 -225
  934. /package/dist/__tests__/components/{AppAvatarMenu.test.d.ts → BaseButton.test.d.ts} +0 -0
  935. /package/dist/__tests__/components/{AppTopBar.navigation.test.d.ts → BaseCheckbox.switch.test.d.ts} +0 -0
  936. /package/dist/__tests__/components/{AppTopBarPresence.test.d.ts → BaseSelect.multiple.test.d.ts} +0 -0
  937. /package/dist/__tests__/components/{BaseToggle.test.d.ts → BaseSelect.searchable.test.d.ts} +0 -0
  938. /package/dist/__tests__/components/{BioTemplateExperimentWorkspaceView.test.d.ts → ConfirmDialog.test.d.ts} +0 -0
  939. /package/dist/__tests__/components/{BioTemplatePackWorkspaceView.test.d.ts → DatePicker.datetime.test.d.ts} +0 -0
  940. /package/dist/__tests__/components/{BioTemplatePresetWorkspaceView.test.d.ts → DatePicker.time.test.d.ts} +0 -0
  941. /package/dist/__tests__/components/{BioTemplateRenderer.test.d.ts → FormSchemaInternal.test.d.ts} +0 -0
  942. /package/dist/__tests__/components/{ControlWorkspaceView.test.d.ts → InstrumentStatusPanels.test.d.ts} +0 -0
  943. /package/dist/__tests__/components/{DateTimePicker.test.d.ts → NumberInput.units.test.d.ts} +0 -0
  944. /package/dist/__tests__/components/{DoseDesignWorkspaceView.test.d.ts → PresenceAvatars.test.d.ts} +0 -0
  945. /package/dist/__tests__/components/{ExperimentTimeline.test.d.ts → StaleFormBanner.test.d.ts} +0 -0
  946. /package/dist/__tests__/components/{FitPanel.test.d.ts → deprecationTags.test.d.ts} +0 -0
  947. /package/dist/__tests__/{components/GroupAssigner.test.d.ts → composables/createClient.test.d.ts} +0 -0
  948. /package/dist/__tests__/{components/MobileSupportGate.test.d.ts → composables/eventStream.test.d.ts} +0 -0
  949. /package/dist/__tests__/{components/MultiSelect.test.d.ts → composables/useArtifacts.test.d.ts} +0 -0
  950. /package/dist/__tests__/{components/ReagentList.presentation.test.d.ts → composables/useExperiment.test.d.ts} +0 -0
  951. /package/dist/__tests__/{components/ReagentList.test.d.ts → composables/useJobCenter.test.d.ts} +0 -0
  952. /package/dist/__tests__/{components/SampleLegend.test.d.ts → composables/useJobsEndpoint.test.d.ts} +0 -0
  953. /package/dist/__tests__/{components/SearchableSelect.test.d.ts → composables/usePlatform.test.d.ts} +0 -0
  954. /package/dist/__tests__/{components/SmartGroupModal.test.d.ts → composables/usePresence.test.d.ts} +0 -0
  955. /package/dist/__tests__/{components/TimePicker.test.d.ts → composables/useRealtime.test.d.ts} +0 -0
  956. /package/dist/__tests__/{components/UnitInput.test.d.ts → composables/useRequest.test.d.ts} +0 -0
  957. /package/dist/__tests__/{components/WellPlate.sampleTypeIndicator.test.d.ts → composables/useVersionedSave.test.d.ts} +0 -0
  958. /package/dist/__tests__/{components/iconButtonIconSizing.test.d.ts → utils/formula.test.d.ts} +0 -0
  959. /package/dist/__tests__/{composables/useAnalysisArtifacts.test.d.ts → utils/time.test.d.ts} +0 -0
  960. /package/dist/components/{FormActions.vue.d.ts → internal/FormActionsInternal.vue.d.ts} +0 -0
  961. /package/dist/{composables → components/internal}/autoGroup/colors.d.ts +0 -0
  962. /package/dist/{composables → components/internal}/autoGroup/index.d.ts +0 -0
  963. /package/dist/{composables → components/internal}/autoGroup/tokenize.d.ts +0 -0
  964. /package/src/{composables → components/internal}/autoGroup/colors.ts +0 -0
  965. /package/src/{composables → components/internal}/autoGroup/tokenize.ts +0 -0
  966. /package/src/{composables → components/internal}/autoGroup/vocab.json +0 -0
package/dist/index.js CHANGED
@@ -1,286 +1,74 @@
1
- import { $ as PlateEditor_default, A as SampleLegend_default, At as AppToastContainer_default, B as StatusIndicator_default, C as ChemicalFormula_default, Ct as AppAvatarMenu_default, D as ReagentEditor_default, Dt as ActionMenu_default, E as SampleHierarchyTree_default, Et as ThemeToggle_default, F as SettingsModal_default, Ft as Calendar_default, G as ControlWorkspaceView_default, H as LayoutResizeHandle_default, I as AdductText_default, It as BasePill_default, J as SampleSelector_default, K as ComponentBindingRenderer_default, L as Breadcrumb_default, Lt as SegmentedControl_default, M as BioTemplatePackWorkspaceView_default, Mt as FormField_default, N as BioTemplateExperimentWorkspaceView_default, Nt as DataFrame_default, O as SmartGroupModal_default, Ot as IconButton_default, P as BioTemplateRenderer_default, Pt as LoadingSpinner_default, Q as ReagentList_default, R as Avatar_default, Rt as BaseTabs_default, S as sequenceSamplesRemaining, St as AppTopBar_default, T as ProtocolStepEditor_default, Tt as CollapsibleCard_default, U as AppContainer_default, V as Divider_default, W as DoseDesignWorkspaceView_default, X as SmartGroupManual_default, Y as AutoGroupModal_default, Z as SmartGroupFieldRecipe_default, _ as estimateSequenceFinishDate, _t as AppLayout_default, a as ArtifactSaveDialog_default, at as GeneratedPluginView_default, b as formatSequenceRemaining, bt as FormActions_default, c as SectionCard_default, ct as GeneratedPlotlyResult_default, d as ExperimentCodeBadge_default, dt as ChartContainer_default, et as ConfirmDialog_default, f as ExperimentDataViewer_default, ft as generatedJobDefaults, g as SequenceProgressBar_default, gt as MobileSupportGate_default, h as InstrumentStateBadge_default, ht as PluginWorkspaceView_default, i as ExperimentPopover_default, it as DoseCalculator_default, j as BioTemplatePresetWorkspaceView_default, jt as AlertBox_default, k as GroupAssigner_default, kt as RuntimeUpdateNotice_default, l as ResourceCard_default, lt as PlotlyChart_default, m as AuditTrail_default, mt as normalizeGeneratedJobInput, n as FilePicker_default, nt as sampleTypeMarker, o as ArtifactSelectorModal_default, ot as JobsStatusTray_default, p as BatchProgressList_default, pt as generatedJobFormSchema, q as ScheduleCalendar_default, r as FitPanel_default, rt as ExperimentTimeline_default, s as ExperimentSelectorModal_default, st as GeneratedResultRenderer_default, tt as WellPlate_default, u as TimeRangeInput_default, ut as mintPlotlyTemplate, v as estimateSequenceRemainingSeconds, vt as AppSidebar_default, w as ScientificNumber_default, wt as PluginIcon_default, x as sequenceProgressPercent, xt as StepWizard_default, y as formatSequenceEta, yt as FormBuilder_default, z as ProgressBar_default, zt as SearchableSelect_default } from "./components-BOA5e7kb.js";
2
- import { a as tryUseSettingsStore, c as mintApiErrorFromResponse, i as tableDensityToSize, n as colorPalettes, o as useSettingsStore, r as paletteCssVariables, s as MintApiError, t as PALETTE_CSS_VARIABLES } from "./settings-BG6v13Zq.js";
3
- import { a as SORT_OPTIONS, c as formatExperimentDate, d as resolveExperimentCode, f as BaseModal_default, h as BaseButton_default, i as EXPERIMENT_STATUS_VARIANT_MAP, l as formatExperimentStatus, m as useEventListener, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, p as useFocusTrap, r as EXPERIMENT_STATUS_OPTIONS, s as experimentIdFromRoute, t as DATE_PRESET_OPTIONS, u as getExperimentStatusVariant } from "./experiment-utils-DTANyVKV.js";
4
- import { i as BaseSelect_default, n as Skeleton_default, o as BaseInput_default, r as EmptyState_default } from "./ResourcePickerListInternal-CFAw4vTZ.js";
5
- import { $ as toTimeCourseDataFrame, $n as FormulaInput_default, $r as snapToSlot, $t as getBioTemplatePackInfo, A as createSamplePrepTemplate, An as getControlDefaults, Ar as isPluginSecretLocked, At as toCalibrationCurveDataFrame, B as toBioTemplateComponentProps, Bn as getDefaultControlView, Br as addMinutes, Bt as validateInstrumentRunData, C as createFlowCytometryPanelTemplate, Cr as FileUploader_default, Ct as toInstrumentRunRows, D as createTimeCourseTemplate, Dn as hslToHex, Dr as PLUGIN_SECRET_FORMAT_REF, Dt as toFlowPanelDataFrame, E as createProtocolStepsTemplate, En as hexToHsl, Er as PLUGIN_SECRET_FORMAT_KEY, Et as toFlowPanelColumns, Fn as controlsToSettingsSchema, Fr as pluginSecretState, Ft as toAssayMatrixSampleOptions, G as toTemplateDataFrame, Gn as getFieldRegistryEntry, Gr as formatDuration, Gt as validateSamplePrepData, H as toBioTemplateComponentPropsById, Hr as durationMinutes, Ht as validateProtocolStepsData, I as listBioTemplateComponentBindings, In as controlsToSidebarPanels, Ir as setPluginSecret, It as validateAssayMatrixData, J as toDoseConditions, Jn as UnitInput_default, Jr as fromMinutes, Jt as bioTemplatePresets, K as toWellMapArray, Kn as getTypeDefault, Kr as formatTime, Kt as validateSampleSheetData, L as toBioTemplateComponentBindings, Ln as controlsToTopBarSettingsConfig, Lr as usesPluginSecretReferences, Lt as validateCalibrationCurveData, M as createPlateMapTemplate, Mn as controlsToFormSchema, Mr as keepPluginSecret, Mt as toAssayMatrixColumns, N as bioTemplatePresetControlValuesToOptions, Nn as controlsToSectionFormSchema, Nr as pluginSecretId, Nt as toAssayMatrixDataFrame, O as createCalibrationCurveTemplate, On as defineControlComponentBindings, Or as PLUGIN_SECRET_REF_KEY, Ot as toFlowPanelRows, P as getBioTemplateComponentBindings, Pn as controlsToSectionFormSchemas, Pr as pluginSecretLabel, Pt as toAssayMatrixRows, Q as toTimeCourseColumns, Qn as useSequenceUtils, Qr as rangesOverlap, Qt as bioTemplatePacks, R as toBioTemplateComponentBindingsById, Rn as controlsToViewIds, Rr as TagsInput_default, Rt as validateDoseResponseData, S as createInstrumentRunTemplate, St as toInstrumentRunDataFrame, T as createAssayMatrixTemplate, Tn as deriveShade, Tr as SecretInput_default, Tt as toInstrumentRunSteps, U as toBioTemplateComponentSnippets, Ur as findAvailableSlots, Ut as validateQpcrPlateData, Vr as compareTime, Vt as validatePlateMapData, W as toBioTemplateComponentUsage, Wr as findNearestTimeSlotIndex, Wt as validateReagentListData, X as toPlateMapEditorState, Xn as MoleculeInput_default, Xr as isTimeInRange, Xt as listBioTemplatePresets, Y as toDoseLayoutState, Yn as useConcentrationUnits, Yr as generateTimeSlots, Yt as getBioTemplatePresetInfo, Z as toWellPlateWells, Zn as SequenceInput_default, Zr as parseTime, Zt as searchBioTemplatePresets, _ as createElisaAssayCollection, _r as resolveJobCapabilities, _t as toProtocolColumns, a as getBioTemplateControlDefaults, ai as useListSelection, an as searchBioTemplateCatalog, at as toSampleRows, b as createQpcrExpressionCollection, bt as toProtocolSteps, c as listBioTemplatePresetControlSchemas, ci as BaseRadioGroup_default, cn as createTemplateCollection, cr as resolveCurrentPluginId, ct as toSamplePrepRows, d as createBioTemplatePresetCollectionFromControls, di as Tooltip_default, dn as ensureTemplateFromCollection, dr as usePluginJobs, dt as toReagentListItems, ei as toMinutes, en as listBioTemplatePacks, er as ATOMIC_WEIGHTS, et as toTimeCourseRows, f as createWellPlateScreenCollection, fi as BaseTextarea_default, fn as extractTemplateCollection, fr as isActiveJobStatus, ft as toReagentRows, g as createFlowCytometryAssayCollection, gr as normalizeJobState, gt as toQpcrWellPlateWells, h as createWesternBlotAssayCollection, hr as normalizeJobPercent, ht as toQpcrRows, i as createBioTemplateControlToolkit, ii as MultiSelect_default, in as listBioTemplateCatalog, it as toSampleOptions, j as createSampleSheetTemplate, jn as useControlSchema, jr as isPluginSecretRef, jt as toCalibrationCurveRows, k as createDoseResponseTemplate, kn as defineControls, kr as clearPluginSecret, kt as toCalibrationCurveColumns, l as requireBioTemplateControlSchema, li as BaseToggle_default, ln as createTemplateEnvelope, lr as createGeneratedAnalysisTransport, lt as toReagentColumns, m as createDefaultBioTemplate, mr as jobStatusLabel, mt as toQpcrDataFrame, n as bioTemplateControlsToSectionFormSchemas, ni as DatePicker_default, nn as bioTemplateCatalog, nr as GeneratedPathInput_default, nt as toSampleColumns, o as getBioTemplateControlSchema, oi as useSelectionLimit, on as TEMPLATE_COLLECTION_KEY, ot as toSamplePrepColumns, p as createBioTemplatePackCollection, pn as getTemplateData, pr as isTerminalJobStatus, pt as toQpcrColumns, q as racksFromPlateState, qn as ConcentrationInput_default, qr as formatTimeSlot, qt as validateTimeCourseData, r as bioTemplateControlsToSidebarPanels, rn as getBioTemplateInfo, rt as toSampleDataFrame, s as listBioTemplateControlSchemas, si as BaseSlider_default, sn as assertTemplateEnvelope, st as toSamplePrepDataFrame, t as bioTemplateControlsToFormSchema, ti as useTimeUtils, tn as searchBioTemplatePacks, tr as useChemicalFormula, tt as toTimeCourseSteps, u as createBioTemplatePresetCollection, ui as BaseCheckbox_default, un as ensureTemplateEnvelope, ur as useGeneratedAnalysis, ut as toReagentDataFrame, v as createTargetedMetabolomicsCollection, vt as toProtocolDataFrame, w as createReagentListTemplate, wr as NumberInput_default, wt as toInstrumentRunScheduleEvents, x as createQpcrPlateTemplate, xr as useMenuKeyboard, xt as toInstrumentRunColumns, y as createLcmsBatchCollection, yr as DateTimePicker_default, yt as toProtocolRows, z as toBioTemplateComponentImports, zn as controlsToViewItems, zr as TimePicker_default, zt as validateFlowCytometryPanelData } from "./templates-B2DB0MCM.js";
6
- import { $ as downloadBlob, A as parseDelimitedText, At as useAppExperiment, Bt as useTextSearch, C as useExperimentSamples, Ct as defineControlModel, Dt as controlValuesToComponentProps, E as useSampleGroups, Et as controlValuesToComponentBindingsById, F as useAutoGroup, Ft as usePlatformContext, G as reorderList, Ht as useSortedItems, I as extractSampleNamesFromDesignData, It as useTheme, J as useDoseCalculator, K as useListReorder, L as extractSampleOptionsFromDesignData, Lt as useToast, M as useFileImport, Mt as useRuntimeAlignment, N as validateImportFile, Nt as getPresenceClientId, P as extractSamplesFromDesignData, Pt as usePresenceHeartbeat, Q as createPluginClient, R as unwrapExperimentDesignData, Rt as candidateMatchesSearch, S as useScheduleDrag, St as useControlWorkspace, T as useExpansionSet, Tt as controlValuesToComponentBindings, U as useRackEditor, Ut as useRovingFocus, Vt as compareSortValues, W as REORDER_ANNOUNCER_STYLE, X as useJobsStatusTray, Y as combinePluginJobSources, Z as usePluginJobCenter, _ as toBioTemplateComponentPropsByComponent, _t as defineDoseCalculatorControlProps, a as useExperimentSelector, at as usePluginClient, b as useTemplateCollection, bt as defineWellPlateDoseComponentBindings, c as DEFAULT_PRESETS, ct as buildPluginEndpointUrl, d as useReagentSeries, dt as usePluginWorkspace, et as downloadPluginEndpoint, f as useGroupAssignment, ft as DEFAULT_MOBILE_VIEWPORT_QUERY, g as getBioTemplateComponentProps, gt as useForm, h as useBioTemplateWorkspace, ht as evaluateCondition, i as useAnalysisArtifacts, it as useCurrentExperiment, j as readFileAsText, jt as getInjectedFrontendRevision, k as detectDelimiter, kt as APP_EXPERIMENT_KEY, l as DEFAULT_UNITS, lt as resolvePluginBaseUrl, m as useBioTemplatePackWorkspace, mt as useFormBuilder, nt as pluginFormDataFromPayload, o as useDebouncedWatch, ot as usePluginEventStream, p as useBioTemplatePresetWorkspace, pt as useMobileSupportGate, q as useReorderAnnouncer, rt as uploadPluginEndpoint, s as useProtocolTemplates, st as usePluginSettings, tt as getPluginPageSelectorItems, u as generateDilutionSeries, ut as useRequestSyncState, v as useBioTemplateComponents, vt as defineDoseDesignControlModel, w as useExperimentData, x as useExperimentSave, xt as defineWellPlateDoseControlProps, y as useBioTemplateControls, yt as defineWellPlateControlProps, z as DEFAULT_COLORS, zt as normalizeSearchQuery } from "./validation-C_eH_vIg.js";
7
- import { ADMIN_PANEL_PERMISSIONS, ADMIN_ROLE, canAccessAdmin, canAccessByPolicy, canAccessPlugin, getAccessAudience, getRoleInfo, getUserPermissions, hasAllPermissions, hasAnyPermission, isAdminRole, isAdminUser } from "./permissions.js";
8
- import { a as useApi, o as useAuthStore, r as AuthenticationRequiredError, t as useExperimentStore } from "./experiment-D49y_Kro.js";
9
- import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "./analysisArtifactTypes-Cy3D0Ipg.js";
10
- import { MINTSdk } from "./install.js";
11
- import { a as buildAnalysisArtifactTargetQuery, c as resizedLeadingPanelWidth, d as useManualLayoutResize, f as resolvePluginFrontendBase, i as encodePlatformPickerPath, l as resizedTrailingPanelWidth, n as createFilePickerAdapter, o as parseAnalysisArtifactTarget, r as decodePlatformPickerPath, s as useFileBrowser, t as usePlatformFilePickerAdapter, u as resizedVerticalSplitPercent } from "./composables-izSQH8Ky.js";
1
+ import { i as BaseButton_default, t as BaseModal_default } from "./BaseModal-DfRIuVoj.js";
2
+ import { c as colorPalettes, d as tryUseSettingsStore, f as useSettingsStore, l as paletteCssVariables, m as mintApiErrorFromResponse, p as MintApiError, s as PALETTE_CSS_VARIABLES, t as useExperimentStore, u as tableDensityToSize } from "./experiment-43OJtH7R.js";
3
+ import { C as formatExperimentDate, F as useSelectionLimit, L as BaseInput_default, M as Tooltip_default, N as BaseSelect_default, O as FormField_default, P as useListSelection, T as FileUploader_default, _ as APP_EXPERIMENT_KEY, b as SORT_OPTIONS, c as isTerminalJobStatus, d as normalizeJobState, f as resolveJobCapabilities, i as getInjectedPlatformContext, j as BaseCheckbox_default, k as EmptyState_default, l as jobStatusLabel, o as resolveCurrentPluginId, r as Skeleton_default, s as isActiveJobStatus, u as normalizeJobPercent, v as useAppExperiment, w as resolveExperimentCode, x as datePresetToISO, y as DATE_PRESET_OPTIONS } from "./records-BzTcxekG.js";
4
+ import { B as defineDataFrame, C as useSequenceUtils, G as useSortedItems, H as definePluginWorkspaceView, K as BaseSlider_default, N as NumberInput_default, P as DatePicker_default, W as compareSortValues, _ as getFieldRegistryEntry, b as useConcentrationUnits, o as usePlatform, q as BaseRadioGroup_default, v as getTypeDefault } from "./useListReorder-CcbEYxX-.js";
5
+ import { D as BaseTabs_default, E as BasePill_default, a as useReagentSeries, b as ProgressBar_default, h as useProtocolTemplates, i as generateDilutionSeries, n as DEFAULT_PRESETS, r as DEFAULT_UNITS, v as useSampleGroups, y as SectionCard_default } from "./lab-DLwRl_Ql.js";
6
+ import { t as SegmentedControl_default } from "./SegmentedControl-DERBN-Xd.js";
7
+ import { a as AppContainer_default, i as Divider_default, n as FormBuilder_default, o as Calendar_default, r as Breadcrumb_default, t as MINTSdk } from "./install-DAID6c2-.js";
8
+ import { i as LoadingSpinner_default, n as AlertBox_default, t as ActionMenu_default } from "./ActionMenu-CScINahU.js";
9
+ import { C as hexToHsl, D as DataFrame_default, E as sampleTypeMarker, S as deriveShade, _ as mintPlotlyTemplate, r as useScheduleDrag, s as downloadBlob, t as useRackEditor, w as hslToHex } from "./useRackEditor-BD5NIo5s.js";
10
+ import { c as generatedJobFormSchema, d as PluginWorkspaceView_default, f as useControlWorkspace, l as normalizeGeneratedJobInput, m as useToast, p as AppToastContainer_default, s as generatedJobDefaults, u as Avatar_default } from "./runtime-D6gVat6r.js";
11
+ import { A as CollapsibleCard_default, M as useTheme, _ as usePluginWorkspace, b as getControlDefaults, d as useForm, j as ThemeToggle_default, k as getDefaultControlView, l as useFormBuilder, p as PluginIcon_default, u as evaluateCondition, v as defineControlComponentBindings, x as useControlSchema, y as defineControls } from "./AppSidebar-BmiiPfz9.js";
12
+ import { r as useAuthStore } from "./auth-SliLnFre.js";
13
+ import { t as defineControlModel } from "./controlSchemaModel-CP5-_nAj.js";
14
+ import { t as ConfirmDialog_default } from "./ConfirmDialog-CJ7hqYUP.js";
15
+ import { t as SettingsModal_default } from "./SettingsModal-CSLE31yg.js";
16
+ import { t as useRequest } from "./useRequest-D5JDfsgZ.js";
17
+ import { r as useExperimentSelector } from "./ExperimentSelectorModal-D-9z7cNx.js";
18
+ import { i as useFileBrowser, n as buildAnalysisArtifactTargetQuery, r as parseAnalysisArtifactTarget } from "./data-C2PwI_dn.js";
19
+ import { a as useFileImport, c as extractSampleNamesFromDesignData, i as readFileAsText, l as extractSampleOptionsFromDesignData, n as detectDelimiter, o as validateImportFile, t as useExperimentSamples, u as unwrapExperimentDesignData } from "./useExperimentSamples-CxcnxZ8h.js";
20
+ import { t as useExpansionSet } from "./useExpansionSet-CvoNMZJi.js";
21
+ import { a as useManualLayoutResize, i as resizedVerticalSplitPercent, n as resizedLeadingPanelWidth, r as resizedTrailingPanelWidth } from "./shell-5ju97nOS.js";
12
22
  import "./stores/index.js";
13
- //#region src/lcms.ts
14
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
15
- var DEFAULT_LCMS_SEQUENCE_COLUMNS = [
16
- {
17
- key: "index",
18
- label: "#"
19
- },
20
- {
21
- key: "sample_type",
22
- label: "Type"
23
- },
24
- {
25
- key: "file_name",
26
- label: "File Name"
27
- },
28
- {
29
- key: "position",
30
- label: "Position"
31
- },
32
- {
33
- key: "instrument_method",
34
- label: "Method"
35
- },
36
- {
37
- key: "injection_volume",
38
- label: "Inj Vol",
39
- align: "right"
40
- }
41
- ];
42
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
43
- function extractLcmsCommonPrefix(fileNames) {
44
- if (fileNames.length === 0) return "";
45
- const prefixes = fileNames.map((fileName) => fileName.replace(/_\d{3}$/, "")).map((fileName) => {
46
- const match = fileName.match(/^(.+?)_(POS|NEG)_/i);
47
- return match ? match[1] : fileName.replace(/_[^_]+$/, "");
48
- });
49
- let common = prefixes[0] ?? "";
50
- for (const prefix of prefixes.slice(1)) while (common && !prefix.startsWith(common)) {
51
- const index = common.lastIndexOf("_");
52
- common = index > 0 ? common.substring(0, index) : common.substring(0, common.length - 1);
53
- }
54
- return common;
55
- }
56
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
57
- function extractLcmsSampleName(fileName, prefix = "") {
58
- let name = fileName.replace(/_\d{3}$/, "");
59
- if (prefix && name.startsWith(prefix)) name = name.substring(prefix.length).replace(/^_+/, "");
60
- name = name.replace(/^(POS|NEG)_/i, "");
61
- return name || fileName;
62
- }
63
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
64
- function lcmsWellIdFromPosition(position) {
65
- return position.includes(":") ? position.split(":").pop() ?? position : position;
66
- }
67
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
68
- function inferLcmsPlateTypeFromWellIds(wellIds) {
69
- let maxCol = 0;
70
- let maxRow = 0;
71
- for (const wellId of wellIds) {
72
- const match = wellId.match(/^([A-Z])(\d+)$/i);
73
- if (!match) continue;
74
- maxRow = Math.max(maxRow, match[1].toUpperCase().charCodeAt(0) - 64);
75
- maxCol = Math.max(maxCol, Number(match[2]));
76
- }
77
- if (maxCol === 0 && maxRow === 0) return null;
78
- return maxCol <= 9 && maxRow <= 6 ? "54vial" : "96well";
79
- }
80
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
81
- function reconstructLcmsPlateCellsFromSequenceItems(items) {
82
- const unknownItems = items.filter((item) => item.sample_type === "Unknown");
83
- if (unknownItems.length === 0) return null;
84
- const prefix = extractLcmsCommonPrefix(unknownItems.map((item) => item.file_name));
85
- const seen = /* @__PURE__ */ new Set();
86
- const cells = [];
87
- for (const item of unknownItems) {
88
- const wellId = lcmsWellIdFromPosition(item.position);
89
- if (seen.has(wellId)) continue;
90
- seen.add(wellId);
91
- const match = wellId.match(/^([A-Z])(\d+)$/i);
92
- if (!match) continue;
93
- cells.push({
94
- row: match[1].toUpperCase(),
95
- column: Number(match[2]),
96
- sample_name: extractLcmsSampleName(item.file_name, prefix)
97
- });
98
- }
99
- if (cells.length === 0) return null;
100
- const plateType = inferLcmsPlateTypeFromWellIds(cells.map((cell) => `${cell.row}${cell.column}`));
101
- if (!plateType) return null;
23
+ import { computed } from "vue";
24
+ //#region src/composables/useExperiment.ts
25
+ /**
26
+ * Read the experiment the plugin page works on.
27
+ *
28
+ * The platform selects the experiment and keeps it in step with the URL; this
29
+ * composable only reads it. Watch `id` to respond to a change. In standalone
30
+ * mode no experiment is selected and `id` stays `null`.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const experiment = useExperiment()
35
+ * watch(experiment.id, (id) => { if (id !== null) void load(id) }, { immediate: true })
36
+ * ```
37
+ */
38
+ function useExperiment() {
39
+ const store = useExperimentStore();
102
40
  return {
103
- cells,
104
- plateType
41
+ id: computed(() => store.currentId),
42
+ current: computed(() => store.current),
43
+ status: computed(() => {
44
+ if (store.currentId === null) return "idle";
45
+ if (store.isResolving) return "loading";
46
+ return store.error ? "error" : "ready";
47
+ }),
48
+ error: computed(() => store.error),
49
+ refresh: store.refresh
105
50
  };
106
51
  }
107
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
108
- function basenameFromWindowsPath(path) {
109
- if (!path) return "";
110
- return path.split(/[\\/]/).pop() ?? path;
111
- }
112
52
  //#endregion
113
- //#region src/utils/rack.ts
114
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
115
- var LCMS_DEFAULT_CONTROL_POSITIONS = {
116
- "96well": {
117
- blank: {
118
- row: "H",
119
- column: 12
120
- },
121
- qc: {
122
- row: "H",
123
- column: 11
124
- },
125
- iqc: {
126
- row: "H",
127
- column: 10
128
- }
129
- },
130
- "54vial": {
131
- blank: {
132
- row: "F",
133
- column: 9
134
- },
135
- qc: {
136
- row: "F",
137
- column: 8
138
- },
139
- iqc: {
140
- row: "F",
141
- column: 7
142
- }
143
- }
144
- };
145
- var SLOT_ORDER = [
146
- "R",
147
- "G",
148
- "B",
149
- "Y"
150
- ];
151
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
152
- function lcmsPlateTypeToRackFormat(plateType) {
153
- return plateType === "96well" ? 96 : 54;
154
- }
155
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
156
- function rackFormatToLcmsPlateType(format) {
157
- if (format === 96) return "96well";
158
- if (format === 54) return "54vial";
159
- throw new Error(`LCMS plate cells support only 54-vial racks and 96-well plates; received format ${format}.`);
160
- }
161
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
162
- function lcmsWellId(row, column) {
163
- return `${row.toUpperCase()}${column}`;
164
- }
165
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
166
- function parseLcmsWellId(wellId) {
167
- const match = /^([A-Za-z]+)(\d+)$/.exec(wellId.trim());
168
- if (!match) throw new Error(`Invalid well id "${wellId}". Expected a row letter followed by a column number, e.g. A1.`);
169
- return {
170
- row: match[1].toUpperCase(),
171
- column: Number(match[2])
172
- };
173
- }
174
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
175
- function lcmsPlateCellsToRack(cells, options = {}) {
176
- const format = options.format ?? (options.plateType ? lcmsPlateTypeToRackFormat(options.plateType) : inferRackFormat(cells));
177
- const slot = options.slot ?? cells.find((cell) => cell.slot)?.slot ?? "R";
178
- const injectionVolume = options.injectionVolume ?? inferInjectionVolume(cells) ?? 5;
179
- return {
180
- id: options.rackId ?? `rack-${slot}`,
181
- name: options.rackName ?? `Rack ${slot}`,
182
- format,
183
- slot,
184
- injectionVolume,
185
- wells: Object.fromEntries(cells.filter((cell) => cell.sample_name.trim()).map((cell) => {
186
- const wellId = lcmsWellId(cell.row, cell.column);
187
- return [wellId, {
188
- id: wellId,
189
- row: rowIndex(cell.row),
190
- col: cell.column - 1,
191
- state: "filled",
192
- sampleType: cell.sample_type ?? "sample",
193
- metadata: {
194
- label: cell.sample_name.trim(),
195
- injectionVolume: cell.injection_volume ?? injectionVolume,
196
- injectionCount: cell.injection_count ?? 1,
197
- customMethod: cell.custom_method ?? null
198
- }
199
- }];
200
- }))
201
- };
202
- }
203
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
204
- function lcmsPlateCellsToRacks(cells, options = {}) {
205
- const bySlot = /* @__PURE__ */ new Map();
206
- const defaultSlot = options.defaultSlot ?? "R";
207
- for (const cell of cells) {
208
- const slot = cell.slot ?? defaultSlot;
209
- const slotCells = bySlot.get(slot) ?? [];
210
- slotCells.push(cell);
211
- bySlot.set(slot, slotCells);
212
- }
213
- return Array.from(bySlot.entries()).sort(([a], [b]) => SLOT_ORDER.indexOf(a) - SLOT_ORDER.indexOf(b)).map(([slot, slotCells], index) => lcmsPlateCellsToRack(slotCells, {
214
- ...options,
215
- slot,
216
- rackId: options.rackId?.(slot, index) ?? `rack-${slot}`,
217
- rackName: options.rackName?.(slot, index) ?? `Rack ${slot}`
218
- }));
219
- }
220
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
221
- function rackToLcmsPlateCells(rack) {
222
- return Object.entries(rack.wells).map(([wellId, well]) => wellToLcmsPlateCell(rack, wellId, well)).filter((cell) => cell !== null).sort(comparePlateCells);
223
- }
224
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
225
- function racksToLcmsPlateCells(racks) {
226
- return racks.flatMap(rackToLcmsPlateCells);
227
- }
228
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
229
- function getLcmsDefaultControlWellId(plateType, sampleType) {
230
- const position = LCMS_DEFAULT_CONTROL_POSITIONS[plateType][sampleType];
231
- return lcmsWellId(position.row, position.column);
232
- }
233
- /** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */
234
- function createLcmsControlWellEditData(sampleType, options = {}) {
235
- const plateType = options.plateType ?? "54vial";
236
- return {
237
- wellId: options.wellId ?? getLcmsDefaultControlWellId(plateType, sampleType),
238
- label: sampleType === "blank" ? "Blank" : sampleType.toUpperCase(),
239
- sampleType,
240
- injectionVolume: options.injectionVolume ?? 5,
241
- injectionCount: 1,
242
- customMethod: ""
243
- };
244
- }
245
- function wellToLcmsPlateCell(rack, wellId, well) {
246
- const metadata = well.metadata ?? {};
247
- const label = getString(metadata.label);
248
- if (!label) return null;
249
- const parsed = parseLcmsWellId(well.id ?? wellId);
250
- return {
251
- row: parsed.row,
252
- column: parsed.column,
253
- sample_name: label,
254
- sample_type: well.sampleType ?? null,
255
- injection_volume: getNumber(metadata.injectionVolume) ?? rack.injectionVolume,
256
- injection_count: getNumber(metadata.injectionCount) ?? 1,
257
- custom_method: getNullableString(metadata.customMethod),
258
- slot: rack.slot
259
- };
260
- }
261
- function inferRackFormat(cells) {
262
- return cells.some((cell) => rowIndex(cell.row) > 5 || cell.column > 9) ? 96 : 54;
263
- }
264
- function inferInjectionVolume(cells) {
265
- return cells.find((cell) => typeof cell.injection_volume === "number")?.injection_volume ?? void 0;
266
- }
267
- function rowIndex(row) {
268
- return row.toUpperCase().charCodeAt(0) - 65;
269
- }
270
- function getString(value) {
271
- return typeof value === "string" && value.trim() ? value.trim() : void 0;
272
- }
273
- function getNullableString(value) {
274
- return typeof value === "string" && value.trim() ? value.trim() : null;
275
- }
276
- function getNumber(value) {
277
- return typeof value === "number" && Number.isFinite(value) ? value : void 0;
278
- }
279
- function comparePlateCells(a, b) {
280
- const rowDiff = rowIndex(a.row) - rowIndex(b.row);
281
- return rowDiff === 0 ? a.column - b.column : rowDiff;
53
+ //#region src/composables/pluginFrontendBase.ts
54
+ function normalizePluginRoutePrefix(prefix) {
55
+ const candidate = prefix?.trim();
56
+ if (!candidate) return void 0;
57
+ const path = candidate.split("/").filter(Boolean).join("/");
58
+ return path ? `/${path}/` : "/";
59
+ }
60
+ /**
61
+ * Resolve the Vue Router base for a plugin frontend.
62
+ *
63
+ * Integrated plugins use the platform-injected mount prefix. Standalone and
64
+ * development builds retain the caller's Vite base unchanged.
65
+ */
66
+ function resolvePluginFrontendBase(fallbackBase = "/") {
67
+ const context = getInjectedPlatformContext();
68
+ if (!context?.isIntegrated) return fallbackBase;
69
+ return normalizePluginRoutePrefix(context.plugin?.route_prefix) ?? fallbackBase;
282
70
  }
283
71
  //#endregion
284
- export { ADMIN_PANEL_PERMISSIONS, ADMIN_ROLE, ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, ActionMenu_default as ActionMenu, AdductText_default as AdductText, AlertBox_default as AlertBox, AppAvatarMenu_default as AppAvatarMenu, AppContainer_default as AppContainer, AppLayout_default as AppLayout, AppSidebar_default as AppSidebar, AppToastContainer_default as AppToastContainer, AppTopBar_default as AppTopBar, ArtifactSaveDialog_default as ArtifactSaveDialog, ArtifactSelectorModal_default as ArtifactSelectorModal, AuditTrail_default as AuditTrail, AuthenticationRequiredError, AutoGroupModal_default as AutoGroupModal, Avatar_default as Avatar, BaseButton_default as BaseButton, BaseCheckbox_default as BaseCheckbox, BaseInput_default as BaseInput, BaseModal_default as BaseModal, BasePill_default as BasePill, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSlider_default as BaseSlider, BaseTabs_default as BaseTabs, BaseTextarea_default as BaseTextarea, BaseToggle_default as BaseToggle, BatchProgressList_default as BatchProgressList, BioTemplateExperimentWorkspaceView_default as BioTemplateExperimentWorkspaceView, BioTemplatePackWorkspaceView_default as BioTemplatePackWorkspaceView, BioTemplatePresetWorkspaceView_default as BioTemplatePresetWorkspaceView, BioTemplateRenderer_default as BioTemplateRenderer, Breadcrumb_default as Breadcrumb, Calendar_default as Calendar, ChartContainer_default as ChartContainer, ChemicalFormula_default as ChemicalFormula, CollapsibleCard_default as CollapsibleCard, ComponentBindingRenderer_default as ComponentBindingRenderer, ConcentrationInput_default as ConcentrationInput, ConfirmDialog_default as ConfirmDialog, ControlWorkspaceView_default as ControlWorkspaceView, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_LCMS_SEQUENCE_COLUMNS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, DataFrame_default as DataFrame, DatePicker_default as DatePicker, DateTimePicker_default as DateTimePicker, Divider_default as Divider, DoseCalculator_default as DoseCalculator, DoseDesignWorkspaceView_default as DoseDesignWorkspaceView, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, EmptyState_default as EmptyState, ExperimentCodeBadge_default as ExperimentCodeBadge, ExperimentDataViewer_default as ExperimentDataViewer, ExperimentPopover_default as ExperimentPopover, ExperimentSelectorModal_default as ExperimentSelectorModal, ExperimentTimeline_default as ExperimentTimeline, FilePicker_default as FilePicker, FileUploader_default as FileUploader, FitPanel_default as FitPanel, FormActions_default as FormActions, FormBuilder_default as FormBuilder, FormField_default as FormField, FormulaInput_default as FormulaInput, GeneratedPathInput_default as GeneratedPathInput, GeneratedPlotlyResult_default as GeneratedPlotlyResult, GeneratedPluginView_default as GeneratedPluginView, GeneratedResultRenderer_default as GeneratedResultRenderer, GroupAssigner_default as GroupAssigner, IconButton_default as IconButton, InstrumentStateBadge_default as InstrumentStateBadge, JobsStatusTray_default as JobsStatusTray, LCMS_DEFAULT_CONTROL_POSITIONS, LayoutResizeHandle_default as LayoutResizeHandle, LoadingSpinner_default as LoadingSpinner, MINTSdk, MINTSdk as default, MintApiError, MobileSupportGate_default as MobileSupportGate, MoleculeInput_default as MoleculeInput, MultiSelect_default as MultiSelect, NumberInput_default as NumberInput, PALETTE_CSS_VARIABLES, PLUGIN_SECRET_FORMAT_KEY, PLUGIN_SECRET_FORMAT_REF, PLUGIN_SECRET_REF_KEY, PlateEditor_default as PlateEditor, PlotlyChart_default as PlotlyChart, PluginIcon_default as PluginIcon, PluginWorkspaceView_default as PluginWorkspaceView, ProgressBar_default as ProgressBar, ProtocolStepEditor_default as ProtocolStepEditor, REORDER_ANNOUNCER_STYLE, ReagentEditor_default as ReagentEditor, ReagentList_default as ReagentList, ResourceCard_default as ResourceCard, RuntimeUpdateNotice_default as RuntimeUpdateNotice, SORT_OPTIONS, SampleHierarchyTree_default as SampleHierarchyTree, SampleLegend_default as SampleLegend, SampleSelector_default as SampleSelector, ScheduleCalendar_default as ScheduleCalendar, ScientificNumber_default as ScientificNumber, SearchableSelect_default as SearchableSelect, SecretInput_default as SecretInput, SectionCard_default as SectionCard, SegmentedControl_default as SegmentedControl, SequenceInput_default as SequenceInput, SequenceProgressBar_default as SequenceProgressBar, SettingsModal_default as SettingsModal, Skeleton_default as Skeleton, SmartGroupFieldRecipe_default as SmartGroupFieldRecipe, SmartGroupManual_default as SmartGroupManual, SmartGroupModal_default as SmartGroupModal, StatusIndicator_default as StatusIndicator, StepWizard_default as StepWizard, TEMPLATE_COLLECTION_KEY, TagsInput_default as TagsInput, ThemeToggle_default as ThemeToggle, TimePicker_default as TimePicker, TimeRangeInput_default as TimeRangeInput, Tooltip_default as Tooltip, UnitInput_default as UnitInput, WellPlate_default as WellPlate, addMinutes, assertTemplateEnvelope, basenameFromWindowsPath, bioTemplateCatalog, bioTemplateControlsToFormSchema, bioTemplateControlsToSectionFormSchemas, bioTemplateControlsToSidebarPanels, bioTemplatePacks, bioTemplatePresetControlValuesToOptions, bioTemplatePresets, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, canAccessAdmin, canAccessByPolicy, canAccessPlugin, candidateMatchesSearch, clearPluginSecret, colorPalettes, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, createAssayMatrixTemplate, createBioTemplateControlToolkit, createBioTemplatePackCollection, createBioTemplatePresetCollection, createBioTemplatePresetCollectionFromControls, createCalibrationCurveTemplate, createDefaultBioTemplate, createDoseResponseTemplate, createElisaAssayCollection, createFilePickerAdapter, createFlowCytometryAssayCollection, createFlowCytometryPanelTemplate, createGeneratedAnalysisTransport, createInstrumentRunTemplate, createLcmsBatchCollection, createLcmsControlWellEditData, createPlateMapTemplate, createPluginClient, createProtocolStepsTemplate, createQpcrExpressionCollection, createQpcrPlateTemplate, createReagentListTemplate, createSamplePrepTemplate, createSampleSheetTemplate, createTargetedMetabolomicsCollection, createTemplateCollection, createTemplateEnvelope, createTimeCourseTemplate, createWellPlateScreenCollection, createWesternBlotAssayCollection, datePresetToISO, decodePlatformPickerPath, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, deriveShade, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, encodePlatformPickerPath, ensureTemplateEnvelope, ensureTemplateFromCollection, estimateSequenceFinishDate, estimateSequenceRemainingSeconds, evaluateCondition, experimentIdFromRoute, extractLcmsCommonPrefix, extractLcmsSampleName, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, extractTemplateCollection, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatSequenceEta, formatSequenceRemaining, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, generatedJobDefaults, generatedJobFormSchema, getAccessAudience, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlDefaults, getBioTemplateControlSchema, getBioTemplateInfo, getBioTemplatePackInfo, getBioTemplatePresetInfo, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getInjectedFrontendRevision, getLcmsDefaultControlWellId, getPluginPageSelectorItems, getPresenceClientId, getRoleInfo, getTemplateData, getTypeDefault, getUserPermissions, hasAllPermissions, hasAnyPermission, hexToHsl, hslToHex, inferLcmsPlateTypeFromWellIds, isActiveJobStatus, isAdminRole, isAdminUser, isPluginSecretLocked, isPluginSecretRef, isTerminalJobStatus, isTimeInRange, jobStatusLabel, keepPluginSecret, lcmsPlateCellsToRack, lcmsPlateCellsToRacks, lcmsPlateTypeToRackFormat, lcmsWellId, lcmsWellIdFromPosition, listBioTemplateCatalog, listBioTemplateComponentBindings, listBioTemplateControlSchemas, listBioTemplatePacks, listBioTemplatePresetControlSchemas, listBioTemplatePresets, mintApiErrorFromResponse, mintPlotlyTemplate, normalizeGeneratedJobInput, normalizeJobPercent, normalizeJobState, normalizeSearchQuery, paletteCssVariables, parseAnalysisArtifactTarget, parseDelimitedText, parseLcmsWellId, parseTime, pluginFormDataFromPayload, pluginSecretId, pluginSecretLabel, pluginSecretState, rackFormatToLcmsPlateType, rackToLcmsPlateCells, racksFromPlateState, racksToLcmsPlateCells, rangesOverlap, readFileAsText, reconstructLcmsPlateCellsFromSequenceItems, reorderList, requireBioTemplateControlSchema, resizedLeadingPanelWidth, resizedTrailingPanelWidth, resizedVerticalSplitPercent, resolveCurrentPluginId, resolveExperimentCode, resolveJobCapabilities, resolvePluginBaseUrl, resolvePluginFrontendBase, sampleTypeMarker, searchBioTemplateCatalog, searchBioTemplatePacks, searchBioTemplatePresets, sequenceProgressPercent, sequenceSamplesRemaining, setPluginSecret, snapToSlot, tableDensityToSize, toAssayMatrixColumns, toAssayMatrixDataFrame, toAssayMatrixRows, toAssayMatrixSampleOptions, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentImports, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toBioTemplateComponentSnippets, toBioTemplateComponentUsage, toCalibrationCurveColumns, toCalibrationCurveDataFrame, toCalibrationCurveRows, toDoseConditions, toDoseLayoutState, toFlowPanelColumns, toFlowPanelDataFrame, toFlowPanelRows, toInstrumentRunColumns, toInstrumentRunDataFrame, toInstrumentRunRows, toInstrumentRunScheduleEvents, toInstrumentRunSteps, toMinutes, toPlateMapEditorState, toProtocolColumns, toProtocolDataFrame, toProtocolRows, toProtocolSteps, toQpcrColumns, toQpcrDataFrame, toQpcrRows, toQpcrWellPlateWells, toReagentColumns, toReagentDataFrame, toReagentListItems, toReagentRows, toSampleColumns, toSampleDataFrame, toSampleOptions, toSamplePrepColumns, toSamplePrepDataFrame, toSamplePrepRows, toSampleRows, toTemplateDataFrame, toTimeCourseColumns, toTimeCourseDataFrame, toTimeCourseRows, toTimeCourseSteps, toWellMapArray, toWellPlateWells, tryUseSettingsStore, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAuthStore, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useExperimentStore, useFileBrowser, useFileImport, useFocusTrap, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListReorder, useListSelection, useManualLayoutResize, useMenuKeyboard, useMobileSupportGate, usePlatformContext, usePlatformFilePickerAdapter, usePluginClient, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePluginWorkspace, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useReorderAnnouncer, useRequestSyncState, useRovingFocus, useRuntimeAlignment, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSettingsStore, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, usesPluginSecretReferences, validateAssayMatrixData, validateCalibrationCurveData, validateDoseResponseData, validateFlowCytometryPanelData, validateImportFile, validateInstrumentRunData, validatePlateMapData, validateProtocolStepsData, validateQpcrPlateData, validateReagentListData, validateSamplePrepData, validateSampleSheetData, validateTimeCourseData };
72
+ export { APP_EXPERIMENT_KEY, ActionMenu_default as ActionMenu, AlertBox_default as AlertBox, AppContainer_default as AppContainer, AppToastContainer_default as AppToastContainer, Avatar_default as Avatar, BaseButton_default as BaseButton, BaseCheckbox_default as BaseCheckbox, BaseInput_default as BaseInput, BaseModal_default as BaseModal, BasePill_default as BasePill, BaseRadioGroup_default as BaseRadioGroup, BaseSelect_default as BaseSelect, BaseSlider_default as BaseSlider, BaseTabs_default as BaseTabs, Breadcrumb_default as Breadcrumb, Calendar_default as Calendar, CollapsibleCard_default as CollapsibleCard, ConfirmDialog_default as ConfirmDialog, DATE_PRESET_OPTIONS, DEFAULT_PRESETS, DEFAULT_UNITS, DataFrame_default as DataFrame, DatePicker_default as DatePicker, Divider_default as Divider, EmptyState_default as EmptyState, FileUploader_default as FileUploader, FormBuilder_default as FormBuilder, FormField_default as FormField, LoadingSpinner_default as LoadingSpinner, MINTSdk, MINTSdk as default, MintApiError, NumberInput_default as NumberInput, PALETTE_CSS_VARIABLES, PluginIcon_default as PluginIcon, PluginWorkspaceView_default as PluginWorkspaceView, ProgressBar_default as ProgressBar, SORT_OPTIONS, SectionCard_default as SectionCard, SegmentedControl_default as SegmentedControl, SettingsModal_default as SettingsModal, Skeleton_default as Skeleton, ThemeToggle_default as ThemeToggle, Tooltip_default as Tooltip, buildAnalysisArtifactTargetQuery, colorPalettes, compareSortValues, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDataFrame, definePluginWorkspaceView, deriveShade, detectDelimiter, downloadBlob, evaluateCondition, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, formatExperimentDate, generateDilutionSeries, generatedJobDefaults, generatedJobFormSchema, getControlDefaults, getDefaultControlView, getFieldRegistryEntry, getTypeDefault, hexToHsl, hslToHex, isActiveJobStatus, isTerminalJobStatus, jobStatusLabel, mintApiErrorFromResponse, mintPlotlyTemplate, normalizeGeneratedJobInput, normalizeJobPercent, normalizeJobState, paletteCssVariables, parseAnalysisArtifactTarget, readFileAsText, resizedLeadingPanelWidth, resizedTrailingPanelWidth, resizedVerticalSplitPercent, resolveCurrentPluginId, resolveExperimentCode, resolveJobCapabilities, resolvePluginFrontendBase, sampleTypeMarker, tableDensityToSize, tryUseSettingsStore, unwrapExperimentDesignData, useAppExperiment, useAuthStore, useConcentrationUnits, useControlSchema, useControlWorkspace, useExpansionSet, useExperiment, useExperimentSamples, useExperimentSelector, useExperimentStore, useFileBrowser, useFileImport, useForm, useFormBuilder, useListSelection, useManualLayoutResize, usePlatform, usePluginWorkspace, useProtocolTemplates, useRackEditor, useReagentSeries, useRequest, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSettingsStore, useSortedItems, useTheme, useToast, validateImportFile };
285
73
 
286
74
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/lcms.ts","../src/utils/rack.ts"],"sourcesContent":["import type { LcmsPlateCell, LcmsPlateType } from './utils/rack'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsPolarity = 'POS' | 'NEG' | 'BOTH'\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsContainerType = 'VIAL' | 'PLATE'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsSequenceItem {\n sample_type: string\n file_name: string\n sample_id: string\n path: string\n instrument_method: string\n position: string\n injection_volume: number\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsSequenceTableColumn {\n key: keyof LcmsSequenceItem | 'index' | 'actions'\n label: string\n align?: 'left' | 'right'\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport const DEFAULT_LCMS_SEQUENCE_COLUMNS: LcmsSequenceTableColumn[] = [\n { key: 'index', label: '#' },\n { key: 'sample_type', label: 'Type' },\n { key: 'file_name', label: 'File Name' },\n { key: 'position', label: 'Position' },\n { key: 'instrument_method', label: 'Method' },\n { key: 'injection_volume', label: 'Inj Vol', align: 'right' },\n]\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function extractLcmsCommonPrefix(fileNames: readonly string[]): string {\n if (fileNames.length === 0) return ''\n const stripped = fileNames.map(fileName => fileName.replace(/_\\d{3}$/, ''))\n const prefixes = stripped.map((fileName) => {\n const match = fileName.match(/^(.+?)_(POS|NEG)_/i)\n return match ? match[1] : fileName.replace(/_[^_]+$/, '')\n })\n\n let common = prefixes[0] ?? ''\n for (const prefix of prefixes.slice(1)) {\n while (common && !prefix.startsWith(common)) {\n const index = common.lastIndexOf('_')\n common = index > 0 ? common.substring(0, index) : common.substring(0, common.length - 1)\n }\n }\n return common\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function extractLcmsSampleName(fileName: string, prefix = ''): string {\n let name = fileName.replace(/_\\d{3}$/, '')\n if (prefix && name.startsWith(prefix)) {\n name = name.substring(prefix.length).replace(/^_+/, '')\n }\n name = name.replace(/^(POS|NEG)_/i, '')\n return name || fileName\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsWellIdFromPosition(position: string): string {\n return position.includes(':') ? position.split(':').pop() ?? position : position\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function inferLcmsPlateTypeFromWellIds(wellIds: readonly string[]): LcmsPlateType | null {\n let maxCol = 0\n let maxRow = 0\n for (const wellId of wellIds) {\n const match = wellId.match(/^([A-Z])(\\d+)$/i)\n if (!match) continue\n maxRow = Math.max(maxRow, match[1].toUpperCase().charCodeAt(0) - 64)\n maxCol = Math.max(maxCol, Number(match[2]))\n }\n if (maxCol === 0 && maxRow === 0) return null\n return maxCol <= 9 && maxRow <= 6 ? '54vial' : '96well'\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function reconstructLcmsPlateCellsFromSequenceItems(\n items: readonly LcmsSequenceItem[],\n): { cells: LcmsPlateCell[]; plateType: LcmsPlateType } | null {\n const unknownItems = items.filter(item => item.sample_type === 'Unknown')\n if (unknownItems.length === 0) return null\n\n const prefix = extractLcmsCommonPrefix(unknownItems.map(item => item.file_name))\n const seen = new Set<string>()\n const cells: LcmsPlateCell[] = []\n\n for (const item of unknownItems) {\n const wellId = lcmsWellIdFromPosition(item.position)\n if (seen.has(wellId)) continue\n seen.add(wellId)\n\n const match = wellId.match(/^([A-Z])(\\d+)$/i)\n if (!match) continue\n cells.push({\n row: match[1].toUpperCase(),\n column: Number(match[2]),\n sample_name: extractLcmsSampleName(item.file_name, prefix),\n })\n }\n\n if (cells.length === 0) return null\n const plateType = inferLcmsPlateTypeFromWellIds(cells.map(cell => `${cell.row}${cell.column}`))\n if (!plateType) return null\n return { cells, plateType }\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function basenameFromWindowsPath(path: string | null | undefined): string {\n if (!path) return ''\n return path.split(/[\\\\/]/).pop() ?? path\n}\n","import type { Rack, SlotPosition, Well, WellEditData, WellPlateFormat } from '../types'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsPlateType = '96well' | '54vial'\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport type LcmsControlSampleType = 'blank' | 'qc' | 'iqc'\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsPlateCell {\n row: string\n column: number\n sample_name: string\n sample_type?: string | null\n injection_volume?: number | null\n injection_count?: number | null\n custom_method?: string | null\n slot?: SlotPosition | null\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsPlateCellsToRackOptions {\n rackId?: string\n rackName?: string\n format?: WellPlateFormat\n plateType?: LcmsPlateType\n slot?: SlotPosition\n injectionVolume?: number\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport interface LcmsPlateCellsToRacksOptions extends Omit<LcmsPlateCellsToRackOptions, 'rackId' | 'rackName' | 'slot'> {\n defaultSlot?: SlotPosition\n rackId?: (slot: SlotPosition, index: number) => string\n rackName?: (slot: SlotPosition, index: number) => string\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport const LCMS_DEFAULT_CONTROL_POSITIONS: Record<LcmsPlateType, Record<LcmsControlSampleType, { row: string; column: number }>> = {\n '96well': {\n blank: { row: 'H', column: 12 },\n qc: { row: 'H', column: 11 },\n iqc: { row: 'H', column: 10 },\n },\n '54vial': {\n blank: { row: 'F', column: 9 },\n qc: { row: 'F', column: 8 },\n iqc: { row: 'F', column: 7 },\n },\n}\n\nconst SLOT_ORDER: SlotPosition[] = ['R', 'G', 'B', 'Y']\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsPlateTypeToRackFormat(plateType: LcmsPlateType): WellPlateFormat {\n return plateType === '96well' ? 96 : 54\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function rackFormatToLcmsPlateType(format: WellPlateFormat): LcmsPlateType {\n if (format === 96) return '96well'\n if (format === 54) return '54vial'\n throw new Error(`LCMS plate cells support only 54-vial racks and 96-well plates; received format ${format}.`)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsWellId(row: string, column: number): string {\n return `${row.toUpperCase()}${column}`\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function parseLcmsWellId(wellId: string): { row: string; column: number } {\n const match = /^([A-Za-z]+)(\\d+)$/.exec(wellId.trim())\n if (!match) {\n throw new Error(`Invalid well id \"${wellId}\". Expected a row letter followed by a column number, e.g. A1.`)\n }\n\n return {\n row: match[1].toUpperCase(),\n column: Number(match[2]),\n }\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsPlateCellsToRack(cells: LcmsPlateCell[], options: LcmsPlateCellsToRackOptions = {}): Rack {\n const format = options.format ?? (options.plateType ? lcmsPlateTypeToRackFormat(options.plateType) : inferRackFormat(cells))\n const slot = options.slot ?? cells.find(cell => cell.slot)?.slot ?? 'R'\n const injectionVolume = options.injectionVolume ?? inferInjectionVolume(cells) ?? 5\n\n return {\n id: options.rackId ?? `rack-${slot}`,\n name: options.rackName ?? `Rack ${slot}`,\n format,\n slot,\n injectionVolume,\n wells: Object.fromEntries(\n cells\n .filter(cell => cell.sample_name.trim())\n .map((cell) => {\n const wellId = lcmsWellId(cell.row, cell.column)\n const well: Partial<Well> = {\n id: wellId,\n row: rowIndex(cell.row),\n col: cell.column - 1,\n state: 'filled',\n sampleType: cell.sample_type ?? 'sample',\n metadata: {\n label: cell.sample_name.trim(),\n injectionVolume: cell.injection_volume ?? injectionVolume,\n injectionCount: cell.injection_count ?? 1,\n customMethod: cell.custom_method ?? null,\n },\n }\n return [wellId, well]\n }),\n ),\n }\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function lcmsPlateCellsToRacks(cells: LcmsPlateCell[], options: LcmsPlateCellsToRacksOptions = {}): Rack[] {\n const bySlot = new Map<SlotPosition, LcmsPlateCell[]>()\n const defaultSlot = options.defaultSlot ?? 'R'\n\n for (const cell of cells) {\n const slot = cell.slot ?? defaultSlot\n const slotCells = bySlot.get(slot) ?? []\n slotCells.push(cell)\n bySlot.set(slot, slotCells)\n }\n\n return Array.from(bySlot.entries())\n .sort(([a], [b]) => SLOT_ORDER.indexOf(a) - SLOT_ORDER.indexOf(b))\n .map(([slot, slotCells], index) => lcmsPlateCellsToRack(slotCells, {\n ...options,\n slot,\n rackId: options.rackId?.(slot, index) ?? `rack-${slot}`,\n rackName: options.rackName?.(slot, index) ?? `Rack ${slot}`,\n }))\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function rackToLcmsPlateCells(rack: Rack): LcmsPlateCell[] {\n return Object.entries(rack.wells)\n .map(([wellId, well]) => wellToLcmsPlateCell(rack, wellId, well))\n .filter((cell): cell is LcmsPlateCell => cell !== null)\n .sort(comparePlateCells)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function racksToLcmsPlateCells(racks: Rack[]): LcmsPlateCell[] {\n return racks.flatMap(rackToLcmsPlateCells)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function getLcmsDefaultControlWellId(plateType: LcmsPlateType, sampleType: LcmsControlSampleType): string {\n const position = LCMS_DEFAULT_CONTROL_POSITIONS[plateType][sampleType]\n return lcmsWellId(position.row, position.column)\n}\n\n/** @deprecated Scheduled for removal in MINT 1.4; no SDK replacement. */\nexport function createLcmsControlWellEditData(\n sampleType: LcmsControlSampleType,\n options: {\n wellId?: string\n plateType?: LcmsPlateType\n injectionVolume?: number\n } = {},\n): WellEditData {\n const plateType = options.plateType ?? '54vial'\n return {\n wellId: options.wellId ?? getLcmsDefaultControlWellId(plateType, sampleType),\n label: sampleType === 'blank' ? 'Blank' : sampleType.toUpperCase(),\n sampleType,\n injectionVolume: options.injectionVolume ?? 5,\n injectionCount: 1,\n customMethod: '',\n }\n}\n\nfunction wellToLcmsPlateCell(rack: Rack, wellId: string, well: Partial<Well>): LcmsPlateCell | null {\n const metadata = well.metadata ?? {}\n const label = getString(metadata.label)\n if (!label) return null\n\n const parsed = parseLcmsWellId(well.id ?? wellId)\n return {\n row: parsed.row,\n column: parsed.column,\n sample_name: label,\n sample_type: well.sampleType ?? null,\n injection_volume: getNumber(metadata.injectionVolume) ?? rack.injectionVolume,\n injection_count: getNumber(metadata.injectionCount) ?? 1,\n custom_method: getNullableString(metadata.customMethod),\n slot: rack.slot,\n }\n}\n\nfunction inferRackFormat(cells: LcmsPlateCell[]): WellPlateFormat {\n return cells.some(cell => rowIndex(cell.row) > 5 || cell.column > 9) ? 96 : 54\n}\n\nfunction inferInjectionVolume(cells: LcmsPlateCell[]): number | undefined {\n return cells.find(cell => typeof cell.injection_volume === 'number')?.injection_volume ?? undefined\n}\n\nfunction rowIndex(row: string): number {\n return row.toUpperCase().charCodeAt(0) - 65\n}\n\nfunction getString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined\n}\n\nfunction getNullableString(value: unknown): string | null {\n return typeof value === 'string' && value.trim() ? value.trim() : null\n}\n\nfunction getNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction comparePlateCells(a: LcmsPlateCell, b: LcmsPlateCell): number {\n const rowDiff = rowIndex(a.row) - rowIndex(b.row)\n return rowDiff === 0 ? a.column - b.column : rowDiff\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/composables/useExperiment.ts","../src/composables/pluginFrontendBase.ts"],"sourcesContent":["import { computed, type ComputedRef } from 'vue'\nimport { useExperimentStore } from '../stores/experiment'\nimport type { ExperimentSummary } from '../types'\n\n/** Load state of the current experiment record. */\nexport type ExperimentLoadStatus = 'idle' | 'loading' | 'ready' | 'error'\n\nexport interface UseExperimentReturn {\n /** Id of the current experiment; `null` when none is selected. */\n id: ComputedRef<number | null>\n /** Record of the current experiment, once the platform returned it. */\n current: ComputedRef<ExperimentSummary | null>\n /** `idle` with no selection, then `loading`, `ready` or `error`. */\n status: ComputedRef<ExperimentLoadStatus>\n /** Message of the last failed load, or `null`. */\n error: ComputedRef<string | null>\n /** Read the current experiment again. The selection does not change. */\n refresh: () => Promise<void>\n}\n\n/**\n * Read the experiment the plugin page works on.\n *\n * The platform selects the experiment and keeps it in step with the URL; this\n * composable only reads it. Watch `id` to respond to a change. In standalone\n * mode no experiment is selected and `id` stays `null`.\n *\n * @example\n * ```typescript\n * const experiment = useExperiment()\n * watch(experiment.id, (id) => { if (id !== null) void load(id) }, { immediate: true })\n * ```\n */\nexport function useExperiment(): UseExperimentReturn {\n const store = useExperimentStore()\n const id = computed(() => store.currentId)\n\n return {\n id,\n current: computed(() => store.current),\n status: computed(() => {\n if (store.currentId === null) return 'idle'\n if (store.isResolving) return 'loading'\n return store.error ? 'error' : 'ready'\n }),\n error: computed(() => store.error),\n refresh: store.refresh,\n }\n}\n","import { getInjectedPlatformContext } from './platformContextHelpers'\n\nfunction normalizePluginRoutePrefix(prefix: string | undefined): string | undefined {\n const candidate = prefix?.trim()\n if (!candidate) return undefined\n\n const path = candidate.split('/').filter(Boolean).join('/')\n return path ? `/${path}/` : '/'\n}\n\n/**\n * Resolve the Vue Router base for a plugin frontend.\n *\n * Integrated plugins use the platform-injected mount prefix. Standalone and\n * development builds retain the caller's Vite base unchanged.\n */\nexport function resolvePluginFrontendBase(fallbackBase: string = '/'): string {\n const context = getInjectedPlatformContext()\n if (!context?.isIntegrated) return fallbackBase\n\n return normalizePluginRoutePrefix(context.plugin?.route_prefix) ?? fallbackBase\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,gBAAqC;CACnD,MAAM,QAAQ,mBAAmB;CAGjC,OAAO;EACL,IAHS,eAAe,MAAM,SAG9B;EACA,SAAS,eAAe,MAAM,OAAO;EACrC,QAAQ,eAAe;GACrB,IAAI,MAAM,cAAc,MAAM,OAAO;GACrC,IAAI,MAAM,aAAa,OAAO;GAC9B,OAAO,MAAM,QAAQ,UAAU;EACjC,CAAC;EACD,OAAO,eAAe,MAAM,KAAK;EACjC,SAAS,MAAM;CACjB;AACF;;;AC9CA,SAAS,2BAA2B,QAAgD;CAClF,MAAM,YAAY,QAAQ,KAAK;CAC/B,IAAI,CAAC,WAAW,OAAO,KAAA;CAEvB,MAAM,OAAO,UAAU,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAC1D,OAAO,OAAO,IAAI,KAAK,KAAK;AAC9B;;;;;;;AAQA,SAAgB,0BAA0B,eAAuB,KAAa;CAC5E,MAAM,UAAU,2BAA2B;CAC3C,IAAI,CAAC,SAAS,cAAc,OAAO;CAEnC,OAAO,2BAA2B,QAAQ,QAAQ,YAAY,KAAK;AACrE"}