@tiptap/extension-code-block-lowlight 2.0.0-beta.71 → 2.0.0-beta.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/extension-code-block-lowlight/src/lowlight-plugin.d.ts +1 -1
- package/dist/tiptap-extension-code-block-lowlight.cjs.js +3 -2
- package/dist/tiptap-extension-code-block-lowlight.cjs.js.map +1 -1
- package/dist/tiptap-extension-code-block-lowlight.esm.js +3 -2
- package/dist/tiptap-extension-code-block-lowlight.esm.js.map +1 -1
- package/dist/tiptap-extension-code-block-lowlight.umd.js +3 -2
- package/dist/tiptap-extension-code-block-lowlight.umd.js.map +1 -1
- package/package.json +7 -6
- package/src/lowlight-plugin.ts +4 -2
|
@@ -64,7 +64,7 @@ function LowlightPlugin({ name, lowlight, defaultLanguage }) {
|
|
|
64
64
|
if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {
|
|
65
65
|
throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension');
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
const lowlightPlugin = new prosemirrorState.Plugin({
|
|
68
68
|
key: new prosemirrorState.PluginKey('lowlight'),
|
|
69
69
|
state: {
|
|
70
70
|
init: (_, { doc }) => getDecorations({
|
|
@@ -112,10 +112,11 @@ function LowlightPlugin({ name, lowlight, defaultLanguage }) {
|
|
|
112
112
|
},
|
|
113
113
|
props: {
|
|
114
114
|
decorations(state) {
|
|
115
|
-
return
|
|
115
|
+
return lowlightPlugin.getState(state);
|
|
116
116
|
},
|
|
117
117
|
},
|
|
118
118
|
});
|
|
119
|
+
return lowlightPlugin;
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
const CodeBlockLowlight = CodeBlock__default["default"].extend({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-extension-code-block-lowlight.cjs.js","sources":["../src/lowlight-plugin.ts","../src/code-block-lowlight.ts"],"sourcesContent":["import { findChildren } from '@tiptap/core'\nimport { Node as ProsemirrorNode } from 'prosemirror-model'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\n\nfunction parseNodes(nodes: any[], className: string[] = []): { text: string, classes: string[] }[] {\n return nodes\n .map(node => {\n const classes = [\n ...className,\n ...node.properties\n ? node.properties.className\n : [],\n ]\n\n if (node.children) {\n return parseNodes(node.children, classes)\n }\n\n return {\n text: node.value,\n classes,\n }\n })\n .flat()\n}\n\nfunction getHighlightNodes(result: any) {\n // `.value` for lowlight v1, `.children` for lowlight v2\n return result.value || result.children || []\n}\n\nfunction getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n}: { doc: ProsemirrorNode, name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n const decorations: Decoration[] = []\n\n findChildren(doc, node => node.type.name === name)\n .forEach(block => {\n let from = block.pos + 1\n const language = block.node.attrs.language || defaultLanguage\n const languages = lowlight.listLanguages()\n const nodes = language && languages.includes(language)\n ? getHighlightNodes(lowlight.highlight(language, block.node.textContent))\n : getHighlightNodes(lowlight.highlightAuto(block.node.textContent))\n\n parseNodes(nodes).forEach(node => {\n const to = from + node.text.length\n\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(' '),\n })\n\n decorations.push(decoration)\n }\n\n from = to\n })\n })\n\n return DecorationSet.create(doc, decorations)\n}\n\nfunction isFunction(param: Function) {\n return typeof param === 'function'\n}\n\nexport function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {\n throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension')\n }\n\n
|
|
1
|
+
{"version":3,"file":"tiptap-extension-code-block-lowlight.cjs.js","sources":["../src/lowlight-plugin.ts","../src/code-block-lowlight.ts"],"sourcesContent":["import { findChildren } from '@tiptap/core'\nimport { Node as ProsemirrorNode } from 'prosemirror-model'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\n\nfunction parseNodes(nodes: any[], className: string[] = []): { text: string, classes: string[] }[] {\n return nodes\n .map(node => {\n const classes = [\n ...className,\n ...node.properties\n ? node.properties.className\n : [],\n ]\n\n if (node.children) {\n return parseNodes(node.children, classes)\n }\n\n return {\n text: node.value,\n classes,\n }\n })\n .flat()\n}\n\nfunction getHighlightNodes(result: any) {\n // `.value` for lowlight v1, `.children` for lowlight v2\n return result.value || result.children || []\n}\n\nfunction getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n}: { doc: ProsemirrorNode, name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n const decorations: Decoration[] = []\n\n findChildren(doc, node => node.type.name === name)\n .forEach(block => {\n let from = block.pos + 1\n const language = block.node.attrs.language || defaultLanguage\n const languages = lowlight.listLanguages()\n const nodes = language && languages.includes(language)\n ? getHighlightNodes(lowlight.highlight(language, block.node.textContent))\n : getHighlightNodes(lowlight.highlightAuto(block.node.textContent))\n\n parseNodes(nodes).forEach(node => {\n const to = from + node.text.length\n\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(' '),\n })\n\n decorations.push(decoration)\n }\n\n from = to\n })\n })\n\n return DecorationSet.create(doc, decorations)\n}\n\nfunction isFunction(param: Function) {\n return typeof param === 'function'\n}\n\nexport function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {\n throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension')\n }\n\n const lowlightPlugin: Plugin<any> = new Plugin({\n key: new PluginKey('lowlight'),\n\n state: {\n init: (_, { doc }) => getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n }),\n apply: (transaction, decorationSet, oldState, newState) => {\n const oldNodeName = oldState.selection.$head.parent.type.name\n const newNodeName = newState.selection.$head.parent.type.name\n const oldNodes = findChildren(oldState.doc, node => node.type.name === name)\n const newNodes = findChildren(newState.doc, node => node.type.name === name)\n\n if (\n transaction.docChanged\n // Apply decorations if:\n && (\n // selection includes named node,\n [oldNodeName, newNodeName].includes(name)\n // OR transaction adds/removes named node,\n || newNodes.length !== oldNodes.length\n // OR transaction has changes that completely encapsulte a node\n // (for example, a transaction that affects the entire document).\n // Such transactions can happen during collab syncing via y-prosemirror, for example.\n || transaction.steps.some(step => {\n // @ts-ignore\n return step.from !== undefined\n // @ts-ignore\n && step.to !== undefined\n && oldNodes.some(node => {\n // @ts-ignore\n return node.pos >= step.from\n // @ts-ignore\n && node.pos + node.node.nodeSize <= step.to\n })\n })\n )\n ) {\n return getDecorations({\n doc: transaction.doc,\n name,\n lowlight,\n defaultLanguage,\n })\n }\n\n return decorationSet.map(transaction.mapping, transaction.doc)\n },\n },\n\n props: {\n decorations(state) {\n return lowlightPlugin.getState(state)\n },\n },\n })\n\n return lowlightPlugin\n}\n","import CodeBlock, { CodeBlockOptions } from '@tiptap/extension-code-block'\n\nimport { LowlightPlugin } from './lowlight-plugin'\n\nexport interface CodeBlockLowlightOptions extends CodeBlockOptions {\n lowlight: any,\n defaultLanguage: string | null | undefined,\n}\n\nexport const CodeBlockLowlight = CodeBlock.extend<CodeBlockLowlightOptions>({\n addOptions() {\n return {\n ...this.parent?.(),\n lowlight: {},\n defaultLanguage: null,\n }\n },\n\n addProseMirrorPlugins() {\n return [\n ...this.parent?.() || [],\n LowlightPlugin({\n name: this.name,\n lowlight: this.options.lowlight,\n defaultLanguage: this.options.defaultLanguage,\n }),\n ]\n },\n})\n"],"names":["findChildren","Decoration","DecorationSet","Plugin","PluginKey","CodeBlock"],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ function LowlightPlugin({ name, lowlight, defaultLanguage }) {
|
|
|
56
56
|
if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {
|
|
57
57
|
throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension');
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
const lowlightPlugin = new Plugin({
|
|
60
60
|
key: new PluginKey('lowlight'),
|
|
61
61
|
state: {
|
|
62
62
|
init: (_, { doc }) => getDecorations({
|
|
@@ -104,10 +104,11 @@ function LowlightPlugin({ name, lowlight, defaultLanguage }) {
|
|
|
104
104
|
},
|
|
105
105
|
props: {
|
|
106
106
|
decorations(state) {
|
|
107
|
-
return
|
|
107
|
+
return lowlightPlugin.getState(state);
|
|
108
108
|
},
|
|
109
109
|
},
|
|
110
110
|
});
|
|
111
|
+
return lowlightPlugin;
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
const CodeBlockLowlight = CodeBlock.extend({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-extension-code-block-lowlight.esm.js","sources":["../src/lowlight-plugin.ts","../src/code-block-lowlight.ts"],"sourcesContent":["import { findChildren } from '@tiptap/core'\nimport { Node as ProsemirrorNode } from 'prosemirror-model'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\n\nfunction parseNodes(nodes: any[], className: string[] = []): { text: string, classes: string[] }[] {\n return nodes\n .map(node => {\n const classes = [\n ...className,\n ...node.properties\n ? node.properties.className\n : [],\n ]\n\n if (node.children) {\n return parseNodes(node.children, classes)\n }\n\n return {\n text: node.value,\n classes,\n }\n })\n .flat()\n}\n\nfunction getHighlightNodes(result: any) {\n // `.value` for lowlight v1, `.children` for lowlight v2\n return result.value || result.children || []\n}\n\nfunction getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n}: { doc: ProsemirrorNode, name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n const decorations: Decoration[] = []\n\n findChildren(doc, node => node.type.name === name)\n .forEach(block => {\n let from = block.pos + 1\n const language = block.node.attrs.language || defaultLanguage\n const languages = lowlight.listLanguages()\n const nodes = language && languages.includes(language)\n ? getHighlightNodes(lowlight.highlight(language, block.node.textContent))\n : getHighlightNodes(lowlight.highlightAuto(block.node.textContent))\n\n parseNodes(nodes).forEach(node => {\n const to = from + node.text.length\n\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(' '),\n })\n\n decorations.push(decoration)\n }\n\n from = to\n })\n })\n\n return DecorationSet.create(doc, decorations)\n}\n\nfunction isFunction(param: Function) {\n return typeof param === 'function'\n}\n\nexport function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {\n throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension')\n }\n\n
|
|
1
|
+
{"version":3,"file":"tiptap-extension-code-block-lowlight.esm.js","sources":["../src/lowlight-plugin.ts","../src/code-block-lowlight.ts"],"sourcesContent":["import { findChildren } from '@tiptap/core'\nimport { Node as ProsemirrorNode } from 'prosemirror-model'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\n\nfunction parseNodes(nodes: any[], className: string[] = []): { text: string, classes: string[] }[] {\n return nodes\n .map(node => {\n const classes = [\n ...className,\n ...node.properties\n ? node.properties.className\n : [],\n ]\n\n if (node.children) {\n return parseNodes(node.children, classes)\n }\n\n return {\n text: node.value,\n classes,\n }\n })\n .flat()\n}\n\nfunction getHighlightNodes(result: any) {\n // `.value` for lowlight v1, `.children` for lowlight v2\n return result.value || result.children || []\n}\n\nfunction getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n}: { doc: ProsemirrorNode, name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n const decorations: Decoration[] = []\n\n findChildren(doc, node => node.type.name === name)\n .forEach(block => {\n let from = block.pos + 1\n const language = block.node.attrs.language || defaultLanguage\n const languages = lowlight.listLanguages()\n const nodes = language && languages.includes(language)\n ? getHighlightNodes(lowlight.highlight(language, block.node.textContent))\n : getHighlightNodes(lowlight.highlightAuto(block.node.textContent))\n\n parseNodes(nodes).forEach(node => {\n const to = from + node.text.length\n\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(' '),\n })\n\n decorations.push(decoration)\n }\n\n from = to\n })\n })\n\n return DecorationSet.create(doc, decorations)\n}\n\nfunction isFunction(param: Function) {\n return typeof param === 'function'\n}\n\nexport function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {\n throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension')\n }\n\n const lowlightPlugin: Plugin<any> = new Plugin({\n key: new PluginKey('lowlight'),\n\n state: {\n init: (_, { doc }) => getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n }),\n apply: (transaction, decorationSet, oldState, newState) => {\n const oldNodeName = oldState.selection.$head.parent.type.name\n const newNodeName = newState.selection.$head.parent.type.name\n const oldNodes = findChildren(oldState.doc, node => node.type.name === name)\n const newNodes = findChildren(newState.doc, node => node.type.name === name)\n\n if (\n transaction.docChanged\n // Apply decorations if:\n && (\n // selection includes named node,\n [oldNodeName, newNodeName].includes(name)\n // OR transaction adds/removes named node,\n || newNodes.length !== oldNodes.length\n // OR transaction has changes that completely encapsulte a node\n // (for example, a transaction that affects the entire document).\n // Such transactions can happen during collab syncing via y-prosemirror, for example.\n || transaction.steps.some(step => {\n // @ts-ignore\n return step.from !== undefined\n // @ts-ignore\n && step.to !== undefined\n && oldNodes.some(node => {\n // @ts-ignore\n return node.pos >= step.from\n // @ts-ignore\n && node.pos + node.node.nodeSize <= step.to\n })\n })\n )\n ) {\n return getDecorations({\n doc: transaction.doc,\n name,\n lowlight,\n defaultLanguage,\n })\n }\n\n return decorationSet.map(transaction.mapping, transaction.doc)\n },\n },\n\n props: {\n decorations(state) {\n return lowlightPlugin.getState(state)\n },\n },\n })\n\n return lowlightPlugin\n}\n","import CodeBlock, { CodeBlockOptions } from '@tiptap/extension-code-block'\n\nimport { LowlightPlugin } from './lowlight-plugin'\n\nexport interface CodeBlockLowlightOptions extends CodeBlockOptions {\n lowlight: any,\n defaultLanguage: string | null | undefined,\n}\n\nexport const CodeBlockLowlight = CodeBlock.extend<CodeBlockLowlightOptions>({\n addOptions() {\n return {\n ...this.parent?.(),\n lowlight: {},\n defaultLanguage: null,\n }\n },\n\n addProseMirrorPlugins() {\n return [\n ...this.parent?.() || [],\n LowlightPlugin({\n name: this.name,\n lowlight: this.options.lowlight,\n defaultLanguage: this.options.defaultLanguage,\n }),\n ]\n },\n})\n"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {
|
|
62
62
|
throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension');
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
const lowlightPlugin = new prosemirrorState.Plugin({
|
|
65
65
|
key: new prosemirrorState.PluginKey('lowlight'),
|
|
66
66
|
state: {
|
|
67
67
|
init: (_, { doc }) => getDecorations({
|
|
@@ -109,10 +109,11 @@
|
|
|
109
109
|
},
|
|
110
110
|
props: {
|
|
111
111
|
decorations(state) {
|
|
112
|
-
return
|
|
112
|
+
return lowlightPlugin.getState(state);
|
|
113
113
|
},
|
|
114
114
|
},
|
|
115
115
|
});
|
|
116
|
+
return lowlightPlugin;
|
|
116
117
|
}
|
|
117
118
|
|
|
118
119
|
const CodeBlockLowlight = CodeBlock__default["default"].extend({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-extension-code-block-lowlight.umd.js","sources":["../src/lowlight-plugin.ts","../src/code-block-lowlight.ts"],"sourcesContent":["import { findChildren } from '@tiptap/core'\nimport { Node as ProsemirrorNode } from 'prosemirror-model'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\n\nfunction parseNodes(nodes: any[], className: string[] = []): { text: string, classes: string[] }[] {\n return nodes\n .map(node => {\n const classes = [\n ...className,\n ...node.properties\n ? node.properties.className\n : [],\n ]\n\n if (node.children) {\n return parseNodes(node.children, classes)\n }\n\n return {\n text: node.value,\n classes,\n }\n })\n .flat()\n}\n\nfunction getHighlightNodes(result: any) {\n // `.value` for lowlight v1, `.children` for lowlight v2\n return result.value || result.children || []\n}\n\nfunction getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n}: { doc: ProsemirrorNode, name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n const decorations: Decoration[] = []\n\n findChildren(doc, node => node.type.name === name)\n .forEach(block => {\n let from = block.pos + 1\n const language = block.node.attrs.language || defaultLanguage\n const languages = lowlight.listLanguages()\n const nodes = language && languages.includes(language)\n ? getHighlightNodes(lowlight.highlight(language, block.node.textContent))\n : getHighlightNodes(lowlight.highlightAuto(block.node.textContent))\n\n parseNodes(nodes).forEach(node => {\n const to = from + node.text.length\n\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(' '),\n })\n\n decorations.push(decoration)\n }\n\n from = to\n })\n })\n\n return DecorationSet.create(doc, decorations)\n}\n\nfunction isFunction(param: Function) {\n return typeof param === 'function'\n}\n\nexport function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {\n throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension')\n }\n\n
|
|
1
|
+
{"version":3,"file":"tiptap-extension-code-block-lowlight.umd.js","sources":["../src/lowlight-plugin.ts","../src/code-block-lowlight.ts"],"sourcesContent":["import { findChildren } from '@tiptap/core'\nimport { Node as ProsemirrorNode } from 'prosemirror-model'\nimport { Plugin, PluginKey } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\n\nfunction parseNodes(nodes: any[], className: string[] = []): { text: string, classes: string[] }[] {\n return nodes\n .map(node => {\n const classes = [\n ...className,\n ...node.properties\n ? node.properties.className\n : [],\n ]\n\n if (node.children) {\n return parseNodes(node.children, classes)\n }\n\n return {\n text: node.value,\n classes,\n }\n })\n .flat()\n}\n\nfunction getHighlightNodes(result: any) {\n // `.value` for lowlight v1, `.children` for lowlight v2\n return result.value || result.children || []\n}\n\nfunction getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n}: { doc: ProsemirrorNode, name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n const decorations: Decoration[] = []\n\n findChildren(doc, node => node.type.name === name)\n .forEach(block => {\n let from = block.pos + 1\n const language = block.node.attrs.language || defaultLanguage\n const languages = lowlight.listLanguages()\n const nodes = language && languages.includes(language)\n ? getHighlightNodes(lowlight.highlight(language, block.node.textContent))\n : getHighlightNodes(lowlight.highlightAuto(block.node.textContent))\n\n parseNodes(nodes).forEach(node => {\n const to = from + node.text.length\n\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(' '),\n })\n\n decorations.push(decoration)\n }\n\n from = to\n })\n })\n\n return DecorationSet.create(doc, decorations)\n}\n\nfunction isFunction(param: Function) {\n return typeof param === 'function'\n}\n\nexport function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: string, lowlight: any, defaultLanguage: string | null | undefined }) {\n if (!['highlight', 'highlightAuto', 'listLanguages'].every(api => isFunction(lowlight[api]))) {\n throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension')\n }\n\n const lowlightPlugin: Plugin<any> = new Plugin({\n key: new PluginKey('lowlight'),\n\n state: {\n init: (_, { doc }) => getDecorations({\n doc,\n name,\n lowlight,\n defaultLanguage,\n }),\n apply: (transaction, decorationSet, oldState, newState) => {\n const oldNodeName = oldState.selection.$head.parent.type.name\n const newNodeName = newState.selection.$head.parent.type.name\n const oldNodes = findChildren(oldState.doc, node => node.type.name === name)\n const newNodes = findChildren(newState.doc, node => node.type.name === name)\n\n if (\n transaction.docChanged\n // Apply decorations if:\n && (\n // selection includes named node,\n [oldNodeName, newNodeName].includes(name)\n // OR transaction adds/removes named node,\n || newNodes.length !== oldNodes.length\n // OR transaction has changes that completely encapsulte a node\n // (for example, a transaction that affects the entire document).\n // Such transactions can happen during collab syncing via y-prosemirror, for example.\n || transaction.steps.some(step => {\n // @ts-ignore\n return step.from !== undefined\n // @ts-ignore\n && step.to !== undefined\n && oldNodes.some(node => {\n // @ts-ignore\n return node.pos >= step.from\n // @ts-ignore\n && node.pos + node.node.nodeSize <= step.to\n })\n })\n )\n ) {\n return getDecorations({\n doc: transaction.doc,\n name,\n lowlight,\n defaultLanguage,\n })\n }\n\n return decorationSet.map(transaction.mapping, transaction.doc)\n },\n },\n\n props: {\n decorations(state) {\n return lowlightPlugin.getState(state)\n },\n },\n })\n\n return lowlightPlugin\n}\n","import CodeBlock, { CodeBlockOptions } from '@tiptap/extension-code-block'\n\nimport { LowlightPlugin } from './lowlight-plugin'\n\nexport interface CodeBlockLowlightOptions extends CodeBlockOptions {\n lowlight: any,\n defaultLanguage: string | null | undefined,\n}\n\nexport const CodeBlockLowlight = CodeBlock.extend<CodeBlockLowlightOptions>({\n addOptions() {\n return {\n ...this.parent?.(),\n lowlight: {},\n defaultLanguage: null,\n }\n },\n\n addProseMirrorPlugins() {\n return [\n ...this.parent?.() || [],\n LowlightPlugin({\n name: this.name,\n lowlight: this.options.lowlight,\n defaultLanguage: this.options.defaultLanguage,\n }),\n ]\n },\n})\n"],"names":["findChildren","Decoration","DecorationSet","Plugin","PluginKey","CodeBlock"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tiptap/extension-code-block-lowlight",
|
|
3
3
|
"description": "code block extension for tiptap",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
4
|
+
"version": "2.0.0-beta.72",
|
|
5
5
|
"homepage": "https://tiptap.dev",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"tiptap",
|
|
@@ -25,16 +25,17 @@
|
|
|
25
25
|
"lowlight": ">=1.20.0"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@tiptap/extension-code-block": "^2.0.0-beta.
|
|
28
|
+
"@tiptap/extension-code-block": "^2.0.0-beta.41",
|
|
29
29
|
"@types/lowlight": "^0.0.3",
|
|
30
|
-
"
|
|
31
|
-
"prosemirror-
|
|
32
|
-
"prosemirror-
|
|
30
|
+
"lowlight": "^1.20.0",
|
|
31
|
+
"prosemirror-model": "^1.17.0",
|
|
32
|
+
"prosemirror-state": "^1.4.0",
|
|
33
|
+
"prosemirror-view": "^1.25.0"
|
|
33
34
|
},
|
|
34
35
|
"repository": {
|
|
35
36
|
"type": "git",
|
|
36
37
|
"url": "https://github.com/ueberdosis/tiptap",
|
|
37
38
|
"directory": "packages/extension-code-block-lowlight"
|
|
38
39
|
},
|
|
39
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "a1e612bf897a14065b4f9ba6d48925c97d136811"
|
|
40
41
|
}
|
package/src/lowlight-plugin.ts
CHANGED
|
@@ -74,7 +74,7 @@ export function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: stri
|
|
|
74
74
|
throw Error('You should provide an instance of lowlight to use the code-block-lowlight extension')
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
const lowlightPlugin: Plugin<any> = new Plugin({
|
|
78
78
|
key: new PluginKey('lowlight'),
|
|
79
79
|
|
|
80
80
|
state: {
|
|
@@ -129,8 +129,10 @@ export function LowlightPlugin({ name, lowlight, defaultLanguage }: { name: stri
|
|
|
129
129
|
|
|
130
130
|
props: {
|
|
131
131
|
decorations(state) {
|
|
132
|
-
return
|
|
132
|
+
return lowlightPlugin.getState(state)
|
|
133
133
|
},
|
|
134
134
|
},
|
|
135
135
|
})
|
|
136
|
+
|
|
137
|
+
return lowlightPlugin
|
|
136
138
|
}
|