payload-richtext-tiptap 0.0.63 → 0.0.65

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.
@@ -35,7 +35,7 @@ export const AICommand = Extension.create({
35
35
  },
36
36
  onHidden: (instance)=>{
37
37
  const selection = this?.editor?.state?.selection;
38
- this.editor?.chain()?.focus()?.insertContentAt(selection.to - 1, this?.editor?.storage?.aiCommand?.completion ?? "")?.insertContentAt(selection.to, " ")?.run();
38
+ this.editor?.chain()?.focus()?.insertContentAt(selection.to - 1, this?.editor?.storage?.aiCommand?.completion ?? "")?.deleteNode("paragraph")?.run();
39
39
  }
40
40
  });
41
41
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AICommand.ts"],"sourcesContent":["\"use client\";\nimport { Editor, Extension } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport Suggestion, {\n SuggestionKeyDownProps,\n SuggestionProps,\n} from \"@tiptap/suggestion\";\nimport tippy from \"tippy.js\";\n\nimport { GROUPS } from \"./groups.js\";\nimport AIMenuList from \"./AIMenuList.js\";\n// import { AICommandPanel } from \"../../features/panels/AICommandPanel/AICommandPanel.js\";\n\nconst extensionName = \"aiCommand\";\n\nlet popup: any;\n\nexport const AICommand = Extension.create({\n name: extensionName,\n\n priority: 200,\n\n onCreate() {\n const t = tippy as any;\n popup = t(\"body\", {\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n theme: \"slash-command\",\n // maxWidth: \"16rem\",\n offset: [0, -16],\n popperOptions: {\n strategy: \"fixed\",\n modifiers: [\n {\n name: \"flip\",\n enabled: false,\n },\n ],\n },\n onHidden: (instance) => {\n const selection = this?.editor?.state?.selection;\n\n this.editor\n ?.chain()\n ?.focus()\n ?.insertContentAt(\n selection.to - 1,\n this?.editor?.storage?.aiCommand?.completion ?? \"\"\n )\n ?.insertContentAt(selection.to, \" \")\n ?.run();\n },\n });\n },\n\n addProseMirrorPlugins() {\n return [\n Suggestion({\n editor: this.editor,\n char: \" \",\n allowSpaces: true,\n startOfLine: true,\n pluginKey: new PluginKey(extensionName),\n allow: ({ state, range }) => {\n const $from = state.doc.resolve(range.from);\n const isRootDepth = $from.depth === 1;\n const isParagraph = $from.parent.type.name === \"paragraph\";\n const isStartOfNode = $from.parent.textContent?.charAt(0) === \" \";\n // TODO\n const isInColumn = this.editor.isActive(\"column\");\n\n const afterContent = $from.parent.textContent?.substring(\n $from.parent.textContent?.indexOf(\" \")\n );\n const isValidAfterContent = !afterContent?.endsWith(\" \");\n\n return (\n ((isRootDepth && isParagraph && isStartOfNode) ||\n (isInColumn && isParagraph && isStartOfNode)) &&\n isValidAfterContent\n );\n },\n command: ({ editor, props }: { editor: Editor; props: any }) => {\n // const { view, state } = editor;\n // const { $head, $from } = view.state.selection;\n\n // const end = $from.pos;\n // const from = $head?.nodeBefore\n // ? end -\n // ($head.nodeBefore.text?.substring(\n // $head.nodeBefore.text?.indexOf(\" \")\n // ).length ?? 0)\n // : $from.start();\n\n // const tr = state.tr.deleteRange(from, end);\n // view.dispatch(tr);\n\n props.action(editor);\n // view.focus();\n },\n items: ({ query }: { query: string }) => {\n const withFilteredCommands = GROUPS.map((group) => ({\n ...group,\n commands: group.commands\n .filter((item) => {\n const labelNormalized = item.label.toLowerCase().trim();\n const queryNormalized = query.toLowerCase().trim();\n\n if (item.aliases) {\n const aliases = item.aliases.map((alias) =>\n alias.toLowerCase().trim()\n );\n\n return (\n labelNormalized.includes(queryNormalized) ||\n aliases.includes(queryNormalized)\n );\n }\n\n return labelNormalized.includes(queryNormalized);\n })\n .filter((command) =>\n command.shouldBeHidden\n ? !command.shouldBeHidden(this.editor)\n : true\n ),\n }));\n\n const withoutEmptyGroups = withFilteredCommands.filter((group) => {\n if (group.commands.length > 0) {\n return true;\n }\n\n return false;\n });\n\n const withEnabledSettings = withoutEmptyGroups.map((group) => ({\n ...group,\n commands: group.commands.map((command) => ({\n ...command,\n isEnabled: true,\n })),\n }));\n\n return withEnabledSettings;\n },\n render: () => {\n let component: any;\n\n let scrollHandler: (() => void) | null = null;\n\n return {\n onStart: (props: SuggestionProps) => {\n component = new ReactRenderer(AIMenuList, {\n props,\n editor: props.editor,\n });\n props.editor.storage.aiCommand.active = true;\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n let yPos = rect.y;\n\n if (\n rect.top + component.element.offsetHeight + 40 >\n window.innerHeight\n ) {\n const diff =\n rect.top +\n component.element.offsetHeight -\n window.innerHeight +\n 40;\n yPos = rect.y - diff;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n const editorXOffset = editorNode.getBoundingClientRect().x;\n const boundigClient = editorNode.getBoundingClientRect();\n\n return new DOMRect(\n rect.x,\n yPos,\n boundigClient.width,\n rect.height\n );\n };\n\n scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n popup?.[0].setProps({\n getReferenceClientRect,\n appendTo: () => document.body,\n content: component.element,\n });\n\n popup?.[0].show();\n },\n\n onUpdate(props: SuggestionProps) {\n component.updateProps(props);\n\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n return new DOMRect(rect.x, rect.y, rect.width, rect.height);\n };\n\n let scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n // eslint-disable-next-line no-param-reassign\n props.editor.storage[extensionName].rect = props.clientRect\n ? getReferenceClientRect()\n : {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n },\n\n onKeyDown(props: SuggestionKeyDownProps) {\n if (props.event.key === \"Escape\") {\n popup?.[0].hide();\n\n return true;\n }\n\n if (!popup?.[0].state.isShown) {\n popup?.[0].show();\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit(props) {\n popup?.[0].hide();\n if (scrollHandler) {\n const { view } = props.editor;\n view.dom.parentElement?.removeEventListener(\n \"scroll\",\n scrollHandler\n );\n }\n\n props.editor.storage.aiCommand.active = false;\n props.editor.storage.aiCommand.userPrompt = \"\";\n props.editor.storage.aiCommand.completion = \"\";\n\n component.destroy();\n },\n };\n },\n }),\n ];\n },\n\n addStorage() {\n return {\n rect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n userPrompt: \"\",\n completion: \"\",\n language: \"en\",\n title: \"\",\n active: false,\n };\n },\n});\n\nexport default AICommand;\n"],"names":["Extension","PluginKey","ReactRenderer","Suggestion","tippy","GROUPS","AIMenuList","extensionName","popup","AICommand","create","name","priority","onCreate","t","interactive","trigger","placement","theme","offset","popperOptions","strategy","modifiers","enabled","onHidden","instance","selection","editor","state","chain","focus","insertContentAt","to","storage","aiCommand","completion","run","addProseMirrorPlugins","char","allowSpaces","startOfLine","pluginKey","allow","range","$from","doc","resolve","from","isRootDepth","depth","isParagraph","parent","type","isStartOfNode","textContent","charAt","isInColumn","isActive","afterContent","substring","indexOf","isValidAfterContent","endsWith","command","props","action","items","query","withFilteredCommands","map","group","commands","filter","item","labelNormalized","label","toLowerCase","trim","queryNormalized","aliases","alias","includes","shouldBeHidden","withoutEmptyGroups","length","withEnabledSettings","isEnabled","render","component","scrollHandler","onStart","active","view","editorNode","dom","getReferenceClientRect","clientRect","rect","yPos","y","top","element","offsetHeight","window","innerHeight","diff","editorXOffset","getBoundingClientRect","x","boundigClient","DOMRect","width","height","setProps","parentElement","addEventListener","appendTo","document","body","content","show","onUpdate","updateProps","left","right","bottom","onKeyDown","event","key","hide","isShown","ref","onExit","removeEventListener","userPrompt","destroy","addStorage","language","title"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AICommand/AICommand.ts"],"sourcesContent":["\"use client\";\nimport { Editor, Extension } from \"@tiptap/core\";\nimport { PluginKey } from \"@tiptap/pm/state\";\nimport { ReactRenderer } from \"@tiptap/react\";\nimport Suggestion, {\n SuggestionKeyDownProps,\n SuggestionProps,\n} from \"@tiptap/suggestion\";\nimport tippy from \"tippy.js\";\n\nimport { GROUPS } from \"./groups.js\";\nimport AIMenuList from \"./AIMenuList.js\";\n// import { AICommandPanel } from \"../../features/panels/AICommandPanel/AICommandPanel.js\";\n\nconst extensionName = \"aiCommand\";\n\nlet popup: any;\n\nexport const AICommand = Extension.create({\n name: extensionName,\n\n priority: 200,\n\n onCreate() {\n const t = tippy as any;\n popup = t(\"body\", {\n interactive: true,\n trigger: \"manual\",\n placement: \"bottom-start\",\n theme: \"slash-command\",\n // maxWidth: \"16rem\",\n offset: [0, -16],\n popperOptions: {\n strategy: \"fixed\",\n modifiers: [\n {\n name: \"flip\",\n enabled: false,\n },\n ],\n },\n onHidden: (instance) => {\n const selection = this?.editor?.state?.selection;\n\n this.editor\n ?.chain()\n ?.focus()\n ?.insertContentAt(\n selection.to - 1,\n this?.editor?.storage?.aiCommand?.completion ?? \"\"\n )\n ?.deleteNode(\"paragraph\")\n ?.run();\n },\n });\n },\n\n addProseMirrorPlugins() {\n return [\n Suggestion({\n editor: this.editor,\n char: \" \",\n allowSpaces: true,\n startOfLine: true,\n pluginKey: new PluginKey(extensionName),\n allow: ({ state, range }) => {\n const $from = state.doc.resolve(range.from);\n const isRootDepth = $from.depth === 1;\n const isParagraph = $from.parent.type.name === \"paragraph\";\n const isStartOfNode = $from.parent.textContent?.charAt(0) === \" \";\n // TODO\n const isInColumn = this.editor.isActive(\"column\");\n\n const afterContent = $from.parent.textContent?.substring(\n $from.parent.textContent?.indexOf(\" \")\n );\n const isValidAfterContent = !afterContent?.endsWith(\" \");\n\n return (\n ((isRootDepth && isParagraph && isStartOfNode) ||\n (isInColumn && isParagraph && isStartOfNode)) &&\n isValidAfterContent\n );\n },\n command: ({ editor, props }: { editor: Editor; props: any }) => {\n // const { view, state } = editor;\n // const { $head, $from } = view.state.selection;\n\n // const end = $from.pos;\n // const from = $head?.nodeBefore\n // ? end -\n // ($head.nodeBefore.text?.substring(\n // $head.nodeBefore.text?.indexOf(\" \")\n // ).length ?? 0)\n // : $from.start();\n\n // const tr = state.tr.deleteRange(from, end);\n // view.dispatch(tr);\n\n props.action(editor);\n // view.focus();\n },\n items: ({ query }: { query: string }) => {\n const withFilteredCommands = GROUPS.map((group) => ({\n ...group,\n commands: group.commands\n .filter((item) => {\n const labelNormalized = item.label.toLowerCase().trim();\n const queryNormalized = query.toLowerCase().trim();\n\n if (item.aliases) {\n const aliases = item.aliases.map((alias) =>\n alias.toLowerCase().trim()\n );\n\n return (\n labelNormalized.includes(queryNormalized) ||\n aliases.includes(queryNormalized)\n );\n }\n\n return labelNormalized.includes(queryNormalized);\n })\n .filter((command) =>\n command.shouldBeHidden\n ? !command.shouldBeHidden(this.editor)\n : true\n ),\n }));\n\n const withoutEmptyGroups = withFilteredCommands.filter((group) => {\n if (group.commands.length > 0) {\n return true;\n }\n\n return false;\n });\n\n const withEnabledSettings = withoutEmptyGroups.map((group) => ({\n ...group,\n commands: group.commands.map((command) => ({\n ...command,\n isEnabled: true,\n })),\n }));\n\n return withEnabledSettings;\n },\n render: () => {\n let component: any;\n\n let scrollHandler: (() => void) | null = null;\n\n return {\n onStart: (props: SuggestionProps) => {\n component = new ReactRenderer(AIMenuList, {\n props,\n editor: props.editor,\n });\n props.editor.storage.aiCommand.active = true;\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n let yPos = rect.y;\n\n if (\n rect.top + component.element.offsetHeight + 40 >\n window.innerHeight\n ) {\n const diff =\n rect.top +\n component.element.offsetHeight -\n window.innerHeight +\n 40;\n yPos = rect.y - diff;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n const editorXOffset = editorNode.getBoundingClientRect().x;\n const boundigClient = editorNode.getBoundingClientRect();\n\n return new DOMRect(\n rect.x,\n yPos,\n boundigClient.width,\n rect.height\n );\n };\n\n scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n popup?.[0].setProps({\n getReferenceClientRect,\n appendTo: () => document.body,\n content: component.element,\n });\n\n popup?.[0].show();\n },\n\n onUpdate(props: SuggestionProps) {\n component.updateProps(props);\n\n const { view } = props.editor;\n\n const editorNode = view.dom as HTMLElement;\n\n const getReferenceClientRect = () => {\n if (!props.clientRect) {\n return props.editor.storage[extensionName].rect;\n }\n\n const rect = props.clientRect();\n\n if (!rect) {\n return props.editor.storage[extensionName].rect;\n }\n\n // Account for when the editor is bound inside a container that doesn't go all the way to the edge of the screen\n return new DOMRect(rect.x, rect.y, rect.width, rect.height);\n };\n\n let scrollHandler = () => {\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n };\n\n view.dom.parentElement?.addEventListener(\"scroll\", scrollHandler);\n\n // eslint-disable-next-line no-param-reassign\n props.editor.storage[extensionName].rect = props.clientRect\n ? getReferenceClientRect()\n : {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n popup?.[0].setProps({\n getReferenceClientRect,\n });\n },\n\n onKeyDown(props: SuggestionKeyDownProps) {\n if (props.event.key === \"Escape\") {\n popup?.[0].hide();\n\n return true;\n }\n\n if (!popup?.[0].state.isShown) {\n popup?.[0].show();\n }\n\n return component.ref?.onKeyDown(props);\n },\n\n onExit(props) {\n popup?.[0].hide();\n if (scrollHandler) {\n const { view } = props.editor;\n view.dom.parentElement?.removeEventListener(\n \"scroll\",\n scrollHandler\n );\n }\n\n props.editor.storage.aiCommand.active = false;\n props.editor.storage.aiCommand.userPrompt = \"\";\n props.editor.storage.aiCommand.completion = \"\";\n\n component.destroy();\n },\n };\n },\n }),\n ];\n },\n\n addStorage() {\n return {\n rect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n userPrompt: \"\",\n completion: \"\",\n language: \"en\",\n title: \"\",\n active: false,\n };\n },\n});\n\nexport default AICommand;\n"],"names":["Extension","PluginKey","ReactRenderer","Suggestion","tippy","GROUPS","AIMenuList","extensionName","popup","AICommand","create","name","priority","onCreate","t","interactive","trigger","placement","theme","offset","popperOptions","strategy","modifiers","enabled","onHidden","instance","selection","editor","state","chain","focus","insertContentAt","to","storage","aiCommand","completion","deleteNode","run","addProseMirrorPlugins","char","allowSpaces","startOfLine","pluginKey","allow","range","$from","doc","resolve","from","isRootDepth","depth","isParagraph","parent","type","isStartOfNode","textContent","charAt","isInColumn","isActive","afterContent","substring","indexOf","isValidAfterContent","endsWith","command","props","action","items","query","withFilteredCommands","map","group","commands","filter","item","labelNormalized","label","toLowerCase","trim","queryNormalized","aliases","alias","includes","shouldBeHidden","withoutEmptyGroups","length","withEnabledSettings","isEnabled","render","component","scrollHandler","onStart","active","view","editorNode","dom","getReferenceClientRect","clientRect","rect","yPos","y","top","element","offsetHeight","window","innerHeight","diff","editorXOffset","getBoundingClientRect","x","boundigClient","DOMRect","width","height","setProps","parentElement","addEventListener","appendTo","document","body","content","show","onUpdate","updateProps","left","right","bottom","onKeyDown","event","key","hide","isShown","ref","onExit","removeEventListener","userPrompt","destroy","addStorage","language","title"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { openAssetHQType } from "../../types.js";
2
2
  import { TiptapProps } from "./types.js";
3
- export declare const BlockEditor: ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable, autoFocus, }: TiptapProps & {
3
+ export declare const BlockEditor: ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable, autoFocus, dir, }: TiptapProps & {
4
4
  openAssetHQHandler?: openAssetHQType;
5
5
  additionalContext?: Record<string, any>;
6
6
  autoFocus?: boolean;
7
7
  isEditable?: boolean;
8
+ dir?: "ltr" | "rtl" | "auto";
8
9
  }) => import("react").JSX.Element;
9
10
  export default BlockEditor;
10
11
  //# sourceMappingURL=BlockEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockEditor.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,6FAOrB,WAAW,GAAG;IACf,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,gCA6DA,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"BlockEditor.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,eAAO,MAAM,WAAW,kGAQrB,WAAW,GAAG;IACf,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;CAC9B,gCA+DA,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { EditorContent } from "@tiptap/react";
4
4
  import { useMemo, useRef } from "react";
5
5
  import { EditorContext } from "../../context/EditorContext.js";
@@ -15,7 +15,7 @@ import { Sidebar } from "../Sidebar/Sidebar.js";
15
15
  import { ContentItemMenu } from "../menus/ContentItemMenu/ContentItemMenu.js";
16
16
  import { TextMenu } from "../menus/TextMenu/TextMenu.js";
17
17
  import { LinkMenu } from "../menus/index.js";
18
- export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable = true, autoFocus = true })=>{
18
+ export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable = true, autoFocus = true, dir })=>{
19
19
  const menuContainerRef = useRef(null);
20
20
  const editorRef = useRef(null);
21
21
  const { editor, users, characterCount, leftSidebar } = useBlockEditor({
@@ -35,8 +35,9 @@ export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additio
35
35
  children: /*#__PURE__*/ _jsxs("div", {
36
36
  className: "flex h-full overflow-visible",
37
37
  ref: menuContainerRef,
38
+ dir: dir,
38
39
  children: [
39
- /*#__PURE__*/ _jsx(Sidebar, {
40
+ isEditable && /*#__PURE__*/ _jsx(Sidebar, {
40
41
  isOpen: leftSidebar.isOpen,
41
42
  onClose: leftSidebar.close,
42
43
  editor: editor
@@ -52,47 +53,51 @@ export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additio
52
53
  outline: "none"
53
54
  }
54
55
  }),
55
- /*#__PURE__*/ _jsx(ContentItemMenu, {
56
- editor: editor
57
- }),
58
- /*#__PURE__*/ _jsx(LinkMenu, {
59
- editor: editor,
60
- appendTo: menuContainerRef
61
- }),
62
- /*#__PURE__*/ _jsx(TextMenu, {
63
- editor: editor
64
- }),
65
- /*#__PURE__*/ _jsx(IframeMenu, {
66
- editor: editor,
67
- appendTo: menuContainerRef
68
- }),
69
- /*#__PURE__*/ _jsx(SocialMediaMenu, {
70
- editor: editor,
71
- appendTo: menuContainerRef
72
- }),
73
- /*#__PURE__*/ _jsx(InsideLinksMenu, {
74
- editor: editor,
75
- appendTo: menuContainerRef
76
- }),
77
- /*#__PURE__*/ _jsx(ColumnsMenu, {
78
- editor: editor,
79
- appendTo: menuContainerRef
80
- }),
81
- /*#__PURE__*/ _jsx(TableRowMenu, {
82
- editor: editor,
83
- appendTo: menuContainerRef
84
- }),
85
- /*#__PURE__*/ _jsx(TableColumnMenu, {
86
- editor: editor,
87
- appendTo: menuContainerRef
88
- }),
89
- /*#__PURE__*/ _jsx(ImageBlockMenu, {
90
- editor: editor,
91
- appendTo: menuContainerRef
92
- }),
93
- /*#__PURE__*/ _jsx(VideoBlockMenu, {
94
- editor: editor,
95
- appendTo: menuContainerRef
56
+ isEditable && /*#__PURE__*/ _jsxs(_Fragment, {
57
+ children: [
58
+ /*#__PURE__*/ _jsx(ContentItemMenu, {
59
+ editor: editor
60
+ }),
61
+ /*#__PURE__*/ _jsx(LinkMenu, {
62
+ editor: editor,
63
+ appendTo: menuContainerRef
64
+ }),
65
+ /*#__PURE__*/ _jsx(TextMenu, {
66
+ editor: editor
67
+ }),
68
+ /*#__PURE__*/ _jsx(IframeMenu, {
69
+ editor: editor,
70
+ appendTo: menuContainerRef
71
+ }),
72
+ /*#__PURE__*/ _jsx(SocialMediaMenu, {
73
+ editor: editor,
74
+ appendTo: menuContainerRef
75
+ }),
76
+ /*#__PURE__*/ _jsx(InsideLinksMenu, {
77
+ editor: editor,
78
+ appendTo: menuContainerRef
79
+ }),
80
+ /*#__PURE__*/ _jsx(ColumnsMenu, {
81
+ editor: editor,
82
+ appendTo: menuContainerRef
83
+ }),
84
+ /*#__PURE__*/ _jsx(TableRowMenu, {
85
+ editor: editor,
86
+ appendTo: menuContainerRef
87
+ }),
88
+ /*#__PURE__*/ _jsx(TableColumnMenu, {
89
+ editor: editor,
90
+ appendTo: menuContainerRef
91
+ }),
92
+ /*#__PURE__*/ _jsx(ImageBlockMenu, {
93
+ editor: editor,
94
+ appendTo: menuContainerRef
95
+ }),
96
+ /*#__PURE__*/ _jsx(VideoBlockMenu, {
97
+ editor: editor,
98
+ appendTo: menuContainerRef
99
+ })
100
+ ]
96
101
  })
97
102
  ]
98
103
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"sourcesContent":["\"use client\";\nimport { EditorContent } from \"@tiptap/react\";\nimport { useEffect, useMemo, useRef } from \"react\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { useTranslation } from \"@payloadcms/ui/providers/Translation\";\nimport { EditorContext } from \"../../context/EditorContext.js\";\nimport { IframeMenu } from \"../../extensions/Iframe/menus/index.js\";\nimport ImageBlockMenu from \"../../extensions/ImageBlock/components/ImageBlockMenu.js\";\nimport VideoBlockMenu from \"../../extensions/VideoBlock/components/VideoBlockMenu.js\";\nimport { InsideLinksMenu } from \"../../extensions/InsideLinks/menus/index.js\";\nimport { ColumnsMenu } from \"../../extensions/MultiColumn/menus/ColumnsMenu.js\";\nimport { SocialMediaMenu } from \"../../extensions/SocialMedia/menus/index.js\";\nimport {\n TableColumnMenu,\n TableRowMenu,\n} from \"../../extensions/Table/menus/index.js\";\nimport { useBlockEditor } from \"../../hooks/useBlockEditor.js\";\nimport { openAssetHQType } from \"../../types.js\";\nimport { Sidebar } from \"../Sidebar/Sidebar.js\";\nimport { ContentItemMenu } from \"../menus/ContentItemMenu/ContentItemMenu.js\";\nimport { TextMenu } from \"../menus/TextMenu/TextMenu.js\";\nimport { LinkMenu } from \"../menus/index.js\";\nimport { TiptapProps } from \"./types.js\";\nexport const BlockEditor = ({\n handleChange,\n content,\n openAssetHQHandler,\n additionalContext,\n isEditable = true,\n autoFocus = true,\n}: TiptapProps & {\n openAssetHQHandler?: openAssetHQType;\n additionalContext?: Record<string, any>;\n autoFocus?: boolean;\n isEditable?: boolean;\n}) => {\n const menuContainerRef = useRef(null);\n const editorRef = useRef<HTMLDivElement>(null);\n\n const { editor, users, characterCount, leftSidebar } = useBlockEditor({\n content: content,\n handleChange: handleChange,\n openAssetHQHandler: openAssetHQHandler,\n additionalContext: additionalContext,\n autoFocus,\n isEditable,\n });\n\n const displayedUsers = users.slice(0, 3);\n\n const providerValue = useMemo(() => {\n return {};\n }, []);\n\n return (\n editor && (\n <EditorContext.Provider value={providerValue}>\n <div className=\"flex h-full overflow-visible\" ref={menuContainerRef}>\n <Sidebar\n isOpen={leftSidebar.isOpen}\n onClose={leftSidebar.close}\n editor={editor}\n />\n <div className=\"relative flex flex-col flex-1 h-full justify-center items-center \">\n {/* <EditorHeader\n characters={characterCount.characters()}\n users={displayedUsers}\n words={characterCount.words()}\n isSidebarOpen={leftSidebar.isOpen}\n toggleSidebar={leftSidebar.toggle}\n /> */}\n <EditorContent\n editor={editor}\n ref={editorRef}\n className=\"flex-1 overflow-y-visible w-full h-full outline-none outline-offset-0\"\n style={{\n outline: \"none\",\n }}\n />\n <ContentItemMenu editor={editor} />\n <LinkMenu editor={editor} appendTo={menuContainerRef} />\n\n <TextMenu editor={editor} />\n <IframeMenu editor={editor} appendTo={menuContainerRef} />\n <SocialMediaMenu editor={editor} appendTo={menuContainerRef} />\n <InsideLinksMenu editor={editor} appendTo={menuContainerRef} />\n <ColumnsMenu editor={editor} appendTo={menuContainerRef} />\n <TableRowMenu editor={editor} appendTo={menuContainerRef} />\n <TableColumnMenu editor={editor} appendTo={menuContainerRef} />\n <ImageBlockMenu editor={editor} appendTo={menuContainerRef} />\n <VideoBlockMenu editor={editor} appendTo={menuContainerRef} />\n </div>\n </div>\n </EditorContext.Provider>\n )\n );\n};\n\nexport default BlockEditor;\n"],"names":["EditorContent","useMemo","useRef","EditorContext","IframeMenu","ImageBlockMenu","VideoBlockMenu","InsideLinksMenu","ColumnsMenu","SocialMediaMenu","TableColumnMenu","TableRowMenu","useBlockEditor","Sidebar","ContentItemMenu","TextMenu","LinkMenu","BlockEditor","handleChange","content","openAssetHQHandler","additionalContext","isEditable","autoFocus","menuContainerRef","editorRef","editor","users","characterCount","leftSidebar","displayedUsers","slice","providerValue","Provider","value","div","className","ref","isOpen","onClose","close","style","outline","appendTo"],"mappings":"AAAA;;AACA,SAASA,aAAa,QAAQ,gBAAgB;AAC9C,SAAoBC,OAAO,EAAEC,MAAM,QAAQ,QAAQ;AAInD,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,UAAU,QAAQ,yCAAyC;AACpE,OAAOC,oBAAoB,2DAA2D;AACtF,OAAOC,oBAAoB,2DAA2D;AACtF,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SAASC,WAAW,QAAQ,oDAAoD;AAChF,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SACEC,eAAe,EACfC,YAAY,QACP,wCAAwC;AAC/C,SAASC,cAAc,QAAQ,gCAAgC;AAE/D,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SAASC,QAAQ,QAAQ,gCAAgC;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAE7C,OAAO,MAAMC,cAAc,CAAC,EAC1BC,YAAY,EACZC,OAAO,EACPC,kBAAkB,EAClBC,iBAAiB,EACjBC,aAAa,IAAI,EACjBC,YAAY,IAAI,EAMjB;IACC,MAAMC,mBAAmBtB,OAAO;IAChC,MAAMuB,YAAYvB,OAAuB;IAEzC,MAAM,EAAEwB,MAAM,EAAEC,KAAK,EAAEC,cAAc,EAAEC,WAAW,EAAE,GAAGjB,eAAe;QACpEO,SAASA;QACTD,cAAcA;QACdE,oBAAoBA;QACpBC,mBAAmBA;QACnBE;QACAD;IACF;IAEA,MAAMQ,iBAAiBH,MAAMI,KAAK,CAAC,GAAG;IAEtC,MAAMC,gBAAgB/B,QAAQ;QAC5B,OAAO,CAAC;IACV,GAAG,EAAE;IAEL,OACEyB,wBACE,KAACvB,cAAc8B,QAAQ;QAACC,OAAOF;kBAC7B,cAAA,MAACG;YAAIC,WAAU;YAA+BC,KAAKb;;8BACjD,KAACX;oBACCyB,QAAQT,YAAYS,MAAM;oBAC1BC,SAASV,YAAYW,KAAK;oBAC1Bd,QAAQA;;8BAEV,MAACS;oBAAIC,WAAU;;sCAQb,KAACpC;4BACC0B,QAAQA;4BACRW,KAAKZ;4BACLW,WAAU;4BACVK,OAAO;gCACLC,SAAS;4BACX;;sCAEF,KAAC5B;4BAAgBY,QAAQA;;sCACzB,KAACV;4BAASU,QAAQA;4BAAQiB,UAAUnB;;sCAEpC,KAACT;4BAASW,QAAQA;;sCAClB,KAACtB;4BAAWsB,QAAQA;4BAAQiB,UAAUnB;;sCACtC,KAACf;4BAAgBiB,QAAQA;4BAAQiB,UAAUnB;;sCAC3C,KAACjB;4BAAgBmB,QAAQA;4BAAQiB,UAAUnB;;sCAC3C,KAAChB;4BAAYkB,QAAQA;4BAAQiB,UAAUnB;;sCACvC,KAACb;4BAAae,QAAQA;4BAAQiB,UAAUnB;;sCACxC,KAACd;4BAAgBgB,QAAQA;4BAAQiB,UAAUnB;;sCAC3C,KAACnB;4BAAeqB,QAAQA;4BAAQiB,UAAUnB;;sCAC1C,KAAClB;4BAAeoB,QAAQA;4BAAQiB,UAAUnB;;;;;;;AAMtD,EAAE;AAEF,eAAeP,YAAY"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"sourcesContent":["\"use client\";\nimport { EditorContent } from \"@tiptap/react\";\nimport { useEffect, useMemo, useRef } from \"react\";\n\nimport { useLocale } from \"@payloadcms/ui/providers/Locale\";\nimport { useTranslation } from \"@payloadcms/ui/providers/Translation\";\nimport { EditorContext } from \"../../context/EditorContext.js\";\nimport { IframeMenu } from \"../../extensions/Iframe/menus/index.js\";\nimport ImageBlockMenu from \"../../extensions/ImageBlock/components/ImageBlockMenu.js\";\nimport VideoBlockMenu from \"../../extensions/VideoBlock/components/VideoBlockMenu.js\";\nimport { InsideLinksMenu } from \"../../extensions/InsideLinks/menus/index.js\";\nimport { ColumnsMenu } from \"../../extensions/MultiColumn/menus/ColumnsMenu.js\";\nimport { SocialMediaMenu } from \"../../extensions/SocialMedia/menus/index.js\";\nimport {\n TableColumnMenu,\n TableRowMenu,\n} from \"../../extensions/Table/menus/index.js\";\nimport { useBlockEditor } from \"../../hooks/useBlockEditor.js\";\nimport { openAssetHQType } from \"../../types.js\";\nimport { Sidebar } from \"../Sidebar/Sidebar.js\";\nimport { ContentItemMenu } from \"../menus/ContentItemMenu/ContentItemMenu.js\";\nimport { TextMenu } from \"../menus/TextMenu/TextMenu.js\";\nimport { LinkMenu } from \"../menus/index.js\";\nimport { TiptapProps } from \"./types.js\";\nexport const BlockEditor = ({\n handleChange,\n content,\n openAssetHQHandler,\n additionalContext,\n isEditable = true,\n autoFocus = true,\n dir,\n}: TiptapProps & {\n openAssetHQHandler?: openAssetHQType;\n additionalContext?: Record<string, any>;\n autoFocus?: boolean;\n isEditable?: boolean;\n dir?: \"ltr\" | \"rtl\" | \"auto\";\n}) => {\n const menuContainerRef = useRef(null);\n const editorRef = useRef<HTMLDivElement>(null);\n\n const { editor, users, characterCount, leftSidebar } = useBlockEditor({\n content: content,\n handleChange: handleChange,\n openAssetHQHandler: openAssetHQHandler,\n additionalContext: additionalContext,\n autoFocus,\n isEditable,\n });\n\n const displayedUsers = users.slice(0, 3);\n\n const providerValue = useMemo(() => {\n return {};\n }, []);\n\n return (\n editor && (\n <EditorContext.Provider value={providerValue}>\n <div\n className=\"flex h-full overflow-visible\"\n ref={menuContainerRef}\n dir={dir}\n >\n {isEditable && (\n <Sidebar\n isOpen={leftSidebar.isOpen}\n onClose={leftSidebar.close}\n editor={editor}\n />\n )}\n <div className=\"relative flex flex-col flex-1 h-full justify-center items-center \">\n <EditorContent\n editor={editor}\n ref={editorRef}\n className=\"flex-1 overflow-y-visible w-full h-full outline-none outline-offset-0\"\n style={{\n outline: \"none\",\n }}\n />\n {isEditable && (\n <>\n <ContentItemMenu editor={editor} />\n <LinkMenu editor={editor} appendTo={menuContainerRef} />\n <TextMenu editor={editor} />\n <IframeMenu editor={editor} appendTo={menuContainerRef} />\n <SocialMediaMenu editor={editor} appendTo={menuContainerRef} />\n <InsideLinksMenu editor={editor} appendTo={menuContainerRef} />\n <ColumnsMenu editor={editor} appendTo={menuContainerRef} />\n <TableRowMenu editor={editor} appendTo={menuContainerRef} />\n <TableColumnMenu editor={editor} appendTo={menuContainerRef} />\n <ImageBlockMenu editor={editor} appendTo={menuContainerRef} />\n <VideoBlockMenu editor={editor} appendTo={menuContainerRef} />\n </>\n )}\n </div>\n </div>\n </EditorContext.Provider>\n )\n );\n};\n\nexport default BlockEditor;\n"],"names":["EditorContent","useMemo","useRef","EditorContext","IframeMenu","ImageBlockMenu","VideoBlockMenu","InsideLinksMenu","ColumnsMenu","SocialMediaMenu","TableColumnMenu","TableRowMenu","useBlockEditor","Sidebar","ContentItemMenu","TextMenu","LinkMenu","BlockEditor","handleChange","content","openAssetHQHandler","additionalContext","isEditable","autoFocus","dir","menuContainerRef","editorRef","editor","users","characterCount","leftSidebar","displayedUsers","slice","providerValue","Provider","value","div","className","ref","isOpen","onClose","close","style","outline","appendTo"],"mappings":"AAAA;;AACA,SAASA,aAAa,QAAQ,gBAAgB;AAC9C,SAAoBC,OAAO,EAAEC,MAAM,QAAQ,QAAQ;AAInD,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,UAAU,QAAQ,yCAAyC;AACpE,OAAOC,oBAAoB,2DAA2D;AACtF,OAAOC,oBAAoB,2DAA2D;AACtF,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SAASC,WAAW,QAAQ,oDAAoD;AAChF,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SACEC,eAAe,EACfC,YAAY,QACP,wCAAwC;AAC/C,SAASC,cAAc,QAAQ,gCAAgC;AAE/D,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,eAAe,QAAQ,8CAA8C;AAC9E,SAASC,QAAQ,QAAQ,gCAAgC;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAE7C,OAAO,MAAMC,cAAc,CAAC,EAC1BC,YAAY,EACZC,OAAO,EACPC,kBAAkB,EAClBC,iBAAiB,EACjBC,aAAa,IAAI,EACjBC,YAAY,IAAI,EAChBC,GAAG,EAOJ;IACC,MAAMC,mBAAmBvB,OAAO;IAChC,MAAMwB,YAAYxB,OAAuB;IAEzC,MAAM,EAAEyB,MAAM,EAAEC,KAAK,EAAEC,cAAc,EAAEC,WAAW,EAAE,GAAGlB,eAAe;QACpEO,SAASA;QACTD,cAAcA;QACdE,oBAAoBA;QACpBC,mBAAmBA;QACnBE;QACAD;IACF;IAEA,MAAMS,iBAAiBH,MAAMI,KAAK,CAAC,GAAG;IAEtC,MAAMC,gBAAgBhC,QAAQ;QAC5B,OAAO,CAAC;IACV,GAAG,EAAE;IAEL,OACE0B,wBACE,KAACxB,cAAc+B,QAAQ;QAACC,OAAOF;kBAC7B,cAAA,MAACG;YACCC,WAAU;YACVC,KAAKb;YACLD,KAAKA;;gBAEJF,4BACC,KAACT;oBACC0B,QAAQT,YAAYS,MAAM;oBAC1BC,SAASV,YAAYW,KAAK;oBAC1Bd,QAAQA;;8BAGZ,MAACS;oBAAIC,WAAU;;sCACb,KAACrC;4BACC2B,QAAQA;4BACRW,KAAKZ;4BACLW,WAAU;4BACVK,OAAO;gCACLC,SAAS;4BACX;;wBAEDrB,4BACC;;8CACE,KAACR;oCAAgBa,QAAQA;;8CACzB,KAACX;oCAASW,QAAQA;oCAAQiB,UAAUnB;;8CACpC,KAACV;oCAASY,QAAQA;;8CAClB,KAACvB;oCAAWuB,QAAQA;oCAAQiB,UAAUnB;;8CACtC,KAAChB;oCAAgBkB,QAAQA;oCAAQiB,UAAUnB;;8CAC3C,KAAClB;oCAAgBoB,QAAQA;oCAAQiB,UAAUnB;;8CAC3C,KAACjB;oCAAYmB,QAAQA;oCAAQiB,UAAUnB;;8CACvC,KAACd;oCAAagB,QAAQA;oCAAQiB,UAAUnB;;8CACxC,KAACf;oCAAgBiB,QAAQA;oCAAQiB,UAAUnB;;8CAC3C,KAACpB;oCAAesB,QAAQA;oCAAQiB,UAAUnB;;8CAC1C,KAACnB;oCAAeqB,QAAQA;oCAAQiB,UAAUnB;;;;;;;;;AAQ1D,EAAE;AAEF,eAAeR,YAAY"}
@@ -107,7 +107,7 @@
107
107
  }
108
108
 
109
109
  /*
110
- ! tailwindcss v3.4.12 | MIT License | https://tailwindcss.com
110
+ ! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com
111
111
  */
112
112
 
113
113
  /*