@opentrons/components 0.1.7-alpha.0 → 0.1.7-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/README.md +0 -1
  2. package/lib/assets/localization/en/index.d.ts +14 -0
  3. package/lib/assets/localization/index.d.ts +14 -0
  4. package/lib/atoms/Chip/index.d.ts +2 -0
  5. package/lib/atoms/InlineNotification/index.d.ts +18 -0
  6. package/lib/atoms/ListButton/index.d.ts +5 -0
  7. package/lib/atoms/ListItem/ListItemChildren/ListItemDescriptor.d.ts +4 -0
  8. package/lib/atoms/StyledText/StyledText.d.ts +1 -1
  9. package/lib/atoms/Tag/index.d.ts +4 -1
  10. package/lib/atoms/Toast/index.d.ts +1 -1
  11. package/lib/atoms/Tooltip/index.d.ts +1 -1
  12. package/lib/atoms/buttons/LargeButton.d.ts +1 -1
  13. package/lib/atoms/buttons/RadioButton.d.ts +29 -1
  14. package/lib/atoms/index.d.ts +3 -2
  15. package/lib/buttons/Button.d.ts +1 -1
  16. package/lib/controls/ToggleButton.d.ts +8 -2
  17. package/lib/controls/index.d.ts +0 -1
  18. package/lib/forms/DeprecatedCheckboxField.d.ts +1 -1
  19. package/lib/forms/SelectField.d.ts +1 -1
  20. package/lib/hardware-sim/BaseDeck/BaseDeck.d.ts +13 -1
  21. package/lib/hardware-sim/BaseDeck/WasteChuteFixture.d.ts +1 -1
  22. package/lib/hardware-sim/Deck/MoveLabwareOnDeck.d.ts +1 -1
  23. package/lib/hardware-sim/Deck/RobotWorkSpace.d.ts +1 -1
  24. package/lib/hardware-sim/Labware/Labware.d.ts +2 -2
  25. package/lib/hardware-sim/Labware/LabwareAdapter/index.d.ts +2 -2
  26. package/lib/hardware-sim/Labware/LabwareRender.d.ts +2 -2
  27. package/lib/hardware-sim/Labware/index.d.ts +0 -1
  28. package/lib/hardware-sim/Labware/labwareInternals/FilledWells.d.ts +1 -1
  29. package/lib/hardware-sim/Labware/labwareInternals/StaticLabware.d.ts +1 -1
  30. package/lib/hardware-sim/Labware/labwareInternals/StrokedWells.d.ts +1 -1
  31. package/lib/hardware-sim/Labware/labwareInternals/Well.d.ts +1 -1
  32. package/lib/hardware-sim/Labware/labwareInternals/getTiprackBackgroundColor.d.ts +1 -0
  33. package/lib/hardware-sim/Module/FlexStacker.d.ts +1 -0
  34. package/lib/hardware-sim/Module/index.d.ts +1 -1
  35. package/lib/hardware-sim/index.d.ts +0 -2
  36. package/lib/helix-design-system/colors.d.ts +2 -1
  37. package/lib/hooks/useSwipe.d.ts +1 -1
  38. package/lib/icons/ModuleIcon.d.ts +1 -1
  39. package/lib/icons/NotificationIcon.d.ts +1 -1
  40. package/lib/instrument/InstrumentDiagram.d.ts +1 -1
  41. package/lib/instrument/index.d.ts +0 -1
  42. package/lib/legacy-hardware-sim/ModuleItem.d.ts +1 -1
  43. package/lib/molecules/Banner/index.d.ts +1 -1
  44. package/lib/molecules/DropdownMenu/index.d.ts +1 -1
  45. package/lib/molecules/LiquidIcon/index.d.ts +2 -2
  46. package/lib/organisms/CommandText/useCommandTextString/index.d.ts +2 -2
  47. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getFlexStackerCommandText.test.d.ts +1 -0
  48. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getRobotCommandText.test.d.ts +1 -0
  49. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getAbsorbanceReaderCommandText.d.ts +1 -1
  50. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getFlexStackerCommandText.d.ts +6 -3
  51. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getRobotCommandText.d.ts +4 -0
  52. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/getTemperatureCommandText.d.ts +1 -1
  53. package/lib/organisms/CommandText/useCommandTextString/utils/commandText/index.d.ts +2 -0
  54. package/lib/organisms/CommandText/useCommandTextString/utils/getAddressableAreaDisplayName.d.ts +1 -1
  55. package/lib/organisms/CommandText/useCommandTextString/utils/getFinalLabwareLocation.d.ts +1 -1
  56. package/lib/organisms/CommandText/useCommandTextString/utils/getLabwareDisplayLocation.d.ts +1 -1
  57. package/lib/organisms/CommandText/useCommandTextString/utils/getLabwareLocation.d.ts +1 -1
  58. package/lib/organisms/DeckLabelSet/index.d.ts +1 -0
  59. package/lib/organisms/FixtureOption/__tests__/FixtureOption.test.d.ts +1 -0
  60. package/lib/organisms/FixtureOption/index.d.ts +10 -0
  61. package/lib/organisms/ProtocolTimelineScrubber/utils.d.ts +1 -1
  62. package/lib/organisms/index.d.ts +1 -0
  63. package/lib/primitives/ForeignObject.d.ts +1 -1
  64. package/lib/primitives/Link.d.ts +1 -1
  65. package/lib/primitives/Svg.d.ts +1 -1
  66. package/lib/primitives/style-props.d.ts +2 -2
  67. package/lib/primitives/types.d.ts +1 -1
  68. package/lib/testing/utils/renderWithProviders.d.ts +2 -2
  69. package/lib/tooltips/LegacyTooltip.d.ts +1 -1
  70. package/lib/tooltips/types.d.ts +2 -2
  71. package/package.json +2 -3
  72. package/src/Components.mdx +12 -0
  73. package/src/__tests__/utils.test.ts +2 -1
  74. package/src/alerts/AlertItem.stories.tsx +2 -2
  75. package/src/alerts/AlertItem.tsx +2 -1
  76. package/src/assets/localization/en/protocol_command_text.json +14 -0
  77. package/src/atoms/Checkbox/Checkbox.stories.tsx +1 -1
  78. package/src/atoms/Checkbox/__tests__/Checkbox.test.tsx +4 -2
  79. package/src/atoms/Checkbox/index.tsx +3 -2
  80. package/src/atoms/CheckboxField/CheckboxField.stories.tsx +3 -2
  81. package/src/atoms/CheckboxField/__tests__/CheckboxField.test.tsx +21 -35
  82. package/src/atoms/CheckboxField/index.tsx +81 -70
  83. package/src/atoms/Chip/Chip.stories.tsx +3 -2
  84. package/src/atoms/Chip/__tests__/Chip.test.tsx +41 -3
  85. package/src/atoms/Chip/index.tsx +76 -50
  86. package/src/atoms/InlineNotification/InlineNotification.stories.tsx +107 -0
  87. package/src/atoms/InlineNotification/__tests__/InlineNotification.test.tsx +66 -0
  88. package/src/atoms/InlineNotification/index.tsx +197 -0
  89. package/src/atoms/InputField/InputField.stories.tsx +3 -0
  90. package/src/atoms/InputField/__tests__/InputField.test.tsx +4 -3
  91. package/src/atoms/InputField/index.tsx +4 -4
  92. package/src/atoms/ListButton/ListButton.stories.tsx +4 -2
  93. package/src/atoms/ListButton/ListButtonChildren/ListButtonRadioButton.tsx +3 -2
  94. package/src/atoms/ListButton/__tests__/ListButton.test.tsx +5 -3
  95. package/src/atoms/ListButton/__tests__/ListButtonAccordion.test.tsx +2 -2
  96. package/src/atoms/ListButton/__tests__/ListButtonRadioButton.test.tsx +2 -2
  97. package/src/atoms/ListButton/index.tsx +57 -41
  98. package/src/atoms/ListItem/ListItem.stories.tsx +7 -5
  99. package/src/atoms/ListItem/ListItemChildren/ListItemCustomize.tsx +21 -15
  100. package/src/atoms/ListItem/ListItemChildren/ListItemDescriptor.tsx +4 -0
  101. package/src/atoms/ListItem/__tests__/ListItem.test.tsx +5 -3
  102. package/src/atoms/ListItem/index.tsx +3 -2
  103. package/src/atoms/ListTable/ListTable.stories.tsx +1 -1
  104. package/src/atoms/ListTable/__tests__/ListTable.test.tsx +2 -2
  105. package/src/atoms/ListTable/index.tsx +4 -4
  106. package/src/atoms/MenuList/MenuItem.stories.tsx +1 -1
  107. package/src/atoms/MenuList/MenuItem.tsx +4 -1
  108. package/src/atoms/MenuList/MenuList.stories.tsx +1 -0
  109. package/src/atoms/MenuList/OverflowBtn.tsx +1 -1
  110. package/src/atoms/MenuList/__tests__/MenuItem.test.tsx +2 -3
  111. package/src/atoms/MenuList/__tests__/MenuList.test.tsx +2 -2
  112. package/src/atoms/MenuList/__tests__/OverflowBtn.test.tsx +1 -1
  113. package/src/atoms/MenuList/index.tsx +2 -2
  114. package/src/atoms/Snackbar/Snackbar.stories.tsx +4 -2
  115. package/src/atoms/Snackbar/__tests__/Snackbar.test.tsx +6 -3
  116. package/src/atoms/Snackbar/index.tsx +3 -2
  117. package/src/atoms/StepMeter/__tests__/StepMeter.test.tsx +45 -0
  118. package/src/atoms/StepMeter/index.tsx +33 -24
  119. package/src/atoms/StyledText/LegacyStyledText.stories.tsx +2 -1
  120. package/src/atoms/StyledText/LegacyStyledText.tsx +3 -2
  121. package/src/atoms/StyledText/StyledText.stories.tsx +3 -2
  122. package/src/atoms/StyledText/StyledText.tsx +4 -3
  123. package/src/atoms/SubListTable/SubListTable.stories.tsx +1 -1
  124. package/src/atoms/SubListTable/__tests__/SubListTable.test.tsx +2 -2
  125. package/src/atoms/SubListTable/index.tsx +4 -4
  126. package/src/atoms/Tag/Tag.stories.tsx +2 -1
  127. package/src/atoms/Tag/__tests__/Tag.test.tsx +2 -1
  128. package/src/atoms/Tag/index.tsx +53 -35
  129. package/src/atoms/Toast/ODDToast.stories.tsx +18 -8
  130. package/src/atoms/Toast/Toast.stories.tsx +3 -2
  131. package/src/atoms/Toast/__tests__/ODDToast.test.tsx +5 -2
  132. package/src/atoms/Toast/__tests__/Toast.test.tsx +5 -2
  133. package/src/atoms/Toast/index.tsx +75 -80
  134. package/src/atoms/ToggleGroup/ToggleGroup.stories.tsx +2 -0
  135. package/src/atoms/ToggleGroup/__tests__/ToggleGroup.test.tsx +2 -1
  136. package/src/atoms/ToggleGroup/index.tsx +2 -1
  137. package/src/atoms/Tooltip/Tooltip.stories.tsx +6 -5
  138. package/src/atoms/Tooltip/__tests__/Tooltip.test.tsx +6 -5
  139. package/src/atoms/Tooltip/index.tsx +3 -3
  140. package/src/atoms/buttons/AlertPrimaryButton.tsx +2 -1
  141. package/src/atoms/buttons/AltPrimaryButton.tsx +1 -1
  142. package/src/atoms/buttons/EmptySelectorButton.stories.tsx +1 -0
  143. package/src/atoms/buttons/EmptySelectorButton.tsx +10 -3
  144. package/src/atoms/buttons/LargeButton.stories.tsx +2 -2
  145. package/src/atoms/buttons/LargeButton.tsx +5 -5
  146. package/src/atoms/buttons/PrimaryButton.tsx +7 -3
  147. package/src/atoms/buttons/RadioButton.stories.tsx +2 -1
  148. package/src/atoms/buttons/RadioButton.tsx +102 -43
  149. package/src/atoms/buttons/SecondaryButton.tsx +13 -7
  150. package/src/atoms/buttons/TertiaryButton.tsx +1 -0
  151. package/src/atoms/buttons/__tests__/AlertPrimaryButton.test.tsx +5 -4
  152. package/src/atoms/buttons/__tests__/AltPrimaryButton.test.tsx +6 -4
  153. package/src/atoms/buttons/__tests__/EmptySelectorButton.test.tsx +4 -2
  154. package/src/atoms/buttons/__tests__/LargeButton.test.tsx +4 -2
  155. package/src/atoms/buttons/__tests__/PrimaryButton.test.tsx +7 -5
  156. package/src/atoms/buttons/__tests__/RadioButton.test.tsx +17 -3
  157. package/src/atoms/buttons/__tests__/SecondaryButton.test.tsx +6 -5
  158. package/src/atoms/buttons/buttons.stories.tsx +6 -6
  159. package/src/atoms/index.ts +3 -2
  160. package/src/buttons/Button.tsx +2 -3
  161. package/src/buttons/IconButton.tsx +1 -2
  162. package/src/controls/LabeledRadioGroup.tsx +1 -1
  163. package/src/controls/ToggleButton.tsx +62 -18
  164. package/src/controls/index.ts +0 -1
  165. package/src/forms/DeprecatedCheckboxField.stories.tsx +1 -1
  166. package/src/forms/DeprecatedCheckboxField.tsx +3 -3
  167. package/src/forms/FormGroup.stories.tsx +3 -4
  168. package/src/forms/FormGroup.tsx +1 -0
  169. package/src/forms/InputField.stories.tsx +2 -1
  170. package/src/forms/LegacyInputField.tsx +1 -0
  171. package/src/forms/RadioGroup.stories.tsx +2 -1
  172. package/src/forms/RadioGroup.tsx +1 -0
  173. package/src/forms/Select.stories.tsx +2 -3
  174. package/src/forms/Select.tsx +3 -3
  175. package/src/forms/SelectField.tsx +1 -1
  176. package/src/forms/ToggleField.stories.tsx +1 -1
  177. package/src/forms/ToggleField.tsx +2 -2
  178. package/src/hardware-sim/BaseDeck/BaseDeck.stories.tsx +1 -1
  179. package/src/hardware-sim/BaseDeck/BaseDeck.tsx +121 -21
  180. package/src/hardware-sim/BaseDeck/WasteChuteFixture.tsx +5 -5
  181. package/src/hardware-sim/BaseDeck/__fixtures__/index.ts +2 -2
  182. package/src/hardware-sim/Deck/DeckFromLayers.tsx +6 -5
  183. package/src/hardware-sim/Deck/FlexTrash.tsx +2 -1
  184. package/src/hardware-sim/Deck/MoveLabwareOnDeck.stories.tsx +4 -3
  185. package/src/hardware-sim/Deck/MoveLabwareOnDeck.tsx +12 -12
  186. package/src/hardware-sim/Deck/RobotCoordsForeignObject.tsx +1 -0
  187. package/src/hardware-sim/Deck/RobotWorkSpace.tsx +3 -1
  188. package/src/hardware-sim/Deck/SlotLabels.tsx +2 -0
  189. package/src/hardware-sim/DeckConfigurator/AbsorbanceReaderFixture.tsx +2 -2
  190. package/src/hardware-sim/DeckConfigurator/DeckConfigurator.stories.tsx +2 -3
  191. package/src/hardware-sim/DeckConfigurator/EmptyConfigFixture.tsx +4 -3
  192. package/src/hardware-sim/DeckConfigurator/FlexStackerFixture.tsx +2 -2
  193. package/src/hardware-sim/DeckConfigurator/HeaterShakerFixture.tsx +3 -3
  194. package/src/hardware-sim/DeckConfigurator/MagneticBlockFixture.tsx +6 -6
  195. package/src/hardware-sim/DeckConfigurator/StagingAreaConfigFixture.tsx +1 -1
  196. package/src/hardware-sim/DeckConfigurator/StaticFixture.tsx +2 -2
  197. package/src/hardware-sim/DeckConfigurator/TemperatureModuleFixture.tsx +3 -3
  198. package/src/hardware-sim/DeckConfigurator/ThermocyclerFixture.tsx +4 -4
  199. package/src/hardware-sim/DeckConfigurator/TrashBinConfigFixture.tsx +3 -3
  200. package/src/hardware-sim/DeckConfigurator/WasteChuteConfigFixture.tsx +3 -3
  201. package/src/hardware-sim/DeckConfigurator/index.tsx +29 -16
  202. package/src/hardware-sim/Labware/Labware.tsx +5 -7
  203. package/src/hardware-sim/Labware/LabwareAdapter/index.tsx +5 -4
  204. package/src/hardware-sim/Labware/LabwareRender.stories.tsx +4 -5
  205. package/src/hardware-sim/Labware/LabwareRender.tsx +8 -9
  206. package/src/hardware-sim/Labware/__tests__/Labware.test.tsx +6 -2
  207. package/src/hardware-sim/Labware/__tests__/LabwareRender.test.tsx +6 -2
  208. package/src/hardware-sim/Labware/index.ts +0 -1
  209. package/src/hardware-sim/Labware/labwareInternals/FilledWells.tsx +2 -1
  210. package/src/hardware-sim/Labware/labwareInternals/LabwareOutline.tsx +9 -4
  211. package/src/hardware-sim/Labware/labwareInternals/LabwareWellLabels.tsx +2 -1
  212. package/src/hardware-sim/Labware/labwareInternals/StaticLabware.tsx +5 -5
  213. package/src/hardware-sim/Labware/labwareInternals/StrokedWells.tsx +3 -2
  214. package/src/hardware-sim/Labware/labwareInternals/StyledWells.tsx +2 -1
  215. package/src/hardware-sim/Labware/labwareInternals/Well.tsx +5 -2
  216. package/src/hardware-sim/Labware/labwareInternals/WellLabels.tsx +2 -1
  217. package/src/hardware-sim/Labware/labwareInternals/__tests__/LabwareWellLabels.test.tsx +4 -1
  218. package/src/hardware-sim/Labware/labwareInternals/__tests__/StrokedWells.test.tsx +5 -1
  219. package/src/hardware-sim/Labware/labwareInternals/__tests__/WellLabels.test.tsx +6 -2
  220. package/src/hardware-sim/Labware/labwareInternals/getTiprackBackgroundColor.ts +32 -0
  221. package/src/hardware-sim/Module/FlexStacker.tsx +54 -0
  222. package/src/hardware-sim/Module/Module.stories.tsx +4 -3
  223. package/src/hardware-sim/Module/ModuleTag.tsx +3 -3
  224. package/src/hardware-sim/Module/Thermocycler/ThermocyclerGEN1.tsx +1 -0
  225. package/src/hardware-sim/Module/Thermocycler/index.tsx +3 -3
  226. package/src/hardware-sim/Module/index.tsx +14 -7
  227. package/src/hardware-sim/Pipette/EightEmanatingNozzles.tsx +1 -0
  228. package/src/hardware-sim/Pipette/EmanatingNozzle.tsx +2 -1
  229. package/src/hardware-sim/Pipette/PipetteRender.stories.tsx +4 -2
  230. package/src/hardware-sim/Pipette/PipetteRender.tsx +7 -5
  231. package/src/hardware-sim/Pipette/__tests__/EightEmanatingNozzles.test.tsx +2 -1
  232. package/src/hardware-sim/Pipette/__tests__/EmanatingNozzle.test.tsx +4 -3
  233. package/src/hardware-sim/Pipette/__tests__/PipetteRender.test.tsx +9 -7
  234. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpace.tsx +2 -1
  235. package/src/hardware-sim/RobotCoordinateSpace/RobotCoordinateSpaceWithRef.tsx +1 -0
  236. package/src/hardware-sim/index.ts +0 -2
  237. package/src/helix-design-system/colors.ts +2 -1
  238. package/src/hooks/__tests__/useDrag.test.ts +3 -1
  239. package/src/hooks/__tests__/useLongPress.test.ts +2 -1
  240. package/src/hooks/__tests__/useScrolling.test.tsx +3 -2
  241. package/src/hooks/__tests__/useSwipe.test.tsx +2 -1
  242. package/src/hooks/useDrag.ts +2 -1
  243. package/src/hooks/useInterval.ts +1 -0
  244. package/src/hooks/useLongPress.ts +2 -1
  245. package/src/hooks/useMenuHandleClickOutside.tsx +1 -0
  246. package/src/hooks/useMountEffect.ts +2 -0
  247. package/src/hooks/useScrolling.ts +1 -1
  248. package/src/hooks/useSelectDeckLocation/SelectDeckLocation.stories.tsx +3 -1
  249. package/src/hooks/useSelectDeckLocation/index.tsx +8 -6
  250. package/src/hooks/useSwipe.ts +3 -2
  251. package/src/i18n.ts +4 -2
  252. package/src/icons/Icon.stories.tsx +2 -1
  253. package/src/icons/Icon.tsx +1 -1
  254. package/src/icons/IconList.stories.tsx +9 -8
  255. package/src/icons/ModuleIcon.tsx +8 -7
  256. package/src/icons/NotificationIcon.tsx +1 -1
  257. package/src/icons/icon-data.ts +5 -0
  258. package/src/instrument/InstrumentDiagram.stories.tsx +3 -2
  259. package/src/instrument/InstrumentDiagram.tsx +9 -8
  260. package/src/instrument/InstrumentGroup.stories.tsx +4 -3
  261. package/src/instrument/InstrumentGroup.tsx +1 -1
  262. package/src/instrument/InstrumentInfo.tsx +4 -4
  263. package/src/instrument/__tests__/InstrumentInfo.test.tsx +5 -3
  264. package/src/instrument/index.ts +0 -1
  265. package/src/interaction-enhancers/ClickOutside.ts +1 -0
  266. package/src/interaction-enhancers/HandleKeypress.tsx +1 -0
  267. package/src/interaction-enhancers/__tests__/useHover.test.tsx +1 -0
  268. package/src/interaction-enhancers/useHover.ts +1 -1
  269. package/src/legacy-hardware-sim/LabwareNameOverlay.tsx +1 -0
  270. package/src/legacy-hardware-sim/ModuleItem.tsx +2 -2
  271. package/src/lists/SidePanelGroup.tsx +1 -1
  272. package/src/lists/TitledList.tsx +2 -3
  273. package/src/modals/LegacyModal.tsx +2 -2
  274. package/src/modals/Modal.stories.tsx +1 -1
  275. package/src/modals/Modal.tsx +1 -1
  276. package/src/modals/ModalHeader.tsx +2 -2
  277. package/src/modals/ModalShell.tsx +3 -2
  278. package/src/modals/SpinnerModal.tsx +2 -2
  279. package/src/modals/SpinnerModalPage.tsx +1 -1
  280. package/src/modals/__tests__/Modal.test.tsx +4 -2
  281. package/src/modals/__tests__/ModalHeader.test.tsx +5 -3
  282. package/src/modals/__tests__/ModalShell.test.tsx +3 -1
  283. package/src/molecules/Banner/Banner.stories.tsx +1 -1
  284. package/src/molecules/Banner/__tests__/Banner.test.tsx +2 -2
  285. package/src/molecules/Banner/index.tsx +5 -4
  286. package/src/molecules/DeckInfoLabel/DeckInfoLabel.stories.tsx +1 -1
  287. package/src/molecules/DeckInfoLabel/__tests__/DeckInfoLabel.test.tsx +4 -4
  288. package/src/molecules/DeckLabel/__tests__/DeckLabel.test.tsx +3 -3
  289. package/src/molecules/DeckLabel/index.tsx +5 -3
  290. package/src/molecules/DropdownMenu/__tests__/DropdownMenu.test.tsx +3 -3
  291. package/src/molecules/DropdownMenu/index.tsx +5 -2
  292. package/src/molecules/InfoScreen/InfoScreen.stories.tsx +2 -1
  293. package/src/molecules/InfoScreen/__tests__/InfoScreen.test.tsx +3 -3
  294. package/src/molecules/InfoScreen/index.tsx +2 -2
  295. package/src/molecules/LiquidIcon/LiquidIcon.stories.tsx +3 -2
  296. package/src/molecules/LiquidIcon/__tests__/LiquidIcon.test.tsx +4 -4
  297. package/src/molecules/LiquidIcon/index.tsx +16 -10
  298. package/src/molecules/ListAccordion/ListAccordion.stories.tsx +3 -3
  299. package/src/molecules/ListAccordion/__tests__/ListAccordion.test.tsx +3 -3
  300. package/src/molecules/ListAccordion/index.tsx +6 -6
  301. package/src/molecules/ParametersTable/ParametersTable.stories.tsx +1 -0
  302. package/src/molecules/ParametersTable/__tests__/ParametersTable.test.tsx +3 -2
  303. package/src/molecules/ParametersTable/index.tsx +9 -7
  304. package/src/molecules/ReleaseNotes/index.tsx +1 -1
  305. package/src/molecules/Tabs/Tabs.stories.tsx +3 -1
  306. package/src/molecules/Tabs/__tests__/Tabs.test.tsx +3 -2
  307. package/src/molecules/Tabs/index.tsx +4 -3
  308. package/src/molecules/TextListTableContent/TextListTableContent.stories.tsx +1 -1
  309. package/src/molecules/TextListTableContent/__tests__/TextListTableContent.test.tsx +2 -2
  310. package/src/molecules/TextListTableContent/index.tsx +2 -2
  311. package/src/nav/SidePanel.stories.tsx +4 -3
  312. package/src/organisms/CommandText/CommandText.stories.tsx +3 -2
  313. package/src/organisms/CommandText/__tests__/CommandText.test.tsx +7 -6
  314. package/src/organisms/CommandText/fixtures/index.ts +1 -0
  315. package/src/organisms/CommandText/index.tsx +4 -2
  316. package/src/organisms/CommandText/useCommandTextString/index.ts +28 -5
  317. package/src/organisms/CommandText/useCommandTextString/utils/__tests__/formatDuration.test.tsx +2 -1
  318. package/src/organisms/CommandText/useCommandTextString/utils/__tests__/getFinalLabwareLocation.test.ts +4 -1
  319. package/src/organisms/CommandText/useCommandTextString/utils/__tests__/getLabwareDisplayLocation.test.tsx +6 -5
  320. package/src/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getFlexStackerCommandText.test.tsx +179 -0
  321. package/src/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getPipettingCommandText.test.tsx +10 -9
  322. package/src/organisms/CommandText/useCommandTextString/utils/commandText/__tests__/getRobotCommandText.test.tsx +118 -0
  323. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getAbsorbanceReaderCommandText.ts +1 -1
  324. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getFlexStackerCommandText.ts +142 -6
  325. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getLiquidProbeCommandText.ts +1 -0
  326. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getLoadCommandText.ts +4 -3
  327. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getPipettingCommandText.ts +5 -4
  328. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getRobotCommandText.ts +87 -0
  329. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getTCRunExtendedProfileCommandText.ts +3 -2
  330. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getTCRunProfileCommandText.ts +1 -0
  331. package/src/organisms/CommandText/useCommandTextString/utils/commandText/getTemperatureCommandText.ts +4 -4
  332. package/src/organisms/CommandText/useCommandTextString/utils/commandText/index.ts +2 -0
  333. package/src/organisms/CommandText/useCommandTextString/utils/formatDuration.ts +2 -0
  334. package/src/organisms/CommandText/useCommandTextString/utils/getAddressableAreaDisplayName.ts +1 -1
  335. package/src/organisms/CommandText/useCommandTextString/utils/getFinalAddressableAreaCmd.ts +2 -0
  336. package/src/organisms/CommandText/useCommandTextString/utils/getFinalLabwareLocation.ts +2 -2
  337. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareDefinitionsFromCommands.ts +1 -1
  338. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareDisplayLocation.tsx +38 -15
  339. package/src/organisms/CommandText/useCommandTextString/utils/getLabwareLocation.tsx +18 -9
  340. package/src/organisms/CommandText/useCommandTextString/utils/getModuleDisplayLocation.ts +1 -0
  341. package/src/organisms/CommandText/useCommandTextString/utils/getModuleModel.ts +1 -0
  342. package/src/organisms/CommandText/useCommandTextString/utils/getWellRange.ts +2 -1
  343. package/src/organisms/DeckLabelSet/DeckLabelSet.stories.tsx +1 -2
  344. package/src/organisms/DeckLabelSet/__tests__/DeckLabelSet.test.tsx +3 -3
  345. package/src/organisms/DeckLabelSet/index.tsx +55 -22
  346. package/src/organisms/FixtureOption/__tests__/FixtureOption.test.tsx +42 -0
  347. package/src/organisms/FixtureOption/index.tsx +92 -0
  348. package/src/organisms/ProtocolTimelineScrubber/CommandItem.tsx +6 -4
  349. package/src/organisms/ProtocolTimelineScrubber/PipetteVisuals.tsx +4 -2
  350. package/src/organisms/ProtocolTimelineScrubber/index.tsx +22 -45
  351. package/src/organisms/ProtocolTimelineScrubber/utils.ts +6 -3
  352. package/src/organisms/Toolbox/Toolbox.stories.tsx +1 -0
  353. package/src/organisms/Toolbox/__tests__/Toolbox.test.tsx +2 -1
  354. package/src/organisms/Toolbox/index.tsx +3 -2
  355. package/src/organisms/index.ts +1 -0
  356. package/src/primitives/Box.stories.tsx +1 -1
  357. package/src/primitives/Box.tsx +1 -1
  358. package/src/primitives/Btn.stories.tsx +8 -8
  359. package/src/primitives/Btn.tsx +2 -3
  360. package/src/primitives/Flex.stories.tsx +3 -3
  361. package/src/primitives/Flex.tsx +1 -1
  362. package/src/primitives/ForeignObject.tsx +2 -2
  363. package/src/primitives/Link.tsx +2 -2
  364. package/src/primitives/README.md +7 -16
  365. package/src/primitives/Svg.stories.tsx +2 -2
  366. package/src/primitives/Svg.tsx +2 -2
  367. package/src/primitives/Text.stories.tsx +2 -2
  368. package/src/primitives/Text.tsx +1 -1
  369. package/src/primitives/__tests__/Box.test.tsx +1 -0
  370. package/src/primitives/__tests__/Btn.test.tsx +1 -0
  371. package/src/primitives/__tests__/Flex.test.tsx +1 -0
  372. package/src/primitives/__tests__/Link.test.tsx +1 -0
  373. package/src/primitives/__tests__/Svg.test.tsx +1 -0
  374. package/src/primitives/__tests__/Text.test.tsx +1 -0
  375. package/src/primitives/__tests__/primitives.test.tsx +1 -0
  376. package/src/primitives/__tests__/style-props.test.tsx +1 -0
  377. package/src/primitives/style-props.ts +1 -2
  378. package/src/primitives/types.ts +1 -1
  379. package/src/slotmap/OT2SlotMap.tsx +1 -0
  380. package/src/slotmap/__tests__/OT2SlotMap.test.tsx +1 -0
  381. package/src/structure/Card.stories.tsx +4 -3
  382. package/src/structure/Card.tsx +3 -1
  383. package/src/structure/LabeledValue.stories.tsx +2 -2
  384. package/src/structure/Splash.stories.tsx +4 -3
  385. package/src/structure/TitleBar.stories.tsx +4 -3
  386. package/src/testing/utils/matchers.ts +1 -0
  387. package/src/testing/utils/renderWithProviders.tsx +4 -4
  388. package/src/tooltips/DeprecatedTooltip.tsx +2 -1
  389. package/src/tooltips/LegacyTooltip.stories.tsx +10 -9
  390. package/src/tooltips/LegacyTooltip.tsx +5 -5
  391. package/src/tooltips/__tests__/Tooltip.test.tsx +1 -0
  392. package/src/tooltips/__tests__/useHoverTooltip.test.tsx +1 -0
  393. package/src/tooltips/__tests__/usePopper.test.tsx +1 -0
  394. package/src/tooltips/__tests__/useTooltip.test.tsx +1 -0
  395. package/src/tooltips/types.ts +2 -4
  396. package/src/tooltips/usePopper.ts +4 -4
  397. package/src/tooltips/useTooltip.ts +4 -3
  398. package/src/ui-style-constants/typography.ts +1 -0
  399. package/vite.config.mts +5 -1
  400. package/lib/controls/LabeledToggle.d.ts +0 -11
  401. package/lib/hardware-sim/Labware/LabwareStackRender.d.ts +0 -20
  402. package/lib/hardware-sim/ProtocolDeck/LabwareInfo.d.ts +0 -6
  403. package/lib/hardware-sim/ProtocolDeck/index.d.ts +0 -11
  404. package/lib/hardware-sim/ProtocolDeck/types.d.ts +0 -8
  405. package/lib/hardware-sim/ProtocolDeck/utils/getInitiallyLoadedLabwareByAdapter.d.ts +0 -5
  406. package/lib/hardware-sim/ProtocolDeck/utils/getLabwareInSlots.d.ts +0 -12
  407. package/lib/hardware-sim/ProtocolDeck/utils/getLabwareInfoByLiquidId.d.ts +0 -3
  408. package/lib/hardware-sim/ProtocolDeck/utils/getModulesInSlots.d.ts +0 -10
  409. package/lib/hardware-sim/ProtocolDeck/utils/getStandardDeckViewLayerBlockList.d.ts +0 -2
  410. package/lib/hardware-sim/ProtocolDeck/utils/getWellFillFromLabwareId.d.ts +0 -4
  411. package/lib/hardware-sim/ProtocolDeck/utils/index.d.ts +0 -4
  412. package/lib/instrument/PipetteSelect.d.ts +0 -20
  413. package/src/controls/LabeledToggle.tsx +0 -35
  414. package/src/hardware-sim/Labware/LabwareStackRender.tsx +0 -273
  415. package/src/hardware-sim/ProtocolDeck/LabwareInfo.tsx +0 -69
  416. package/src/hardware-sim/ProtocolDeck/ProtocolDeck.stories.tsx +0 -25
  417. package/src/hardware-sim/ProtocolDeck/__fixtures__/analysis_QIAseqFX24xv4_8.json +0 -47145
  418. package/src/hardware-sim/ProtocolDeck/index.tsx +0 -85
  419. package/src/hardware-sim/ProtocolDeck/types.ts +0 -6
  420. package/src/hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.ts +0 -158
  421. package/src/hardware-sim/ProtocolDeck/utils/getInitiallyLoadedLabwareByAdapter.ts +0 -33
  422. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInSlots.ts +0 -321
  423. package/src/hardware-sim/ProtocolDeck/utils/getLabwareInfoByLiquidId.ts +0 -43
  424. package/src/hardware-sim/ProtocolDeck/utils/getModulesInSlots.ts +0 -129
  425. package/src/hardware-sim/ProtocolDeck/utils/getStandardDeckViewLayerBlockList.ts +0 -29
  426. package/src/hardware-sim/ProtocolDeck/utils/getWellFillFromLabwareId.ts +0 -30
  427. package/src/hardware-sim/ProtocolDeck/utils/index.ts +0 -4
  428. package/src/instrument/PipetteSelect.stories.tsx +0 -40
  429. package/src/instrument/PipetteSelect.tsx +0 -170
  430. package/src/instrument/__tests__/PipetteSelect.test.tsx +0 -4
  431. /package/lib/{hardware-sim/ProtocolDeck/utils/__tests__/getLabwareInforByLiquidId.test.d.ts → atoms/InlineNotification/__tests__/InlineNotification.test.d.ts} +0 -0
  432. /package/lib/{instrument/__tests__/PipetteSelect.test.d.ts → atoms/StepMeter/__tests__/StepMeter.test.d.ts} +0 -0
@@ -1,85 +0,0 @@
1
- import {
2
- FLEX_ROBOT_TYPE,
3
- getSimplestDeckConfigForProtocol,
4
- } from '@opentrons/shared-data'
5
-
6
- import { BaseDeck } from '../BaseDeck'
7
- import { getStandardDeckViewLayerBlockList } from './utils'
8
- import { getLabwareInfoByLiquidId } from './utils/getLabwareInfoByLiquidId'
9
- import { getTopMostLabwareInSlots } from './utils/getLabwareInSlots'
10
- import { getModulesInSlots } from './utils/getModulesInSlots'
11
- import { getWellFillFromLabwareId } from './utils/getWellFillFromLabwareId'
12
-
13
- import type { ComponentProps } from 'react'
14
- import type {
15
- CompletedProtocolAnalysis,
16
- ProtocolAnalysisOutput,
17
- } from '@opentrons/shared-data'
18
-
19
- export * from './utils/getStandardDeckViewLayerBlockList'
20
- export * from './types'
21
- interface ProtocolDeckProps {
22
- protocolAnalysis: CompletedProtocolAnalysis | ProtocolAnalysisOutput | null
23
- /** extra props to pass through to BaseDeck component */
24
- baseDeckProps?: Partial<ComponentProps<typeof BaseDeck>>
25
- }
26
-
27
- export function ProtocolDeck(props: ProtocolDeckProps): JSX.Element | null {
28
- const { protocolAnalysis, baseDeckProps } = props
29
-
30
- if (protocolAnalysis == null || (protocolAnalysis?.errors ?? []).length > 0)
31
- return null
32
-
33
- const robotType = protocolAnalysis.robotType ?? FLEX_ROBOT_TYPE
34
- const deckConfig = getSimplestDeckConfigForProtocol(protocolAnalysis)
35
- const labwareByLiquidId = getLabwareInfoByLiquidId(protocolAnalysis.commands)
36
-
37
- const modulesInSlots = getModulesInSlots(protocolAnalysis)
38
- const modulesOnDeck = modulesInSlots.map(
39
- ({ moduleModel, moduleLocation, nestedLabwareId, nestedLabwareDef }) => {
40
- return {
41
- moduleModel,
42
- moduleLocation,
43
- nestedLabwareDef,
44
- nestedLabwareWellFill: getWellFillFromLabwareId(
45
- nestedLabwareId ?? '',
46
- protocolAnalysis.liquids,
47
- labwareByLiquidId
48
- ),
49
- }
50
- }
51
- )
52
-
53
- // this function gets the top most labware
54
- const topMostLabwareInSlots = getTopMostLabwareInSlots(protocolAnalysis)
55
- const labwareOnDeck = topMostLabwareInSlots.map(
56
- ({ labwareId, labwareDef, location }) => {
57
- return {
58
- definition: labwareDef,
59
- labwareLocation: location,
60
- wellFill: getWellFillFromLabwareId(
61
- labwareId,
62
- protocolAnalysis.liquids,
63
- labwareByLiquidId
64
- ),
65
- }
66
- }
67
- )
68
-
69
- return (
70
- <BaseDeck
71
- deckConfig={deckConfig}
72
- deckLayerBlocklist={getStandardDeckViewLayerBlockList(robotType)}
73
- robotType={robotType}
74
- labwareOnDeck={labwareOnDeck}
75
- modulesOnDeck={modulesOnDeck}
76
- {...{
77
- svgProps: {
78
- 'aria-label': 'protocol deck map',
79
- ...(baseDeckProps?.svgProps ?? {}),
80
- },
81
- ...baseDeckProps,
82
- }}
83
- />
84
- )
85
- }
@@ -1,6 +0,0 @@
1
- export interface LabwareByLiquidId {
2
- [liquidId: string]: Array<{
3
- labwareId: string
4
- volumeByWell: { [well: string]: number }
5
- }>
6
- }
@@ -1,158 +0,0 @@
1
- import { describe, it, expect } from 'vitest'
2
- import { getLabwareInfoByLiquidId } from '../getLabwareInfoByLiquidId'
3
- import type { RunTimeCommand } from '@opentrons/shared-data'
4
-
5
- const mockLoadLiquidRunTimeCommands = [
6
- {
7
- id: '97ba49a5-04f6-4f91-986a-04a0eb632882',
8
- createdAt: '2022-09-07T19:47:42.781065+00:00',
9
- commandType: 'loadPipette',
10
- key: '0feeecaf-3895-46d7-ab71-564601265e35',
11
- status: 'succeeded',
12
- params: {
13
- pipetteName: 'p20_single_gen2',
14
- mount: 'left',
15
- pipetteId: '90183a18-a1df-4fd6-9636-be3bcec63fe4',
16
- },
17
- result: {
18
- pipetteId: '90183a18-a1df-4fd6-9636-be3bcec63fe4',
19
- },
20
- startedAt: '2022-09-07T19:47:42.782665+00:00',
21
- completedAt: '2022-09-07T19:47:42.785061+00:00',
22
- },
23
- {
24
- id: '846e0b7b-1e54-4f42-9ab1-964ebda45da5',
25
- createdAt: '2022-09-07T19:47:42.781281+00:00',
26
- commandType: 'loadLiquid',
27
- key: '1870d1a2-8dcd-46f2-9e27-16578365913b',
28
- status: 'succeeded',
29
- params: {
30
- liquidId: '1',
31
- labwareId: 'mockLabwareId1',
32
- volumeByWell: {
33
- A2: 20,
34
- B2: 20,
35
- C2: 20,
36
- D2: 20,
37
- E2: 20,
38
- F2: 20,
39
- G2: 20,
40
- H2: 20,
41
- },
42
- },
43
- result: {},
44
- startedAt: '2022-09-07T19:47:42.785987+00:00',
45
- completedAt: '2022-09-07T19:47:42.786087+00:00',
46
- },
47
- {
48
- id: '1e03ae10-7e9b-465c-bc72-21ab5706bfb0',
49
- createdAt: '2022-09-07T19:47:42.781323+00:00',
50
- commandType: 'loadLiquid',
51
- key: '48df9766-04ff-4927-9f2d-4efdcf0b3df8',
52
- status: 'succeeded',
53
- params: {
54
- liquidId: '1',
55
- labwareId: 'mockLabwareId2',
56
- volumeByWell: {
57
- D3: 40,
58
- },
59
- },
60
- result: {},
61
- startedAt: '2022-09-07T19:47:42.786212+00:00',
62
- completedAt: '2022-09-07T19:47:42.786285+00:00',
63
- },
64
- {
65
- id: '1e03ae10-7e9b-465c-bc72-21ab5706bfb0',
66
- createdAt: '2022-09-07T19:47:42.781323+00:00',
67
- commandType: 'loadLiquid',
68
- key: '48df9766-04ff-4927-9f2d-4efdcf0b3df8',
69
- status: 'succeeded',
70
- params: {
71
- liquidId: '1',
72
- labwareId: 'mockLabwareId2',
73
- volumeByWell: {
74
- A3: 33,
75
- B3: 33,
76
- C3: 33,
77
- },
78
- },
79
- result: {},
80
- startedAt: '2022-09-07T19:47:42.786212+00:00',
81
- completedAt: '2022-09-07T19:47:42.786285+00:00',
82
- },
83
- {
84
- id: 'e8596bb3-b650-4d62-9bb5-dfc6e9e63249',
85
- createdAt: '2022-09-07T19:47:42.781363+00:00',
86
- commandType: 'loadLiquid',
87
- key: '69d19b03-fdcc-4964-a2f8-3cbb30f4ddf3',
88
- status: 'succeeded',
89
- params: {
90
- liquidId: '0',
91
- labwareId: 'mockLabwareId1',
92
- volumeByWell: {
93
- A1: 33,
94
- B1: 33,
95
- C1: 33,
96
- D1: 33,
97
- E1: 33,
98
- F1: 33,
99
- G1: 33,
100
- H1: 33,
101
- },
102
- },
103
- result: {},
104
- startedAt: '2022-09-07T19:47:42.786347+00:00',
105
- completedAt: '2022-09-07T19:47:42.786412+00:00',
106
- },
107
- ]
108
-
109
- describe('getLabwareInfoByLiquidId', () => {
110
- it('returns labware info by liquid id', () => {
111
- const expected = {
112
- '0': [
113
- {
114
- labwareId: 'mockLabwareId1',
115
- volumeByWell: {
116
- A1: 33,
117
- B1: 33,
118
- C1: 33,
119
- D1: 33,
120
- E1: 33,
121
- F1: 33,
122
- G1: 33,
123
- H1: 33,
124
- },
125
- },
126
- ],
127
- '1': [
128
- {
129
- labwareId: 'mockLabwareId1',
130
- volumeByWell: {
131
- A2: 20,
132
- B2: 20,
133
- C2: 20,
134
- D2: 20,
135
- E2: 20,
136
- F2: 20,
137
- G2: 20,
138
- H2: 20,
139
- },
140
- },
141
- {
142
- labwareId: 'mockLabwareId2',
143
- volumeByWell: {
144
- A3: 33,
145
- B3: 33,
146
- C3: 33,
147
- D3: 40,
148
- },
149
- },
150
- ],
151
- }
152
- expect(
153
- getLabwareInfoByLiquidId(
154
- mockLoadLiquidRunTimeCommands as RunTimeCommand[]
155
- )
156
- ).toEqual(expected)
157
- })
158
- })
@@ -1,33 +0,0 @@
1
- import reduce from 'lodash/reduce'
2
- import type {
3
- LoadLabwareRunTimeCommand,
4
- RunTimeCommand,
5
- } from '@opentrons/shared-data'
6
-
7
- export interface LoadedLabwareByAdapter {
8
- [labwareId: string]: LoadLabwareRunTimeCommand
9
- }
10
- export function getInitialLoadedLabwareByAdapter(
11
- commands: RunTimeCommand[]
12
- ): LoadedLabwareByAdapter {
13
- const loadLabwareCommandsReversed = commands
14
- .filter(
15
- (command): command is LoadLabwareRunTimeCommand =>
16
- command.commandType === 'loadLabware'
17
- )
18
- .reverse()
19
- return reduce<LoadLabwareRunTimeCommand, LoadedLabwareByAdapter>(
20
- loadLabwareCommandsReversed,
21
- (acc, command) => {
22
- if (
23
- typeof command.params.location === 'object' &&
24
- 'labwareId' in command.params.location
25
- ) {
26
- return { ...acc, [command.params.location.labwareId]: command }
27
- } else {
28
- return acc
29
- }
30
- },
31
- {}
32
- )
33
- }
@@ -1,321 +0,0 @@
1
- import { getInitialLoadedLabwareByAdapter } from './getInitiallyLoadedLabwareByAdapter'
2
- import type {
3
- CompletedProtocolAnalysis,
4
- LoadLabwareRunTimeCommand,
5
- MoveLabwareRunTimeCommand,
6
- ProtocolAnalysisOutput,
7
- LabwareDefinition2,
8
- LoadLidRunTimeCommand,
9
- LoadLidStackRunTimeCommand,
10
- } from '@opentrons/shared-data'
11
-
12
- interface LabwareInSlot {
13
- labwareId: string
14
- labwareDef: LabwareDefinition2
15
- labwareNickName: string | null
16
- location: { slotName: string }
17
- }
18
-
19
- interface LabwareWithDef {
20
- labwareId: string
21
- labwareDef: LabwareDefinition2
22
- labwareNickName: string | null
23
- }
24
-
25
- export const getInitialAndMovedLabwareInSlots = (
26
- protocolAnalysis: CompletedProtocolAnalysis | ProtocolAnalysisOutput
27
- ): LabwareInSlot[] => {
28
- const { commands } = protocolAnalysis
29
- const initialLoadedLabwareByAdapter = getInitialLoadedLabwareByAdapter(
30
- commands
31
- )
32
- const topMostLabwareInSlots = getTopMostLabwareInSlots(protocolAnalysis)
33
- const allLabwareDefs = getAllLabwareDefinitions(protocolAnalysis)
34
-
35
- return commands
36
- .filter(
37
- (command): command is MoveLabwareRunTimeCommand =>
38
- command.commandType === 'moveLabware'
39
- )
40
- .reduce<LabwareInSlot[]>((acc, command) => {
41
- const labwareId = command.params.labwareId
42
- const location = command.params.newLocation
43
-
44
- const originalLabware = allLabwareDefs.find(
45
- labware => labware.labwareId === labwareId
46
- )
47
- const labwareDef = originalLabware?.labwareDef
48
-
49
- if (
50
- location === 'offDeck' ||
51
- location === 'systemLocation' ||
52
- 'moduleId' in location ||
53
- 'labwareId' in location
54
- )
55
- return acc
56
- if (labwareId == null) {
57
- console.warn(
58
- `expected to find labware id from command id ${String(
59
- command.id
60
- )} but could not`
61
- )
62
- return acc
63
- }
64
- if (labwareDef == null) {
65
- console.warn(
66
- `expected to find labware def for labware id ${String(
67
- labwareId
68
- )} in command id ${String(command.id)} but could not`
69
- )
70
- return acc
71
- }
72
-
73
- const slotName =
74
- 'addressableAreaName' in location
75
- ? location.addressableAreaName
76
- : location.slotName
77
-
78
- // if list of labware already includes slotName, return acc
79
- if (acc.find(labware => labware.location.slotName === slotName) != null) {
80
- return acc
81
- }
82
-
83
- const labwareInAdapter = initialLoadedLabwareByAdapter[labwareId]
84
-
85
- // NOTE: only grabbing the labware on top most layer so
86
- // either the adapter or the labware but not both
87
- const topLabwareDefinition =
88
- labwareInAdapter?.result?.definition ?? labwareDef
89
- const topLabwareId = labwareInAdapter?.result?.labwareId ?? labwareId
90
- const topLabwareNickName =
91
- labwareInAdapter?.params?.displayName ??
92
- originalLabware?.labwareNickName ??
93
- null
94
-
95
- return [
96
- ...acc,
97
- {
98
- labwareId: topLabwareId,
99
- labwareDef: topLabwareDefinition,
100
- labwareNickName: topLabwareNickName,
101
- location: { slotName },
102
- },
103
- ]
104
- }, topMostLabwareInSlots)
105
- }
106
-
107
- export const getTopMostLabwareInSlots = (
108
- protocolAnalysis: CompletedProtocolAnalysis | ProtocolAnalysisOutput
109
- ): LabwareInSlot[] => {
110
- const { commands } = protocolAnalysis
111
- const initialLoadedLabwareByAdapter = getInitialLoadedLabwareByAdapter(
112
- commands
113
- )
114
- const lidStackObjects: LabwareInSlot[] = commands
115
- .filter(
116
- (command): command is LoadLidStackRunTimeCommand =>
117
- command.commandType === 'loadLidStack'
118
- )
119
- .reduce<LabwareInSlot[]>((acc, command) => {
120
- const labwareId = command.result?.labwareIds.at(-1)
121
- if (labwareId == null) {
122
- console.warn(
123
- `expected to find labware id from command id ${String(
124
- command.id
125
- )} but could not`
126
- )
127
- return acc
128
- }
129
- const labwareDef = command.result?.definition
130
- if (labwareDef == null) {
131
- console.warn(
132
- `expected to find labware def for labware id ${String(
133
- labwareId
134
- )} in command id ${String(command.id)}but could not`
135
- )
136
- return acc
137
- }
138
- let location = command.params.location
139
- if (
140
- location !== 'offDeck' &&
141
- location !== 'systemLocation' &&
142
- 'labwareId' in location
143
- ) {
144
- const locationLabwareId = location.labwareId
145
- const adapterCommand = commands.find(
146
- (command): command is LoadLabwareRunTimeCommand =>
147
- command.commandType === 'loadLabware' &&
148
- command.result?.labwareId === locationLabwareId
149
- )
150
- if (adapterCommand != null) {
151
- location = adapterCommand.params.location
152
- } else {
153
- return acc
154
- }
155
- }
156
- if (
157
- location === 'offDeck' ||
158
- location === 'systemLocation' ||
159
- 'moduleId' in location ||
160
- 'labwareId' in location
161
- ) {
162
- return acc
163
- }
164
-
165
- const slotName =
166
- 'addressableAreaName' in location
167
- ? location.addressableAreaName
168
- : location.slotName
169
-
170
- return [
171
- ...acc,
172
- {
173
- labwareId,
174
- labwareDef,
175
- labwareNickName: null,
176
- location: { slotName },
177
- },
178
- ]
179
- }, [])
180
- const labwareObjects: LabwareInSlot[] = commands
181
- .filter(
182
- (command): command is LoadLabwareRunTimeCommand =>
183
- command.commandType === 'loadLabware'
184
- )
185
- .reduce<LabwareInSlot[]>((acc, command) => {
186
- const labwareId = command.result?.labwareId
187
- const location = command.params.location
188
- const labwareDef = command.result?.definition
189
- if (
190
- location === 'offDeck' ||
191
- location === 'systemLocation' ||
192
- 'moduleId' in location ||
193
- 'labwareId' in location
194
- )
195
- return acc
196
- const slotName =
197
- 'addressableAreaName' in location
198
- ? location.addressableAreaName
199
- : location.slotName
200
- // if there is a lid stack in this slot, don't add the adapter below it
201
- if (
202
- lidStackObjects.some(
203
- lidStackObject => lidStackObject.location.slotName === slotName
204
- )
205
- ) {
206
- return acc
207
- }
208
- if (labwareId == null) {
209
- console.warn(
210
- `expected to find labware id from command id ${String(
211
- command.id
212
- )} but could not`
213
- )
214
- return acc
215
- }
216
- if (labwareDef == null) {
217
- console.warn(
218
- `expected to find labware def for labware id ${String(
219
- labwareId
220
- )} in command id ${String(command.id)}but could not`
221
- )
222
- return acc
223
- }
224
-
225
- const labwareInAdapter = initialLoadedLabwareByAdapter[labwareId]
226
-
227
- // NOTE: only grabbing the labware on top most layer so
228
- // either the adapter or the labware but not both
229
- const topLabwareDefinition =
230
- labwareInAdapter?.result?.definition ?? labwareDef
231
- const topLabwareId = labwareInAdapter?.result?.labwareId ?? labwareId
232
- const topLabwareNickName =
233
- labwareInAdapter?.params?.displayName ??
234
- command.params.displayName ??
235
- null
236
-
237
- return [
238
- ...acc,
239
- {
240
- labwareId: topLabwareId,
241
- labwareDef: topLabwareDefinition,
242
- labwareNickName: topLabwareNickName,
243
- location: { slotName },
244
- },
245
- ]
246
- }, [])
247
-
248
- return labwareObjects.concat(lidStackObjects)
249
- }
250
-
251
- const getAllLabwareDefinitions = (
252
- protocolAnalysis: CompletedProtocolAnalysis | ProtocolAnalysisOutput
253
- ): LabwareWithDef[] => {
254
- const { commands } = protocolAnalysis
255
- const lidAndLabware: LabwareWithDef[] = commands
256
- .filter((command): command is
257
- | LoadLabwareRunTimeCommand
258
- | LoadLidRunTimeCommand =>
259
- ['loadLabware', 'loadLid'].includes(command.commandType)
260
- )
261
- .reduce<LabwareWithDef[]>((acc, command) => {
262
- const labwareId = command.result?.labwareId
263
- const labwareDef = command.result?.definition
264
- if (labwareId == null) {
265
- console.warn(
266
- `expected to find labware id from command id ${String(
267
- command.id
268
- )} but could not`
269
- )
270
- return acc
271
- }
272
- if (labwareDef == null) {
273
- console.warn(
274
- `expected to find labware def for labware id ${String(
275
- labwareId
276
- )} fromm command id ${String(command.id)} but could not`
277
- )
278
- return acc
279
- }
280
- const displayName =
281
- command.commandType === 'loadLabware'
282
- ? command.params?.displayName ?? null
283
- : null
284
- return [
285
- ...acc,
286
- {
287
- labwareId: labwareId,
288
- labwareDef: labwareDef,
289
- labwareNickName: displayName,
290
- },
291
- ]
292
- }, [])
293
-
294
- const lidStacks: LabwareWithDef[] = commands
295
- .filter(
296
- (command): command is LoadLidStackRunTimeCommand =>
297
- command.commandType === 'loadLidStack'
298
- )
299
- .reduce<LabwareWithDef[]>((acc, command) => {
300
- const lidStackObjects: LabwareWithDef[] = []
301
- const labwareDef = command.result?.definition
302
- if (labwareDef == null) {
303
- console.warn(
304
- `expected to find labware def for lid stack ${String(
305
- command.result?.stackLabwareId
306
- )} fromm command id ${String(command.id)} but could not`
307
- )
308
- return acc
309
- }
310
- command.result?.labwareIds.forEach(labwareId => {
311
- lidStackObjects.push({
312
- labwareId: labwareId,
313
- labwareDef: labwareDef,
314
- labwareNickName: null,
315
- })
316
- })
317
- return [...acc, ...lidStackObjects]
318
- }, [])
319
-
320
- return lidAndLabware.concat(lidStacks)
321
- }
@@ -1,43 +0,0 @@
1
- import type {
2
- LoadLiquidRunTimeCommand,
3
- RunTimeCommand,
4
- } from '@opentrons/shared-data'
5
- import reduce from 'lodash/reduce'
6
- import type { LabwareByLiquidId } from '../types'
7
-
8
- export function getLabwareInfoByLiquidId(
9
- commands: RunTimeCommand[]
10
- ): LabwareByLiquidId {
11
- const loadLiquidCommands =
12
- commands.length !== 0
13
- ? commands.filter(
14
- (command): command is LoadLiquidRunTimeCommand =>
15
- command.commandType === 'loadLiquid' &&
16
- command.params.liquidId !== 'EMPTY'
17
- )
18
- : []
19
-
20
- return reduce<LoadLiquidRunTimeCommand, LabwareByLiquidId>(
21
- loadLiquidCommands,
22
- (acc, command) => {
23
- if (!(command.params.liquidId in acc)) {
24
- acc[command.params.liquidId] = []
25
- }
26
- const labwareId = command.params.labwareId
27
- const volumeByWell = command.params.volumeByWell
28
- const labwareIndex = acc[command.params.liquidId].findIndex(
29
- i => i.labwareId === labwareId
30
- )
31
- if (labwareIndex >= 0) {
32
- acc[command.params.liquidId][labwareIndex].volumeByWell = {
33
- ...acc[command.params.liquidId][labwareIndex].volumeByWell,
34
- ...volumeByWell,
35
- }
36
- } else {
37
- acc[command.params.liquidId].push({ labwareId, volumeByWell })
38
- }
39
- return acc
40
- },
41
- {}
42
- )
43
- }