diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts new file mode 100644 index 0000000000..ad61b8ee64 --- /dev/null +++ b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts @@ -0,0 +1,190 @@ +import { test, expect } from '@playwright/test'; +import { + TopPanelButton, + openFileAndAddToCanvasMacro, + selectTopPanelButton, + takeEditorScreenshot, + waitForPageInit, + saveToFile, + openFile, + receiveFileComparisonData, + selectOptionInDropdown, + pressButton, + selectSnakeLayoutModeTool, + chooseFileFormat, + readFileContents, + getSequence, + moveMouseAway, +} from '@utils'; +import { turnOnMacromoleculesEditor } from '@utils/macromolecules'; + +test.describe('Import-Saving .seq Files', () => { + test.beforeEach(async ({ page }) => { + await waitForPageInit(page); + await turnOnMacromoleculesEditor(page); + }); + + const sequenceFileTypes = ['DNA', 'RNA', 'Peptide'] as const; + + for (const fileType of sequenceFileTypes) { + test(`Import .seq ${fileType} file`, async ({ page }) => { + await openFileAndAddToCanvasMacro( + `Sequence/sequence-${fileType.toLowerCase()}.seq`, + page, + fileType, + ); + await moveMouseAway(page); + await takeEditorScreenshot(page); + }); + } + + test('Import incorrect data', async ({ page }) => { + const randomText = 'asjfnsalkfl'; + await selectTopPanelButton(TopPanelButton.Open, page); + await page.getByTestId('paste-from-clipboard-button').click(); + await page.getByTestId('open-structure-textarea').fill(randomText); + await chooseFileFormat(page, 'Sequence'); + await page.getByTestId('add-to-canvas-button').click(); + await takeEditorScreenshot(page); + }); + + test('Check import of .ket file and save in .seq format', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro('KET/rna-a.ket', page); + const expectedFile = await getSequence(page); + await saveToFile('Sequence/sequence-rna-a-expected.seq', expectedFile); + + const METADATA_STRING_INDEX = [1]; + + const { fileExpected: sequenceFileExpected, file: sequenceFile } = + await receiveFileComparisonData({ + page, + expectedFileName: + 'tests/test-data/Sequence/sequence-rna-a-expected.seq', + metaDataIndexes: METADATA_STRING_INDEX, + }); + + expect(sequenceFile).toEqual(sequenceFileExpected); + + await takeEditorScreenshot(page); + }); + + test('Check that empty file can be saved in .seq format', async ({ + page, + }) => { + const expectedFile = await getSequence(page); + await saveToFile('Sequence/sequence-empty.seq', expectedFile); + + const METADATA_STRING_INDEX = [1]; + + const { fileExpected: sequenceFileExpected, file: sequenceFile } = + await receiveFileComparisonData({ + page, + expectedFileName: 'tests/test-data/Sequence/sequence-empty.seq', + metaDataIndexes: METADATA_STRING_INDEX, + }); + + expect(sequenceFile).toEqual(sequenceFileExpected); + }); + + test('Check that system does not let importing empty .seq file', async ({ + page, + }) => { + await selectTopPanelButton(TopPanelButton.Open, page); + await openFile('Sequence/sequence-empty.seq', page); + await page.getByText('Add to Canvas').isDisabled(); + }); + + test('Check that system does not let uploading corrupted .seq file', async ({ + page, + }) => { + await selectTopPanelButton(TopPanelButton.Open, page); + + const filename = 'Sequence/sequence-corrupted.seq'; + await openFile(filename, page); + await selectOptionInDropdown(filename, page); + await pressButton(page, 'Add to Canvas'); + await takeEditorScreenshot(page); + }); + + test('Validate correct displaying of snake viewed RNA chain loaded from .seq file format', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro( + 'Sequence/sequence-snake-mode-rna.seq', + page, + ); + await selectSnakeLayoutModeTool(page); + await takeEditorScreenshot(page); + }); + + test('Check that you can save snake viewed chain of peptides in a .seq file', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro( + 'Sequence/sequence-snake-mode-rna.seq', + page, + ); + await selectSnakeLayoutModeTool(page); + const expectedFile = await getSequence(page); + await saveToFile( + 'Sequence/sequence-snake-mode-rna-expected.seq', + expectedFile, + ); + + const METADATA_STRING_INDEX = [1]; + + const { fileExpected: sequenceFileExpected, file: sequenceFile } = + await receiveFileComparisonData({ + page, + expectedFileName: + 'tests/test-data/Sequence/sequence-snake-mode-rna-expected.seq', + metaDataIndexes: METADATA_STRING_INDEX, + }); + + expect(sequenceFile).toEqual(sequenceFileExpected); + }); + + test('Should open .ket file and modify to .seq format in save modal textarea', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro('KET/rna-a.ket', page); + await selectTopPanelButton(TopPanelButton.Save, page); + await chooseFileFormat(page, 'Sequence'); + await page + .getByTestId('dropdown-select') + .getByRole('combobox') + .allInnerTexts(); + + const textArea = page.getByTestId('preview-area-text'); + const file = await readFileContents( + 'tests/test-data/Sequence/sequence-rna-a.seq', + ); + const expectedData = file; + const valueInTextarea = await textArea.inputValue(); + expect(valueInTextarea).toBe(expectedData); + }); + + // Should not convert to Sequence type in case of there are more than one monomer type + test('Should not convert .ket file with RNA and Peptide to .seq format in save modal', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro('KET/rna-and-peptide.ket', page); + await selectTopPanelButton(TopPanelButton.Save, page); + await chooseFileFormat(page, 'Sequence'); + + await takeEditorScreenshot(page); + }); + + // Should not convert to Sequence type in case of there is any CHEM + test('Should not convert .ket file with CHEMs to .seq format in save modal', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro('KET/chems-not-connected.ket', page); + await selectTopPanelButton(TopPanelButton.Save, page); + await chooseFileFormat(page, 'Sequence'); + + await takeEditorScreenshot(page); + }); +}); diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Check-import-of-ket-file-and-save-in-seq-format-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Check-import-of-ket-file-and-save-in-seq-format-1-chromium-linux.png new file mode 100644 index 0000000000..b894c595c2 Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Check-import-of-ket-file-and-save-in-seq-format-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Check-that-system-does-not-let-uploading-corrupted-seq-file-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Check-that-system-does-not-let-uploading-corrupted-seq-file-1-chromium-linux.png new file mode 100644 index 0000000000..621d2d4416 Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Check-that-system-does-not-let-uploading-corrupted-seq-file-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-incorrect-data-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-incorrect-data-1-chromium-linux.png new file mode 100644 index 0000000000..01864ae21e Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-incorrect-data-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-DNA-file-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-DNA-file-1-chromium-linux.png new file mode 100644 index 0000000000..4238ba6aca Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-DNA-file-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-Peptide-file-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-Peptide-file-1-chromium-linux.png new file mode 100644 index 0000000000..13680dcd9c Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-Peptide-file-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-RNA-file-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-RNA-file-1-chromium-linux.png new file mode 100644 index 0000000000..94838302e9 Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Import-seq-RNA-file-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Should-not-convert-k-24fc3--RNA-and-Peptide-to-seq-format-in-save-modal-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Should-not-convert-k-24fc3--RNA-and-Peptide-to-seq-format-in-save-modal-1-chromium-linux.png new file mode 100644 index 0000000000..67d6e56a92 Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Should-not-convert-k-24fc3--RNA-and-Peptide-to-seq-format-in-save-modal-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Should-not-convert-ket-file-with-CHEMs-to-seq-format-in-save-modal-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Should-not-convert-ket-file-with-CHEMs-to-seq-format-in-save-modal-1-chromium-linux.png new file mode 100644 index 0000000000..a01c6d9cab Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Should-not-convert-ket-file-with-CHEMs-to-seq-format-in-save-modal-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Validate-correct-disp-527b1-viewed-RNA-chain-loaded-from-seq-file-format-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Validate-correct-disp-527b1-viewed-RNA-chain-loaded-from-seq-file-format-1-chromium-linux.png new file mode 100644 index 0000000000..aa9a7b98a2 Binary files /dev/null and b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-sequence.spec.ts-snapshots/Import-Saving-seq-Files-Validate-correct-disp-527b1-viewed-RNA-chain-loaded-from-seq-file-format-1-chromium-linux.png differ diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-corrupted.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-corrupted.seq new file mode 100644 index 0000000000..b0cf5b75fb --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-corrupted.seq @@ -0,0 +1 @@ +12w12r23e32e33 \ No newline at end of file diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-dna.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-dna.seq new file mode 100644 index 0000000000..9c63fda846 --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-dna.seq @@ -0,0 +1 @@ +TCCAGCCATTGTGATTGCATGTTCCCAGGTTGAGGTAGTAGGTTGTATAGTTTAGAATTACATCAAGGGAGATAACTGTACAGCCTCCTAGCTTTCCTTGGGTCTTGCACAAAGCAACATGGCGAGA \ No newline at end of file diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-empty.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-empty.seq new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-peptide.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-peptide.seq new file mode 100644 index 0000000000..c3569632bd --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-peptide.seq @@ -0,0 +1 @@ +MIIGYVIGQATTQEALILAERPVRLGTYVVLEYDNVKALGLITNVTRGSPLLDDNMNDIEIVQRLKQFNNSIPVYTKAKVKLLCDMNNHFLMPDIPPFAGTPAREAEDEELKSIYSQDGQIRIGSLIGKNVEVKLNINSFARHLAILAATGSGKSNTVAVLSQRISELGGSVLIFDYHGEYYDSDIKNLNRIEPKLNPLYMTPREFSTLLEIRENAIIQYRILRRAFIKVTNGIRAALAAGQIPFSTLNSQFYELMADALETQGNSDKKSSAKDEVLNKFEEFMDRYSNVIDLTSSDIIEKVKRGKVNVVSLTQLDEDSMDAVVSHYLRRILDSRKDFKRSKNSGLKFPIIAVIEEAHVFLSKNENTLTKYWASRIAREGRKFGVGLTIVSQRPKGLDENILSQMTNKIILKIIEPTDKKYILESSDNLSEDLAEQLSSLDVGEAIIIGKIVKLPAVVKIDMFEGKLLGSDPDMIGEWKKVAASEKIAKGFADFGTEIGD \ No newline at end of file diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-rna-a-expected.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-rna-a-expected.seq new file mode 100644 index 0000000000..8c7e5a667f --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-rna-a-expected.seq @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-rna-a.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-rna-a.seq new file mode 100644 index 0000000000..8c7e5a667f --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-rna-a.seq @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-rna.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-rna.seq new file mode 100644 index 0000000000..f9edee2573 --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-rna.seq @@ -0,0 +1 @@ +UCCAGCCAUUGUGAUUGCAUGUUCCCAGGUUGAGGUAGUAGGUUGUAUAGUUUAGAAUUACAUCAAGGGAGAUAACUGUACAGCCUCCUAGCUUUCCUUGGGUCUUGCACAAAGCAACAUGGCGAGA \ No newline at end of file diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-snake-mode-rna-expected.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-snake-mode-rna-expected.seq new file mode 100644 index 0000000000..1a81c78692 --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-snake-mode-rna-expected.seq @@ -0,0 +1 @@ +CCCCCCCCCCCCCCCCCCCCCCCCCCC \ No newline at end of file diff --git a/ketcher-autotests/tests/test-data/Sequence/sequence-snake-mode-rna.seq b/ketcher-autotests/tests/test-data/Sequence/sequence-snake-mode-rna.seq new file mode 100644 index 0000000000..1a81c78692 --- /dev/null +++ b/ketcher-autotests/tests/test-data/Sequence/sequence-snake-mode-rna.seq @@ -0,0 +1 @@ +CCCCCCCCCCCCCCCCCCCCCCCCCCC \ No newline at end of file diff --git a/ketcher-autotests/tests/utils/files/receiveFileComparisonData.ts b/ketcher-autotests/tests/utils/files/receiveFileComparisonData.ts index 0a266828b4..d63e8e6b4b 100644 --- a/ketcher-autotests/tests/utils/files/receiveFileComparisonData.ts +++ b/ketcher-autotests/tests/utils/files/receiveFileComparisonData.ts @@ -17,6 +17,7 @@ const GetFileMethod: Record = { inchi: 'getInchi', sdf: 'getSdf', fasta: 'getFasta', + seq: 'getSequence', } as const; type KetcherApiFunction = (format?: string) => Promise; diff --git a/ketcher-autotests/tests/utils/formats/formats.ts b/ketcher-autotests/tests/utils/formats/formats.ts index e1ab3165de..73990cbfa4 100644 --- a/ketcher-autotests/tests/utils/formats/formats.ts +++ b/ketcher-autotests/tests/utils/formats/formats.ts @@ -9,6 +9,10 @@ export async function getFasta(page: Page): Promise { return await page.evaluate(() => window.ketcher.getFasta()); } +export async function getSequence(page: Page): Promise { + return await page.evaluate(() => window.ketcher.getSequence()); +} + export async function getCml(page: Page): Promise { return await page.evaluate(() => window.ketcher.getCml()); } diff --git a/ketcher-autotests/tests/utils/macromolecules/index.ts b/ketcher-autotests/tests/utils/macromolecules/index.ts index ad6492592d..c1d8626757 100644 --- a/ketcher-autotests/tests/utils/macromolecules/index.ts +++ b/ketcher-autotests/tests/utils/macromolecules/index.ts @@ -44,7 +44,7 @@ export async function scrollDown(page: Page, scrollDelta: number) { export async function chooseFileFormat( page: Page, - fileFomat: 'Ket' | 'MDL Molfile V3000' | 'FASTA', + fileFomat: 'Ket' | 'MDL Molfile V3000' | 'FASTA' | 'Sequence', ) { await page.getByTestId('dropdown-select').click(); await waitForSpinnerFinishedWork(page, async () => { diff --git a/packages/ketcher-core/src/application/formatters/formatProperties.ts b/packages/ketcher-core/src/application/formatters/formatProperties.ts index 132b3aea8b..17ca6c2ca0 100644 --- a/packages/ketcher-core/src/application/formatters/formatProperties.ts +++ b/packages/ketcher-core/src/application/formatters/formatProperties.ts @@ -132,6 +132,13 @@ const formatProperties: FormatPropertiesMap = { ['.fasta'], true, ), + sequence: new SupportedFormatProperties( + 'SEQUENCE', + ChemicalMimeType.SEQUENCE, + ['.seq'], + false, + {}, + ), unknown: new SupportedFormatProperties( 'Unknown', ChemicalMimeType.UNKNOWN, diff --git a/packages/ketcher-core/src/application/formatters/structFormatter.types.ts b/packages/ketcher-core/src/application/formatters/structFormatter.types.ts index 079f6b16ee..bbdadb54b0 100644 --- a/packages/ketcher-core/src/application/formatters/structFormatter.types.ts +++ b/packages/ketcher-core/src/application/formatters/structFormatter.types.ts @@ -50,6 +50,7 @@ export enum SupportedFormat { sdf = 'sdf', sdfV3000 = 'sdfV3000', fasta = 'fasta', + sequence = 'sequence', unknown = 'unknown', } diff --git a/packages/ketcher-core/src/application/ketcher.ts b/packages/ketcher-core/src/application/ketcher.ts index ab2a242f6d..b8387d0ea0 100644 --- a/packages/ketcher-core/src/application/ketcher.ts +++ b/packages/ketcher-core/src/application/ketcher.ts @@ -201,6 +201,15 @@ export class Ketcher { ); } + getSequence(): Promise { + return getStructure( + SupportedFormat.sequence, + this.#formatterFactory, + this.#editor.struct(), + CoreEditor.provideEditorInstance()?.drawingEntitiesManager, + ); + } + getSmarts(): Promise { if (window.isPolymerEditorTurnedOn) { throw new Error('SMARTS format is not available in macro mode'); diff --git a/packages/ketcher-core/src/domain/services/struct/structService.types.ts b/packages/ketcher-core/src/domain/services/struct/structService.types.ts index 1fe1eaefb5..e2df524037 100644 --- a/packages/ketcher-core/src/domain/services/struct/structService.types.ts +++ b/packages/ketcher-core/src/domain/services/struct/structService.types.ts @@ -30,6 +30,7 @@ export enum ChemicalMimeType { UNKNOWN = 'chemical/x-unknown', SDF = 'chemical/x-sdf', FASTA = 'fasta', + SEQUENCE = 'chemical/x-sequence', } export interface WithStruct { diff --git a/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/LoadingCircles.tsx b/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/LoadingCircles.tsx index e3da653a79..f7f7d9751e 100644 --- a/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/LoadingCircles.tsx +++ b/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/LoadingCircles.tsx @@ -64,7 +64,7 @@ const LoadContainer = styled.div` } `; export const LoadingCircles = () => ( - + diff --git a/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/__snapshots__/LoadingCircles.test.tsx.snap b/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/__snapshots__/LoadingCircles.test.tsx.snap index 4c5cf67e17..1b87561886 100644 --- a/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/__snapshots__/LoadingCircles.test.tsx.snap +++ b/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/LoadingCircles/__snapshots__/LoadingCircles.test.tsx.snap @@ -6,7 +6,7 @@ Object { "baseElement":
@@ -16,7 +16,7 @@ Object { , "container":
diff --git a/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/__snapshots__/AnalyzingFile.test.tsx.snap b/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/__snapshots__/AnalyzingFile.test.tsx.snap index aeb0777e87..7bbd7b93cf 100644 --- a/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/__snapshots__/AnalyzingFile.test.tsx.snap +++ b/packages/ketcher-macromolecules/src/components/modal/Open/AnalyzingFile/__snapshots__/AnalyzingFile.test.tsx.snap @@ -9,7 +9,7 @@ Object { class="css-1ro7qq4" >
@@ -23,7 +23,7 @@ Object { class="css-1ro7qq4" >
diff --git a/packages/ketcher-macromolecules/src/components/modal/save/Save.tsx b/packages/ketcher-macromolecules/src/components/modal/save/Save.tsx index eaa94af607..cd87c55bba 100644 --- a/packages/ketcher-macromolecules/src/components/modal/save/Save.tsx +++ b/packages/ketcher-macromolecules/src/components/modal/save/Save.tsx @@ -47,12 +47,14 @@ import { openErrorModal } from 'state/modal'; const options: Array