@morscherlab/mint-sdk 1.0.0-rc.2 → 1.0.0-rc.5

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 (443) hide show
  1. package/dist/__tests__/components/AppTopBar.navigation.test.d.ts +1 -0
  2. package/dist/__tests__/components/DoseCalculatorVolumeField.test.d.ts +1 -0
  3. package/dist/__tests__/components/PlateMapEditorToolbarInternal.test.d.ts +1 -0
  4. package/dist/__tests__/components/PluginWorkspaceView.controls.test.d.ts +1 -0
  5. package/dist/__tests__/components/PluginWorkspaceView.navigation.test.d.ts +1 -0
  6. package/dist/__tests__/components/PluginWorkspaceView.shell.test.d.ts +1 -0
  7. package/dist/__tests__/components/ProtocolStep.presentation.test.d.ts +1 -0
  8. package/dist/__tests__/components/ProtocolStepEditor.state.test.d.ts +1 -0
  9. package/dist/__tests__/components/ProtocolStepParameterField.test.d.ts +1 -0
  10. package/dist/__tests__/components/ReagentList.presentation.test.d.ts +1 -0
  11. package/dist/__tests__/components/SampleSelector.colors.test.d.ts +1 -0
  12. package/dist/__tests__/components/SampleSelector.drag.test.d.ts +1 -0
  13. package/dist/__tests__/components/SampleSelector.groups.test.d.ts +1 -0
  14. package/dist/__tests__/components/SampleSelector.selection.test.d.ts +1 -0
  15. package/dist/__tests__/components/SampleSelectorSampleRow.test.d.ts +1 -0
  16. package/dist/__tests__/components/ScheduleCalendar.test.d.ts +1 -0
  17. package/dist/__tests__/components/SettingsModal.schema.test.d.ts +1 -0
  18. package/dist/__tests__/components/WellPlate.colors.test.d.ts +1 -0
  19. package/dist/__tests__/components/WellPlate.conditions.test.d.ts +1 -0
  20. package/dist/__tests__/components/WellPlate.geometry.test.d.ts +1 -0
  21. package/dist/__tests__/components/WellPlate.interaction.test.d.ts +1 -0
  22. package/dist/__tests__/components/WellPlate.legend.test.d.ts +1 -0
  23. package/dist/__tests__/components/WellPlate.rendering.test.d.ts +1 -0
  24. package/dist/__tests__/components/WellPlate.sampleDrop.test.d.ts +1 -0
  25. package/dist/__tests__/composables/autoGroup/classify.test.d.ts +1 -0
  26. package/dist/__tests__/composables/autoGroup/columns.test.d.ts +1 -0
  27. package/dist/__tests__/composables/autoGroup/compose.test.d.ts +1 -0
  28. package/dist/__tests__/composables/autoGroup/cooccurrence.test.d.ts +1 -0
  29. package/dist/__tests__/composables/autoGroup/fingerprint.test.d.ts +1 -0
  30. package/dist/__tests__/composables/autoGroup/integration.test.d.ts +1 -0
  31. package/dist/__tests__/composables/autoGroup/template.test.d.ts +1 -0
  32. package/dist/__tests__/composables/autoGroup/tokenize.test.d.ts +1 -0
  33. package/dist/__tests__/composables/useAutoGroupInputSources.test.d.ts +1 -0
  34. package/dist/__tests__/composables/useScheduleCalendarLayout.test.d.ts +1 -0
  35. package/dist/__tests__/docs/extractDocsComponents.test.d.ts +1 -0
  36. package/dist/__tests__/docs/extractDocsExports.test.d.ts +1 -0
  37. package/dist/__tests__/docs/extractDocsParsing.test.d.ts +1 -0
  38. package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +1 -0
  39. package/dist/__tests__/docs/extractDocsTheme.test.d.ts +1 -0
  40. package/dist/components/AppTopBar.navigation.d.ts +11 -0
  41. package/dist/components/BaseButton.vue.d.ts +1 -1
  42. package/dist/components/BaseCheckbox.vue.d.ts +1 -1
  43. package/dist/components/BaseInput.vue.d.ts +2 -2
  44. package/dist/components/BasePill.vue.d.ts +1 -1
  45. package/dist/components/BaseRadioGroup.vue.d.ts +1 -1
  46. package/dist/components/BaseSelect.vue.d.ts +1 -1
  47. package/dist/components/BaseSlider.vue.d.ts +2 -2
  48. package/dist/components/BaseTextarea.vue.d.ts +2 -2
  49. package/dist/components/BaseToggle.vue.d.ts +1 -1
  50. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
  51. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +1 -1
  52. package/dist/components/ColorSlider.vue.d.ts +2 -2
  53. package/dist/components/ConcentrationInput.vue.d.ts +2 -2
  54. package/dist/components/DatePicker.vue.d.ts +1 -1
  55. package/dist/components/DateTimePicker.vue.d.ts +2 -2
  56. package/dist/components/DoseCalculatorVolumeField.vue.d.ts +15 -0
  57. package/dist/components/DropdownButton.vue.d.ts +1 -1
  58. package/dist/components/FileUploader.vue.d.ts +2 -2
  59. package/dist/components/FormulaInput.vue.d.ts +2 -2
  60. package/dist/components/IconButton.vue.d.ts +1 -1
  61. package/dist/components/LoadingSpinner.vue.d.ts +1 -1
  62. package/dist/components/MoleculeInput.vue.d.ts +2 -2
  63. package/dist/components/MultiSelect.vue.d.ts +1 -1
  64. package/dist/components/NumberInput.vue.d.ts +1 -1
  65. package/dist/components/PlateMapEditor.vue.d.ts +6 -6
  66. package/dist/components/PluginWorkspaceView.controls.d.ts +28 -0
  67. package/dist/components/PluginWorkspaceView.navigation.d.ts +29 -0
  68. package/dist/components/PluginWorkspaceView.props.d.ts +151 -0
  69. package/dist/components/PluginWorkspaceView.shell.d.ts +19 -0
  70. package/dist/components/PluginWorkspaceView.vue.d.ts +46 -195
  71. package/dist/components/ProgressBar.vue.d.ts +1 -1
  72. package/dist/components/ProtocolStep.presentation.d.ts +4 -0
  73. package/dist/components/ProtocolStepEditor.state.d.ts +18 -0
  74. package/dist/components/ProtocolStepParameterField.vue.d.ts +12 -0
  75. package/dist/components/ReagentList.presentation.d.ts +16 -0
  76. package/dist/components/ResourceCard.vue.d.ts +1 -1
  77. package/dist/components/SampleSelector.colors.d.ts +13 -0
  78. package/dist/components/SampleSelector.drag.d.ts +24 -0
  79. package/dist/components/SampleSelector.groups.d.ts +15 -0
  80. package/dist/components/SampleSelector.selection.d.ts +26 -0
  81. package/dist/components/SampleSelector.vue.d.ts +4 -1
  82. package/dist/components/SampleSelectorSampleRow.vue.d.ts +21 -0
  83. package/dist/components/SegmentedControl.vue.d.ts +1 -1
  84. package/dist/components/SequenceInput.vue.d.ts +2 -2
  85. package/dist/components/SequenceProgressBar.vue.d.ts +1 -1
  86. package/dist/components/SettingsModal.schema.d.ts +9 -0
  87. package/dist/components/StatusIndicator.vue.d.ts +1 -1
  88. package/dist/components/TagsInput.vue.d.ts +2 -2
  89. package/dist/components/TimePicker.vue.d.ts +2 -2
  90. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  91. package/dist/components/UnitInput.vue.d.ts +2 -2
  92. package/dist/components/WellPlate.colors.d.ts +9 -0
  93. package/dist/components/WellPlate.conditions.d.ts +26 -0
  94. package/dist/components/WellPlate.geometry.d.ts +23 -0
  95. package/dist/components/WellPlate.interaction.d.ts +71 -0
  96. package/dist/components/WellPlate.legend.d.ts +2 -0
  97. package/dist/components/WellPlate.rendering.d.ts +24 -0
  98. package/dist/components/WellPlate.sampleDrop.d.ts +8 -0
  99. package/dist/components/WellPlate.vue.d.ts +1 -1
  100. package/dist/components/index.js +2 -2
  101. package/dist/components/internal/ActionItemInternal.vue.d.ts +1 -1
  102. package/dist/components/internal/PlateMapEditorToolbarInternal.vue.d.ts +28 -0
  103. package/dist/{components-BhK-dW99.js → components-DtHA2bgp.js} +3754 -2991
  104. package/dist/components-DtHA2bgp.js.map +1 -0
  105. package/dist/composables/autoGroup/classKey.d.ts +4 -0
  106. package/dist/composables/autoGroup/classify.d.ts +28 -0
  107. package/dist/composables/autoGroup/colors.d.ts +2 -0
  108. package/dist/composables/autoGroup/columns.d.ts +10 -0
  109. package/dist/composables/autoGroup/compose.d.ts +8 -0
  110. package/dist/composables/autoGroup/cooccurrence.d.ts +2 -0
  111. package/dist/composables/autoGroup/csv-shim.d.ts +2 -0
  112. package/dist/composables/autoGroup/fingerprint.d.ts +3 -0
  113. package/dist/composables/autoGroup/index.d.ts +16 -0
  114. package/dist/composables/autoGroup/replicatePreGroup.d.ts +38 -0
  115. package/dist/composables/autoGroup/template.d.ts +15 -0
  116. package/dist/composables/autoGroup/tokenize.d.ts +8 -0
  117. package/dist/composables/autoGroupConstants.d.ts +1 -0
  118. package/dist/composables/autoGroupGrouping.d.ts +3 -0
  119. package/dist/composables/controlComponentBindings.d.ts +7 -0
  120. package/dist/composables/controlSchemaAdapters.d.ts +20 -0
  121. package/dist/composables/controlSchemaDoseDesign.d.ts +11 -0
  122. package/dist/composables/controlSchemaFormFields.d.ts +3 -0
  123. package/dist/composables/controlSchemaLayout.d.ts +7 -0
  124. package/dist/composables/controlSchemaModel.d.ts +5 -0
  125. package/dist/composables/controlSchemaNormalize.d.ts +15 -0
  126. package/dist/composables/controlSchemaTypes.d.ts +305 -0
  127. package/dist/composables/controlSchemaUtils.d.ts +9 -0
  128. package/dist/composables/controlWorkspaceOptions.d.ts +2 -0
  129. package/dist/composables/formBuilderSchema.d.ts +18 -0
  130. package/dist/composables/index.js +3 -3
  131. package/dist/composables/pluginEndpointBuilder.d.ts +13 -0
  132. package/dist/composables/protocolTemplateCatalog.d.ts +26 -0
  133. package/dist/composables/useAutoGroup.d.ts +61 -74
  134. package/dist/composables/useAutoGroupInputSources.d.ts +32 -0
  135. package/dist/composables/useBioTemplateControls.d.ts +1 -1
  136. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +1 -1
  137. package/dist/composables/useBioTemplateWorkspace.d.ts +1 -1
  138. package/dist/composables/useControlSchema.d.ts +8 -346
  139. package/dist/composables/useControlWorkspace.d.ts +5 -0
  140. package/dist/composables/useForm.d.ts +2 -33
  141. package/dist/composables/useFormBuilder.d.ts +2 -9
  142. package/dist/composables/useFormValidation.d.ts +34 -0
  143. package/dist/composables/usePluginClient.d.ts +1 -4
  144. package/dist/composables/useProtocolTemplates.d.ts +2 -24
  145. package/dist/composables/useScheduleCalendarLayout.d.ts +49 -0
  146. package/dist/{composables-Bg7CFuNz.js → composables-Dlg8jenH.js} +33 -31
  147. package/dist/composables-Dlg8jenH.js.map +1 -0
  148. package/dist/index.js +4 -4
  149. package/dist/install.js +2 -2
  150. package/dist/styles.css +547 -516
  151. package/dist/templates/adapters.d.ts +14 -47
  152. package/dist/templates/assayLookups.d.ts +3 -0
  153. package/dist/templates/assayMatrixAdapters.d.ts +6 -0
  154. package/dist/templates/assayMatrixBuilder.d.ts +2 -0
  155. package/dist/templates/assayNormalizers.d.ts +4 -0
  156. package/dist/templates/builderDefaults.d.ts +1 -0
  157. package/dist/templates/builderIdUtils.d.ts +4 -0
  158. package/dist/templates/builderPresetControls.d.ts +10 -0
  159. package/dist/templates/builderReadUtils.d.ts +8 -0
  160. package/dist/templates/builders.d.ts +26 -67
  161. package/dist/templates/calibrationCurveAdapters.d.ts +4 -0
  162. package/dist/templates/calibrationCurveBuilder.d.ts +2 -0
  163. package/dist/templates/calibrationNormalizers.d.ts +5 -0
  164. package/dist/templates/componentBindingCatalog.d.ts +25 -0
  165. package/dist/templates/componentBindingHelpers.d.ts +17 -0
  166. package/dist/templates/componentDoseResponseProps.d.ts +3 -0
  167. package/dist/templates/componentGenericProps.d.ts +8 -0
  168. package/dist/templates/componentPlateHelpers.d.ts +5 -0
  169. package/dist/templates/componentPlateMapProps.d.ts +3 -0
  170. package/dist/templates/componentPropsFactory.d.ts +3 -0
  171. package/dist/templates/componentQpcrPlateProps.d.ts +3 -0
  172. package/dist/templates/componentTargetResolvers.d.ts +5 -0
  173. package/dist/templates/componentTemplateProps.d.ts +3 -0
  174. package/dist/templates/controlSchemaClone.d.ts +4 -0
  175. package/dist/templates/controlSchemaConstants.d.ts +10 -0
  176. package/dist/templates/controlSchemaMerge.d.ts +3 -0
  177. package/dist/templates/controlSchemaTargets.d.ts +17 -0
  178. package/dist/templates/controlSchemaTypes.d.ts +4 -0
  179. package/dist/templates/controlSchemas.d.ts +4 -4
  180. package/dist/templates/defaultBioTemplateBuilder.d.ts +2 -0
  181. package/dist/templates/doseResponseAdapters.d.ts +4 -0
  182. package/dist/templates/doseResponseBuilder.d.ts +2 -0
  183. package/dist/templates/elisaAssayCollectionBuilder.d.ts +2 -0
  184. package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +2 -0
  185. package/dist/templates/flowCytometryPanelBuilder.d.ts +2 -0
  186. package/dist/templates/flowNormalizers.d.ts +8 -0
  187. package/dist/templates/flowPanelAdapters.d.ts +4 -0
  188. package/dist/templates/index.js +1 -1
  189. package/dist/templates/instrumentRunAdapterHelpers.d.ts +8 -0
  190. package/dist/templates/instrumentRunAdapters.d.ts +8 -0
  191. package/dist/templates/instrumentRunBuilder.d.ts +2 -0
  192. package/dist/templates/lcmsBatchCollectionBuilder.d.ts +2 -0
  193. package/dist/templates/plateGeometry.d.ts +4 -0
  194. package/dist/templates/plateMapAdapters.d.ts +3 -0
  195. package/dist/templates/plateMapBuilder.d.ts +2 -0
  196. package/dist/templates/presetControlSchemas.d.ts +534 -0
  197. package/dist/templates/protocolAdapters.d.ts +5 -0
  198. package/dist/templates/protocolNormalizers.d.ts +6 -0
  199. package/dist/templates/protocolStepsBuilder.d.ts +2 -0
  200. package/dist/templates/qpcrAdapters.d.ts +5 -0
  201. package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +2 -0
  202. package/dist/templates/qpcrPlateBuilder.d.ts +2 -0
  203. package/dist/templates/reagentAdapters.d.ts +5 -0
  204. package/dist/templates/reagentListBuilder.d.ts +2 -0
  205. package/dist/templates/runNormalizers.d.ts +10 -0
  206. package/dist/templates/sampleNormalizers.d.ts +4 -0
  207. package/dist/templates/samplePrepAdapters.d.ts +4 -0
  208. package/dist/templates/samplePrepBuilder.d.ts +2 -0
  209. package/dist/templates/sampleSheetAdapters.d.ts +5 -0
  210. package/dist/templates/sampleSheetBuilder.d.ts +2 -0
  211. package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +2 -0
  212. package/dist/templates/targetedMetabolomicsHelpers.d.ts +5 -0
  213. package/dist/templates/templateAdapterTypes.d.ts +48 -0
  214. package/dist/templates/templateControlSchemas.d.ts +400 -0
  215. package/dist/templates/templateCreateOptions.d.ts +165 -0
  216. package/dist/templates/templateEnvelopes.d.ts +9 -0
  217. package/dist/templates/templatePackCollectionBuilder.d.ts +2 -0
  218. package/dist/templates/templatePresetCollectionBuilder.d.ts +18 -0
  219. package/dist/templates/templateQpcrTypes.d.ts +42 -0
  220. package/dist/templates/templateValidators.d.ts +13 -0
  221. package/dist/templates/timeCourseAdapters.d.ts +5 -0
  222. package/dist/templates/timeCourseBuilder.d.ts +2 -0
  223. package/dist/templates/types.d.ts +5 -250
  224. package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +2 -0
  225. package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +2 -0
  226. package/dist/{templates-BorLR_7p.js → templates-DtdUvJ4c.js} +3565 -3411
  227. package/dist/templates-DtdUvJ4c.js.map +1 -0
  228. package/dist/types/auto-group.d.ts +79 -9
  229. package/dist/types/componentLabTypes.d.ts +161 -0
  230. package/dist/types/componentWorkflowTypes.d.ts +150 -0
  231. package/dist/types/components.d.ts +2 -311
  232. package/dist/{useProtocolTemplates-n6AJqSqv.js → useProtocolTemplates-Bm5vyH4_.js} +1220 -454
  233. package/dist/useProtocolTemplates-Bm5vyH4_.js.map +1 -0
  234. package/package.json +1 -1
  235. package/src/__tests__/components/AppTopBar.navigation.test.ts +70 -0
  236. package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +53 -0
  237. package/src/__tests__/components/PlateMapEditorToolbarInternal.test.ts +54 -0
  238. package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +156 -0
  239. package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +102 -0
  240. package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +41 -0
  241. package/src/__tests__/components/ProtocolStep.presentation.test.ts +31 -0
  242. package/src/__tests__/components/ProtocolStepEditor.state.test.ts +165 -0
  243. package/src/__tests__/components/ProtocolStepParameterField.test.ts +44 -0
  244. package/src/__tests__/components/ReagentList.presentation.test.ts +68 -0
  245. package/src/__tests__/components/SampleSelector.colors.test.ts +49 -0
  246. package/src/__tests__/components/SampleSelector.drag.test.ts +100 -0
  247. package/src/__tests__/components/SampleSelector.groups.test.ts +81 -0
  248. package/src/__tests__/components/SampleSelector.selection.test.ts +70 -0
  249. package/src/__tests__/components/SampleSelector.test.ts +32 -0
  250. package/src/__tests__/components/SampleSelectorSampleRow.test.ts +37 -0
  251. package/src/__tests__/components/ScheduleCalendar.test.ts +44 -0
  252. package/src/__tests__/components/SettingsModal.schema.test.ts +97 -0
  253. package/src/__tests__/components/WellPlate.colors.test.ts +28 -0
  254. package/src/__tests__/components/WellPlate.conditions.test.ts +68 -0
  255. package/src/__tests__/components/WellPlate.geometry.test.ts +54 -0
  256. package/src/__tests__/components/WellPlate.interaction.test.ts +171 -0
  257. package/src/__tests__/components/WellPlate.legend.test.ts +13 -0
  258. package/src/__tests__/components/WellPlate.rendering.test.ts +122 -0
  259. package/src/__tests__/components/WellPlate.sampleDrop.test.ts +70 -0
  260. package/src/__tests__/composables/autoGroup/classify.test.ts +107 -0
  261. package/src/__tests__/composables/autoGroup/columns.test.ts +135 -0
  262. package/src/__tests__/composables/autoGroup/compose.test.ts +227 -0
  263. package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +91 -0
  264. package/src/__tests__/composables/autoGroup/fingerprint.test.ts +50 -0
  265. package/src/__tests__/composables/autoGroup/integration.test.ts +79 -0
  266. package/src/__tests__/composables/autoGroup/template.test.ts +70 -0
  267. package/src/__tests__/composables/autoGroup/tokenize.test.ts +33 -0
  268. package/src/__tests__/composables/useAutoGroup.test.ts +129 -625
  269. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +107 -0
  270. package/src/__tests__/composables/useControlSchema.test.ts +23 -0
  271. package/src/__tests__/composables/useScheduleCalendarLayout.test.ts +89 -0
  272. package/src/__tests__/docs/extractDocsComponents.test.ts +142 -0
  273. package/src/__tests__/docs/extractDocsExports.test.ts +77 -0
  274. package/src/__tests__/docs/extractDocsParsing.test.ts +69 -0
  275. package/src/__tests__/docs/extractDocsTemplates.test.ts +54 -0
  276. package/src/__tests__/docs/extractDocsTheme.test.ts +89 -0
  277. package/src/__tests__/docs/frontendDocsCatalog.test.ts +1 -1
  278. package/src/__tests__/fixtures/auto-group/mixed-lc-ms-batch.txt +187 -0
  279. package/src/components/AppSidebar.vue +2 -6
  280. package/src/components/AppTopBar.navigation.ts +62 -0
  281. package/src/components/AppTopBar.vue +17 -44
  282. package/src/components/AutoGroupModal.story.vue +50 -0
  283. package/src/components/AutoGroupModal.vue +441 -158
  284. package/src/components/ControlWorkspaceView.vue +2 -6
  285. package/src/components/DoseCalculator.vue +13 -73
  286. package/src/components/DoseCalculatorVolumeField.vue +61 -0
  287. package/src/components/ExperimentTimeline.vue +6 -31
  288. package/src/components/FormBuilder.vue +2 -7
  289. package/src/components/PlateMapEditor.vue +32 -106
  290. package/src/components/PluginWorkspaceView.controls.ts +182 -0
  291. package/src/components/PluginWorkspaceView.navigation.ts +106 -0
  292. package/src/components/PluginWorkspaceView.props.ts +174 -0
  293. package/src/components/PluginWorkspaceView.shell.ts +66 -0
  294. package/src/components/PluginWorkspaceView.vue +85 -404
  295. package/src/components/ProtocolStep.presentation.ts +31 -0
  296. package/src/components/ProtocolStepEditor.state.ts +104 -0
  297. package/src/components/ProtocolStepEditor.vue +48 -179
  298. package/src/components/ProtocolStepParameterField.vue +134 -0
  299. package/src/components/ReagentList.presentation.ts +105 -0
  300. package/src/components/ReagentList.vue +16 -79
  301. package/src/components/SampleSelector.colors.ts +43 -0
  302. package/src/components/SampleSelector.drag.ts +164 -0
  303. package/src/components/SampleSelector.groups.ts +109 -0
  304. package/src/components/SampleSelector.selection.ts +103 -0
  305. package/src/components/SampleSelector.vue +82 -349
  306. package/src/components/SampleSelectorSampleRow.vue +64 -0
  307. package/src/components/ScheduleCalendar.vue +44 -199
  308. package/src/components/SettingsModal.schema.ts +71 -0
  309. package/src/components/SettingsModal.vue +16 -46
  310. package/src/components/WellPlate.colors.ts +56 -0
  311. package/src/components/WellPlate.conditions.ts +100 -0
  312. package/src/components/WellPlate.geometry.ts +91 -0
  313. package/src/components/WellPlate.interaction.ts +272 -0
  314. package/src/components/WellPlate.legend.ts +8 -0
  315. package/src/components/WellPlate.rendering.ts +105 -0
  316. package/src/components/WellPlate.sampleDrop.ts +73 -0
  317. package/src/components/WellPlate.vue +102 -550
  318. package/src/components/internal/PlateMapEditorToolbarInternal.vue +128 -0
  319. package/src/composables/autoGroup/classKey.ts +5 -0
  320. package/src/composables/autoGroup/classify.ts +205 -0
  321. package/src/composables/autoGroup/colors.ts +6 -0
  322. package/src/composables/autoGroup/columns.ts +226 -0
  323. package/src/composables/autoGroup/compose.ts +156 -0
  324. package/src/composables/autoGroup/cooccurrence.ts +46 -0
  325. package/src/composables/autoGroup/csv-shim.ts +44 -0
  326. package/src/composables/autoGroup/fingerprint.ts +49 -0
  327. package/src/composables/autoGroup/index.ts +20 -0
  328. package/src/composables/autoGroup/replicatePreGroup.ts +90 -0
  329. package/src/composables/autoGroup/template.ts +126 -0
  330. package/src/composables/autoGroup/tokenize.ts +41 -0
  331. package/src/composables/autoGroup/vocab.json +67 -0
  332. package/src/composables/autoGroupConstants.ts +4 -0
  333. package/src/composables/autoGroupGrouping.ts +148 -0
  334. package/src/composables/controlComponentBindings.ts +80 -0
  335. package/src/composables/controlSchemaAdapters.ts +196 -0
  336. package/src/composables/controlSchemaDoseDesign.ts +215 -0
  337. package/src/composables/controlSchemaFormFields.ts +61 -0
  338. package/src/composables/controlSchemaLayout.ts +59 -0
  339. package/src/composables/controlSchemaModel.ts +163 -0
  340. package/src/composables/controlSchemaNormalize.ts +101 -0
  341. package/src/composables/controlSchemaTypes.ts +364 -0
  342. package/src/composables/controlSchemaUtils.ts +36 -0
  343. package/src/composables/controlWorkspaceOptions.ts +21 -0
  344. package/src/composables/formBuilderSchema.ts +153 -0
  345. package/src/composables/pluginEndpointBuilder.ts +203 -0
  346. package/src/composables/protocolTemplateCatalog.ts +325 -0
  347. package/src/composables/useAutoGroup.ts +395 -549
  348. package/src/composables/useAutoGroupInputSources.ts +147 -0
  349. package/src/composables/useBioTemplateControls.ts +1 -1
  350. package/src/composables/useBioTemplatePresetWorkspace.ts +1 -1
  351. package/src/composables/useBioTemplateWorkspace.ts +1 -1
  352. package/src/composables/useControlSchema.ts +64 -1312
  353. package/src/composables/useControlWorkspace.ts +201 -0
  354. package/src/composables/useForm.ts +5 -187
  355. package/src/composables/useFormBuilder.ts +11 -153
  356. package/src/composables/useFormValidation.ts +154 -0
  357. package/src/composables/usePluginClient.ts +10 -193
  358. package/src/composables/useProtocolTemplates.ts +10 -328
  359. package/src/composables/useScheduleCalendarLayout.ts +287 -0
  360. package/src/styles/components/auto-group-modal.css +248 -310
  361. package/src/templates/adapters.ts +89 -930
  362. package/src/templates/assayLookups.ts +33 -0
  363. package/src/templates/assayMatrixAdapters.ts +78 -0
  364. package/src/templates/assayMatrixBuilder.ts +59 -0
  365. package/src/templates/assayNormalizers.ts +34 -0
  366. package/src/templates/builderDefaults.ts +11 -0
  367. package/src/templates/builderIdUtils.ts +20 -0
  368. package/src/templates/builderPresetControls.ts +165 -0
  369. package/src/templates/builderReadUtils.ts +57 -0
  370. package/src/templates/builders.ts +122 -2350
  371. package/src/templates/calibrationCurveAdapters.ts +59 -0
  372. package/src/templates/calibrationCurveBuilder.ts +99 -0
  373. package/src/templates/calibrationNormalizers.ts +60 -0
  374. package/src/templates/componentBindingCatalog.ts +90 -0
  375. package/src/templates/componentBindingHelpers.ts +93 -0
  376. package/src/templates/componentBindings.ts +12 -461
  377. package/src/templates/componentDoseResponseProps.ts +42 -0
  378. package/src/templates/componentGenericProps.ts +77 -0
  379. package/src/templates/componentPlateHelpers.ts +29 -0
  380. package/src/templates/componentPlateMapProps.ts +32 -0
  381. package/src/templates/componentPropsFactory.ts +21 -0
  382. package/src/templates/componentQpcrPlateProps.ts +28 -0
  383. package/src/templates/componentTargetResolvers.ts +69 -0
  384. package/src/templates/componentTemplateProps.ts +78 -0
  385. package/src/templates/controlSchemaClone.ts +32 -0
  386. package/src/templates/controlSchemaConstants.ts +11 -0
  387. package/src/templates/controlSchemaMerge.ts +40 -0
  388. package/src/templates/controlSchemaTargets.ts +87 -0
  389. package/src/templates/controlSchemaTypes.ts +20 -0
  390. package/src/templates/controlSchemas.ts +22 -704
  391. package/src/templates/defaultBioTemplateBuilder.ts +124 -0
  392. package/src/templates/doseResponseAdapters.ts +45 -0
  393. package/src/templates/doseResponseBuilder.ts +44 -0
  394. package/src/templates/elisaAssayCollectionBuilder.ts +62 -0
  395. package/src/templates/flowCytometryAssayCollectionBuilder.ts +41 -0
  396. package/src/templates/flowCytometryPanelBuilder.ts +53 -0
  397. package/src/templates/flowNormalizers.ts +58 -0
  398. package/src/templates/flowPanelAdapters.ts +58 -0
  399. package/src/templates/instrumentRunAdapterHelpers.ts +94 -0
  400. package/src/templates/instrumentRunAdapters.ts +163 -0
  401. package/src/templates/instrumentRunBuilder.ts +97 -0
  402. package/src/templates/lcmsBatchCollectionBuilder.ts +38 -0
  403. package/src/templates/plateGeometry.ts +62 -0
  404. package/src/templates/plateMapAdapters.ts +36 -0
  405. package/src/templates/plateMapBuilder.ts +43 -0
  406. package/src/templates/presetControlSchemas.ts +258 -0
  407. package/src/templates/protocolAdapters.ts +69 -0
  408. package/src/templates/protocolNormalizers.ts +37 -0
  409. package/src/templates/protocolStepsBuilder.ts +36 -0
  410. package/src/templates/qpcrAdapters.ts +104 -0
  411. package/src/templates/qpcrExpressionCollectionBuilder.ts +33 -0
  412. package/src/templates/qpcrPlateBuilder.ts +96 -0
  413. package/src/templates/reagentAdapters.ts +77 -0
  414. package/src/templates/reagentListBuilder.ts +30 -0
  415. package/src/templates/runNormalizers.ts +63 -0
  416. package/src/templates/sampleNormalizers.ts +58 -0
  417. package/src/templates/samplePrepAdapters.ts +63 -0
  418. package/src/templates/samplePrepBuilder.ts +51 -0
  419. package/src/templates/sampleSheetAdapters.ts +75 -0
  420. package/src/templates/sampleSheetBuilder.ts +23 -0
  421. package/src/templates/targetedMetabolomicsCollectionBuilder.ts +79 -0
  422. package/src/templates/targetedMetabolomicsHelpers.ts +102 -0
  423. package/src/templates/templateAdapterTypes.ts +58 -0
  424. package/src/templates/templateControlSchemas.ts +320 -0
  425. package/src/templates/templateCreateOptions.ts +208 -0
  426. package/src/templates/templateEnvelopes.ts +137 -0
  427. package/src/templates/templatePackCollectionBuilder.ts +23 -0
  428. package/src/templates/templatePresetCollectionBuilder.ts +139 -0
  429. package/src/templates/templateQpcrTypes.ts +48 -0
  430. package/src/templates/templateValidators.ts +414 -0
  431. package/src/templates/timeCourseAdapters.ts +73 -0
  432. package/src/templates/timeCourseBuilder.ts +64 -0
  433. package/src/templates/types.ts +79 -275
  434. package/src/templates/wellPlateScreenCollectionBuilder.ts +36 -0
  435. package/src/templates/westernBlotAssayCollectionBuilder.ts +68 -0
  436. package/src/types/auto-group.ts +107 -9
  437. package/src/types/componentLabTypes.ts +235 -0
  438. package/src/types/componentWorkflowTypes.ts +190 -0
  439. package/src/types/components.ts +74 -424
  440. package/dist/components-BhK-dW99.js.map +0 -1
  441. package/dist/composables-Bg7CFuNz.js.map +0 -1
  442. package/dist/templates-BorLR_7p.js.map +0 -1
  443. package/dist/useProtocolTemplates-n6AJqSqv.js.map +0 -1
@@ -0,0 +1,187 @@
1
+ exp281_260413_YS_H2_400ulES_1ul_071
2
+ exp281_260413_YS_K2_400ulES_1ul_070
3
+ exp281_260413_YS_L2_400ulES_1ul_069
4
+ exp281_260415_SAM_SAH_SAHStandard_5nM_002
5
+ exp281_260415_SAM_SAH_SAHStandard_5nM_093
6
+ exp281_260415_SAM_SAH_SAMstandard_5nM_001
7
+ exp281_260415_SAM_SAH_SAMstandard_5nM_092
8
+ exp281_260415_SAM_SAH_Tissues_ExtractionS_00B
9
+ exp281_260415_SAM_SAH_Tissues_ExtractionS_091
10
+ exp281_260415_SAM_SAH_Tissues_IQC_003
11
+ exp281_260415_SAM_SAH_Tissues_IQC_056
12
+ exp281_260415_SAM_SAH_Tissues_IQC_090
13
+ exp281_260415_SAM_SAH_Tissues_Kidney_M10_085
14
+ exp281_260415_SAM_SAH_Tissues_Kidney_M11_080
15
+ exp281_260415_SAM_SAH_Tissues_Kidney_M12_027
16
+ exp281_260415_SAM_SAH_Tissues_Kidney_M13_048
17
+ exp281_260415_SAM_SAH_Tissues_Kidney_M14_023
18
+ exp281_260415_SAM_SAH_Tissues_Kidney_M15_074
19
+ exp281_260415_SAM_SAH_Tissues_Kidney_M16_088
20
+ exp281_260415_SAM_SAH_Tissues_Kidney_M17_070
21
+ exp281_260415_SAM_SAH_Tissues_Kidney_M18_006
22
+ exp281_260415_SAM_SAH_Tissues_Kidney_M19_033
23
+ exp281_260415_SAM_SAH_Tissues_Kidney_M1_050
24
+ exp281_260415_SAM_SAH_Tissues_Kidney_M20_004
25
+ exp281_260415_SAM_SAH_Tissues_Kidney_M21_061
26
+ exp281_260415_SAM_SAH_Tissues_Kidney_M22_032
27
+ exp281_260415_SAM_SAH_Tissues_Kidney_M23_024
28
+ exp281_260415_SAM_SAH_Tissues_Kidney_M24_040
29
+ exp281_260415_SAM_SAH_Tissues_Kidney_M25_045
30
+ exp281_260415_SAM_SAH_Tissues_Kidney_M26_026
31
+ exp281_260415_SAM_SAH_Tissues_Kidney_M27_067
32
+ exp281_260415_SAM_SAH_Tissues_Kidney_M2_086
33
+ exp281_260415_SAM_SAH_Tissues_Kidney_M3_083
34
+ exp281_260415_SAM_SAH_Tissues_Kidney_M4_068
35
+ exp281_260415_SAM_SAH_Tissues_Kidney_M5_049
36
+ exp281_260415_SAM_SAH_Tissues_Kidney_M6_069
37
+ exp281_260415_SAM_SAH_Tissues_Kidney_M7_054
38
+ exp281_260415_SAM_SAH_Tissues_Kidney_M8_079
39
+ exp281_260415_SAM_SAH_Tissues_Kidney_M9_009
40
+ exp281_260415_SAM_SAH_Tissues_Liver_M10_011
41
+ exp281_260415_SAM_SAH_Tissues_Liver_M11_075
42
+ exp281_260415_SAM_SAH_Tissues_Liver_M12_022
43
+ exp281_260415_SAM_SAH_Tissues_Liver_M13_060
44
+ exp281_260415_SAM_SAH_Tissues_Liver_M14_025
45
+ exp281_260415_SAM_SAH_Tissues_Liver_M15_031
46
+ exp281_260415_SAM_SAH_Tissues_Liver_M16_078
47
+ exp281_260415_SAM_SAH_Tissues_Liver_M17_029
48
+ exp281_260415_SAM_SAH_Tissues_Liver_M18_046
49
+ exp281_260415_SAM_SAH_Tissues_Liver_M19_073
50
+ exp281_260415_SAM_SAH_Tissues_Liver_M1_047
51
+ exp281_260415_SAM_SAH_Tissues_Liver_M20_072
52
+ exp281_260415_SAM_SAH_Tissues_Liver_M21_042
53
+ exp281_260415_SAM_SAH_Tissues_Liver_M22_030
54
+ exp281_260415_SAM_SAH_Tissues_Liver_M23_014
55
+ exp281_260415_SAM_SAH_Tissues_Liver_M24_043
56
+ exp281_260415_SAM_SAH_Tissues_Liver_M25_008
57
+ exp281_260415_SAM_SAH_Tissues_Liver_M26_057
58
+ exp281_260415_SAM_SAH_Tissues_Liver_M27_053
59
+ exp281_260415_SAM_SAH_Tissues_Liver_M2_019
60
+ exp281_260415_SAM_SAH_Tissues_Liver_M3_017
61
+ exp281_260415_SAM_SAH_Tissues_Liver_M4_007
62
+ exp281_260415_SAM_SAH_Tissues_Liver_M5_059
63
+ exp281_260415_SAM_SAH_Tissues_Liver_M6_005
64
+ exp281_260415_SAM_SAH_Tissues_Liver_M7_035
65
+ exp281_260415_SAM_SAH_Tissues_Liver_M8_036
66
+ exp281_260415_SAM_SAH_Tissues_Liver_M9_055
67
+ exp281_260415_SAM_SAH_Tissues_Tumor_M10_037
68
+ exp281_260415_SAM_SAH_Tissues_Tumor_M11_015
69
+ exp281_260415_SAM_SAH_Tissues_Tumor_M12_062
70
+ exp281_260415_SAM_SAH_Tissues_Tumor_M13_087
71
+ exp281_260415_SAM_SAH_Tissues_Tumor_M14_081
72
+ exp281_260415_SAM_SAH_Tissues_Tumor_M15_016
73
+ exp281_260415_SAM_SAH_Tissues_Tumor_M16_013
74
+ exp281_260415_SAM_SAH_Tissues_Tumor_M17_084
75
+ exp281_260415_SAM_SAH_Tissues_Tumor_M18_021
76
+ exp281_260415_SAM_SAH_Tissues_Tumor_M19_064
77
+ exp281_260415_SAM_SAH_Tissues_Tumor_M1_066
78
+ exp281_260415_SAM_SAH_Tissues_Tumor_M20_012
79
+ exp281_260415_SAM_SAH_Tissues_Tumor_M21_038
80
+ exp281_260415_SAM_SAH_Tissues_Tumor_M22_034
81
+ exp281_260415_SAM_SAH_Tissues_Tumor_M23_089
82
+ exp281_260415_SAM_SAH_Tissues_Tumor_M24_028
83
+ exp281_260415_SAM_SAH_Tissues_Tumor_M25_063
84
+ exp281_260415_SAM_SAH_Tissues_Tumor_M26_018
85
+ exp281_260415_SAM_SAH_Tissues_Tumor_M27_082
86
+ exp281_260415_SAM_SAH_Tissues_Tumor_M2_076
87
+ exp281_260415_SAM_SAH_Tissues_Tumor_M3_071
88
+ exp281_260415_SAM_SAH_Tissues_Tumor_M4_041
89
+ exp281_260415_SAM_SAH_Tissues_Tumor_M5_051
90
+ exp281_260415_SAM_SAH_Tissues_Tumor_M6_044
91
+ exp281_260415_SAM_SAH_Tissues_Tumor_M7_065
92
+ exp281_260415_SAM_SAH_Tissues_Tumor_M8_010
93
+ exp281_260415_SAM_SAH_Tissues_Tumor_M9_052
94
+ exp280_260413_SK_ESwithSpikeIn_02
95
+ exp280_260413_SK_ESwithSpikeIn_1to100_Stock_05
96
+ exp280_260413_SK_ESwithSpikeIn_1to100_Stock_10
97
+ exp280_260413_SK_ESwithSpikeIn_1to10_04
98
+ exp280_260413_SK_SAM_5nM_03
99
+ exp280_260413_SK_SAM_5nM_06
100
+ exp280_260413_YS_Experiment_EQC_002
101
+ exp280_260413_YS_Experiment_EQC_067
102
+ exp280_260413_YS_Experiment_EQC_102
103
+ exp280_260413_YS_Experiment_Plasma_M10_031
104
+ exp280_260413_YS_Experiment_Plasma_M10_0dot5ul_061
105
+ exp280_260413_YS_Experiment_Plasma_M10_0dot5ul_097
106
+ exp280_260413_YS_Experiment_Plasma_M11_018
107
+ exp280_260413_YS_Experiment_Plasma_M11_0dot5ul_054
108
+ exp280_260413_YS_Experiment_Plasma_M11_0dot5ul_090
109
+ exp280_260413_YS_Experiment_Plasma_M12_026
110
+ exp280_260413_YS_Experiment_Plasma_M12_0dot5ul_059
111
+ exp280_260413_YS_Experiment_Plasma_M12_0dot5ul_095
112
+ exp280_260413_YS_Experiment_Plasma_M13_027
113
+ exp280_260413_YS_Experiment_Plasma_M13_0dot5ul_037
114
+ exp280_260413_YS_Experiment_Plasma_M13_0dot5ul_073
115
+ exp280_260413_YS_Experiment_Plasma_M14_011
116
+ exp280_260413_YS_Experiment_Plasma_M14_0dot5ul_058
117
+ exp280_260413_YS_Experiment_Plasma_M14_0dot5ul_094
118
+ exp280_260413_YS_Experiment_Plasma_M15_029
119
+ exp280_260413_YS_Experiment_Plasma_M15_0dot5ul_065
120
+ exp280_260413_YS_Experiment_Plasma_M15_0dot5ul_100
121
+ exp280_260413_YS_Experiment_Plasma_M16_024
122
+ exp280_260413_YS_Experiment_Plasma_M16_0dot5ul_048
123
+ exp280_260413_YS_Experiment_Plasma_M16_0dot5ul_084
124
+ exp280_260413_YS_Experiment_Plasma_M17_006
125
+ exp280_260413_YS_Experiment_Plasma_M17_0dot5ul_055
126
+ exp280_260413_YS_Experiment_Plasma_M17_0dot5ul_091
127
+ exp280_260413_YS_Experiment_Plasma_M18_013
128
+ exp280_260413_YS_Experiment_Plasma_M18_0dot5ul_064
129
+ exp280_260413_YS_Experiment_Plasma_M18_0dot5ul_099
130
+ exp280_260413_YS_Experiment_Plasma_M19_030
131
+ exp280_260413_YS_Experiment_Plasma_M19_0dot5ul_051
132
+ exp280_260413_YS_Experiment_Plasma_M19_0dot5ul_087
133
+ exp280_260413_YS_Experiment_Plasma_M1_015
134
+ exp280_260413_YS_Experiment_Plasma_M1_0dot5ul_039
135
+ exp280_260413_YS_Experiment_Plasma_M1_0dot5ul_075
136
+ exp280_260413_YS_Experiment_Plasma_M20_005
137
+ exp280_260413_YS_Experiment_Plasma_M20_0dot5ul_049
138
+ exp280_260413_YS_Experiment_Plasma_M20_0dot5ul_085
139
+ exp280_260413_YS_Experiment_Plasma_M21_004
140
+ exp280_260413_YS_Experiment_Plasma_M21_0dot5ul_050
141
+ exp280_260413_YS_Experiment_Plasma_M21_0dot5ul_086
142
+ exp280_260413_YS_Experiment_Plasma_M22_009
143
+ exp280_260413_YS_Experiment_Plasma_M22_0dot5ul_040
144
+ exp280_260413_YS_Experiment_Plasma_M22_0dot5ul_076
145
+ exp280_260413_YS_Experiment_Plasma_M23_023
146
+ exp280_260413_YS_Experiment_Plasma_M23_0dot5ul_066
147
+ exp280_260413_YS_Experiment_Plasma_M23_0dot5ul_101
148
+ exp280_260413_YS_Experiment_Plasma_M24_003
149
+ exp280_260413_YS_Experiment_Plasma_M24_0dot5ul_042
150
+ exp280_260413_YS_Experiment_Plasma_M24_0dot5ul_078
151
+ exp280_260413_YS_Experiment_Plasma_M25_007
152
+ exp280_260413_YS_Experiment_Plasma_M25_0dot5ul_038
153
+ exp280_260413_YS_Experiment_Plasma_M25_0dot5ul_074
154
+ exp280_260413_YS_Experiment_Plasma_M26_014
155
+ exp280_260413_YS_Experiment_Plasma_M26_0dot5ul_056
156
+ exp280_260413_YS_Experiment_Plasma_M26_0dot5ul_092
157
+ exp280_260413_YS_Experiment_Plasma_M27_032
158
+ exp280_260413_YS_Experiment_Plasma_M27_0dot5ul_063
159
+ exp280_260413_YS_Experiment_Plasma_M27_0dot5ul_098
160
+ exp280_260413_YS_Experiment_Plasma_M2_020
161
+ exp280_260413_YS_Experiment_Plasma_M2_0dot5ul_047
162
+ exp280_260413_YS_Experiment_Plasma_M2_0dot5ul_083
163
+ exp280_260413_YS_Experiment_Plasma_M3_025
164
+ exp280_260413_YS_Experiment_Plasma_M3_0dot5ul_060
165
+ exp280_260413_YS_Experiment_Plasma_M3_0dot5ul_096
166
+ exp280_260413_YS_Experiment_Plasma_M4_008
167
+ exp280_260413_YS_Experiment_Plasma_M4_0dot5ul_045
168
+ exp280_260413_YS_Experiment_Plasma_M4_0dot5ul_081
169
+ exp280_260413_YS_Experiment_Plasma_M5_012
170
+ exp280_260413_YS_Experiment_Plasma_M5_0dot5ul_057
171
+ exp280_260413_YS_Experiment_Plasma_M5_0dot5ul_093
172
+ exp280_260413_YS_Experiment_Plasma_M6_016
173
+ exp280_260413_YS_Experiment_Plasma_M6_0dot5ul_046
174
+ exp280_260413_YS_Experiment_Plasma_M6_0dot5ul_082
175
+ exp280_260413_YS_Experiment_Plasma_M7_017
176
+ exp280_260413_YS_Experiment_Plasma_M7_0dot5ul_041
177
+ exp280_260413_YS_Experiment_Plasma_M7_0dot5ul_077
178
+ exp280_260413_YS_Experiment_Plasma_M8_022
179
+ exp280_260413_YS_Experiment_Plasma_M8_0dot5ul_043
180
+ exp280_260413_YS_Experiment_Plasma_M8_0dot5ul_079
181
+ exp280_260413_YS_Experiment_Plasma_M9_021
182
+ exp280_260413_YS_Experiment_Plasma_M9_0dot5ul_052
183
+ exp280_260413_YS_Experiment_Plasma_M9_0dot5ul_088
184
+ exp280_260413_YS_Experiment_SAH_1nM_036
185
+ exp280_260413_YS_Experiment_SAH_1nM_072
186
+ exp280_260413_YS_Experiment_SAM_1nM_035
187
+ exp280_260413_YS_Experiment_SAM_1nM_071
@@ -31,9 +31,9 @@ import type { FormEnhancements, FormSchema } from '../types/form-builder'
31
31
  import {
32
32
  controlsToSectionFormSchemas,
33
33
  controlsToSidebarPanels,
34
- defineControlModel,
35
34
  getControlDefaults,
36
35
  mergeControlWorkspaceOptions,
36
+ resolveControlModel,
37
37
  type ControlModel,
38
38
  type ControlModelBinding,
39
39
  type ControlSchema,
@@ -173,8 +173,7 @@ const resolvedWidth = computed(() => props.width ?? (isAnalysisVariant.value ? '
173
173
  const resolvedCollapsible = computed(() => props.collapsible ?? isAnalysisVariant.value)
174
174
 
175
175
  const resolvedModel = computed<ControlModelBinding | undefined>(() => {
176
- if (props.model === undefined) return undefined
177
- return isControlModelBinding(props.model) ? props.model : defineControlModel(props.model)
176
+ return resolveControlModel(props.model)
178
177
  })
179
178
 
180
179
  const resolvedControls = computed<ControlSchema | undefined>(() =>
@@ -297,9 +296,6 @@ function firstVisibleViewId(panels: Record<string, SidebarToolSection[]>): strin
297
296
  return ''
298
297
  }
299
298
 
300
- function isControlModelBinding(model: ControlModel | ControlModelBinding): model is ControlModelBinding {
301
- return 'controls' in model && 'controlOptions' in model
302
- }
303
299
  </script>
304
300
 
305
301
  <template>
@@ -0,0 +1,62 @@
1
+ import type { PageSelectorItem } from '../types/components'
2
+ import type { PluginNavItem } from '../types/platform'
3
+
4
+ export interface PluginNavPageSelectorOptions {
5
+ pluginIcon?: string
6
+ pluginName?: string
7
+ }
8
+
9
+ export function normalizeNavPath(path?: string): string {
10
+ const raw = path?.trim() || '/'
11
+ const prefixed = raw.startsWith('/') ? raw : `/${raw}`
12
+ return prefixed.replace(/\/+$/, '') || '/'
13
+ }
14
+
15
+ export function pageIdFromPath(path: string, fallback: string): string {
16
+ const normalized = normalizeNavPath(path)
17
+ if (normalized === '/') return 'dashboard'
18
+ return normalized.replace(/^\/+/, '').replace(/\/+/g, '-') || fallback
19
+ }
20
+
21
+ export function pluginNavItemToPageSelectorItem(
22
+ item: PluginNavItem,
23
+ index: number,
24
+ options: PluginNavPageSelectorOptions = {},
25
+ ): PageSelectorItem {
26
+ const path = normalizeNavPath(item.path)
27
+ return {
28
+ id: item.id || pageIdFromPath(path, `page-${index + 1}`),
29
+ label: item.label,
30
+ to: path,
31
+ icon: item.icon || options.pluginIcon,
32
+ hint: item.description || options.pluginName,
33
+ }
34
+ }
35
+
36
+ export function currentPagePath(
37
+ pathname: string | undefined,
38
+ routePrefix?: string,
39
+ ): string | undefined {
40
+ if (!pathname) return undefined
41
+ const normalizedPathname = normalizeNavPath(pathname)
42
+ const normalizedRoutePrefix = normalizeNavPath(routePrefix)
43
+
44
+ if (normalizedPathname === normalizedRoutePrefix) return '/'
45
+ if (
46
+ normalizedRoutePrefix !== '/' &&
47
+ normalizedPathname.startsWith(`${normalizedRoutePrefix}/`)
48
+ ) {
49
+ return normalizeNavPath(normalizedPathname.slice(normalizedRoutePrefix.length))
50
+ }
51
+ return normalizedPathname
52
+ }
53
+
54
+ export function currentItemIdFromLocation(
55
+ pages: Array<Pick<PageSelectorItem, 'id' | 'to' | 'href'>>,
56
+ pathname: string | undefined,
57
+ routePrefix?: string,
58
+ ): string | undefined {
59
+ const path = currentPagePath(pathname, routePrefix)
60
+ if (!path) return undefined
61
+ return pages.find((page) => normalizeNavPath(page.to || page.href) === path)?.id
62
+ }
@@ -14,7 +14,6 @@ import type {
14
14
  AccountMenuItem,
15
15
  SettingsTab,
16
16
  } from '../types/components'
17
- import type { PluginNavItem } from '../types/platform'
18
17
  import { normalizeItemInput } from '../utils/items'
19
18
  import ThemeToggle from './ThemeToggle.vue'
20
19
  import SettingsModal from './SettingsModal.vue'
@@ -27,6 +26,10 @@ import AppPluginSwitcher from './AppPluginSwitcher.vue'
27
26
  import PluginIcon from './PluginIcon.vue'
28
27
  import { usePlatformContext } from '../composables/usePlatformContext'
29
28
  import { APP_EXPERIMENT_KEY } from '../composables/useAppExperiment'
29
+ import {
30
+ currentItemIdFromLocation,
31
+ pluginNavItemToPageSelectorItem,
32
+ } from './AppTopBar.navigation'
30
33
 
31
34
  interface Props {
32
35
  /** App or plugin title shown in the left title group when no page selector is present. */
@@ -153,7 +156,12 @@ const hasTitleOnly = computed(
153
156
  )
154
157
  const platformPageSelector = computed<PageSelectorItem[]>(() =>
155
158
  hasPlatformPageSelector.value
156
- ? plugin.value?.nav_items?.map(pluginNavItemToPageSelectorItem) ?? []
159
+ ? plugin.value?.nav_items?.map((item, index) =>
160
+ pluginNavItemToPageSelectorItem(item, index, {
161
+ pluginIcon: plugin.value?.icon,
162
+ pluginName: plugin.value?.name,
163
+ })
164
+ ) ?? []
157
165
  : [],
158
166
  )
159
167
  const normalizedPageSelector = computed<PageSelectorItem[]>(() =>
@@ -167,50 +175,15 @@ const normalizedSettingsTabs = computed<SettingsTab[]>(() =>
167
175
  )
168
176
  const effectiveCurrentPageSelectorId = computed(() =>
169
177
  props.currentPageSelectorId
170
- ?? (hasPlatformPageSelector.value ? currentItemIdFromLocation(normalizedPageSelector.value) : undefined)
178
+ ?? (hasPlatformPageSelector.value
179
+ ? currentItemIdFromLocation(
180
+ normalizedPageSelector.value,
181
+ typeof window === 'undefined' ? undefined : window.location.pathname,
182
+ plugin.value?.route_prefix,
183
+ )
184
+ : undefined)
171
185
  ?? (hasPlatformPageSelector.value ? normalizedPageSelector.value[0]?.id : undefined),
172
186
  )
173
-
174
- function normalizeNavPath(path?: string): string {
175
- const raw = path?.trim() || '/'
176
- const prefixed = raw.startsWith('/') ? raw : `/${raw}`
177
- return prefixed.replace(/\/+$/, '') || '/'
178
- }
179
-
180
- function pageIdFromPath(path: string, fallback: string): string {
181
- const normalized = normalizeNavPath(path)
182
- if (normalized === '/') return 'dashboard'
183
- return normalized.replace(/^\/+/, '').replace(/\/+/g, '-') || fallback
184
- }
185
-
186
- function pluginNavItemToPageSelectorItem(item: PluginNavItem, index: number): PageSelectorItem {
187
- const path = normalizeNavPath(item.path)
188
- return {
189
- id: item.id || pageIdFromPath(path, `page-${index + 1}`),
190
- label: item.label,
191
- to: path,
192
- icon: item.icon || plugin.value?.icon,
193
- hint: item.description || plugin.value?.name,
194
- }
195
- }
196
-
197
- function currentPagePath(): string | undefined {
198
- if (typeof window === 'undefined') return undefined
199
- const pathname = normalizeNavPath(window.location.pathname)
200
- const routePrefix = normalizeNavPath(plugin.value?.route_prefix)
201
-
202
- if (pathname === routePrefix) return '/'
203
- if (routePrefix !== '/' && pathname.startsWith(`${routePrefix}/`)) {
204
- return normalizeNavPath(pathname.slice(routePrefix.length))
205
- }
206
- return pathname
207
- }
208
-
209
- function currentItemIdFromLocation(pages: Array<Pick<PageSelectorItem, 'id' | 'to' | 'href'>>): string | undefined {
210
- const path = currentPagePath()
211
- if (!path) return undefined
212
- return pages.find((page) => normalizeNavPath(page.to || page.href) === path)?.id
213
- }
214
187
  </script>
215
188
 
216
189
  <template>
@@ -2,6 +2,23 @@
2
2
  import { ref } from 'vue'
3
3
  import AutoGroupModal from './AutoGroupModal.vue'
4
4
  import type { AutoGroupResult } from '../types/auto-group'
5
+ import mixedLcMsRaw from '../__tests__/fixtures/auto-group/mixed-lc-ms-batch.txt?raw'
6
+
7
+ const mixedLcMsSamples = mixedLcMsRaw.trim().split('\n')
8
+
9
+ const simpleHomogeneous = [
10
+ 'sample_treated_rep1',
11
+ 'sample_treated_rep2',
12
+ 'sample_ctrl_rep1',
13
+ 'sample_ctrl_rep2',
14
+ ]
15
+
16
+ const numericBinning = [
17
+ 'exp_drugA_0dot1uM_rep1',
18
+ 'exp_drugA_1uM_rep1',
19
+ 'exp_drugA_10uM_rep1',
20
+ 'exp_drugA_100uM_rep1',
21
+ ]
5
22
 
6
23
  // Realistic proteomics-style samples with consistent structure
7
24
  const proteomicsSamples = [
@@ -269,5 +286,38 @@ function initState(samples: string[] = proteomicsSamples) {
269
286
  />
270
287
  </div>
271
288
  </Variant>
289
+
290
+ <Variant title="Simple homogeneous batch" :init-state="() => ({ isOpen: true })">
291
+ <template #default="{ state }">
292
+ <div style="padding: 2rem;">
293
+ <button v-if="!state.isOpen" type="button" style="padding: 0.5rem 1rem; background: var(--bg-card, #fff); border: 1px solid var(--border-color, #e5e7eb); border-radius: 0.375rem; cursor: pointer; font-size: 0.875rem;" @click="state.isOpen = true">
294
+ Re-open Modal
295
+ </button>
296
+ <AutoGroupModal v-model="state.isOpen" :samples="simpleHomogeneous" />
297
+ </div>
298
+ </template>
299
+ </Variant>
300
+
301
+ <Variant title="Mixed LC-MS batch (user fixture)" :init-state="() => ({ isOpen: true })">
302
+ <template #default="{ state }">
303
+ <div style="padding: 2rem;">
304
+ <button v-if="!state.isOpen" type="button" style="padding: 0.5rem 1rem; background: var(--bg-card, #fff); border: 1px solid var(--border-color, #e5e7eb); border-radius: 0.375rem; cursor: pointer; font-size: 0.875rem;" @click="state.isOpen = true">
305
+ Re-open Modal
306
+ </button>
307
+ <AutoGroupModal v-model="state.isOpen" :samples="mixedLcMsSamples" />
308
+ </div>
309
+ </template>
310
+ </Variant>
311
+
312
+ <Variant title="Numeric binning (dose curve)" :init-state="() => ({ isOpen: true })">
313
+ <template #default="{ state }">
314
+ <div style="padding: 2rem;">
315
+ <button v-if="!state.isOpen" type="button" style="padding: 0.5rem 1rem; background: var(--bg-card, #fff); border: 1px solid var(--border-color, #e5e7eb); border-radius: 0.375rem; cursor: pointer; font-size: 0.875rem;" @click="state.isOpen = true">
316
+ Re-open Modal
317
+ </button>
318
+ <AutoGroupModal v-model="state.isOpen" :samples="numericBinning" />
319
+ </div>
320
+ </template>
321
+ </Variant>
272
322
  </Story>
273
323
  </template>