diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-chromium-linux.png index 35ade3cce..c555b8741 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-chromium-linux.png index 4df2da1c3..2091f2a75 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-paste-link-to-image-as-image-markup-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-chromium-linux.png index caf565556..5a1d0b4ad 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-chromium-linux.png index e46cad010..d9698c308 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-MARKUP-mode-should-reindent-pasted-markup-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-chromium-linux.png index d3297ce7c..f0e854da3 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-chromium-linux.png index e41b99f71..e77acf46a 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-Paste-HTML-should-parse-HTML-in-markup-mode-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-dark-chromium-linux.png index 009fb4110..04da01611 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-light-chromium-linux.png index 6be81f23a..0c6b23774 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Clipboard.visual.test.tsx-snapshots/Clipboard-should-copy-from-wysiwyg-and-paste-formatted-to-markup-mode-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-chromium-linux.png index 0f8fd3bb4..610521ac4 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-chromium-linux.png index 6e4e063fe..6ea316d5e 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Colorify.visual.test.tsx-snapshots/Colorify-specific-should-escape-parentheses-markup-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-chromium-linux.png index 1851b2bd5..4ab641469 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-chromium-linux.png index 40ba6176a..7443a9937 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Cut.visual.test.tsx-snapshots/Cut-specific-should-open-second-cut-in-preview-markup-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-chromium-linux.png index b110d311b..1433f522e 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-chromium-linux.png index 7162190f2..ebdaef683 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-result-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-chromium-linux.png index 1d3da111f..72afcd58a 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-chromium-linux.png index 319b37308..5f3ac8145 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Empty-rows-MARKUP-mode-markup-should-show-autocomplete-tooltip-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-dark-chromium-linux.png index ef44797b8..619ee1d20 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-light-chromium-linux.png index 074363755..776461baf 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Experimental.visual.test.tsx-snapshots/Preserve-markup-formatting-should-preserve-markup-formatting-for-yfm-table-table-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png index 7909d62b9..7b55bd28c 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-chromium-linux.png index f2219a44a..8d014f971 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Bullet-lists-specific-should-sink-list-item-markup-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png index a4e43584a..e69658fc2 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-chromium-linux.png index 11382e42d..a917253a5 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Lists.visual.test.tsx-snapshots/Ordered-lists-specific-should-sink-list-item-markup-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-chromium-linux.png index d6d8750db..150044054 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-chromium-linux.png index 756776d81..aebd079ef 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-have-same-set-of-actions-in-both-modes-in-markup-mode-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-chromium-linux.png index 22c51ab4f..aaba5a76c 100644 Binary files a/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/Toolbar.visual.test.tsx-snapshots/Toolbar-should-hide-actions-at-small-width-markup-width-small-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-chromium-linux.png index 6f3f33ad3..06c9ac51c 100644 Binary files a/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-dark-chromium-linux.png differ diff --git a/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-chromium-linux.png b/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-chromium-linux.png index 7bdc67f17..1d31f3757 100644 Binary files a/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-chromium-linux.png and b/demo/tests/visual-tests/__snapshots__/YfmTable.visual.test.tsx-snapshots/YfmTable-insert-should-insert-via-toolbar-in-markup-mode-light-chromium-linux.png differ diff --git a/demo/tests/visual-tests/playground/CodeBlock.visual.test.tsx b/demo/tests/visual-tests/playground/CodeBlock.visual.test.tsx index e8a7349ce..b89cf6d73 100644 --- a/demo/tests/visual-tests/playground/CodeBlock.visual.test.tsx +++ b/demo/tests/visual-tests/playground/CodeBlock.visual.test.tsx @@ -1,12 +1,13 @@ import dd from 'ts-dedent'; -import {test} from 'playwright/core'; +import {expect, test} from 'playwright/core'; import {Playground} from './Playground.helpers'; test.describe('CodeBlock', () => { test('should insert empty codeblock @wysiwyg', async ({ mount, + page, editor, wait, expectScreenshot, @@ -32,7 +33,7 @@ test.describe('CodeBlock', () => { await wait.visible(editor.locators.contenteditable.locator('code')); await editor.codeBlock.waitForToolbarVisible(); - await wait.timeout(100); + await expect(page.locator('.playground__markup')).toHaveText('```\n\n```'); await expectScreenshot(); }); diff --git a/packages/editor/src/bundle/settings/index.scss b/packages/editor/src/bundle/settings/index.scss index 7821bd3b2..7c97529d1 100644 --- a/packages/editor/src/bundle/settings/index.scss +++ b/packages/editor/src/bundle/settings/index.scss @@ -2,10 +2,6 @@ display: flex; flex-wrap: nowrap; - &__preview-button { - margin: 0 2px; - } - &__separator { z-index: 0; diff --git a/packages/editor/src/bundle/settings/index.tsx b/packages/editor/src/bundle/settings/index.tsx index a9c5a5dce..a49e2db78 100644 --- a/packages/editor/src/bundle/settings/index.tsx +++ b/packages/editor/src/bundle/settings/index.tsx @@ -78,7 +78,7 @@ export const EditorSettings = memo(function EditorSettings( - {settingsVisible &&
} + {areSettingsVisible &&
} )} {areSettingsVisible && (