@liveblocks/react-tiptap 2.15.2 → 2.16.0-toolbars2

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.
Files changed (54) hide show
  1. package/dist/LiveblocksExtension.js.map +1 -1
  2. package/dist/LiveblocksExtension.mjs.map +1 -1
  3. package/dist/comments/CommentsExtension.js +6 -2
  4. package/dist/comments/CommentsExtension.js.map +1 -1
  5. package/dist/comments/CommentsExtension.mjs +7 -3
  6. package/dist/comments/CommentsExtension.mjs.map +1 -1
  7. package/dist/comments/FloatingComposer.js +27 -30
  8. package/dist/comments/FloatingComposer.js.map +1 -1
  9. package/dist/comments/FloatingComposer.mjs +29 -32
  10. package/dist/comments/FloatingComposer.mjs.map +1 -1
  11. package/dist/context.js +24 -0
  12. package/dist/context.js.map +1 -0
  13. package/dist/context.mjs +21 -0
  14. package/dist/context.mjs.map +1 -0
  15. package/dist/index.d.mts +67 -13
  16. package/dist/index.d.ts +67 -13
  17. package/dist/index.js +4 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +2 -0
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/toolbar/FloatingToolbar.js +326 -0
  22. package/dist/toolbar/FloatingToolbar.js.map +1 -0
  23. package/dist/toolbar/FloatingToolbar.mjs +323 -0
  24. package/dist/toolbar/FloatingToolbar.mjs.map +1 -0
  25. package/dist/toolbar/Toolbar.js +354 -0
  26. package/dist/toolbar/Toolbar.js.map +1 -0
  27. package/dist/toolbar/Toolbar.mjs +329 -0
  28. package/dist/toolbar/Toolbar.mjs.map +1 -0
  29. package/dist/toolbar/shared.js +39 -0
  30. package/dist/toolbar/shared.js.map +1 -0
  31. package/dist/toolbar/shared.mjs +36 -0
  32. package/dist/toolbar/shared.mjs.map +1 -0
  33. package/dist/types.js +7 -3
  34. package/dist/types.js.map +1 -1
  35. package/dist/types.mjs +6 -3
  36. package/dist/types.mjs.map +1 -1
  37. package/dist/utils.js +17 -0
  38. package/dist/utils.js.map +1 -1
  39. package/dist/utils.mjs +16 -1
  40. package/dist/utils.mjs.map +1 -1
  41. package/dist/version-history/HistoryVersionPreview.js +79 -79
  42. package/dist/version-history/HistoryVersionPreview.js.map +1 -1
  43. package/dist/version-history/HistoryVersionPreview.mjs +79 -79
  44. package/dist/version-history/HistoryVersionPreview.mjs.map +1 -1
  45. package/dist/version.js +1 -1
  46. package/dist/version.js.map +1 -1
  47. package/dist/version.mjs +1 -1
  48. package/dist/version.mjs.map +1 -1
  49. package/package.json +11 -8
  50. package/src/styles/constants.css +2 -1
  51. package/src/styles/index.css +58 -6
  52. package/src/styles/utils.css +11 -0
  53. package/styles.css +1 -1
  54. package/styles.css.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":["import type { ClientRectObject } from \"@floating-ui/react-dom\";\nimport type { Range } from \"@tiptap/core\";\nimport type { Node as ProseMirrorNode } from \"@tiptap/pm/model\";\nimport { Fragment } from \"@tiptap/pm/model\";\n\nimport { LIVEBLOCKS_MENTION_TYPE } from \"./types\";\n\nexport const getRectFromCoords = (coords: {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}): ClientRectObject => {\n return {\n ...coords,\n x: coords.left,\n y: coords.top,\n width: coords.right - coords.left,\n height: coords.bottom - coords.top,\n };\n};\n\nexport const getMentionsFromNode = (\n node: ProseMirrorNode,\n range: Range\n): { notificationId: string; userId: string }[] => {\n const result: { notificationId: string; userId: string }[] = [];\n node.nodesBetween(range.from, range.to, (child) => {\n if (child.type.name === LIVEBLOCKS_MENTION_TYPE) {\n const mention = child.attrs as { id?: string; notificationId?: string };\n if (mention.id && mention.notificationId) {\n result.push({\n notificationId: mention.notificationId,\n userId: mention.id,\n });\n }\n }\n });\n return result;\n};\n\n// How to modify data in transformPasted, inspired by: https://discuss.prosemirror.net/t/modify-specific-node-on-copy-and-paste-in-clipboard/4901/4\nexport const mapFragment = (\n fragment: Fragment,\n callback: (\n node: ProseMirrorNode\n ) => ProseMirrorNode | ProseMirrorNode[] | Fragment | null\n): Fragment => {\n const content: ProseMirrorNode[] = [];\n fragment.forEach((node) => {\n if (node.content.childCount > 0) {\n content.push(\n node.type.create(node.attrs, mapFragment(node.content, callback))\n );\n return;\n }\n content.push(callback(node) as ProseMirrorNode);\n });\n\n return Fragment.from(content);\n};\n"],"names":[],"mappings":";;;AAOa,MAAA,iBAAA,GAAoB,CAAC,MAKV,KAAA;AACtB,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,GAAG,MAAO,CAAA,IAAA;AAAA,IACV,GAAG,MAAO,CAAA,GAAA;AAAA,IACV,KAAA,EAAO,MAAO,CAAA,KAAA,GAAQ,MAAO,CAAA,IAAA;AAAA,IAC7B,MAAA,EAAQ,MAAO,CAAA,MAAA,GAAS,MAAO,CAAA,GAAA;AAAA,GACjC,CAAA;AACF,EAAA;AAEa,MAAA,mBAAA,GAAsB,CACjC,IAAA,EACA,KACiD,KAAA;AACjD,EAAA,MAAM,SAAuD,EAAC,CAAA;AAC9D,EAAA,IAAA,CAAK,aAAa,KAAM,CAAA,IAAA,EAAM,KAAM,CAAA,EAAA,EAAI,CAAC,KAAU,KAAA;AACjD,IAAI,IAAA,KAAA,CAAM,IAAK,CAAA,IAAA,KAAS,uBAAyB,EAAA;AAC/C,MAAA,MAAM,UAAU,KAAM,CAAA,KAAA,CAAA;AACtB,MAAI,IAAA,OAAA,CAAQ,EAAM,IAAA,OAAA,CAAQ,cAAgB,EAAA;AACxC,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,gBAAgB,OAAQ,CAAA,cAAA;AAAA,UACxB,QAAQ,OAAQ,CAAA,EAAA;AAAA,SACjB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA,MAAA,CAAA;AACT,EAAA;AAGa,MAAA,WAAA,GAAc,CACzB,QAAA,EACA,QAGa,KAAA;AACb,EAAA,MAAM,UAA6B,EAAC,CAAA;AACpC,EAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACzB,IAAI,IAAA,IAAA,CAAK,OAAQ,CAAA,UAAA,GAAa,CAAG,EAAA;AAC/B,MAAQ,OAAA,CAAA,IAAA;AAAA,QACN,IAAA,CAAK,KAAK,MAAO,CAAA,IAAA,CAAK,OAAO,WAAY,CAAA,IAAA,CAAK,OAAS,EAAA,QAAQ,CAAC,CAAA;AAAA,OAClE,CAAA;AACA,MAAA,OAAA;AAAA,KACF;AACA,IAAQ,OAAA,CAAA,IAAA,CAAK,QAAS,CAAA,IAAI,CAAoB,CAAA,CAAA;AAAA,GAC/C,CAAA,CAAA;AAED,EAAO,OAAA,QAAA,CAAS,KAAK,OAAO,CAAA,CAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":["import type { ClientRectObject } from \"@floating-ui/react-dom\";\nimport type { Editor, Range } from \"@tiptap/core\";\nimport type { Node as ProseMirrorNode } from \"@tiptap/pm/model\";\nimport { Fragment } from \"@tiptap/pm/model\";\nimport type { TextSelection } from \"@tiptap/pm/state\";\n\nimport { LIVEBLOCKS_MENTION_TYPE } from \"./types\";\n\nexport const getRectFromCoords = (coords: {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}): ClientRectObject => {\n return {\n ...coords,\n x: coords.left,\n y: coords.top,\n width: coords.right - coords.left,\n height: coords.bottom - coords.top,\n };\n};\n\nexport const getMentionsFromNode = (\n node: ProseMirrorNode,\n range: Range\n): { notificationId: string; userId: string }[] => {\n const result: { notificationId: string; userId: string }[] = [];\n node.nodesBetween(range.from, range.to, (child) => {\n if (child.type.name === LIVEBLOCKS_MENTION_TYPE) {\n const mention = child.attrs as { id?: string; notificationId?: string };\n if (mention.id && mention.notificationId) {\n result.push({\n notificationId: mention.notificationId,\n userId: mention.id,\n });\n }\n }\n });\n return result;\n};\n\n// How to modify data in transformPasted, inspired by: https://discuss.prosemirror.net/t/modify-specific-node-on-copy-and-paste-in-clipboard/4901/4\nexport const mapFragment = (\n fragment: Fragment,\n callback: (\n node: ProseMirrorNode\n ) => ProseMirrorNode | ProseMirrorNode[] | Fragment | null\n): Fragment => {\n const content: ProseMirrorNode[] = [];\n fragment.forEach((node) => {\n if (node.content.childCount > 0) {\n content.push(\n node.type.create(node.attrs, mapFragment(node.content, callback))\n );\n return;\n }\n content.push(callback(node) as ProseMirrorNode);\n });\n\n return Fragment.from(content);\n};\n\nexport function getDomRangeFromTextSelection(\n selection: TextSelection,\n editor: Editor\n) {\n const { from, to } = selection;\n const fromPos = editor.view.domAtPos(from);\n const endPos = editor.view.domAtPos(to);\n\n const domRange = document.createRange();\n domRange.setStart(fromPos.node, fromPos.offset);\n domRange.setEnd(endPos.node, endPos.offset);\n\n return domRange;\n}\n\nexport function compareTextSelections(\n a: TextSelection | null | undefined,\n b: TextSelection | null | undefined\n) {\n if (!a || !b) {\n return false;\n }\n\n return a.eq(b);\n}\n"],"names":[],"mappings":";;;AAQa,MAAA,iBAAA,GAAoB,CAAC,MAKV,KAAA;AACtB,EAAO,OAAA;AAAA,IACL,GAAG,MAAA;AAAA,IACH,GAAG,MAAO,CAAA,IAAA;AAAA,IACV,GAAG,MAAO,CAAA,GAAA;AAAA,IACV,KAAA,EAAO,MAAO,CAAA,KAAA,GAAQ,MAAO,CAAA,IAAA;AAAA,IAC7B,MAAA,EAAQ,MAAO,CAAA,MAAA,GAAS,MAAO,CAAA,GAAA;AAAA,GACjC,CAAA;AACF,EAAA;AAEa,MAAA,mBAAA,GAAsB,CACjC,IAAA,EACA,KACiD,KAAA;AACjD,EAAA,MAAM,SAAuD,EAAC,CAAA;AAC9D,EAAA,IAAA,CAAK,aAAa,KAAM,CAAA,IAAA,EAAM,KAAM,CAAA,EAAA,EAAI,CAAC,KAAU,KAAA;AACjD,IAAI,IAAA,KAAA,CAAM,IAAK,CAAA,IAAA,KAAS,uBAAyB,EAAA;AAC/C,MAAA,MAAM,UAAU,KAAM,CAAA,KAAA,CAAA;AACtB,MAAI,IAAA,OAAA,CAAQ,EAAM,IAAA,OAAA,CAAQ,cAAgB,EAAA;AACxC,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,gBAAgB,OAAQ,CAAA,cAAA;AAAA,UACxB,QAAQ,OAAQ,CAAA,EAAA;AAAA,SACjB,CAAA,CAAA;AAAA,OACH;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AACD,EAAO,OAAA,MAAA,CAAA;AACT,EAAA;AAGa,MAAA,WAAA,GAAc,CACzB,QAAA,EACA,QAGa,KAAA;AACb,EAAA,MAAM,UAA6B,EAAC,CAAA;AACpC,EAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACzB,IAAI,IAAA,IAAA,CAAK,OAAQ,CAAA,UAAA,GAAa,CAAG,EAAA;AAC/B,MAAQ,OAAA,CAAA,IAAA;AAAA,QACN,IAAA,CAAK,KAAK,MAAO,CAAA,IAAA,CAAK,OAAO,WAAY,CAAA,IAAA,CAAK,OAAS,EAAA,QAAQ,CAAC,CAAA;AAAA,OAClE,CAAA;AACA,MAAA,OAAA;AAAA,KACF;AACA,IAAQ,OAAA,CAAA,IAAA,CAAK,QAAS,CAAA,IAAI,CAAoB,CAAA,CAAA;AAAA,GAC/C,CAAA,CAAA;AAED,EAAO,OAAA,QAAA,CAAS,KAAK,OAAO,CAAA,CAAA;AAC9B,EAAA;AAEgB,SAAA,4BAAA,CACd,WACA,MACA,EAAA;AACA,EAAM,MAAA,EAAE,IAAM,EAAA,EAAA,EAAO,GAAA,SAAA,CAAA;AACrB,EAAA,MAAM,OAAU,GAAA,MAAA,CAAO,IAAK,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AACzC,EAAA,MAAM,MAAS,GAAA,MAAA,CAAO,IAAK,CAAA,QAAA,CAAS,EAAE,CAAA,CAAA;AAEtC,EAAM,MAAA,QAAA,GAAW,SAAS,WAAY,EAAA,CAAA;AACtC,EAAA,QAAA,CAAS,QAAS,CAAA,OAAA,CAAQ,IAAM,EAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AAC9C,EAAA,QAAA,CAAS,MAAO,CAAA,MAAA,CAAO,IAAM,EAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAE1C,EAAO,OAAA,QAAA,CAAA;AACT,CAAA;AAEgB,SAAA,qBAAA,CACd,GACA,CACA,EAAA;AACA,EAAI,IAAA,CAAC,CAAK,IAAA,CAAC,CAAG,EAAA;AACZ,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,CAAA,CAAE,GAAG,CAAC,CAAA,CAAA;AACf;;;;"}
@@ -11,87 +11,87 @@ var yjs = require('yjs');
11
11
  var classnames = require('../classnames.js');
12
12
 
13
13
  const AUTHORS_TRUNCATE = 3;
14
- const HistoryVersionPreview = react.forwardRef(({ version, editor: parentEditor, onVersionRestore, className, ...props }, forwardedRef) => {
15
- const $ = reactUi.useOverrides();
16
- const { isLoading, data, error } = react$1.useHistoryVersionData(version.id);
17
- const previewEditor = react$2.useEditor({
18
- editable: false,
19
- extensions: parentEditor.extensionManager.extensions.filter((e) => e.type !== "extension")
20
- });
21
- react.useEffect(() => {
22
- if (data && previewEditor) {
23
- const doc = new yjs.Doc();
24
- yjs.applyUpdate(doc, data);
25
- const root = doc.getXmlFragment("default");
26
- const node = yProsemirror.yXmlFragmentToProseMirrorRootNode(root, parentEditor.schema);
27
- previewEditor.commands.setContent(node.toJSON());
28
- }
29
- }, [data, previewEditor, parentEditor]);
30
- const restore = react.useCallback(() => {
31
- parentEditor.commands.setContent(previewEditor?.getJSON() ?? "");
32
- onVersionRestore?.(version);
33
- }, [onVersionRestore, parentEditor, previewEditor, version]);
34
- return /* @__PURE__ */ jsxRuntime.jsxs("div", {
35
- ...props,
36
- className: classnames.classNames(
37
- "lb-root lb-history-version-preview lb-tiptap-version-preview",
38
- className
39
- ),
40
- ref: forwardedRef,
41
- children: [
42
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", {
43
- className: "lb-loading lb-history-version-preview-loading",
44
- children: /* @__PURE__ */ jsxRuntime.jsx(_private.SpinnerIcon, {})
45
- }) : error ? /* @__PURE__ */ jsxRuntime.jsx("div", {
46
- className: "lb-error lb-history-version-preview-error",
47
- children: $.HISTORY_VERSION_PREVIEW_ERROR(error)
48
- }) : /* @__PURE__ */ jsxRuntime.jsx("div", {
49
- className: "lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container",
50
- children: /* @__PURE__ */ jsxRuntime.jsx(react$2.EditorContent, {
51
- editor: previewEditor
52
- })
53
- }),
54
- /* @__PURE__ */ jsxRuntime.jsxs("div", {
55
- className: "lb-history-version-preview-footer",
56
- children: [
57
- /* @__PURE__ */ jsxRuntime.jsx("span", {
58
- className: "lb-history-version-preview-authors",
59
- children: $.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(
60
- /* @__PURE__ */ jsxRuntime.jsx(_private.List, {
61
- values: version.authors.map((author) => /* @__PURE__ */ jsxRuntime.jsx(_private.User, {
62
- userId: author.id,
63
- replaceSelf: true
64
- }, author.id)),
65
- formatRemaining: $.LIST_REMAINING_USERS,
66
- truncate: AUTHORS_TRUNCATE,
67
- locale: $.locale
68
- })
69
- )
70
- }),
71
- /* @__PURE__ */ jsxRuntime.jsx("div", {
72
- className: "lb-history-version-preview-actions",
73
- children: /* @__PURE__ */ jsxRuntime.jsxs(_private.Button, {
74
- onClick: restore,
75
- disabled: !data,
76
- variant: "primary",
77
- size: "large",
78
- className: "lb-history-version-preview-action",
79
- children: [
80
- /* @__PURE__ */ jsxRuntime.jsx(_private.RestoreIcon, {
81
- className: "lb-button-icon"
82
- }),
83
- /* @__PURE__ */ jsxRuntime.jsx("span", {
84
- className: "lb-button-label",
85
- children: $.HISTORY_VERSION_PREVIEW_RESTORE
14
+ const HistoryVersionPreview = react.forwardRef(
15
+ ({ version, editor: parentEditor, onVersionRestore, className, ...props }, forwardedRef) => {
16
+ const $ = reactUi.useOverrides();
17
+ const { isLoading, data, error } = react$1.useHistoryVersionData(version.id);
18
+ const previewEditor = react$2.useEditor({
19
+ editable: false,
20
+ extensions: parentEditor.extensionManager.extensions.filter(
21
+ (e) => e.type !== "extension"
22
+ )
23
+ });
24
+ react.useEffect(() => {
25
+ if (data && previewEditor) {
26
+ const doc = new yjs.Doc();
27
+ yjs.applyUpdate(doc, data);
28
+ const root = doc.getXmlFragment("default");
29
+ const node = yProsemirror.yXmlFragmentToProseMirrorRootNode(
30
+ root,
31
+ parentEditor.schema
32
+ );
33
+ previewEditor.commands.setContent(node.toJSON());
34
+ }
35
+ }, [data, previewEditor, parentEditor]);
36
+ const restore = react.useCallback(() => {
37
+ parentEditor.commands.setContent(previewEditor?.getJSON() ?? "");
38
+ onVersionRestore?.(version);
39
+ }, [onVersionRestore, parentEditor, previewEditor, version]);
40
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
41
+ ...props,
42
+ className: classnames.classNames(
43
+ "lb-root lb-history-version-preview lb-tiptap-version-preview",
44
+ className
45
+ ),
46
+ ref: forwardedRef,
47
+ children: [
48
+ isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", {
49
+ className: "lb-loading lb-history-version-preview-loading",
50
+ children: /* @__PURE__ */ jsxRuntime.jsx(_private.SpinnerIcon, {})
51
+ }) : error ? /* @__PURE__ */ jsxRuntime.jsx("div", {
52
+ className: "lb-error lb-history-version-preview-error",
53
+ children: $.HISTORY_VERSION_PREVIEW_ERROR(error)
54
+ }) : /* @__PURE__ */ jsxRuntime.jsx("div", {
55
+ className: "lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container",
56
+ children: /* @__PURE__ */ jsxRuntime.jsx(react$2.EditorContent, {
57
+ editor: previewEditor
58
+ })
59
+ }),
60
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
61
+ className: "lb-history-version-preview-footer",
62
+ children: [
63
+ /* @__PURE__ */ jsxRuntime.jsx("span", {
64
+ className: "lb-history-version-preview-authors",
65
+ children: $.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(
66
+ /* @__PURE__ */ jsxRuntime.jsx(_private.List, {
67
+ values: version.authors.map((author) => /* @__PURE__ */ jsxRuntime.jsx(_private.User, {
68
+ userId: author.id,
69
+ replaceSelf: true
70
+ }, author.id)),
71
+ formatRemaining: $.LIST_REMAINING_USERS,
72
+ truncate: AUTHORS_TRUNCATE,
73
+ locale: $.locale
86
74
  })
87
- ]
75
+ )
76
+ }),
77
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
78
+ className: "lb-history-version-preview-actions",
79
+ children: /* @__PURE__ */ jsxRuntime.jsx(_private.Button, {
80
+ onClick: restore,
81
+ disabled: !data,
82
+ variant: "primary",
83
+ size: "large",
84
+ className: "lb-history-version-preview-action",
85
+ icon: /* @__PURE__ */ jsxRuntime.jsx(_private.RestoreIcon, {}),
86
+ children: $.HISTORY_VERSION_PREVIEW_RESTORE
87
+ })
88
88
  })
89
- })
90
- ]
91
- })
92
- ]
93
- });
94
- });
89
+ ]
90
+ })
91
+ ]
92
+ });
93
+ }
94
+ );
95
95
 
96
96
  exports.HistoryVersionPreview = HistoryVersionPreview;
97
97
  //# sourceMappingURL=HistoryVersionPreview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryVersionPreview.js","sources":["../../src/version-history/HistoryVersionPreview.tsx"],"sourcesContent":["import type { HistoryVersion } from \"@liveblocks/core\";\nimport { useHistoryVersionData } from \"@liveblocks/react\";\nimport { useOverrides } from \"@liveblocks/react-ui\";\nimport {\n Button,\n List,\n RestoreIcon,\n SpinnerIcon,\n User,\n} from \"@liveblocks/react-ui/_private\";\nimport type { Content, Editor } from \"@tiptap/react\";\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { forwardRef, useCallback, useEffect } from \"react\";\nimport { yXmlFragmentToProseMirrorRootNode } from \"y-prosemirror\";\nimport { applyUpdate, Doc } from \"yjs\";\n\nimport { classNames } from \"../classnames\";\n\nconst AUTHORS_TRUNCATE = 3;\n\nexport interface HistoryVersionPreviewProps\n extends ComponentPropsWithoutRef<\"div\"> {\n version: HistoryVersion;\n editor: Editor;\n onVersionRestore?: (version: HistoryVersion) => void;\n}\n\n/**\n * Displays a specific version of the current TipTap document.\n *\n * @example\n * <HistoryVersionPreview version={version} />\n */\nexport const HistoryVersionPreview = forwardRef<\n HTMLDivElement,\n HistoryVersionPreviewProps\n>(({ version, editor: parentEditor, onVersionRestore, className, ...props }, forwardedRef) => {\n const $ = useOverrides();\n const { isLoading, data, error } = useHistoryVersionData(version.id);\n\n const previewEditor = useEditor({\n // ignore extensions, only get marks/nodes\n editable: false,\n extensions: parentEditor.extensionManager.extensions.filter((e) => e.type !== \"extension\"),\n });\n useEffect(() => {\n if (data && previewEditor) {\n const doc = new Doc();\n applyUpdate(doc, data);\n const root = doc.getXmlFragment(\"default\") // TODO: lookup field\n const node = yXmlFragmentToProseMirrorRootNode(root, parentEditor.schema);\n previewEditor.commands.setContent(node.toJSON() as Content)\n }\n }, [data, previewEditor, parentEditor]);\n const restore = useCallback(() => {\n parentEditor.commands.setContent(previewEditor?.getJSON() ?? \"\");\n onVersionRestore?.(version);\n }, [onVersionRestore, parentEditor, previewEditor, version]);\n\n return (\n <div\n {...props}\n className={classNames(\n \"lb-root lb-history-version-preview lb-tiptap-version-preview\",\n className\n )}\n ref={forwardedRef}\n >\n {isLoading ? (\n <div className=\"lb-loading lb-history-version-preview-loading\">\n <SpinnerIcon />\n </div>\n ) : error ? (\n <div className=\"lb-error lb-history-version-preview-error\">\n {$.HISTORY_VERSION_PREVIEW_ERROR(error)}\n </div>\n ) : (\n <div className=\"lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container\">\n\n <EditorContent editor={previewEditor} />\n </div>\n )}\n <div className=\"lb-history-version-preview-footer\">\n <span className=\"lb-history-version-preview-authors\">\n {$.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(\n <List\n values={version.authors.map((author) => (\n <User key={author.id} userId={author.id} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={AUTHORS_TRUNCATE}\n locale={$.locale}\n />\n )}\n </span>\n <div className=\"lb-history-version-preview-actions\">\n <Button\n onClick={restore}\n disabled={!data}\n variant=\"primary\"\n size=\"large\"\n className=\"lb-history-version-preview-action\"\n >\n <RestoreIcon className=\"lb-button-icon\" />\n <span className=\"lb-button-label\">\n {$.HISTORY_VERSION_PREVIEW_RESTORE}\n </span>\n </Button>\n </div>\n </div>\n </div>\n );\n});\n"],"names":["forwardRef","useOverrides","useHistoryVersionData","useEditor","useEffect","Doc","applyUpdate","yXmlFragmentToProseMirrorRootNode","useCallback","jsxs","classNames","jsx","SpinnerIcon","EditorContent","List","User","Button","RestoreIcon"],"mappings":"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"}
1
+ {"version":3,"file":"HistoryVersionPreview.js","sources":["../../src/version-history/HistoryVersionPreview.tsx"],"sourcesContent":["import type { HistoryVersion } from \"@liveblocks/core\";\nimport { useHistoryVersionData } from \"@liveblocks/react\";\nimport { useOverrides } from \"@liveblocks/react-ui\";\nimport {\n Button,\n List,\n RestoreIcon,\n SpinnerIcon,\n User,\n} from \"@liveblocks/react-ui/_private\";\nimport type { Content, Editor } from \"@tiptap/react\";\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { forwardRef, useCallback, useEffect } from \"react\";\nimport { yXmlFragmentToProseMirrorRootNode } from \"y-prosemirror\";\nimport { applyUpdate, Doc } from \"yjs\";\n\nimport { classNames } from \"../classnames\";\n\nconst AUTHORS_TRUNCATE = 3;\n\nexport interface HistoryVersionPreviewProps\n extends ComponentPropsWithoutRef<\"div\"> {\n version: HistoryVersion;\n editor: Editor;\n onVersionRestore?: (version: HistoryVersion) => void;\n}\n\n/**\n * Displays a specific version of the current TipTap document.\n *\n * @example\n * <HistoryVersionPreview version={version} />\n */\nexport const HistoryVersionPreview = forwardRef<\n HTMLDivElement,\n HistoryVersionPreviewProps\n>(\n (\n { version, editor: parentEditor, onVersionRestore, className, ...props },\n forwardedRef\n ) => {\n const $ = useOverrides();\n const { isLoading, data, error } = useHistoryVersionData(version.id);\n\n const previewEditor = useEditor({\n // ignore extensions, only get marks/nodes\n editable: false,\n extensions: parentEditor.extensionManager.extensions.filter(\n (e) => e.type !== \"extension\"\n ),\n });\n useEffect(() => {\n if (data && previewEditor) {\n const doc = new Doc();\n applyUpdate(doc, data);\n const root = doc.getXmlFragment(\"default\"); // TODO: lookup field\n const node = yXmlFragmentToProseMirrorRootNode(\n root,\n parentEditor.schema\n );\n previewEditor.commands.setContent(node.toJSON() as Content);\n }\n }, [data, previewEditor, parentEditor]);\n const restore = useCallback(() => {\n parentEditor.commands.setContent(previewEditor?.getJSON() ?? \"\");\n onVersionRestore?.(version);\n }, [onVersionRestore, parentEditor, previewEditor, version]);\n\n return (\n <div\n {...props}\n className={classNames(\n \"lb-root lb-history-version-preview lb-tiptap-version-preview\",\n className\n )}\n ref={forwardedRef}\n >\n {isLoading ? (\n <div className=\"lb-loading lb-history-version-preview-loading\">\n <SpinnerIcon />\n </div>\n ) : error ? (\n <div className=\"lb-error lb-history-version-preview-error\">\n {$.HISTORY_VERSION_PREVIEW_ERROR(error)}\n </div>\n ) : (\n <div className=\"lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container\">\n <EditorContent editor={previewEditor} />\n </div>\n )}\n <div className=\"lb-history-version-preview-footer\">\n <span className=\"lb-history-version-preview-authors\">\n {$.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(\n <List\n values={version.authors.map((author) => (\n <User key={author.id} userId={author.id} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={AUTHORS_TRUNCATE}\n locale={$.locale}\n />\n )}\n </span>\n <div className=\"lb-history-version-preview-actions\">\n <Button\n onClick={restore}\n disabled={!data}\n variant=\"primary\"\n size=\"large\"\n className=\"lb-history-version-preview-action\"\n icon={<RestoreIcon />}\n >\n {$.HISTORY_VERSION_PREVIEW_RESTORE}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n);\n"],"names":["forwardRef","useOverrides","useHistoryVersionData","useEditor","useEffect","Doc","applyUpdate","yXmlFragmentToProseMirrorRootNode","useCallback","jsxs","classNames","jsx","SpinnerIcon","EditorContent","List","User","Button","RestoreIcon"],"mappings":"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"}
@@ -9,87 +9,87 @@ import { Doc, applyUpdate } from 'yjs';
9
9
  import { classNames } from '../classnames.mjs';
10
10
 
11
11
  const AUTHORS_TRUNCATE = 3;
12
- const HistoryVersionPreview = forwardRef(({ version, editor: parentEditor, onVersionRestore, className, ...props }, forwardedRef) => {
13
- const $ = useOverrides();
14
- const { isLoading, data, error } = useHistoryVersionData(version.id);
15
- const previewEditor = useEditor({
16
- editable: false,
17
- extensions: parentEditor.extensionManager.extensions.filter((e) => e.type !== "extension")
18
- });
19
- useEffect(() => {
20
- if (data && previewEditor) {
21
- const doc = new Doc();
22
- applyUpdate(doc, data);
23
- const root = doc.getXmlFragment("default");
24
- const node = yXmlFragmentToProseMirrorRootNode(root, parentEditor.schema);
25
- previewEditor.commands.setContent(node.toJSON());
26
- }
27
- }, [data, previewEditor, parentEditor]);
28
- const restore = useCallback(() => {
29
- parentEditor.commands.setContent(previewEditor?.getJSON() ?? "");
30
- onVersionRestore?.(version);
31
- }, [onVersionRestore, parentEditor, previewEditor, version]);
32
- return /* @__PURE__ */ jsxs("div", {
33
- ...props,
34
- className: classNames(
35
- "lb-root lb-history-version-preview lb-tiptap-version-preview",
36
- className
37
- ),
38
- ref: forwardedRef,
39
- children: [
40
- isLoading ? /* @__PURE__ */ jsx("div", {
41
- className: "lb-loading lb-history-version-preview-loading",
42
- children: /* @__PURE__ */ jsx(SpinnerIcon, {})
43
- }) : error ? /* @__PURE__ */ jsx("div", {
44
- className: "lb-error lb-history-version-preview-error",
45
- children: $.HISTORY_VERSION_PREVIEW_ERROR(error)
46
- }) : /* @__PURE__ */ jsx("div", {
47
- className: "lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container",
48
- children: /* @__PURE__ */ jsx(EditorContent, {
49
- editor: previewEditor
50
- })
51
- }),
52
- /* @__PURE__ */ jsxs("div", {
53
- className: "lb-history-version-preview-footer",
54
- children: [
55
- /* @__PURE__ */ jsx("span", {
56
- className: "lb-history-version-preview-authors",
57
- children: $.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(
58
- /* @__PURE__ */ jsx(List, {
59
- values: version.authors.map((author) => /* @__PURE__ */ jsx(User, {
60
- userId: author.id,
61
- replaceSelf: true
62
- }, author.id)),
63
- formatRemaining: $.LIST_REMAINING_USERS,
64
- truncate: AUTHORS_TRUNCATE,
65
- locale: $.locale
66
- })
67
- )
68
- }),
69
- /* @__PURE__ */ jsx("div", {
70
- className: "lb-history-version-preview-actions",
71
- children: /* @__PURE__ */ jsxs(Button, {
72
- onClick: restore,
73
- disabled: !data,
74
- variant: "primary",
75
- size: "large",
76
- className: "lb-history-version-preview-action",
77
- children: [
78
- /* @__PURE__ */ jsx(RestoreIcon, {
79
- className: "lb-button-icon"
80
- }),
81
- /* @__PURE__ */ jsx("span", {
82
- className: "lb-button-label",
83
- children: $.HISTORY_VERSION_PREVIEW_RESTORE
12
+ const HistoryVersionPreview = forwardRef(
13
+ ({ version, editor: parentEditor, onVersionRestore, className, ...props }, forwardedRef) => {
14
+ const $ = useOverrides();
15
+ const { isLoading, data, error } = useHistoryVersionData(version.id);
16
+ const previewEditor = useEditor({
17
+ editable: false,
18
+ extensions: parentEditor.extensionManager.extensions.filter(
19
+ (e) => e.type !== "extension"
20
+ )
21
+ });
22
+ useEffect(() => {
23
+ if (data && previewEditor) {
24
+ const doc = new Doc();
25
+ applyUpdate(doc, data);
26
+ const root = doc.getXmlFragment("default");
27
+ const node = yXmlFragmentToProseMirrorRootNode(
28
+ root,
29
+ parentEditor.schema
30
+ );
31
+ previewEditor.commands.setContent(node.toJSON());
32
+ }
33
+ }, [data, previewEditor, parentEditor]);
34
+ const restore = useCallback(() => {
35
+ parentEditor.commands.setContent(previewEditor?.getJSON() ?? "");
36
+ onVersionRestore?.(version);
37
+ }, [onVersionRestore, parentEditor, previewEditor, version]);
38
+ return /* @__PURE__ */ jsxs("div", {
39
+ ...props,
40
+ className: classNames(
41
+ "lb-root lb-history-version-preview lb-tiptap-version-preview",
42
+ className
43
+ ),
44
+ ref: forwardedRef,
45
+ children: [
46
+ isLoading ? /* @__PURE__ */ jsx("div", {
47
+ className: "lb-loading lb-history-version-preview-loading",
48
+ children: /* @__PURE__ */ jsx(SpinnerIcon, {})
49
+ }) : error ? /* @__PURE__ */ jsx("div", {
50
+ className: "lb-error lb-history-version-preview-error",
51
+ children: $.HISTORY_VERSION_PREVIEW_ERROR(error)
52
+ }) : /* @__PURE__ */ jsx("div", {
53
+ className: "lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container",
54
+ children: /* @__PURE__ */ jsx(EditorContent, {
55
+ editor: previewEditor
56
+ })
57
+ }),
58
+ /* @__PURE__ */ jsxs("div", {
59
+ className: "lb-history-version-preview-footer",
60
+ children: [
61
+ /* @__PURE__ */ jsx("span", {
62
+ className: "lb-history-version-preview-authors",
63
+ children: $.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(
64
+ /* @__PURE__ */ jsx(List, {
65
+ values: version.authors.map((author) => /* @__PURE__ */ jsx(User, {
66
+ userId: author.id,
67
+ replaceSelf: true
68
+ }, author.id)),
69
+ formatRemaining: $.LIST_REMAINING_USERS,
70
+ truncate: AUTHORS_TRUNCATE,
71
+ locale: $.locale
84
72
  })
85
- ]
73
+ )
74
+ }),
75
+ /* @__PURE__ */ jsx("div", {
76
+ className: "lb-history-version-preview-actions",
77
+ children: /* @__PURE__ */ jsx(Button, {
78
+ onClick: restore,
79
+ disabled: !data,
80
+ variant: "primary",
81
+ size: "large",
82
+ className: "lb-history-version-preview-action",
83
+ icon: /* @__PURE__ */ jsx(RestoreIcon, {}),
84
+ children: $.HISTORY_VERSION_PREVIEW_RESTORE
85
+ })
86
86
  })
87
- })
88
- ]
89
- })
90
- ]
91
- });
92
- });
87
+ ]
88
+ })
89
+ ]
90
+ });
91
+ }
92
+ );
93
93
 
94
94
  export { HistoryVersionPreview };
95
95
  //# sourceMappingURL=HistoryVersionPreview.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryVersionPreview.mjs","sources":["../../src/version-history/HistoryVersionPreview.tsx"],"sourcesContent":["import type { HistoryVersion } from \"@liveblocks/core\";\nimport { useHistoryVersionData } from \"@liveblocks/react\";\nimport { useOverrides } from \"@liveblocks/react-ui\";\nimport {\n Button,\n List,\n RestoreIcon,\n SpinnerIcon,\n User,\n} from \"@liveblocks/react-ui/_private\";\nimport type { Content, Editor } from \"@tiptap/react\";\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { forwardRef, useCallback, useEffect } from \"react\";\nimport { yXmlFragmentToProseMirrorRootNode } from \"y-prosemirror\";\nimport { applyUpdate, Doc } from \"yjs\";\n\nimport { classNames } from \"../classnames\";\n\nconst AUTHORS_TRUNCATE = 3;\n\nexport interface HistoryVersionPreviewProps\n extends ComponentPropsWithoutRef<\"div\"> {\n version: HistoryVersion;\n editor: Editor;\n onVersionRestore?: (version: HistoryVersion) => void;\n}\n\n/**\n * Displays a specific version of the current TipTap document.\n *\n * @example\n * <HistoryVersionPreview version={version} />\n */\nexport const HistoryVersionPreview = forwardRef<\n HTMLDivElement,\n HistoryVersionPreviewProps\n>(({ version, editor: parentEditor, onVersionRestore, className, ...props }, forwardedRef) => {\n const $ = useOverrides();\n const { isLoading, data, error } = useHistoryVersionData(version.id);\n\n const previewEditor = useEditor({\n // ignore extensions, only get marks/nodes\n editable: false,\n extensions: parentEditor.extensionManager.extensions.filter((e) => e.type !== \"extension\"),\n });\n useEffect(() => {\n if (data && previewEditor) {\n const doc = new Doc();\n applyUpdate(doc, data);\n const root = doc.getXmlFragment(\"default\") // TODO: lookup field\n const node = yXmlFragmentToProseMirrorRootNode(root, parentEditor.schema);\n previewEditor.commands.setContent(node.toJSON() as Content)\n }\n }, [data, previewEditor, parentEditor]);\n const restore = useCallback(() => {\n parentEditor.commands.setContent(previewEditor?.getJSON() ?? \"\");\n onVersionRestore?.(version);\n }, [onVersionRestore, parentEditor, previewEditor, version]);\n\n return (\n <div\n {...props}\n className={classNames(\n \"lb-root lb-history-version-preview lb-tiptap-version-preview\",\n className\n )}\n ref={forwardedRef}\n >\n {isLoading ? (\n <div className=\"lb-loading lb-history-version-preview-loading\">\n <SpinnerIcon />\n </div>\n ) : error ? (\n <div className=\"lb-error lb-history-version-preview-error\">\n {$.HISTORY_VERSION_PREVIEW_ERROR(error)}\n </div>\n ) : (\n <div className=\"lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container\">\n\n <EditorContent editor={previewEditor} />\n </div>\n )}\n <div className=\"lb-history-version-preview-footer\">\n <span className=\"lb-history-version-preview-authors\">\n {$.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(\n <List\n values={version.authors.map((author) => (\n <User key={author.id} userId={author.id} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={AUTHORS_TRUNCATE}\n locale={$.locale}\n />\n )}\n </span>\n <div className=\"lb-history-version-preview-actions\">\n <Button\n onClick={restore}\n disabled={!data}\n variant=\"primary\"\n size=\"large\"\n className=\"lb-history-version-preview-action\"\n >\n <RestoreIcon className=\"lb-button-icon\" />\n <span className=\"lb-button-label\">\n {$.HISTORY_VERSION_PREVIEW_RESTORE}\n </span>\n </Button>\n </div>\n </div>\n </div>\n );\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HistoryVersionPreview.mjs","sources":["../../src/version-history/HistoryVersionPreview.tsx"],"sourcesContent":["import type { HistoryVersion } from \"@liveblocks/core\";\nimport { useHistoryVersionData } from \"@liveblocks/react\";\nimport { useOverrides } from \"@liveblocks/react-ui\";\nimport {\n Button,\n List,\n RestoreIcon,\n SpinnerIcon,\n User,\n} from \"@liveblocks/react-ui/_private\";\nimport type { Content, Editor } from \"@tiptap/react\";\nimport { EditorContent, useEditor } from \"@tiptap/react\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { forwardRef, useCallback, useEffect } from \"react\";\nimport { yXmlFragmentToProseMirrorRootNode } from \"y-prosemirror\";\nimport { applyUpdate, Doc } from \"yjs\";\n\nimport { classNames } from \"../classnames\";\n\nconst AUTHORS_TRUNCATE = 3;\n\nexport interface HistoryVersionPreviewProps\n extends ComponentPropsWithoutRef<\"div\"> {\n version: HistoryVersion;\n editor: Editor;\n onVersionRestore?: (version: HistoryVersion) => void;\n}\n\n/**\n * Displays a specific version of the current TipTap document.\n *\n * @example\n * <HistoryVersionPreview version={version} />\n */\nexport const HistoryVersionPreview = forwardRef<\n HTMLDivElement,\n HistoryVersionPreviewProps\n>(\n (\n { version, editor: parentEditor, onVersionRestore, className, ...props },\n forwardedRef\n ) => {\n const $ = useOverrides();\n const { isLoading, data, error } = useHistoryVersionData(version.id);\n\n const previewEditor = useEditor({\n // ignore extensions, only get marks/nodes\n editable: false,\n extensions: parentEditor.extensionManager.extensions.filter(\n (e) => e.type !== \"extension\"\n ),\n });\n useEffect(() => {\n if (data && previewEditor) {\n const doc = new Doc();\n applyUpdate(doc, data);\n const root = doc.getXmlFragment(\"default\"); // TODO: lookup field\n const node = yXmlFragmentToProseMirrorRootNode(\n root,\n parentEditor.schema\n );\n previewEditor.commands.setContent(node.toJSON() as Content);\n }\n }, [data, previewEditor, parentEditor]);\n const restore = useCallback(() => {\n parentEditor.commands.setContent(previewEditor?.getJSON() ?? \"\");\n onVersionRestore?.(version);\n }, [onVersionRestore, parentEditor, previewEditor, version]);\n\n return (\n <div\n {...props}\n className={classNames(\n \"lb-root lb-history-version-preview lb-tiptap-version-preview\",\n className\n )}\n ref={forwardedRef}\n >\n {isLoading ? (\n <div className=\"lb-loading lb-history-version-preview-loading\">\n <SpinnerIcon />\n </div>\n ) : error ? (\n <div className=\"lb-error lb-history-version-preview-error\">\n {$.HISTORY_VERSION_PREVIEW_ERROR(error)}\n </div>\n ) : (\n <div className=\"lb-history-version-preview-content lb-tiptap-editor-container lb-tiptap-version-preview-editor-container\">\n <EditorContent editor={previewEditor} />\n </div>\n )}\n <div className=\"lb-history-version-preview-footer\">\n <span className=\"lb-history-version-preview-authors\">\n {$.HISTORY_VERSION_PREVIEW_AUTHORS_LIST(\n <List\n values={version.authors.map((author) => (\n <User key={author.id} userId={author.id} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={AUTHORS_TRUNCATE}\n locale={$.locale}\n />\n )}\n </span>\n <div className=\"lb-history-version-preview-actions\">\n <Button\n onClick={restore}\n disabled={!data}\n variant=\"primary\"\n size=\"large\"\n className=\"lb-history-version-preview-action\"\n icon={<RestoreIcon />}\n >\n {$.HISTORY_VERSION_PREVIEW_RESTORE}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n);\n"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const PKG_NAME = "@liveblocks/react-tiptap";
4
- const PKG_VERSION = typeof "2.15.2" === "string" && "2.15.2";
4
+ const PKG_VERSION = typeof "2.16.0-toolbars2" === "string" && "2.16.0-toolbars2";
5
5
  const PKG_FORMAT = typeof "cjs" === "string" && "cjs";
6
6
 
7
7
  exports.PKG_FORMAT = PKG_FORMAT;
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,QAAA,KAAgB,QAAY,IAAA,SAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,kBAAA,KAAgB,QAAY,IAAA,mBAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;;;"}
package/dist/version.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  const PKG_NAME = "@liveblocks/react-tiptap";
2
- const PKG_VERSION = typeof "2.15.2" === "string" && "2.15.2";
2
+ const PKG_VERSION = typeof "2.16.0-toolbars2" === "string" && "2.16.0-toolbars2";
3
3
  const PKG_FORMAT = typeof "esm" === "string" && "esm";
4
4
 
5
5
  export { PKG_FORMAT, PKG_NAME, PKG_VERSION };
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,QAAA,KAAgB,QAAY,IAAA,SAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;"}
1
+ {"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-tiptap\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,2BAAA;AACX,MAAA,WAAA,GAAc,OAAO,kBAAA,KAAgB,QAAY,IAAA,mBAAA;AACjD,MAAA,UAAA,GAAa,OAAO,KAAA,KAAkB,QAAY,IAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liveblocks/react-tiptap",
3
- "version": "2.15.2",
3
+ "version": "2.16.0-toolbars2",
4
4
  "description": "A tiptap react plugin to enable collaboration, comments, live cursors, and more.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "commonjs",
@@ -42,14 +42,17 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@floating-ui/react-dom": "^2.1.2",
45
- "@liveblocks/client": "2.15.2",
46
- "@liveblocks/core": "2.15.2",
47
- "@liveblocks/react": "2.15.2",
48
- "@liveblocks/react-ui": "2.15.2",
49
- "@liveblocks/yjs": "2.15.2",
45
+ "@liveblocks/client": "2.16.0-toolbars2",
46
+ "@liveblocks/core": "2.16.0-toolbars2",
47
+ "@liveblocks/react": "2.16.0-toolbars2",
48
+ "@liveblocks/react-ui": "2.16.0-toolbars2",
49
+ "@liveblocks/yjs": "2.16.0-toolbars2",
50
+ "@radix-ui/react-select": "^2.1.2",
51
+ "@radix-ui/react-toggle": "^1.1.0",
50
52
  "@tiptap/core": "^2.7.2",
51
53
  "@tiptap/react": "^2.7.2",
52
54
  "@tiptap/suggestion": "^2.7.2",
55
+ "cmdk": "^1.0.4",
53
56
  "y-prosemirror": "^1.2.12",
54
57
  "yjs": "^13.6.18"
55
58
  },
@@ -69,7 +72,7 @@
69
72
  "@testing-library/jest-dom": "^5.16.5",
70
73
  "eslint-plugin-react": "^7.33.2",
71
74
  "eslint-plugin-react-hooks": "^4.6.0",
72
- "msw": "^0.27.1",
75
+ "msw": "^1.3.5",
73
76
  "rollup": "3.28.0",
74
77
  "stylelint": "^15.10.2",
75
78
  "stylelint-config-standard": "^34.0.0",
@@ -82,7 +85,7 @@
82
85
  },
83
86
  "repository": {
84
87
  "type": "git",
85
- "url": "https://github.com/liveblocks/liveblocks.git",
88
+ "url": "git+https://github.com/liveblocks/liveblocks.git",
86
89
  "directory": "packages/liveblocks-react-tiptap"
87
90
  },
88
91
  "homepage": "https://liveblocks.io",
@@ -1,4 +1,5 @@
1
- $lb-elevation-list-padding: 4px;
1
+ $lb-button-size: calc(2 * 0.25 * var(--lb-spacing) + var(--lb-icon-size));
2
+ $lb-elevation-padding: 4px;
2
3
  $lb-tiptap-anchored-threads-shadow:
3
4
  0 0 0 1px rgb(0 0 0 / 4%),
4
5
  0 2px 6px rgb(0 0 0 / 4%),