## Description Added ESLint rule to force blank lines between statements. Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### 🔍 Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10924926728> > Commit: 34f57714a1575ee04e94e03cbcaf95e57a96c86c > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10924926728&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank">Cypress dashboard</a>. > Tags: @tag.All > Spec: > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Anvil/AnvilModal_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCheckboxGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCurrencyInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilIconButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInlineButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilParagraphWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilPhoneInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilStatsWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilTableWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilToolbarButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilZoneSectionWidgetSnapshot_spec.ts</ol> > <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">List of identified flaky tests</a>. > <hr>Wed, 18 Sep 2024 16:33:36 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No --------- Co-authored-by: Valera Melnikov <valera@appsmith.com>
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import type CodeMirror from "codemirror";
|
||
|
||
/**
|
||
* This function returns the CodeMirror namespace from the editor instance. Basically, this:
|
||
*
|
||
* import CodeMirror from "codemirror";
|
||
*
|
||
* const someCodeMirrorCallback = (cm: CodeMirror.Editor) => {
|
||
* const pos = CodeMirror.Pos(1, 1);
|
||
* cm.replaceRange("foo", pos);
|
||
* }
|
||
*
|
||
* is equivalent to this:
|
||
*
|
||
* const someCodeMirrorCallback = (cm: CodeMirror.Editor) => {
|
||
* const CodeMirror = getCodeMirrorNamespaceFromEditor(cm);
|
||
* const pos = CodeMirror.Pos(1, 1);
|
||
* cm.replaceRange("foo", pos);
|
||
* }
|
||
*
|
||
* We use this function to avoid statically importing CodeMirror outside of the code editor.
|
||
* It’s useful in cases where a function has access to the CodeMirror editor (eg because it was called
|
||
* by CodeMirror) but needs to use some APIs that are not exposed on the editor instance (like `CodeMirror.on`,
|
||
* `CodeMirror.Pos`, etc).
|
||
*/
|
||
export const getCodeMirrorNamespaceFromEditor = (
|
||
editor: CodeMirror.Editor,
|
||
): typeof CodeMirror => {
|
||
return editor.constructor as typeof CodeMirror;
|
||
};
|
||
|
||
/**
|
||
* This function returns the CodeMirror namespace from the doc instance. See
|
||
* getCodeMirrorNamespaceFromEditor for more details on why this is needed.
|
||
*
|
||
* @see getCodeMirrorNamespaceFromEditor
|
||
*/
|
||
export const getCodeMirrorNamespaceFromDoc = (
|
||
doc: CodeMirror.Doc,
|
||
): typeof CodeMirror => {
|
||
const editor = doc.getEditor();
|
||
|
||
if (!editor) {
|
||
throw new Error(
|
||
"The CodeMirror doc does not belong to an editor. Cannot get the CodeMirror namespace.",
|
||
);
|
||
}
|
||
|
||
return getCodeMirrorNamespaceFromEditor(editor);
|
||
};
|