@morscherlab/mint-sdk 1.2.0-beta.8 → 1.2.0

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 (402) hide show
  1. package/README.md +60 -0
  2. package/dist/{ExperimentPopover-CfOdh5Rm.js → ExperimentPopover-CJdNlCZb.js} +24 -15
  3. package/dist/ExperimentPopover-CJdNlCZb.js.map +1 -0
  4. package/dist/{ExperimentSelectorModal-DvIagrxY.js → ExperimentSelectorModal-DCXmwKNS.js} +5 -5
  5. package/dist/ExperimentSelectorModal-DCXmwKNS.js.map +1 -0
  6. package/dist/{SettingsModal-W3TYfnP9.js → SettingsModal-BYR20I4c.js} +5 -5
  7. package/dist/SettingsModal-BYR20I4c.js.map +1 -0
  8. package/dist/{EmptyState-NBqf2_8z.js → Skeleton-BAF3CKY7.js} +111 -93
  9. package/dist/Skeleton-BAF3CKY7.js.map +1 -0
  10. package/dist/__tests__/components/DataStates.test.d.ts +1 -0
  11. package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
  12. package/dist/__tests__/components/FileBrowserModal.test.d.ts +1 -0
  13. package/dist/__tests__/components/FilePicker.state.test.d.ts +1 -0
  14. package/dist/__tests__/components/FilePicker.test.d.ts +1 -0
  15. package/dist/__tests__/components/PlotlyChart.test.d.ts +1 -0
  16. package/dist/__tests__/components/iconButtonIconSizing.test.d.ts +1 -0
  17. package/dist/__tests__/composables/useFileBrowser.test.d.ts +1 -0
  18. package/dist/__tests__/composables/useListReorder.test.d.ts +1 -0
  19. package/dist/__tests__/composables/usePlatformFilePickerAdapter.test.d.ts +1 -0
  20. package/dist/__tests__/styles/cssTokens.test.d.ts +1 -0
  21. package/dist/apiErrors.d.ts +26 -0
  22. package/dist/components/ActionMenu.vue.d.ts +1 -1
  23. package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
  24. package/dist/components/AuditTrail.vue.d.ts +13 -0
  25. package/dist/components/BaseInput.vue.d.ts +1 -1
  26. package/dist/components/BaseSelect.vue.d.ts +1 -1
  27. package/dist/components/BaseTextarea.vue.d.ts +1 -1
  28. package/dist/components/BatchProgressList.vue.d.ts +17 -0
  29. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
  30. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +2 -2
  31. package/dist/components/ConcentrationInput.vue.d.ts +1 -1
  32. package/dist/components/DataFrame.vue.d.ts +14 -2
  33. package/dist/components/DatePicker.vue.d.ts +2 -2
  34. package/dist/components/DateTimePicker.vue.d.ts +3 -1
  35. package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
  36. package/dist/components/ExperimentPopover.vue.d.ts +1 -0
  37. package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
  38. package/dist/components/FileBrowserModal.vue.d.ts +99 -0
  39. package/dist/components/FilePicker.vue.d.ts +32 -0
  40. package/dist/components/FileUploader.vue.d.ts +5 -2
  41. package/dist/components/FormulaInput.vue.d.ts +1 -1
  42. package/dist/components/GeneratedPlotlyResult.vue.d.ts +1 -3
  43. package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
  44. package/dist/components/MobileSupportGate.vue.d.ts +1 -1
  45. package/dist/components/MoleculeInput.vue.d.ts +1 -1
  46. package/dist/components/NumberInput.vue.d.ts +1 -1
  47. package/dist/components/PlotlyChart.vue.d.ts +59 -0
  48. package/dist/components/ProgressBar.vue.d.ts +1 -1
  49. package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
  50. package/dist/components/ReagentList.vue.d.ts +29 -1
  51. package/dist/components/ResourceCard.vue.d.ts +1 -1
  52. package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
  53. package/dist/components/SampleSelector.drag.d.ts +13 -0
  54. package/dist/components/SampleSelector.tree.d.ts +2 -0
  55. package/dist/components/SampleSelector.vue.d.ts +34 -1
  56. package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
  57. package/dist/components/SecretInput.vue.d.ts +1 -1
  58. package/dist/components/SequenceInput.vue.d.ts +1 -1
  59. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -0
  60. package/dist/components/StatusIndicator.vue.d.ts +1 -1
  61. package/dist/components/TagsInput.vue.d.ts +1 -1
  62. package/dist/components/TimePicker.vue.d.ts +2 -1
  63. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  64. package/dist/components/UnitInput.vue.d.ts +1 -1
  65. package/dist/components/WellPlate.geometry.d.ts +15 -0
  66. package/dist/components/WellPlate.interaction.d.ts +13 -0
  67. package/dist/components/WellPlate.vue.d.ts +30 -1
  68. package/dist/components/fileBrowserPresentation.d.ts +10 -0
  69. package/dist/components/index.d.ts +4 -0
  70. package/dist/components/index.js +8 -8
  71. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
  72. package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
  73. package/dist/components/internal/FileBrowserDialogInternal.vue.d.ts +34 -0
  74. package/dist/components/internal/FileBrowserListingInternal.vue.d.ts +25 -0
  75. package/dist/components/internal/FileBrowserToolbarInternal.vue.d.ts +26 -0
  76. package/dist/components/internal/FilePickerPreviewInternal.vue.d.ts +18 -0
  77. package/dist/components/internal/FilePickerTreeInternal.vue.d.ts +31 -0
  78. package/dist/{components-B80gV0P6.js → components-DIum5hkx.js} +5415 -2753
  79. package/dist/components-DIum5hkx.js.map +1 -0
  80. package/dist/composables/controlSchemaTypes.d.ts +34 -0
  81. package/dist/composables/filePicker/localFiles.d.ts +3 -0
  82. package/dist/composables/filePicker/usePickerNavigation.d.ts +96 -0
  83. package/dist/composables/filePicker/usePickerSelection.d.ts +31 -0
  84. package/dist/composables/filePicker/validation.d.ts +5 -0
  85. package/dist/composables/index.d.ts +3 -0
  86. package/dist/composables/index.js +10 -10
  87. package/dist/composables/useApi.d.ts +14 -7
  88. package/dist/composables/useDropdownState.d.ts +18 -2
  89. package/dist/composables/useEventStream.d.ts +9 -0
  90. package/dist/composables/useFileBrowser.d.ts +55 -0
  91. package/dist/composables/useFilePicker.d.ts +189 -0
  92. package/dist/composables/useListReorder.d.ts +90 -0
  93. package/dist/composables/useMenuKeyboard.d.ts +2 -2
  94. package/dist/composables/usePlatformFilePickerAdapter.d.ts +11 -0
  95. package/dist/composables/usePluginConfig.d.ts +3 -1
  96. package/dist/composables/useRequestSyncState.d.ts +42 -2
  97. package/dist/composables/useScheduleDrag.d.ts +1 -0
  98. package/dist/{composables-C8mmD5ta.js → composables-mFXsTA4g.js} +307 -74
  99. package/dist/composables-mFXsTA4g.js.map +1 -0
  100. package/dist/{useApi-CDBq6z23.js → errors-BLuqMee5.js} +178 -16
  101. package/dist/errors-BLuqMee5.js.map +1 -0
  102. package/dist/{experiment-Y9Iz7KYi.js → experiment-CVDRAnqp.js} +3 -8
  103. package/dist/experiment-CVDRAnqp.js.map +1 -0
  104. package/dist/{experiment-utils-DV3DrvE_.js → experiment-utils-CV2Wza3z.js} +1 -1
  105. package/dist/experiment-utils-CV2Wza3z.js.map +1 -0
  106. package/dist/index.d.ts +1 -0
  107. package/dist/index.js +15 -15
  108. package/dist/install.js +2 -7
  109. package/dist/install.js.map +1 -1
  110. package/dist/permissions.d.ts +42 -1
  111. package/dist/permissions.js +20 -10
  112. package/dist/permissions.js.map +1 -1
  113. package/dist/stores/index.d.ts +1 -1
  114. package/dist/stores/index.js +3 -3
  115. package/dist/stores/settings.d.ts +31 -1
  116. package/dist/styles.css +15162 -32475
  117. package/dist/templates/index.js +2 -4
  118. package/dist/{templates-CK72aKO1.js → templates-CmGfmBRA.js} +291 -85
  119. package/dist/templates-CmGfmBRA.js.map +1 -0
  120. package/dist/types/fileBrowserTypes.d.ts +77 -0
  121. package/dist/types/filePicker.d.ts +77 -0
  122. package/dist/types/index.d.ts +2 -0
  123. package/dist/{useControlSchema-_OVhavKq.js → useControlSchema-DldpxNOP.js} +234 -1121
  124. package/dist/useControlSchema-DldpxNOP.js.map +1 -0
  125. package/dist/{useDropdownState-D5G4UvWd.js → useDropdownState-C7hRiVQf.js} +22 -6
  126. package/dist/useDropdownState-C7hRiVQf.js.map +1 -0
  127. package/dist/{useExperimentSelector-DSEckf_g.js → useExperimentSelector-CEcIaueJ.js} +4 -4
  128. package/dist/{useExperimentSelector-DSEckf_g.js.map → useExperimentSelector-CEcIaueJ.js.map} +1 -1
  129. package/dist/{useFormBuilder-Bd714C7y.js → useFormBuilder-z5L_dUIy.js} +2 -2
  130. package/dist/{useFormBuilder-Bd714C7y.js.map → useFormBuilder-z5L_dUIy.js.map} +1 -1
  131. package/dist/utils/color.d.ts +13 -0
  132. package/dist/utils/errors.d.ts +9 -0
  133. package/dist/{useProtocolTemplates-Dq5Pzwyd.js → validation-uwoJGEb6.js} +231 -158
  134. package/dist/validation-uwoJGEb6.js.map +1 -0
  135. package/package.json +1 -1
  136. package/src/__tests__/apiErrors.test.ts +81 -0
  137. package/src/__tests__/components/ActionMenu.test.ts +94 -0
  138. package/src/__tests__/components/DataFrame.test.ts +183 -11
  139. package/src/__tests__/components/DataStates.test.ts +176 -0
  140. package/src/__tests__/components/DatePicker.test.ts +76 -0
  141. package/src/__tests__/components/DateTimePicker.test.ts +36 -0
  142. package/src/__tests__/components/ExperimentPopover.test.ts +30 -0
  143. package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
  144. package/src/__tests__/components/FileBrowserModal.test.ts +460 -0
  145. package/src/__tests__/components/FilePicker.state.test.ts +287 -0
  146. package/src/__tests__/components/FilePicker.test.ts +487 -0
  147. package/src/__tests__/components/GeneratedPlotlyResult.test.ts +52 -5
  148. package/src/__tests__/components/GroupAssigner.test.ts +53 -0
  149. package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
  150. package/src/__tests__/components/PlotlyChart.test.ts +305 -0
  151. package/src/__tests__/components/RackEditor.test.ts +35 -0
  152. package/src/__tests__/components/ReagentList.test.ts +64 -2
  153. package/src/__tests__/components/RetiredStyles.test.ts +31 -0
  154. package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
  155. package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
  156. package/src/__tests__/components/SegmentedControl.test.ts +107 -0
  157. package/src/__tests__/components/TimePicker.test.ts +61 -0
  158. package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
  159. package/src/__tests__/components/iconButtonIconSizing.test.ts +18 -0
  160. package/src/__tests__/composables/useApi.test.ts +92 -9
  161. package/src/__tests__/composables/useDropdownState.test.ts +58 -1
  162. package/src/__tests__/composables/useFileBrowser.test.ts +305 -0
  163. package/src/__tests__/composables/useGeneratedAnalysis.test.ts +7 -2
  164. package/src/__tests__/composables/useListReorder.test.ts +145 -0
  165. package/src/__tests__/composables/usePlatformFilePickerAdapter.test.ts +67 -0
  166. package/src/__tests__/composables/usePluginClient.test.ts +3 -0
  167. package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
  168. package/src/__tests__/stores/settings.test.ts +71 -1
  169. package/src/__tests__/styles/cssTokens.test.ts +131 -0
  170. package/src/__tests__/utils/permissions.test.ts +68 -0
  171. package/src/apiErrors.ts +85 -0
  172. package/src/components/ActionMenu.vue +45 -88
  173. package/src/components/AlertBox.vue +0 -4
  174. package/src/components/AppAvatarMenu.vue +2 -14
  175. package/src/components/AppLayout.vue +0 -4
  176. package/src/components/AppPluginSwitcher.story.vue +87 -0
  177. package/src/components/AppPluginSwitcher.vue +2 -5
  178. package/src/components/AppSidebar.vue +0 -4
  179. package/src/components/AppToastContainer.vue +6 -8
  180. package/src/components/AppTopBar.vue +0 -4
  181. package/src/components/ArtifactSaveDialog.vue +0 -4
  182. package/src/components/ArtifactSelectorModal.vue +0 -4
  183. package/src/components/AuditTrail.story.vue +18 -0
  184. package/src/components/AuditTrail.vue +27 -7
  185. package/src/components/AutoGroupModal.vue +0 -4
  186. package/src/components/Avatar.vue +0 -4
  187. package/src/components/BaseButton.vue +0 -4
  188. package/src/components/BaseCheckbox.vue +0 -4
  189. package/src/components/BaseInput.vue +0 -4
  190. package/src/components/BaseModal.vue +0 -4
  191. package/src/components/BasePill.vue +0 -4
  192. package/src/components/BaseRadioGroup.vue +0 -4
  193. package/src/components/BaseSelect.vue +0 -4
  194. package/src/components/BaseSlider.vue +0 -4
  195. package/src/components/BaseTabs.vue +0 -4
  196. package/src/components/BaseTextarea.vue +0 -4
  197. package/src/components/BaseToggle.vue +0 -4
  198. package/src/components/BatchProgressList.story.vue +18 -0
  199. package/src/components/BatchProgressList.vue +32 -4
  200. package/src/components/Breadcrumb.vue +0 -4
  201. package/src/components/Calendar.vue +0 -4
  202. package/src/components/ChartContainer.story.vue +1 -1
  203. package/src/components/ChartContainer.vue +0 -4
  204. package/src/components/ChemicalFormula.vue +0 -4
  205. package/src/components/CollapsibleCard.vue +0 -4
  206. package/src/components/ColorSlider.vue +0 -4
  207. package/src/components/ConcentrationInput.vue +0 -4
  208. package/src/components/ConfirmDialog.vue +0 -4
  209. package/src/components/DataFrame.story.vue +14 -0
  210. package/src/components/DataFrame.vue +97 -23
  211. package/src/components/DatePicker.vue +73 -27
  212. package/src/components/DateTimePicker.vue +45 -17
  213. package/src/components/Divider.vue +0 -4
  214. package/src/components/DoseCalculator.vue +0 -4
  215. package/src/components/DropdownButton.vue +2 -14
  216. package/src/components/EmptyState.vue +0 -4
  217. package/src/components/ExperimentCodeBadge.vue +0 -4
  218. package/src/components/ExperimentDataViewer.story.vue +3 -0
  219. package/src/components/ExperimentDataViewer.vue +33 -13
  220. package/src/components/ExperimentPopover.vue +12 -7
  221. package/src/components/ExperimentSelectorModal.vue +0 -4
  222. package/src/components/ExperimentTimeline.story.vue +18 -0
  223. package/src/components/ExperimentTimeline.vue +81 -75
  224. package/src/components/FileBrowserModal.story.vue +203 -0
  225. package/src/components/FileBrowserModal.vue +384 -0
  226. package/src/components/FilePicker.story.vue +44 -0
  227. package/src/components/FilePicker.vue +284 -0
  228. package/src/components/FileUploader.vue +32 -18
  229. package/src/components/FitPanel.vue +0 -4
  230. package/src/components/FormActions.story.vue +96 -0
  231. package/src/components/FormActions.vue +0 -4
  232. package/src/components/FormBuilder.vue +0 -4
  233. package/src/components/FormField.vue +0 -4
  234. package/src/components/FormulaInput.vue +0 -4
  235. package/src/components/GeneratedPathInput.story.vue +68 -0
  236. package/src/components/GeneratedPlotlyResult.story.vue +96 -0
  237. package/src/components/GeneratedPlotlyResult.vue +34 -69
  238. package/src/components/GeneratedPluginView.story.vue +145 -0
  239. package/src/components/GeneratedPluginView.vue +10 -10
  240. package/src/components/GeneratedResultRenderer.story.vue +117 -0
  241. package/src/components/GeneratedResultRenderer.vue +4 -9
  242. package/src/components/GroupAssigner.vue +67 -5
  243. package/src/components/IconButton.vue +0 -4
  244. package/src/components/InstrumentAlertLog.vue +0 -4
  245. package/src/components/InstrumentStateBadge.vue +0 -4
  246. package/src/components/InstrumentStatusCard.vue +0 -4
  247. package/src/components/JobsStatusTray.vue +0 -4
  248. package/src/components/LcmsSequenceTable.vue +81 -50
  249. package/src/components/LoadingSpinner.vue +0 -4
  250. package/src/components/MobileSupportGate.vue +0 -4
  251. package/src/components/MoleculeInput.vue +0 -4
  252. package/src/components/MultiSelect.vue +0 -4
  253. package/src/components/NumberInput.vue +0 -4
  254. package/src/components/PlateMapEditor.vue +3 -14
  255. package/src/components/PlotlyChart.story.vue +61 -0
  256. package/src/components/PlotlyChart.vue +233 -0
  257. package/src/components/PluginIcon.vue +0 -4
  258. package/src/components/ProgressBar.vue +0 -4
  259. package/src/components/ProtocolStepEditor.vue +2 -4
  260. package/src/components/RackEditor.vue +51 -70
  261. package/src/components/ReagentEditor.vue +0 -4
  262. package/src/components/ReagentList.story.vue +18 -0
  263. package/src/components/ReagentList.vue +127 -82
  264. package/src/components/ResourceCard.vue +0 -4
  265. package/src/components/RuntimeUpdateNotice.story.vue +49 -0
  266. package/src/components/RuntimeUpdateNotice.vue +4 -4
  267. package/src/components/SampleHierarchyTree.story.vue +18 -0
  268. package/src/components/SampleHierarchyTree.vue +32 -9
  269. package/src/components/SampleLegend.vue +2 -8
  270. package/src/components/SampleSelector.drag.ts +51 -0
  271. package/src/components/SampleSelector.story.vue +6 -0
  272. package/src/components/SampleSelector.tree.ts +2 -0
  273. package/src/components/SampleSelector.vue +49 -10
  274. package/src/components/SampleSelectorGroupNode.vue +19 -0
  275. package/src/components/ScheduleCalendar.story.vue +6 -0
  276. package/src/components/ScheduleCalendar.vue +82 -7
  277. package/src/components/ScientificNumber.vue +0 -4
  278. package/src/components/SectionCard.vue +0 -4
  279. package/src/components/SegmentedControl.vue +50 -7
  280. package/src/components/SequenceInput.vue +0 -4
  281. package/src/components/SequenceProgressBar.story.vue +110 -0
  282. package/src/components/SequenceProgressBar.vue +0 -4
  283. package/src/components/SettingsModal.vue +0 -4
  284. package/src/components/Skeleton.vue +0 -4
  285. package/src/components/SmartGroupFieldRecipe.vue +8 -6
  286. package/src/components/SmartGroupManual.vue +0 -4
  287. package/src/components/StatusIndicator.vue +0 -4
  288. package/src/components/StepWizard.vue +0 -4
  289. package/src/components/TagsInput.vue +4 -6
  290. package/src/components/ThemeToggle.vue +0 -4
  291. package/src/components/TimePicker.vue +36 -7
  292. package/src/components/TimeRangeInput.vue +0 -4
  293. package/src/components/Tooltip.story.vue +3 -3
  294. package/src/components/Tooltip.vue +0 -4
  295. package/src/components/UnitInput.vue +0 -4
  296. package/src/components/WellPlate.geometry.ts +60 -1
  297. package/src/components/WellPlate.interaction.ts +44 -0
  298. package/src/components/WellPlate.story.vue +8 -0
  299. package/src/components/WellPlate.vue +53 -7
  300. package/src/components/fileBrowserPresentation.ts +39 -0
  301. package/src/components/index.ts +5 -0
  302. package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
  303. package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
  304. package/src/components/internal/DataStateInternal.vue +74 -0
  305. package/src/components/internal/FileBrowserDialogInternal.vue +75 -0
  306. package/src/components/internal/FileBrowserListingInternal.vue +197 -0
  307. package/src/components/internal/FileBrowserToolbarInternal.vue +136 -0
  308. package/src/components/internal/FilePickerPreviewInternal.vue +100 -0
  309. package/src/components/internal/FilePickerTreeInternal.vue +238 -0
  310. package/src/components/internal/FormSectionRenderer.vue +0 -4
  311. package/src/components/internal/WellEditPopupInternal.vue +0 -4
  312. package/src/composables/controlSchemaTypes.ts +34 -0
  313. package/src/composables/filePicker/localFiles.ts +58 -0
  314. package/src/composables/filePicker/usePickerNavigation.ts +220 -0
  315. package/src/composables/filePicker/usePickerSelection.ts +259 -0
  316. package/src/composables/filePicker/validation.ts +41 -0
  317. package/src/composables/index.ts +17 -0
  318. package/src/composables/useApi.ts +57 -13
  319. package/src/composables/useDropdownState.ts +35 -5
  320. package/src/composables/useEventStream.ts +14 -2
  321. package/src/composables/useFileBrowser.ts +314 -0
  322. package/src/composables/useFileImport.ts +2 -7
  323. package/src/composables/useFilePicker.ts +366 -0
  324. package/src/composables/useGeneratedAnalysis.ts +18 -26
  325. package/src/composables/useListReorder.story.vue +143 -0
  326. package/src/composables/useListReorder.ts +242 -0
  327. package/src/composables/useMenuKeyboard.ts +2 -2
  328. package/src/composables/useOptimisticMutation.ts +1 -15
  329. package/src/composables/usePlatformFilePickerAdapter.ts +104 -0
  330. package/src/composables/usePluginClient.ts +3 -0
  331. package/src/composables/usePluginConfig.ts +3 -1
  332. package/src/composables/useRackEditor.ts +2 -11
  333. package/src/composables/useRequestSyncState.ts +98 -28
  334. package/src/composables/useResourceCrud.ts +1 -15
  335. package/src/composables/useScheduleDrag.ts +37 -0
  336. package/src/composables/useWellPainting.ts +5 -29
  337. package/src/composables/useWellPlateEditor.ts +1 -11
  338. package/src/index.ts +3 -0
  339. package/src/permissions.ts +48 -9
  340. package/src/stores/experiment.ts +2 -7
  341. package/src/stores/index.ts +9 -1
  342. package/src/stores/settings.ts +93 -1
  343. package/src/styles/components/audit-trail.css +5 -5
  344. package/src/styles/components/batch-progress-list.css +7 -0
  345. package/src/styles/components/color-slider.css +2 -2
  346. package/src/styles/components/data-state.css +30 -0
  347. package/src/styles/components/dataframe.css +29 -35
  348. package/src/styles/components/experiment-data-viewer.css +4 -4
  349. package/src/styles/components/experiment-timeline.css +3 -30
  350. package/src/styles/components/file-browser-modal.css +489 -0
  351. package/src/styles/components/file-picker.css +502 -0
  352. package/src/styles/components/form-builder.css +5 -5
  353. package/src/styles/components/icon-button.css +9 -0
  354. package/src/styles/components/lcms-sequence-table.css +16 -1
  355. package/src/styles/components/multi-select.css +1 -1
  356. package/src/styles/components/reagent-list.css +38 -31
  357. package/src/styles/components/sample-hierarchy-tree.css +5 -19
  358. package/src/styles/components/sample-selector.css +9 -2
  359. package/src/styles/components/schedule-calendar.css +8 -0
  360. package/src/styles/components/scientific-number.css +1 -1
  361. package/src/styles/components/well-plate.css +8 -0
  362. package/src/styles/index.css +11 -0
  363. package/src/styles/variables.css +29 -0
  364. package/src/templates/builderPresetControls.ts +1 -1
  365. package/src/templates/componentPlateHelpers.ts +3 -1
  366. package/src/templates/doseResponseAdapters.ts +2 -13
  367. package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
  368. package/src/templates/plateMapBuilder.ts +2 -2
  369. package/src/templates/qpcrPlateBuilder.ts +1 -1
  370. package/src/templates/templateValidators.ts +1 -1
  371. package/src/templates/timeCourseBuilder.ts +2 -2
  372. package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
  373. package/src/types/fileBrowserTypes.ts +85 -0
  374. package/src/types/filePicker.ts +72 -0
  375. package/src/types/index.ts +14 -0
  376. package/src/utils/color.ts +51 -0
  377. package/src/utils/errors.ts +29 -0
  378. package/dist/EmptyState-NBqf2_8z.js.map +0 -1
  379. package/dist/ExperimentPopover-CfOdh5Rm.js.map +0 -1
  380. package/dist/ExperimentSelectorModal-DvIagrxY.js.map +0 -1
  381. package/dist/SettingsModal-W3TYfnP9.js.map +0 -1
  382. package/dist/components-B80gV0P6.js.map +0 -1
  383. package/dist/composables/autoGroupConstants.d.ts +0 -1
  384. package/dist/composables/autoGroupGrouping.d.ts +0 -3
  385. package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
  386. package/dist/composables-C8mmD5ta.js.map +0 -1
  387. package/dist/experiment-Y9Iz7KYi.js.map +0 -1
  388. package/dist/experiment-utils-DV3DrvE_.js.map +0 -1
  389. package/dist/templates/builderDefaults.d.ts +0 -1
  390. package/dist/templates/plateGeometry.d.ts +0 -4
  391. package/dist/templates-CK72aKO1.js.map +0 -1
  392. package/dist/useApi-CDBq6z23.js.map +0 -1
  393. package/dist/useControlSchema-_OVhavKq.js.map +0 -1
  394. package/dist/useDropdownState-D5G4UvWd.js.map +0 -1
  395. package/dist/useProtocolTemplates-Dq5Pzwyd.js.map +0 -1
  396. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
  397. package/src/composables/autoGroupConstants.ts +0 -4
  398. package/src/composables/autoGroupGrouping.ts +0 -148
  399. package/src/composables/useAutoGroupInputSources.ts +0 -147
  400. package/src/templates/builderDefaults.ts +0 -11
  401. package/src/templates/plateGeometry.ts +0 -62
  402. /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → apiErrors.test.d.ts} +0 -0
@@ -22,10 +22,27 @@ export interface ControlSectionConfig {
22
22
  actions?: SidebarToolSectionAction[];
23
23
  columns?: 1 | 2 | 3;
24
24
  condition?: FieldCondition;
25
+ /** The access policy. Preferred over the flat fields below. */
25
26
  access?: AccessPolicy;
27
+ /**
28
+ * @deprecated Since MINT 1.2; use `access.visibleFor` instead. The flat
29
+ * duplicate is removed in 1.3.
30
+ */
26
31
  visibleFor?: AccessAudienceInput;
32
+ /**
33
+ * @deprecated Since MINT 1.2; use `access.requiresAdmin` instead. The flat
34
+ * duplicate is removed in 1.3.
35
+ */
27
36
  requiresAdmin?: boolean;
37
+ /**
38
+ * @deprecated Since MINT 1.2; use `access.permissions` instead. The flat
39
+ * duplicate is removed in 1.3.
40
+ */
28
41
  permissions?: readonly string[];
42
+ /**
43
+ * @deprecated Since MINT 1.2; use `access.anyPermissions` instead. The flat
44
+ * duplicate is removed in 1.3.
45
+ */
29
46
  anyPermissions?: readonly string[];
30
47
  defaultOpen?: boolean;
31
48
  showToggle?: boolean;
@@ -78,10 +95,27 @@ export interface ControlDefinition {
78
95
  };
79
96
  validation?: FieldValidation;
80
97
  condition?: FieldCondition;
98
+ /** The access policy. Preferred over the flat fields below. */
81
99
  access?: AccessPolicy;
100
+ /**
101
+ * @deprecated Since MINT 1.2; use `access.visibleFor` instead. The flat
102
+ * duplicate is removed in 1.3.
103
+ */
82
104
  visibleFor?: AccessAudienceInput;
105
+ /**
106
+ * @deprecated Since MINT 1.2; use `access.requiresAdmin` instead. The flat
107
+ * duplicate is removed in 1.3.
108
+ */
83
109
  requiresAdmin?: boolean;
110
+ /**
111
+ * @deprecated Since MINT 1.2; use `access.permissions` instead. The flat
112
+ * duplicate is removed in 1.3.
113
+ */
84
114
  permissions?: readonly string[];
115
+ /**
116
+ * @deprecated Since MINT 1.2; use `access.anyPermissions` instead. The flat
117
+ * duplicate is removed in 1.3.
118
+ */
85
119
  anyPermissions?: readonly string[];
86
120
  options?: readonly ControlOption[];
87
121
  section?: string;
@@ -0,0 +1,3 @@
1
+ import { PickerAdapter } from '../../types/filePicker';
2
+ /** Construct metadata only: no FileReader, arrayBuffer or upload. */
3
+ export declare function localFilesAdapter(files: File[], relativePaths?: (string | undefined)[]): PickerAdapter;
@@ -0,0 +1,96 @@
1
+ import { PickerAdapter, PickerNode, PickerRequest, PickerTreeRow } from '../../types/filePicker';
2
+ export declare function usePickerNavigation(adapter: () => PickerAdapter, request: () => PickerRequest, systemFilter?: (node: PickerNode) => boolean): {
3
+ path: import('vue').ShallowRef<string, string>;
4
+ trail: import('vue').Ref<{
5
+ path: string;
6
+ label: string;
7
+ }[], {
8
+ path: string;
9
+ label: string;
10
+ }[] | {
11
+ path: string;
12
+ label: string;
13
+ }[]>;
14
+ entries: import('vue').ShallowRef<PickerNode[], PickerNode[]>;
15
+ nodes: import('vue').Ref<Map<string, {
16
+ kind: "folder";
17
+ fileCount?: number | null | undefined;
18
+ formats?: Record<string, number> | undefined;
19
+ hasChildren?: boolean | undefined;
20
+ path: string;
21
+ name: string;
22
+ parentPath?: string | null | undefined;
23
+ parentName?: string | undefined;
24
+ bytes?: number | null | undefined;
25
+ unavailableReason?: string | undefined;
26
+ } | {
27
+ kind: "file";
28
+ format: string;
29
+ file?: {
30
+ readonly lastModified: number;
31
+ readonly name: string;
32
+ readonly webkitRelativePath: string;
33
+ readonly size: number;
34
+ readonly type: string;
35
+ arrayBuffer: () => Promise<ArrayBuffer>;
36
+ bytes: () => Promise<Uint8Array<ArrayBuffer>>;
37
+ slice: (start?: number, end?: number, contentType?: string) => Blob;
38
+ stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
39
+ text: () => Promise<string>;
40
+ } | undefined;
41
+ path: string;
42
+ name: string;
43
+ parentPath?: string | null | undefined;
44
+ parentName?: string | undefined;
45
+ bytes?: number | null | undefined;
46
+ unavailableReason?: string | undefined;
47
+ }> & Omit<Map<string, PickerNode>, keyof Map<any, any>>, Map<string, PickerNode> | (Map<string, {
48
+ kind: "folder";
49
+ fileCount?: number | null | undefined;
50
+ formats?: Record<string, number> | undefined;
51
+ hasChildren?: boolean | undefined;
52
+ path: string;
53
+ name: string;
54
+ parentPath?: string | null | undefined;
55
+ parentName?: string | undefined;
56
+ bytes?: number | null | undefined;
57
+ unavailableReason?: string | undefined;
58
+ } | {
59
+ kind: "file";
60
+ format: string;
61
+ file?: {
62
+ readonly lastModified: number;
63
+ readonly name: string;
64
+ readonly webkitRelativePath: string;
65
+ readonly size: number;
66
+ readonly type: string;
67
+ arrayBuffer: () => Promise<ArrayBuffer>;
68
+ bytes: () => Promise<Uint8Array<ArrayBuffer>>;
69
+ slice: (start?: number, end?: number, contentType?: string) => Blob;
70
+ stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
71
+ text: () => Promise<string>;
72
+ } | undefined;
73
+ path: string;
74
+ name: string;
75
+ parentPath?: string | null | undefined;
76
+ parentName?: string | undefined;
77
+ bytes?: number | null | undefined;
78
+ unavailableReason?: string | undefined;
79
+ }> & Omit<Map<string, PickerNode>, keyof Map<any, any>>)>;
80
+ children: import('vue').ShallowRef<Map<string, PickerNode[]>, Map<string, PickerNode[]>>;
81
+ expanded: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
82
+ expanding: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
83
+ expansionErrors: import('vue').Ref<Map<string, string> & Omit<Map<string, string>, keyof Map<any, any>>, Map<string, string> | (Map<string, string> & Omit<Map<string, string>, keyof Map<any, any>>)>;
84
+ loading: import('vue').ShallowRef<boolean, boolean>;
85
+ error: import('vue').ShallowRef<string, string>;
86
+ rows: import('vue').ComputedRef<PickerTreeRow[]>;
87
+ isAllowed: (node: PickerNode) => boolean;
88
+ clear: () => void;
89
+ invalidate: () => void;
90
+ register: (items: PickerNode[], parent?: string) => void;
91
+ loadChildren: (folder: string, ancestors?: string[], refresh?: boolean) => Promise<PickerNode[]>;
92
+ load: (query?: string, recursive?: boolean, refresh?: boolean) => Promise<void>;
93
+ expand: (node: PickerNode) => Promise<void>;
94
+ enter: (node: PickerNode) => void;
95
+ up: (target?: string) => void;
96
+ };
@@ -0,0 +1,31 @@
1
+ import { PickerCapability, PickerExcluded, PickerFile, PickerNode, PickerSelection, PickerSelectionMode } from '../../types/filePicker';
2
+ import { usePickerNavigation } from './usePickerNavigation';
3
+ type Navigation = ReturnType<typeof usePickerNavigation>;
4
+ export declare function usePickerSelection(nav: Navigation, mode: () => PickerSelectionMode, capability: () => PickerCapability | undefined, skipBlanks: () => boolean): {
5
+ keys: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
6
+ dropped: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
7
+ focusPath: import('vue').ShallowRef<string, string>;
8
+ resolving: import('vue').ShallowRef<boolean, boolean>;
9
+ resolutionError: import('vue').ShallowRef<string, string>;
10
+ roots: import('vue').ComputedRef<PickerNode[]>;
11
+ chosen: import('vue').ComputedRef<{
12
+ files: PickerFile[];
13
+ excluded: PickerExcluded[];
14
+ bytes: number;
15
+ }>;
16
+ focused: import('vue').ComputedRef<PickerNode>;
17
+ select: (node: PickerNode, modifiers?: {
18
+ metaKey?: boolean;
19
+ ctrlKey?: boolean;
20
+ shiftKey?: boolean;
21
+ toggle?: boolean;
22
+ }) => void;
23
+ selected: (node: PickerNode) => boolean;
24
+ selectable: (node: PickerNode) => boolean;
25
+ exclusion: (node: PickerNode) => PickerExcluded | null;
26
+ reset: (selection?: PickerSelection | null) => void;
27
+ resolve: () => Promise<void>;
28
+ folderProgress: (node: PickerNode) => string;
29
+ ancestorSelected: (node: PickerNode, candidates?: Set<string> & Omit<Set<string>, keyof Set<any>>) => boolean;
30
+ };
31
+ export {};
@@ -0,0 +1,5 @@
1
+ import { PickerCapability, PickerExcluded, PickerNode } from '../../types/filePicker';
2
+ export declare function normalizePickerFormat(format: string): string;
3
+ export declare function pickerExclusion(node: PickerNode, capability?: PickerCapability, skipBlanks?: boolean): PickerExcluded | null;
4
+ export declare function pickerReason(excluded: PickerExcluded | null, node?: PickerNode): string;
5
+ export declare function pickerFormat(name: string): string;
@@ -28,6 +28,7 @@ export { usePluginConfig, type UsePluginConfigReturn } from './usePluginConfig';
28
28
  export { useReagentSeries, generateDilutionSeries, DEFAULT_PRESETS, DEFAULT_UNITS, type LevelEntry, type DilutionPreset, type UseReagentSeriesReturn, } from './useReagentSeries';
29
29
  export { useExperimentSelector, type UseExperimentSelectorOptions, type UseExperimentSelectorReturn, } from './useExperimentSelector';
30
30
  export { useAnalysisArtifacts, ANALYSIS_FILE_ARTIFACT_SCHEMA, type UseAnalysisArtifactsOptions, type UseAnalysisArtifactsReturn, } from './useAnalysisArtifacts';
31
+ export { useFileBrowser, type UseFileBrowserOptions, type UseFileBrowserReturn, } from './useFileBrowser';
31
32
  export { buildAnalysisArtifactTargetQuery, parseAnalysisArtifactTarget, } from './analysisArtifactTarget';
32
33
  export { resolveCurrentPluginId } from './platformContextHelpers';
33
34
  export { formatExperimentDate, formatExperimentStatus, getExperimentStatusVariant, resolveExperimentCode, experimentIdFromRoute, datePresetToISO, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, EXPERIMENT_STATUS_LABELS, DATE_PRESET_OPTIONS, SORT_OPTIONS, } from './experiment-utils';
@@ -65,4 +66,6 @@ export { usePluginWorkspace, type PluginWorkspaceSlotsLike, type UsePluginWorksp
65
66
  export { type PluginWorkspaceControlsModel, type PluginWorkspaceShellModel, type PluginWorkspaceSidebarModel, } from './pluginWorkspaceModel';
66
67
  export { useFocusTrap, type UseFocusTrapOptions, type UseFocusTrapReturn, } from './useFocusTrap';
67
68
  export { useRovingFocus, type UseRovingFocusOptions, type UseRovingFocusReturn, } from './useRovingFocus';
69
+ export { reorderList, useListReorder, useReorderAnnouncer, REORDER_ANNOUNCER_STYLE, type ListReorderMove, type UseListReorderOptions, type UseListReorderReturn, type UseReorderAnnouncerReturn, } from './useListReorder';
68
70
  export { useMenuKeyboard, type UseMenuKeyboardOptions, type UseMenuKeyboardReturn, } from './useMenuKeyboard';
71
+ export { usePlatformFilePickerAdapter, encodePlatformPickerPath, decodePlatformPickerPath } from './usePlatformFilePickerAdapter';
@@ -1,11 +1,11 @@
1
- import { a as SORT_OPTIONS, c as formatExperimentDate, d as resolveExperimentCode, i as EXPERIMENT_STATUS_VARIANT_MAP, l as formatExperimentStatus, m as useEventListener, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, p as useFocusTrap, r as EXPERIMENT_STATUS_OPTIONS, s as experimentIdFromRoute, t as DATE_PRESET_OPTIONS, u as getExperimentStatusVariant } from "../experiment-utils-DV3DrvE_.js";
2
- import { r as useRequestSyncState } from "../EmptyState-NBqf2_8z.js";
3
- import { A as useConcentrationUnits, At as formatTimeSlot, C as controlsToViewIds, Ct as addMinutes, D as getTypeDefault, Dt as findNearestTimeSlotIndex, E as getFieldRegistryEntry, Et as findAvailableSlots, F as ATOMIC_WEIGHTS, Ft as rangesOverlap, G as createGeneratedAnalysisTransport, Ht as useSelectionLimit, I as useChemicalFormula, It as snapToSlot, K as useGeneratedAnalysis, Lt as toMinutes, Mt as generateTimeSlots, N as useSequenceUtils, Nt as isTimeInRange, Ot as formatDuration, Pt as parseTime, Rt as useTimeUtils, S as controlsToTopBarSettingsConfig, T as getDefaultControlView, Tt as durationMinutes, Vt as useListSelection, W as resolveCurrentPluginId, _ as controlsToFormSchema, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, c as defineWellPlateDoseComponentBindings, d as defineControlModel, h as controlValuesToComponentProps, i as useControlSchema, jt as fromMinutes, kt as formatTime, l as defineWellPlateDoseControlProps, m as controlValuesToComponentBindingsById, n as defineControls, o as defineDoseDesignControlModel, p as controlValuesToComponentBindings, q as usePluginJobs, r as getControlDefaults, s as defineWellPlateControlProps, t as defineControlComponentBindings, u as useControlWorkspace, v as controlsToSectionFormSchema, w as controlsToViewItems, wt as compareTime, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as useAnalysisArtifacts } from "../useControlSchema-_OVhavKq.js";
4
- import { $ as useTheme, A as useFileImport, B as useDoseCalculator, D as detectDelimiter, F as extractSampleNamesFromDesignData, G as DEFAULT_MOBILE_VIEWPORT_QUERY, H as useJobsStatusTray, I as extractSampleOptionsFromDesignData, J as useAppExperiment, K as useMobileSupportGate, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as usePresenceHeartbeat, R as DEFAULT_COLORS, U as usePluginJobCenter, V as combinePluginJobSources, W as usePluginWorkspace, X as useRuntimeAlignment, Y as getInjectedFrontendRevision, Z as getPresenceClientId, _ as useScheduleDrag, a as useReagentSeries, at as useSortedItems, b as useExpansionSet, c as useBioTemplatePresetWorkspace, d as getBioTemplateComponentProps, et as useToast, f as toBioTemplateComponentPropsByComponent, g as useExperimentSave, h as useTemplateCollection, i as generateDilutionSeries, it as compareSortValues, j as validateImportFile, k as readFileAsText, l as useBioTemplatePackWorkspace, m as useBioTemplateControls, n as DEFAULT_PRESETS, nt as normalizeSearchQuery, o as useGroupAssignment, ot as useMenuKeyboard, p as useBioTemplateComponents, q as APP_EXPERIMENT_KEY, r as DEFAULT_UNITS, rt as useTextSearch, s as useRackEditor, st as useRovingFocus, t as useProtocolTemplates, tt as candidateMatchesSearch, u as useBioTemplateWorkspace, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData, z as useWellPlateEditor } from "../useProtocolTemplates-Dq5Pzwyd.js";
5
- import { r as useApi, t as AuthenticationRequiredError } from "../useApi-CDBq6z23.js";
6
- import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-Bd714C7y.js";
1
+ import { i as useApi, n as AuthenticationRequiredError } from "../errors-BLuqMee5.js";
2
+ import { a as SORT_OPTIONS, c as formatExperimentDate, d as resolveExperimentCode, i as EXPERIMENT_STATUS_VARIANT_MAP, l as formatExperimentStatus, m as useEventListener, n as EXPERIMENT_STATUS_LABELS, o as datePresetToISO, p as useFocusTrap, r as EXPERIMENT_STATUS_OPTIONS, s as experimentIdFromRoute, t as DATE_PRESET_OPTIONS, u as getExperimentStatusVariant } from "../experiment-utils-CV2Wza3z.js";
3
+ import { n as useRequestSyncState } from "../Skeleton-BAF3CKY7.js";
4
+ import { A as useConcentrationUnits, At as formatTimeSlot, C as controlsToViewIds, Ct as addMinutes, D as getTypeDefault, Dt as findNearestTimeSlotIndex, E as getFieldRegistryEntry, Et as findAvailableSlots, F as ATOMIC_WEIGHTS, Ft as rangesOverlap, G as createGeneratedAnalysisTransport, Ht as useSelectionLimit, I as useChemicalFormula, It as snapToSlot, K as useGeneratedAnalysis, Lt as toMinutes, Mt as generateTimeSlots, N as useSequenceUtils, Nt as isTimeInRange, Ot as formatDuration, Pt as parseTime, Rt as useTimeUtils, S as controlsToTopBarSettingsConfig, T as getDefaultControlView, Tt as durationMinutes, Vt as useListSelection, W as resolveCurrentPluginId, _ as controlsToFormSchema, a as defineDoseCalculatorControlProps, b as controlsToSettingsSchema, c as defineWellPlateDoseComponentBindings, d as defineControlModel, h as controlValuesToComponentProps, i as useControlSchema, jt as fromMinutes, kt as formatTime, l as defineWellPlateDoseControlProps, m as controlValuesToComponentBindingsById, n as defineControls, o as defineDoseDesignControlModel, p as controlValuesToComponentBindings, q as usePluginJobs, r as getControlDefaults, s as defineWellPlateControlProps, t as defineControlComponentBindings, u as useControlWorkspace, v as controlsToSectionFormSchema, w as controlsToViewItems, wt as compareTime, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as useAnalysisArtifacts } from "../useControlSchema-DldpxNOP.js";
5
+ import { $ as getInjectedFrontendRevision, A as useFileImport, B as REORDER_ANNOUNCER_STYLE, C as useExpansionSet, D as detectDelimiter, F as extractSampleNamesFromDesignData, G as combinePluginJobSources, H as useListReorder, I as extractSampleOptionsFromDesignData, J as usePluginWorkspace, K as useJobsStatusTray, L as unwrapExperimentDesignData, M as extractSamplesFromDesignData, N as useAutoGroup, O as parseDelimitedText, Q as useAppExperiment, R as DEFAULT_COLORS, S as useExperimentData, U as useReorderAnnouncer, V as reorderList, W as useDoseCalculator, X as useMobileSupportGate, Y as DEFAULT_MOBILE_VIEWPORT_QUERY, Z as APP_EXPERIMENT_KEY, _ as useBioTemplateControls, a as DEFAULT_PRESETS, at as candidateMatchesSearch, b as useScheduleDrag, c as useReagentSeries, ct as compareSortValues, d as useBioTemplatePresetWorkspace, dt as useRovingFocus, et as useRuntimeAlignment, f as useBioTemplatePackWorkspace, g as useBioTemplateComponents, h as toBioTemplateComponentPropsByComponent, i as useProtocolTemplates, it as useToast, j as validateImportFile, k as readFileAsText, l as useGroupAssignment, lt as useSortedItems, m as getBioTemplateComponentProps, nt as usePresenceHeartbeat, o as DEFAULT_UNITS, ot as normalizeSearchQuery, p as useBioTemplateWorkspace, q as usePluginJobCenter, rt as useTheme, s as generateDilutionSeries, st as useTextSearch, tt as getPresenceClientId, u as useRackEditor, ut as useMenuKeyboard, v as useTemplateCollection, w as useSampleGroups, x as useExperimentSamples, y as useExperimentSave, z as useWellPlateEditor } from "../validation-uwoJGEb6.js";
6
+ import { i as usePlatformContext, n as evaluateCondition, r as useForm, t as useFormBuilder } from "../useFormBuilder-z5L_dUIy.js";
7
7
  import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "../analysisArtifactTypes-DQ0MjwHZ.js";
8
- import { B as toBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, l as requireBioTemplateControlSchema, o as getBioTemplateControlSchema } from "../templates-CK72aKO1.js";
9
- import { n as useDebouncedWatch, t as useExperimentSelector } from "../useExperimentSelector-DSEckf_g.js";
10
- import { A as useAsync, C as createPluginResourceClient, D as buildAnalysisArtifactTargetQuery, E as useCommandHistory, M as resolvePluginFrontendBase, N as usePasskey, O as parseAnalysisArtifactTarget, P as useAuth, S as wellIdsInRectangle, T as useOptimisticMutation, _ as createWellPlateWells, a as pluginFormDataFromPayload, b as useWellPainting, c as usePluginClient, d as buildPluginEndpointUrl, f as resolvePluginBaseUrl, g as createRowConditions, h as createColumnConditions, i as getPluginPageSelectorItems, j as useAsyncBatch, k as usePluginConfig, l as usePluginEventStream, m as useWellPlateValidation, n as downloadBlob, o as uploadPluginEndpoint, p as runWellPlateValidation, r as downloadPluginEndpoint, s as useCurrentExperiment, t as createPluginClient, u as usePluginSettings, v as useWellPlateAdapter, w as useResourceCrud, x as wellIdToCoordinate, y as coordinateToWellId } from "../composables-C8mmD5ta.js";
11
- export { ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, AuthenticationRequiredError, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, SORT_OPTIONS, addMinutes, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, candidateMatchesSearch, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createGeneratedAnalysisTransport, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, evaluateCondition, experimentIdFromRoute, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getInjectedFrontendRevision, getPluginPageSelectorItems, getPresenceClientId, getTypeDefault, isTimeInRange, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseTime, pluginFormDataFromPayload, rangesOverlap, readFileAsText, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, snapToSlot, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toMinutes, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useFileImport, useFocusTrap, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListSelection, useMenuKeyboard, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePluginWorkspace, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useRequestSyncState, useResourceCrud, useRovingFocus, useRuntimeAlignment, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
8
+ import { B as toBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, P as getBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, l as requireBioTemplateControlSchema, o as getBioTemplateControlSchema } from "../templates-CmGfmBRA.js";
9
+ import { n as useDebouncedWatch, t as useExperimentSelector } from "../useExperimentSelector-CEcIaueJ.js";
10
+ import { A as buildAnalysisArtifactTargetQuery, C as useWellPainting, D as useResourceCrud, E as createPluginResourceClient, F as useAsyncBatch, I as resolvePluginFrontendBase, L as usePasskey, M as useFileBrowser, N as usePluginConfig, O as useOptimisticMutation, P as useAsync, R as useAuth, S as coordinateToWellId, T as wellIdsInRectangle, _ as useWellPlateValidation, a as downloadBlob, b as createWellPlateWells, c as pluginFormDataFromPayload, d as usePluginClient, f as usePluginEventStream, g as runWellPlateValidation, h as resolvePluginBaseUrl, i as createPluginClient, j as parseAnalysisArtifactTarget, k as useCommandHistory, l as uploadPluginEndpoint, m as buildPluginEndpointUrl, n as encodePlatformPickerPath, o as downloadPluginEndpoint, p as usePluginSettings, r as usePlatformFilePickerAdapter, s as getPluginPageSelectorItems, t as decodePlatformPickerPath, u as useCurrentExperiment, v as createColumnConditions, w as wellIdToCoordinate, x as useWellPlateAdapter, y as createRowConditions } from "../composables-mFXsTA4g.js";
11
+ export { ANALYSIS_FILE_ARTIFACT_SCHEMA, APP_EXPERIMENT_KEY, ATOMIC_WEIGHTS, AuthenticationRequiredError, DATE_PRESET_OPTIONS, DEFAULT_COLORS, DEFAULT_MOBILE_VIEWPORT_QUERY, DEFAULT_PRESETS, DEFAULT_UNITS, EXPERIMENT_STATUS_LABELS, EXPERIMENT_STATUS_OPTIONS, EXPERIMENT_STATUS_VARIANT_MAP, REORDER_ANNOUNCER_STYLE, SORT_OPTIONS, addMinutes, buildAnalysisArtifactTargetQuery, buildPluginEndpointUrl, candidateMatchesSearch, combinePluginJobSources, compareSortValues, compareTime, controlValuesToComponentBindings, controlValuesToComponentBindingsById, controlValuesToComponentProps, controlsToFormSchema, controlsToSectionFormSchema, controlsToSectionFormSchemas, controlsToSettingsSchema, controlsToSidebarPanels, controlsToTopBarSettingsConfig, controlsToViewIds, controlsToViewItems, coordinateToWellId, createColumnConditions, createGeneratedAnalysisTransport, createPluginClient, createPluginResourceClient, createRowConditions, createWellPlateWells, datePresetToISO, decodePlatformPickerPath, defineControlComponentBindings, defineControlModel, defineControls, defineDoseCalculatorControlProps, defineDoseDesignControlModel, defineWellPlateControlProps, defineWellPlateDoseComponentBindings, defineWellPlateDoseControlProps, detectDelimiter, downloadBlob, downloadPluginEndpoint, durationMinutes, encodePlatformPickerPath, evaluateCondition, experimentIdFromRoute, extractSampleNamesFromDesignData, extractSampleOptionsFromDesignData, extractSamplesFromDesignData, findAvailableSlots, findNearestTimeSlotIndex, formatDuration, formatExperimentDate, formatExperimentStatus, formatTime, formatTimeSlot, fromMinutes, generateDilutionSeries, generateTimeSlots, getBioTemplateComponentBindings, getBioTemplateComponentProps, getBioTemplateControlSchema, getControlDefaults, getDefaultControlView, getExperimentStatusVariant, getFieldRegistryEntry, getInjectedFrontendRevision, getPluginPageSelectorItems, getPresenceClientId, getTypeDefault, isTimeInRange, normalizeSearchQuery, parseAnalysisArtifactTarget, parseDelimitedText, parseTime, pluginFormDataFromPayload, rangesOverlap, readFileAsText, reorderList, requireBioTemplateControlSchema, resolveCurrentPluginId, resolveExperimentCode, resolvePluginBaseUrl, resolvePluginFrontendBase, runWellPlateValidation, snapToSlot, toBioTemplateComponentBindings, toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, toMinutes, unwrapExperimentDesignData, uploadPluginEndpoint, useAnalysisArtifacts, useApi, useAppExperiment, useAsync, useAsyncBatch, useAuth, useAutoGroup, useBioTemplateComponents, useBioTemplateControls, useBioTemplatePackWorkspace, useBioTemplatePresetWorkspace, useBioTemplateWorkspace, useChemicalFormula, useCommandHistory, useConcentrationUnits, useControlSchema, useControlWorkspace, useCurrentExperiment, useDebouncedWatch, useDoseCalculator, useEventListener, useExpansionSet, useExperimentData, useExperimentSamples, useExperimentSave, useExperimentSelector, useFileBrowser, useFileImport, useFocusTrap, useForm, useFormBuilder, useGeneratedAnalysis, useGroupAssignment, useJobsStatusTray, useListReorder, useListSelection, useMenuKeyboard, useMobileSupportGate, useOptimisticMutation, usePasskey, usePlatformContext, usePlatformFilePickerAdapter, usePluginClient, usePluginConfig, usePluginEventStream, usePluginJobCenter, usePluginJobs, usePluginSettings, usePluginWorkspace, usePresenceHeartbeat, useProtocolTemplates, useRackEditor, useReagentSeries, useReorderAnnouncer, useRequestSyncState, useResourceCrud, useRovingFocus, useRuntimeAlignment, useSampleGroups, useScheduleDrag, useSelectionLimit, useSequenceUtils, useSortedItems, useTemplateCollection, useTextSearch, useTheme, useTimeUtils, useToast, useWellPainting, useWellPlateAdapter, useWellPlateEditor, useWellPlateValidation, validateImportFile, wellIdToCoordinate, wellIdsInRectangle };
@@ -1,17 +1,24 @@
1
1
  import { AxiosInstance, AxiosRequestConfig } from 'axios';
2
- /** Raised when an authenticated SDK request is rejected because the login is no longer valid. */
3
- export declare class AuthenticationRequiredError extends Error {
4
- readonly cause?: unknown | undefined;
5
- readonly code = "AUTHENTICATION_REQUIRED";
6
- readonly status = 401;
7
- constructor(cause?: unknown | undefined);
2
+ import { MintApiError } from '../apiErrors';
3
+ /**
4
+ * Raised when an authenticated SDK request is rejected because the login is no
5
+ * longer valid. It is also a `MintApiError` (status 401), so typed-error callers
6
+ * and `instanceof AuthenticationRequiredError` callers both recognise it.
7
+ */
8
+ export declare class AuthenticationRequiredError extends MintApiError {
9
+ readonly name: string;
10
+ readonly code: 'AUTHENTICATION_REQUIRED';
11
+ readonly status: 401;
12
+ constructor(cause?: unknown, envelope?: MintApiError);
8
13
  }
9
14
  /** @internal Convert a rejected authenticated request into the SDK's public auth error. */
10
- export declare function authenticationRequiredError(cause: unknown, rejectedToken?: string): AuthenticationRequiredError;
15
+ export declare function authenticationRequiredError(cause: unknown, rejectedToken?: string, envelope?: MintApiError): AuthenticationRequiredError;
11
16
  export interface ApiClientOptions {
12
17
  baseUrl?: string;
13
18
  timeout?: number;
14
19
  withAuth?: boolean;
20
+ /** Normalize failed responses into MintApiError. Generated clients enable this by default. */
21
+ typedErrors?: boolean;
15
22
  }
16
23
  export interface UseApiReturn {
17
24
  client: AxiosInstance;
@@ -2,18 +2,34 @@ import { Ref } from 'vue';
2
2
  export interface UseDropdownStateOptions {
3
3
  closeOnOutsideClick?: boolean;
4
4
  closeOnEscape?: boolean;
5
+ /** Close the panel when the page scrolls or the viewport resizes. Default `false`. */
6
+ closeOnScroll?: boolean;
5
7
  insideRefs?: Array<Ref<HTMLElement | null>>;
8
+ /**
9
+ * Element focus returns to when the panel closes with `close(true)` (Escape).
10
+ * Pass one when the trigger lives outside `rootRef`; otherwise bind the
11
+ * returned `triggerRef` to the trigger element.
12
+ */
13
+ triggerRef?: Ref<HTMLElement | null>;
6
14
  onOpen?: () => void;
7
15
  onClose?: () => void;
8
16
  }
9
17
  export interface UseDropdownStateReturn {
10
18
  isOpen: Ref<boolean>;
11
19
  rootRef: Ref<HTMLElement | null>;
20
+ /** Bind to the trigger element so Escape can return focus to it. */
21
+ triggerRef: Ref<HTMLElement | null>;
12
22
  open: () => void;
13
- close: () => void;
23
+ /** Closes the panel; `returnFocus` moves focus back to `triggerRef`. */
24
+ close: (returnFocus?: boolean) => void;
14
25
  toggle: () => void;
15
26
  handleClickOutside: (event: MouseEvent) => void;
16
27
  handleKeydown: (event: KeyboardEvent) => void;
17
28
  }
18
- /** Shared disclosure state for dropdown-style SDK components. */
29
+ /**
30
+ * Shared disclosure state for dropdown-style SDK components: open/close state,
31
+ * outside-click and Escape closing, optional scroll/resize closing, and focus
32
+ * return to the trigger. `close(returnFocus)` mirrors `useMenuKeyboard`'s
33
+ * contract, so the two compose directly.
34
+ */
19
35
  export declare function useDropdownState(options?: UseDropdownStateOptions): UseDropdownStateReturn;
@@ -12,7 +12,16 @@ export interface EventStreamOptions<TData = string> {
12
12
  headers?: HeadersInit;
13
13
  credentials?: RequestCredentials;
14
14
  immediate?: boolean;
15
+ /**
16
+ * Reconnect after a dropped stream. Left unset, it follows the platform's
17
+ * `wsAutoReconnect` setting, defaulting to `true` without a settings store.
18
+ */
15
19
  reconnect?: boolean;
20
+ /**
21
+ * Delay before the first reconnect attempt. Left unset, it follows the
22
+ * platform's `wsReconnectInterval` setting, defaulting to 2000 ms without a
23
+ * settings store. A server-sent `retry:` field still overrides it.
24
+ */
16
25
  reconnectDelayMs?: number;
17
26
  parseJson?: boolean;
18
27
  shouldReconnect?: (cause?: unknown) => boolean;
@@ -0,0 +1,55 @@
1
+ import { ComputedRef, MaybeRefOrGetter, Ref } from 'vue';
2
+ import { FileBrowserSortKey, FileEntry, FilePathCrumb, FileSelection, ServerMount } from '../types/fileBrowserTypes';
3
+ export interface UseFileBrowserOptions {
4
+ /** Extensions the caller cares about; entries are flagged, never removed. */
5
+ typeRules?: MaybeRefOrGetter<string[] | undefined>;
6
+ /** Mount to open first; defaults to the first available one. */
7
+ initialMountId?: MaybeRefOrGetter<string | undefined>;
8
+ /** Override the platform API base URL (standalone plugin dev). */
9
+ apiBaseUrl?: string;
10
+ }
11
+ export interface UseFileBrowserReturn {
12
+ /** Every configured mount, offline ones included. */
13
+ mounts: Ref<ServerMount[]>;
14
+ /** Mount the current listing belongs to. */
15
+ mountId: Ref<string>;
16
+ /** Mount-relative path of the current listing. */
17
+ path: Ref<string>;
18
+ /** Parent path, or null at a mount root. */
19
+ parent: Ref<string | null>;
20
+ entries: Ref<FileEntry[]>;
21
+ breadcrumbs: Ref<FilePathCrumb[]>;
22
+ /** Directory size before any search filter. */
23
+ totalCount: Ref<number | null>;
24
+ /** How many entries satisfy the type rules. */
25
+ matchCount: Ref<number | null>;
26
+ /** How many rows this listing carries, after search and any cap. */
27
+ shownCount: Ref<number | null>;
28
+ /** True when the server capped the listing. */
29
+ truncated: Ref<boolean>;
30
+ search: Ref<string>;
31
+ sort: Ref<FileBrowserSortKey>;
32
+ /** Controlled selection, ready to bind to FileBrowserModal. */
33
+ selected: Ref<FileSelection[]>;
34
+ isLoading: ComputedRef<boolean>;
35
+ error: Ref<string | null>;
36
+ /** Load the mount list and open the first available mount. */
37
+ init: () => Promise<void>;
38
+ /** Open a directory, or a mount root when path is empty. */
39
+ navigate: (location: {
40
+ mount_id: string;
41
+ path: string;
42
+ }) => Promise<void>;
43
+ /** Re-read the current directory. */
44
+ refresh: () => Promise<void>;
45
+ /** Take the directory currently being viewed as the input. */
46
+ selectCurrentFolder: () => void;
47
+ clear: () => void;
48
+ }
49
+ /**
50
+ * Drives FileBrowserModal against the platform's `/api/filesystem` routes.
51
+ *
52
+ * Requires the `filesystem.browse` permission and a deployment that declares
53
+ * mounts; with none configured the routes are absent and `mounts` stays empty.
54
+ */
55
+ export declare function useFileBrowser(options?: UseFileBrowserOptions): UseFileBrowserReturn;
@@ -0,0 +1,189 @@
1
+ import { PickerAdapter, PickerCapabilities, PickerNode, PickerSelection, PickerSelectionMode, PickerSource } from '../types/filePicker';
2
+ interface PickerStateProps {
3
+ open: boolean;
4
+ adapter: PickerAdapter;
5
+ selectionMode: PickerSelectionMode;
6
+ sources: PickerSource[];
7
+ capabilities: PickerCapabilities;
8
+ initialPath: string;
9
+ initialSelection: PickerSelection | null;
10
+ systemFilter?: (node: PickerNode, source: PickerSource) => boolean;
11
+ }
12
+ type PickerEmit = {
13
+ (event: 'update:open', value: boolean): void;
14
+ (event: 'select', value: PickerSelection): void;
15
+ (event: 'cancel'): void;
16
+ };
17
+ /** Internal orchestration; public consumers use FilePicker's props and events. */
18
+ export declare function useFilePicker(props: PickerStateProps, emit: PickerEmit): {
19
+ previewNode: import('vue').ComputedRef<PickerNode>;
20
+ sourceNames: Record<PickerSource, string>;
21
+ sourceIcons: Record<PickerSource, string>;
22
+ allowedSources: import('vue').ComputedRef<PickerSource[]>;
23
+ source: import('vue').ShallowRef<PickerSource, PickerSource>;
24
+ query: import('vue').ShallowRef<string, string>;
25
+ recursive: import('vue').ShallowRef<boolean, boolean>;
26
+ skipBlanks: import('vue').ShallowRef<boolean, boolean>;
27
+ reviewing: import('vue').ShallowRef<boolean, boolean>;
28
+ nav: {
29
+ path: import('vue').ShallowRef<string, string>;
30
+ trail: import('vue').Ref<{
31
+ path: string;
32
+ label: string;
33
+ }[], {
34
+ path: string;
35
+ label: string;
36
+ }[] | {
37
+ path: string;
38
+ label: string;
39
+ }[]>;
40
+ entries: import('vue').ShallowRef<PickerNode[], PickerNode[]>;
41
+ nodes: import('vue').Ref<Map<string, {
42
+ kind: "folder";
43
+ fileCount?: number | null | undefined;
44
+ formats?: Record<string, number> | undefined;
45
+ hasChildren?: boolean | undefined;
46
+ path: string;
47
+ name: string;
48
+ parentPath?: string | null | undefined;
49
+ parentName?: string | undefined;
50
+ bytes?: number | null | undefined;
51
+ unavailableReason?: string | undefined;
52
+ } | {
53
+ kind: "file";
54
+ format: string;
55
+ file?: {
56
+ readonly lastModified: number;
57
+ readonly name: string;
58
+ readonly webkitRelativePath: string;
59
+ readonly size: number;
60
+ readonly type: string;
61
+ arrayBuffer: () => Promise<ArrayBuffer>;
62
+ bytes: () => Promise<Uint8Array<ArrayBuffer>>;
63
+ slice: (start?: number, end?: number, contentType?: string) => Blob;
64
+ stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
65
+ text: () => Promise<string>;
66
+ } | undefined;
67
+ path: string;
68
+ name: string;
69
+ parentPath?: string | null | undefined;
70
+ parentName?: string | undefined;
71
+ bytes?: number | null | undefined;
72
+ unavailableReason?: string | undefined;
73
+ }> & Omit<Map<string, PickerNode>, keyof Map<any, any>>, Map<string, PickerNode> | (Map<string, {
74
+ kind: "folder";
75
+ fileCount?: number | null | undefined;
76
+ formats?: Record<string, number> | undefined;
77
+ hasChildren?: boolean | undefined;
78
+ path: string;
79
+ name: string;
80
+ parentPath?: string | null | undefined;
81
+ parentName?: string | undefined;
82
+ bytes?: number | null | undefined;
83
+ unavailableReason?: string | undefined;
84
+ } | {
85
+ kind: "file";
86
+ format: string;
87
+ file?: {
88
+ readonly lastModified: number;
89
+ readonly name: string;
90
+ readonly webkitRelativePath: string;
91
+ readonly size: number;
92
+ readonly type: string;
93
+ arrayBuffer: () => Promise<ArrayBuffer>;
94
+ bytes: () => Promise<Uint8Array<ArrayBuffer>>;
95
+ slice: (start?: number, end?: number, contentType?: string) => Blob;
96
+ stream: () => ReadableStream<Uint8Array<ArrayBuffer>>;
97
+ text: () => Promise<string>;
98
+ } | undefined;
99
+ path: string;
100
+ name: string;
101
+ parentPath?: string | null | undefined;
102
+ parentName?: string | undefined;
103
+ bytes?: number | null | undefined;
104
+ unavailableReason?: string | undefined;
105
+ }> & Omit<Map<string, PickerNode>, keyof Map<any, any>>)>;
106
+ children: import('vue').ShallowRef<Map<string, PickerNode[]>, Map<string, PickerNode[]>>;
107
+ expanded: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
108
+ expanding: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
109
+ expansionErrors: import('vue').Ref<Map<string, string> & Omit<Map<string, string>, keyof Map<any, any>>, Map<string, string> | (Map<string, string> & Omit<Map<string, string>, keyof Map<any, any>>)>;
110
+ loading: import('vue').ShallowRef<boolean, boolean>;
111
+ error: import('vue').ShallowRef<string, string>;
112
+ rows: import('vue').ComputedRef<import('..').PickerTreeRow[]>;
113
+ isAllowed: (node: PickerNode) => boolean;
114
+ clear: () => void;
115
+ invalidate: () => void;
116
+ register: (items: PickerNode[], parent?: string) => void;
117
+ loadChildren: (folder: string, ancestors?: string[], refresh?: boolean) => Promise<PickerNode[]>;
118
+ load: (query?: string, recursive?: boolean, refresh?: boolean) => Promise<void>;
119
+ expand: (node: PickerNode) => Promise<void>;
120
+ enter: (node: PickerNode) => void;
121
+ up: (target?: string) => void;
122
+ };
123
+ selection: {
124
+ keys: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
125
+ dropped: import('vue').Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
126
+ focusPath: import('vue').ShallowRef<string, string>;
127
+ resolving: import('vue').ShallowRef<boolean, boolean>;
128
+ resolutionError: import('vue').ShallowRef<string, string>;
129
+ roots: import('vue').ComputedRef<PickerNode[]>;
130
+ chosen: import('vue').ComputedRef<{
131
+ files: import('..').PickerFile[];
132
+ excluded: import('..').PickerExcluded[];
133
+ bytes: number;
134
+ }>;
135
+ focused: import('vue').ComputedRef<PickerNode>;
136
+ select: (node: PickerNode, modifiers?: {
137
+ metaKey?: boolean;
138
+ ctrlKey?: boolean;
139
+ shiftKey?: boolean;
140
+ toggle?: boolean;
141
+ }) => void;
142
+ selected: (node: PickerNode) => boolean;
143
+ selectable: (node: PickerNode) => boolean;
144
+ exclusion: (node: PickerNode) => import('..').PickerExcluded | null;
145
+ reset: (selection?: PickerSelection | null) => void;
146
+ resolve: () => Promise<void>;
147
+ folderProgress: (node: PickerNode) => string;
148
+ ancestorSelected: (node: PickerNode, candidates?: Set<string> & Omit<Set<string>, keyof Set<any>>) => boolean;
149
+ };
150
+ capability: import('vue').ComputedRef<import('..').PickerCapability | undefined>;
151
+ path: import('vue').ShallowRef<string, string>;
152
+ trail: import('vue').Ref<{
153
+ path: string;
154
+ label: string;
155
+ }[], {
156
+ path: string;
157
+ label: string;
158
+ }[] | {
159
+ path: string;
160
+ label: string;
161
+ }[]>;
162
+ loading: import('vue').ShallowRef<boolean, boolean>;
163
+ error: import('vue').ShallowRef<string, string>;
164
+ rows: import('vue').ComputedRef<import('..').PickerTreeRow[]>;
165
+ roots: import('vue').ComputedRef<PickerNode[]>;
166
+ chosen: import('vue').ComputedRef<{
167
+ files: import('..').PickerFile[];
168
+ excluded: import('..').PickerExcluded[];
169
+ bytes: number;
170
+ }>;
171
+ focused: import('vue').ComputedRef<PickerNode>;
172
+ resolving: import('vue').ShallowRef<boolean, boolean>;
173
+ resolutionError: import('vue').ShallowRef<string, string>;
174
+ searchArea: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
175
+ confirmLabel: import('vue').ComputedRef<string>;
176
+ folderCount: import('vue').ComputedRef<number>;
177
+ canConfirm: import('vue').ComputedRef<boolean>;
178
+ switchSource: (next: PickerSource) => Promise<void>;
179
+ selectNode: (node: PickerNode, event: MouseEvent | KeyboardEvent) => void;
180
+ enter: (node: PickerNode) => Promise<void>;
181
+ up: (target?: string) => Promise<void>;
182
+ refresh: () => Promise<void>;
183
+ selectParent: (node: PickerNode) => void;
184
+ chooseLocal: (files: File[], _rootName?: string, relativePaths?: string[]) => Promise<void>;
185
+ cancel: () => void;
186
+ confirm: () => void;
187
+ keyboard: (event: KeyboardEvent) => void;
188
+ };
189
+ export {};