@liveblocks/node-lexical 3.14.0-types1 → 3.14.0

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/README.md CHANGED
@@ -14,4 +14,4 @@
14
14
  Licensed under the Apache License 2.0, Copyright © 2021-present
15
15
  [Liveblocks](https://liveblocks.io).
16
16
 
17
- See [LICENSE](../../LICENSE) for more information.
17
+ See [LICENSE](../../licenses/LICENSE-APACHE-2.0) for more information.
package/dist/index.cjs CHANGED
@@ -245,7 +245,7 @@ var ThreadMarkNode = class _ThreadMarkNode extends _lexical.ElementNode {
245
245
 
246
246
  // src/version.ts
247
247
  var PKG_NAME = "@liveblocks/node-lexical";
248
- var PKG_VERSION = "3.14.0-types1";
248
+ var PKG_VERSION = "3.14.0";
249
249
  var PKG_FORMAT = "cjs";
250
250
 
251
251
  // src/index.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-node-lexical/dist/index.cjs","../src/index.ts","../src/collab.ts","../src/GroupMentionNodeLite.ts","../src/MentionNodeLite.ts","../src/ThreadNodeLite.ts","../src/version.ts"],"names":["DecoratorNode","$applyNodeReplacement","MENTION_CHARACTER","createHeadlessEditor","Doc","createBinding"],"mappings":"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","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-node-lexical/dist/index.cjs","sourcesContent":[null,"import { createHeadlessEditor } from \"@lexical/headless\";\nimport { $convertToMarkdownString, TRANSFORMERS } from \"@lexical/markdown\";\nimport { createBinding } from \"@lexical/yjs\";\nimport { detectDupes } from \"@liveblocks/core\";\nimport type { Liveblocks } from \"@liveblocks/node\";\nimport type {\n EditorState,\n Klass,\n LexicalEditor,\n LexicalNode,\n LexicalNodeReplacement,\n SerializedEditorState,\n SerializedLexicalNode,\n} from \"lexical\";\nimport { $getRoot } from \"lexical\";\nimport { applyUpdate, Doc, encodeStateAsUpdate, encodeStateVector } from \"yjs\";\n\nimport { createNoOpProvider, registerCollaborationListeners } from \"./collab\";\nimport { GroupMentionNode } from \"./GroupMentionNodeLite\";\nimport { MentionNode } from \"./MentionNodeLite\";\nimport { ThreadMarkNode } from \"./ThreadNodeLite\";\nimport { PKG_FORMAT, PKG_NAME, PKG_VERSION } from \"./version\";\n\ndetectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);\n\nconst LIVEBLOCKS_NODES = [ThreadMarkNode, MentionNode, GroupMentionNode];\n\nexport { $createParagraphNode, $createTextNode, $getRoot } from \"lexical\";\n\nexport type LiveblocksLexicalOptions = {\n roomId: string;\n nodes?: ReadonlyArray<Klass<LexicalNode> | LexicalNodeReplacement>;\n client: Liveblocks;\n};\n\nexport type LiveblocksDocumentApi = {\n refresh: () => Promise<void>;\n update: (modifyFn: () => void) => Promise<void>;\n getTextContent: () => string;\n getEditorState: () => EditorState;\n getLexicalEditor: () => LexicalEditor;\n toJSON: () => SerializedEditorState<SerializedLexicalNode>;\n toMarkdown: () => string;\n};\n\n/**\n *\n * `withLexicalDocument` is the main entry point to access and modify Lexical documents on your backend.\n * This function internally instantiates a Lexical headless editor and allows you to modify and export its values asynchronously\n * with a simplified interface.\n *\n * @param options Specify the roomId, client, and nodes.\n * @param callback The call back function is optionally async and receives the document API as its only argument.\n *\n * @example\n *\n * import { Liveblocks } from \"@liveblocks/node\";\n * import { withLexicalDocument } from \"@liveblocks/node-lexical\";\n *\n * const client = new Liveblocks({secret: \"sk_your_secret_key\"});\n * const text = await withLexicalDocument(\n * { client, roomId: \"your-room\" },\n * async (doc) => {\n * await doc.update(() => {\n * const root = $getRoot();\n * const paragraphNode = $createParagraphNode();\n * const textNode = $createTextNode(\"Hello from node\");\n * paragraphNode.append(textNode);\n * root.append(paragraphNode);\n * });\n * return doc.getTextContent();\n * }\n * );\n *\n */\nexport async function withLexicalDocument<T>(\n { roomId, nodes, client }: LiveblocksLexicalOptions,\n callback: (api: LiveblocksDocumentApi) => Promise<T> | T\n): Promise<T> {\n const update = new Uint8Array(\n await client.getYjsDocumentAsBinaryUpdate(roomId)\n );\n const editor = createHeadlessEditor({\n nodes: [...LIVEBLOCKS_NODES, ...(nodes ?? [])],\n });\n const id = \"root\";\n const doc = new Doc();\n const docMap = new Map([[id, doc]]);\n const provider = createNoOpProvider();\n const binding = createBinding(editor, provider, id, doc, docMap);\n const unsubscribe = registerCollaborationListeners(editor, provider, binding);\n applyUpdate(binding.doc, update);\n editor.update(() => {}, { discrete: true });\n\n const val = await callback({\n /**\n * Fetches and resyncs the latest document with Liveblocks\n */\n refresh: async () => {\n const latest = new Uint8Array(\n await client.getYjsDocumentAsBinaryUpdate(roomId)\n );\n applyUpdate(binding.doc, latest);\n editor.update(() => {}, { discrete: true });\n },\n /**\n * Provide a callback to modify documetns with Lexical's standard api. All calls are discrete.\n */\n update: async (modifyFn) => {\n // Flush any pending updates (there really shouldn't be any?), this may be a NOOP\n editor.update(() => {}, { discrete: true });\n const beforeVector = encodeStateVector(binding.doc);\n editor.update(\n () => {\n modifyFn();\n },\n { discrete: true }\n );\n // grab update after diffing\n const diffUpdate = encodeStateAsUpdate(binding.doc, beforeVector);\n return client.sendYjsBinaryUpdate(roomId, diffUpdate);\n },\n /**\n * Helper function to easily provide the text content from the root, i.e. `$getRoot().getTextContent()`\n */\n getTextContent: () => {\n let content = \"\";\n editor.getEditorState().read(() => {\n content = $getRoot().getTextContent();\n });\n return content;\n },\n /**\n * Helper function to return editorState in JSON form\n */\n toJSON: () => {\n return editor.getEditorState().toJSON();\n },\n /**\n * Helper function to return editor state as Markdown\n */\n toMarkdown: () => {\n let markdown: string = \"\";\n editor.getEditorState().read(() => {\n markdown = $convertToMarkdownString(TRANSFORMERS);\n });\n return markdown;\n },\n /**\n * Helper function to return the editor's current state\n */\n getEditorState: () => {\n return editor.getEditorState();\n },\n /**\n * Helper function to return the current headless editor instance\n */\n getLexicalEditor: () => {\n return editor;\n },\n });\n unsubscribe();\n\n return val;\n}\n","import { createHeadlessEditor } from \"@lexical/headless\";\nimport type { Binding, Provider } from \"@lexical/yjs\";\nimport {\n createBinding,\n syncLexicalUpdateToYjs,\n syncYjsChangesToLexical,\n} from \"@lexical/yjs\";\nimport type {\n Klass,\n LexicalEditor,\n LexicalNode,\n LexicalNodeReplacement,\n} from \"lexical\";\nimport type { Transaction, YEvent } from \"yjs\";\nimport { Doc } from \"yjs\";\n\nexport function withHeadlessCollaborationEditor<T>(\n nodes: ReadonlyArray<Klass<LexicalNode> | LexicalNodeReplacement>,\n callback: (editor: LexicalEditor, binding: Binding, provider: Provider) => T\n): T {\n const editor = createHeadlessEditor({\n nodes,\n });\n\n const id = \"root\";\n const doc = new Doc();\n const docMap = new Map([[id, doc]]);\n const provider = createNoOpProvider();\n const binding = createBinding(editor, provider, id, doc, docMap);\n\n const unsubscribe = registerCollaborationListeners(editor, provider, binding);\n\n const res = callback(editor, binding, provider);\n\n unsubscribe();\n\n return res;\n}\n\nexport function registerCollaborationListeners(\n editor: LexicalEditor,\n provider: Provider,\n binding: Binding\n): () => void {\n const unsubscribeUpdateListener = editor.registerUpdateListener(\n ({\n dirtyElements,\n dirtyLeaves,\n editorState,\n normalizedNodes,\n prevEditorState,\n tags,\n }) => {\n if (tags.has(\"skip-collab\") === false) {\n syncLexicalUpdateToYjs(\n binding,\n provider,\n prevEditorState,\n editorState,\n dirtyElements,\n dirtyLeaves,\n normalizedNodes,\n tags\n );\n }\n }\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const observer = (events: Array<YEvent<any>>, transaction: Transaction) => {\n if (transaction.origin !== binding) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n syncYjsChangesToLexical(binding, provider, events, false);\n }\n };\n\n binding.root.getSharedType().observeDeep(observer);\n\n return () => {\n unsubscribeUpdateListener();\n binding.root.getSharedType().unobserveDeep(observer);\n };\n}\n\nexport function createNoOpProvider(): Provider {\n const emptyFunction = () => {};\n\n return {\n awareness: {\n getLocalState: () => null,\n setLocalStateField: emptyFunction,\n getStates: () => new Map(),\n off: emptyFunction,\n on: emptyFunction,\n setLocalState: emptyFunction,\n },\n connect: emptyFunction,\n disconnect: emptyFunction,\n off: emptyFunction,\n on: emptyFunction,\n };\n}\n","import { MENTION_CHARACTER } from \"@liveblocks/core\";\nimport type { NodeKey, SerializedLexicalNode, Spread } from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode } from \"lexical\";\n\nexport type SerializedGroupMentionNode = Spread<\n {\n id: string;\n groupId: string;\n userIds: string[] | undefined;\n },\n SerializedLexicalNode\n>;\n\nexport class GroupMentionNode extends DecoratorNode<null> {\n __id: string;\n __groupId: string;\n __userIds: string[] | undefined;\n\n constructor(\n id: string,\n groupId: string,\n userIds: string[] | undefined,\n key?: NodeKey\n ) {\n super(key);\n this.__id = id;\n this.__groupId = groupId;\n this.__userIds = userIds;\n }\n\n static getType(): string {\n return \"lb-group-mention\";\n }\n\n static clone(node: GroupMentionNode): GroupMentionNode {\n return new GroupMentionNode(node.__id, node.__groupId, node.__userIds);\n }\n\n static importJSON(\n serializedNode: SerializedGroupMentionNode\n ): GroupMentionNode {\n const node = new GroupMentionNode(\n serializedNode.id,\n serializedNode.groupId,\n serializedNode.userIds\n );\n return $applyNodeReplacement(node);\n }\n\n exportJSON(): SerializedGroupMentionNode {\n return {\n id: this.getId(),\n groupId: this.getGroupId(),\n userIds: this.getUserIds(),\n type: \"lb-group-mention\",\n version: 1,\n };\n }\n\n getId(): string {\n const self = this.getLatest();\n return self.__id;\n }\n\n getGroupId(): string {\n const self = this.getLatest();\n return self.__groupId;\n }\n\n getUserIds(): string[] | undefined {\n const self = this.getLatest();\n return self.__userIds;\n }\n\n getTextContent(): string {\n const groupId = this.getGroupId();\n\n return MENTION_CHARACTER + groupId;\n }\n\n decorate(): null {\n return null;\n }\n}\n","import { MENTION_CHARACTER } from \"@liveblocks/core\";\nimport type { NodeKey, SerializedLexicalNode, Spread } from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode } from \"lexical\";\n\ntype LegacySerializedMentionNode = Spread<\n {\n // Legacy field now named `id`\n value: string;\n // Not present in legacy nodes\n userId: never;\n },\n SerializedLexicalNode\n>;\n\nexport type SerializedMentionNode = Spread<\n {\n id: string;\n userId: string | undefined;\n },\n SerializedLexicalNode\n>;\n\nexport class MentionNode extends DecoratorNode<null> {\n __id: string;\n __userId: string | undefined;\n\n constructor(id: string, userId: string | undefined, key?: NodeKey) {\n super(key);\n this.__id = id;\n this.__userId = userId;\n }\n\n static getType(): string {\n return \"lb-mention\";\n }\n\n static clone(node: MentionNode): MentionNode {\n return new MentionNode(node.__id, node.__userId);\n }\n\n static importJSON(\n serializedNode: SerializedMentionNode | LegacySerializedMentionNode\n ): MentionNode {\n const node = new MentionNode(\n (serializedNode as LegacySerializedMentionNode).value ??\n (serializedNode as SerializedMentionNode).id,\n (serializedNode as SerializedMentionNode).userId\n );\n return $applyNodeReplacement(node);\n }\n\n exportJSON(): SerializedMentionNode {\n return {\n id: this.getId(),\n userId: this.getUserId(),\n type: \"lb-mention\",\n version: 1,\n };\n }\n\n getId(): string {\n const self = this.getLatest();\n return self.__id;\n }\n\n getUserId(): string | undefined {\n const self = this.getLatest();\n return self.__userId;\n }\n\n getTextContent(): string {\n const userId = this.getUserId();\n\n if (userId) {\n return MENTION_CHARACTER + userId;\n }\n\n // Legacy behavior: return the ID as text content\n // Since the ID is an inbox notification ID (\"in_xxx\") and not a user ID, this isn't ideal\n return this.getId();\n }\n\n decorate(): null {\n return null;\n }\n}\n","import type {\n BaseSelection,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, $isRangeSelection, ElementNode } from \"lexical\";\n\nexport type SerializedThreadMarkNode = Spread<\n {\n ids: Array<string>;\n },\n SerializedElementNode\n>;\n\nexport class ThreadMarkNode extends ElementNode {\n /** @internal */\n __ids: Array<string>; // The ids of the threads that this mark is associated with\n\n static getType(): string {\n return \"lb-thread-mark\";\n }\n\n static clone(node: ThreadMarkNode): ThreadMarkNode {\n return new ThreadMarkNode(Array.from(node.__ids), node.__key);\n }\n\n static importJSON(serializedNode: SerializedThreadMarkNode): ThreadMarkNode {\n const node = $applyNodeReplacement<ThreadMarkNode>(\n new ThreadMarkNode(serializedNode.ids)\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n exportJSON(): SerializedThreadMarkNode {\n return {\n ...super.exportJSON(),\n ids: this.getIDs(),\n type: \"lb-thread-mark\",\n version: 1,\n };\n }\n\n getIDs(): Array<string> {\n const self = this.getLatest();\n return self instanceof ThreadMarkNode ? self.__ids : [];\n }\n\n constructor(ids: Array<string>, key?: NodeKey) {\n super(key);\n this.__ids = ids || [];\n }\n\n canInsertTextBefore(): false {\n return false;\n }\n\n canInsertTextAfter(): false {\n return false;\n }\n\n canBeEmpty(): false {\n return false;\n }\n\n isInline(): true {\n return true;\n }\n\n extractWithChild(\n _: LexicalNode,\n selection: BaseSelection,\n destination: \"clone\" | \"html\"\n ): boolean {\n if (!$isRangeSelection(selection) || destination === \"html\") {\n return false;\n }\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n const isBackward = selection.isBackward();\n const selectionLength = isBackward\n ? anchor.offset - focus.offset\n : focus.offset - anchor.offset;\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n this.getTextContent().length === selectionLength\n );\n }\n\n excludeFromCopy(destination: \"clone\" | \"html\"): boolean {\n return destination !== \"clone\";\n }\n}\n","declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/node-lexical\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-node-lexical/dist/index.cjs","../src/index.ts","../src/collab.ts","../src/GroupMentionNodeLite.ts","../src/MentionNodeLite.ts","../src/ThreadNodeLite.ts","../src/version.ts"],"names":["DecoratorNode","$applyNodeReplacement","MENTION_CHARACTER","createHeadlessEditor","Doc","createBinding"],"mappings":"AAAA;ACAA,6CAAqC;AACrC,6CAAuD;AACvD,mCAA8B;AAC9B,wCAA4B;AAW5B,kCAAyB;AACzB,2BAAyE;ADRzE;AACA;AERA;AAEA;AACE;AACA;AACA;AAAA;AASF;AAyBO,SAAS,8BAAA,CACd,MAAA,EACA,QAAA,EACA,OAAA,EACY;AACZ,EAAA,MAAM,0BAAA,EAA4B,MAAA,CAAO,sBAAA;AAAA,IACvC,CAAC;AAAA,MACC,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,IACF,CAAA,EAAA,GAAM;AACJ,MAAA,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,aAAa,EAAA,IAAM,KAAA,EAAO;AACrC,QAAA,yCAAA;AAAA,UACE,OAAA;AAAA,UACA,QAAA;AAAA,UACA,eAAA;AAAA,UACA,WAAA;AAAA,UACA,aAAA;AAAA,UACA,WAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA,QACF,CAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,SAAA,EAAW,CAAC,MAAA,EAA4B,WAAA,EAAA,GAA6B;AACzE,IAAA,GAAA,CAAI,WAAA,CAAY,OAAA,IAAW,OAAA,EAAS;AAElC,MAAA,0CAAA,OAAwB,EAAS,QAAA,EAAU,MAAA,EAAQ,KAAK,CAAA;AAAA,IAC1D;AAAA,EACF,CAAA;AAEA,EAAA,OAAA,CAAQ,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,WAAA,CAAY,QAAQ,CAAA;AAEjD,EAAA,OAAO,CAAA,EAAA,GAAM;AACX,IAAA,yBAAA,CAA0B,CAAA;AAC1B,IAAA,OAAA,CAAQ,IAAA,CAAK,aAAA,CAAc,CAAA,CAAE,aAAA,CAAc,QAAQ,CAAA;AAAA,EACrD,CAAA;AACF;AAEO,SAAS,kBAAA,CAAA,EAA+B;AAC7C,EAAA,MAAM,cAAA,EAAgB,CAAA,EAAA,GAAM;AAAA,EAAC,CAAA;AAE7B,EAAA,OAAO;AAAA,IACL,SAAA,EAAW;AAAA,MACT,aAAA,EAAe,CAAA,EAAA,GAAM,IAAA;AAAA,MACrB,kBAAA,EAAoB,aAAA;AAAA,MACpB,SAAA,EAAW,CAAA,EAAA,mBAAM,IAAI,GAAA,CAAI,CAAA;AAAA,MACzB,GAAA,EAAK,aAAA;AAAA,MACL,EAAA,EAAI,aAAA;AAAA,MACJ,aAAA,EAAe;AAAA,IACjB,CAAA;AAAA,IACA,OAAA,EAAS,aAAA;AAAA,IACT,UAAA,EAAY,aAAA;AAAA,IACZ,GAAA,EAAK,aAAA;AAAA,IACL,EAAA,EAAI;AAAA,EACN,CAAA;AACF;AFhCA;AACA;AGtEA;AAEA;AAWO,IAAM,iBAAA,EAAN,MAAM,kBAAA,QAAyB,uBAAoB;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EAEA,WAAA,CACE,EAAA,EACA,OAAA,EACA,OAAA,EACA,GAAA,EACA;AACA,IAAA,KAAA,CAAM,GAAG,CAAA;AACT,IAAA,IAAA,CAAK,KAAA,EAAO,EAAA;AACZ,IAAA,IAAA,CAAK,UAAA,EAAY,OAAA;AACjB,IAAA,IAAA,CAAK,UAAA,EAAY,OAAA;AAAA,EACnB;AAAA,EAEA,OAAO,OAAA,CAAA,EAAkB;AACvB,IAAA,OAAO,kBAAA;AAAA,EACT;AAAA,EAEA,OAAO,KAAA,CAAM,IAAA,EAA0C;AACrD,IAAA,OAAO,IAAI,iBAAA,CAAiB,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,SAAS,CAAA;AAAA,EACvE;AAAA,EAEA,OAAO,UAAA,CACL,cAAA,EACkB;AAClB,IAAA,MAAM,KAAA,EAAO,IAAI,iBAAA;AAAA,MACf,cAAA,CAAe,EAAA;AAAA,MACf,cAAA,CAAe,OAAA;AAAA,MACf,cAAA,CAAe;AAAA,IACjB,CAAA;AACA,IAAA,OAAO,4CAAA,IAA0B,CAAA;AAAA,EACnC;AAAA,EAEA,UAAA,CAAA,EAAyC;AACvC,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,IAAA,CAAK,KAAA,CAAM,CAAA;AAAA,MACf,OAAA,EAAS,IAAA,CAAK,UAAA,CAAW,CAAA;AAAA,MACzB,OAAA,EAAS,IAAA,CAAK,UAAA,CAAW,CAAA;AAAA,MACzB,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS;AAAA,IACX,CAAA;AAAA,EACF;AAAA,EAEA,KAAA,CAAA,EAAgB;AACd,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,CAAA;AAC5B,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AAAA,EAEA,UAAA,CAAA,EAAqB;AACnB,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,CAAA;AAC5B,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA,EAEA,UAAA,CAAA,EAAmC;AACjC,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,CAAA;AAC5B,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA,EAEA,cAAA,CAAA,EAAyB;AACvB,IAAA,MAAM,QAAA,EAAU,IAAA,CAAK,UAAA,CAAW,CAAA;AAEhC,IAAA,OAAO,wBAAA,EAAoB,OAAA;AAAA,EAC7B;AAAA,EAEA,QAAA,CAAA,EAAiB;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;AH2CA;AACA;AI/HA;AAEA;AAoBO,IAAM,YAAA,EAAN,MAAM,aAAA,QAAoBA,uBAAoB;AAAA,EACnD;AAAA,EACA;AAAA,EAEA,WAAA,CAAY,EAAA,EAAY,MAAA,EAA4B,GAAA,EAAe;AACjE,IAAA,KAAA,CAAM,GAAG,CAAA;AACT,IAAA,IAAA,CAAK,KAAA,EAAO,EAAA;AACZ,IAAA,IAAA,CAAK,SAAA,EAAW,MAAA;AAAA,EAClB;AAAA,EAEA,OAAO,OAAA,CAAA,EAAkB;AACvB,IAAA,OAAO,YAAA;AAAA,EACT;AAAA,EAEA,OAAO,KAAA,CAAM,IAAA,EAAgC;AAC3C,IAAA,OAAO,IAAI,YAAA,CAAY,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,QAAQ,CAAA;AAAA,EACjD;AAAA,EAEA,OAAO,UAAA,CACL,cAAA,EACa;AACb,IAAA,MAAM,KAAA,EAAO,IAAI,YAAA;AAAA,uBACd,cAAA,CAA+C,KAAA,UAC7C,cAAA,CAAyC,IAAA;AAAA,MAC3C,cAAA,CAAyC;AAAA,IAC5C,CAAA;AACA,IAAA,OAAOC,4CAAAA,IAA0B,CAAA;AAAA,EACnC;AAAA,EAEA,UAAA,CAAA,EAAoC;AAClC,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,IAAA,CAAK,KAAA,CAAM,CAAA;AAAA,MACf,MAAA,EAAQ,IAAA,CAAK,SAAA,CAAU,CAAA;AAAA,MACvB,IAAA,EAAM,YAAA;AAAA,MACN,OAAA,EAAS;AAAA,IACX,CAAA;AAAA,EACF;AAAA,EAEA,KAAA,CAAA,EAAgB;AACd,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,CAAA;AAC5B,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd;AAAA,EAEA,SAAA,CAAA,EAAgC;AAC9B,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,CAAA;AAC5B,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA,EAEA,cAAA,CAAA,EAAyB;AACvB,IAAA,MAAM,OAAA,EAAS,IAAA,CAAK,SAAA,CAAU,CAAA;AAE9B,IAAA,GAAA,CAAI,MAAA,EAAQ;AACV,MAAA,OAAOC,wBAAAA,EAAoB,MAAA;AAAA,IAC7B;AAIA,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA;AAAA,EACpB;AAAA,EAEA,QAAA,CAAA,EAAiB;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;AJ6FA;AACA;AK5KA;AASO,IAAM,eAAA,EAAN,MAAM,gBAAA,QAAuB,qBAAY;AAAA;AAAA,EAE9C;AAAA;AAAA,EAEA,OAAO,OAAA,CAAA,EAAkB;AACvB,IAAA,OAAO,gBAAA;AAAA,EACT;AAAA,EAEA,OAAO,KAAA,CAAM,IAAA,EAAsC;AACjD,IAAA,OAAO,IAAI,eAAA,CAAe,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA;AAAA,EAC9D;AAAA,EAEA,OAAO,UAAA,CAAW,cAAA,EAA0D;AAC1E,IAAA,MAAM,KAAA,EAAOD,4CAAAA;AAAA,MACX,IAAI,eAAA,CAAe,cAAA,CAAe,GAAG;AAAA,IACvC,CAAA;AACA,IAAA,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,MAAM,CAAA;AACpC,IAAA,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,MAAM,CAAA;AACpC,IAAA,IAAA,CAAK,YAAA,CAAa,cAAA,CAAe,SAAS,CAAA;AAC1C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,UAAA,CAAA,EAAuC;AACrC,IAAA,OAAO;AAAA,MACL,GAAG,KAAA,CAAM,UAAA,CAAW,CAAA;AAAA,MACpB,GAAA,EAAK,IAAA,CAAK,MAAA,CAAO,CAAA;AAAA,MACjB,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS;AAAA,IACX,CAAA;AAAA,EACF;AAAA,EAEA,MAAA,CAAA,EAAwB;AACtB,IAAA,MAAM,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,CAAA;AAC5B,IAAA,OAAO,KAAA,WAAgB,gBAAA,EAAiB,IAAA,CAAK,MAAA,EAAQ,CAAC,CAAA;AAAA,EACxD;AAAA,EAEA,WAAA,CAAY,GAAA,EAAoB,GAAA,EAAe;AAC7C,IAAA,KAAA,CAAM,GAAG,CAAA;AACT,IAAA,IAAA,CAAK,MAAA,EAAQ,IAAA,GAAO,CAAC,CAAA;AAAA,EACvB;AAAA,EAEA,mBAAA,CAAA,EAA6B;AAC3B,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,kBAAA,CAAA,EAA4B;AAC1B,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,UAAA,CAAA,EAAoB;AAClB,IAAA,OAAO,KAAA;AAAA,EACT;AAAA,EAEA,QAAA,CAAA,EAAiB;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,gBAAA,CACE,CAAA,EACA,SAAA,EACA,WAAA,EACS;AACT,IAAA,GAAA,CAAI,CAAC,wCAAA,SAA2B,EAAA,GAAK,YAAA,IAAgB,MAAA,EAAQ;AAC3D,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,MAAM,OAAA,EAAS,SAAA,CAAU,MAAA;AACzB,IAAA,MAAM,MAAA,EAAQ,SAAA,CAAU,KAAA;AACxB,IAAA,MAAM,WAAA,EAAa,MAAA,CAAO,OAAA,CAAQ,CAAA;AAClC,IAAA,MAAM,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,CAAA;AAChC,IAAA,MAAM,WAAA,EAAa,SAAA,CAAU,UAAA,CAAW,CAAA;AACxC,IAAA,MAAM,gBAAA,EAAkB,WAAA,EACpB,MAAA,CAAO,OAAA,EAAS,KAAA,CAAM,OAAA,EACtB,KAAA,CAAM,OAAA,EAAS,MAAA,CAAO,MAAA;AAC1B,IAAA,OACE,IAAA,CAAK,UAAA,CAAW,UAAU,EAAA,GAC1B,IAAA,CAAK,UAAA,CAAW,SAAS,EAAA,GACzB,IAAA,CAAK,cAAA,CAAe,CAAA,CAAE,OAAA,IAAW,eAAA;AAAA,EAErC;AAAA,EAEA,eAAA,CAAgB,WAAA,EAAwC;AACtD,IAAA,OAAO,YAAA,IAAgB,OAAA;AAAA,EACzB;AACF,CAAA;ALiJA;AACA;AMlPO,IAAM,SAAA,EAAW,0BAAA;AACjB,IAAM,YAAA,EAAiD,QAAA;AACvD,IAAM,WAAA,EAAgD,KAAA;ANoP7D;AACA;AC/NA;AAJA,+BAAA,QAAY,EAAU,WAAA,EAAa,UAAU,CAAA;AAE7C,IAAM,iBAAA,EAAmB,CAAC,cAAA,EAAgB,WAAA,EAAa,gBAAgB,CAAA;AAkDvE,MAAA,SAAsB,mBAAA,CACpB,EAAE,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA,EACxB,QAAA,EACY;AACZ,EAAA,MAAM,OAAA,EAAS,IAAI,UAAA;AAAA,IACjB,MAAM,MAAA,CAAO,4BAAA,CAA6B,MAAM;AAAA,EAClD,CAAA;AACA,EAAA,MAAM,OAAA,EAASE,4CAAAA;AAAqB,IAClC,KAAA,EAAO,CAAC,GAAG,gBAAA,EAAkB,oBAAI,KAAA,UAAS,CAAC,GAAE;AAAA,EAC/C,CAAC,CAAA;AACD,EAAA,MAAM,GAAA,EAAK,MAAA;AACX,EAAA,MAAM,IAAA,EAAM,IAAIC,cAAAA,CAAI,CAAA;AACpB,EAAA,MAAM,OAAA,kBAAS,IAAI,GAAA,CAAI,CAAC,CAAC,EAAA,EAAI,GAAG,CAAC,CAAC,CAAA;AAClC,EAAA,MAAM,SAAA,EAAW,kBAAA,CAAmB,CAAA;AACpC,EAAA,MAAM,QAAA,EAAUC,gCAAAA,MAAc,EAAQ,QAAA,EAAU,EAAA,EAAI,GAAA,EAAK,MAAM,CAAA;AAC/D,EAAA,MAAM,YAAA,EAAc,8BAAA,CAA+B,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAC5E,EAAA,+BAAA,OAAY,CAAQ,GAAA,EAAK,MAAM,CAAA;AAC/B,EAAA,MAAA,CAAO,MAAA,CAAO,CAAA,EAAA,GAAM;AAAA,EAAC,CAAA,EAAG,EAAE,QAAA,EAAU,KAAK,CAAC,CAAA;AAE1C,EAAA,MAAM,IAAA,EAAM,MAAM,QAAA,CAAS;AAAA;AAAA;AAAA;AAAA,IAIzB,OAAA,EAAS,MAAA,CAAA,EAAA,GAAY;AACnB,MAAA,MAAM,OAAA,EAAS,IAAI,UAAA;AAAA,QACjB,MAAM,MAAA,CAAO,4BAAA,CAA6B,MAAM;AAAA,MAClD,CAAA;AACA,MAAA,+BAAA,OAAY,CAAQ,GAAA,EAAK,MAAM,CAAA;AAC/B,MAAA,MAAA,CAAO,MAAA,CAAO,CAAA,EAAA,GAAM;AAAA,MAAC,CAAA,EAAG,EAAE,QAAA,EAAU,KAAK,CAAC,CAAA;AAAA,IAC5C,CAAA;AAAA;AAAA;AAAA;AAAA,IAIA,MAAA,EAAQ,MAAA,CAAO,QAAA,EAAA,GAAa;AAE1B,MAAA,MAAA,CAAO,MAAA,CAAO,CAAA,EAAA,GAAM;AAAA,MAAC,CAAA,EAAG,EAAE,QAAA,EAAU,KAAK,CAAC,CAAA;AAC1C,MAAA,MAAM,aAAA,EAAe,qCAAA,OAAkB,CAAQ,GAAG,CAAA;AAClD,MAAA,MAAA,CAAO,MAAA;AAAA,QACL,CAAA,EAAA,GAAM;AACJ,UAAA,QAAA,CAAS,CAAA;AAAA,QACX,CAAA;AAAA,QACA,EAAE,QAAA,EAAU,KAAK;AAAA,MACnB,CAAA;AAEA,MAAA,MAAM,WAAA,EAAa,uCAAA,OAAoB,CAAQ,GAAA,EAAK,YAAY,CAAA;AAChE,MAAA,OAAO,MAAA,CAAO,mBAAA,CAAoB,MAAA,EAAQ,UAAU,CAAA;AAAA,IACtD,CAAA;AAAA;AAAA;AAAA;AAAA,IAIA,cAAA,EAAgB,CAAA,EAAA,GAAM;AACpB,MAAA,IAAI,QAAA,EAAU,EAAA;AACd,MAAA,MAAA,CAAO,cAAA,CAAe,CAAA,CAAE,IAAA,CAAK,CAAA,EAAA,GAAM;AACjC,QAAA,QAAA,EAAU,+BAAA,CAAS,CAAE,cAAA,CAAe,CAAA;AAAA,MACtC,CAAC,CAAA;AACD,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA;AAAA;AAAA;AAAA,IAIA,MAAA,EAAQ,CAAA,EAAA,GAAM;AACZ,MAAA,OAAO,MAAA,CAAO,cAAA,CAAe,CAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IACxC,CAAA;AAAA;AAAA;AAAA;AAAA,IAIA,UAAA,EAAY,CAAA,EAAA,GAAM;AAChB,MAAA,IAAI,SAAA,EAAmB,EAAA;AACvB,MAAA,MAAA,CAAO,cAAA,CAAe,CAAA,CAAE,IAAA,CAAK,CAAA,EAAA,GAAM;AACjC,QAAA,SAAA,EAAW,gDAAA,sBAAqC,CAAA;AAAA,MAClD,CAAC,CAAA;AACD,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAAA;AAAA;AAAA;AAAA,IAIA,cAAA,EAAgB,CAAA,EAAA,GAAM;AACpB,MAAA,OAAO,MAAA,CAAO,cAAA,CAAe,CAAA;AAAA,IAC/B,CAAA;AAAA;AAAA;AAAA;AAAA,IAIA,gBAAA,EAAkB,CAAA,EAAA,GAAM;AACtB,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF,CAAC,CAAA;AACD,EAAA,WAAA,CAAY,CAAA;AAEZ,EAAA,OAAO,GAAA;AACT;ADgLA;AACE;AACA;AACA;AACA;AACF,0MAAC","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-node-lexical/dist/index.cjs","sourcesContent":[null,"import { createHeadlessEditor } from \"@lexical/headless\";\nimport { $convertToMarkdownString, TRANSFORMERS } from \"@lexical/markdown\";\nimport { createBinding } from \"@lexical/yjs\";\nimport { detectDupes } from \"@liveblocks/core\";\nimport type { Liveblocks } from \"@liveblocks/node\";\nimport type {\n EditorState,\n Klass,\n LexicalEditor,\n LexicalNode,\n LexicalNodeReplacement,\n SerializedEditorState,\n SerializedLexicalNode,\n} from \"lexical\";\nimport { $getRoot } from \"lexical\";\nimport { applyUpdate, Doc, encodeStateAsUpdate, encodeStateVector } from \"yjs\";\n\nimport { createNoOpProvider, registerCollaborationListeners } from \"./collab\";\nimport { GroupMentionNode } from \"./GroupMentionNodeLite\";\nimport { MentionNode } from \"./MentionNodeLite\";\nimport { ThreadMarkNode } from \"./ThreadNodeLite\";\nimport { PKG_FORMAT, PKG_NAME, PKG_VERSION } from \"./version\";\n\ndetectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);\n\nconst LIVEBLOCKS_NODES = [ThreadMarkNode, MentionNode, GroupMentionNode];\n\nexport { $createParagraphNode, $createTextNode, $getRoot } from \"lexical\";\n\nexport type LiveblocksLexicalOptions = {\n roomId: string;\n nodes?: ReadonlyArray<Klass<LexicalNode> | LexicalNodeReplacement>;\n client: Liveblocks;\n};\n\nexport type LiveblocksDocumentApi = {\n refresh: () => Promise<void>;\n update: (modifyFn: () => void) => Promise<void>;\n getTextContent: () => string;\n getEditorState: () => EditorState;\n getLexicalEditor: () => LexicalEditor;\n toJSON: () => SerializedEditorState<SerializedLexicalNode>;\n toMarkdown: () => string;\n};\n\n/**\n *\n * `withLexicalDocument` is the main entry point to access and modify Lexical documents on your backend.\n * This function internally instantiates a Lexical headless editor and allows you to modify and export its values asynchronously\n * with a simplified interface.\n *\n * @param options Specify the roomId, client, and nodes.\n * @param callback The call back function is optionally async and receives the document API as its only argument.\n *\n * @example\n *\n * import { Liveblocks } from \"@liveblocks/node\";\n * import { withLexicalDocument } from \"@liveblocks/node-lexical\";\n *\n * const client = new Liveblocks({secret: \"sk_your_secret_key\"});\n * const text = await withLexicalDocument(\n * { client, roomId: \"your-room\" },\n * async (doc) => {\n * await doc.update(() => {\n * const root = $getRoot();\n * const paragraphNode = $createParagraphNode();\n * const textNode = $createTextNode(\"Hello from node\");\n * paragraphNode.append(textNode);\n * root.append(paragraphNode);\n * });\n * return doc.getTextContent();\n * }\n * );\n *\n */\nexport async function withLexicalDocument<T>(\n { roomId, nodes, client }: LiveblocksLexicalOptions,\n callback: (api: LiveblocksDocumentApi) => Promise<T> | T\n): Promise<T> {\n const update = new Uint8Array(\n await client.getYjsDocumentAsBinaryUpdate(roomId)\n );\n const editor = createHeadlessEditor({\n nodes: [...LIVEBLOCKS_NODES, ...(nodes ?? [])],\n });\n const id = \"root\";\n const doc = new Doc();\n const docMap = new Map([[id, doc]]);\n const provider = createNoOpProvider();\n const binding = createBinding(editor, provider, id, doc, docMap);\n const unsubscribe = registerCollaborationListeners(editor, provider, binding);\n applyUpdate(binding.doc, update);\n editor.update(() => {}, { discrete: true });\n\n const val = await callback({\n /**\n * Fetches and resyncs the latest document with Liveblocks\n */\n refresh: async () => {\n const latest = new Uint8Array(\n await client.getYjsDocumentAsBinaryUpdate(roomId)\n );\n applyUpdate(binding.doc, latest);\n editor.update(() => {}, { discrete: true });\n },\n /**\n * Provide a callback to modify documetns with Lexical's standard api. All calls are discrete.\n */\n update: async (modifyFn) => {\n // Flush any pending updates (there really shouldn't be any?), this may be a NOOP\n editor.update(() => {}, { discrete: true });\n const beforeVector = encodeStateVector(binding.doc);\n editor.update(\n () => {\n modifyFn();\n },\n { discrete: true }\n );\n // grab update after diffing\n const diffUpdate = encodeStateAsUpdate(binding.doc, beforeVector);\n return client.sendYjsBinaryUpdate(roomId, diffUpdate);\n },\n /**\n * Helper function to easily provide the text content from the root, i.e. `$getRoot().getTextContent()`\n */\n getTextContent: () => {\n let content = \"\";\n editor.getEditorState().read(() => {\n content = $getRoot().getTextContent();\n });\n return content;\n },\n /**\n * Helper function to return editorState in JSON form\n */\n toJSON: () => {\n return editor.getEditorState().toJSON();\n },\n /**\n * Helper function to return editor state as Markdown\n */\n toMarkdown: () => {\n let markdown: string = \"\";\n editor.getEditorState().read(() => {\n markdown = $convertToMarkdownString(TRANSFORMERS);\n });\n return markdown;\n },\n /**\n * Helper function to return the editor's current state\n */\n getEditorState: () => {\n return editor.getEditorState();\n },\n /**\n * Helper function to return the current headless editor instance\n */\n getLexicalEditor: () => {\n return editor;\n },\n });\n unsubscribe();\n\n return val;\n}\n","import { createHeadlessEditor } from \"@lexical/headless\";\nimport type { Binding, Provider } from \"@lexical/yjs\";\nimport {\n createBinding,\n syncLexicalUpdateToYjs,\n syncYjsChangesToLexical,\n} from \"@lexical/yjs\";\nimport type {\n Klass,\n LexicalEditor,\n LexicalNode,\n LexicalNodeReplacement,\n} from \"lexical\";\nimport type { Transaction, YEvent } from \"yjs\";\nimport { Doc } from \"yjs\";\n\nexport function withHeadlessCollaborationEditor<T>(\n nodes: ReadonlyArray<Klass<LexicalNode> | LexicalNodeReplacement>,\n callback: (editor: LexicalEditor, binding: Binding, provider: Provider) => T\n): T {\n const editor = createHeadlessEditor({\n nodes,\n });\n\n const id = \"root\";\n const doc = new Doc();\n const docMap = new Map([[id, doc]]);\n const provider = createNoOpProvider();\n const binding = createBinding(editor, provider, id, doc, docMap);\n\n const unsubscribe = registerCollaborationListeners(editor, provider, binding);\n\n const res = callback(editor, binding, provider);\n\n unsubscribe();\n\n return res;\n}\n\nexport function registerCollaborationListeners(\n editor: LexicalEditor,\n provider: Provider,\n binding: Binding\n): () => void {\n const unsubscribeUpdateListener = editor.registerUpdateListener(\n ({\n dirtyElements,\n dirtyLeaves,\n editorState,\n normalizedNodes,\n prevEditorState,\n tags,\n }) => {\n if (tags.has(\"skip-collab\") === false) {\n syncLexicalUpdateToYjs(\n binding,\n provider,\n prevEditorState,\n editorState,\n dirtyElements,\n dirtyLeaves,\n normalizedNodes,\n tags\n );\n }\n }\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const observer = (events: Array<YEvent<any>>, transaction: Transaction) => {\n if (transaction.origin !== binding) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n syncYjsChangesToLexical(binding, provider, events, false);\n }\n };\n\n binding.root.getSharedType().observeDeep(observer);\n\n return () => {\n unsubscribeUpdateListener();\n binding.root.getSharedType().unobserveDeep(observer);\n };\n}\n\nexport function createNoOpProvider(): Provider {\n const emptyFunction = () => {};\n\n return {\n awareness: {\n getLocalState: () => null,\n setLocalStateField: emptyFunction,\n getStates: () => new Map(),\n off: emptyFunction,\n on: emptyFunction,\n setLocalState: emptyFunction,\n },\n connect: emptyFunction,\n disconnect: emptyFunction,\n off: emptyFunction,\n on: emptyFunction,\n };\n}\n","import { MENTION_CHARACTER } from \"@liveblocks/core\";\nimport type { NodeKey, SerializedLexicalNode, Spread } from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode } from \"lexical\";\n\nexport type SerializedGroupMentionNode = Spread<\n {\n id: string;\n groupId: string;\n userIds: string[] | undefined;\n },\n SerializedLexicalNode\n>;\n\nexport class GroupMentionNode extends DecoratorNode<null> {\n __id: string;\n __groupId: string;\n __userIds: string[] | undefined;\n\n constructor(\n id: string,\n groupId: string,\n userIds: string[] | undefined,\n key?: NodeKey\n ) {\n super(key);\n this.__id = id;\n this.__groupId = groupId;\n this.__userIds = userIds;\n }\n\n static getType(): string {\n return \"lb-group-mention\";\n }\n\n static clone(node: GroupMentionNode): GroupMentionNode {\n return new GroupMentionNode(node.__id, node.__groupId, node.__userIds);\n }\n\n static importJSON(\n serializedNode: SerializedGroupMentionNode\n ): GroupMentionNode {\n const node = new GroupMentionNode(\n serializedNode.id,\n serializedNode.groupId,\n serializedNode.userIds\n );\n return $applyNodeReplacement(node);\n }\n\n exportJSON(): SerializedGroupMentionNode {\n return {\n id: this.getId(),\n groupId: this.getGroupId(),\n userIds: this.getUserIds(),\n type: \"lb-group-mention\",\n version: 1,\n };\n }\n\n getId(): string {\n const self = this.getLatest();\n return self.__id;\n }\n\n getGroupId(): string {\n const self = this.getLatest();\n return self.__groupId;\n }\n\n getUserIds(): string[] | undefined {\n const self = this.getLatest();\n return self.__userIds;\n }\n\n getTextContent(): string {\n const groupId = this.getGroupId();\n\n return MENTION_CHARACTER + groupId;\n }\n\n decorate(): null {\n return null;\n }\n}\n","import { MENTION_CHARACTER } from \"@liveblocks/core\";\nimport type { NodeKey, SerializedLexicalNode, Spread } from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode } from \"lexical\";\n\ntype LegacySerializedMentionNode = Spread<\n {\n // Legacy field now named `id`\n value: string;\n // Not present in legacy nodes\n userId: never;\n },\n SerializedLexicalNode\n>;\n\nexport type SerializedMentionNode = Spread<\n {\n id: string;\n userId: string | undefined;\n },\n SerializedLexicalNode\n>;\n\nexport class MentionNode extends DecoratorNode<null> {\n __id: string;\n __userId: string | undefined;\n\n constructor(id: string, userId: string | undefined, key?: NodeKey) {\n super(key);\n this.__id = id;\n this.__userId = userId;\n }\n\n static getType(): string {\n return \"lb-mention\";\n }\n\n static clone(node: MentionNode): MentionNode {\n return new MentionNode(node.__id, node.__userId);\n }\n\n static importJSON(\n serializedNode: SerializedMentionNode | LegacySerializedMentionNode\n ): MentionNode {\n const node = new MentionNode(\n (serializedNode as LegacySerializedMentionNode).value ??\n (serializedNode as SerializedMentionNode).id,\n (serializedNode as SerializedMentionNode).userId\n );\n return $applyNodeReplacement(node);\n }\n\n exportJSON(): SerializedMentionNode {\n return {\n id: this.getId(),\n userId: this.getUserId(),\n type: \"lb-mention\",\n version: 1,\n };\n }\n\n getId(): string {\n const self = this.getLatest();\n return self.__id;\n }\n\n getUserId(): string | undefined {\n const self = this.getLatest();\n return self.__userId;\n }\n\n getTextContent(): string {\n const userId = this.getUserId();\n\n if (userId) {\n return MENTION_CHARACTER + userId;\n }\n\n // Legacy behavior: return the ID as text content\n // Since the ID is an inbox notification ID (\"in_xxx\") and not a user ID, this isn't ideal\n return this.getId();\n }\n\n decorate(): null {\n return null;\n }\n}\n","import type {\n BaseSelection,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, $isRangeSelection, ElementNode } from \"lexical\";\n\nexport type SerializedThreadMarkNode = Spread<\n {\n ids: Array<string>;\n },\n SerializedElementNode\n>;\n\nexport class ThreadMarkNode extends ElementNode {\n /** @internal */\n __ids: Array<string>; // The ids of the threads that this mark is associated with\n\n static getType(): string {\n return \"lb-thread-mark\";\n }\n\n static clone(node: ThreadMarkNode): ThreadMarkNode {\n return new ThreadMarkNode(Array.from(node.__ids), node.__key);\n }\n\n static importJSON(serializedNode: SerializedThreadMarkNode): ThreadMarkNode {\n const node = $applyNodeReplacement<ThreadMarkNode>(\n new ThreadMarkNode(serializedNode.ids)\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n exportJSON(): SerializedThreadMarkNode {\n return {\n ...super.exportJSON(),\n ids: this.getIDs(),\n type: \"lb-thread-mark\",\n version: 1,\n };\n }\n\n getIDs(): Array<string> {\n const self = this.getLatest();\n return self instanceof ThreadMarkNode ? self.__ids : [];\n }\n\n constructor(ids: Array<string>, key?: NodeKey) {\n super(key);\n this.__ids = ids || [];\n }\n\n canInsertTextBefore(): false {\n return false;\n }\n\n canInsertTextAfter(): false {\n return false;\n }\n\n canBeEmpty(): false {\n return false;\n }\n\n isInline(): true {\n return true;\n }\n\n extractWithChild(\n _: LexicalNode,\n selection: BaseSelection,\n destination: \"clone\" | \"html\"\n ): boolean {\n if (!$isRangeSelection(selection) || destination === \"html\") {\n return false;\n }\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n const isBackward = selection.isBackward();\n const selectionLength = isBackward\n ? anchor.offset - focus.offset\n : focus.offset - anchor.offset;\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n this.getTextContent().length === selectionLength\n );\n }\n\n excludeFromCopy(destination: \"clone\" | \"html\"): boolean {\n return destination !== \"clone\";\n }\n}\n","declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/node-lexical\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n"]}
package/dist/index.js CHANGED
@@ -245,7 +245,7 @@ var ThreadMarkNode = class _ThreadMarkNode extends ElementNode {
245
245
 
246
246
  // src/version.ts
247
247
  var PKG_NAME = "@liveblocks/node-lexical";
248
- var PKG_VERSION = "3.14.0-types1";
248
+ var PKG_VERSION = "3.14.0";
249
249
  var PKG_FORMAT = "esm";
250
250
 
251
251
  // src/index.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liveblocks/node-lexical",
3
- "version": "3.14.0-types1",
3
+ "version": "3.14.0",
4
4
  "description": "A server-side utility that lets you modify lexical documents hosted in Liveblocks.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -30,12 +30,13 @@
30
30
  "lint": "eslint src/",
31
31
  "lint:package": "publint --strict && attw --pack",
32
32
  "test": "NODE_OPTIONS=\"--no-deprecation\" vitest run",
33
+ "test:ci": "NODE_OPTIONS=\"--no-deprecation\" vitest run",
33
34
  "test:types": "tsd",
34
35
  "test:watch": "NODE_OPTIONS=\"--no-deprecation\" vitest"
35
36
  },
36
37
  "dependencies": {
37
- "@liveblocks/core": "3.14.0-types1",
38
- "@liveblocks/node": "3.14.0-types1",
38
+ "@liveblocks/core": "3.14.0",
39
+ "@liveblocks/node": "3.14.0",
39
40
  "yjs": "^13.6.18"
40
41
  },
41
42
  "peerDependencies": {