UNPKG

@liveblocks/react-blocknote

Version:

An integration of BlockNote + React to enable collaboration, comments, live cursors, and more with Liveblocks.

1 lines 5.17 kB
{"version":3,"file":"schema.cjs","sources":["../../src/initialization/schema.ts"],"sourcesContent":["import type {\n BlockSchema,\n CustomInlineContentFromConfig,\n InlineContentSchema,\n StyleSchema,\n} from \"@blocknote/core\";\nimport {\n BlockNoteSchema,\n createInlineContentSpecFromTipTapNode,\n} from \"@blocknote/core\";\nimport { GroupMentionNode, MentionNode } from \"@liveblocks/react-tiptap\";\n\nconst mentionSpec = createInlineContentSpecFromTipTapNode(\n MentionNode,\n {\n id: {\n default: \"\",\n },\n notificationId: {\n default: \"\",\n },\n },\n {\n render(\n inlineContent: CustomInlineContentFromConfig<\n {\n type: \"liveblocksMention\";\n content: \"styled\";\n propSchema: {\n id: {\n default: \"\";\n };\n notificationId: {\n default: \"\";\n };\n };\n },\n StyleSchema\n >\n ) {\n const el = document.createElement(\"liveblocks-mention\");\n el.setAttribute(\"data-id\", inlineContent.props.id);\n el.setAttribute(\n \"data-notification-id\",\n inlineContent.props.notificationId\n );\n return {\n dom: el,\n };\n },\n }\n);\n\nconst groupMentionSpec = createInlineContentSpecFromTipTapNode(\n GroupMentionNode,\n {\n id: {\n default: \"\",\n },\n userIds: {\n default: \"\",\n },\n notificationId: {\n default: \"\",\n },\n },\n {\n render(\n inlineContent: CustomInlineContentFromConfig<\n {\n type: \"liveblocksGroupMention\";\n content: \"styled\";\n propSchema: {\n id: {\n default: \"\";\n };\n userIds: {\n default: \"\";\n };\n notificationId: {\n default: \"\";\n };\n };\n },\n StyleSchema\n >\n ) {\n const el = document.createElement(\"liveblocks-group-mention\");\n el.setAttribute(\"data-id\", inlineContent.props.id);\n el.setAttribute(\"data-user-ids\", inlineContent.props.userIds);\n el.setAttribute(\n \"data-notification-id\",\n inlineContent.props.notificationId\n );\n return {\n dom: el,\n };\n },\n }\n);\n\n/**\n * Adds the Liveblocks Mention and Group Mention nodes as inline content to the BlockNote schema\n *\n * This makes sure BlockNote knows about Liveblocks mentions and that you can read/write mentions via the BlockNote API\n */\nexport const withLiveblocksSchema = <\n B extends BlockSchema,\n I extends InlineContentSchema,\n S extends StyleSchema,\n>(\n schema?: BlockNoteSchema<B, I, S>,\n liveblocksOptions: Partial<{ mentions: boolean }> = {}\n): BlockNoteSchema<B, I, S> => {\n const optionalSchema = schema || BlockNoteSchema.create();\n if (!liveblocksOptions.mentions) {\n return optionalSchema as BlockNoteSchema<B, I, S>;\n }\n return BlockNoteSchema.create({\n blockSpecs: optionalSchema.blockSpecs,\n inlineContentSpecs: {\n ...optionalSchema.inlineContentSpecs,\n liveblocksMention: mentionSpec,\n liveblocksGroupMention: groupMentionSpec,\n },\n styleSpecs: optionalSchema.styleSpecs,\n }) as any as BlockNoteSchema<\n // typescript needs some help here\n B,\n I,\n S\n >;\n};\n"],"names":["createInlineContentSpecFromTipTapNode","MentionNode","GroupMentionNode","BlockNoteSchema"],"mappings":";;;;;AAYA,MAAM,WAAc,GAAAA,0CAAA;AAAA,EAClBC,uBAAA;AAAA,EACA;AAAA,IACE,EAAI,EAAA;AAAA,MACF,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,IACA,cAAgB,EAAA;AAAA,MACd,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA;AAAA,IACE,OACE,aAeA,EAAA;AACA,MAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,oBAAoB,CAAA,CAAA;AACtD,MAAA,EAAA,CAAG,YAAa,CAAA,SAAA,EAAW,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AACjD,MAAG,EAAA,CAAA,YAAA;AAAA,QACD,sBAAA;AAAA,QACA,cAAc,KAAM,CAAA,cAAA;AAAA,OACtB,CAAA;AACA,MAAO,OAAA;AAAA,QACL,GAAK,EAAA,EAAA;AAAA,OACP,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAA,CAAA;AAEA,MAAM,gBAAmB,GAAAD,0CAAA;AAAA,EACvBE,4BAAA;AAAA,EACA;AAAA,IACE,EAAI,EAAA;AAAA,MACF,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,IACA,OAAS,EAAA;AAAA,MACP,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,IACA,cAAgB,EAAA;AAAA,MACd,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA;AAAA,IACE,OACE,aAkBA,EAAA;AACA,MAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,0BAA0B,CAAA,CAAA;AAC5D,MAAA,EAAA,CAAG,YAAa,CAAA,SAAA,EAAW,aAAc,CAAA,KAAA,CAAM,EAAE,CAAA,CAAA;AACjD,MAAA,EAAA,CAAG,YAAa,CAAA,eAAA,EAAiB,aAAc,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAC5D,MAAG,EAAA,CAAA,YAAA;AAAA,QACD,sBAAA;AAAA,QACA,cAAc,KAAM,CAAA,cAAA;AAAA,OACtB,CAAA;AACA,MAAO,OAAA;AAAA,QACL,GAAK,EAAA,EAAA;AAAA,OACP,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAA,CAAA;AAOO,MAAM,oBAAuB,GAAA,CAKlC,MACA,EAAA,iBAAA,GAAoD,EACvB,KAAA;AAC7B,EAAM,MAAA,cAAA,GAAiB,MAAU,IAAAC,oBAAA,CAAgB,MAAO,EAAA,CAAA;AACxD,EAAI,IAAA,CAAC,kBAAkB,QAAU,EAAA;AAC/B,IAAO,OAAA,cAAA,CAAA;AAAA,GACT;AACA,EAAA,OAAOA,qBAAgB,MAAO,CAAA;AAAA,IAC5B,YAAY,cAAe,CAAA,UAAA;AAAA,IAC3B,kBAAoB,EAAA;AAAA,MAClB,GAAG,cAAe,CAAA,kBAAA;AAAA,MAClB,iBAAmB,EAAA,WAAA;AAAA,MACnB,sBAAwB,EAAA,gBAAA;AAAA,KAC1B;AAAA,IACA,YAAY,cAAe,CAAA,UAAA;AAAA,GAC5B,CAAA,CAAA;AAMH;;;;"}