chore: fix some enex imports [skip e2e]
This commit is contained in:
@@ -11,17 +11,25 @@ import {
|
|||||||
ParagraphNode,
|
ParagraphNode,
|
||||||
} from 'lexical'
|
} from 'lexical'
|
||||||
import BlocksEditorTheme from '../Lexical/Theme/Theme'
|
import BlocksEditorTheme from '../Lexical/Theme/Theme'
|
||||||
import { SuperExportNodes } from '../Lexical/Nodes/AllNodes'
|
import { BlockEditorNodes, SuperExportNodes } from '../Lexical/Nodes/AllNodes'
|
||||||
import { MarkdownTransformers } from '../MarkdownTransformers'
|
import { MarkdownTransformers } from '../MarkdownTransformers'
|
||||||
import { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html'
|
import { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html'
|
||||||
import { FileNode } from '../Plugins/EncryptedFilePlugin/Nodes/FileNode'
|
import { FileNode } from '../Plugins/EncryptedFilePlugin/Nodes/FileNode'
|
||||||
import { $createFileExportNode } from '../Lexical/Nodes/FileExportNode'
|
import { $createFileExportNode } from '../Lexical/Nodes/FileExportNode'
|
||||||
import { $createInlineFileNode } from '../Plugins/InlineFilePlugin/InlineFileNode'
|
import { $createInlineFileNode } from '../Plugins/InlineFilePlugin/InlineFileNode'
|
||||||
export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
||||||
private editor: LexicalEditor
|
private importEditor: LexicalEditor
|
||||||
|
private exportEditor: LexicalEditor
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.editor = createHeadlessEditor({
|
this.importEditor = createHeadlessEditor({
|
||||||
|
namespace: 'BlocksEditor',
|
||||||
|
theme: BlocksEditorTheme,
|
||||||
|
editable: false,
|
||||||
|
onError: (error: Error) => console.error(error),
|
||||||
|
nodes: BlockEditorNodes,
|
||||||
|
})
|
||||||
|
this.exportEditor = createHeadlessEditor({
|
||||||
namespace: 'BlocksEditor',
|
namespace: 'BlocksEditor',
|
||||||
theme: BlocksEditorTheme,
|
theme: BlocksEditorTheme,
|
||||||
editable: false,
|
editable: false,
|
||||||
@@ -32,7 +40,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
|
|
||||||
isValidSuperString(superString: string): boolean {
|
isValidSuperString(superString: string): boolean {
|
||||||
try {
|
try {
|
||||||
this.editor.parseEditorState(superString)
|
this.importEditor.parseEditorState(superString)
|
||||||
return true
|
return true
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return false
|
return false
|
||||||
@@ -61,12 +69,12 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
throw new Error('getFileItem and getFileBase64 must be provided when embedBehavior is "inline"')
|
throw new Error('getFileItem and getFileBase64 must be provided when embedBehavior is "inline"')
|
||||||
}
|
}
|
||||||
|
|
||||||
this.editor.setEditorState(this.editor.parseEditorState(superString))
|
this.exportEditor.setEditorState(this.exportEditor.parseEditorState(superString))
|
||||||
|
|
||||||
let content: string | undefined
|
let content: string | undefined
|
||||||
|
|
||||||
await new Promise<void>((resolve) => {
|
await new Promise<void>((resolve) => {
|
||||||
this.editor.update(
|
this.exportEditor.update(
|
||||||
() => {
|
() => {
|
||||||
if (embedBehavior === 'reference') {
|
if (embedBehavior === 'reference') {
|
||||||
resolve()
|
resolve()
|
||||||
@@ -88,7 +96,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
if (!fileBase64) {
|
if (!fileBase64) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.editor.update(
|
this.exportEditor.update(
|
||||||
() => {
|
() => {
|
||||||
const inlineFileNode = $createInlineFileNode(fileBase64, fileItem.mimeType, fileItem.name)
|
const inlineFileNode = $createInlineFileNode(fileBase64, fileItem.mimeType, fileItem.name)
|
||||||
fileNode.replace(inlineFileNode)
|
fileNode.replace(inlineFileNode)
|
||||||
@@ -96,7 +104,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
{ discrete: true },
|
{ discrete: true },
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
this.editor.update(
|
this.exportEditor.update(
|
||||||
() => {
|
() => {
|
||||||
const fileExportNode = $createFileExportNode(fileItem.name, fileItem.mimeType)
|
const fileExportNode = $createFileExportNode(fileItem.name, fileItem.mimeType)
|
||||||
fileNode.replace(fileExportNode)
|
fileNode.replace(fileExportNode)
|
||||||
@@ -113,7 +121,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
this.editor.update(
|
this.exportEditor.update(
|
||||||
() => {
|
() => {
|
||||||
switch (toFormat) {
|
switch (toFormat) {
|
||||||
case 'txt':
|
case 'txt':
|
||||||
@@ -128,7 +136,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'html':
|
case 'html':
|
||||||
content = $generateHtmlFromNodes(this.editor)
|
content = $generateHtmlFromNodes(this.exportEditor)
|
||||||
break
|
break
|
||||||
case 'json':
|
case 'json':
|
||||||
default:
|
default:
|
||||||
@@ -155,7 +163,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
return otherFormatString
|
return otherFormatString
|
||||||
}
|
}
|
||||||
|
|
||||||
this.editor.update(
|
this.importEditor.update(
|
||||||
() => {
|
() => {
|
||||||
$getRoot().clear()
|
$getRoot().clear()
|
||||||
},
|
},
|
||||||
@@ -166,12 +174,12 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
|
|
||||||
let didThrow = false
|
let didThrow = false
|
||||||
if (fromFormat === 'html') {
|
if (fromFormat === 'html') {
|
||||||
this.editor.update(
|
this.importEditor.update(
|
||||||
() => {
|
() => {
|
||||||
try {
|
try {
|
||||||
const parser = new DOMParser()
|
const parser = new DOMParser()
|
||||||
const dom = parser.parseFromString(otherFormatString, 'text/html')
|
const dom = parser.parseFromString(otherFormatString, 'text/html')
|
||||||
const generatedNodes = $generateNodesFromDOM(this.editor, dom)
|
const generatedNodes = $generateNodesFromDOM(this.importEditor, dom)
|
||||||
const nodesToInsert: LexicalNode[] = []
|
const nodesToInsert: LexicalNode[] = []
|
||||||
generatedNodes.forEach((node) => {
|
generatedNodes.forEach((node) => {
|
||||||
const type = node.getType()
|
const type = node.getType()
|
||||||
@@ -181,9 +189,9 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
if (
|
if (
|
||||||
type === 'text' ||
|
type === 'text' ||
|
||||||
type === 'link' ||
|
type === 'link' ||
|
||||||
|
type === 'linebreak' ||
|
||||||
type === 'unencrypted-image' ||
|
type === 'unencrypted-image' ||
|
||||||
type === 'inline-file' ||
|
type === 'inline-file'
|
||||||
node.isParentRequired()
|
|
||||||
) {
|
) {
|
||||||
const paragraphNode = $createParagraphNode()
|
const paragraphNode = $createParagraphNode()
|
||||||
paragraphNode.append(node)
|
paragraphNode.append(node)
|
||||||
@@ -205,7 +213,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
{ discrete: true },
|
{ discrete: true },
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
this.editor.update(
|
this.importEditor.update(
|
||||||
() => {
|
() => {
|
||||||
try {
|
try {
|
||||||
$convertFromMarkdownString(otherFormatString, MarkdownTransformers)
|
$convertFromMarkdownString(otherFormatString, MarkdownTransformers)
|
||||||
@@ -224,7 +232,7 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
throw new Error('Could not import note')
|
throw new Error('Could not import note')
|
||||||
}
|
}
|
||||||
|
|
||||||
return JSON.stringify(this.editor.getEditorState())
|
return JSON.stringify(this.importEditor.getEditorState())
|
||||||
}
|
}
|
||||||
|
|
||||||
getEmbeddedFileIDsFromSuperString(superString: string): string[] {
|
getEmbeddedFileIDsFromSuperString(superString: string): string[] {
|
||||||
@@ -232,11 +240,11 @@ export class HeadlessSuperConverter implements SuperConverterServiceInterface {
|
|||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
this.editor.setEditorState(this.editor.parseEditorState(superString))
|
this.exportEditor.setEditorState(this.exportEditor.parseEditorState(superString))
|
||||||
|
|
||||||
const ids: string[] = []
|
const ids: string[] = []
|
||||||
|
|
||||||
this.editor.getEditorState().read(() => {
|
this.exportEditor.getEditorState().read(() => {
|
||||||
const fileNodes = $nodesOfType(FileNode)
|
const fileNodes = $nodesOfType(FileNode)
|
||||||
fileNodes.forEach((fileNode) => {
|
fileNodes.forEach((fileNode) => {
|
||||||
ids.push(fileNode.getId())
|
ids.push(fileNode.getId())
|
||||||
|
|||||||
Reference in New Issue
Block a user