@morscherlab/mint-sdk 1.2.0-beta.7 → 1.2.0-beta.9

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 (307) hide show
  1. package/README.md +30 -0
  2. package/dist/{ExperimentPopover-CfOdh5Rm.js → ExperimentPopover-oL0fg_A0.js} +5 -3
  3. package/dist/ExperimentPopover-oL0fg_A0.js.map +1 -0
  4. package/dist/{ExperimentSelectorModal-DvIagrxY.js → ExperimentSelectorModal-BeEOomw_.js} +4 -4
  5. package/dist/ExperimentSelectorModal-BeEOomw_.js.map +1 -0
  6. package/dist/{SettingsModal-W3TYfnP9.js → SettingsModal-Dphh3RrI.js} +4 -4
  7. package/dist/SettingsModal-Dphh3RrI.js.map +1 -0
  8. package/dist/{EmptyState-NBqf2_8z.js → Skeleton-DxtwJ5gt.js} +110 -92
  9. package/dist/Skeleton-DxtwJ5gt.js.map +1 -0
  10. package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
  11. package/dist/__tests__/composables/useListReorder.test.d.ts +1 -0
  12. package/dist/__tests__/styles/cssTokens.test.d.ts +1 -0
  13. package/dist/components/ActionMenu.vue.d.ts +1 -1
  14. package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
  15. package/dist/components/AuditTrail.vue.d.ts +13 -0
  16. package/dist/components/BatchProgressList.vue.d.ts +17 -0
  17. package/dist/components/DataFrame.vue.d.ts +14 -2
  18. package/dist/components/DatePicker.vue.d.ts +1 -1
  19. package/dist/components/DateTimePicker.vue.d.ts +2 -0
  20. package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
  21. package/dist/components/ExperimentPopover.vue.d.ts +1 -0
  22. package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
  23. package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
  24. package/dist/components/ProgressBar.vue.d.ts +1 -1
  25. package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
  26. package/dist/components/ReagentList.vue.d.ts +29 -1
  27. package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
  28. package/dist/components/SampleSelector.drag.d.ts +13 -0
  29. package/dist/components/SampleSelector.tree.d.ts +2 -0
  30. package/dist/components/SampleSelector.vue.d.ts +34 -1
  31. package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
  32. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -0
  33. package/dist/components/TimePicker.vue.d.ts +1 -0
  34. package/dist/components/WellPlate.geometry.d.ts +15 -0
  35. package/dist/components/WellPlate.interaction.d.ts +13 -0
  36. package/dist/components/WellPlate.vue.d.ts +29 -0
  37. package/dist/components/index.js +6 -6
  38. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
  39. package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
  40. package/dist/{components-B80gV0P6.js → components-CgAUzF8F.js} +1930 -1688
  41. package/dist/components-CgAUzF8F.js.map +1 -0
  42. package/dist/composables/controlSchemaTypes.d.ts +34 -0
  43. package/dist/composables/index.d.ts +1 -0
  44. package/dist/composables/index.js +9 -9
  45. package/dist/composables/useDropdownState.d.ts +18 -2
  46. package/dist/composables/useEventStream.d.ts +9 -0
  47. package/dist/composables/useListReorder.d.ts +90 -0
  48. package/dist/composables/useMenuKeyboard.d.ts +2 -2
  49. package/dist/composables/usePluginConfig.d.ts +3 -1
  50. package/dist/composables/useRequestSyncState.d.ts +42 -2
  51. package/dist/composables/useScheduleDrag.d.ts +1 -0
  52. package/dist/{composables-C8mmD5ta.js → composables-B_pia3hO.js} +13 -69
  53. package/dist/composables-B_pia3hO.js.map +1 -0
  54. package/dist/{useApi-CDBq6z23.js → errors-_W0-LbA6.js} +102 -3
  55. package/dist/errors-_W0-LbA6.js.map +1 -0
  56. package/dist/{experiment-Y9Iz7KYi.js → experiment-Cwl9AYxw.js} +3 -8
  57. package/dist/experiment-Cwl9AYxw.js.map +1 -0
  58. package/dist/experiment-utils-DV3DrvE_.js.map +1 -1
  59. package/dist/index.js +14 -14
  60. package/dist/install.js +2 -7
  61. package/dist/install.js.map +1 -1
  62. package/dist/permissions.d.ts +42 -1
  63. package/dist/permissions.js +20 -10
  64. package/dist/permissions.js.map +1 -1
  65. package/dist/stores/index.d.ts +1 -1
  66. package/dist/stores/index.js +3 -3
  67. package/dist/stores/settings.d.ts +31 -1
  68. package/dist/styles.css +9572 -27877
  69. package/dist/templates/index.js +2 -4
  70. package/dist/{templates-CK72aKO1.js → templates-Qq113pyZ.js} +291 -85
  71. package/dist/templates-Qq113pyZ.js.map +1 -0
  72. package/dist/{useControlSchema-_OVhavKq.js → useControlSchema-aMZlb4Sc.js} +197 -1089
  73. package/dist/useControlSchema-aMZlb4Sc.js.map +1 -0
  74. package/dist/{useDropdownState-D5G4UvWd.js → useDropdownState-DitCtrTT.js} +21 -5
  75. package/dist/useDropdownState-DitCtrTT.js.map +1 -0
  76. package/dist/{useExperimentSelector-DSEckf_g.js → useExperimentSelector-I8HC8hUu.js} +3 -3
  77. package/dist/{useExperimentSelector-DSEckf_g.js.map → useExperimentSelector-I8HC8hUu.js.map} +1 -1
  78. package/dist/{useFormBuilder-Bd714C7y.js → useFormBuilder-TCxNnqeb.js} +2 -2
  79. package/dist/{useFormBuilder-Bd714C7y.js.map → useFormBuilder-TCxNnqeb.js.map} +1 -1
  80. package/dist/{useProtocolTemplates-Dq5Pzwyd.js → useProtocolTemplates-BmX_iVBR.js} +185 -157
  81. package/dist/useProtocolTemplates-BmX_iVBR.js.map +1 -0
  82. package/dist/utils/color.d.ts +13 -0
  83. package/dist/utils/errors.d.ts +9 -0
  84. package/package.json +1 -1
  85. package/src/__tests__/components/ActionMenu.test.ts +94 -0
  86. package/src/__tests__/components/DataFrame.test.ts +183 -11
  87. package/src/__tests__/components/DataStates.test.ts +176 -0
  88. package/src/__tests__/components/DatePicker.test.ts +76 -0
  89. package/src/__tests__/components/DateTimePicker.test.ts +36 -0
  90. package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
  91. package/src/__tests__/components/GroupAssigner.test.ts +53 -0
  92. package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
  93. package/src/__tests__/components/RackEditor.test.ts +35 -0
  94. package/src/__tests__/components/ReagentList.test.ts +64 -2
  95. package/src/__tests__/components/RetiredStyles.test.ts +31 -0
  96. package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
  97. package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
  98. package/src/__tests__/components/SegmentedControl.test.ts +88 -0
  99. package/src/__tests__/components/TimePicker.test.ts +61 -0
  100. package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
  101. package/src/__tests__/composables/useDropdownState.test.ts +58 -1
  102. package/src/__tests__/composables/useListReorder.test.ts +145 -0
  103. package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
  104. package/src/__tests__/stores/settings.test.ts +71 -1
  105. package/src/__tests__/styles/cssTokens.test.ts +131 -0
  106. package/src/__tests__/utils/permissions.test.ts +68 -0
  107. package/src/components/ActionMenu.vue +45 -88
  108. package/src/components/AlertBox.vue +0 -4
  109. package/src/components/AppAvatarMenu.vue +2 -14
  110. package/src/components/AppLayout.vue +0 -4
  111. package/src/components/AppPluginSwitcher.story.vue +87 -0
  112. package/src/components/AppPluginSwitcher.vue +2 -5
  113. package/src/components/AppSidebar.vue +0 -4
  114. package/src/components/AppToastContainer.vue +6 -8
  115. package/src/components/AppTopBar.vue +0 -4
  116. package/src/components/ArtifactSaveDialog.vue +0 -4
  117. package/src/components/ArtifactSelectorModal.vue +0 -4
  118. package/src/components/AuditTrail.story.vue +18 -0
  119. package/src/components/AuditTrail.vue +27 -7
  120. package/src/components/AutoGroupModal.vue +0 -4
  121. package/src/components/Avatar.vue +0 -4
  122. package/src/components/BaseButton.vue +0 -4
  123. package/src/components/BaseCheckbox.vue +0 -4
  124. package/src/components/BaseInput.vue +0 -4
  125. package/src/components/BaseModal.vue +0 -4
  126. package/src/components/BasePill.vue +0 -4
  127. package/src/components/BaseRadioGroup.vue +0 -4
  128. package/src/components/BaseSelect.vue +0 -4
  129. package/src/components/BaseSlider.vue +0 -4
  130. package/src/components/BaseTabs.vue +0 -4
  131. package/src/components/BaseTextarea.vue +0 -4
  132. package/src/components/BaseToggle.vue +0 -4
  133. package/src/components/BatchProgressList.story.vue +18 -0
  134. package/src/components/BatchProgressList.vue +32 -4
  135. package/src/components/Breadcrumb.vue +0 -4
  136. package/src/components/Calendar.vue +0 -4
  137. package/src/components/ChartContainer.story.vue +1 -1
  138. package/src/components/ChartContainer.vue +0 -4
  139. package/src/components/ChemicalFormula.vue +0 -4
  140. package/src/components/CollapsibleCard.vue +0 -4
  141. package/src/components/ColorSlider.vue +0 -4
  142. package/src/components/ConcentrationInput.vue +0 -4
  143. package/src/components/ConfirmDialog.vue +0 -4
  144. package/src/components/DataFrame.story.vue +14 -0
  145. package/src/components/DataFrame.vue +97 -23
  146. package/src/components/DatePicker.vue +73 -27
  147. package/src/components/DateTimePicker.vue +45 -17
  148. package/src/components/Divider.vue +0 -4
  149. package/src/components/DoseCalculator.vue +0 -4
  150. package/src/components/DropdownButton.vue +2 -14
  151. package/src/components/EmptyState.vue +0 -4
  152. package/src/components/ExperimentCodeBadge.vue +0 -4
  153. package/src/components/ExperimentDataViewer.story.vue +3 -0
  154. package/src/components/ExperimentDataViewer.vue +33 -13
  155. package/src/components/ExperimentPopover.vue +2 -5
  156. package/src/components/ExperimentSelectorModal.vue +0 -4
  157. package/src/components/ExperimentTimeline.story.vue +18 -0
  158. package/src/components/ExperimentTimeline.vue +81 -75
  159. package/src/components/FileUploader.vue +0 -4
  160. package/src/components/FitPanel.vue +0 -4
  161. package/src/components/FormActions.story.vue +96 -0
  162. package/src/components/FormActions.vue +0 -4
  163. package/src/components/FormBuilder.vue +0 -4
  164. package/src/components/FormField.vue +0 -4
  165. package/src/components/FormulaInput.vue +0 -4
  166. package/src/components/GeneratedPathInput.story.vue +68 -0
  167. package/src/components/GeneratedPlotlyResult.story.vue +96 -0
  168. package/src/components/GeneratedPlotlyResult.vue +3 -3
  169. package/src/components/GeneratedPluginView.story.vue +145 -0
  170. package/src/components/GeneratedPluginView.vue +10 -10
  171. package/src/components/GeneratedResultRenderer.story.vue +117 -0
  172. package/src/components/GeneratedResultRenderer.vue +4 -4
  173. package/src/components/GroupAssigner.vue +67 -5
  174. package/src/components/IconButton.vue +0 -4
  175. package/src/components/InstrumentAlertLog.vue +0 -4
  176. package/src/components/InstrumentStateBadge.vue +0 -4
  177. package/src/components/InstrumentStatusCard.vue +0 -4
  178. package/src/components/JobsStatusTray.vue +0 -4
  179. package/src/components/LcmsSequenceTable.vue +81 -50
  180. package/src/components/LoadingSpinner.vue +0 -4
  181. package/src/components/MobileSupportGate.vue +0 -4
  182. package/src/components/MoleculeInput.vue +0 -4
  183. package/src/components/MultiSelect.vue +0 -4
  184. package/src/components/NumberInput.vue +0 -4
  185. package/src/components/PlateMapEditor.vue +3 -14
  186. package/src/components/PluginIcon.vue +0 -4
  187. package/src/components/ProgressBar.vue +0 -4
  188. package/src/components/ProtocolStepEditor.vue +2 -4
  189. package/src/components/RackEditor.vue +51 -70
  190. package/src/components/ReagentEditor.vue +0 -4
  191. package/src/components/ReagentList.story.vue +18 -0
  192. package/src/components/ReagentList.vue +127 -82
  193. package/src/components/ResourceCard.vue +0 -4
  194. package/src/components/RuntimeUpdateNotice.story.vue +49 -0
  195. package/src/components/RuntimeUpdateNotice.vue +4 -4
  196. package/src/components/SampleHierarchyTree.story.vue +18 -0
  197. package/src/components/SampleHierarchyTree.vue +32 -9
  198. package/src/components/SampleLegend.vue +2 -8
  199. package/src/components/SampleSelector.drag.ts +51 -0
  200. package/src/components/SampleSelector.story.vue +6 -0
  201. package/src/components/SampleSelector.tree.ts +2 -0
  202. package/src/components/SampleSelector.vue +49 -10
  203. package/src/components/SampleSelectorGroupNode.vue +19 -0
  204. package/src/components/ScheduleCalendar.story.vue +6 -0
  205. package/src/components/ScheduleCalendar.vue +82 -7
  206. package/src/components/ScientificNumber.vue +0 -4
  207. package/src/components/SectionCard.vue +0 -4
  208. package/src/components/SegmentedControl.vue +48 -5
  209. package/src/components/SequenceInput.vue +0 -4
  210. package/src/components/SequenceProgressBar.story.vue +110 -0
  211. package/src/components/SequenceProgressBar.vue +0 -4
  212. package/src/components/SettingsModal.vue +0 -4
  213. package/src/components/Skeleton.vue +0 -4
  214. package/src/components/SmartGroupFieldRecipe.vue +8 -6
  215. package/src/components/SmartGroupManual.vue +0 -4
  216. package/src/components/StatusIndicator.vue +0 -4
  217. package/src/components/StepWizard.vue +0 -4
  218. package/src/components/TagsInput.vue +4 -6
  219. package/src/components/ThemeToggle.vue +0 -4
  220. package/src/components/TimePicker.vue +36 -7
  221. package/src/components/TimeRangeInput.vue +0 -4
  222. package/src/components/Tooltip.story.vue +3 -3
  223. package/src/components/Tooltip.vue +0 -4
  224. package/src/components/UnitInput.vue +0 -4
  225. package/src/components/WellPlate.geometry.ts +60 -1
  226. package/src/components/WellPlate.interaction.ts +44 -0
  227. package/src/components/WellPlate.story.vue +8 -0
  228. package/src/components/WellPlate.vue +53 -7
  229. package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
  230. package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
  231. package/src/components/internal/DataStateInternal.vue +74 -0
  232. package/src/components/internal/FormSectionRenderer.vue +0 -4
  233. package/src/components/internal/WellEditPopupInternal.vue +0 -4
  234. package/src/composables/controlSchemaTypes.ts +34 -0
  235. package/src/composables/index.ts +10 -0
  236. package/src/composables/useDropdownState.ts +35 -5
  237. package/src/composables/useEventStream.ts +14 -2
  238. package/src/composables/useFileImport.ts +2 -7
  239. package/src/composables/useGeneratedAnalysis.ts +8 -9
  240. package/src/composables/useListReorder.story.vue +143 -0
  241. package/src/composables/useListReorder.ts +242 -0
  242. package/src/composables/useMenuKeyboard.ts +2 -2
  243. package/src/composables/useOptimisticMutation.ts +1 -15
  244. package/src/composables/usePluginConfig.ts +3 -1
  245. package/src/composables/useRackEditor.ts +2 -11
  246. package/src/composables/useRequestSyncState.ts +98 -28
  247. package/src/composables/useResourceCrud.ts +1 -15
  248. package/src/composables/useScheduleDrag.ts +37 -0
  249. package/src/composables/useWellPainting.ts +5 -29
  250. package/src/composables/useWellPlateEditor.ts +1 -11
  251. package/src/permissions.ts +48 -9
  252. package/src/stores/experiment.ts +2 -7
  253. package/src/stores/index.ts +9 -1
  254. package/src/stores/settings.ts +93 -1
  255. package/src/styles/components/audit-trail.css +5 -5
  256. package/src/styles/components/batch-progress-list.css +7 -0
  257. package/src/styles/components/color-slider.css +2 -2
  258. package/src/styles/components/data-state.css +30 -0
  259. package/src/styles/components/dataframe.css +29 -35
  260. package/src/styles/components/experiment-data-viewer.css +4 -4
  261. package/src/styles/components/experiment-timeline.css +3 -30
  262. package/src/styles/components/form-builder.css +5 -5
  263. package/src/styles/components/lcms-sequence-table.css +16 -1
  264. package/src/styles/components/multi-select.css +1 -1
  265. package/src/styles/components/reagent-list.css +38 -31
  266. package/src/styles/components/sample-hierarchy-tree.css +5 -19
  267. package/src/styles/components/sample-selector.css +9 -2
  268. package/src/styles/components/schedule-calendar.css +8 -0
  269. package/src/styles/components/scientific-number.css +1 -1
  270. package/src/styles/components/well-plate.css +8 -0
  271. package/src/styles/index.css +8 -0
  272. package/src/styles/variables.css +29 -0
  273. package/src/templates/builderPresetControls.ts +1 -1
  274. package/src/templates/componentPlateHelpers.ts +3 -1
  275. package/src/templates/doseResponseAdapters.ts +2 -13
  276. package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
  277. package/src/templates/plateMapBuilder.ts +2 -2
  278. package/src/templates/qpcrPlateBuilder.ts +1 -1
  279. package/src/templates/templateValidators.ts +1 -1
  280. package/src/templates/timeCourseBuilder.ts +2 -2
  281. package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
  282. package/src/utils/color.ts +51 -0
  283. package/src/utils/errors.ts +29 -0
  284. package/dist/EmptyState-NBqf2_8z.js.map +0 -1
  285. package/dist/ExperimentPopover-CfOdh5Rm.js.map +0 -1
  286. package/dist/ExperimentSelectorModal-DvIagrxY.js.map +0 -1
  287. package/dist/SettingsModal-W3TYfnP9.js.map +0 -1
  288. package/dist/components-B80gV0P6.js.map +0 -1
  289. package/dist/composables/autoGroupConstants.d.ts +0 -1
  290. package/dist/composables/autoGroupGrouping.d.ts +0 -3
  291. package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
  292. package/dist/composables-C8mmD5ta.js.map +0 -1
  293. package/dist/experiment-Y9Iz7KYi.js.map +0 -1
  294. package/dist/templates/builderDefaults.d.ts +0 -1
  295. package/dist/templates/plateGeometry.d.ts +0 -4
  296. package/dist/templates-CK72aKO1.js.map +0 -1
  297. package/dist/useApi-CDBq6z23.js.map +0 -1
  298. package/dist/useControlSchema-_OVhavKq.js.map +0 -1
  299. package/dist/useDropdownState-D5G4UvWd.js.map +0 -1
  300. package/dist/useProtocolTemplates-Dq5Pzwyd.js.map +0 -1
  301. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
  302. package/src/composables/autoGroupConstants.ts +0 -4
  303. package/src/composables/autoGroupGrouping.ts +0 -148
  304. package/src/composables/useAutoGroupInputSources.ts +0 -147
  305. package/src/templates/builderDefaults.ts +0 -11
  306. package/src/templates/plateGeometry.ts +0 -62
  307. /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → components/DataStates.test.d.ts} +0 -0
@@ -1,5 +1,3 @@
1
- import "../experiment-utils-DV3DrvE_.js";
2
- import "../EmptyState-NBqf2_8z.js";
3
- import "../useControlSchema-_OVhavKq.js";
4
- import { $ as toTimeCourseRows, $t as listBioTemplatePacks, A as createSamplePrepTemplate, At as toCalibrationCurveRows, B as toBioTemplateComponentProps, Bt as validatePlateMapData, C as createFlowCytometryPanelTemplate, Ct as toInstrumentRunScheduleEvents, D as createTimeCourseTemplate, Dt as toFlowPanelRows, E as createProtocolStepsTemplate, Et as toFlowPanelDataFrame, F as getBioTemplateComponentProps, Ft as validateAssayMatrixData, G as toTemplateDataFrame, Gt as validateSampleSheetData, H as toBioTemplateComponentPropsById, Ht as validateQpcrPlateData, I as listBioTemplateComponentBindings, It as validateCalibrationCurveData, J as toDoseLayoutState, Jt as getBioTemplatePresetInfo, K as toWellMapArray, Kt as validateTimeCourseData, L as toBioTemplateComponentBindings, Lt as validateDoseResponseData, M as createPlateMapTemplate, Mt as toAssayMatrixDataFrame, N as bioTemplatePresetControlValuesToOptions, Nt as toAssayMatrixRows, O as createCalibrationCurveTemplate, Ot as toCalibrationCurveColumns, P as getBioTemplateComponentBindings, Pt as toAssayMatrixSampleOptions, Q as toTimeCourseDataFrame, Qt as getBioTemplatePackInfo, R as toBioTemplateComponentBindingsById, Rt as validateFlowCytometryPanelData, S as createInstrumentRunTemplate, St as toInstrumentRunRows, T as createAssayMatrixTemplate, Tt as toFlowPanelColumns, U as toBioTemplateComponentSnippets, Ut as validateReagentListData, V as toBioTemplateComponentPropsByComponent, Vt as validateProtocolStepsData, W as toBioTemplateComponentUsage, Wt as validateSamplePrepData, X as toWellPlateWells, Xt as searchBioTemplatePresets, Y as toPlateMapEditorState, Yt as listBioTemplatePresets, Z as toTimeCourseColumns, Zt as bioTemplatePacks, _ as createElisaAssayCollection, _t as toProtocolDataFrame, a as getBioTemplateControlDefaults, an as TEMPLATE_COLLECTION_KEY, at as toSamplePrepColumns, b as createQpcrExpressionCollection, bt as toInstrumentRunColumns, c as listBioTemplatePresetControlSchemas, cn as createTemplateEnvelope, ct as toReagentColumns, d as createBioTemplatePresetCollectionFromControls, dn as extractTemplateCollection, dt as toReagentRows, en as searchBioTemplatePacks, et as toTimeCourseSteps, f as createWellPlateScreenCollection, fn as getTemplateData, ft as toQpcrColumns, g as createFlowCytometryAssayCollection, gt as toProtocolColumns, h as createWesternBlotAssayCollection, ht as toQpcrWellPlateWells, i as createBioTemplateControlToolkit, in as searchBioTemplateCatalog, it as toSampleRows, j as createSampleSheetTemplate, jt as toAssayMatrixColumns, k as createDoseResponseTemplate, kt as toCalibrationCurveDataFrame, l as requireBioTemplateControlSchema, ln as ensureTemplateEnvelope, lt as toReagentDataFrame, m as createDefaultBioTemplate, mt as toQpcrRows, n as bioTemplateControlsToSectionFormSchemas, nn as getBioTemplateInfo, nt as toSampleDataFrame, o as getBioTemplateControlSchema, on as assertTemplateEnvelope, ot as toSamplePrepDataFrame, p as createBioTemplatePackCollection, pt as toQpcrDataFrame, q as toDoseConditions, qt as bioTemplatePresets, r as bioTemplateControlsToSidebarPanels, rn as listBioTemplateCatalog, rt as toSampleOptions, s as listBioTemplateControlSchemas, sn as createTemplateCollection, st as toSamplePrepRows, t as bioTemplateControlsToFormSchema, tn as bioTemplateCatalog, tt as toSampleColumns, u as createBioTemplatePresetCollection, un as ensureTemplateFromCollection, ut as toReagentListItems, v as createTargetedMetabolomicsCollection, vt as toProtocolRows, w as createReagentListTemplate, wt as toInstrumentRunSteps, x as createQpcrPlateTemplate, xt as toInstrumentRunDataFrame, y as createLcmsBatchCollection, yt as toProtocolSteps, z as toBioTemplateComponentImports, zt as validateInstrumentRunData } from "../templates-CK72aKO1.js";
1
+ import "../useControlSchema-aMZlb4Sc.js";
2
+ import { $ as toTimeCourseRows, $t as listBioTemplatePacks, A as createSamplePrepTemplate, At as toCalibrationCurveRows, B as toBioTemplateComponentProps, Bt as validatePlateMapData, C as createFlowCytometryPanelTemplate, Ct as toInstrumentRunScheduleEvents, D as createTimeCourseTemplate, Dt as toFlowPanelRows, E as createProtocolStepsTemplate, Et as toFlowPanelDataFrame, F as getBioTemplateComponentProps, Ft as validateAssayMatrixData, G as toTemplateDataFrame, Gt as validateSampleSheetData, H as toBioTemplateComponentPropsById, Ht as validateQpcrPlateData, I as listBioTemplateComponentBindings, It as validateCalibrationCurveData, J as toDoseLayoutState, Jt as getBioTemplatePresetInfo, K as toWellMapArray, Kt as validateTimeCourseData, L as toBioTemplateComponentBindings, Lt as validateDoseResponseData, M as createPlateMapTemplate, Mt as toAssayMatrixDataFrame, N as bioTemplatePresetControlValuesToOptions, Nt as toAssayMatrixRows, O as createCalibrationCurveTemplate, Ot as toCalibrationCurveColumns, P as getBioTemplateComponentBindings, Pt as toAssayMatrixSampleOptions, Q as toTimeCourseDataFrame, Qt as getBioTemplatePackInfo, R as toBioTemplateComponentBindingsById, Rt as validateFlowCytometryPanelData, S as createInstrumentRunTemplate, St as toInstrumentRunRows, T as createAssayMatrixTemplate, Tt as toFlowPanelColumns, U as toBioTemplateComponentSnippets, Ut as validateReagentListData, V as toBioTemplateComponentPropsByComponent, Vt as validateProtocolStepsData, W as toBioTemplateComponentUsage, Wt as validateSamplePrepData, X as toWellPlateWells, Xt as searchBioTemplatePresets, Y as toPlateMapEditorState, Yt as listBioTemplatePresets, Z as toTimeCourseColumns, Zt as bioTemplatePacks, _ as createElisaAssayCollection, _t as toProtocolDataFrame, a as getBioTemplateControlDefaults, an as TEMPLATE_COLLECTION_KEY, at as toSamplePrepColumns, b as createQpcrExpressionCollection, bt as toInstrumentRunColumns, c as listBioTemplatePresetControlSchemas, cn as createTemplateEnvelope, ct as toReagentColumns, d as createBioTemplatePresetCollectionFromControls, dn as extractTemplateCollection, dt as toReagentRows, en as searchBioTemplatePacks, et as toTimeCourseSteps, f as createWellPlateScreenCollection, fn as getTemplateData, ft as toQpcrColumns, g as createFlowCytometryAssayCollection, gt as toProtocolColumns, h as createWesternBlotAssayCollection, ht as toQpcrWellPlateWells, i as createBioTemplateControlToolkit, in as searchBioTemplateCatalog, it as toSampleRows, j as createSampleSheetTemplate, jt as toAssayMatrixColumns, k as createDoseResponseTemplate, kt as toCalibrationCurveDataFrame, l as requireBioTemplateControlSchema, ln as ensureTemplateEnvelope, lt as toReagentDataFrame, m as createDefaultBioTemplate, mt as toQpcrRows, n as bioTemplateControlsToSectionFormSchemas, nn as getBioTemplateInfo, nt as toSampleDataFrame, o as getBioTemplateControlSchema, on as assertTemplateEnvelope, ot as toSamplePrepDataFrame, p as createBioTemplatePackCollection, pt as toQpcrDataFrame, q as toDoseConditions, qt as bioTemplatePresets, r as bioTemplateControlsToSidebarPanels, rn as listBioTemplateCatalog, rt as toSampleOptions, s as listBioTemplateControlSchemas, sn as createTemplateCollection, st as toSamplePrepRows, t as bioTemplateControlsToFormSchema, tn as bioTemplateCatalog, tt as toSampleColumns, u as createBioTemplatePresetCollection, un as ensureTemplateFromCollection, ut as toReagentListItems, v as createTargetedMetabolomicsCollection, vt as toProtocolRows, w as createReagentListTemplate, wt as toInstrumentRunSteps, x as createQpcrPlateTemplate, xt as toInstrumentRunDataFrame, y as createLcmsBatchCollection, yt as toProtocolSteps, z as toBioTemplateComponentImports, zt as validateInstrumentRunData } from "../templates-Qq113pyZ.js";
5
3
  export { TEMPLATE_COLLECTION_KEY, assertTemplateEnvelope, bioTemplateCatalog, bioTemplateControlsToFormSchema, bioTemplateControlsToSectionFormSchemas, bioTemplateControlsToSidebarPanels, bioTemplatePacks, bioTemplatePresetControlValuesToOptions, bioTemplatePresets, createAssayMatrixTemplate, createBioTemplateControlToolkit, createBioTemplatePackCollection, createBioTemplatePresetCollection, createBioTemplatePresetCollectionFromControls, createCalibrationCurveTemplate, createDefaultBioTemplate, createDoseResponseTemplate, createElisaAssayCollection, createFlowCytometryAssayCollection, createFlowCytometryPanelTemplate, createInstrumentRunTemplate, createLcmsBatchCollection, createPlateMapTemplate, createProtocolStepsTemplate, createQpcrExpressionCollection, createQpcrPlateTemplate, createReagentListTemplate, createSamplePrepTemplate, createSampleSheetTemplate, createTargetedMetabolomicsCollection, createTemplateCollection, createTemplateEnvelope, createTimeCourseTemplate, createWellPlateScreenCollection, createWesternBlotAssayCollection, ensureTemplateEnvelope, ensureTemplateFromCollection, extractTemplateCollection, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlDefaults, getBioTemplateControlSchema, getBioTemplateInfo, getBioTemplatePackInfo, getBioTemplatePresetInfo, getTemplateData, listBioTemplateCatalog, listBioTemplateComponentBindings, listBioTemplateControlSchemas, listBioTemplatePacks, listBioTemplatePresetControlSchemas, listBioTemplatePresets, requireBioTemplateControlSchema, searchBioTemplateCatalog, searchBioTemplatePacks, searchBioTemplatePresets, 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, 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, validateAssayMatrixData, validateCalibrationCurveData, validateDoseResponseData, validateFlowCytometryPanelData, validateInstrumentRunData, validatePlateMapData, validateProtocolStepsData, validateQpcrPlateData, validateReagentListData, validateSamplePrepData, validateSampleSheetData, validateTimeCourseData };
@@ -1,4 +1,286 @@
1
- import { _ as controlsToFormSchema, i as useControlSchema, nt as isObjectLike, r as getControlDefaults, rt as isRecord, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas } from "./useControlSchema-_OVhavKq.js";
1
+ import { _ as controlsToFormSchema, i as useControlSchema, nt as isObjectLike, r as getControlDefaults, rt as isRecord, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas } from "./useControlSchema-aMZlb4Sc.js";
2
+ //#region src/utils/color.ts
3
+ /**
4
+ * Canonical categorical scale for sample types, plate maps, dose-response
5
+ * series and legends. Mirrors `--mint-sample-1` … `--mint-sample-9`.
6
+ */
7
+ var SAMPLE_COLOR_SCALE = [
8
+ "#3B82F6",
9
+ "#10B981",
10
+ "#EF4444",
11
+ "#F59E0B",
12
+ "#8B5CF6",
13
+ "#F97316",
14
+ "#06B6D4",
15
+ "#14B8A6",
16
+ "#6B7280"
17
+ ];
18
+ /**
19
+ * Slot-position colors shared by `PlateMapEditor` and `RackEditor`.
20
+ * Mirrors `--mint-slot-r`, `--mint-slot-g`, `--mint-slot-b`, `--mint-slot-y`.
21
+ */
22
+ var SLOT_COLORS = {
23
+ R: "#ef4444",
24
+ G: "#22c55e",
25
+ B: "#3b82f6",
26
+ Y: "#eab308"
27
+ };
28
+ /** Slot positions in their canonical display order. */
29
+ var SLOT_ORDER = [
30
+ "R",
31
+ "G",
32
+ "B",
33
+ "Y"
34
+ ];
35
+ var HEX_RE = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
36
+ function clamp(n, min, max) {
37
+ return Math.min(max, Math.max(min, n));
38
+ }
39
+ function hexToHsl(hex) {
40
+ const match = HEX_RE.exec(hex.trim());
41
+ if (!match) return {
42
+ h: 0,
43
+ s: 0,
44
+ l: 50
45
+ };
46
+ let raw = match[1];
47
+ if (raw.length === 3) raw = raw.split("").map((c) => c + c).join("");
48
+ const r = parseInt(raw.slice(0, 2), 16) / 255;
49
+ const g = parseInt(raw.slice(2, 4), 16) / 255;
50
+ const b = parseInt(raw.slice(4, 6), 16) / 255;
51
+ const max = Math.max(r, g, b);
52
+ const min = Math.min(r, g, b);
53
+ const delta = max - min;
54
+ let h = 0;
55
+ if (delta !== 0) if (max === r) h = (g - b) / delta % 6;
56
+ else if (max === g) h = (b - r) / delta + 2;
57
+ else h = (r - g) / delta + 4;
58
+ h = (h * 60 + 360) % 360;
59
+ const l = (max + min) / 2;
60
+ const s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
61
+ return {
62
+ h,
63
+ s: s * 100,
64
+ l: l * 100
65
+ };
66
+ }
67
+ function hslToHex(h, s, l) {
68
+ const sNorm = clamp(s, 0, 100) / 100;
69
+ const lNorm = clamp(l, 0, 100) / 100;
70
+ const hNorm = (h % 360 + 360) % 360;
71
+ const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;
72
+ const x = c * (1 - Math.abs(hNorm / 60 % 2 - 1));
73
+ const m = lNorm - c / 2;
74
+ let r = 0, g = 0, b = 0;
75
+ if (hNorm < 60) [r, g, b] = [
76
+ c,
77
+ x,
78
+ 0
79
+ ];
80
+ else if (hNorm < 120) [r, g, b] = [
81
+ x,
82
+ c,
83
+ 0
84
+ ];
85
+ else if (hNorm < 180) [r, g, b] = [
86
+ 0,
87
+ c,
88
+ x
89
+ ];
90
+ else if (hNorm < 240) [r, g, b] = [
91
+ 0,
92
+ x,
93
+ c
94
+ ];
95
+ else if (hNorm < 300) [r, g, b] = [
96
+ x,
97
+ 0,
98
+ c
99
+ ];
100
+ else [r, g, b] = [
101
+ c,
102
+ 0,
103
+ x
104
+ ];
105
+ const toHex = (n) => Math.round((n + m) * 255).toString(16).padStart(2, "0");
106
+ return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
107
+ }
108
+ /**
109
+ * Derive a same-hue-family shade of `parentHex` for child at `index` of `total`.
110
+ *
111
+ * Lightness is distributed evenly within [35, 75] so all children remain
112
+ * readable on light/dark backgrounds. Hue and saturation are inherited from
113
+ * the parent. With `total <= 1`, returns the parent unchanged.
114
+ *
115
+ * Children are ordered light → dark by index, so index 0 is the brightest
116
+ * sibling and index `total - 1` is the darkest.
117
+ */
118
+ function deriveShade(parentHex, index, total) {
119
+ if (total <= 1) return parentHex;
120
+ const { h, s, l } = hexToHsl(parentHex);
121
+ const L_MIN = 35;
122
+ const L_MAX = 75;
123
+ const spread = Math.min(L_MAX - L_MIN, 40);
124
+ const center = clamp(l, L_MIN + spread / 2, L_MAX - spread / 2);
125
+ const top = center + spread / 2;
126
+ const bot = center - spread / 2;
127
+ const childL = top - (total === 1 ? .5 : index / (total - 1)) * (top - bot);
128
+ return hslToHex(h, clamp(s, 35, 100), childL);
129
+ }
130
+ //#endregion
131
+ //#region src/components/WellPlate.geometry.ts
132
+ var PLATE_CONFIGS = {
133
+ 6: {
134
+ rows: 2,
135
+ cols: 3
136
+ },
137
+ 12: {
138
+ rows: 3,
139
+ cols: 4
140
+ },
141
+ 24: {
142
+ rows: 4,
143
+ cols: 6
144
+ },
145
+ 48: {
146
+ rows: 6,
147
+ cols: 8
148
+ },
149
+ 54: {
150
+ rows: 6,
151
+ cols: 9
152
+ },
153
+ 96: {
154
+ rows: 8,
155
+ cols: 12
156
+ },
157
+ 384: {
158
+ rows: 16,
159
+ cols: 24
160
+ }
161
+ };
162
+ var WELL_PLATE_SIZE_CONFIGS = {
163
+ sm: {
164
+ cellWidth: "40px",
165
+ cellHeight: "40px",
166
+ headerWidth: "32px",
167
+ headerHeight: "32px",
168
+ fontSize: "0.625rem",
169
+ gap: "2px"
170
+ },
171
+ md: {
172
+ cellWidth: "56px",
173
+ cellHeight: "32px",
174
+ headerWidth: "32px",
175
+ headerHeight: "24px",
176
+ fontSize: "0.75rem",
177
+ gap: "3px"
178
+ },
179
+ lg: {
180
+ cellWidth: "80px",
181
+ cellHeight: "40px",
182
+ headerWidth: "40px",
183
+ headerHeight: "32px",
184
+ fontSize: "0.875rem",
185
+ gap: "4px"
186
+ },
187
+ xl: {
188
+ cellWidth: "96px",
189
+ cellHeight: "48px",
190
+ headerWidth: "48px",
191
+ headerHeight: "40px",
192
+ fontSize: "1rem",
193
+ gap: "4px"
194
+ },
195
+ fill: {
196
+ cellWidth: "100%",
197
+ cellHeight: "32px",
198
+ headerWidth: "32px",
199
+ headerHeight: "24px",
200
+ fontSize: "0.75rem",
201
+ gap: "2px"
202
+ }
203
+ };
204
+ /**
205
+ * Spreadsheet-style row label for a zero-based row index: A…Z, then AA, AB, …
206
+ *
207
+ * This is the single row-label generator for the SDK — plate grids, rack
208
+ * grids, well-id parsing and the template builders all go through it.
209
+ */
210
+ function rowLabel(index) {
211
+ let label = "";
212
+ let current = index;
213
+ for (;;) {
214
+ label = String.fromCharCode(65 + current % 26) + label;
215
+ current = Math.floor(current / 26) - 1;
216
+ if (current < 0) return label;
217
+ }
218
+ }
219
+ /** Inverse of {@link rowLabel}: 'A' → 0, 'Z' → 25, 'AA' → 26. */
220
+ function rowIndex(label) {
221
+ return [...label].reduce((value, char) => value * 26 + char.charCodeAt(0) - 64, 0) - 1;
222
+ }
223
+ function createPlateRowLabels(config) {
224
+ return Array.from({ length: config.rows }, (_, index) => rowLabel(index));
225
+ }
226
+ function plateConfigOrThrow(format) {
227
+ const config = PLATE_CONFIGS[format];
228
+ if (!config) throw new Error(`Unsupported plate format '${format}'.`);
229
+ return config;
230
+ }
231
+ /** Every well id of a plate, row-major (A1, A2, … B1, …). */
232
+ function wellIdsForFormat(format) {
233
+ const { rows, cols } = plateConfigOrThrow(format);
234
+ return Array.from({ length: rows }, (_, row) => Array.from({ length: cols }, (_col, col) => `${rowLabel(row)}${col + 1}`)).flat();
235
+ }
236
+ /** Throw unless `wellId` names a well that exists on a `format`-well plate. */
237
+ function assertWellInFormat(wellId, format) {
238
+ const { rows, cols } = plateConfigOrThrow(format);
239
+ const match = /^([A-Z]+)([1-9][0-9]*)$/.exec(wellId.toUpperCase());
240
+ if (!match) throw new Error(`Invalid well id '${wellId}'.`);
241
+ const row = rowIndex(match[1]);
242
+ const col = Number(match[2]) - 1;
243
+ if (row < 0 || col < 0 || row >= rows || col >= cols) throw new Error(`Well '${wellId}' is outside a ${format}-well plate.`);
244
+ }
245
+ /** Coerce an unknown value to a supported plate format, else `fallback`. */
246
+ function readPlateFormat(value, fallback) {
247
+ const parsed = typeof value === "number" ? value : typeof value === "string" ? Number(value) : NaN;
248
+ return parsed in PLATE_CONFIGS ? parsed : fallback;
249
+ }
250
+ function createPlateColumnLabels(config) {
251
+ return Array.from({ length: config.cols }, (_, index) => index + 1);
252
+ }
253
+ function createWellGrid(config, rowLabels, wells) {
254
+ const grid = [];
255
+ for (let row = 0; row < config.rows; row++) {
256
+ const rowWells = [];
257
+ for (let col = 0; col < config.cols; col++) {
258
+ const id = `${rowLabels[row]}${col + 1}`;
259
+ const wellData = wells[id] || {};
260
+ rowWells.push({
261
+ id,
262
+ row,
263
+ col,
264
+ state: wellData.state || "empty",
265
+ sampleType: wellData.sampleType,
266
+ value: wellData.value,
267
+ metadata: wellData.metadata
268
+ });
269
+ }
270
+ grid.push(rowWells);
271
+ }
272
+ return grid;
273
+ }
274
+ function getRectangleWellIds(start, end, rowLabels) {
275
+ const minRow = Math.min(start.row, end.row);
276
+ const maxRow = Math.max(start.row, end.row);
277
+ const minCol = Math.min(start.col, end.col);
278
+ const maxCol = Math.max(start.col, end.col);
279
+ const wells = /* @__PURE__ */ new Set();
280
+ for (let row = minRow; row <= maxRow; row++) for (let col = minCol; col <= maxCol; col++) wells.add(`${rowLabels[row]}${col + 1}`);
281
+ return wells;
282
+ }
283
+ //#endregion
2
284
  //#region src/templates/builderReadUtils.ts
3
285
  function readStringList(value, fallback) {
4
286
  if (Array.isArray(value)) {
@@ -1120,49 +1402,6 @@ function binding(templateId, component, adapters, props, description) {
1120
1402
  };
1121
1403
  }
1122
1404
  //#endregion
1123
- //#region src/templates/plateGeometry.ts
1124
- var PLATE_DIMENSIONS = {
1125
- 6: [2, 3],
1126
- 12: [3, 4],
1127
- 24: [4, 6],
1128
- 48: [6, 8],
1129
- 54: [6, 9],
1130
- 96: [8, 12],
1131
- 384: [16, 24]
1132
- };
1133
- function wellIdsForFormat(format) {
1134
- const dimensions = PLATE_DIMENSIONS[format];
1135
- if (!dimensions) throw new Error(`Unsupported plate format '${format}'.`);
1136
- const [rows, cols] = dimensions;
1137
- return Array.from({ length: rows }, (_, row) => Array.from({ length: cols }, (_col, col) => `${rowLabel(row)}${col + 1}`)).flat();
1138
- }
1139
- function assertWellInFormat(wellId, format) {
1140
- const dimensions = PLATE_DIMENSIONS[format];
1141
- if (!dimensions) throw new Error(`Unsupported plate format '${format}'.`);
1142
- const match = /^([A-Z]+)([1-9][0-9]*)$/.exec(wellId.toUpperCase());
1143
- if (!match) throw new Error(`Invalid well id '${wellId}'.`);
1144
- const row = rowIndex(match[1]);
1145
- const col = Number(match[2]) - 1;
1146
- const [rows, cols] = dimensions;
1147
- if (row < 0 || col < 0 || row >= rows || col >= cols) throw new Error(`Well '${wellId}' is outside a ${format}-well plate.`);
1148
- }
1149
- function readPlateFormat(value, fallback) {
1150
- const parsed = typeof value === "number" ? value : typeof value === "string" ? Number(value) : NaN;
1151
- return parsed in PLATE_DIMENSIONS ? parsed : fallback;
1152
- }
1153
- function rowLabel(index) {
1154
- let label = "";
1155
- let current = index;
1156
- while (true) {
1157
- label = String.fromCharCode(65 + current % 26) + label;
1158
- current = Math.floor(current / 26) - 1;
1159
- if (current < 0) return label;
1160
- }
1161
- }
1162
- function rowIndex(label) {
1163
- return [...label].reduce((value, char) => value * 26 + char.charCodeAt(0) - 64, 0) - 1;
1164
- }
1165
- //#endregion
1166
1405
  //#region src/templates/templateValidators.ts
1167
1406
  function validatePlateMapData(data) {
1168
1407
  if (!Array.isArray(data.plates) || data.plates.length === 0) throw new Error("Plate-map template requires at least one plate.");
@@ -2313,23 +2552,12 @@ function toWellPlateWells(template, plateId) {
2313
2552
  }
2314
2553
  //#endregion
2315
2554
  //#region src/templates/doseResponseAdapters.ts
2316
- var CONDITION_COLORS = [
2317
- "#3B82F6",
2318
- "#10B981",
2319
- "#EF4444",
2320
- "#F59E0B",
2321
- "#8B5CF6",
2322
- "#F97316",
2323
- "#06B6D4",
2324
- "#14B8A6",
2325
- "#6B7280"
2326
- ];
2327
2555
  function toDoseConditions(template) {
2328
2556
  const data = getTemplateData(template, "dose-response");
2329
2557
  validateDoseResponseData(data);
2330
2558
  return data.compounds.map((compound, index) => ({
2331
2559
  label: compound.name,
2332
- color: String(compound.metadata?.color ?? CONDITION_COLORS[index % CONDITION_COLORS.length]),
2560
+ color: String(compound.metadata?.color ?? SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]),
2333
2561
  concentrations: compound.concentrations,
2334
2562
  unit: data.unit
2335
2563
  }));
@@ -2375,16 +2603,7 @@ function legendItemsFromPlateState(state) {
2375
2603
  }));
2376
2604
  }
2377
2605
  function colorForIndex(index) {
2378
- const colors = [
2379
- "#3B82F6",
2380
- "#10B981",
2381
- "#EF4444",
2382
- "#F59E0B",
2383
- "#8B5CF6",
2384
- "#F97316",
2385
- "#06B6D4",
2386
- "#14B8A6"
2387
- ];
2606
+ const colors = SAMPLE_COLOR_SCALE.slice(0, 8);
2388
2607
  return colors[index % colors.length];
2389
2608
  }
2390
2609
  //#endregion
@@ -2728,19 +2947,6 @@ function bioTemplatePresetControlValuesToOptions(name, values) {
2728
2947
  throw new Error(`Unknown template preset '${name}'.`);
2729
2948
  }
2730
2949
  //#endregion
2731
- //#region src/templates/builderDefaults.ts
2732
- var DEFAULT_SAMPLE_COLORS = [
2733
- "#3B82F6",
2734
- "#10B981",
2735
- "#EF4444",
2736
- "#F59E0B",
2737
- "#8B5CF6",
2738
- "#F97316",
2739
- "#06B6D4",
2740
- "#14B8A6",
2741
- "#6B7280"
2742
- ];
2743
- //#endregion
2744
2950
  //#region src/templates/builderIdUtils.ts
2745
2951
  function sampleIdFromName(name, index) {
2746
2952
  return idFromName(name, `sample-${index + 1}`);
@@ -2764,7 +2970,7 @@ function createPlateMapTemplate(options = {}) {
2764
2970
  return {
2765
2971
  id: sampleIdFromName(sample, index),
2766
2972
  name: sample,
2767
- color: DEFAULT_SAMPLE_COLORS[index % DEFAULT_SAMPLE_COLORS.length]
2973
+ color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]
2768
2974
  };
2769
2975
  });
2770
2976
  return createTemplateEnvelope("plate-map", {
@@ -3067,7 +3273,7 @@ function createTimeCourseTemplate(options) {
3067
3273
  return {
3068
3274
  id: idFromName(condition, `condition-${index + 1}`),
3069
3275
  name: condition,
3070
- color: DEFAULT_SAMPLE_COLORS[index % DEFAULT_SAMPLE_COLORS.length],
3276
+ color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length],
3071
3277
  metadata: {}
3072
3278
  };
3073
3279
  });
@@ -3682,7 +3888,7 @@ function createElisaAssayCollection(options = {}) {
3682
3888
  ...sampleRecords.map((sample, index) => ({
3683
3889
  id: sample.sampleId,
3684
3890
  name: sample.name ?? sample.sampleId,
3685
- color: DEFAULT_SAMPLE_COLORS[index % DEFAULT_SAMPLE_COLORS.length]
3891
+ color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]
3686
3892
  }))
3687
3893
  ]
3688
3894
  }),
@@ -4024,7 +4230,7 @@ function createWellPlateScreenCollection(options = {}) {
4024
4230
  samples: sampleRecords.map((sample, index) => ({
4025
4231
  id: sample.sampleId,
4026
4232
  name: sample.name ?? sample.sampleId,
4027
- color: DEFAULT_SAMPLE_COLORS[index % DEFAULT_SAMPLE_COLORS.length]
4233
+ color: SAMPLE_COLOR_SCALE[index % SAMPLE_COLOR_SCALE.length]
4028
4234
  }))
4029
4235
  });
4030
4236
  return createTemplateCollection([
@@ -5049,6 +5255,6 @@ function getBioTemplateControlDefaults(target) {
5049
5255
  return getControlDefaults(requireBioTemplateControlSchema(target));
5050
5256
  }
5051
5257
  //#endregion
5052
- export { toTimeCourseRows as $, listBioTemplatePacks as $t, createSamplePrepTemplate as A, toCalibrationCurveRows as At, toBioTemplateComponentProps as B, validatePlateMapData as Bt, createFlowCytometryPanelTemplate as C, toInstrumentRunScheduleEvents as Ct, createTimeCourseTemplate as D, toFlowPanelRows as Dt, createProtocolStepsTemplate as E, toFlowPanelDataFrame as Et, getBioTemplateComponentProps as F, validateAssayMatrixData as Ft, toTemplateDataFrame as G, validateSampleSheetData as Gt, toBioTemplateComponentPropsById as H, validateQpcrPlateData as Ht, listBioTemplateComponentBindings as I, validateCalibrationCurveData as It, toDoseLayoutState as J, getBioTemplatePresetInfo as Jt, toWellMapArray as K, validateTimeCourseData as Kt, toBioTemplateComponentBindings as L, validateDoseResponseData as Lt, createPlateMapTemplate as M, toAssayMatrixDataFrame as Mt, bioTemplatePresetControlValuesToOptions as N, toAssayMatrixRows as Nt, createCalibrationCurveTemplate as O, toCalibrationCurveColumns as Ot, getBioTemplateComponentBindings as P, toAssayMatrixSampleOptions as Pt, toTimeCourseDataFrame as Q, getBioTemplatePackInfo as Qt, toBioTemplateComponentBindingsById as R, validateFlowCytometryPanelData as Rt, createInstrumentRunTemplate as S, toInstrumentRunRows as St, createAssayMatrixTemplate as T, toFlowPanelColumns as Tt, toBioTemplateComponentSnippets as U, validateReagentListData as Ut, toBioTemplateComponentPropsByComponent as V, validateProtocolStepsData as Vt, toBioTemplateComponentUsage as W, validateSamplePrepData as Wt, toWellPlateWells as X, searchBioTemplatePresets as Xt, toPlateMapEditorState as Y, listBioTemplatePresets as Yt, toTimeCourseColumns as Z, bioTemplatePacks as Zt, createElisaAssayCollection as _, toProtocolDataFrame as _t, getBioTemplateControlDefaults as a, TEMPLATE_COLLECTION_KEY as an, toSamplePrepColumns as at, createQpcrExpressionCollection as b, toInstrumentRunColumns as bt, listBioTemplatePresetControlSchemas as c, createTemplateEnvelope as cn, toReagentColumns as ct, createBioTemplatePresetCollectionFromControls as d, extractTemplateCollection as dn, toReagentRows as dt, searchBioTemplatePacks as en, toTimeCourseSteps as et, createWellPlateScreenCollection as f, getTemplateData as fn, toQpcrColumns as ft, createFlowCytometryAssayCollection as g, toProtocolColumns as gt, createWesternBlotAssayCollection as h, toQpcrWellPlateWells as ht, createBioTemplateControlToolkit as i, searchBioTemplateCatalog as in, toSampleRows as it, createSampleSheetTemplate as j, toAssayMatrixColumns as jt, createDoseResponseTemplate as k, toCalibrationCurveDataFrame as kt, requireBioTemplateControlSchema as l, ensureTemplateEnvelope as ln, toReagentDataFrame as lt, createDefaultBioTemplate as m, toQpcrRows as mt, bioTemplateControlsToSectionFormSchemas as n, getBioTemplateInfo as nn, toSampleDataFrame as nt, getBioTemplateControlSchema as o, assertTemplateEnvelope as on, toSamplePrepDataFrame as ot, createBioTemplatePackCollection as p, toQpcrDataFrame as pt, toDoseConditions as q, bioTemplatePresets as qt, bioTemplateControlsToSidebarPanels as r, listBioTemplateCatalog as rn, toSampleOptions as rt, listBioTemplateControlSchemas as s, createTemplateCollection as sn, toSamplePrepRows as st, bioTemplateControlsToFormSchema as t, bioTemplateCatalog as tn, toSampleColumns as tt, createBioTemplatePresetCollection as u, ensureTemplateFromCollection as un, toReagentListItems as ut, createTargetedMetabolomicsCollection as v, toProtocolRows as vt, createReagentListTemplate as w, toInstrumentRunSteps as wt, createQpcrPlateTemplate as x, toInstrumentRunDataFrame as xt, createLcmsBatchCollection as y, toProtocolSteps as yt, toBioTemplateComponentImports as z, validateInstrumentRunData as zt };
5258
+ export { toTimeCourseRows as $, listBioTemplatePacks as $t, createSamplePrepTemplate as A, toCalibrationCurveRows as At, toBioTemplateComponentProps as B, validatePlateMapData as Bt, createFlowCytometryPanelTemplate as C, SLOT_ORDER as Cn, toInstrumentRunScheduleEvents as Ct, createTimeCourseTemplate as D, toFlowPanelRows as Dt, createProtocolStepsTemplate as E, hslToHex as En, toFlowPanelDataFrame as Et, getBioTemplateComponentProps as F, validateAssayMatrixData as Ft, toTemplateDataFrame as G, validateSampleSheetData as Gt, toBioTemplateComponentPropsById as H, validateQpcrPlateData as Ht, listBioTemplateComponentBindings as I, validateCalibrationCurveData as It, toDoseLayoutState as J, getBioTemplatePresetInfo as Jt, toWellMapArray as K, validateTimeCourseData as Kt, toBioTemplateComponentBindings as L, validateDoseResponseData as Lt, createPlateMapTemplate as M, toAssayMatrixDataFrame as Mt, bioTemplatePresetControlValuesToOptions as N, toAssayMatrixRows as Nt, createCalibrationCurveTemplate as O, toCalibrationCurveColumns as Ot, getBioTemplateComponentBindings as P, toAssayMatrixSampleOptions as Pt, toTimeCourseDataFrame as Q, getBioTemplatePackInfo as Qt, toBioTemplateComponentBindingsById as R, validateFlowCytometryPanelData as Rt, createInstrumentRunTemplate as S, SLOT_COLORS as Sn, toInstrumentRunRows as St, createAssayMatrixTemplate as T, hexToHsl as Tn, toFlowPanelColumns as Tt, toBioTemplateComponentSnippets as U, validateReagentListData as Ut, toBioTemplateComponentPropsByComponent as V, validateProtocolStepsData as Vt, toBioTemplateComponentUsage as W, validateSamplePrepData as Wt, toWellPlateWells as X, searchBioTemplatePresets as Xt, toPlateMapEditorState as Y, listBioTemplatePresets as Yt, toTimeCourseColumns as Z, bioTemplatePacks as Zt, createElisaAssayCollection as _, createWellGrid as _n, toProtocolDataFrame as _t, getBioTemplateControlDefaults as a, TEMPLATE_COLLECTION_KEY as an, toSamplePrepColumns as at, createQpcrExpressionCollection as b, rowLabel as bn, toInstrumentRunColumns as bt, listBioTemplatePresetControlSchemas as c, createTemplateEnvelope as cn, toReagentColumns as ct, createBioTemplatePresetCollectionFromControls as d, extractTemplateCollection as dn, toReagentRows as dt, searchBioTemplatePacks as en, toTimeCourseSteps as et, createWellPlateScreenCollection as f, getTemplateData as fn, toQpcrColumns as ft, createFlowCytometryAssayCollection as g, createPlateRowLabels as gn, toProtocolColumns as gt, createWesternBlotAssayCollection as h, createPlateColumnLabels as hn, toQpcrWellPlateWells as ht, createBioTemplateControlToolkit as i, searchBioTemplateCatalog as in, toSampleRows as it, createSampleSheetTemplate as j, toAssayMatrixColumns as jt, createDoseResponseTemplate as k, toCalibrationCurveDataFrame as kt, requireBioTemplateControlSchema as l, ensureTemplateEnvelope as ln, toReagentDataFrame as lt, createDefaultBioTemplate as m, WELL_PLATE_SIZE_CONFIGS as mn, toQpcrRows as mt, bioTemplateControlsToSectionFormSchemas as n, getBioTemplateInfo as nn, toSampleDataFrame as nt, getBioTemplateControlSchema as o, assertTemplateEnvelope as on, toSamplePrepDataFrame as ot, createBioTemplatePackCollection as p, PLATE_CONFIGS as pn, toQpcrDataFrame as pt, toDoseConditions as q, bioTemplatePresets as qt, bioTemplateControlsToSidebarPanels as r, listBioTemplateCatalog as rn, toSampleOptions as rt, listBioTemplateControlSchemas as s, createTemplateCollection as sn, toSamplePrepRows as st, bioTemplateControlsToFormSchema as t, bioTemplateCatalog as tn, toSampleColumns as tt, createBioTemplatePresetCollection as u, ensureTemplateFromCollection as un, toReagentListItems as ut, createTargetedMetabolomicsCollection as v, getRectangleWellIds as vn, toProtocolRows as vt, createReagentListTemplate as w, deriveShade as wn, toInstrumentRunSteps as wt, createQpcrPlateTemplate as x, SAMPLE_COLOR_SCALE as xn, toInstrumentRunDataFrame as xt, createLcmsBatchCollection as y, rowIndex as yn, toProtocolSteps as yt, toBioTemplateComponentImports as z, validateInstrumentRunData as zt };
5053
5259
 
5054
- //# sourceMappingURL=templates-CK72aKO1.js.map
5260
+ //# sourceMappingURL=templates-Qq113pyZ.js.map