payload-richtext-tiptap 0.0.144 → 0.0.146

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 (47) hide show
  1. package/dist/src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.js.map +1 -1
  2. package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.js.map +1 -1
  3. package/dist/src/fields/TiptapEditor/extensions/FontSize/FontSize.js.map +1 -1
  4. package/dist/src/fields/TiptapEditor/extensions/Heading/Heading.js.map +1 -1
  5. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.js.map +1 -1
  6. package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.js.map +1 -1
  7. package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.js.map +1 -1
  8. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.d.ts.map +1 -1
  9. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.js +11 -7
  10. package/dist/src/fields/TiptapEditor/extensions/LinkPreview/LinkPreview.js.map +1 -1
  11. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js +3 -3
  12. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js.map +1 -1
  13. package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.js.map +1 -1
  14. package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
  15. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Facebook/facebook.js.map +1 -1
  16. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Instagram/instagram.js.map +1 -1
  17. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.js.map +1 -1
  18. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.js.map +1 -1
  19. package/dist/src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.js.map +1 -1
  20. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.js.map +1 -1
  21. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.js.map +1 -1
  22. package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.d.ts.map +1 -1
  23. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts +1 -1
  24. package/dist/src/fields/TiptapEditor/extensions/extension-kit.d.ts.map +1 -1
  25. package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.js.map +1 -1
  26. package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSideRenderer.js.map +1 -1
  27. package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSidebarRenderer.js.map +1 -1
  28. package/dist/src/fields/TiptapEditor/extensions/serverside/FacebookServerside.js.map +1 -1
  29. package/dist/src/fields/TiptapEditor/extensions/serverside/InstagramServerside.js.map +1 -1
  30. package/dist/src/fields/TiptapEditor/extensions/serverside/LinkedinServerside.js.map +1 -1
  31. package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js +1 -1
  32. package/dist/src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js.map +1 -1
  33. package/dist/src/fields/TiptapEditor/extensions/serverside/TiktokServerside.js.map +1 -1
  34. package/dist/src/fields/TiptapEditor/extensions/serverside/TwitterBlockServerside.js.map +1 -1
  35. package/dist/src/fields/TiptapEditor/extensions/serverside/YouTubeServerside.js.map +1 -1
  36. package/dist/src/fields/TiptapEditor/extensions/serverside/getAssetsAspectRatio.js.map +1 -1
  37. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.js.map +1 -1
  38. package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.js.map +1 -1
  39. package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
  40. package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.js.map +1 -1
  41. package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
  42. package/dist/src/fields/TiptapEditor/lib/tiptapSchema.d.ts +62 -62
  43. package/dist/src/fields/TiptapEditor/lib/utils/cssVar.js.map +1 -1
  44. package/dist/src/mobile.css +1 -1
  45. package/dist/src/styles.css +1 -1
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/package.json +200 -204
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n tiktok: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertTiktok: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport TiktokEmbed from './TiktokEmbed.js'\r\n\r\nexport const Tiktok = Node.create({\r\n name: 'tiktok',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n class: { default: null },\r\n src: {\r\n default: null,\r\n },\r\n width: {\r\n default: '328px',\r\n },\r\n height: {\r\n default: '550px',\r\n },\r\n frameborder: {\r\n default: '0',\r\n },\r\n scrolling: {\r\n default: 'no',\r\n },\r\n allowtransparency: {\r\n default: 'true',\r\n },\r\n }\r\n },\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"tiktok\"]',\r\n },\r\n ]\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes({\r\n \"data-type\": \"tiktok\",\r\n class: `react-renderer node-tiktok ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-tiktok-embed', style: 'overflow: hidden; border-radius: 8px;' }),\r\n ['div', { class: 'tiktok-embed-container' },\r\n ['iframe', mergeAttributes(HTMLAttributes, { src: convertTikTokUrlToEmbed(HTMLAttributes.url) },)],\r\n ]\r\n ]\r\n ]\r\n ]\r\n },\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n addNodeView() {\r\n return ReactNodeViewRenderer(TiktokEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertTiktok:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n\r\n\r\n let embedUrl\r\n\r\n\r\n // Usage in the original location:\r\n embedUrl = url ? convertTikTokUrlToEmbed(url) : undefined;\r\n return commands.insertContent({\r\n type: 'tiktok',\r\n attrs: {\r\n url,\r\n class: className,\r\n src: embedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\nfunction convertTikTokUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n const urlObj = new URL(url);\r\n const path = urlObj.pathname;\r\n const videoId = path.split('/').filter(Boolean)[2];\r\n return videoId ? `https://www.tiktok.com/embed/v3/${videoId}` : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TiktokEmbed","Tiktok","create","name","group","content","draggable","addAttributes","url","default","class","src","width","height","frameborder","scrolling","allowtransparency","parseHTML","tag","renderHTML","HTMLAttributes","style","convertTikTokUrlToEmbed","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","addNodeView","addCommands","insertTiktok","className","commands","embedUrl","undefined","insertContent","attrs","urlObj","URL","path","pathname","videoId","split","filter","Boolean","isValidHttpUrl","string","_","protocol"],"mappings":"AAYA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAc;AACpD,SAASC,qBAAqB,QAAQ,gBAAe;AACrD,OAAOC,iBAAiB,mBAAkB;AAE1C,OAAO,MAAMC,SAASJ,KAAKK,MAAM,CAAC;IAChCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrBC,OAAO;gBAAED,SAAS;YAAK;YACvBE,KAAK;gBACHF,SAAS;YACX;YACAG,OAAO;gBACLH,SAAS;YACX;YACAI,QAAQ;gBACNJ,SAAS;YACX;YACAK,aAAa;gBACXL,SAAS;YACX;YACAM,WAAW;gBACTN,SAAS;YACX;YACAO,mBAAmB;gBACjBP,SAAS;YACX;QACF;IACF;IACAQ;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAtB,gBAAgB;gBACd,aAAa;gBACbY,OAAO,CAAC,2BAA2B,EAAEU,eAAeV,KAAK,IAAI,GAAG,CAAC;YACnE;YAAI;gBACF;gBACAZ,gBACE;oBAAEY,OAAO;gBAAuB;gBAElC;oBAAC;oBAAOZ,gBAAgB;wBAAEY,OAAO;wBAAgCW,OAAO;oBAAwC;oBAC9G;wBAAC;wBAAO;4BAAEX,OAAO;wBAAyB;wBACxC;4BAAC;4BAAUZ,gBAAgBsB,gBAAgB;gCAAET,KAAKW,wBAAwBF,eAAeZ,GAAG;4BAAE;yBAAI;qBACnG;iBACF;aACF;SACF;IACH;IACAe;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAC3B,IAAI;gBACtB,GACC4B,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEAC;QACE,OAAOlC,sBAAsBC;IAC/B;IAEAkC;QACE,OAAO;YACLC,cACE,CAAC3B,KAAK4B,YACJ,CAAC,EAAEC,QAAQ,EAAEV,KAAK,EAAE;oBAGlB,IAAIW;oBAGJ,kCAAkC;oBAClCA,WAAW9B,MAAMc,wBAAwBd,OAAO+B;oBAChD,OAAOF,SAASG,aAAa,CAAC;wBAC5BV,MAAM;wBACNW,OAAO;4BACLjC;4BACAE,OAAO0B;4BACPzB,KAAK2B;wBACP;oBACF;gBACF;QACN;IACF;AACF,GAAE;AAEF,SAAShB,wBAAwBd,GAAW;IAC1C,IAAI,CAACA,KAAK,OAAO+B;IACjB,IAAI;QACF,MAAMG,SAAS,IAAIC,IAAInC;QACvB,MAAMoC,OAAOF,OAAOG,QAAQ;QAC5B,MAAMC,UAAUF,KAAKG,KAAK,CAAC,KAAKC,MAAM,CAACC,QAAQ,CAAC,EAAE;QAClD,OAAOH,UAAU,CAAC,gCAAgC,EAAEA,QAAQ,CAAC,GAAGP;IAClE,EAAE,OAAM;QACN,OAAOA;IACT;AACF;AAEA,SAASW,eAAeC,MAAc;IACpC,IAAI3C;IAEJ,IAAI;QACFA,MAAM,IAAImC,IAAIQ;IAChB,EAAE,OAAOC,GAAG;QACV,OAAO;IACT;IAEA,OAAO5C,IAAI6C,QAAQ,KAAK,WAAW7C,IAAI6C,QAAQ,KAAK;AACtD"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Tiktok/tiktok.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n tiktok: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertTiktok: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport TiktokEmbed from './TiktokEmbed.js'\r\n\r\nexport const Tiktok = Node.create({\r\n name: 'tiktok',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n class: { default: null },\r\n src: {\r\n default: null,\r\n },\r\n width: {\r\n default: '328px',\r\n },\r\n height: {\r\n default: '550px',\r\n },\r\n frameborder: {\r\n default: '0',\r\n },\r\n scrolling: {\r\n default: 'no',\r\n },\r\n allowtransparency: {\r\n default: 'true',\r\n },\r\n }\r\n },\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"tiktok\"]',\r\n },\r\n ]\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes({\r\n \"data-type\": \"tiktok\",\r\n class: `react-renderer node-tiktok ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-tiktok-embed', style: 'overflow: hidden; border-radius: 8px;' }),\r\n ['div', { class: 'tiktok-embed-container' },\r\n ['iframe', mergeAttributes(HTMLAttributes, { src: convertTikTokUrlToEmbed(HTMLAttributes.url) },)],\r\n ]\r\n ]\r\n ]\r\n ]\r\n },\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n addNodeView() {\r\n return ReactNodeViewRenderer(TiktokEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertTiktok:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n\r\n\r\n let embedUrl\r\n\r\n\r\n // Usage in the original location:\r\n embedUrl = url ? convertTikTokUrlToEmbed(url) : undefined;\r\n return commands.insertContent({\r\n type: 'tiktok',\r\n attrs: {\r\n url,\r\n class: className,\r\n src: embedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\nfunction convertTikTokUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n const urlObj = new URL(url);\r\n const path = urlObj.pathname;\r\n const videoId = path.split('/').filter(Boolean)[2];\r\n return videoId ? `https://www.tiktok.com/embed/v3/${videoId}` : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TiktokEmbed","Tiktok","create","name","group","content","draggable","addAttributes","url","default","class","src","width","height","frameborder","scrolling","allowtransparency","parseHTML","tag","renderHTML","HTMLAttributes","style","convertTikTokUrlToEmbed","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","addNodeView","addCommands","insertTiktok","className","commands","embedUrl","undefined","insertContent","attrs","urlObj","URL","path","pathname","videoId","split","filter","Boolean","isValidHttpUrl","string","_","protocol"],"mappings":"AAYA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAc;AACpD,SAASC,qBAAqB,QAAQ,gBAAe;AACrD,OAAOC,iBAAiB,mBAAkB;AAE1C,OAAO,MAAMC,SAASJ,KAAKK,MAAM,CAAC;IAChCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrBC,OAAO;gBAAED,SAAS;YAAK;YACvBE,KAAK;gBACHF,SAAS;YACX;YACAG,OAAO;gBACLH,SAAS;YACX;YACAI,QAAQ;gBACNJ,SAAS;YACX;YACAK,aAAa;gBACXL,SAAS;YACX;YACAM,WAAW;gBACTN,SAAS;YACX;YACAO,mBAAmB;gBACjBP,SAAS;YACX;QACF;IACF;IACAQ;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAtB,gBAAgB;gBACd,aAAa;gBACbY,OAAO,CAAC,2BAA2B,EAAEU,eAAeV,KAAK,IAAI,IAAI;YACnE;YAAI;gBACF;gBACAZ,gBACE;oBAAEY,OAAO;gBAAuB;gBAElC;oBAAC;oBAAOZ,gBAAgB;wBAAEY,OAAO;wBAAgCW,OAAO;oBAAwC;oBAC9G;wBAAC;wBAAO;4BAAEX,OAAO;wBAAyB;wBACxC;4BAAC;4BAAUZ,gBAAgBsB,gBAAgB;gCAAET,KAAKW,wBAAwBF,eAAeZ,GAAG;4BAAE;yBAAI;qBACnG;iBACF;aACF;SACF;IACH;IACAe;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAC3B,IAAI;gBACtB,GACC4B,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEAC;QACE,OAAOlC,sBAAsBC;IAC/B;IAEAkC;QACE,OAAO;YACLC,cACE,CAAC3B,KAAK4B,YACJ,CAAC,EAAEC,QAAQ,EAAEV,KAAK,EAAE;oBAGlB,IAAIW;oBAGJ,kCAAkC;oBAClCA,WAAW9B,MAAMc,wBAAwBd,OAAO+B;oBAChD,OAAOF,SAASG,aAAa,CAAC;wBAC5BV,MAAM;wBACNW,OAAO;4BACLjC;4BACAE,OAAO0B;4BACPzB,KAAK2B;wBACP;oBACF;gBACF;QACN;IACF;AACF,GAAE;AAEF,SAAShB,wBAAwBd,GAAW;IAC1C,IAAI,CAACA,KAAK,OAAO+B;IACjB,IAAI;QACF,MAAMG,SAAS,IAAIC,IAAInC;QACvB,MAAMoC,OAAOF,OAAOG,QAAQ;QAC5B,MAAMC,UAAUF,KAAKG,KAAK,CAAC,KAAKC,MAAM,CAACC,QAAQ,CAAC,EAAE;QAClD,OAAOH,UAAU,CAAC,gCAAgC,EAAEA,SAAS,GAAGP;IAClE,EAAE,OAAM;QACN,OAAOA;IACT;AACF;AAEA,SAASW,eAAeC,MAAc;IACpC,IAAI3C;IAEJ,IAAI;QACFA,MAAM,IAAImC,IAAIQ;IAChB,EAAE,OAAOC,GAAG;QACV,OAAO;IACT;IAEA,OAAO5C,IAAI6C,QAAQ,KAAK,WAAW7C,IAAI6C,QAAQ,KAAK;AACtD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n twitter: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertTwitter: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport TwitterEmbed from './TwitterEmbed.js'\r\n\r\nexport const Twitter = Node.create({\r\n name: 'twitter',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"twitter\"]',\r\n },\r\n ]\r\n },\r\n\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n src: { default: null },\r\n class: { default: null },\r\n }\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n // renderHTML({ HTMLAttributes }) {\r\n // return [\r\n // \"div\",\r\n // mergeAttributes(HTMLAttributes, { \"data-type\": \"twitter\" }),\r\n // 0,\r\n // ];\r\n // },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"twitter\",\r\n class: `react-renderer node-twitter ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-twitter-embed', style: 'overflow: hidden; width: 325px; border-radius: 12px;' }),\r\n\r\n [\r\n 'blockquote',\r\n { class: 'twitter-tweet' },\r\n ['a', { href: convertYoutubeUrlToEmbed(HTMLAttributes.url) ?? HTMLAttributes.src }, ''],\r\n ],\r\n [\r\n 'script',\r\n {\r\n async: true,\r\n src: 'https://platform.twitter.com/widgets.js',\r\n charset: 'utf-8',\r\n },\r\n ],\r\n ]\r\n ]\r\n ]\r\n },\r\n\r\n addNodeView() {\r\n return ReactNodeViewRenderer(TwitterEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertTwitter:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n let formattedUrl = url\r\n if (url) {\r\n\r\n formattedUrl = convertYoutubeUrlToEmbed(url)\r\n }\r\n return commands.insertContent({\r\n type: 'twitter',\r\n attrs: {\r\n url: url,\r\n class: className,\r\n src: formattedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n let formattedUrl\r\n const tweetMatch = url.match(/(?:twitter\\.com|x\\.com)\\/([^\\/]+)\\/status\\/(\\d+)/)\r\n if (tweetMatch) {\r\n const [_, username, tweetId] = tweetMatch\r\n formattedUrl = `https://twitter.com/${username}/status/${tweetId}`\r\n }\r\n return formattedUrl ? formattedUrl : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Twitter","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","src","class","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","href","convertYoutubeUrlToEmbed","async","charset","addNodeView","addCommands","insertTwitter","className","commands","formattedUrl","insertContent","attrs","undefined","tweetMatch","match","_","username","tweetId","isValidHttpUrl","string","URL","protocol"],"mappings":"AAYA,SAASA,IAAI,EAA4BC,eAAe,QAAQ,eAAc;AAC9E,SAASC,qBAAqB,QAAQ,gBAAe;AACrD,OAAOC,kBAAkB,oBAAmB;AAE5C,OAAO,MAAMC,UAAUJ,KAAKK,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrBC,KAAK;gBAAED,SAAS;YAAK;YACrBE,OAAO;gBAAEF,SAAS;YAAK;QACzB;IACF;IAEAG;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAClB,IAAI;gBACtB,GACCmB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEA,mCAAmC;IACnC,aAAa;IACb,aAAa;IACb,mEAAmE;IACnE,SAAS;IACT,OAAO;IACP,KAAK;IACLC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACA3B,gBAAgB2B,gBAAgB;gBAC9B,aAAa;gBACbZ,OAAO,CAAC,4BAA4B,EAAEY,eAAeZ,KAAK,IAAI,GAAG,CAAC;YACpE;YAAI;gBACF;gBACAf,gBACE;oBAAEe,OAAO;gBAAuB;gBAElC;oBAAC;oBAAOf,gBAAgB;wBAAEe,OAAO;wBAAiCa,OAAO;oBAAuD;oBAE9H;wBACE;wBACA;4BAAEb,OAAO;wBAAgB;wBACzB;4BAAC;4BAAK;gCAAEc,MAAMC,yBAAyBH,eAAef,GAAG,KAAKe,eAAeb,GAAG;4BAAC;4BAAG;yBAAG;qBACxF;oBACD;wBACE;wBACA;4BACEiB,OAAO;4BACPjB,KAAK;4BACLkB,SAAS;wBACX;qBACD;iBACF;aACF;SACF;IACH;IAEAC;QACE,OAAOhC,sBAAsBC;IAC/B;IAEAgC;QACE,OAAO;YACLC,eACE,CAACvB,KAAKwB,YACJ,CAAC,EAAEC,QAAQ,EAAEjB,KAAK,EAAE;oBAClB,IAAIkB,eAAe1B;oBACnB,IAAIA,KAAK;wBAEP0B,eAAeR,yBAAyBlB;oBAC1C;oBACA,OAAOyB,SAASE,aAAa,CAAC;wBAC5BhB,MAAM;wBACNiB,OAAO;4BACL5B,KAAKA;4BACLG,OAAOqB;4BACPtB,KAAKwB;wBACP;oBACF;gBACF;QACN;IACF;AACF,GAAE;AAEF,SAASR,yBAAyBlB,GAAW;IAC3C,IAAI,CAACA,KAAK,OAAO6B;IACjB,IAAI;QACF,IAAIH;QACJ,MAAMI,aAAa9B,IAAI+B,KAAK,CAAC;QAC7B,IAAID,YAAY;YACd,MAAM,CAACE,GAAGC,UAAUC,QAAQ,GAAGJ;YAC/BJ,eAAe,CAAC,oBAAoB,EAAEO,SAAS,QAAQ,EAAEC,QAAQ,CAAC;QACpE;QACA,OAAOR,eAAeA,eAAeG;IACvC,EAAE,OAAM;QACN,OAAOA;IACT;AACF;AACA,SAASM,eAAeC,MAAc;IACpC,IAAIpC;IAEJ,IAAI;QACFA,MAAM,IAAIqC,IAAID;IAChB,EAAE,OAAOJ,GAAG;QACV,OAAO;IACT;IAEA,OAAOhC,IAAIsC,QAAQ,KAAK,WAAWtC,IAAIsC,QAAQ,KAAK;AACtD"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Twitter/twitter.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n twitter: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertTwitter: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport TwitterEmbed from './TwitterEmbed.js'\r\n\r\nexport const Twitter = Node.create({\r\n name: 'twitter',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"twitter\"]',\r\n },\r\n ]\r\n },\r\n\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n src: { default: null },\r\n class: { default: null },\r\n }\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n // renderHTML({ HTMLAttributes }) {\r\n // return [\r\n // \"div\",\r\n // mergeAttributes(HTMLAttributes, { \"data-type\": \"twitter\" }),\r\n // 0,\r\n // ];\r\n // },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"twitter\",\r\n class: `react-renderer node-twitter ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-twitter-embed', style: 'overflow: hidden; width: 325px; border-radius: 12px;' }),\r\n\r\n [\r\n 'blockquote',\r\n { class: 'twitter-tweet' },\r\n ['a', { href: convertYoutubeUrlToEmbed(HTMLAttributes.url) ?? HTMLAttributes.src }, ''],\r\n ],\r\n [\r\n 'script',\r\n {\r\n async: true,\r\n src: 'https://platform.twitter.com/widgets.js',\r\n charset: 'utf-8',\r\n },\r\n ],\r\n ]\r\n ]\r\n ]\r\n },\r\n\r\n addNodeView() {\r\n return ReactNodeViewRenderer(TwitterEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertTwitter:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n let formattedUrl = url\r\n if (url) {\r\n\r\n formattedUrl = convertYoutubeUrlToEmbed(url)\r\n }\r\n return commands.insertContent({\r\n type: 'twitter',\r\n attrs: {\r\n url: url,\r\n class: className,\r\n src: formattedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n let formattedUrl\r\n const tweetMatch = url.match(/(?:twitter\\.com|x\\.com)\\/([^\\/]+)\\/status\\/(\\d+)/)\r\n if (tweetMatch) {\r\n const [_, username, tweetId] = tweetMatch\r\n formattedUrl = `https://twitter.com/${username}/status/${tweetId}`\r\n }\r\n return formattedUrl ? formattedUrl : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","TwitterEmbed","Twitter","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","src","class","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","href","convertYoutubeUrlToEmbed","async","charset","addNodeView","addCommands","insertTwitter","className","commands","formattedUrl","insertContent","attrs","undefined","tweetMatch","match","_","username","tweetId","isValidHttpUrl","string","URL","protocol"],"mappings":"AAYA,SAASA,IAAI,EAA4BC,eAAe,QAAQ,eAAc;AAC9E,SAASC,qBAAqB,QAAQ,gBAAe;AACrD,OAAOC,kBAAkB,oBAAmB;AAE5C,OAAO,MAAMC,UAAUJ,KAAKK,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IACPC,SAAS;IACTC,WAAW;IAEX,sBAAsB;IAEtBC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IAEAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrBC,KAAK;gBAAED,SAAS;YAAK;YACrBE,OAAO;gBAAEF,SAAS;YAAK;QACzB;IACF;IAEAG;QACE,OAAO;YACL,aAAa;gBACX,OAAO,IAAI,CAACC,MAAM,CACfC,KAAK,GACLC,eAAe,CAAC,IAAI,CAACF,MAAM,CAACG,KAAK,CAACC,SAAS,CAACC,IAAI,EAAE;oBACjDC,MAAM,IAAI,CAACA,IAAI,CAAClB,IAAI;gBACtB,GACCmB,KAAK,GACLC,GAAG;YACR;QACF;IACF;IAEA,mCAAmC;IACnC,aAAa;IACb,aAAa;IACb,mEAAmE;IACnE,SAAS;IACT,OAAO;IACP,KAAK;IACLC,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACA3B,gBAAgB2B,gBAAgB;gBAC9B,aAAa;gBACbZ,OAAO,CAAC,4BAA4B,EAAEY,eAAeZ,KAAK,IAAI,IAAI;YACpE;YAAI;gBACF;gBACAf,gBACE;oBAAEe,OAAO;gBAAuB;gBAElC;oBAAC;oBAAOf,gBAAgB;wBAAEe,OAAO;wBAAiCa,OAAO;oBAAuD;oBAE9H;wBACE;wBACA;4BAAEb,OAAO;wBAAgB;wBACzB;4BAAC;4BAAK;gCAAEc,MAAMC,yBAAyBH,eAAef,GAAG,KAAKe,eAAeb,GAAG;4BAAC;4BAAG;yBAAG;qBACxF;oBACD;wBACE;wBACA;4BACEiB,OAAO;4BACPjB,KAAK;4BACLkB,SAAS;wBACX;qBACD;iBACF;aACF;SACF;IACH;IAEAC;QACE,OAAOhC,sBAAsBC;IAC/B;IAEAgC;QACE,OAAO;YACLC,eACE,CAACvB,KAAKwB,YACJ,CAAC,EAAEC,QAAQ,EAAEjB,KAAK,EAAE;oBAClB,IAAIkB,eAAe1B;oBACnB,IAAIA,KAAK;wBAEP0B,eAAeR,yBAAyBlB;oBAC1C;oBACA,OAAOyB,SAASE,aAAa,CAAC;wBAC5BhB,MAAM;wBACNiB,OAAO;4BACL5B,KAAKA;4BACLG,OAAOqB;4BACPtB,KAAKwB;wBACP;oBACF;gBACF;QACN;IACF;AACF,GAAE;AAEF,SAASR,yBAAyBlB,GAAW;IAC3C,IAAI,CAACA,KAAK,OAAO6B;IACjB,IAAI;QACF,IAAIH;QACJ,MAAMI,aAAa9B,IAAI+B,KAAK,CAAC;QAC7B,IAAID,YAAY;YACd,MAAM,CAACE,GAAGC,UAAUC,QAAQ,GAAGJ;YAC/BJ,eAAe,CAAC,oBAAoB,EAAEO,SAAS,QAAQ,EAAEC,SAAS;QACpE;QACA,OAAOR,eAAeA,eAAeG;IACvC,EAAE,OAAM;QACN,OAAOA;IACT;AACF;AACA,SAASM,eAAeC,MAAc;IACpC,IAAIpC;IAEJ,IAAI;QACFA,MAAM,IAAIqC,IAAID;IAChB,EAAE,OAAOJ,GAAG;QACV,OAAO;IACT;IAEA,OAAOhC,IAAIsC,QAAQ,KAAK,WAAWtC,IAAIsC,QAAQ,KAAK;AACtD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n youtube: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertYoutube: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport YoutubeEmbed from './YoutubeEmbed.js'\r\n\r\nexport const Youtube = Node.create({\r\n name: 'youtube',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"youtube\"]',\r\n },\r\n ]\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n class: { default: null },\r\n src: {\r\n default: null,\r\n },\r\n width: {\r\n default: '560',\r\n },\r\n height: {\r\n default: '315',\r\n },\r\n frameborder: {\r\n default: '0',\r\n },\r\n allowfullscreen: {\r\n default: true,\r\n },\r\n }\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"youtube\",\r\n class: `react-renderer node-youtube ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-youtube-embed', style: 'overflow: hidden; border-radius: 0px;' }),\r\n ['div', { class: 'youtube-iframe' },\r\n ['iframe', mergeAttributes(HTMLAttributes, { src: convertYoutubeUrlToEmbed(HTMLAttributes.url) },)],\r\n ]\r\n ]\r\n ]\r\n ]\r\n },\r\n addNodeView() {\r\n return ReactNodeViewRenderer(YoutubeEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertYoutube:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n let embedUrl = ''\r\n\r\n if (url) {\r\n embedUrl = convertYoutubeUrlToEmbed(url)\r\n }\r\n\r\n return commands.insertContent({\r\n type: 'youtube',\r\n attrs: {\r\n url,\r\n class: className,\r\n src: embedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\n\r\n\r\n\r\n\r\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n // Extract video ID from various YouTube URL formats\r\n const urlObj = new URL(url)\r\n let videoId = ''\r\n\r\n if (urlObj.hostname === 'youtu.be') {\r\n // Handle youtu.be format\r\n videoId = urlObj.pathname.slice(1)\r\n } else {\r\n // Handle youtube.com formats\r\n const searchParams = new URLSearchParams(urlObj.search)\r\n videoId = searchParams.get('v') || ''\r\n\r\n if (!videoId) {\r\n // Try extracting from pathname for embed URLs\r\n const matches = urlObj.pathname.match(/\\/embed\\/([^/?]+)/)\r\n if (matches) {\r\n videoId = matches[1]\r\n }\r\n }\r\n }\r\n\r\n return videoId ? `https://www.youtube.com/embed/${videoId}` : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","YoutubeEmbed","Youtube","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","class","src","width","height","frameborder","allowfullscreen","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","convertYoutubeUrlToEmbed","addNodeView","addCommands","insertYoutube","className","commands","embedUrl","insertContent","attrs","undefined","urlObj","URL","videoId","hostname","pathname","slice","searchParams","URLSearchParams","search","get","matches","match","isValidHttpUrl","string","_","protocol"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/SocialMedia/Youtube/youtube.ts"],"sourcesContent":["declare module '@tiptap/core' {\r\n interface Commands<ReturnType> {\r\n youtube: {\r\n /**\r\n * Add an image\r\n */\r\n\r\n insertYoutube: (url?: string, className?: string) => ReturnType\r\n }\r\n }\r\n}\r\n\r\nimport { Node, PasteRule, markPasteRule, mergeAttributes } from '@tiptap/core'\r\nimport { ReactNodeViewRenderer } from '@tiptap/react'\r\nimport YoutubeEmbed from './YoutubeEmbed.js'\r\n\r\nexport const Youtube = Node.create({\r\n name: 'youtube',\r\n\r\n group: 'block',\r\n content: 'inline*',\r\n draggable: true,\r\n\r\n // content: 'inline*',\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'div[data-type=\"youtube\"]',\r\n },\r\n ]\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n class: { default: null },\r\n src: {\r\n default: null,\r\n },\r\n width: {\r\n default: '560',\r\n },\r\n height: {\r\n default: '315',\r\n },\r\n frameborder: {\r\n default: '0',\r\n },\r\n allowfullscreen: {\r\n default: true,\r\n },\r\n }\r\n },\r\n\r\n addKeyboardShortcuts() {\r\n return {\r\n 'Mod-Enter': () => {\r\n return this.editor\r\n .chain()\r\n .insertContentAt(this.editor.state.selection.head, {\r\n type: this.type.name,\r\n })\r\n .focus()\r\n .run()\r\n },\r\n }\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"youtube\",\r\n class: `react-renderer node-youtube ${HTMLAttributes.class ?? \"\"}`,\r\n }), [\r\n 'div',\r\n mergeAttributes(\r\n { class: 'socialMediaContainer' },\r\n ),\r\n ['div', mergeAttributes({ class: 'rsme-embed rsme-youtube-embed', style: 'overflow: hidden; border-radius: 0px;' }),\r\n ['div', { class: 'youtube-iframe' },\r\n ['iframe', mergeAttributes(HTMLAttributes, { src: convertYoutubeUrlToEmbed(HTMLAttributes.url) },)],\r\n ]\r\n ]\r\n ]\r\n ]\r\n },\r\n addNodeView() {\r\n return ReactNodeViewRenderer(YoutubeEmbed)\r\n },\r\n\r\n addCommands() {\r\n return {\r\n insertYoutube:\r\n (url, className) =>\r\n ({ commands, state }) => {\r\n let embedUrl = ''\r\n\r\n if (url) {\r\n embedUrl = convertYoutubeUrlToEmbed(url)\r\n }\r\n\r\n return commands.insertContent({\r\n type: 'youtube',\r\n attrs: {\r\n url,\r\n class: className,\r\n src: embedUrl,\r\n },\r\n })\r\n },\r\n }\r\n },\r\n})\r\n\r\n\r\n\r\n\r\n\r\nfunction convertYoutubeUrlToEmbed(url: string): string | undefined {\r\n if (!url) return undefined;\r\n try {\r\n // Extract video ID from various YouTube URL formats\r\n const urlObj = new URL(url)\r\n let videoId = ''\r\n\r\n if (urlObj.hostname === 'youtu.be') {\r\n // Handle youtu.be format\r\n videoId = urlObj.pathname.slice(1)\r\n } else {\r\n // Handle youtube.com formats\r\n const searchParams = new URLSearchParams(urlObj.search)\r\n videoId = searchParams.get('v') || ''\r\n\r\n if (!videoId) {\r\n // Try extracting from pathname for embed URLs\r\n const matches = urlObj.pathname.match(/\\/embed\\/([^/?]+)/)\r\n if (matches) {\r\n videoId = matches[1]\r\n }\r\n }\r\n }\r\n\r\n return videoId ? `https://www.youtube.com/embed/${videoId}` : undefined;\r\n } catch {\r\n return undefined;\r\n }\r\n}\r\nfunction isValidHttpUrl(string: string) {\r\n let url\r\n\r\n try {\r\n url = new URL(string)\r\n } catch (_) {\r\n return false\r\n }\r\n\r\n return url.protocol === 'http:' || url.protocol === 'https:'\r\n}\r\n"],"names":["Node","mergeAttributes","ReactNodeViewRenderer","YoutubeEmbed","Youtube","create","name","group","content","draggable","parseHTML","tag","addAttributes","url","default","class","src","width","height","frameborder","allowfullscreen","addKeyboardShortcuts","editor","chain","insertContentAt","state","selection","head","type","focus","run","renderHTML","HTMLAttributes","style","convertYoutubeUrlToEmbed","addNodeView","addCommands","insertYoutube","className","commands","embedUrl","insertContent","attrs","undefined","urlObj","URL","videoId","hostname","pathname","slice","searchParams","URLSearchParams","search","get","matches","match","isValidHttpUrl","string","_","protocol"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\r\nimport { mergeAttributes, Range } from \"@tiptap/core\";\r\n\r\nimport { VideoBlockView } from \"./components/VideoBlockView.js\";\r\nimport { Video } from \"../Video/Video.js\";\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n videoBlock: {\r\n setVideoBlock: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAt: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n pos: number | Range;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\r\n setVideoBlockWidth: (width: number) => ReturnType;\r\n setVideoBlockCaption: (caption: boolean) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const VideoBlock = Video.extend({\r\n name: \"videoBlock\",\r\n\r\n group: \"block\",\r\n\r\n defining: true,\r\n\r\n isolating: true,\r\n\r\n addAttributes() {\r\n return {\r\n src: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"src\"),\r\n renderHTML: (attributes) => ({\r\n src: attributes.src,\r\n }),\r\n },\r\n title: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"title\"),\r\n renderHTML: (attributes) => ({\r\n title: attributes.title,\r\n }),\r\n },\r\n poster: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"poster\"),\r\n renderHTML: (attributes) => ({\r\n poster: attributes.poster,\r\n }),\r\n },\r\n playlistUrl: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\r\n renderHTML: (attributes) => ({\r\n \"data-playlist-url\": attributes.playlistUrl,\r\n }),\r\n },\r\n width: {\r\n default: \"100%\",\r\n parseHTML: (element) => element.getAttribute(\"data-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-width\": attributes.width,\r\n }),\r\n },\r\n actualWidth: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-width\": attributes.actualWidth,\r\n }),\r\n },\r\n actualHeight: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-height\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-height\": attributes.actualHeight,\r\n }),\r\n },\r\n align: {\r\n default: \"center\",\r\n parseHTML: (element) => element.getAttribute(\"data-align\"),\r\n renderHTML: (attributes) => ({\r\n \"data-align\": attributes.align,\r\n }),\r\n },\r\n alt: {\r\n default: undefined,\r\n parseHTML: (element) => element.getAttribute(\"alt\"),\r\n renderHTML: (attributes) => ({\r\n alt: attributes.alt,\r\n }),\r\n },\r\n caption: {\r\n default: true,\r\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\r\n renderHTML: (attributes) => ({\r\n \"data-caption\": attributes.caption,\r\n }),\r\n },\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'video[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), video[src*=\"windows.net\"]:not([src^=\"data:\"])',\r\n },\r\n ];\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n { class: \"imageBlock\" },\r\n [\"video\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\r\n [\r\n \"caption\",\r\n mergeAttributes(\r\n {\r\n class:\r\n \"text-center text-gray-400 w-full h-16 mb-2 placeholder-black p-1 text-sm border-0 rounded appearance-none\",\r\n },\r\n { defaultValue: HTMLAttributes.title || HTMLAttributes.caption }\r\n ),\r\n HTMLAttributes.title || HTMLAttributes.caption,\r\n ],\r\n ];\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setVideoBlock:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContent({\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAt:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContentAt(attrs.pos, {\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAlign:\r\n (align) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { align }),\r\n\r\n setVideoBlockWidth:\r\n (width) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", {\r\n width: `${Math.max(0, Math.min(100, width))}%`,\r\n }),\r\n\r\n setVideoBlockCaption:\r\n (caption) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { caption }),\r\n };\r\n },\r\n\r\n addNodeView() {\r\n //@ts-ignore\r\n return ReactNodeViewRenderer(VideoBlockView);\r\n },\r\n});\r\n\r\nexport default VideoBlock;\r\n"],"names":["ReactNodeViewRenderer","mergeAttributes","VideoBlockView","Video","VideoBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","title","poster","playlistUrl","width","actualWidth","actualHeight","align","alt","undefined","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setVideoBlock","attrs","commands","insertContent","type","assetId","setVideoBlockAt","insertContentAt","pos","setVideoBlockAlign","updateAttributes","setVideoBlockWidth","Math","max","min","setVideoBlockCaption","addNodeView"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\r\nimport { mergeAttributes, Range } from \"@tiptap/core\";\r\n\r\nimport { VideoBlockView } from \"./components/VideoBlockView.js\";\r\nimport { Video } from \"../Video/Video.js\";\r\n\r\ndeclare module \"@tiptap/core\" {\r\n interface Commands<ReturnType> {\r\n videoBlock: {\r\n setVideoBlock: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAt: (attributes: {\r\n src: string;\r\n poster: string;\r\n assetId: string;\r\n playlistUrl?: string;\r\n title: string;\r\n pos: number | Range;\r\n actualWidth?: number;\r\n actualHeight?: number;\r\n }) => ReturnType;\r\n setVideoBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\r\n setVideoBlockWidth: (width: number) => ReturnType;\r\n setVideoBlockCaption: (caption: boolean) => ReturnType;\r\n };\r\n }\r\n}\r\n\r\nexport const VideoBlock = Video.extend({\r\n name: \"videoBlock\",\r\n\r\n group: \"block\",\r\n\r\n defining: true,\r\n\r\n isolating: true,\r\n\r\n addAttributes() {\r\n return {\r\n src: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"src\"),\r\n renderHTML: (attributes) => ({\r\n src: attributes.src,\r\n }),\r\n },\r\n title: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"title\"),\r\n renderHTML: (attributes) => ({\r\n title: attributes.title,\r\n }),\r\n },\r\n poster: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"poster\"),\r\n renderHTML: (attributes) => ({\r\n poster: attributes.poster,\r\n }),\r\n },\r\n playlistUrl: {\r\n default: \"\",\r\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\r\n renderHTML: (attributes) => ({\r\n \"data-playlist-url\": attributes.playlistUrl,\r\n }),\r\n },\r\n width: {\r\n default: \"100%\",\r\n parseHTML: (element) => element.getAttribute(\"data-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-width\": attributes.width,\r\n }),\r\n },\r\n actualWidth: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-width\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-width\": attributes.actualWidth,\r\n }),\r\n },\r\n actualHeight: {\r\n default: 0,\r\n parseHTML: (element) => element.getAttribute(\"data-actual-height\"),\r\n renderHTML: (attributes) => ({\r\n \"data-actual-height\": attributes.actualHeight,\r\n }),\r\n },\r\n align: {\r\n default: \"center\",\r\n parseHTML: (element) => element.getAttribute(\"data-align\"),\r\n renderHTML: (attributes) => ({\r\n \"data-align\": attributes.align,\r\n }),\r\n },\r\n alt: {\r\n default: undefined,\r\n parseHTML: (element) => element.getAttribute(\"alt\"),\r\n renderHTML: (attributes) => ({\r\n alt: attributes.alt,\r\n }),\r\n },\r\n caption: {\r\n default: true,\r\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\r\n renderHTML: (attributes) => ({\r\n \"data-caption\": attributes.caption,\r\n }),\r\n },\r\n };\r\n },\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'video[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), video[src*=\"windows.net\"]:not([src^=\"data:\"])',\r\n },\r\n ];\r\n },\r\n\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n { class: \"imageBlock\" },\r\n [\"video\", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)],\r\n [\r\n \"caption\",\r\n mergeAttributes(\r\n {\r\n class:\r\n \"text-center text-gray-400 w-full h-16 mb-2 placeholder-black p-1 text-sm border-0 rounded appearance-none\",\r\n },\r\n { defaultValue: HTMLAttributes.title || HTMLAttributes.caption }\r\n ),\r\n HTMLAttributes.title || HTMLAttributes.caption,\r\n ],\r\n ];\r\n },\r\n\r\n addCommands() {\r\n return {\r\n setVideoBlock:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContent({\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAt:\r\n (attrs) =>\r\n ({ commands }) => {\r\n return commands.insertContentAt(attrs.pos, {\r\n type: \"videoBlock\",\r\n attrs: {\r\n src: attrs.src,\r\n poster: attrs.poster,\r\n assetId: attrs.assetId,\r\n playlistUrl: attrs.playlistUrl,\r\n title: attrs.title,\r\n actualWidth: attrs.actualWidth,\r\n actualHeight: attrs.actualHeight,\r\n },\r\n });\r\n },\r\n\r\n setVideoBlockAlign:\r\n (align) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { align }),\r\n\r\n setVideoBlockWidth:\r\n (width) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", {\r\n width: `${Math.max(0, Math.min(100, width))}%`,\r\n }),\r\n\r\n setVideoBlockCaption:\r\n (caption) =>\r\n ({ commands }) =>\r\n commands.updateAttributes(\"videoBlock\", { caption }),\r\n };\r\n },\r\n\r\n addNodeView() {\r\n //@ts-ignore\r\n return ReactNodeViewRenderer(VideoBlockView);\r\n },\r\n});\r\n\r\nexport default VideoBlock;\r\n"],"names":["ReactNodeViewRenderer","mergeAttributes","VideoBlockView","Video","VideoBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","title","poster","playlistUrl","width","actualWidth","actualHeight","align","alt","undefined","caption","tag","HTMLAttributes","class","options","defaultValue","addCommands","setVideoBlock","attrs","commands","insertContent","type","assetId","setVideoBlockAt","insertContentAt","pos","setVideoBlockAlign","updateAttributes","setVideoBlockWidth","Math","max","min","setVideoBlockCaption","addNodeView"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport { ReactNode, useCallback, useRef } from \"react\";\r\nimport { Instance, sticky } from \"tippy.js\";\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nimport {\r\n AlignHorizontalDistributeCenter,\r\n AlignHorizontalDistributeEnd,\r\n AlignHorizontalDistributeStart,\r\n Pencil,\r\n PencilOff,\r\n} from \"lucide-react\";\r\nimport { MenuProps } from \"../../../features/menus/types.js\";\r\nimport { Icon } from \"../../../features/ui/Icon.js\";\r\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\r\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\r\nimport { VideoBlockWidth } from \"./VideoBlockWidth.js\";\r\nimport i18next from \"i18next\";\r\n\r\nexport const VideoBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const tippyInstance = useRef<Instance | null>(null);\r\n\r\n const getReferenceClientRect = useCallback(() => {\r\n const renderContainer = getRenderContainer(editor, \"node-videoBlock\");\r\n const rect =\r\n renderContainer?.getBoundingClientRect() ||\r\n new DOMRect(-1000, -1000, 0, 0);\r\n\r\n return rect;\r\n }, [editor]);\r\n\r\n const shouldShow = useCallback(() => {\r\n const isActive = editor.isActive(\"videoBlock\");\r\n\r\n return isActive;\r\n }, [editor]);\r\n\r\n const onAlignVideoLeft = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockAlign(\"left\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onAlignVideoCenter = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockAlign(\"center\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onAlignVideoRight = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockAlign(\"right\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onHideCaption = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockCaption(\r\n editor.isActive(\"videoBlock\", { caption: false }) ? true : false\r\n )\r\n .run();\r\n }, [editor]);\r\n\r\n const onWidthChange = useCallback(\r\n (value: number) => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockWidth(value)\r\n .run();\r\n },\r\n [editor]\r\n );\r\n\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey={`videoBlockMenu-${uuid()}`}\r\n shouldShow={shouldShow}\r\n updateDelay={0}\r\n tippyOptions={{\r\n offset: [0, 8],\r\n popperOptions: {\r\n modifiers: [{ name: \"flip\", enabled: false }],\r\n },\r\n getReferenceClientRect,\r\n onCreate: (instance: Instance) => {\r\n tippyInstance.current = instance;\r\n },\r\n appendTo: () => {\r\n return appendTo?.current;\r\n },\r\n plugins: [sticky],\r\n sticky: \"popper\",\r\n }}\r\n >\r\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"toggleCaption\") || \"Hide/Show caption\"}\r\n active={editor.isActive(\"videoBlock\", { caption: false })}\r\n onClick={onHideCaption}\r\n >\r\n <Icon\r\n icon={\r\n editor.isActive(\"videoBlock\", { caption: false })\r\n ? PencilOff\r\n : Pencil\r\n }\r\n />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignVideoLeft\") || \"Align video left\"}\r\n active={editor.isActive(\"videoBlock\", { align: \"left\" })}\r\n onClick={onAlignVideoLeft}\r\n >\r\n <Icon icon={AlignHorizontalDistributeStart} />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignVideoCenter\") || \"Align video center\"}\r\n active={editor.isActive(\"videoBlock\", { align: \"center\" })}\r\n onClick={onAlignVideoCenter}\r\n >\r\n <Icon icon={AlignHorizontalDistributeCenter} />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignVideoRight\") || \"Align video right\"}\r\n active={editor.isActive(\"videoBlock\", { align: \"right\" })}\r\n onClick={onAlignVideoRight}\r\n >\r\n <Icon icon={AlignHorizontalDistributeEnd} />\r\n </Toolbar.Button>\r\n <Toolbar.Divider />\r\n <VideoBlockWidth\r\n onChange={onWidthChange}\r\n value={parseInt(editor.getAttributes(\"videoBlock\").width)}\r\n />\r\n </Toolbar.Wrapper>\r\n </BaseBubbleMenu>\r\n );\r\n};\r\n\r\nexport default VideoBlockMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Pencil","PencilOff","Icon","Toolbar","getRenderContainer","VideoBlockWidth","i18next","VideoBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignVideoLeft","chain","focus","undefined","scrollIntoView","setVideoBlockAlign","run","onAlignVideoCenter","onAlignVideoRight","onHideCaption","setVideoBlockCaption","caption","onWidthChange","value","setVideoBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","onClick","icon","align","Divider","onChange","parseInt","getAttributes","width"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\r\nimport { ReactNode, useCallback, useRef } from \"react\";\r\nimport { Instance, sticky } from \"tippy.js\";\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nimport {\r\n AlignHorizontalDistributeCenter,\r\n AlignHorizontalDistributeEnd,\r\n AlignHorizontalDistributeStart,\r\n Pencil,\r\n PencilOff,\r\n} from \"lucide-react\";\r\nimport { MenuProps } from \"../../../features/menus/types.js\";\r\nimport { Icon } from \"../../../features/ui/Icon.js\";\r\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\r\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\r\nimport { VideoBlockWidth } from \"./VideoBlockWidth.js\";\r\nimport i18next from \"i18next\";\r\n\r\nexport const VideoBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const tippyInstance = useRef<Instance | null>(null);\r\n\r\n const getReferenceClientRect = useCallback(() => {\r\n const renderContainer = getRenderContainer(editor, \"node-videoBlock\");\r\n const rect =\r\n renderContainer?.getBoundingClientRect() ||\r\n new DOMRect(-1000, -1000, 0, 0);\r\n\r\n return rect;\r\n }, [editor]);\r\n\r\n const shouldShow = useCallback(() => {\r\n const isActive = editor.isActive(\"videoBlock\");\r\n\r\n return isActive;\r\n }, [editor]);\r\n\r\n const onAlignVideoLeft = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockAlign(\"left\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onAlignVideoCenter = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockAlign(\"center\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onAlignVideoRight = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockAlign(\"right\")\r\n .run();\r\n }, [editor]);\r\n\r\n const onHideCaption = useCallback(() => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockCaption(\r\n editor.isActive(\"videoBlock\", { caption: false }) ? true : false\r\n )\r\n .run();\r\n }, [editor]);\r\n\r\n const onWidthChange = useCallback(\r\n (value: number) => {\r\n editor\r\n .chain()\r\n .focus(undefined, { scrollIntoView: false })\r\n .setVideoBlockWidth(value)\r\n .run();\r\n },\r\n [editor]\r\n );\r\n\r\n return (\r\n <BaseBubbleMenu\r\n editor={editor}\r\n pluginKey={`videoBlockMenu-${uuid()}`}\r\n shouldShow={shouldShow}\r\n updateDelay={0}\r\n tippyOptions={{\r\n offset: [0, 8],\r\n popperOptions: {\r\n modifiers: [{ name: \"flip\", enabled: false }],\r\n },\r\n getReferenceClientRect,\r\n onCreate: (instance: Instance) => {\r\n tippyInstance.current = instance;\r\n },\r\n appendTo: () => {\r\n return appendTo?.current;\r\n },\r\n plugins: [sticky],\r\n sticky: \"popper\",\r\n }}\r\n >\r\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"toggleCaption\") || \"Hide/Show caption\"}\r\n active={editor.isActive(\"videoBlock\", { caption: false })}\r\n onClick={onHideCaption}\r\n >\r\n <Icon\r\n icon={\r\n editor.isActive(\"videoBlock\", { caption: false })\r\n ? PencilOff\r\n : Pencil\r\n }\r\n />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignVideoLeft\") || \"Align video left\"}\r\n active={editor.isActive(\"videoBlock\", { align: \"left\" })}\r\n onClick={onAlignVideoLeft}\r\n >\r\n <Icon icon={AlignHorizontalDistributeStart} />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignVideoCenter\") || \"Align video center\"}\r\n active={editor.isActive(\"videoBlock\", { align: \"center\" })}\r\n onClick={onAlignVideoCenter}\r\n >\r\n <Icon icon={AlignHorizontalDistributeCenter} />\r\n </Toolbar.Button>\r\n <Toolbar.Button\r\n type=\"button\"\r\n tooltip={i18next.t(\"alignVideoRight\") || \"Align video right\"}\r\n active={editor.isActive(\"videoBlock\", { align: \"right\" })}\r\n onClick={onAlignVideoRight}\r\n >\r\n <Icon icon={AlignHorizontalDistributeEnd} />\r\n </Toolbar.Button>\r\n <Toolbar.Divider />\r\n <VideoBlockWidth\r\n onChange={onWidthChange}\r\n value={parseInt(editor.getAttributes(\"videoBlock\").width)}\r\n />\r\n </Toolbar.Wrapper>\r\n </BaseBubbleMenu>\r\n );\r\n};\r\n\r\nexport default VideoBlockMenu;\r\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Pencil","PencilOff","Icon","Toolbar","getRenderContainer","VideoBlockWidth","i18next","VideoBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignVideoLeft","chain","focus","undefined","scrollIntoView","setVideoBlockAlign","run","onAlignVideoCenter","onAlignVideoRight","onHideCaption","setVideoBlockCaption","caption","onWidthChange","value","setVideoBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","onClick","icon","align","Divider","onChange","parseInt","getAttributes","width"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.js"],"names":[],"mappings":"AAAA,mDAAoD;AACpD,iDAAkD;AAClD,4DAA6D"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.js"],"names":[],"mappings":"AAAA,gCAAiC,kBAAkB,CAAC;AACpD,+BAAgC,iBAAiB,CAAC;AAClD,qCAAsC,sBAAsB,CAAC"}
@@ -3,6 +3,6 @@ interface ExtensionKitProps {
3
3
  openAssetHQHandler: openAssetHQType;
4
4
  dir?: "ltr" | "rtl";
5
5
  }
6
- export declare const ExtensionKit: ({ dir, openAssetHQHandler, }: ExtensionKitProps) => (import("@tiptap/core").Node<any, any> | import("@tiptap/core").Extension<any, any> | import("@tiptap/core").Mark<import("@tiptap/extension-superscript").SuperscriptExtensionOptions, any>)[];
6
+ export declare const ExtensionKit: ({ dir, openAssetHQHandler, }: ExtensionKitProps) => (import("@tiptap/core").Extension<any, any> | import("@tiptap/core").Node<any, any> | import("@tiptap/core").Mark<import("@tiptap/extension-subscript").SubscriptExtensionOptions, any>)[];
7
7
  export default ExtensionKit;
8
8
  //# sourceMappingURL=extension-kit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-kit.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"names":[],"mappings":"AAiDA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,UAAU,iBAAiB;IACzB,kBAAkB,EAAE,eAAe,CAAC;IACpC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,iCAGtB,iBAAiB,mMA6HnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"extension-kit.d.ts","sourceRoot":"","sources":["../../../../../src/fields/TiptapEditor/extensions/extension-kit.ts"],"names":[],"mappings":"AAiDA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,UAAU,iBAAiB;IACzB,kBAAkB,EAAE,eAAe,CAAC;IACpC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,iCAGtB,iBAAiB,+LA6HnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Portal } from \"@radix-ui/react-portal\";\r\nimport { ComponentProps, memo, useEffect, useState } from \"react\";\r\n\r\nimport { renderEmbedContent } from \"./RenderEmbedClientSide.js\";\r\n\r\nconst CustomPortal = memo(\r\n ({\r\n content,\r\n getVideoAspect,\r\n ...props\r\n }: ComponentProps<typeof Portal> & { getVideoAspect }) => {\r\n useEffect(() => {}, []);\r\n return (\r\n <Portal {...props}>{renderEmbedContent(content, getVideoAspect)}</Portal>\r\n );\r\n }\r\n);\r\n\r\nexport function EmbedContentInlineRenderer({ body, getVideoAspect }) {\r\n const [mounted, setMounted] = useState(false);\r\n useEffect(() => {\r\n setMounted(true);\r\n }, []);\r\n\r\n if (!mounted) return null;\r\n return (\r\n <>\r\n {body.content\r\n .filter(\r\n (content) =>\r\n typeof content?.attrs?.[\"data-id\"] === \"number\" ||\r\n typeof content?.attrs?.[\"data-id\"] === \"string\"\r\n )\r\n .map((content) => {\r\n return (\r\n <CustomPortal\r\n key={`embed-content-inline-${content.attrs[\"data-id\"]}-${content.attrs.key}`}\r\n container={document?.querySelector(\r\n `[data-id='${content.attrs[\"data-id\"]}']`\r\n )}\r\n content={content}\r\n getVideoAspect={getVideoAspect}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n"],"names":["Portal","memo","useEffect","useState","renderEmbedContent","CustomPortal","content","getVideoAspect","props","EmbedContentInlineRenderer","body","mounted","setMounted","filter","attrs","map","container","document","querySelector","key"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,yBAAyB;AAChD,SAAyBC,IAAI,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAElE,SAASC,kBAAkB,QAAQ,6BAA6B;AAEhE,MAAMC,6BAAeJ,KACnB,CAAC,EACCK,OAAO,EACPC,cAAc,EACd,GAAGC,OACgD;IACnDN,UAAU,KAAO,GAAG,EAAE;IACtB,qBACE,KAACF;QAAQ,GAAGQ,KAAK;kBAAGJ,mBAAmBE,SAASC;;AAEpD;AAGF,OAAO,SAASE,2BAA2B,EAAEC,IAAI,EAAEH,cAAc,EAAE;IACjE,MAAM,CAACI,SAASC,WAAW,GAAGT,SAAS;IACvCD,UAAU;QACRU,WAAW;IACb,GAAG,EAAE;IAEL,IAAI,CAACD,SAAS,OAAO;IACrB,qBACE;kBACGD,KAAKJ,OAAO,CACVO,MAAM,CACL,CAACP,UACC,OAAOA,SAASQ,OAAO,CAAC,UAAU,KAAK,YACvC,OAAOR,SAASQ,OAAO,CAAC,UAAU,KAAK,UAE1CC,GAAG,CAAC,CAACT;YACJ,qBACE,KAACD;gBAECW,WAAWC,UAAUC,cACnB,CAAC,UAAU,EAAEZ,QAAQQ,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAE3CR,SAASA;gBACTC,gBAAgBA;eALX,CAAC,qBAAqB,EAAED,QAAQQ,KAAK,CAAC,UAAU,CAAC,CAAC,EAAER,QAAQQ,KAAK,CAACK,GAAG,CAAC,CAAC;QAQlF;;AAGR"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Portal } from \"@radix-ui/react-portal\";\r\nimport { ComponentProps, memo, useEffect, useState } from \"react\";\r\n\r\nimport { renderEmbedContent } from \"./RenderEmbedClientSide.js\";\r\n\r\nconst CustomPortal = memo(\r\n ({\r\n content,\r\n getVideoAspect,\r\n ...props\r\n }: ComponentProps<typeof Portal> & { getVideoAspect }) => {\r\n useEffect(() => {}, []);\r\n return (\r\n <Portal {...props}>{renderEmbedContent(content, getVideoAspect)}</Portal>\r\n );\r\n }\r\n);\r\n\r\nexport function EmbedContentInlineRenderer({ body, getVideoAspect }) {\r\n const [mounted, setMounted] = useState(false);\r\n useEffect(() => {\r\n setMounted(true);\r\n }, []);\r\n\r\n if (!mounted) return null;\r\n return (\r\n <>\r\n {body.content\r\n .filter(\r\n (content) =>\r\n typeof content?.attrs?.[\"data-id\"] === \"number\" ||\r\n typeof content?.attrs?.[\"data-id\"] === \"string\"\r\n )\r\n .map((content) => {\r\n return (\r\n <CustomPortal\r\n key={`embed-content-inline-${content.attrs[\"data-id\"]}-${content.attrs.key}`}\r\n container={document?.querySelector(\r\n `[data-id='${content.attrs[\"data-id\"]}']`\r\n )}\r\n content={content}\r\n getVideoAspect={getVideoAspect}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n"],"names":["Portal","memo","useEffect","useState","renderEmbedContent","CustomPortal","content","getVideoAspect","props","EmbedContentInlineRenderer","body","mounted","setMounted","filter","attrs","map","container","document","querySelector","key"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,yBAAyB;AAChD,SAAyBC,IAAI,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAElE,SAASC,kBAAkB,QAAQ,6BAA6B;AAEhE,MAAMC,6BAAeJ,KACnB,CAAC,EACCK,OAAO,EACPC,cAAc,EACd,GAAGC,OACgD;IACnDN,UAAU,KAAO,GAAG,EAAE;IACtB,qBACE,KAACF;QAAQ,GAAGQ,KAAK;kBAAGJ,mBAAmBE,SAASC;;AAEpD;AAGF,OAAO,SAASE,2BAA2B,EAAEC,IAAI,EAAEH,cAAc,EAAE;IACjE,MAAM,CAACI,SAASC,WAAW,GAAGT,SAAS;IACvCD,UAAU;QACRU,WAAW;IACb,GAAG,EAAE;IAEL,IAAI,CAACD,SAAS,OAAO;IACrB,qBACE;kBACGD,KAAKJ,OAAO,CACVO,MAAM,CACL,CAACP,UACC,OAAOA,SAASQ,OAAO,CAAC,UAAU,KAAK,YACvC,OAAOR,SAASQ,OAAO,CAAC,UAAU,KAAK,UAE1CC,GAAG,CAAC,CAACT;YACJ,qBACE,KAACD;gBAECW,WAAWC,UAAUC,cACnB,CAAC,UAAU,EAAEZ,QAAQQ,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAE3CR,SAASA;gBACTC,gBAAgBA;eALX,CAAC,qBAAqB,EAAED,QAAQQ,KAAK,CAAC,UAAU,CAAC,CAAC,EAAER,QAAQQ,KAAK,CAACK,GAAG,EAAE;QAQlF;;AAGR"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/EmbedContentSideRenderer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Portal } from \"@radix-ui/react-portal\";\r\nimport { ComponentProps, memo, useEffect, useState } from \"react\";\r\n\r\nimport { renderEmbedContent } from \"./RenderEmbedClientSide.js\";\r\n\r\nconst CustomPortal = memo(\r\n ({\r\n content,\r\n getVideoAspect,\r\n ...props\r\n }: ComponentProps<typeof Portal> & { getVideoAspect }) => {\r\n useEffect(() => {}, []);\r\n return (\r\n <Portal {...props}>{renderEmbedContent(content, getVideoAspect)}</Portal>\r\n );\r\n }\r\n);\r\n\r\nexport function EmbedContentSideRenderer({ body, getVideoAspect }) {\r\n const [mounted, setMounted] = useState(false);\r\n useEffect(() => {\r\n setMounted(true);\r\n }, []);\r\n\r\n if (!mounted) return null;\r\n return (\r\n <>\r\n {body.content\r\n .filter(\r\n (content) =>\r\n typeof content?.attrs?.[\"data-id\"] === \"number\" ||\r\n typeof content?.attrs?.[\"data-id\"] === \"string\"\r\n )\r\n .filter((content) => content?.attrs?.side)\r\n .map((content) => {\r\n return (\r\n <CustomPortal\r\n key={`embed-content-side-${content.attrs[\"data-id\"]}-${content.attrs.key}`}\r\n container={document?.querySelector(\r\n `[data-id='${content.attrs[\"data-id\"]}']`\r\n )}\r\n content={content}\r\n getVideoAspect={getVideoAspect}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n"],"names":["Portal","memo","useEffect","useState","renderEmbedContent","CustomPortal","content","getVideoAspect","props","EmbedContentSideRenderer","body","mounted","setMounted","filter","attrs","side","map","container","document","querySelector","key"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,yBAAyB;AAChD,SAAyBC,IAAI,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAElE,SAASC,kBAAkB,QAAQ,6BAA6B;AAEhE,MAAMC,6BAAeJ,KACnB,CAAC,EACCK,OAAO,EACPC,cAAc,EACd,GAAGC,OACgD;IACnDN,UAAU,KAAO,GAAG,EAAE;IACtB,qBACE,KAACF;QAAQ,GAAGQ,KAAK;kBAAGJ,mBAAmBE,SAASC;;AAEpD;AAGF,OAAO,SAASE,yBAAyB,EAAEC,IAAI,EAAEH,cAAc,EAAE;IAC/D,MAAM,CAACI,SAASC,WAAW,GAAGT,SAAS;IACvCD,UAAU;QACRU,WAAW;IACb,GAAG,EAAE;IAEL,IAAI,CAACD,SAAS,OAAO;IACrB,qBACE;kBACGD,KAAKJ,OAAO,CACVO,MAAM,CACL,CAACP,UACC,OAAOA,SAASQ,OAAO,CAAC,UAAU,KAAK,YACvC,OAAOR,SAASQ,OAAO,CAAC,UAAU,KAAK,UAE1CD,MAAM,CAAC,CAACP,UAAYA,SAASQ,OAAOC,MACpCC,GAAG,CAAC,CAACV;YACJ,qBACE,KAACD;gBAECY,WAAWC,UAAUC,cACnB,CAAC,UAAU,EAAEb,QAAQQ,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAE3CR,SAASA;gBACTC,gBAAgBA;eALX,CAAC,mBAAmB,EAAED,QAAQQ,KAAK,CAAC,UAAU,CAAC,CAAC,EAAER,QAAQQ,KAAK,CAACM,GAAG,CAAC,CAAC;QAQhF;;AAGR"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/EmbedContentSideRenderer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Portal } from \"@radix-ui/react-portal\";\r\nimport { ComponentProps, memo, useEffect, useState } from \"react\";\r\n\r\nimport { renderEmbedContent } from \"./RenderEmbedClientSide.js\";\r\n\r\nconst CustomPortal = memo(\r\n ({\r\n content,\r\n getVideoAspect,\r\n ...props\r\n }: ComponentProps<typeof Portal> & { getVideoAspect }) => {\r\n useEffect(() => {}, []);\r\n return (\r\n <Portal {...props}>{renderEmbedContent(content, getVideoAspect)}</Portal>\r\n );\r\n }\r\n);\r\n\r\nexport function EmbedContentSideRenderer({ body, getVideoAspect }) {\r\n const [mounted, setMounted] = useState(false);\r\n useEffect(() => {\r\n setMounted(true);\r\n }, []);\r\n\r\n if (!mounted) return null;\r\n return (\r\n <>\r\n {body.content\r\n .filter(\r\n (content) =>\r\n typeof content?.attrs?.[\"data-id\"] === \"number\" ||\r\n typeof content?.attrs?.[\"data-id\"] === \"string\"\r\n )\r\n .filter((content) => content?.attrs?.side)\r\n .map((content) => {\r\n return (\r\n <CustomPortal\r\n key={`embed-content-side-${content.attrs[\"data-id\"]}-${content.attrs.key}`}\r\n container={document?.querySelector(\r\n `[data-id='${content.attrs[\"data-id\"]}']`\r\n )}\r\n content={content}\r\n getVideoAspect={getVideoAspect}\r\n />\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n"],"names":["Portal","memo","useEffect","useState","renderEmbedContent","CustomPortal","content","getVideoAspect","props","EmbedContentSideRenderer","body","mounted","setMounted","filter","attrs","side","map","container","document","querySelector","key"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,yBAAyB;AAChD,SAAyBC,IAAI,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAElE,SAASC,kBAAkB,QAAQ,6BAA6B;AAEhE,MAAMC,6BAAeJ,KACnB,CAAC,EACCK,OAAO,EACPC,cAAc,EACd,GAAGC,OACgD;IACnDN,UAAU,KAAO,GAAG,EAAE;IACtB,qBACE,KAACF;QAAQ,GAAGQ,KAAK;kBAAGJ,mBAAmBE,SAASC;;AAEpD;AAGF,OAAO,SAASE,yBAAyB,EAAEC,IAAI,EAAEH,cAAc,EAAE;IAC/D,MAAM,CAACI,SAASC,WAAW,GAAGT,SAAS;IACvCD,UAAU;QACRU,WAAW;IACb,GAAG,EAAE;IAEL,IAAI,CAACD,SAAS,OAAO;IACrB,qBACE;kBACGD,KAAKJ,OAAO,CACVO,MAAM,CACL,CAACP,UACC,OAAOA,SAASQ,OAAO,CAAC,UAAU,KAAK,YACvC,OAAOR,SAASQ,OAAO,CAAC,UAAU,KAAK,UAE1CD,MAAM,CAAC,CAACP,UAAYA,SAASQ,OAAOC,MACpCC,GAAG,CAAC,CAACV;YACJ,qBACE,KAACD;gBAECY,WAAWC,UAAUC,cACnB,CAAC,UAAU,EAAEb,QAAQQ,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBAE3CR,SAASA;gBACTC,gBAAgBA;eALX,CAAC,mBAAmB,EAAED,QAAQQ,KAAK,CAAC,UAAU,CAAC,CAAC,EAAER,QAAQQ,KAAK,CAACM,GAAG,EAAE;QAQhF;;AAGR"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/EmbedContentSidebarRenderer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { renderEmbedContent } from \"./RenderEmbedClientSide.js\";\r\nconst HEIGHT = 320;\r\n\r\nfunction getContainerElement(containerId) {\r\n if (typeof window === \"undefined\" || !containerId) return null;\r\n return document.getElementById(containerId);\r\n}\r\n\r\nexport function EmbedContentSidebarRenderer({\r\n body,\r\n containerId,\r\n getVideoAspect,\r\n}) {\r\n const [mounted, setMounted] = useState(false);\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setMounted(true);\r\n }, 200);\r\n }, []);\r\n const containerEl = useRef(getContainerElement(containerId));\r\n if (!mounted || typeof window === \"undefined\") return null;\r\n if (!containerEl.current) {\r\n containerEl.current = getContainerElement(containerId);\r\n }\r\n let lastRenderedPixel =\r\n containerEl.current?.getBoundingClientRect()?.top + window.scrollY ||\r\n window.innerHeight;\r\n\r\n return (\r\n <>\r\n {body.content\r\n .filter((content) => content?.attrs?.[\"data-id\"])\r\n .filter((content) => content?.attrs?.side)\r\n .map((content) => {\r\n const el = document?.querySelector(\r\n `[data-id='${content.attrs[\"data-id\"]}']`\r\n );\r\n const relativeTopPosition = el.getBoundingClientRect().top;\r\n const topPosition = relativeTopPosition + window.scrollY;\r\n\r\n const tempBottomPixel = lastRenderedPixel;\r\n\r\n const marginTop = Math.max(\r\n 8,\r\n topPosition - tempBottomPixel - HEIGHT / 2\r\n );\r\n lastRenderedPixel = topPosition + HEIGHT;\r\n\r\n return (\r\n <div\r\n key={`embed-content-sidebar-${content.attrs[\"data-id\"]}-${content.attrs.key}`}\r\n className=\"w-full\"\r\n style={{ marginTop }}\r\n >\r\n {renderEmbedContent(content, getVideoAspect)}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n"],"names":["useEffect","useRef","useState","renderEmbedContent","HEIGHT","getContainerElement","containerId","window","document","getElementById","EmbedContentSidebarRenderer","body","getVideoAspect","mounted","setMounted","setTimeout","containerEl","current","lastRenderedPixel","getBoundingClientRect","top","scrollY","innerHeight","content","filter","attrs","side","map","el","querySelector","relativeTopPosition","topPosition","tempBottomPixel","marginTop","Math","max","div","className","style","key"],"mappings":"AAAA;;AAEA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AACpD,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,MAAMC,SAAS;AAEf,SAASC,oBAAoBC,WAAW;IACtC,IAAI,OAAOC,WAAW,eAAe,CAACD,aAAa,OAAO;IAC1D,OAAOE,SAASC,cAAc,CAACH;AACjC;AAEA,OAAO,SAASI,4BAA4B,EAC1CC,IAAI,EACJL,WAAW,EACXM,cAAc,EACf;IACC,MAAM,CAACC,SAASC,WAAW,GAAGZ,SAAS;IACvCF,UAAU;QACRe,WAAW;YACTD,WAAW;QACb,GAAG;IACL,GAAG,EAAE;IACL,MAAME,cAAcf,OAAOI,oBAAoBC;IAC/C,IAAI,CAACO,WAAW,OAAON,WAAW,aAAa,OAAO;IACtD,IAAI,CAACS,YAAYC,OAAO,EAAE;QACxBD,YAAYC,OAAO,GAAGZ,oBAAoBC;IAC5C;IACA,IAAIY,oBACFF,YAAYC,OAAO,EAAEE,yBAAyBC,MAAMb,OAAOc,OAAO,IAClEd,OAAOe,WAAW;IAEpB,qBACE;kBACGX,KAAKY,OAAO,CACVC,MAAM,CAAC,CAACD,UAAYA,SAASE,OAAO,CAAC,UAAU,EAC/CD,MAAM,CAAC,CAACD,UAAYA,SAASE,OAAOC,MACpCC,GAAG,CAAC,CAACJ;YACJ,MAAMK,KAAKpB,UAAUqB,cACnB,CAAC,UAAU,EAAEN,QAAQE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAE3C,MAAMK,sBAAsBF,GAAGT,qBAAqB,GAAGC,GAAG;YAC1D,MAAMW,cAAcD,sBAAsBvB,OAAOc,OAAO;YAExD,MAAMW,kBAAkBd;YAExB,MAAMe,YAAYC,KAAKC,GAAG,CACxB,GACAJ,cAAcC,kBAAkB5B,SAAS;YAE3Cc,oBAAoBa,cAAc3B;YAElC,qBACE,KAACgC;gBAECC,WAAU;gBACVC,OAAO;oBAAEL;gBAAU;0BAElB9B,mBAAmBoB,SAASX;eAJxB,CAAC,sBAAsB,EAAEW,QAAQE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEF,QAAQE,KAAK,CAACc,GAAG,CAAC,CAAC;QAOnF;;AAGR"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/EmbedContentSidebarRenderer.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { renderEmbedContent } from \"./RenderEmbedClientSide.js\";\r\nconst HEIGHT = 320;\r\n\r\nfunction getContainerElement(containerId) {\r\n if (typeof window === \"undefined\" || !containerId) return null;\r\n return document.getElementById(containerId);\r\n}\r\n\r\nexport function EmbedContentSidebarRenderer({\r\n body,\r\n containerId,\r\n getVideoAspect,\r\n}) {\r\n const [mounted, setMounted] = useState(false);\r\n useEffect(() => {\r\n setTimeout(() => {\r\n setMounted(true);\r\n }, 200);\r\n }, []);\r\n const containerEl = useRef(getContainerElement(containerId));\r\n if (!mounted || typeof window === \"undefined\") return null;\r\n if (!containerEl.current) {\r\n containerEl.current = getContainerElement(containerId);\r\n }\r\n let lastRenderedPixel =\r\n containerEl.current?.getBoundingClientRect()?.top + window.scrollY ||\r\n window.innerHeight;\r\n\r\n return (\r\n <>\r\n {body.content\r\n .filter((content) => content?.attrs?.[\"data-id\"])\r\n .filter((content) => content?.attrs?.side)\r\n .map((content) => {\r\n const el = document?.querySelector(\r\n `[data-id='${content.attrs[\"data-id\"]}']`\r\n );\r\n const relativeTopPosition = el.getBoundingClientRect().top;\r\n const topPosition = relativeTopPosition + window.scrollY;\r\n\r\n const tempBottomPixel = lastRenderedPixel;\r\n\r\n const marginTop = Math.max(\r\n 8,\r\n topPosition - tempBottomPixel - HEIGHT / 2\r\n );\r\n lastRenderedPixel = topPosition + HEIGHT;\r\n\r\n return (\r\n <div\r\n key={`embed-content-sidebar-${content.attrs[\"data-id\"]}-${content.attrs.key}`}\r\n className=\"w-full\"\r\n style={{ marginTop }}\r\n >\r\n {renderEmbedContent(content, getVideoAspect)}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n}\r\n"],"names":["useEffect","useRef","useState","renderEmbedContent","HEIGHT","getContainerElement","containerId","window","document","getElementById","EmbedContentSidebarRenderer","body","getVideoAspect","mounted","setMounted","setTimeout","containerEl","current","lastRenderedPixel","getBoundingClientRect","top","scrollY","innerHeight","content","filter","attrs","side","map","el","querySelector","relativeTopPosition","topPosition","tempBottomPixel","marginTop","Math","max","div","className","style","key"],"mappings":"AAAA;;AAEA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AACpD,SAASC,kBAAkB,QAAQ,6BAA6B;AAChE,MAAMC,SAAS;AAEf,SAASC,oBAAoBC,WAAW;IACtC,IAAI,OAAOC,WAAW,eAAe,CAACD,aAAa,OAAO;IAC1D,OAAOE,SAASC,cAAc,CAACH;AACjC;AAEA,OAAO,SAASI,4BAA4B,EAC1CC,IAAI,EACJL,WAAW,EACXM,cAAc,EACf;IACC,MAAM,CAACC,SAASC,WAAW,GAAGZ,SAAS;IACvCF,UAAU;QACRe,WAAW;YACTD,WAAW;QACb,GAAG;IACL,GAAG,EAAE;IACL,MAAME,cAAcf,OAAOI,oBAAoBC;IAC/C,IAAI,CAACO,WAAW,OAAON,WAAW,aAAa,OAAO;IACtD,IAAI,CAACS,YAAYC,OAAO,EAAE;QACxBD,YAAYC,OAAO,GAAGZ,oBAAoBC;IAC5C;IACA,IAAIY,oBACFF,YAAYC,OAAO,EAAEE,yBAAyBC,MAAMb,OAAOc,OAAO,IAClEd,OAAOe,WAAW;IAEpB,qBACE;kBACGX,KAAKY,OAAO,CACVC,MAAM,CAAC,CAACD,UAAYA,SAASE,OAAO,CAAC,UAAU,EAC/CD,MAAM,CAAC,CAACD,UAAYA,SAASE,OAAOC,MACpCC,GAAG,CAAC,CAACJ;YACJ,MAAMK,KAAKpB,UAAUqB,cACnB,CAAC,UAAU,EAAEN,QAAQE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAE3C,MAAMK,sBAAsBF,GAAGT,qBAAqB,GAAGC,GAAG;YAC1D,MAAMW,cAAcD,sBAAsBvB,OAAOc,OAAO;YAExD,MAAMW,kBAAkBd;YAExB,MAAMe,YAAYC,KAAKC,GAAG,CACxB,GACAJ,cAAcC,kBAAkB5B,SAAS;YAE3Cc,oBAAoBa,cAAc3B;YAElC,qBACE,KAACgC;gBAECC,WAAU;gBACVC,OAAO;oBAAEL;gBAAU;0BAElB9B,mBAAmBoB,SAASX;eAJxB,CAAC,sBAAsB,EAAEW,QAAQE,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEF,QAAQE,KAAK,CAACc,GAAG,EAAE;QAOnF;;AAGR"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/FacebookServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const FacebookServerside = Node.create({\r\n name: \"facebook\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"facebook\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-facebook\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"facebook\",\r\n class: `react-renderer node-facebook ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","FacebookServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,qBAAqBF,KAAKG,MAAM,CAAC;IAC5CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAkB;QACtC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,6BAA6B,EAAEE,eAAeF,KAAK,CAAC,CAAC;YAC/D;YACA;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/FacebookServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const FacebookServerside = Node.create({\r\n name: \"facebook\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"facebook\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-facebook\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"facebook\",\r\n class: `react-renderer node-facebook ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","FacebookServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,qBAAqBF,KAAKG,MAAM,CAAC;IAC5CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAkB;QACtC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,6BAA6B,EAAEE,eAAeF,KAAK,EAAE;YAC/D;YACA;SACD;IACH;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/InstagramServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const InstagramServerside = Node.create({\r\n name: \"instagram\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"instagram\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-instagram\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"instagram\",\r\n class: `react-renderer node-instagram ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","InstagramServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,sBAAsBF,KAAKG,MAAM,CAAC;IAC7CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAmB;QACvC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,8BAA8B,EAAEE,eAAeF,KAAK,CAAC,CAAC;YAChE;YACA;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/InstagramServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const InstagramServerside = Node.create({\r\n name: \"instagram\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"instagram\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-instagram\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"instagram\",\r\n class: `react-renderer node-instagram ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","InstagramServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,sBAAsBF,KAAKG,MAAM,CAAC;IAC7CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAmB;QACvC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,8BAA8B,EAAEE,eAAeF,KAAK,EAAE;YAChE;YACA;SACD;IACH;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/LinkedinServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const LinkedinServerside = Node.create({\r\n name: \"linkedin\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"linkedin\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-tiktok\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"linkedin\",\r\n class: `react-renderer node-linkedin ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","LinkedinServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,qBAAqBF,KAAKG,MAAM,CAAC;IAC5CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAgB;QACpC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,6BAA6B,EAAEE,eAAeF,KAAK,CAAC,CAAC;YAC/D;YACA;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/LinkedinServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const LinkedinServerside = Node.create({\r\n name: \"linkedin\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"linkedin\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-tiktok\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"linkedin\",\r\n class: `react-renderer node-linkedin ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","LinkedinServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,qBAAqBF,KAAKG,MAAM,CAAC;IAC5CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAgB;QACpC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,6BAA6B,EAAEE,eAAeF,KAAK,EAAE;YAC/D;YACA;SACD;IACH;AACF,GAAG"}
@@ -80,7 +80,7 @@ export const ServersideTiptapBody = ({ body, additionalContext })=>{
80
80
  if (!body) return null;
81
81
  // Initialize i18n synchronously
82
82
  initializeI18n(additionalContext);
83
- const textDirection = i18n.dir();
83
+ const textDirection = additionalContext?.textDirection || i18n.dir();
84
84
  return /*#__PURE__*/ _jsx(_Fragment, {
85
85
  children: /*#__PURE__*/ _jsx("div", {
86
86
  className: "tiptap ProseMirror min-h-full",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.tsx"],"sourcesContent":["import React from 'react';\r\nimport { generateHTML } from '@tiptap/html';\r\nimport i18n from 'i18next';\r\n// import { Text } from \"@tiptap/extension-text\";\r\nimport {\r\n StarterKit,\r\n Highlight,\r\n // CharacterCount,\r\n Underline,\r\n Placeholder,\r\n // Emoji,\r\n TextAlign,\r\n TextStyle,\r\n FontFamily,\r\n Typography,\r\n // Color,\r\n // Dropcursor,\r\n // CollaborationCursor,\r\n Subscript,\r\n // TableOfContents,\r\n Superscript,\r\n CodeBlock,\r\n // BulletList,\r\n // OrderedList,\r\n // Collaboration,\r\n // TaskItem,\r\n // TaskList,\r\n // FileHandler,\r\n // Selection,\r\n // Focus,\r\n Table,\r\n HorizontalRule,\r\n Heading,\r\n Document,\r\n // TrailingNode,\r\n // FontSize,\r\n // Figure,\r\n // Figcaption,\r\n BlockquoteFigure,\r\n // Quote,\r\n // QuoteCaption,\r\n Link,\r\n // ImageUpload,\r\n // ImageBlock,\r\n // VideoBlock,\r\n // AudioBlock,\r\n // Youtube,\r\n // Instagram,\r\n // Columns,\r\n Paragraph,\r\n // InsideLinks,\r\n TableCell,\r\n TableHeader,\r\n TableRow,\r\n Column,\r\n LinkPreview\r\n // Twitter,\r\n // Linkedin,\r\n // Tiktok,\r\n // Facebook,\r\n // Instagram,\r\n // Youtube,\r\n} from '../index.js';\r\n\r\nimport { TwitterBlockServerside } from './TwitterBlockServerside.js';\r\nimport { YouTubeServerside } from './YouTubeServerside.js';\r\nimport { InstagramServerside } from './InstagramServerside.js';\r\nimport { ImageBlockServerside } from './ImageBlockServerside.js';\r\nimport { TiktokServerside } from './TiktokServerside.js';\r\nimport { LinkedinServerside } from './LinkedinServerside.js';\r\nimport { FacebookServerside } from './FacebookServerside.js';\r\nimport { VideoBlockServerside } from './VideoBlockServerside.js';\r\nimport { InsideLinkServerside } from './InsideLinkServerside.js';\r\nimport { IFrameServerside } from './IFrameServerside.js';\r\nimport { AdditionalContextType } from '../../features/BlockEditor/types.js';\r\n\r\nconst DEFAULT_LANG = 'en';\r\n\r\ntype Props = {\r\n body: any;\r\n additionalContext?: AdditionalContextType;\r\n};\r\n\r\n// Initialize i18n based on additionalContext\r\nconst initializeI18n = (additionalContext?: AdditionalContextType) => {\r\n if (!additionalContext) {\r\n i18n.init({\r\n fallbackLng: DEFAULT_LANG,\r\n lng: DEFAULT_LANG,\r\n returnEmptyString: true,\r\n resources: {}\r\n });\r\n return;\r\n }\r\n\r\n if (additionalContext.language && additionalContext.translations) {\r\n i18n.init({\r\n fallbackLng: additionalContext.language,\r\n lng: additionalContext.language,\r\n returnEmptyString: true,\r\n resources: {\r\n [additionalContext.language]: {\r\n translation: additionalContext.translations\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n\r\n if (additionalContext.language) {\r\n i18n.init({\r\n fallbackLng: additionalContext?.language,\r\n lng: additionalContext?.language,\r\n returnEmptyString: true,\r\n resources: {}\r\n });\r\n }\r\n};\r\n\r\nexport const ServersideTiptapBody = ({ body, additionalContext }: Props) => {\r\n if (!body) return null;\r\n\r\n // Initialize i18n synchronously\r\n initializeI18n(additionalContext);\r\n\r\n const textDirection = i18n.dir();\r\n\r\n return (\r\n <>\r\n <div\r\n className='tiptap ProseMirror min-h-full'\r\n dir={textDirection}\r\n dangerouslySetInnerHTML={{\r\n __html: generateHTML(body, [\r\n // Text,\r\n StarterKit.configure({\r\n paragraph: false,\r\n document: false,\r\n dropcursor: false,\r\n heading: false,\r\n horizontalRule: false,\r\n blockquote: false,\r\n history: false,\r\n codeBlock: false\r\n }),\r\n Highlight,\r\n // CharacterCount,\r\n Underline,\r\n Placeholder,\r\n // Emoji,\r\n TextAlign,\r\n TextStyle,\r\n FontFamily,\r\n Typography,\r\n // Color,\r\n // Dropcursor,\r\n // CollaborationCursor,\r\n // Subscript,\r\n // TableOfContents,\r\n // Superscript,\r\n CodeBlock,\r\n // BulletList,\r\n // OrderedList,\r\n // Collaboration,\r\n // TaskItem,\r\n // TaskList,\r\n // FileHandler,\r\n // Selection,\r\n // Focus,\r\n Table,\r\n HorizontalRule,\r\n Heading,\r\n Document,\r\n // TrailingNode,\r\n // SlashCommand,\r\n // FontSize,\r\n // Figure,\r\n // Figcaption,\r\n BlockquoteFigure,\r\n // Quote,\r\n // QuoteCaption,\r\n ImageBlockServerside,\r\n VideoBlockServerside,\r\n // AudioBlock,\r\n // Columns,\r\n TwitterBlockServerside,\r\n InstagramServerside,\r\n YouTubeServerside,\r\n Paragraph,\r\n Superscript,\r\n Subscript,\r\n Link,\r\n TiktokServerside,\r\n LinkedinServerside,\r\n FacebookServerside,\r\n InsideLinkServerside,\r\n IFrameServerside,\r\n // InsideLinks,\r\n TableCell,\r\n TableHeader,\r\n TableRow,\r\n Column,\r\n LinkPreview\r\n ])\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\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":"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"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.tsx"],"sourcesContent":["import React from 'react';\r\nimport { generateHTML } from '@tiptap/html';\r\nimport i18n from 'i18next';\r\n// import { Text } from \"@tiptap/extension-text\";\r\nimport {\r\n StarterKit,\r\n Highlight,\r\n // CharacterCount,\r\n Underline,\r\n Placeholder,\r\n // Emoji,\r\n TextAlign,\r\n TextStyle,\r\n FontFamily,\r\n Typography,\r\n // Color,\r\n // Dropcursor,\r\n // CollaborationCursor,\r\n Subscript,\r\n // TableOfContents,\r\n Superscript,\r\n CodeBlock,\r\n // BulletList,\r\n // OrderedList,\r\n // Collaboration,\r\n // TaskItem,\r\n // TaskList,\r\n // FileHandler,\r\n // Selection,\r\n // Focus,\r\n Table,\r\n HorizontalRule,\r\n Heading,\r\n Document,\r\n // TrailingNode,\r\n // FontSize,\r\n // Figure,\r\n // Figcaption,\r\n BlockquoteFigure,\r\n // Quote,\r\n // QuoteCaption,\r\n Link,\r\n // ImageUpload,\r\n // ImageBlock,\r\n // VideoBlock,\r\n // AudioBlock,\r\n // Youtube,\r\n // Instagram,\r\n // Columns,\r\n Paragraph,\r\n // InsideLinks,\r\n TableCell,\r\n TableHeader,\r\n TableRow,\r\n Column,\r\n LinkPreview\r\n // Twitter,\r\n // Linkedin,\r\n // Tiktok,\r\n // Facebook,\r\n // Instagram,\r\n // Youtube,\r\n} from '../index.js';\r\n\r\nimport { TwitterBlockServerside } from './TwitterBlockServerside.js';\r\nimport { YouTubeServerside } from './YouTubeServerside.js';\r\nimport { InstagramServerside } from './InstagramServerside.js';\r\nimport { ImageBlockServerside } from './ImageBlockServerside.js';\r\nimport { TiktokServerside } from './TiktokServerside.js';\r\nimport { LinkedinServerside } from './LinkedinServerside.js';\r\nimport { FacebookServerside } from './FacebookServerside.js';\r\nimport { VideoBlockServerside } from './VideoBlockServerside.js';\r\nimport { InsideLinkServerside } from './InsideLinkServerside.js';\r\nimport { IFrameServerside } from './IFrameServerside.js';\r\nimport { AdditionalContextType } from '../../features/BlockEditor/types.js';\r\n\r\nconst DEFAULT_LANG = 'en';\r\n\r\ntype Props = {\r\n body: any;\r\n additionalContext?: AdditionalContextType;\r\n};\r\n\r\n// Initialize i18n based on additionalContext\r\nconst initializeI18n = (additionalContext?: AdditionalContextType) => {\r\n if (!additionalContext) {\r\n i18n.init({\r\n fallbackLng: DEFAULT_LANG,\r\n lng: DEFAULT_LANG,\r\n returnEmptyString: true,\r\n resources: {}\r\n });\r\n return;\r\n }\r\n\r\n if (additionalContext.language && additionalContext.translations) {\r\n i18n.init({\r\n fallbackLng: additionalContext.language,\r\n lng: additionalContext.language,\r\n returnEmptyString: true,\r\n resources: {\r\n [additionalContext.language]: {\r\n translation: additionalContext.translations\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n\r\n if (additionalContext.language) {\r\n i18n.init({\r\n fallbackLng: additionalContext?.language,\r\n lng: additionalContext?.language,\r\n returnEmptyString: true,\r\n resources: {}\r\n });\r\n }\r\n};\r\n\r\nexport const ServersideTiptapBody = ({ body, additionalContext }: Props) => {\r\n if (!body) return null;\r\n\r\n // Initialize i18n synchronously\r\n initializeI18n(additionalContext);\r\n\r\n const textDirection = additionalContext?.textDirection || i18n.dir();\r\n\r\n return (\r\n <>\r\n <div\r\n className='tiptap ProseMirror min-h-full'\r\n dir={textDirection}\r\n dangerouslySetInnerHTML={{\r\n __html: generateHTML(body, [\r\n // Text,\r\n StarterKit.configure({\r\n paragraph: false,\r\n document: false,\r\n dropcursor: false,\r\n heading: false,\r\n horizontalRule: false,\r\n blockquote: false,\r\n history: false,\r\n codeBlock: false\r\n }),\r\n Highlight,\r\n // CharacterCount,\r\n Underline,\r\n Placeholder,\r\n // Emoji,\r\n TextAlign,\r\n TextStyle,\r\n FontFamily,\r\n Typography,\r\n // Color,\r\n // Dropcursor,\r\n // CollaborationCursor,\r\n // Subscript,\r\n // TableOfContents,\r\n // Superscript,\r\n CodeBlock,\r\n // BulletList,\r\n // OrderedList,\r\n // Collaboration,\r\n // TaskItem,\r\n // TaskList,\r\n // FileHandler,\r\n // Selection,\r\n // Focus,\r\n Table,\r\n HorizontalRule,\r\n Heading,\r\n Document,\r\n // TrailingNode,\r\n // SlashCommand,\r\n // FontSize,\r\n // Figure,\r\n // Figcaption,\r\n BlockquoteFigure,\r\n // Quote,\r\n // QuoteCaption,\r\n ImageBlockServerside,\r\n VideoBlockServerside,\r\n // AudioBlock,\r\n // Columns,\r\n TwitterBlockServerside,\r\n InstagramServerside,\r\n YouTubeServerside,\r\n Paragraph,\r\n Superscript,\r\n Subscript,\r\n Link,\r\n TiktokServerside,\r\n LinkedinServerside,\r\n FacebookServerside,\r\n InsideLinkServerside,\r\n IFrameServerside,\r\n // InsideLinks,\r\n TableCell,\r\n TableHeader,\r\n TableRow,\r\n Column,\r\n LinkPreview\r\n ])\r\n }}\r\n />\r\n </>\r\n );\r\n};\r\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":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/TiktokServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const TiktokServerside = Node.create({\r\n name: \"tiktok\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"tiktok\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-tiktok\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"tiktok\",\r\n class: `react-renderer node-tiktok ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","TiktokServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,mBAAmBF,KAAKG,MAAM,CAAC;IAC1CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAgB;QACpC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,2BAA2B,EAAEE,eAAeF,KAAK,CAAC,CAAC;YAC7D;YACA;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/TiktokServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const TiktokServerside = Node.create({\r\n name: \"tiktok\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"tiktok\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-tiktok\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"tiktok\",\r\n class: `react-renderer node-tiktok ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","TiktokServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,mBAAmBF,KAAKG,MAAM,CAAC;IAC1CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAgB;QACpC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,2BAA2B,EAAEE,eAAeF,KAAK,EAAE;YAC7D;YACA;SACD;IACH;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/TwitterBlockServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const TwitterBlockServerside = Node.create({\r\n name: \"twitter\",\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"twitter\"',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-twitter\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"twitter\",\r\n class: `react-renderer node-twitter ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","TwitterBlockServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,yBAAyBF,KAAKG,MAAM,CAAC;IAChDC,MAAM;IACNC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAiB;QACrC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,4BAA4B,EAAEE,eAAeF,KAAK,CAAC,CAAC;YAC9D;YACA;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/TwitterBlockServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const TwitterBlockServerside = Node.create({\r\n name: \"twitter\",\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"twitter\"',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-twitter\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"twitter\",\r\n class: `react-renderer node-twitter ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","TwitterBlockServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,yBAAyBF,KAAKG,MAAM,CAAC;IAChDC,MAAM;IACNC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAiB;QACrC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,4BAA4B,EAAEE,eAAeF,KAAK,EAAE;YAC9D;YACA;SACD;IACH;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/YouTubeServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const YouTubeServerside = Node.create({\r\n name: \"youtube\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"youtube\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-youtube\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"youtube\",\r\n class: `react-renderer node-youtube ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","YouTubeServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,oBAAoBF,KAAKG,MAAM,CAAC;IAC3CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAiB;QACrC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,4BAA4B,EAAEE,eAAeF,KAAK,CAAC,CAAC;YAC9D;YACA;SACD;IACH;AACF,GAAG"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/YouTubeServerside.ts"],"sourcesContent":["import { Node, mergeAttributes } from \"@tiptap/core\";\r\n\r\nexport const YouTubeServerside = Node.create({\r\n name: \"youtube\",\r\n\r\n group: \"block\",\r\n content: \"inline*\",\r\n\r\n parseHTML() {\r\n return [\r\n {\r\n tag: 'a[data-type=\"youtube\"]',\r\n },\r\n ];\r\n },\r\n addAttributes() {\r\n return {\r\n url: { default: null },\r\n \"data-id\": { default: null },\r\n class: { default: \"inline-youtube\" },\r\n };\r\n },\r\n renderHTML({ HTMLAttributes }) {\r\n return [\r\n \"div\",\r\n mergeAttributes(HTMLAttributes, {\r\n \"data-type\": \"youtube\",\r\n class: `react-renderer node-youtube ${HTMLAttributes.class}`,\r\n }),\r\n 0,\r\n ];\r\n },\r\n});\r\n"],"names":["Node","mergeAttributes","YouTubeServerside","create","name","group","content","parseHTML","tag","addAttributes","url","default","class","renderHTML","HTMLAttributes"],"mappings":"AAAA,SAASA,IAAI,EAAEC,eAAe,QAAQ,eAAe;AAErD,OAAO,MAAMC,oBAAoBF,KAAKG,MAAM,CAAC;IAC3CC,MAAM;IAENC,OAAO;IACPC,SAAS;IAETC;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;IACAC;QACE,OAAO;YACLC,KAAK;gBAAEC,SAAS;YAAK;YACrB,WAAW;gBAAEA,SAAS;YAAK;YAC3BC,OAAO;gBAAED,SAAS;YAAiB;QACrC;IACF;IACAE,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YACL;YACAb,gBAAgBa,gBAAgB;gBAC9B,aAAa;gBACbF,OAAO,CAAC,4BAA4B,EAAEE,eAAeF,KAAK,EAAE;YAC9D;YACA;SACD;IACH;AACF,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/getAssetsAspectRatio.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\r\n\r\nexport function useGetAssetsAspectRatio() {\r\n const [aspectRatio, setAspectRatio] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const calculateAspectRatio = useCallback(\r\n async (attrs, type, getVideoAspect) => {\r\n if (loading) return;\r\n setLoading(true);\r\n\r\n const { src, actualWidth, actualHeight } = attrs;\r\n if (actualWidth && actualHeight) {\r\n setAspectRatio(`${actualWidth} / ${actualHeight}`);\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n if (type === \"VIDEO\" && getVideoAspect) {\r\n const metadata = await getVideoAspect(src);\r\n\r\n if (metadata.width && metadata.height) {\r\n setAspectRatio(`${metadata.width} / ${metadata.height}`);\r\n }\r\n setLoading(false);\r\n return;\r\n }\r\n },\r\n [loading]\r\n );\r\n\r\n return { aspectRatio, calculateAspectRatio };\r\n}\r\n"],"names":["useCallback","useState","useGetAssetsAspectRatio","aspectRatio","setAspectRatio","loading","setLoading","calculateAspectRatio","attrs","type","getVideoAspect","src","actualWidth","actualHeight","metadata","width","height"],"mappings":"AAAA,SAASA,WAAW,EAAaC,QAAQ,QAAQ,QAAQ;AAEzD,OAAO,SAASC;IACd,MAAM,CAACC,aAAaC,eAAe,GAAGH,SAAS;IAC/C,MAAM,CAACI,SAASC,WAAW,GAAGL,SAAS;IACvC,MAAMM,uBAAuBP,YAC3B,OAAOQ,OAAOC,MAAMC;QAClB,IAAIL,SAAS;QACbC,WAAW;QAEX,MAAM,EAAEK,GAAG,EAAEC,WAAW,EAAEC,YAAY,EAAE,GAAGL;QAC3C,IAAII,eAAeC,cAAc;YAC/BT,eAAe,CAAC,EAAEQ,YAAY,GAAG,EAAEC,aAAa,CAAC;YACjDP,WAAW;YACX;QACF;QAEA,IAAIG,SAAS,WAAWC,gBAAgB;YACtC,MAAMI,WAAW,MAAMJ,eAAeC;YAEtC,IAAIG,SAASC,KAAK,IAAID,SAASE,MAAM,EAAE;gBACrCZ,eAAe,CAAC,EAAEU,SAASC,KAAK,CAAC,GAAG,EAAED,SAASE,MAAM,CAAC,CAAC;YACzD;YACAV,WAAW;YACX;QACF;IACF,GACA;QAACD;KAAQ;IAGX,OAAO;QAAEF;QAAaI;IAAqB;AAC7C"}
1
+ {"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/serverside/getAssetsAspectRatio.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\r\n\r\nexport function useGetAssetsAspectRatio() {\r\n const [aspectRatio, setAspectRatio] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const calculateAspectRatio = useCallback(\r\n async (attrs, type, getVideoAspect) => {\r\n if (loading) return;\r\n setLoading(true);\r\n\r\n const { src, actualWidth, actualHeight } = attrs;\r\n if (actualWidth && actualHeight) {\r\n setAspectRatio(`${actualWidth} / ${actualHeight}`);\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n if (type === \"VIDEO\" && getVideoAspect) {\r\n const metadata = await getVideoAspect(src);\r\n\r\n if (metadata.width && metadata.height) {\r\n setAspectRatio(`${metadata.width} / ${metadata.height}`);\r\n }\r\n setLoading(false);\r\n return;\r\n }\r\n },\r\n [loading]\r\n );\r\n\r\n return { aspectRatio, calculateAspectRatio };\r\n}\r\n"],"names":["useCallback","useState","useGetAssetsAspectRatio","aspectRatio","setAspectRatio","loading","setLoading","calculateAspectRatio","attrs","type","getVideoAspect","src","actualWidth","actualHeight","metadata","width","height"],"mappings":"AAAA,SAASA,WAAW,EAAaC,QAAQ,QAAQ,QAAQ;AAEzD,OAAO,SAASC;IACd,MAAM,CAACC,aAAaC,eAAe,GAAGH,SAAS;IAC/C,MAAM,CAACI,SAASC,WAAW,GAAGL,SAAS;IACvC,MAAMM,uBAAuBP,YAC3B,OAAOQ,OAAOC,MAAMC;QAClB,IAAIL,SAAS;QACbC,WAAW;QAEX,MAAM,EAAEK,GAAG,EAAEC,WAAW,EAAEC,YAAY,EAAE,GAAGL;QAC3C,IAAII,eAAeC,cAAc;YAC/BT,eAAe,GAAGQ,YAAY,GAAG,EAAEC,cAAc;YACjDP,WAAW;YACX;QACF;QAEA,IAAIG,SAAS,WAAWC,gBAAgB;YACtC,MAAMI,WAAW,MAAMJ,eAAeC;YAEtC,IAAIG,SAASC,KAAK,IAAID,SAASE,MAAM,EAAE;gBACrCZ,eAAe,GAAGU,SAASC,KAAK,CAAC,GAAG,EAAED,SAASE,MAAM,EAAE;YACzD;YACAV,WAAW;YACX;QACF;IACF,GACA;QAACD;KAAQ;IAGX,OAAO;QAAEF;QAAaI;IAAqB;AAC7C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.tsx"],"sourcesContent":["import * as Dropdown from \"@radix-ui/react-dropdown-menu\";\r\nimport { ChevronDown } from \"lucide-react\";\r\nimport { useCallback } from \"react\";\r\nimport {\r\n DropdownButton,\r\n DropdownCategoryTitle,\r\n} from \"../../../ui/Dropdown/Dropdown.js\";\r\nimport { Icon } from \"../../../ui/Icon.js\";\r\nimport { Surface } from \"../../../ui/Surface.js\";\r\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\r\n\r\nconst FONT_FAMILY_GROUPS = [\r\n {\r\n label: \"Sans Serif\",\r\n options: [\r\n { label: \"Inter\", value: \"\" },\r\n { label: \"Arial\", value: \"Arial\" },\r\n { label: \"Helvetica\", value: \"Helvetica\" },\r\n ],\r\n },\r\n {\r\n label: \"Serif\",\r\n options: [\r\n { label: \"Times New Roman\", value: \"Times\" },\r\n { label: \"Garamond\", value: \"Garamond\" },\r\n { label: \"Georgia\", value: \"Georgia\" },\r\n ],\r\n },\r\n {\r\n label: \"Monospace\",\r\n options: [\r\n { label: \"Courier\", value: \"Courier\" },\r\n { label: \"Courier New\", value: \"Courier New\" },\r\n ],\r\n },\r\n];\r\n\r\nconst FONT_FAMILIES = FONT_FAMILY_GROUPS.flatMap((group) => [\r\n group.options,\r\n]).flat();\r\n\r\nexport type FontFamilyPickerProps = {\r\n onChange: (value: string) => void; // eslint-disable-line no-unused-vars\r\n value: string;\r\n};\r\n\r\nexport const FontFamilyPicker = ({\r\n onChange,\r\n value,\r\n}: FontFamilyPickerProps) => {\r\n const currentValue = FONT_FAMILIES.find((size) => size.value === value);\r\n const currentFontLabel = currentValue?.label.split(\" \")[0] || \"Inter\";\r\n\r\n const selectFont = useCallback(\r\n (font: string) => () => onChange(font),\r\n [onChange]\r\n );\r\n\r\n return (\r\n <Dropdown.Root>\r\n <Dropdown.Trigger asChild>\r\n <Toolbar.Button type=\"button\" active={!!currentValue?.value}>\r\n {currentFontLabel}\r\n <Icon icon={ChevronDown} className=\"w-2 h-2\" />\r\n </Toolbar.Button>\r\n </Dropdown.Trigger>\r\n <Dropdown.Content asChild>\r\n <Surface className=\"flex flex-col gap-1 px-2 py-4\">\r\n {FONT_FAMILY_GROUPS.map((group) => (\r\n <div\r\n className=\"mt-2.5 first:mt-0 gap-0.5 flex flex-col\"\r\n key={group.label}\r\n >\r\n <DropdownCategoryTitle>{group.label}</DropdownCategoryTitle>\r\n {group.options.map((font) => (\r\n <DropdownButton\r\n isActive={value === font.value}\r\n onClick={selectFont(font.value)}\r\n key={`${font.label}_${font.value}`}\r\n >\r\n <span style={{ fontFamily: font.value }}>{font.label}</span>\r\n </DropdownButton>\r\n ))}\r\n </div>\r\n ))}\r\n </Surface>\r\n </Dropdown.Content>\r\n </Dropdown.Root>\r\n );\r\n};\r\n"],"names":["Dropdown","ChevronDown","useCallback","DropdownButton","DropdownCategoryTitle","Icon","Surface","Toolbar","FONT_FAMILY_GROUPS","label","options","value","FONT_FAMILIES","flatMap","group","flat","FontFamilyPicker","onChange","currentValue","find","size","currentFontLabel","split","selectFont","font","Root","Trigger","asChild","Button","type","active","icon","className","Content","map","div","isActive","onClick","span","style","fontFamily"],"mappings":";AAAA,YAAYA,cAAc,gCAAgC;AAC1D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,WAAW,QAAQ,QAAQ;AACpC,SACEC,cAAc,EACdC,qBAAqB,QAChB,mCAAmC;AAC1C,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,qBAAqB;IACzB;QACEC,OAAO;QACPC,SAAS;YACP;gBAAED,OAAO;gBAASE,OAAO;YAAG;YAC5B;gBAAEF,OAAO;gBAASE,OAAO;YAAQ;YACjC;gBAAEF,OAAO;gBAAaE,OAAO;YAAY;SAC1C;IACH;IACA;QACEF,OAAO;QACPC,SAAS;YACP;gBAAED,OAAO;gBAAmBE,OAAO;YAAQ;YAC3C;gBAAEF,OAAO;gBAAYE,OAAO;YAAW;YACvC;gBAAEF,OAAO;gBAAWE,OAAO;YAAU;SACtC;IACH;IACA;QACEF,OAAO;QACPC,SAAS;YACP;gBAAED,OAAO;gBAAWE,OAAO;YAAU;YACrC;gBAAEF,OAAO;gBAAeE,OAAO;YAAc;SAC9C;IACH;CACD;AAED,MAAMC,gBAAgBJ,mBAAmBK,OAAO,CAAC,CAACC,QAAU;QAC1DA,MAAMJ,OAAO;KACd,EAAEK,IAAI;AAOP,OAAO,MAAMC,mBAAmB,CAAC,EAC/BC,QAAQ,EACRN,KAAK,EACiB;IACtB,MAAMO,eAAeN,cAAcO,IAAI,CAAC,CAACC,OAASA,KAAKT,KAAK,KAAKA;IACjE,MAAMU,mBAAmBH,cAAcT,MAAMa,MAAM,IAAI,CAAC,EAAE,IAAI;IAE9D,MAAMC,aAAarB,YACjB,CAACsB,OAAiB,IAAMP,SAASO,OACjC;QAACP;KAAS;IAGZ,qBACE,MAACjB,SAASyB,IAAI;;0BACZ,KAACzB,SAAS0B,OAAO;gBAACC,OAAO;0BACvB,cAAA,MAACpB,QAAQqB,MAAM;oBAACC,MAAK;oBAASC,QAAQ,CAAC,CAACZ,cAAcP;;wBACnDU;sCACD,KAAChB;4BAAK0B,MAAM9B;4BAAa+B,WAAU;;;;;0BAGvC,KAAChC,SAASiC,OAAO;gBAACN,OAAO;0BACvB,cAAA,KAACrB;oBAAQ0B,WAAU;8BAChBxB,mBAAmB0B,GAAG,CAAC,CAACpB,sBACvB,MAACqB;4BACCH,WAAU;;8CAGV,KAAC5B;8CAAuBU,MAAML,KAAK;;gCAClCK,MAAMJ,OAAO,CAACwB,GAAG,CAAC,CAACV,qBAClB,KAACrB;wCACCiC,UAAUzB,UAAUa,KAAKb,KAAK;wCAC9B0B,SAASd,WAAWC,KAAKb,KAAK;kDAG9B,cAAA,KAAC2B;4CAAKC,OAAO;gDAAEC,YAAYhB,KAAKb,KAAK;4CAAC;sDAAIa,KAAKf,KAAK;;uCAF/C,CAAC,EAAEe,KAAKf,KAAK,CAAC,CAAC,EAAEe,KAAKb,KAAK,CAAC,CAAC;;2BAPjCG,MAAML,KAAK;;;;;AAkB9B,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.tsx"],"sourcesContent":["import * as Dropdown from \"@radix-ui/react-dropdown-menu\";\r\nimport { ChevronDown } from \"lucide-react\";\r\nimport { useCallback } from \"react\";\r\nimport {\r\n DropdownButton,\r\n DropdownCategoryTitle,\r\n} from \"../../../ui/Dropdown/Dropdown.js\";\r\nimport { Icon } from \"../../../ui/Icon.js\";\r\nimport { Surface } from \"../../../ui/Surface.js\";\r\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\r\n\r\nconst FONT_FAMILY_GROUPS = [\r\n {\r\n label: \"Sans Serif\",\r\n options: [\r\n { label: \"Inter\", value: \"\" },\r\n { label: \"Arial\", value: \"Arial\" },\r\n { label: \"Helvetica\", value: \"Helvetica\" },\r\n ],\r\n },\r\n {\r\n label: \"Serif\",\r\n options: [\r\n { label: \"Times New Roman\", value: \"Times\" },\r\n { label: \"Garamond\", value: \"Garamond\" },\r\n { label: \"Georgia\", value: \"Georgia\" },\r\n ],\r\n },\r\n {\r\n label: \"Monospace\",\r\n options: [\r\n { label: \"Courier\", value: \"Courier\" },\r\n { label: \"Courier New\", value: \"Courier New\" },\r\n ],\r\n },\r\n];\r\n\r\nconst FONT_FAMILIES = FONT_FAMILY_GROUPS.flatMap((group) => [\r\n group.options,\r\n]).flat();\r\n\r\nexport type FontFamilyPickerProps = {\r\n onChange: (value: string) => void; // eslint-disable-line no-unused-vars\r\n value: string;\r\n};\r\n\r\nexport const FontFamilyPicker = ({\r\n onChange,\r\n value,\r\n}: FontFamilyPickerProps) => {\r\n const currentValue = FONT_FAMILIES.find((size) => size.value === value);\r\n const currentFontLabel = currentValue?.label.split(\" \")[0] || \"Inter\";\r\n\r\n const selectFont = useCallback(\r\n (font: string) => () => onChange(font),\r\n [onChange]\r\n );\r\n\r\n return (\r\n <Dropdown.Root>\r\n <Dropdown.Trigger asChild>\r\n <Toolbar.Button type=\"button\" active={!!currentValue?.value}>\r\n {currentFontLabel}\r\n <Icon icon={ChevronDown} className=\"w-2 h-2\" />\r\n </Toolbar.Button>\r\n </Dropdown.Trigger>\r\n <Dropdown.Content asChild>\r\n <Surface className=\"flex flex-col gap-1 px-2 py-4\">\r\n {FONT_FAMILY_GROUPS.map((group) => (\r\n <div\r\n className=\"mt-2.5 first:mt-0 gap-0.5 flex flex-col\"\r\n key={group.label}\r\n >\r\n <DropdownCategoryTitle>{group.label}</DropdownCategoryTitle>\r\n {group.options.map((font) => (\r\n <DropdownButton\r\n isActive={value === font.value}\r\n onClick={selectFont(font.value)}\r\n key={`${font.label}_${font.value}`}\r\n >\r\n <span style={{ fontFamily: font.value }}>{font.label}</span>\r\n </DropdownButton>\r\n ))}\r\n </div>\r\n ))}\r\n </Surface>\r\n </Dropdown.Content>\r\n </Dropdown.Root>\r\n );\r\n};\r\n"],"names":["Dropdown","ChevronDown","useCallback","DropdownButton","DropdownCategoryTitle","Icon","Surface","Toolbar","FONT_FAMILY_GROUPS","label","options","value","FONT_FAMILIES","flatMap","group","flat","FontFamilyPicker","onChange","currentValue","find","size","currentFontLabel","split","selectFont","font","Root","Trigger","asChild","Button","type","active","icon","className","Content","map","div","isActive","onClick","span","style","fontFamily"],"mappings":";AAAA,YAAYA,cAAc,gCAAgC;AAC1D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,WAAW,QAAQ,QAAQ;AACpC,SACEC,cAAc,EACdC,qBAAqB,QAChB,mCAAmC;AAC1C,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,MAAMC,qBAAqB;IACzB;QACEC,OAAO;QACPC,SAAS;YACP;gBAAED,OAAO;gBAASE,OAAO;YAAG;YAC5B;gBAAEF,OAAO;gBAASE,OAAO;YAAQ;YACjC;gBAAEF,OAAO;gBAAaE,OAAO;YAAY;SAC1C;IACH;IACA;QACEF,OAAO;QACPC,SAAS;YACP;gBAAED,OAAO;gBAAmBE,OAAO;YAAQ;YAC3C;gBAAEF,OAAO;gBAAYE,OAAO;YAAW;YACvC;gBAAEF,OAAO;gBAAWE,OAAO;YAAU;SACtC;IACH;IACA;QACEF,OAAO;QACPC,SAAS;YACP;gBAAED,OAAO;gBAAWE,OAAO;YAAU;YACrC;gBAAEF,OAAO;gBAAeE,OAAO;YAAc;SAC9C;IACH;CACD;AAED,MAAMC,gBAAgBJ,mBAAmBK,OAAO,CAAC,CAACC,QAAU;QAC1DA,MAAMJ,OAAO;KACd,EAAEK,IAAI;AAOP,OAAO,MAAMC,mBAAmB,CAAC,EAC/BC,QAAQ,EACRN,KAAK,EACiB;IACtB,MAAMO,eAAeN,cAAcO,IAAI,CAAC,CAACC,OAASA,KAAKT,KAAK,KAAKA;IACjE,MAAMU,mBAAmBH,cAAcT,MAAMa,MAAM,IAAI,CAAC,EAAE,IAAI;IAE9D,MAAMC,aAAarB,YACjB,CAACsB,OAAiB,IAAMP,SAASO,OACjC;QAACP;KAAS;IAGZ,qBACE,MAACjB,SAASyB,IAAI;;0BACZ,KAACzB,SAAS0B,OAAO;gBAACC,OAAO;0BACvB,cAAA,MAACpB,QAAQqB,MAAM;oBAACC,MAAK;oBAASC,QAAQ,CAAC,CAACZ,cAAcP;;wBACnDU;sCACD,KAAChB;4BAAK0B,MAAM9B;4BAAa+B,WAAU;;;;;0BAGvC,KAAChC,SAASiC,OAAO;gBAACN,OAAO;0BACvB,cAAA,KAACrB;oBAAQ0B,WAAU;8BAChBxB,mBAAmB0B,GAAG,CAAC,CAACpB,sBACvB,MAACqB;4BACCH,WAAU;;8CAGV,KAAC5B;8CAAuBU,MAAML,KAAK;;gCAClCK,MAAMJ,OAAO,CAACwB,GAAG,CAAC,CAACV,qBAClB,KAACrB;wCACCiC,UAAUzB,UAAUa,KAAKb,KAAK;wCAC9B0B,SAASd,WAAWC,KAAKb,KAAK;kDAG9B,cAAA,KAAC2B;4CAAKC,OAAO;gDAAEC,YAAYhB,KAAKb,KAAK;4CAAC;sDAAIa,KAAKf,KAAK;;uCAF/C,GAAGe,KAAKf,KAAK,CAAC,CAAC,EAAEe,KAAKb,KAAK,EAAE;;2BAPjCG,MAAML,KAAK;;;;;AAkB9B,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.tsx"],"sourcesContent":["import * as Dropdown from \"@radix-ui/react-dropdown-menu\";\r\nimport { ChevronDown } from \"lucide-react\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { DropdownButton } from \"../../../ui/Dropdown/Dropdown.js\";\r\nimport { Icon } from \"../../../ui/Icon.js\";\r\nimport { Surface } from \"../../../ui/Surface.js\";\r\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\r\nimport i18next from \"i18next\";\r\n\r\nexport type FontSizePickerProps = {\r\n onChange: (value: string) => void; // eslint-disable-line no-unused-vars\r\n value: string;\r\n};\r\n\r\nexport const FontSizePicker = ({ onChange, value }: FontSizePickerProps) => {\r\n const FONT_SIZES = useMemo(\r\n () => [\r\n { label: i18next.t(\"smaller\") || \"Smaller\", value: \"12px\" },\r\n { label: i18next.t(\"small\") || \"Small\", value: \"14px\" },\r\n { label: i18next.t(\"medium\") || \"Medium\", value: \"\" },\r\n { label: i18next.t(\"large\") || \"Large\", value: \"18px\" },\r\n { label: i18next.t(\"extraLart\") || \"Extra Large\", value: \"24px\" },\r\n ],\r\n []\r\n );\r\n const currentValue = FONT_SIZES.find((size) => size.value === value);\r\n const currentSizeLabel = currentValue?.label.split(\" \")[0] || \"Medium\";\r\n\r\n const selectSize = useCallback(\r\n (size: string) => () => onChange(size),\r\n [onChange]\r\n );\r\n\r\n return (\r\n <Dropdown.Root>\r\n <Dropdown.Trigger asChild>\r\n <Toolbar.Button type=\"button\" active={!!currentValue?.value}>\r\n {currentSizeLabel}\r\n <Icon icon={ChevronDown} className=\"w-2 h-2\" />\r\n </Toolbar.Button>\r\n </Dropdown.Trigger>\r\n <Dropdown.Content asChild>\r\n <Surface className=\"flex flex-col gap-1 px-2 py-4\">\r\n {FONT_SIZES.map((size) => (\r\n <DropdownButton\r\n isActive={value === size.value}\r\n onClick={selectSize(size.value)}\r\n key={`${size.label}_${size.value}`}\r\n >\r\n <span style={{ fontSize: size.value }}>{size.label}</span>\r\n </DropdownButton>\r\n ))}\r\n </Surface>\r\n </Dropdown.Content>\r\n </Dropdown.Root>\r\n );\r\n};\r\n"],"names":["Dropdown","ChevronDown","useCallback","useMemo","DropdownButton","Icon","Surface","Toolbar","i18next","FontSizePicker","onChange","value","FONT_SIZES","label","t","currentValue","find","size","currentSizeLabel","split","selectSize","Root","Trigger","asChild","Button","type","active","icon","className","Content","map","isActive","onClick","span","style","fontSize"],"mappings":";AAAA,YAAYA,cAAc,gCAAgC;AAC1D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,WAAW,EAAEC,OAAO,QAAQ,QAAQ;AAC7C,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,QAAQ,yBAAyB;AACjD,OAAOC,aAAa,UAAU;AAO9B,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAuB;IACrE,MAAMC,aAAaT,QACjB,IAAM;YACJ;gBAAEU,OAAOL,QAAQM,CAAC,CAAC,cAAc;gBAAWH,OAAO;YAAO;YAC1D;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,YAAY;gBAASH,OAAO;YAAO;YACtD;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,aAAa;gBAAUH,OAAO;YAAG;YACpD;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,YAAY;gBAASH,OAAO;YAAO;YACtD;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,gBAAgB;gBAAeH,OAAO;YAAO;SACjE,EACD,EAAE;IAEJ,MAAMI,eAAeH,WAAWI,IAAI,CAAC,CAACC,OAASA,KAAKN,KAAK,KAAKA;IAC9D,MAAMO,mBAAmBH,cAAcF,MAAMM,MAAM,IAAI,CAAC,EAAE,IAAI;IAE9D,MAAMC,aAAalB,YACjB,CAACe,OAAiB,IAAMP,SAASO,OACjC;QAACP;KAAS;IAGZ,qBACE,MAACV,SAASqB,IAAI;;0BACZ,KAACrB,SAASsB,OAAO;gBAACC,OAAO;0BACvB,cAAA,MAAChB,QAAQiB,MAAM;oBAACC,MAAK;oBAASC,QAAQ,CAAC,CAACX,cAAcJ;;wBACnDO;sCACD,KAACb;4BAAKsB,MAAM1B;4BAAa2B,WAAU;;;;;0BAGvC,KAAC5B,SAAS6B,OAAO;gBAACN,OAAO;0BACvB,cAAA,KAACjB;oBAAQsB,WAAU;8BAChBhB,WAAWkB,GAAG,CAAC,CAACb,qBACf,KAACb;4BACC2B,UAAUpB,UAAUM,KAAKN,KAAK;4BAC9BqB,SAASZ,WAAWH,KAAKN,KAAK;sCAG9B,cAAA,KAACsB;gCAAKC,OAAO;oCAAEC,UAAUlB,KAAKN,KAAK;gCAAC;0CAAIM,KAAKJ,KAAK;;2BAF7C,CAAC,EAAEI,KAAKJ,KAAK,CAAC,CAAC,EAAEI,KAAKN,KAAK,CAAC,CAAC;;;;;AAShD,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../../src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.tsx"],"sourcesContent":["import * as Dropdown from \"@radix-ui/react-dropdown-menu\";\r\nimport { ChevronDown } from \"lucide-react\";\r\nimport { useCallback, useMemo } from \"react\";\r\nimport { DropdownButton } from \"../../../ui/Dropdown/Dropdown.js\";\r\nimport { Icon } from \"../../../ui/Icon.js\";\r\nimport { Surface } from \"../../../ui/Surface.js\";\r\nimport { Toolbar } from \"../../../ui/Toolbar.js\";\r\nimport i18next from \"i18next\";\r\n\r\nexport type FontSizePickerProps = {\r\n onChange: (value: string) => void; // eslint-disable-line no-unused-vars\r\n value: string;\r\n};\r\n\r\nexport const FontSizePicker = ({ onChange, value }: FontSizePickerProps) => {\r\n const FONT_SIZES = useMemo(\r\n () => [\r\n { label: i18next.t(\"smaller\") || \"Smaller\", value: \"12px\" },\r\n { label: i18next.t(\"small\") || \"Small\", value: \"14px\" },\r\n { label: i18next.t(\"medium\") || \"Medium\", value: \"\" },\r\n { label: i18next.t(\"large\") || \"Large\", value: \"18px\" },\r\n { label: i18next.t(\"extraLart\") || \"Extra Large\", value: \"24px\" },\r\n ],\r\n []\r\n );\r\n const currentValue = FONT_SIZES.find((size) => size.value === value);\r\n const currentSizeLabel = currentValue?.label.split(\" \")[0] || \"Medium\";\r\n\r\n const selectSize = useCallback(\r\n (size: string) => () => onChange(size),\r\n [onChange]\r\n );\r\n\r\n return (\r\n <Dropdown.Root>\r\n <Dropdown.Trigger asChild>\r\n <Toolbar.Button type=\"button\" active={!!currentValue?.value}>\r\n {currentSizeLabel}\r\n <Icon icon={ChevronDown} className=\"w-2 h-2\" />\r\n </Toolbar.Button>\r\n </Dropdown.Trigger>\r\n <Dropdown.Content asChild>\r\n <Surface className=\"flex flex-col gap-1 px-2 py-4\">\r\n {FONT_SIZES.map((size) => (\r\n <DropdownButton\r\n isActive={value === size.value}\r\n onClick={selectSize(size.value)}\r\n key={`${size.label}_${size.value}`}\r\n >\r\n <span style={{ fontSize: size.value }}>{size.label}</span>\r\n </DropdownButton>\r\n ))}\r\n </Surface>\r\n </Dropdown.Content>\r\n </Dropdown.Root>\r\n );\r\n};\r\n"],"names":["Dropdown","ChevronDown","useCallback","useMemo","DropdownButton","Icon","Surface","Toolbar","i18next","FontSizePicker","onChange","value","FONT_SIZES","label","t","currentValue","find","size","currentSizeLabel","split","selectSize","Root","Trigger","asChild","Button","type","active","icon","className","Content","map","isActive","onClick","span","style","fontSize"],"mappings":";AAAA,YAAYA,cAAc,gCAAgC;AAC1D,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,WAAW,EAAEC,OAAO,QAAQ,QAAQ;AAC7C,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,IAAI,QAAQ,sBAAsB;AAC3C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,QAAQ,yBAAyB;AACjD,OAAOC,aAAa,UAAU;AAO9B,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAuB;IACrE,MAAMC,aAAaT,QACjB,IAAM;YACJ;gBAAEU,OAAOL,QAAQM,CAAC,CAAC,cAAc;gBAAWH,OAAO;YAAO;YAC1D;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,YAAY;gBAASH,OAAO;YAAO;YACtD;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,aAAa;gBAAUH,OAAO;YAAG;YACpD;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,YAAY;gBAASH,OAAO;YAAO;YACtD;gBAAEE,OAAOL,QAAQM,CAAC,CAAC,gBAAgB;gBAAeH,OAAO;YAAO;SACjE,EACD,EAAE;IAEJ,MAAMI,eAAeH,WAAWI,IAAI,CAAC,CAACC,OAASA,KAAKN,KAAK,KAAKA;IAC9D,MAAMO,mBAAmBH,cAAcF,MAAMM,MAAM,IAAI,CAAC,EAAE,IAAI;IAE9D,MAAMC,aAAalB,YACjB,CAACe,OAAiB,IAAMP,SAASO,OACjC;QAACP;KAAS;IAGZ,qBACE,MAACV,SAASqB,IAAI;;0BACZ,KAACrB,SAASsB,OAAO;gBAACC,OAAO;0BACvB,cAAA,MAAChB,QAAQiB,MAAM;oBAACC,MAAK;oBAASC,QAAQ,CAAC,CAACX,cAAcJ;;wBACnDO;sCACD,KAACb;4BAAKsB,MAAM1B;4BAAa2B,WAAU;;;;;0BAGvC,KAAC5B,SAAS6B,OAAO;gBAACN,OAAO;0BACvB,cAAA,KAACjB;oBAAQsB,WAAU;8BAChBhB,WAAWkB,GAAG,CAAC,CAACb,qBACf,KAACb;4BACC2B,UAAUpB,UAAUM,KAAKN,KAAK;4BAC9BqB,SAASZ,WAAWH,KAAKN,KAAK;sCAG9B,cAAA,KAACsB;gCAAKC,OAAO;oCAAEC,UAAUlB,KAAKN,KAAK;gCAAC;0CAAIM,KAAKJ,KAAK;;2BAF7C,GAAGI,KAAKJ,KAAK,CAAC,CAAC,EAAEI,KAAKN,KAAK,EAAE;;;;;AAShD,EAAE"}