chore: upgrade lexical to 0.23.0

This commit is contained in:
Aman Harwara
2025-01-06 13:15:32 +05:30
parent 8bf9e144d9
commit c3c0e5c532
54 changed files with 288 additions and 331 deletions

View File

@@ -4,8 +4,6 @@ import { DOMExportOutput, ElementFormatType, NodeKey, Spread } from 'lexical'
type SerializedFileExportNode = Spread<
{
version: 1
type: 'file-export'
name: string
mimeType: string
},
@@ -31,7 +29,7 @@ export class FileExportNode extends DecoratorBlockNode {
}
static importJSON(serializedNode: SerializedFileExportNode): FileExportNode {
const node = new FileExportNode(serializedNode.name, serializedNode.mimeType)
const node = $createFileExportNode(serializedNode.name, serializedNode.mimeType).updateFromJSON(serializedNode)
return node
}
@@ -40,8 +38,6 @@ export class FileExportNode extends DecoratorBlockNode {
...super.exportJSON(),
name: this.__name,
mimeType: this.__mimeType,
version: 1,
type: 'file-export',
}
}

View File

@@ -114,8 +114,6 @@ function TweetComponent({
export type SerializedTweetNode = Spread<
{
id: string
type: 'tweet'
version: 1
},
SerializedDecoratorBlockNode
>
@@ -137,17 +135,13 @@ export class TweetNode extends DecoratorBlockNode {
}
static override importJSON(serializedNode: SerializedTweetNode): TweetNode {
const node = $createTweetNode(serializedNode.id)
node.setFormat(serializedNode.format)
return node
return $createTweetNode(serializedNode.id).updateFromJSON(serializedNode)
}
override exportJSON(): SerializedTweetNode {
return {
...super.exportJSON(),
id: this.getId(),
type: 'tweet',
version: 1,
}
}

View File

@@ -50,8 +50,6 @@ function YouTubeComponent({ className, format, nodeKey, videoID }: YouTubeCompon
export type SerializedYouTubeNode = Spread<
{
videoID: string
type: 'youtube'
version: 1
},
SerializedDecoratorBlockNode
>
@@ -82,16 +80,12 @@ export class YouTubeNode extends DecoratorBlockNode {
}
static importJSON(serializedNode: SerializedYouTubeNode): YouTubeNode {
const node = $createYouTubeNode(serializedNode.videoID)
node.setFormat(serializedNode.format)
return node
return $createYouTubeNode(serializedNode.videoID).updateFromJSON(serializedNode)
}
exportJSON(): SerializedYouTubeNode {
return {
...super.exportJSON(),
type: 'youtube',
version: 1,
videoID: this.__id,
}
}

View File

@@ -21,8 +21,6 @@ import {
type SerializedCollapsibleContainerNode = Spread<
{
type: 'collapsible-container'
version: 1
open: boolean
},
SerializedElementNode
@@ -85,8 +83,7 @@ export class CollapsibleContainerNode extends ElementNode {
}
static override importJSON(serializedNode: SerializedCollapsibleContainerNode): CollapsibleContainerNode {
const node = $createCollapsibleContainerNode(serializedNode.open)
return node
return $createCollapsibleContainerNode(serializedNode.open).updateFromJSON(serializedNode)
}
exportDOM(): DOMExportOutput {
@@ -100,8 +97,6 @@ export class CollapsibleContainerNode extends ElementNode {
override exportJSON(): SerializedCollapsibleContainerNode {
return {
...super.exportJSON(),
type: 'collapsible-container',
version: 1,
open: this.__open,
}
}

View File

@@ -65,8 +65,8 @@ export class CollapsibleContentNode extends ElementNode {
}
}
static override importJSON(_serializedNode: SerializedCollapsibleContentNode): CollapsibleContentNode {
return $createCollapsibleContentNode()
static override importJSON(serializedNode: SerializedCollapsibleContentNode): CollapsibleContentNode {
return $createCollapsibleContentNode().updateFromJSON(serializedNode)
}
override isShadowRoot(): boolean {

View File

@@ -12,10 +12,8 @@ import {
DOMConversionMap,
DOMConversionOutput,
DOMExportOutput,
ElementFormatType,
ElementNode,
LexicalNode,
NodeKey,
RangeSelection,
SerializedElementNode,
Spread,
@@ -44,15 +42,8 @@ export class CollapsibleTitleNode extends ElementNode {
return 'collapsible-title'
}
constructor({ formatType, key }: { formatType?: ElementFormatType; key?: NodeKey }) {
super(key)
if (formatType) {
super.setFormat(formatType)
}
}
static override clone(node: CollapsibleTitleNode): CollapsibleTitleNode {
return new CollapsibleTitleNode({ key: node.__key })
return new CollapsibleTitleNode(node.__key)
}
override createDOM(): HTMLElement {
@@ -79,7 +70,7 @@ export class CollapsibleTitleNode extends ElementNode {
}
static override importJSON(serializedNode: SerializedCollapsibleTitleNode): CollapsibleTitleNode {
return $createCollapsibleTitleNode(serializedNode.format)
return $createCollapsibleTitleNode().updateFromJSON(serializedNode)
}
exportDOM(): DOMExportOutput {
@@ -87,14 +78,6 @@ export class CollapsibleTitleNode extends ElementNode {
return { element }
}
override exportJSON(): SerializedCollapsibleTitleNode {
return {
...super.exportJSON(),
type: 'collapsible-title',
version: 1,
}
}
override collapseAtStart(_selection: RangeSelection): boolean {
this.getParentOrThrow().insertBefore(this)
return true
@@ -129,10 +112,8 @@ export class CollapsibleTitleNode extends ElementNode {
}
}
export function $createCollapsibleTitleNode(formatType?: ElementFormatType): CollapsibleTitleNode {
return new CollapsibleTitleNode({
formatType,
})
export function $createCollapsibleTitleNode(): CollapsibleTitleNode {
return new CollapsibleTitleNode()
}
export function $isCollapsibleTitleNode(node: LexicalNode | null | undefined): node is CollapsibleTitleNode {

View File

@@ -1,4 +1,12 @@
import { DOMConversionMap, DOMExportOutput, EditorConfig, ElementFormatType, LexicalEditor, NodeKey } from 'lexical'
import {
DOMConversionMap,
DOMExportOutput,
EditorConfig,
ElementFormatType,
LexicalEditor,
LexicalUpdateJSON,
NodeKey,
} from 'lexical'
import { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode'
import { $createFileNode, convertToFileElement } from './FileUtils'
import FileComponent from './FileComponent'
@@ -24,18 +32,17 @@ export class FileNode extends DecoratorBlockNode implements ItemNodeInterface {
}
static importJSON(serializedNode: SerializedFileNode): FileNode {
const node = $createFileNode(serializedNode.fileUuid)
node.setFormat(serializedNode.format)
node.setZoomLevel(serializedNode.zoomLevel)
return node
return $createFileNode(serializedNode.fileUuid).updateFromJSON(serializedNode)
}
updateFromJSON(serializedNode: LexicalUpdateJSON<SerializedFileNode>): this {
return super.updateFromJSON(serializedNode).setZoomLevel(serializedNode.zoomLevel)
}
exportJSON(): SerializedFileNode {
return {
...super.exportJSON(),
fileUuid: this.getId(),
version: 1,
type: 'snfile',
zoomLevel: this.__zoomLevel,
}
}
@@ -70,9 +77,10 @@ export class FileNode extends DecoratorBlockNode implements ItemNodeInterface {
return `[File: ${this.__id}]`
}
setZoomLevel(zoomLevel: number): void {
const writable = this.getWritable()
writable.__zoomLevel = zoomLevel
setZoomLevel(zoomLevel: number): this {
const self = this.getWritable()
self.__zoomLevel = zoomLevel
return self
}
decorate(_editor: LexicalEditor, config: EditorConfig): JSX.Element {

View File

@@ -4,8 +4,6 @@ import { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlo
export type SerializedFileNode = Spread<
{
fileUuid: string
version: 1
type: 'snfile'
zoomLevel: number
},
SerializedDecoratorBlockNode

View File

@@ -13,8 +13,6 @@ import InlineFileComponent from './InlineFileComponent'
type SerializedInlineFileNode = Spread<
{
version: 1
type: 'inline-file'
fileName: string | undefined
mimeType: string
src: string
@@ -43,7 +41,11 @@ export class InlineFileNode extends DecoratorBlockNode {
}
static importJSON(serializedNode: SerializedInlineFileNode): InlineFileNode {
const node = $createInlineFileNode(serializedNode.src, serializedNode.mimeType, serializedNode.fileName)
const node = $createInlineFileNode(
serializedNode.src,
serializedNode.mimeType,
serializedNode.fileName,
).updateFromJSON(serializedNode)
return node
}
@@ -53,8 +55,6 @@ export class InlineFileNode extends DecoratorBlockNode {
src: this.__src,
mimeType: this.__mimeType,
fileName: this.__fileName,
version: 1,
type: 'inline-file',
}
}

View File

@@ -16,15 +16,13 @@ export class BubbleNode extends DecoratorNode<JSX.Element> implements ItemNodeIn
}
static importJSON(serializedNode: SerializedBubbleNode): BubbleNode {
const node = $createBubbleNode(serializedNode.itemUuid)
return node
return $createBubbleNode(serializedNode.itemUuid).updateFromJSON(serializedNode)
}
override exportJSON(): SerializedBubbleNode {
return {
...super.exportJSON(),
itemUuid: this.getId(),
version: 1,
type: 'snbubble',
}
}

View File

@@ -3,8 +3,6 @@ import { Spread, SerializedLexicalNode } from 'lexical'
export type SerializedBubbleNode = Spread<
{
itemUuid: string
version: 1
type: 'snbubble'
},
SerializedLexicalNode
>

View File

@@ -13,8 +13,6 @@ import RemoteImageComponent from './RemoteImageComponent'
type SerializedRemoteImageNode = Spread<
{
version: 1
type: 'unencrypted-image'
alt: string | undefined
src: string
},
@@ -40,8 +38,7 @@ export class RemoteImageNode extends DecoratorBlockNode {
}
static importJSON(serializedNode: SerializedRemoteImageNode): RemoteImageNode {
const node = $createRemoteImageNode(serializedNode.src, serializedNode.alt)
return node
return $createRemoteImageNode(serializedNode.src, serializedNode.alt).updateFromJSON(serializedNode)
}
exportJSON(): SerializedRemoteImageNode {
@@ -49,8 +46,6 @@ export class RemoteImageNode extends DecoratorBlockNode {
...super.exportJSON(),
src: this.__src,
alt: this.__alt,
version: 1,
type: 'unencrypted-image',
}
}