payload-richtext-tiptap 0.0.150 → 0.0.152
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/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.d.ts +2 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js +3 -2
- package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts +3 -3
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js +21 -20
- package/dist/src/fields/TiptapEditor/features/BlockEditor/BlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.d.ts +4 -3
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js +23 -23
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/tiptapSchema.d.ts +24 -24
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -3,7 +3,8 @@ import { AdditionalContextType } from '../../features/BlockEditor/types.js';
|
|
|
3
3
|
type Props = {
|
|
4
4
|
body: any;
|
|
5
5
|
additionalContext?: AdditionalContextType;
|
|
6
|
+
containerClassName?: string;
|
|
6
7
|
};
|
|
7
|
-
export declare const ServersideTiptapBody: ({ body, additionalContext }: Props) => React.JSX.Element;
|
|
8
|
+
export declare const ServersideTiptapBody: ({ body, additionalContext, containerClassName }: Props) => React.JSX.Element;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=ServersideTiptapBody.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServersideTiptapBody.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA0E1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"ServersideTiptapBody.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA0E1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAK5E,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC;IACV,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAsCF,eAAO,MAAM,oBAAoB,oDAAqD,KAAK,sBAyF1F,CAAC"}
|
|
@@ -42,6 +42,7 @@ import { FacebookServerside } from './FacebookServerside.js';
|
|
|
42
42
|
import { VideoBlockServerside } from './VideoBlockServerside.js';
|
|
43
43
|
import { InsideLinkServerside } from './InsideLinkServerside.js';
|
|
44
44
|
import { IFrameServerside } from './IFrameServerside.js';
|
|
45
|
+
import { cn } from '../../lib/utils/index.js';
|
|
45
46
|
const DEFAULT_LANG = 'en';
|
|
46
47
|
// Initialize i18n based on additionalContext
|
|
47
48
|
const initializeI18n = (additionalContext)=>{
|
|
@@ -76,14 +77,14 @@ const initializeI18n = (additionalContext)=>{
|
|
|
76
77
|
});
|
|
77
78
|
}
|
|
78
79
|
};
|
|
79
|
-
export const ServersideTiptapBody = ({ body, additionalContext })=>{
|
|
80
|
+
export const ServersideTiptapBody = ({ body, additionalContext, containerClassName })=>{
|
|
80
81
|
if (!body) return null;
|
|
81
82
|
// Initialize i18n synchronously
|
|
82
83
|
initializeI18n(additionalContext);
|
|
83
84
|
const textDirection = additionalContext?.textDirection || i18n.dir();
|
|
84
85
|
return /*#__PURE__*/ _jsx(_Fragment, {
|
|
85
86
|
children: /*#__PURE__*/ _jsx("div", {
|
|
86
|
-
className:
|
|
87
|
+
className: cn('tiptap ProseMirror min-h-full', containerClassName),
|
|
87
88
|
dir: textDirection,
|
|
88
89
|
dangerouslySetInnerHTML: {
|
|
89
90
|
__html: generateHTML(body, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.tsx"],"sourcesContent":["import React from 'react';\nimport { generateHTML } from '@tiptap/html';\nimport i18n from 'i18next';\n// import { Text } from \"@tiptap/extension-text\";\nimport {\n StarterKit,\n Highlight,\n // CharacterCount,\n Underline,\n Placeholder,\n // Emoji,\n TextAlign,\n TextStyle,\n FontFamily,\n Typography,\n // Color,\n // Dropcursor,\n // CollaborationCursor,\n Subscript,\n // TableOfContents,\n Superscript,\n CodeBlock,\n // BulletList,\n // OrderedList,\n // Collaboration,\n // TaskItem,\n // TaskList,\n // FileHandler,\n // Selection,\n // Focus,\n Table,\n HorizontalRule,\n Heading,\n Document,\n // TrailingNode,\n // FontSize,\n // Figure,\n // Figcaption,\n BlockquoteFigure,\n // Quote,\n // QuoteCaption,\n Link,\n // ImageUpload,\n // ImageBlock,\n // VideoBlock,\n // AudioBlock,\n // Youtube,\n // Instagram,\n // Columns,\n Paragraph,\n // InsideLinks,\n TableCell,\n TableHeader,\n TableRow,\n Column,\n LinkPreview\n // Twitter,\n // Linkedin,\n // Tiktok,\n // Facebook,\n // Instagram,\n // Youtube,\n} from '../index.js';\n\nimport { TwitterBlockServerside } from './TwitterBlockServerside.js';\nimport { YouTubeServerside } from './YouTubeServerside.js';\nimport { InstagramServerside } from './InstagramServerside.js';\nimport { ImageBlockServerside } from './ImageBlockServerside.js';\nimport { TiktokServerside } from './TiktokServerside.js';\nimport { LinkedinServerside } from './LinkedinServerside.js';\nimport { FacebookServerside } from './FacebookServerside.js';\nimport { VideoBlockServerside } from './VideoBlockServerside.js';\nimport { InsideLinkServerside } from './InsideLinkServerside.js';\nimport { IFrameServerside } from './IFrameServerside.js';\nimport { AdditionalContextType } from '../../features/BlockEditor/types.js';\n\nconst DEFAULT_LANG = 'en';\n\ntype Props = {\n body: any;\n additionalContext?: AdditionalContextType;\n};\n\n// Initialize i18n based on additionalContext\nconst initializeI18n = (additionalContext?: AdditionalContextType) => {\n if (!additionalContext) {\n i18n.init({\n fallbackLng: DEFAULT_LANG,\n lng: DEFAULT_LANG,\n returnEmptyString: true,\n resources: {}\n });\n return;\n }\n\n if (additionalContext.language && additionalContext.translations) {\n i18n.init({\n fallbackLng: additionalContext.language,\n lng: additionalContext.language,\n returnEmptyString: true,\n resources: {\n [additionalContext.language]: {\n translation: additionalContext.translations\n }\n }\n });\n return;\n }\n\n if (additionalContext.language) {\n i18n.init({\n fallbackLng: additionalContext?.language,\n lng: additionalContext?.language,\n returnEmptyString: true,\n resources: {}\n });\n }\n};\n\nexport const ServersideTiptapBody = ({ body, additionalContext }: Props) => {\n if (!body) return null;\n\n // Initialize i18n synchronously\n initializeI18n(additionalContext);\n\n const textDirection = additionalContext?.textDirection || i18n.dir();\n\n return (\n <>\n <div\n className='tiptap ProseMirror min-h-full'\n dir={textDirection}\n dangerouslySetInnerHTML={{\n __html: generateHTML(body, [\n // Text,\n StarterKit.configure({\n paragraph: false,\n document: false,\n dropcursor: false,\n heading: false,\n horizontalRule: false,\n blockquote: false,\n history: false,\n codeBlock: false,\n }),\n Highlight,\n // CharacterCount,\n Underline,\n Placeholder,\n // Emoji,\n TextAlign,\n TextStyle,\n FontFamily,\n Typography,\n // Color,\n // Dropcursor,\n // CollaborationCursor,\n // Subscript,\n // TableOfContents,\n // Superscript,\n CodeBlock,\n // BulletList,\n // OrderedList,\n // Collaboration,\n // TaskItem,\n // TaskList,\n // FileHandler,\n // Selection,\n // Focus,\n Table,\n HorizontalRule,\n Heading,\n Document,\n // TrailingNode,\n // SlashCommand,\n // FontSize,\n // Figure,\n // Figcaption,\n BlockquoteFigure,\n // Quote,\n // QuoteCaption,\n ImageBlockServerside,\n VideoBlockServerside,\n // AudioBlock,\n // Columns,\n TwitterBlockServerside,\n InstagramServerside,\n YouTubeServerside,\n Paragraph,\n Superscript,\n Subscript,\n Link,\n TiktokServerside,\n LinkedinServerside,\n FacebookServerside,\n InsideLinkServerside,\n IFrameServerside,\n // InsideLinks,\n TableCell,\n TableHeader,\n TableRow,\n Column,\n LinkPreview\n ])\n }}\n />\n </>\n );\n};\n"],"names":["React","generateHTML","i18n","StarterKit","Highlight","Underline","Placeholder","TextAlign","TextStyle","FontFamily","Typography","Subscript","Superscript","CodeBlock","Table","HorizontalRule","Heading","Document","BlockquoteFigure","Link","Paragraph","TableCell","TableHeader","TableRow","Column","LinkPreview","TwitterBlockServerside","YouTubeServerside","InstagramServerside","ImageBlockServerside","TiktokServerside","LinkedinServerside","FacebookServerside","VideoBlockServerside","InsideLinkServerside","IFrameServerside","DEFAULT_LANG","initializeI18n","additionalContext","init","fallbackLng","lng","returnEmptyString","resources","language","translations","translation","ServersideTiptapBody","body","textDirection","dir","div","className","dangerouslySetInnerHTML","__html","configure","paragraph","document","dropcursor","heading","horizontalRule","blockquote","history","codeBlock"],"mappings":";AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,YAAY,QAAQ,eAAe;AAC5C,OAAOC,UAAU,UAAU;AAC3B,iDAAiD;AACjD,SACEC,UAAU,EACVC,SAAS,EAETC,AADA,kBAAkB;AAClBA,SAAS,EACTC,WAAW,EAEXC,AADA,SAAS;AACTA,SAAS,EACTC,SAAS,EACTC,UAAU,EACVC,UAAU,EAIVC,AAHA,SAAS;AACT,cAAc;AACd,uBAAuB;AACvBA,SAAS,EAETC,AADA,mBAAmB;AACnBA,WAAW,EACXC,SAAS,EASTC,AARA,cAAc;AACd,eAAe;AACf,iBAAiB;AACjB,YAAY;AACZ,YAAY;AACZ,eAAe;AACf,aAAa;AACb,SAAS;AACTA,KAAK,EACLC,cAAc,EACdC,OAAO,EACPC,QAAQ,EAKRC,AAJA,gBAAgB;AAChB,YAAY;AACZ,UAAU;AACV,cAAc;AACdA,gBAAgB,EAGhBC,AAFA,SAAS;AACT,gBAAgB;AAChBA,IAAI,EAQJC,AAPA,eAAe;AACf,gBAAgB;AAChB,gBAAgB;AAChB,cAAc;AACd,WAAW;AACX,aAAa;AACb,WAAW;AACXA,SAAS,EAETC,AADA,eAAe;AACfA,SAAS,EACTC,WAAW,EACXC,QAAQ,EACRC,MAAM,EACNC,WAAW,QAON,cAAc;AAErB,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,mBAAmB,QAAQ,2BAA2B;AAC/D,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,gBAAgB,QAAQ,wBAAwB;AACzD,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,oBAAoB,QAAQ,4BAA4B;AACjE,SAASC,gBAAgB,QAAQ,wBAAwB;
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.tsx"],"sourcesContent":["import React from 'react';\nimport { generateHTML } from '@tiptap/html';\nimport i18n from 'i18next';\n// import { Text } from \"@tiptap/extension-text\";\nimport {\n StarterKit,\n Highlight,\n // CharacterCount,\n Underline,\n Placeholder,\n // Emoji,\n TextAlign,\n TextStyle,\n FontFamily,\n Typography,\n // Color,\n // Dropcursor,\n // CollaborationCursor,\n Subscript,\n // TableOfContents,\n Superscript,\n CodeBlock,\n // BulletList,\n // OrderedList,\n // Collaboration,\n // TaskItem,\n // TaskList,\n // FileHandler,\n // Selection,\n // Focus,\n Table,\n HorizontalRule,\n Heading,\n Document,\n // TrailingNode,\n // FontSize,\n // Figure,\n // Figcaption,\n BlockquoteFigure,\n // Quote,\n // QuoteCaption,\n Link,\n // ImageUpload,\n // ImageBlock,\n // VideoBlock,\n // AudioBlock,\n // Youtube,\n // Instagram,\n // Columns,\n Paragraph,\n // InsideLinks,\n TableCell,\n TableHeader,\n TableRow,\n Column,\n LinkPreview\n // Twitter,\n // Linkedin,\n // Tiktok,\n // Facebook,\n // Instagram,\n // Youtube,\n} from '../index.js';\n\nimport { TwitterBlockServerside } from './TwitterBlockServerside.js';\nimport { YouTubeServerside } from './YouTubeServerside.js';\nimport { InstagramServerside } from './InstagramServerside.js';\nimport { ImageBlockServerside } from './ImageBlockServerside.js';\nimport { TiktokServerside } from './TiktokServerside.js';\nimport { LinkedinServerside } from './LinkedinServerside.js';\nimport { FacebookServerside } from './FacebookServerside.js';\nimport { VideoBlockServerside } from './VideoBlockServerside.js';\nimport { InsideLinkServerside } from './InsideLinkServerside.js';\nimport { IFrameServerside } from './IFrameServerside.js';\nimport { AdditionalContextType } from '../../features/BlockEditor/types.js';\nimport { cn } from '../../lib/utils/index.js';\n\nconst DEFAULT_LANG = 'en';\n\ntype Props = {\n body: any;\n additionalContext?: AdditionalContextType;\n containerClassName?: string;\n};\n\n// Initialize i18n based on additionalContext\nconst initializeI18n = (additionalContext?: AdditionalContextType) => {\n if (!additionalContext) {\n i18n.init({\n fallbackLng: DEFAULT_LANG,\n lng: DEFAULT_LANG,\n returnEmptyString: true,\n resources: {}\n });\n return;\n }\n\n if (additionalContext.language && additionalContext.translations) {\n i18n.init({\n fallbackLng: additionalContext.language,\n lng: additionalContext.language,\n returnEmptyString: true,\n resources: {\n [additionalContext.language]: {\n translation: additionalContext.translations\n }\n }\n });\n return;\n }\n\n if (additionalContext.language) {\n i18n.init({\n fallbackLng: additionalContext?.language,\n lng: additionalContext?.language,\n returnEmptyString: true,\n resources: {}\n });\n }\n};\n\nexport const ServersideTiptapBody = ({ body, additionalContext, containerClassName }: Props) => {\n if (!body) return null;\n\n // Initialize i18n synchronously\n initializeI18n(additionalContext);\n\n const textDirection = additionalContext?.textDirection || i18n.dir();\n\n return (\n <>\n <div\n className={cn('tiptap ProseMirror min-h-full', containerClassName)}\n dir={textDirection}\n dangerouslySetInnerHTML={{\n __html: generateHTML(body, [\n // Text,\n StarterKit.configure({\n paragraph: false,\n document: false,\n dropcursor: false,\n heading: false,\n horizontalRule: false,\n blockquote: false,\n history: false,\n codeBlock: false,\n }),\n Highlight,\n // CharacterCount,\n Underline,\n Placeholder,\n // Emoji,\n TextAlign,\n TextStyle,\n FontFamily,\n Typography,\n // Color,\n // Dropcursor,\n // CollaborationCursor,\n // Subscript,\n // TableOfContents,\n // Superscript,\n CodeBlock,\n // BulletList,\n // OrderedList,\n // Collaboration,\n // TaskItem,\n // TaskList,\n // FileHandler,\n // Selection,\n // Focus,\n Table,\n HorizontalRule,\n Heading,\n Document,\n // TrailingNode,\n // SlashCommand,\n // FontSize,\n // Figure,\n // Figcaption,\n BlockquoteFigure,\n // Quote,\n // QuoteCaption,\n ImageBlockServerside,\n VideoBlockServerside,\n // AudioBlock,\n // Columns,\n TwitterBlockServerside,\n InstagramServerside,\n YouTubeServerside,\n Paragraph,\n Superscript,\n Subscript,\n Link,\n TiktokServerside,\n LinkedinServerside,\n FacebookServerside,\n InsideLinkServerside,\n IFrameServerside,\n // InsideLinks,\n TableCell,\n TableHeader,\n TableRow,\n Column,\n LinkPreview\n ])\n }}\n />\n </>\n );\n};\n"],"names":["React","generateHTML","i18n","StarterKit","Highlight","Underline","Placeholder","TextAlign","TextStyle","FontFamily","Typography","Subscript","Superscript","CodeBlock","Table","HorizontalRule","Heading","Document","BlockquoteFigure","Link","Paragraph","TableCell","TableHeader","TableRow","Column","LinkPreview","TwitterBlockServerside","YouTubeServerside","InstagramServerside","ImageBlockServerside","TiktokServerside","LinkedinServerside","FacebookServerside","VideoBlockServerside","InsideLinkServerside","IFrameServerside","cn","DEFAULT_LANG","initializeI18n","additionalContext","init","fallbackLng","lng","returnEmptyString","resources","language","translations","translation","ServersideTiptapBody","body","containerClassName","textDirection","dir","div","className","dangerouslySetInnerHTML","__html","configure","paragraph","document","dropcursor","heading","horizontalRule","blockquote","history","codeBlock"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { openAssetHQType } from
|
|
2
|
-
import { AdditionalContextType, FetchSiteMetadataType, TiptapProps } from
|
|
1
|
+
import { openAssetHQType } from '../../types.js';
|
|
2
|
+
import { AdditionalContextType, FetchSiteMetadataType, TiptapProps } from './types.js';
|
|
3
3
|
export declare const BlockEditor: ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable, autoFocus, dir, fetchSiteMetadata, }: TiptapProps & {
|
|
4
4
|
openAssetHQHandler?: openAssetHQType;
|
|
5
5
|
additionalContext?: AdditionalContextType;
|
|
6
6
|
fetchSiteMetadata?: FetchSiteMetadataType;
|
|
7
7
|
autoFocus?: boolean;
|
|
8
8
|
isEditable?: boolean;
|
|
9
|
-
dir?: "ltr" | "rtl"
|
|
9
|
+
dir?: "ltr" | "rtl";
|
|
10
10
|
}) => import("react").JSX.Element;
|
|
11
11
|
export default BlockEditor;
|
|
12
12
|
//# 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":"AAcA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"BlockEditor.d.ts","sourceRoot":"","sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAMtF,eAAO,MAAM,WAAW,qHASrB,WAAW,GAAG;IACf,kBAAkB,CAAC,EAAE,eAAe,CAAA;IACpC,iBAAiB,CAAC,EAAE,qBAAqB,CAAA;IACzC,iBAAiB,CAAC,EAAE,qBAAqB,CAAA;IACzC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;CACpB,gCAyFA,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { EditorContent } from
|
|
4
|
-
import { useEffect, useMemo, useRef } from
|
|
5
|
-
import i18n from
|
|
6
|
-
import { EditorContext } from
|
|
7
|
-
import { IframeMenu } from
|
|
8
|
-
import ImageBlockMenu from
|
|
9
|
-
import { InsideLinksMenu } from
|
|
10
|
-
import { ColumnsMenu } from
|
|
11
|
-
import { SocialMediaMenu } from
|
|
12
|
-
import VideoBlockMenu from
|
|
13
|
-
import { useBlockEditor } from
|
|
14
|
-
import { ContentItemMenu } from
|
|
15
|
-
import { TextMenu } from
|
|
16
|
-
import { LinkMenu } from
|
|
17
|
-
import i18next from
|
|
18
|
-
import ILinkPreviewMenu from
|
|
19
|
-
const DEFAULT_LANG =
|
|
3
|
+
import { EditorContent } from '@tiptap/react';
|
|
4
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
5
|
+
import i18n from 'i18next';
|
|
6
|
+
import { EditorContext } from '../../context/EditorContext.js';
|
|
7
|
+
import { IframeMenu } from '../../extensions/Iframe/menus/index.js';
|
|
8
|
+
import ImageBlockMenu from '../../extensions/ImageBlock/components/ImageBlockMenu.js';
|
|
9
|
+
import { InsideLinksMenu } from '../../extensions/InsideLinks/menus/index.js';
|
|
10
|
+
import { ColumnsMenu } from '../../extensions/MultiColumn/menus/ColumnsMenu.js';
|
|
11
|
+
import { SocialMediaMenu } from '../../extensions/SocialMedia/menus/index.js';
|
|
12
|
+
import VideoBlockMenu from '../../extensions/VideoBlock/components/VideoBlockMenu.js';
|
|
13
|
+
import { useBlockEditor } from '../../hooks/useBlockEditor.js';
|
|
14
|
+
import { ContentItemMenu } from '../menus/ContentItemMenu/ContentItemMenu.js';
|
|
15
|
+
import { TextMenu } from '../menus/TextMenu/TextMenu.js';
|
|
16
|
+
import { LinkMenu } from '../menus/index.js';
|
|
17
|
+
import i18next from 'i18next';
|
|
18
|
+
import ILinkPreviewMenu from '../../extensions/LinkPreview/menus/linkPreviewMenu.js';
|
|
19
|
+
const DEFAULT_LANG = 'en';
|
|
20
20
|
export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additionalContext, isEditable = true, autoFocus = true, dir, fetchSiteMetadata })=>{
|
|
21
21
|
const menuContainerRef = useRef(null);
|
|
22
22
|
const editorRef = useRef(null);
|
|
@@ -26,7 +26,8 @@ export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additio
|
|
|
26
26
|
openAssetHQHandler: openAssetHQHandler,
|
|
27
27
|
additionalContext: additionalContext,
|
|
28
28
|
autoFocus,
|
|
29
|
-
isEditable
|
|
29
|
+
isEditable,
|
|
30
|
+
dir
|
|
30
31
|
});
|
|
31
32
|
const displayedUsers = users.slice(0, 3);
|
|
32
33
|
const providerValue = useMemo(()=>{
|
|
@@ -82,7 +83,7 @@ export const BlockEditor = ({ handleChange, content, openAssetHQHandler, additio
|
|
|
82
83
|
ref: editorRef,
|
|
83
84
|
className: "flex-1 overflow-y-visible w-full h-full outline-none outline-offset-0",
|
|
84
85
|
style: {
|
|
85
|
-
outline:
|
|
86
|
+
outline: 'none'
|
|
86
87
|
}
|
|
87
88
|
}),
|
|
88
89
|
isEditable && /*#__PURE__*/ _jsxs(_Fragment, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/features/BlockEditor/BlockEditor.tsx"],"sourcesContent":["
|
|
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'\nimport i18n from 'i18next'\n\nimport { EditorContext } from '../../context/EditorContext.js'\nimport { IframeMenu } from '../../extensions/Iframe/menus/index.js'\nimport ImageBlockMenu from '../../extensions/ImageBlock/components/ImageBlockMenu.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'\n\nimport VideoBlockMenu from '../../extensions/VideoBlock/components/VideoBlockMenu.js'\nimport { useBlockEditor } from '../../hooks/useBlockEditor.js'\nimport { openAssetHQType } from '../../types.js'\nimport { ContentItemMenu } from '../menus/ContentItemMenu/ContentItemMenu.js'\nimport { TextMenu } from '../menus/TextMenu/TextMenu.js'\nimport { LinkMenu } from '../menus/index.js'\nimport { AdditionalContextType, FetchSiteMetadataType, TiptapProps } from './types.js'\nimport i18next from 'i18next'\nimport ILinkPreviewMenu from '../../extensions/LinkPreview/menus/linkPreviewMenu.js'\n\nconst DEFAULT_LANG = 'en'\n\nexport const BlockEditor = ({\n handleChange,\n content,\n openAssetHQHandler,\n additionalContext,\n isEditable = true,\n autoFocus = true,\n dir,\n fetchSiteMetadata,\n}: TiptapProps & {\n openAssetHQHandler?: openAssetHQType\n additionalContext?: AdditionalContextType\n fetchSiteMetadata?: FetchSiteMetadataType\n autoFocus?: boolean\n isEditable?: boolean\n dir?: 'ltr' | 'rtl'\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 dir,\n })\n\n const displayedUsers = users.slice(0, 3)\n const providerValue = useMemo(() => {\n return {}\n }, [])\n useEffect(() => {\n if (!additionalContext) {\n i18n.init({\n fallbackLng: DEFAULT_LANG,\n lng: DEFAULT_LANG,\n returnEmptyString: true,\n resources: {},\n })\n return\n }\n\n if (additionalContext.language && additionalContext.translations) {\n i18n.init({\n fallbackLng: additionalContext.language,\n lng: additionalContext.language,\n returnEmptyString: true,\n resources: {\n [additionalContext.language]: {\n translation: additionalContext.translations,\n },\n },\n })\n return\n }\n if (additionalContext.language) {\n i18n.init({\n fallbackLng: additionalContext?.language,\n lng: additionalContext?.language,\n returnEmptyString: true,\n resources: {},\n })\n }\n }, [additionalContext])\n const sectionDir = dir || i18next.dir()\n return (\n editor && (\n <EditorContext.Provider value={providerValue}>\n <div className='flex h-full overflow-visible' ref={menuContainerRef} dir={sectionDir}>\n <div className='relative flex flex-col flex-1 h-full justify-center items-center '>\n <EditorContent\n dir={sectionDir}\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} dir={i18next.dir()} />\n <ILinkPreviewMenu\n editor={editor}\n appendTo={menuContainerRef}\n fetchSiteMetadata={fetchSiteMetadata}\n />\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 <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","useEffect","useMemo","useRef","i18n","EditorContext","IframeMenu","ImageBlockMenu","InsideLinksMenu","ColumnsMenu","SocialMediaMenu","VideoBlockMenu","useBlockEditor","ContentItemMenu","TextMenu","LinkMenu","i18next","ILinkPreviewMenu","DEFAULT_LANG","BlockEditor","handleChange","content","openAssetHQHandler","additionalContext","isEditable","autoFocus","dir","fetchSiteMetadata","menuContainerRef","editorRef","editor","users","characterCount","leftSidebar","displayedUsers","slice","providerValue","init","fallbackLng","lng","returnEmptyString","resources","language","translations","translation","sectionDir","Provider","value","div","className","ref","style","outline","appendTo"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Editor } from
|
|
2
|
-
import { openAssetHQType } from
|
|
1
|
+
import { Editor } from '@tiptap/react';
|
|
2
|
+
import { openAssetHQType } from '../types.js';
|
|
3
3
|
declare global {
|
|
4
4
|
interface Window {
|
|
5
5
|
editor: Editor | null;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
export declare const useBlockEditor: ({ content, handleChange, openAssetHQHandler, additionalContext, autoFocus, isEditable, }: {
|
|
8
|
+
export declare const useBlockEditor: ({ content, handleChange, openAssetHQHandler, additionalContext, autoFocus, isEditable, dir, }: {
|
|
9
9
|
content: {
|
|
10
10
|
html: string;
|
|
11
11
|
json: any;
|
|
@@ -15,6 +15,7 @@ export declare const useBlockEditor: ({ content, handleChange, openAssetHQHandle
|
|
|
15
15
|
additionalContext?: Record<string, any>;
|
|
16
16
|
autoFocus: boolean;
|
|
17
17
|
isEditable?: boolean;
|
|
18
|
+
dir?: "ltr" | "rtl";
|
|
18
19
|
}) => {
|
|
19
20
|
editor: Editor;
|
|
20
21
|
users: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBlockEditor.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/hooks/useBlockEditor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAa,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"useBlockEditor.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/hooks/useBlockEditor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAa,MAAM,eAAe,CAAA;AAQjD,OAAO,EAAmB,eAAe,EAAE,MAAM,aAAa,CAAA;AAG9D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KACtB;CACF;AAID,eAAO,MAAM,cAAc,kGAQxB;IACD,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,CAAA;IACpC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;IAClC,kBAAkB,CAAC,EAAE,eAAe,CAAA;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;CACpB;;;;;CA+FA,CAAA"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
import { useEffect, useMemo } from
|
|
3
|
-
import { useEditor } from
|
|
4
|
-
import ExtensionKit from
|
|
5
|
-
import { useSidebar } from
|
|
6
|
-
import TurndownService from
|
|
7
|
-
import { gfm } from
|
|
8
|
-
import i18next from
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useMemo } from 'react';
|
|
3
|
+
import { useEditor } from '@tiptap/react';
|
|
4
|
+
import ExtensionKit from '../extensions/extension-kit.js';
|
|
5
|
+
import { useSidebar } from './useSidebar.js';
|
|
6
|
+
import TurndownService from 'turndown';
|
|
7
|
+
import { gfm } from 'turndown-plugin-gfm';
|
|
8
|
+
import i18next from 'i18next';
|
|
9
9
|
const dummyAssetHqHandler = (listener, file)=>{};
|
|
10
|
-
export const useBlockEditor = ({ content, handleChange, openAssetHQHandler, additionalContext, autoFocus, isEditable })=>{
|
|
10
|
+
export const useBlockEditor = ({ content, handleChange, openAssetHQHandler, additionalContext, autoFocus, isEditable, dir })=>{
|
|
11
11
|
const leftSidebar = useSidebar();
|
|
12
12
|
const turndownService = new TurndownService({});
|
|
13
13
|
// Use the gfm plugin
|
|
14
14
|
turndownService.use(gfm);
|
|
15
|
-
turndownService.addRule(
|
|
16
|
-
filter:
|
|
15
|
+
turndownService.addRule('twitter', {
|
|
16
|
+
filter: 'div',
|
|
17
17
|
replacement: function(content) {
|
|
18
|
-
return
|
|
18
|
+
return '\n\n' + content + '\n\n';
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
const editor = useEditor({
|
|
@@ -27,17 +27,17 @@ export const useBlockEditor = ({ content, handleChange, openAssetHQHandler, addi
|
|
|
27
27
|
}),
|
|
28
28
|
extensions: [
|
|
29
29
|
...ExtensionKit({
|
|
30
|
-
dir: i18next.dir(),
|
|
30
|
+
dir: dir || i18next.dir(),
|
|
31
31
|
openAssetHQHandler: openAssetHQHandler ?? dummyAssetHqHandler
|
|
32
32
|
})
|
|
33
33
|
],
|
|
34
34
|
editorProps: {
|
|
35
35
|
attributes: {
|
|
36
36
|
languages: i18next.language,
|
|
37
|
-
autocomplete:
|
|
38
|
-
autocorrect:
|
|
39
|
-
autocapitalize:
|
|
40
|
-
class:
|
|
37
|
+
autocomplete: 'off',
|
|
38
|
+
autocorrect: 'off',
|
|
39
|
+
autocapitalize: 'off',
|
|
40
|
+
class: 'min-h-full'
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
onUpdate: ({ editor })=>{
|
|
@@ -46,8 +46,8 @@ export const useBlockEditor = ({ content, handleChange, openAssetHQHandler, addi
|
|
|
46
46
|
}, []);
|
|
47
47
|
useEffect(()=>{
|
|
48
48
|
if (editor?.storage?.aiCommand) {
|
|
49
|
-
editor.storage.aiCommand.title = additionalContext?.title ??
|
|
50
|
-
editor.storage.aiCommand.language = additionalContext?.language ??
|
|
49
|
+
editor.storage.aiCommand.title = additionalContext?.title ?? '';
|
|
50
|
+
editor.storage.aiCommand.language = additionalContext?.language ?? '';
|
|
51
51
|
}
|
|
52
52
|
}, [
|
|
53
53
|
editor,
|
|
@@ -58,13 +58,13 @@ export const useBlockEditor = ({ content, handleChange, openAssetHQHandler, addi
|
|
|
58
58
|
return [];
|
|
59
59
|
}
|
|
60
60
|
return editor?.storage?.collaborationCursor?.users.map((user)=>{
|
|
61
|
-
const names = user.name?.split(
|
|
61
|
+
const names = user.name?.split(' ');
|
|
62
62
|
const firstName = names?.[0];
|
|
63
63
|
const lastName = names?.[names.length - 1];
|
|
64
|
-
const initials = `${firstName?.[0] ||
|
|
64
|
+
const initials = `${firstName?.[0] || '?'}${lastName?.[0] || '?'}`;
|
|
65
65
|
return {
|
|
66
66
|
...user,
|
|
67
|
-
initials: initials.length ? initials :
|
|
67
|
+
initials: initials.length ? initials : '?'
|
|
68
68
|
};
|
|
69
69
|
});
|
|
70
70
|
}, [
|
|
@@ -79,7 +79,7 @@ export const useBlockEditor = ({ content, handleChange, openAssetHQHandler, addi
|
|
|
79
79
|
// setCollabState(event.status)
|
|
80
80
|
// })
|
|
81
81
|
// }, [provider])
|
|
82
|
-
if (typeof window !=
|
|
82
|
+
if (typeof window != 'undefined') window.editor = editor;
|
|
83
83
|
return {
|
|
84
84
|
editor,
|
|
85
85
|
users,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/fields/TiptapEditor/hooks/useBlockEditor.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../src/fields/TiptapEditor/hooks/useBlockEditor.ts"],"sourcesContent":["'use client'\nimport { useEffect, useMemo } from 'react'\n\nimport { Editor, useEditor } from '@tiptap/react'\n\nimport ExtensionKit from '../extensions/extension-kit.js'\nimport { EditorUser } from '../features/BlockEditor/types.js'\nimport { useSidebar } from './useSidebar.js'\n\nimport TurndownService from 'turndown'\nimport { gfm } from 'turndown-plugin-gfm'\nimport { AssetReturnType, openAssetHQType } from '../types.js'\nimport i18next from 'i18next'\n\ndeclare global {\n interface Window {\n editor: Editor | null\n }\n}\n\nconst dummyAssetHqHandler = (listener: (asset: AssetReturnType) => void, file?: File) => {}\n\nexport const useBlockEditor = ({\n content,\n handleChange,\n openAssetHQHandler,\n additionalContext,\n autoFocus,\n isEditable,\n dir,\n}: {\n content: { html: string; json: any }\n handleChange?: (data: any) => void\n openAssetHQHandler?: openAssetHQType\n additionalContext?: Record<string, any>\n autoFocus: boolean\n isEditable?: boolean\n dir?: 'ltr' | 'rtl'\n}) => {\n const leftSidebar = useSidebar()\n\n const turndownService = new TurndownService({})\n // Use the gfm plugin\n turndownService.use(gfm)\n turndownService.addRule('twitter', {\n filter: 'div',\n replacement: function (content) {\n return '\\n\\n' + content + '\\n\\n'\n },\n })\n\n const editor = useEditor(\n {\n content: content?.json ?? content ?? {},\n immediatelyRender: false,\n autofocus: autoFocus ?? true,\n editable: isEditable ?? true,\n onCreate: ({ editor }) => ({\n // provider?.on('synced', () => {\n // if (editor.isEmpty) {\n // editor.commands.setContent(initialContent)\n // }\n // })\n }),\n extensions: [\n ...ExtensionKit({\n dir: dir || i18next.dir(),\n openAssetHQHandler: openAssetHQHandler ?? dummyAssetHqHandler,\n // provider,\n }),\n // Collaboration.configure({\n // document: ydoc,\n // }),\n // CollaborationCursor.configure({\n // provider,\n // user: {\n // name: randomElement(userNames),\n // color: randomElement(userColors),\n // },\n // }),\n ],\n editorProps: {\n attributes: {\n languages: i18next.language,\n autocomplete: 'off',\n autocorrect: 'off',\n autocapitalize: 'off',\n class: 'min-h-full',\n },\n },\n onUpdate: ({ editor }) => {\n handleChange(editor?.getJSON() ?? {})\n },\n },\n [],\n )\n\n useEffect(() => {\n if (editor?.storage?.aiCommand) {\n editor.storage.aiCommand.title = additionalContext?.title ?? ''\n editor.storage.aiCommand.language = additionalContext?.language ?? ''\n }\n }, [editor, additionalContext])\n\n const users = useMemo(() => {\n if (!editor?.storage?.collaborationCursor?.users) {\n return []\n }\n\n return editor?.storage?.collaborationCursor?.users.map((user: EditorUser) => {\n const names = user.name?.split(' ')\n const firstName = names?.[0]\n const lastName = names?.[names.length - 1]\n const initials = `${firstName?.[0] || '?'}${lastName?.[0] || '?'}`\n\n return { ...user, initials: initials.length ? initials : '?' }\n })\n }, [editor?.storage.collaborationCursor?.users])\n\n const characterCount = editor?.storage.characterCount || {\n characters: () => 0,\n words: () => 0,\n }\n\n // useEffect(() => {\n // provider?.on('status', (event: { status: WebSocketStatus }) => {\n // setCollabState(event.status)\n // })\n // }, [provider])\n\n if (typeof window != 'undefined') window.editor = editor\n\n return { editor, users, characterCount, leftSidebar }\n}\n"],"names":["useEffect","useMemo","useEditor","ExtensionKit","useSidebar","TurndownService","gfm","i18next","dummyAssetHqHandler","listener","file","useBlockEditor","content","handleChange","openAssetHQHandler","additionalContext","autoFocus","isEditable","dir","leftSidebar","turndownService","use","addRule","filter","replacement","editor","json","immediatelyRender","autofocus","editable","onCreate","extensions","editorProps","attributes","languages","language","autocomplete","autocorrect","autocapitalize","class","onUpdate","getJSON","storage","aiCommand","title","users","collaborationCursor","map","user","names","name","split","firstName","lastName","length","initials","characterCount","characters","words","window"],"mappings":"AAAA;AACA,SAASA,SAAS,EAAEC,OAAO,QAAQ,QAAO;AAE1C,SAAiBC,SAAS,QAAQ,gBAAe;AAEjD,OAAOC,kBAAkB,iCAAgC;AAEzD,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,OAAOC,qBAAqB,WAAU;AACtC,SAASC,GAAG,QAAQ,sBAAqB;AAEzC,OAAOC,aAAa,UAAS;AAQ7B,MAAMC,sBAAsB,CAACC,UAA4CC,QAAiB;AAE1F,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,YAAY,EACZC,kBAAkB,EAClBC,iBAAiB,EACjBC,SAAS,EACTC,UAAU,EACVC,GAAG,EASJ;IACC,MAAMC,cAAcf;IAEpB,MAAMgB,kBAAkB,IAAIf,gBAAgB,CAAC;IAC7C,qBAAqB;IACrBe,gBAAgBC,GAAG,CAACf;IACpBc,gBAAgBE,OAAO,CAAC,WAAW;QACjCC,QAAQ;QACRC,aAAa,SAAUZ,OAAO;YAC5B,OAAO,SAASA,UAAU;QAC5B;IACF;IAEA,MAAMa,SAASvB,UACb;QACEU,SAASA,SAASc,QAAQd,WAAW,CAAC;QACtCe,mBAAmB;QACnBC,WAAWZ,aAAa;QACxBa,UAAUZ,cAAc;QACxBa,UAAU,CAAC,EAAEL,MAAM,EAAE,GAAM,CAAA;YAM3B,CAAA;QACAM,YAAY;eACP5B,aAAa;gBACde,KAAKA,OAAOX,QAAQW,GAAG;gBACvBJ,oBAAoBA,sBAAsBN;YAE5C;SAWD;QACDwB,aAAa;YACXC,YAAY;gBACVC,WAAW3B,QAAQ4B,QAAQ;gBAC3BC,cAAc;gBACdC,aAAa;gBACbC,gBAAgB;gBAChBC,OAAO;YACT;QACF;QACAC,UAAU,CAAC,EAAEf,MAAM,EAAE;YACnBZ,aAAaY,QAAQgB,aAAa,CAAC;QACrC;IACF,GACA,EAAE;IAGJzC,UAAU;QACR,IAAIyB,QAAQiB,SAASC,WAAW;YAC9BlB,OAAOiB,OAAO,CAACC,SAAS,CAACC,KAAK,GAAG7B,mBAAmB6B,SAAS;YAC7DnB,OAAOiB,OAAO,CAACC,SAAS,CAACR,QAAQ,GAAGpB,mBAAmBoB,YAAY;QACrE;IACF,GAAG;QAACV;QAAQV;KAAkB;IAE9B,MAAM8B,QAAQ5C,QAAQ;QACpB,IAAI,CAACwB,QAAQiB,SAASI,qBAAqBD,OAAO;YAChD,OAAO,EAAE;QACX;QAEA,OAAOpB,QAAQiB,SAASI,qBAAqBD,MAAME,IAAI,CAACC;YACtD,MAAMC,QAAQD,KAAKE,IAAI,EAAEC,MAAM;YAC/B,MAAMC,YAAYH,OAAO,CAAC,EAAE;YAC5B,MAAMI,WAAWJ,OAAO,CAACA,MAAMK,MAAM,GAAG,EAAE;YAC1C,MAAMC,WAAW,GAAGH,WAAW,CAAC,EAAE,IAAI,MAAMC,UAAU,CAAC,EAAE,IAAI,KAAK;YAElE,OAAO;gBAAE,GAAGL,IAAI;gBAAEO,UAAUA,SAASD,MAAM,GAAGC,WAAW;YAAI;QAC/D;IACF,GAAG;QAAC9B,QAAQiB,QAAQI,qBAAqBD;KAAM;IAE/C,MAAMW,iBAAiB/B,QAAQiB,QAAQc,kBAAkB;QACvDC,YAAY,IAAM;QAClBC,OAAO,IAAM;IACf;IAEA,oBAAoB;IACpB,qEAAqE;IACrE,mCAAmC;IACnC,OAAO;IACP,iBAAiB;IAEjB,IAAI,OAAOC,UAAU,aAAaA,OAAOlC,MAAM,GAAGA;IAElD,OAAO;QAAEA;QAAQoB;QAAOW;QAAgBrC;IAAY;AACtD,EAAC"}
|