Merge branch 'stable-3.12' into stable-3.13

* stable-3.12:
  Preserve line terminator upon edits

Change-Id: I57620186d0686284f5ae4a1994eda3bff8624f3c
diff --git a/web/.eslintrc.js b/web/.eslintrc.js
deleted file mode 100644
index c4a47b7..0000000
--- a/web/.eslintrc.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * @license
- * Copyright 2022 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
-__plugindir = 'codemirror-editor/web';
-module.exports = {
-  extends: '../../.eslintrc.js',
-};
diff --git a/web/element/codemirror-element.ts b/web/element/codemirror-element.ts
index 386aa67..eb014ac 100644
--- a/web/element/codemirror-element.ts
+++ b/web/element/codemirror-element.ts
@@ -4,7 +4,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 import {LitElement, css, html} from 'lit';
-import {customElement, property, query} from 'lit/decorators';
+import {customElement, property, query} from 'lit/decorators.js';
 import {EditorView} from '@codemirror/view';
 import {EditorState} from '@codemirror/state';
 import {updateRulerWidth} from './ruler';
diff --git a/web/eslint.config.js b/web/eslint.config.js
new file mode 100644
index 0000000..75fcd1e
--- /dev/null
+++ b/web/eslint.config.js
@@ -0,0 +1,18 @@
+/**
+ * @license
+ * Copyright 2022 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+const {defineConfig} = require('eslint/config');
+
+// eslint-disable-next-line no-undef
+__plugindir = 'codemirror-editor/web';
+
+const gerritEslint = require('../../eslint.config.js');
+
+module.exports = defineConfig([
+  {
+    extends: [gerritEslint],
+  },
+]);