diff --git a/babel.config.js b/babel.config.js index ba993da5..016cb186 100644 --- a/babel.config.js +++ b/babel.config.js @@ -3,6 +3,7 @@ module.exports = { '@babel/preset-env', ], plugins: [ + '@babel/plugin-proposal-nullish-coalescing-operator', '@babel/plugin-proposal-optional-chaining', ], } diff --git a/docs/src/demos/Extensions/CodeBlock/index.spec.js b/docs/src/demos/Extensions/CodeBlock/index.spec.js index 657878a1..746605c0 100644 --- a/docs/src/demos/Extensions/CodeBlock/index.spec.js +++ b/docs/src/demos/Extensions/CodeBlock/index.spec.js @@ -69,6 +69,16 @@ context('/api/extensions/code-block', () => { }) }) + it('should parse the language from a HTML code block', () => { + cy.get('.ProseMirror').then(([{ editor }]) => { + editor.setContent('
body { display: none; }')
+
+ cy.get('.ProseMirror')
+ .find('pre>code.language-css')
+ .should('have.length', 1)
+ })
+ })
+
it('should make a code block for js', () => {
cy.get('.ProseMirror').then(([{ editor }]) => {
editor.clearContent()
diff --git a/docs/src/docPages/api/extensions/code-block.md b/docs/src/docPages/api/extensions/code-block.md
index 7f58eff6..6608c521 100644
--- a/docs/src/docPages/api/extensions/code-block.md
+++ b/docs/src/docPages/api/extensions/code-block.md
@@ -17,9 +17,10 @@ yarn add @tiptap/extension-code-block
```
## Settings
-| Option | Type | Default | Description |
-| ------ | ------ | ------- | -------------------------------------------- |
-| class | string | – | Add a custom class to the rendered HTML tag. |
+| Option | Type | Default | Description |
+| ------------------- | ------ | --------- | ---------------------------------------------------------------- |
+| class | string | – | Add a custom class to the rendered HTML tag. |
+| languageClassPrefix | string | language- | Adds a prefix to language classes that are applied to code tags. |
## Commands
| Command | Options | Description |
diff --git a/package.json b/package.json
index 40e28492..5c95f518 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"reset": "yarn clean:packages && rm -rf ./**/.cache && rm -rf ./**/node_modules && rm -rf ./yarn.lock && yarn install"
},
"devDependencies": {
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4",
"@babel/plugin-proposal-optional-chaining": "^7.11.0",
"@babel/preset-env": "^7.11.5",
"@types/prosemirror-commands": "^1.0.3",
diff --git a/packages/extension-code-block/index.ts b/packages/extension-code-block/index.ts
index ab2bf10a..4119e7ec 100644
--- a/packages/extension-code-block/index.ts
+++ b/packages/extension-code-block/index.ts
@@ -1,6 +1,10 @@
import { Command, Node } from '@tiptap/core'
import { textblockTypeInputRule } from 'prosemirror-inputrules'
+export interface CodeBlockOptions {
+ languageClassPrefix: string,
+}
+
export type CodeBlockCommand = () => Command
declare module '@tiptap/core/src/Editor' {
@@ -11,9 +15,12 @@ declare module '@tiptap/core/src/Editor' {
export const inputRegex = /^```(?