@opencloning/ui 1.1.0-test.2 → 1.1.0-test.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/package.json +5 -7
  3. package/src/components/DescriptionEditor.jsx +1 -2
  4. package/src/components/DragAndDropCloningHistoryWrapper.jsx +1 -1
  5. package/src/components/MainSequenceCheckBox.jsx +2 -5
  6. package/src/components/NetworkNode.jsx +1 -3
  7. package/src/components/OpenCloning.jsx +1 -1
  8. package/src/components/assembler/AssemblePartWidget.jsx +1 -1
  9. package/src/components/assembler/Assembler.jsx +1 -2
  10. package/src/components/dummy/DummyInterface.js +1 -2
  11. package/src/components/eLabFTW/eLabFTWInterface.js +1 -2
  12. package/src/components/form/GetRequestMultiSelect.jsx +1 -3
  13. package/src/components/form/LabelWithTooltip.jsx +1 -1
  14. package/src/components/form/PostRequestSelect.jsx +1 -3
  15. package/src/components/index.js +1 -0
  16. package/src/components/navigation/ButtonWithMenu.jsx +1 -3
  17. package/src/components/navigation/MainAppBar.jsx +2 -9
  18. package/src/components/navigation/SelectTemplateDialog.jsx +1 -1
  19. package/src/components/primers/PrimerForm.jsx +2 -4
  20. package/src/components/primers/PrimerList.jsx +1 -1
  21. package/src/components/primers/PrimerTableRow.cy.jsx +31 -18
  22. package/src/components/primers/PrimerTableRow.jsx +1 -4
  23. package/src/components/primers/SelectPrimerForm.jsx +1 -1
  24. package/src/components/primers/import_primers/ImportPrimersButton.jsx +1 -4
  25. package/src/components/primers/import_primers/ImportPrimersTable.jsx +2 -5
  26. package/src/components/primers/import_primers/PrimerDatabaseImportForm.jsx +1 -2
  27. package/src/components/primers/primer_design/SequenceTabComponents/CollapsableLabel.jsx +1 -1
  28. package/src/components/primers/primer_design/SequenceTabComponents/PrimerDesignForm.jsx +1 -1
  29. package/src/components/primers/primer_design/SequenceTabComponents/RestrictionSpacerForm.jsx +1 -1
  30. package/src/components/primers/primer_details/PrimerInfoIcon.jsx +1 -2
  31. package/src/components/settings/SettingsTab.jsx +2 -3
  32. package/src/components/sources/CollectionSource.jsx +1 -1
  33. package/src/components/sources/MultipleOutputsSelector.jsx +1 -2
  34. package/src/components/sources/NewSourceBox.jsx +2 -3
  35. package/src/components/sources/PCRUnitForm.jsx +1 -3
  36. package/src/components/sources/SourceBox.jsx +2 -2
  37. package/src/components/sources/SourceFile.jsx +1 -2
  38. package/src/components/sources/SourceGenomeRegion.cy.jsx +24 -9
  39. package/src/components/sources/SourceGenomeRegion.jsx +1 -6
  40. package/src/components/sources/SourceRepositoryId.jsx +2 -9
  41. package/src/components/sources/SourceTypeSelector.jsx +1 -4
  42. package/src/components/verification/SequencingFileRow.jsx +1 -2
  43. package/src/providers/index.js +3 -0
  44. package/src/version.js +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @opencloning/ui
2
2
 
3
+ ## 1.1.0-test.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 6df1c20: Last dummy test to check if auto pre-release works
8
+ - Updated dependencies [6df1c20]
9
+ - @opencloning/store@1.1.0-test.5
10
+ - @opencloning/utils@1.1.0-test.5
11
+
12
+ ## 1.1.0-dev.4
13
+
14
+ ### Patch Changes
15
+
16
+ - 07106ac: Dummy change to test that new action works
17
+ - @opencloning/store@1.1.0-dev.4
18
+ - @opencloning/utils@1.1.0-dev.4
19
+
20
+ ## 1.1.0-test.3
21
+
22
+ ### Patch Changes
23
+
24
+ - a870a5e: Fix imports from mui and icons library, and add husky hook to validate that it does not happen again
25
+ - @opencloning/store@1.1.0-test.3
26
+ - @opencloning/utils@1.1.0-test.3
27
+
3
28
  ## 1.1.0-test.2
4
29
 
5
30
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencloning/ui",
3
- "version": "1.1.0-test.2",
3
+ "version": "1.1.0-test.5",
4
4
  "type": "module",
5
5
  "main": "./src/index.js",
6
6
  "scripts": {
@@ -10,7 +10,7 @@
10
10
  "exports": {
11
11
  ".": "./src/index.js",
12
12
  "./components": "./src/components/index.js",
13
- "./providers/ConfigProvider": "./src/providers/ConfigProvider.jsx",
13
+ "./providers/ConfigProvider": "./src/providers/index.js",
14
14
  "./hooks/useConfig": "./src/hooks/useConfig.js"
15
15
  },
16
16
  "repository": {
@@ -23,8 +23,8 @@
23
23
  "@emotion/styled": "^11.14.0",
24
24
  "@mui/icons-material": "^5.15.17",
25
25
  "@mui/material": "^5.15.17",
26
- "@opencloning/store": "1.1.0-test.2",
27
- "@opencloning/utils": "1.1.0-test.2",
26
+ "@opencloning/store": "1.1.0-test.5",
27
+ "@opencloning/utils": "1.1.0-test.5",
28
28
  "@teselagen/bio-parsers": "^0.4.32",
29
29
  "@teselagen/ove": "^0.8.18",
30
30
  "@teselagen/range-utils": "^0.3.13",
@@ -32,9 +32,7 @@
32
32
  "@zip.js/zip.js": "^2.7.62",
33
33
  "axios": "^1.12.2",
34
34
  "lodash-es": "^4.17.21",
35
- "react": "^18.3.1",
36
- "react-draggable": "^4.4.6",
37
- "react-redux": "^8.1.3"
35
+ "react-draggable": "^4.4.6"
38
36
  },
39
37
  "peerDependencies": {
40
38
  "react": "^18.3.1",
@@ -1,7 +1,6 @@
1
1
  import React, { useEffect } from 'react';
2
2
  import { useDispatch, useSelector, shallowEqual } from 'react-redux';
3
- import TextField from '@mui/material/TextField';
4
- import { Button, FormControl } from '@mui/material';
3
+ import { TextField, Button, FormControl } from '@mui/material';
5
4
  import { cloningActions } from '@opencloning/store/cloning';
6
5
 
7
6
  function DescriptionEditor() {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Tooltip } from '@mui/material';
3
3
  import { UploadFile } from '@mui/icons-material';
4
- import CancelIcon from '@mui/icons-material/Cancel';
4
+ import { Cancel as CancelIcon } from '@mui/icons-material';
5
5
  import useDragAndDropFile from '../hooks/useDragAndDropFile';
6
6
  import LoadCloningHistoryWrapper from './LoadCloningHistoryWrapper';
7
7
 
@@ -1,10 +1,7 @@
1
1
  import React from 'react';
2
- import VisibilityIcon from '@mui/icons-material/Visibility';
3
- import DownloadIcon from '@mui/icons-material/Download';
4
- import EditIcon from '@mui/icons-material/Edit';
5
- import CheckIcon from '@mui/icons-material/Rule';
6
- import Tooltip from '@mui/material/Tooltip';
2
+ import { Visibility as VisibilityIcon, Download as DownloadIcon, Edit as EditIcon, Rule as CheckIcon } from '@mui/icons-material';
7
3
  import { useDispatch, useSelector, useStore } from 'react-redux';
4
+ import { Tooltip } from '@mui/material';
8
5
  import { isEqual } from 'lodash-es';
9
6
  import { cloningActions } from '@opencloning/store/cloning';
10
7
  import useStoreEditor from '../hooks/useStoreEditor';
@@ -1,9 +1,7 @@
1
1
  import React, { useRef } from 'react';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
3
  import { Box, Tooltip } from '@mui/material';
4
- import VisibilityOffIcon from '@mui/icons-material/VisibilityOff';
5
- import VisibilityIcon from '@mui/icons-material/Visibility';
6
- import AddCircleIcon from '@mui/icons-material/AddCircle';
4
+ import { VisibilityOff as VisibilityOffIcon, Visibility as VisibilityIcon, AddCircle as AddCircleIcon } from '@mui/icons-material';
7
5
  import { isEqual } from 'lodash-es';
8
6
  import Source from './sources/Source';
9
7
  import './NetworkTree.css';
@@ -1,6 +1,6 @@
1
1
  import React, { useRef, useState } from 'react';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
- import Tabs from '@mui/material/Tabs';
3
+ import { Tabs } from '@mui/material';
4
4
  import { isEqual } from 'lodash-es';
5
5
  import DescriptionEditor from './DescriptionEditor';
6
6
  import PrimerList from './primers/PrimerList';
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
  import { TextField, FormControl, InputLabel, Select, MenuItem, Box, Grid, Paper, Typography, Table, TableContainer, TableHead, TableBody, TableRow, TableCell, Button } from '@mui/material'
3
- import ContentCopyIcon from '@mui/icons-material/ContentCopy'
3
+ import { ContentCopy as ContentCopyIcon } from '@mui/icons-material'
4
4
  import AssemblerPart from './AssemblerPart'
5
5
 
6
6
  /* eslint-disable camelcase */
@@ -1,10 +1,9 @@
1
1
  import React from 'react'
2
2
  import data2 from './assembler_data2.json'
3
3
  import { Alert, Autocomplete, Box, Button, CircularProgress, FormControl, IconButton, InputAdornment, InputLabel, MenuItem, Select, Stack, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, TextField } from '@mui/material'
4
- import ClearIcon from '@mui/icons-material/Clear';
4
+ import { Clear as ClearIcon, Visibility as VisibilityIcon } from '@mui/icons-material';
5
5
  import { useAssembler } from './useAssembler';
6
6
  import { arrayCombinations } from '../eLabFTW/utils';
7
- import VisibilityIcon from '@mui/icons-material/Visibility';
8
7
  import { useDispatch } from 'react-redux';
9
8
  import { cloningActions } from '@opencloning/store/cloning';
10
9
  import RequestStatusWrapper from '../form/RequestStatusWrapper';
@@ -1,5 +1,4 @@
1
- import SaveIcon from '@mui/icons-material/Save';
2
- import LinkIcon from '@mui/icons-material/Link';
1
+ import { Save as SaveIcon, Link as LinkIcon } from '@mui/icons-material';
3
2
  import GetSequenceFileAndDatabaseIdComponent from './GetSequenceFileAndDatabaseIdComponent';
4
3
 
5
4
  export default {
@@ -1,5 +1,4 @@
1
- import SaveIcon from '@mui/icons-material/Save';
2
- import LinkIcon from '@mui/icons-material/Link';
1
+ import { Save as SaveIcon, Link as LinkIcon } from '@mui/icons-material';
3
2
  import GetSequenceFileAndDatabaseIdComponent from './GetSequenceFileAndDatabaseIdComponent';
4
3
  import SubmitToDatabaseComponent from './SubmitToDatabaseComponent';
5
4
  import PrimersNotInDatabaseComponent from './PrimersNotInDatabaseComponent';
@@ -1,7 +1,5 @@
1
1
  import * as React from 'react';
2
- import Autocomplete from '@mui/material/Autocomplete';
3
- import TextField from '@mui/material/TextField';
4
- import { Alert, Button, CircularProgress, FormControl, FormHelperText, InputLabel, MenuItem, Select } from '@mui/material';
2
+ import { Autocomplete, TextField, Alert, Button, CircularProgress, FormControl, FormHelperText, InputLabel, MenuItem, Select } from '@mui/material';
5
3
 
6
4
  export default function GetRequestMultiSelect({
7
5
  getOptionsFromResponse,
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Tooltip } from '@mui/material';
3
- import InfoIcon from '@mui/icons-material/Info';
3
+ import { Info as InfoIcon } from '@mui/icons-material';
4
4
 
5
5
  function LabelWithTooltip({ label, tooltip }) {
6
6
  return (
@@ -1,7 +1,5 @@
1
1
  import * as React from 'react';
2
- import Autocomplete from '@mui/material/Autocomplete';
3
- import TextField from '@mui/material/TextField';
4
- import { Alert, Button, FormControl } from '@mui/material';
2
+ import { Autocomplete, TextField, Alert, Button, FormControl } from '@mui/material';
5
3
 
6
4
  export default function PostRequestSelect({ setValue, getOptions, getOptionLabel, isOptionEqualToValue, textLabel, disableFiltering = true, ...rest }) {
7
5
  // The reason for disableFiltering is that we allow the server to filter the options,
@@ -1 +1,2 @@
1
1
  export { default as OpenCloning } from './OpenCloning';
2
+ export { default as MainAppBar } from './navigation/MainAppBar';
@@ -1,7 +1,5 @@
1
1
  import * as React from 'react';
2
- import Button from '@mui/material/Button';
3
- import Menu from '@mui/material/Menu';
4
- import MenuItem from '@mui/material/MenuItem';
2
+ import { Button, Menu, MenuItem } from '@mui/material';
5
3
 
6
4
  export default function ButtonWithMenu({ children, menuItems }) {
7
5
  const [anchorEl, setAnchorEl] = React.useState(null);
@@ -1,15 +1,8 @@
1
1
  import React from 'react';
2
- import AppBar from '@mui/material/AppBar';
3
- import Box from '@mui/material/Box';
4
- import Toolbar from '@mui/material/Toolbar';
5
- import Container from '@mui/material/Container';
6
- import { Button, Tooltip } from '@mui/material';
2
+ import { AppBar, Box, Toolbar, Container, Button, Tooltip, IconButton, Menu, MenuItem } from '@mui/material';
3
+ import { Menu as MenuIcon } from '@mui/icons-material';
7
4
  import './MainAppBar.css';
8
5
  import { useDispatch } from 'react-redux';
9
- import IconButton from '@mui/material/IconButton';
10
- import Menu from '@mui/material/Menu';
11
- import MenuItem from '@mui/material/MenuItem';
12
- import MenuIcon from '@mui/icons-material/Menu';
13
6
  import ButtonWithMenu from './ButtonWithMenu';
14
7
  import { downloadCloningStrategyAsSvg, formatTemplate, loadHistoryFile, loadFilesToSessionStorage } from '@opencloning/utils/readNwrite';
15
8
  import SelectExampleDialog from './SelectExampleDialog';
@@ -1,7 +1,7 @@
1
1
  import { Accordion, AccordionDetails, AccordionSummary, Alert, Button, CircularProgress, Dialog, DialogContent, DialogTitle, IconButton, List, ListItem, ListItemButton, ListItemText } from '@mui/material';
2
2
 
3
3
  import React from 'react';
4
- import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
4
+ import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
5
5
  import useHttpClient from '../../hooks/useHttpClient';
6
6
 
7
7
  function SelectTemplateDialog({ onClose, open }) {
@@ -1,8 +1,6 @@
1
1
  import React from 'react';
2
- import CheckCircleIcon from '@mui/icons-material/CheckCircle';
3
- import CancelIcon from '@mui/icons-material/Cancel';
4
- import Tooltip from '@mui/material/Tooltip';
5
- import { IconButton } from '@mui/material';
2
+ import { CheckCircle as CheckCircleIcon, Cancel as CancelIcon } from '@mui/icons-material';
3
+ import { IconButton, Tooltip } from '@mui/material';
6
4
  import ValidatedTextField from '../form/ValidatedTextField';
7
5
 
8
6
  import './PrimerForm.css';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { shallowEqual, useDispatch, useSelector } from 'react-redux';
3
- import Button from '@mui/material/Button';
3
+ import { Button } from '@mui/material';
4
4
  import PrimerForm from './PrimerForm';
5
5
  import PrimerTableRow from './PrimerTableRow';
6
6
  import './PrimerList.css';
@@ -1,14 +1,21 @@
1
1
  import React from 'react';
2
2
  import PrimerTableRow from './PrimerTableRow';
3
3
  import { mockPrimerDetails, mockPCRDetails, mockPrimer } from '../../../../../tests/mockPrimerDetailsData';
4
+ import { ConfigProvider } from '../../providers/ConfigProvider';
5
+
6
+ const config = {
7
+ backendUrl: 'http://127.0.0.1:8000',
8
+ };
4
9
 
5
10
  describe('<PrimerTableRow />', () => {
6
11
  it('displays the right information with PCR details', () => {
7
12
  cy.mount(
8
- <PrimerTableRow
9
- primerDetails={mockPrimerDetails}
10
- pcrDetails={mockPCRDetails}
11
- />,
13
+ <ConfigProvider config={config}>
14
+ <PrimerTableRow
15
+ primerDetails={mockPrimerDetails}
16
+ pcrDetails={mockPCRDetails}
17
+ />
18
+ </ConfigProvider>,
12
19
  );
13
20
 
14
21
  cy.get('.name').should('contain', 'Test Primer');
@@ -19,10 +26,12 @@ describe('<PrimerTableRow />', () => {
19
26
  });
20
27
  it('displays the right information without PCR details', () => {
21
28
  cy.mount(
22
- <PrimerTableRow
23
- primerDetails={mockPrimerDetails}
24
- pcrDetails={[]}
25
- />,
29
+ <ConfigProvider config={config}>
30
+ <PrimerTableRow
31
+ primerDetails={mockPrimerDetails}
32
+ pcrDetails={[]}
33
+ />
34
+ </ConfigProvider>,
26
35
  );
27
36
  cy.get('.melting-temperature').should('contain', '60');
28
37
  cy.get('.gc-content').should('contain', '50');
@@ -30,10 +39,12 @@ describe('<PrimerTableRow />', () => {
30
39
  });
31
40
  it('shows skeletons when info missing', () => {
32
41
  cy.mount(
33
- <PrimerTableRow
34
- primerDetails={mockPrimer}
35
- pcrDetails={[]}
36
- />,
42
+ <ConfigProvider config={config}>
43
+ <PrimerTableRow
44
+ primerDetails={mockPrimer}
45
+ pcrDetails={[]}
46
+ />
47
+ </ConfigProvider>,
37
48
  );
38
49
  cy.get('.melting-temperature .MuiSkeleton-root').should('exist');
39
50
  cy.get('.gc-content .MuiSkeleton-root').should('exist');
@@ -43,12 +54,14 @@ describe('<PrimerTableRow />', () => {
43
54
  // but if we mistakenly test for bool and the value is 0, nothing will show.
44
55
  // This test is to make sure that we are testing for undefined instead of bool.
45
56
  cy.mount(
46
- <PrimerTableRow
47
- primerDetails={{ ...mockPrimerDetails, melting_temperature: 0, gc_content: 0, length: 0 }}
48
- pcrDetails={[
49
- { ...mockPCRDetails[0], fwdPrimer: { ...mockPCRDetails[0].fwdPrimer, melting_temperature: 0, gc_content: 0, length: 0 } },
50
- ]}
51
- />,
57
+ <ConfigProvider config={config}>
58
+ <PrimerTableRow
59
+ primerDetails={{ ...mockPrimerDetails, melting_temperature: 0, gc_content: 0, length: 0 }}
60
+ pcrDetails={[
61
+ { ...mockPCRDetails[0], fwdPrimer: { ...mockPCRDetails[0].fwdPrimer, melting_temperature: 0, gc_content: 0, length: 0 } },
62
+ ]}
63
+ />
64
+ </ConfigProvider>,
52
65
  );
53
66
  cy.get('.melting-temperature').should('contain', '0 (0)');
54
67
  cy.get('.gc-content').should('contain', '0 (0)');
@@ -1,9 +1,6 @@
1
1
  import { IconButton, Tooltip } from '@mui/material';
2
2
  import React, { useState } from 'react';
3
- import DeleteIcon from '@mui/icons-material/Delete';
4
- import EditIcon from '@mui/icons-material/Edit';
5
- import SaveIcon from '@mui/icons-material/Save';
6
- import ClearIcon from '@mui/icons-material/Clear';
3
+ import { Delete as DeleteIcon, Edit as EditIcon, Clear as ClearIcon } from '@mui/icons-material';
7
4
  import SubmitToDatabaseDialog from '../form/SubmitToDatabaseDialog';
8
5
  import useDatabase from '../../hooks/useDatabase';
9
6
  import PrimerDetailsTds from './primer_details/PrimerDetailsTds';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FormControl, InputLabel, Select, MenuItem, Box, Chip } from '@mui/material';
3
- import AddCircleIcon from '@mui/icons-material/AddCircle';
3
+ import { AddCircle as AddCircleIcon } from '@mui/icons-material';
4
4
 
5
5
  function chipRenderer(selected, primers) {
6
6
  return (
@@ -1,9 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
  import { shallowEqual, useSelector } from 'react-redux';
3
- import Button from '@mui/material/Button';
4
- import Tooltip from '@mui/material/Tooltip';
5
- import Modal from '@mui/material/Modal';
6
- import Box from '@mui/material/Box';
3
+ import { Button, Tooltip, Modal, Box } from '@mui/material';
7
4
  import useAlerts from '../../../hooks/useAlerts';
8
5
  import './styles.css';
9
6
 
@@ -1,9 +1,6 @@
1
1
  import React from 'react';
2
- import { Table, TableCell, TableRow, TableHead, TableBody } from '@mui/material';
3
- import Tooltip from '@mui/material/Tooltip';
4
- import CancelIcon from '@mui/icons-material/Cancel';
5
- import WarningIcon from '@mui/icons-material/Warning';
6
- import CheckCircleIcon from '@mui/icons-material/CheckCircle';
2
+ import { Table, TableCell, TableRow, TableHead, TableBody, Tooltip } from '@mui/material';
3
+ import { Cancel as CancelIcon, Warning as WarningIcon, CheckCircle as CheckCircleIcon } from '@mui/icons-material';
7
4
 
8
5
  function CustomTableRow({ primer }) {
9
6
  const { name, sequence, error } = primer;
@@ -1,7 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
  import { shallowEqual, useSelector } from 'react-redux';
3
- import Alert from '@mui/material/Alert';
4
- import { Button, TextField } from '@mui/material';
3
+ import { Alert, Button, TextField } from '@mui/material';
5
4
 
6
5
  import useDatabase from '../../../hooks/useDatabase';
7
6
  import { stringIsNotDNA } from '@opencloning/store/cloning_utils';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Box, FormLabel, IconButton, Collapse } from '@mui/material';
3
- import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
3
+ import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material';
4
4
 
5
5
  function CollapsableLabel({ label, className, children, open = false }) {
6
6
  const [show, setShow] = React.useState(open);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Box from '@mui/material/Box';
2
+ import { Box } from '@mui/material';
3
3
  import PrimerDesignStepper from './PrimerDesignStepper';
4
4
  import TabPanelSelectRoi from './TabPanelSelectRoi';
5
5
  import TabPannelSettings from './TabPannelSettings';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FormLabel, Box, FormControl, TextField, Tooltip, FormControlLabel, Checkbox } from '@mui/material';
3
- import InfoIcon from '@mui/icons-material/Info';
3
+ import { Info as InfoIcon } from '@mui/icons-material';
4
4
  import { useStore } from 'react-redux';
5
5
  import { updateEditor } from '@teselagen/ove';
6
6
  import EnzymeMultiSelect from '../../../form/EnzymeMultiSelect';
@@ -1,7 +1,6 @@
1
1
  import { Dialog, DialogContent, IconButton, Tooltip, Table, TableBody } from '@mui/material';
2
2
  import React from 'react';
3
- import InfoIcon from '@mui/icons-material/Info';
4
- import WarningIcon from '@mui/icons-material/Warning';
3
+ import { Info as InfoIcon, Warning as WarningIcon } from '@mui/icons-material';
5
4
  import { formatGcContent, formatMeltingTemperature, formatDeltaG } from './primerDetailsFormatting';
6
5
  import Primer3Figure from './Primer3Figure';
7
6
  import TableSection from './TableSection';
@@ -1,9 +1,8 @@
1
1
  import React from 'react';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
- import { Button, Card, CardContent, CardHeader, Stack, TextField, InputAdornment, Typography, IconButton, Box } from '@mui/material';
3
+ import { Button, Card, CardContent, CardHeader, Stack, TextField, InputAdornment, IconButton, Box, Tooltip } from '@mui/material';
4
4
  import { cloningActions } from '@opencloning/store/cloning';
5
- import Tooltip from '@mui/material/Tooltip';
6
- import InfoIcon from '@mui/icons-material/Info';
5
+ import { Info as InfoIcon } from '@mui/icons-material';
7
6
 
8
7
  const { setGlobalPrimerSettings } = cloningActions;
9
8
 
@@ -1,6 +1,6 @@
1
1
  import { FormControl, InputLabel, MenuItem, Select } from '@mui/material';
2
2
  import React from 'react';
3
- import AddCircleIcon from '@mui/icons-material/AddCircle';
3
+ import { AddCircle as AddCircleIcon } from '@mui/icons-material';
4
4
  import { useDispatch, useStore } from 'react-redux';
5
5
  import SubmitButtonBackendAPI from '../form/SubmitButtonBackendAPI';
6
6
  import { classNameToEndPointMap } from '@opencloning/utils/sourceFunctions';
@@ -1,7 +1,6 @@
1
1
  import { SimpleCircularOrLinearView } from '@teselagen/ove';
2
2
  import React from 'react';
3
- import ArrowForward from '@mui/icons-material/ArrowForward';
4
- import ArrowBack from '@mui/icons-material/ArrowBack';
3
+ import { ArrowForward, ArrowBack } from '@mui/icons-material';
5
4
  import { Button, IconButton } from '@mui/material';
6
5
  import { convertToTeselaJson } from '@opencloning/utils/readNwrite';
7
6
  import OverhangsDisplay from '../OverhangsDisplay';
@@ -1,8 +1,7 @@
1
1
  import React from 'react';
2
- import AddCircleIcon from '@mui/icons-material/AddCircle';
3
- import Tooltip from '@mui/material/Tooltip';
2
+ import { AddCircle as AddCircleIcon } from '@mui/icons-material';
3
+ import { Tooltip, IconButton } from '@mui/material';
4
4
  import { useDispatch } from 'react-redux';
5
- import { IconButton } from '@mui/material';
6
5
  import { cloningActions } from '@opencloning/store/cloning';
7
6
 
8
7
  // A component that is rendered on the side of the tree to add a new source
@@ -1,9 +1,7 @@
1
1
  import { Accordion, AccordionDetails, AccordionSummary, FormControl, InputLabel, ListItemText, MenuItem, Select, Tooltip } from '@mui/material';
2
2
  import React from 'react';
3
3
  import { useDispatch } from 'react-redux';
4
- import AddCircleIcon from '@mui/icons-material/AddCircle';
5
- import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
6
- import CancelIcon from '@mui/icons-material/Cancel';
4
+ import { ExpandMore as ExpandMoreIcon, Cancel as CancelIcon } from '@mui/icons-material';
7
5
  import { cloningActions } from '@opencloning/store/cloning';
8
6
  import SingleInputSelector from './SingleInputSelector';
9
7
  import SelectPrimerForm from '../primers/SelectPrimerForm';
@@ -1,7 +1,7 @@
1
1
  import React, { useState } from 'react';
2
2
  import { useDispatch, useStore } from 'react-redux';
3
- import Tooltip from '@mui/material/Tooltip';
4
- import DeleteIcon from '@mui/icons-material/Delete';
3
+ import { Tooltip } from '@mui/material';
4
+ import { Delete as DeleteIcon } from '@mui/icons-material';
5
5
  import { cloningActions } from '@opencloning/store/cloning';
6
6
  import './SourceBox.css';
7
7
  import VerifyDeleteDialog from './VerifyDeleteDialog';
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import FormHelperText from '@mui/material/FormHelperText';
3
- import { Alert, Checkbox, FormControl, FormControlLabel, InputLabel, MenuItem, Select, TextField } from '@mui/material';
2
+ import { FormHelperText, Alert, Checkbox, FormControl, FormControlLabel, InputLabel, MenuItem, Select, TextField } from '@mui/material';
4
3
  import { useDispatch, batch, useStore, useSelector } from 'react-redux';
5
4
  import SubmitButtonBackendAPI from '../form/SubmitButtonBackendAPI';
6
5
  import LabelWithTooltip from '../form/LabelWithTooltip';
@@ -1,5 +1,10 @@
1
1
  import React from 'react';
2
2
  import { AssemblyIdSelector, SpeciesPicker, SequenceAccessionPicker, } from './SourceGenomeRegion';
3
+ import { ConfigProvider } from '../../providers/ConfigProvider';
4
+
5
+ const config = {
6
+ backendUrl: 'http://127.0.0.1:8000',
7
+ };
3
8
 
4
9
  describe('<AssemblyIdSelector />', () => {
5
10
  it('can propose a paired accession if the assembly has no annotation', () => {
@@ -43,11 +48,13 @@ describe('<AssemblyIdSelector />', () => {
43
48
  }).as('getPairedAssemblyInfo');
44
49
 
45
50
  cy.mount(
46
- <AssemblyIdSelector
47
- setAssemblyId={setAssemblyId}
48
- setHasAnnotation={setHasAnnotation}
49
- onAssemblyIdChange={onAssemblyIdChange}
50
- />
51
+ <ConfigProvider config={config}>
52
+ <AssemblyIdSelector
53
+ setAssemblyId={setAssemblyId}
54
+ setHasAnnotation={setHasAnnotation}
55
+ onAssemblyIdChange={onAssemblyIdChange}
56
+ />
57
+ </ConfigProvider>
51
58
  );
52
59
  cy.get('input').type('GCA_000002945.3');
53
60
  cy.wait('@getAssemblyInfo');
@@ -62,7 +69,9 @@ describe('<AssemblyIdSelector />', () => {
62
69
  }).as('getAssemblyInfo');
63
70
 
64
71
  cy.mount(
65
- <AssemblyIdSelector setAssemblyId={cy.spy()} setHasAnnotation={cy.spy()} onAssemblyIdChange={cy.spy()} />
72
+ <ConfigProvider config={config}>
73
+ <AssemblyIdSelector setAssemblyId={cy.spy()} setHasAnnotation={cy.spy()} onAssemblyIdChange={cy.spy()} />
74
+ </ConfigProvider>
66
75
  );
67
76
  cy.get('input').type('GCA_000002945.3', { delay: 0});
68
77
  cy.wait('@getAssemblyInfo');
@@ -76,7 +85,9 @@ describe('<SpeciesPicker />', () => {
76
85
  const setAssemblyId = cy.spy().as('setAssemblyId');
77
86
 
78
87
  cy.mount(
79
- <SpeciesPicker setSpecies={setSpecies} setAssemblyId={setAssemblyId} />
88
+ <ConfigProvider config={config}>
89
+ <SpeciesPicker setSpecies={setSpecies} setAssemblyId={setAssemblyId} />
90
+ </ConfigProvider>
80
91
  );
81
92
  cy.intercept('GET', 'https://api.ncbi.nlm.nih.gov/datasets/v2alpha/taxonomy/taxon_suggest/**', {
82
93
  statusCode: 500,
@@ -101,7 +112,9 @@ describe('<SequenceAccessionPicker />', () => {
101
112
  }).as('getSequenceReports');
102
113
 
103
114
  cy.mount(
104
- <SequenceAccessionPicker assemblyAccession={assemblyAccession} sequenceAccession={''} setSequenceAccession={setSequenceAccession} />
115
+ <ConfigProvider config={config}>
116
+ <SequenceAccessionPicker assemblyAccession={assemblyAccession} sequenceAccession={''} setSequenceAccession={setSequenceAccession} />
117
+ </ConfigProvider>
105
118
  );
106
119
  cy.contains('Could not load chromosomes').should('exist');
107
120
  });
@@ -115,7 +128,9 @@ describe('<SequenceAccessionPicker />', () => {
115
128
  }).as('getSequenceReports');
116
129
 
117
130
  cy.mount(
118
- <SequenceAccessionPicker assemblyAccession={assemblyAccession} setSequenceAccession={setSequenceAccession} />
131
+ <ConfigProvider config={config}>
132
+ <SequenceAccessionPicker assemblyAccession={assemblyAccession} setSequenceAccession={setSequenceAccession} />
133
+ </ConfigProvider>
119
134
  );
120
135
  cy.wait('@getSequenceReports');
121
136
  cy.get('label').siblings('div').first().click();
@@ -1,10 +1,5 @@
1
1
  import React from 'react';
2
- import InputLabel from '@mui/material/InputLabel';
3
- import MenuItem from '@mui/material/MenuItem';
4
- import TextField from '@mui/material/TextField';
5
- import FormControl from '@mui/material/FormControl';
6
- import Select from '@mui/material/Select';
7
- import { Alert, Box, FormHelperText, FormLabel } from '@mui/material';
2
+ import { InputLabel, MenuItem, TextField, FormControl, Select, Alert, Box, FormHelperText, FormLabel } from '@mui/material';
8
3
  import PostRequestSelect from '../form/PostRequestSelect';
9
4
  import { getReferenceAssemblyId, taxonSuggest, geneSuggest, getInfoFromAssemblyId, getInfoFromSequenceAccession } from '@opencloning/utils/ncbiRequests';
10
5
  import TextFieldValidate from '../form/TextFieldValidate';
@@ -1,13 +1,6 @@
1
1
  import React from 'react';
2
- import IconButton from '@mui/material/IconButton';
3
- import InputAdornment from '@mui/material/InputAdornment';
4
- import ClearIcon from '@mui/icons-material/Clear';
5
- import InputLabel from '@mui/material/InputLabel';
6
- import MenuItem from '@mui/material/MenuItem';
7
- import TextField from '@mui/material/TextField';
8
- import FormControl from '@mui/material/FormControl';
9
- import Select from '@mui/material/Select';
10
- import { Alert, Autocomplete, Table, TableBody, TableCell, TableRow } from '@mui/material';
2
+ import { IconButton, InputAdornment, InputLabel, MenuItem, TextField, FormControl, Select, Alert, Autocomplete, Table, TableBody, TableCell, TableRow } from '@mui/material';
3
+ import { Clear as ClearIcon } from '@mui/icons-material';
11
4
  import SubmitButtonBackendAPI from '../form/SubmitButtonBackendAPI';
12
5
  import RequestStatusWrapper from '../form/RequestStatusWrapper';
13
6
  import getHttpClient from '@opencloning/utils/getHttpClient';
@@ -1,9 +1,6 @@
1
1
  import React from 'react';
2
2
  import { shallowEqual, useDispatch, useSelector } from 'react-redux';
3
- import InputLabel from '@mui/material/InputLabel';
4
- import MenuItem from '@mui/material/MenuItem';
5
- import FormControl from '@mui/material/FormControl';
6
- import Select from '@mui/material/Select';
3
+ import { InputLabel, MenuItem, FormControl, Select } from '@mui/material';
7
4
  import { getInputSequencesFromSourceId } from '@opencloning/store/cloning_utils';
8
5
  import { cloningActions } from '@opencloning/store/cloning';
9
6
  import useDatabase from '../../hooks/useDatabase';
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import DeleteIcon from '@mui/icons-material/Delete';
3
- import DownloadIcon from '@mui/icons-material/Download';
2
+ import { Delete as DeleteIcon, Download as DownloadIcon } from '@mui/icons-material';
4
3
  import {
5
4
  TableCell,
6
5
  TableRow,
@@ -0,0 +1,3 @@
1
+ // Re-export from ConfigProvider.jsx to ensure single source of truth
2
+ // This file is used by the "./providers/ConfigProvider" export path
3
+ export { ConfigProvider, useConfig, default } from './ConfigProvider.jsx';
package/src/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // Version placeholder - replaced at publish time via prepack script
2
- export const version = "1.1.0-test.2";
2
+ export const version = "1.1.0-test.5";