react-reason-editor 1.0.77 → 1.0.78

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 (195) hide show
  1. package/dist/Ai-CfgczVyp.cjs +1 -0
  2. package/dist/Ai-DsWeNKXF.js +1 -0
  3. package/dist/Ai.cjs +1 -1
  4. package/dist/Ai.js +1 -1
  5. package/dist/{Attachment-bBEf8uOc.js → Attachment-BmQoshq_.js} +1 -1
  6. package/dist/Attachment.cjs +1 -1
  7. package/dist/Attachment.js +1 -1
  8. package/dist/{Blockquote-Cw5Zty9X.js → Blockquote-cNS4L62L.js} +1 -1
  9. package/dist/Blockquote.cjs +1 -1
  10. package/dist/Blockquote.js +1 -1
  11. package/dist/{Bold-BwuX7fZs.js → Bold-DiKXbC2z.js} +1 -1
  12. package/dist/Bold.cjs +1 -1
  13. package/dist/Bold.js +1 -1
  14. package/dist/BubbleMenus-CIOMgQ-M.js +216 -0
  15. package/dist/BubbleMenus-vqNuXWlm.cjs +1 -0
  16. package/dist/BulletList.cjs +1 -1
  17. package/dist/BulletList.js +1 -1
  18. package/dist/{Callout-CJofZEpX.js → Callout-BLkbFKjv.js} +1 -1
  19. package/dist/{Callout-wjo2BYZi.cjs → Callout-CpkjGEBS.cjs} +1 -1
  20. package/dist/Callout.cjs +1 -1
  21. package/dist/Callout.js +1 -1
  22. package/dist/Clear.cjs +1 -1
  23. package/dist/Clear.js +1 -1
  24. package/dist/{Code-CtIvf6_L.js → Code-DvYJ892R.js} +1 -1
  25. package/dist/Code.cjs +1 -1
  26. package/dist/Code.js +1 -1
  27. package/dist/{CodeBlock-DoIb7GC2.js → CodeBlock-B3dLyClh.js} +1 -1
  28. package/dist/CodeBlock.cjs +1 -1
  29. package/dist/CodeBlock.js +1 -1
  30. package/dist/CodeView.cjs +1 -1
  31. package/dist/CodeView.js +1 -1
  32. package/dist/{Color-DSs2MkQU.js → Color-Cng09GRR.js} +1 -1
  33. package/dist/{Color-B9PloDr5.cjs → Color-ZjBs7t7J.cjs} +1 -1
  34. package/dist/Color.cjs +1 -1
  35. package/dist/Color.js +1 -1
  36. package/dist/{Column-BXSoMVXw.cjs → Column-BaMOYvoO.cjs} +1 -1
  37. package/dist/{Column-CrT9596v.js → Column-DO6MfrOQ.js} +1 -1
  38. package/dist/Column.cjs +1 -1
  39. package/dist/Column.js +1 -1
  40. package/dist/{Drawer-CfcCPGCn.cjs → Drawer-CC24iVYp.cjs} +1 -1
  41. package/dist/{Drawer-DuQ5tw2t.js → Drawer-CL5Rhqw4.js} +1 -1
  42. package/dist/Drawer.cjs +1 -1
  43. package/dist/Drawer.js +1 -1
  44. package/dist/{Drawio-DQEgw3du.cjs → Drawio-CD_Tea_o.cjs} +1 -1
  45. package/dist/{Drawio-P620K_Ps.js → Drawio-LEtUoVAY.js} +1 -1
  46. package/dist/Drawio.cjs +1 -1
  47. package/dist/Drawio.js +1 -1
  48. package/dist/{Emoji-CYM4tY7s.js → Emoji-DN3yfwz_.js} +1 -1
  49. package/dist/Emoji.cjs +1 -1
  50. package/dist/Emoji.js +1 -1
  51. package/dist/{ExportPdf-BoD_D91q.js → ExportPdf-CrQVmD4l.js} +1 -1
  52. package/dist/ExportPdf.cjs +1 -1
  53. package/dist/ExportPdf.js +1 -1
  54. package/dist/{ExportWord-Bj9q_cyK.js → ExportWord-BM4ogH_i.js} +1 -1
  55. package/dist/ExportWord.cjs +1 -1
  56. package/dist/ExportWord.js +1 -1
  57. package/dist/FontFamily.cjs +1 -1
  58. package/dist/FontFamily.js +1 -1
  59. package/dist/FontSize.cjs +1 -1
  60. package/dist/FontSize.js +1 -1
  61. package/dist/{Heading-BHOPoy3X.js → Heading-Bcrl3eKU.js} +1 -1
  62. package/dist/Heading.cjs +1 -1
  63. package/dist/Heading.js +1 -1
  64. package/dist/{Highlight-BxKQNHmT.cjs → Highlight-cO9V18Me.cjs} +1 -1
  65. package/dist/{Highlight-3SpxpGDw.js → Highlight-uXDlNgw3.js} +1 -1
  66. package/dist/Highlight.cjs +1 -1
  67. package/dist/Highlight.js +1 -1
  68. package/dist/{History-CmI6jUTV.js → History-BoHiw0Bn.js} +1 -1
  69. package/dist/History.cjs +1 -1
  70. package/dist/History.js +1 -1
  71. package/dist/{HorizontalRule-BeLfU92F.js → HorizontalRule-C7mAKdzL.js} +1 -1
  72. package/dist/HorizontalRule.cjs +1 -1
  73. package/dist/HorizontalRule.js +1 -1
  74. package/dist/{Iframe-D-WaYtdF.cjs → Iframe-DGL_MOLf.cjs} +1 -1
  75. package/dist/{Iframe-C0ozlEX4.js → Iframe-D_IjezyZ.js} +1 -1
  76. package/dist/Iframe.cjs +1 -1
  77. package/dist/Iframe.js +1 -1
  78. package/dist/Image.cjs +1 -1
  79. package/dist/Image.js +1 -1
  80. package/dist/{ImageCropper-BVl7AuRL.js → ImageCropper-ChOGJuHZ.js} +1 -1
  81. package/dist/{ImageCropper-DqHxEOtN.cjs → ImageCropper-DDWnFI2-.cjs} +1 -1
  82. package/dist/{ImageGif-BSVyqEv6.cjs → ImageGif-3dik7FeU.cjs} +1 -1
  83. package/dist/{ImageGif-BvthT-Lc.js → ImageGif-D_kKkBU5.js} +1 -1
  84. package/dist/ImageGif.cjs +1 -1
  85. package/dist/ImageGif.js +1 -1
  86. package/dist/{ImportWord-C6EnXbyR.js → ImportWord-CtFBb_n4.js} +1 -1
  87. package/dist/ImportWord.cjs +1 -1
  88. package/dist/ImportWord.js +1 -1
  89. package/dist/{Indent-BuzxHbMb.js → Indent-BIk98fDV.js} +1 -1
  90. package/dist/{Indent-eL-WNEF4.cjs → Indent-BVMl9zKV.cjs} +1 -1
  91. package/dist/Indent.cjs +1 -1
  92. package/dist/Indent.js +1 -1
  93. package/dist/{Italic-D8ZI09FZ.js → Italic-3mlmsxqN.js} +1 -1
  94. package/dist/Italic.cjs +1 -1
  95. package/dist/Italic.js +1 -1
  96. package/dist/{Katex-46mDLDuw.cjs → Katex-C2AcX_Un.cjs} +1 -1
  97. package/dist/{Katex-B-lo5eMz.js → Katex-DRPWO2AM.js} +1 -1
  98. package/dist/Katex.cjs +1 -1
  99. package/dist/Katex.js +1 -1
  100. package/dist/LineHeight.cjs +1 -1
  101. package/dist/LineHeight.js +1 -1
  102. package/dist/{Link-CDtipqwb.js → Link-D5y_0ekP.js} +1 -1
  103. package/dist/Link.cjs +1 -1
  104. package/dist/Link.js +1 -1
  105. package/dist/{LinkEditBlock-D0V9PwbF.cjs → LinkEditBlock-D78J06F7.cjs} +1 -1
  106. package/dist/MarkdownPaste.cjs +1 -1
  107. package/dist/MarkdownPaste.js +1 -1
  108. package/dist/{Mermaid-DDV93CBT.cjs → Mermaid-B6SL3cf5.cjs} +1 -1
  109. package/dist/{Mermaid-Cb8MiE1N.js → Mermaid-BaTtCsrD.js} +1 -1
  110. package/dist/Mermaid.cjs +1 -1
  111. package/dist/Mermaid.js +1 -1
  112. package/dist/{MoreMark-CJ3nTD1T.js → MoreMark-Bfsa3STU.js} +1 -1
  113. package/dist/MoreMark.cjs +1 -1
  114. package/dist/MoreMark.js +1 -1
  115. package/dist/OrderedList.cjs +1 -1
  116. package/dist/OrderedList.js +1 -1
  117. package/dist/{ReasonDocs-BliNN1Tt.cjs → ReasonDocs-Bjefr26w.cjs} +1 -1
  118. package/dist/{ReasonDocs-4vxZ3zY7.js → ReasonDocs-_hTAa8-q.js} +1 -1
  119. package/dist/{RichTextProvider-Dl77gVJI.cjs → RichTextProvider-BuTrDlZY.cjs} +1 -1
  120. package/dist/{RichTextProvider-E6rbc_J2.js → RichTextProvider-D9EtjDKS.js} +1 -1
  121. package/dist/SearchAndReplace.cjs +1 -1
  122. package/dist/SearchAndReplace.js +1 -1
  123. package/dist/{SlashCommand-DtlUkwyM.js → SlashCommand-Cg-Rvv3o.js} +1 -1
  124. package/dist/SlashCommand.js +1 -1
  125. package/dist/{Strike-CWYl45VK.js → Strike-CSxbYwpk.js} +1 -1
  126. package/dist/Strike.cjs +1 -1
  127. package/dist/Strike.js +1 -1
  128. package/dist/{Table-DCLsW5DJ.js → Table-CFcOg-4n.js} +1 -1
  129. package/dist/{Table-C9RAHNEk.cjs → Table-Do_kTawS.cjs} +1 -1
  130. package/dist/Table.cjs +1 -1
  131. package/dist/Table.js +1 -1
  132. package/dist/TaskList.cjs +1 -1
  133. package/dist/TaskList.js +1 -1
  134. package/dist/{TextAlign-D4UgbJ7F.cjs → TextAlign-CcsTIs-9.cjs} +1 -1
  135. package/dist/{TextAlign-9ezg8E99.js → TextAlign-Dun3_Ozv.js} +1 -1
  136. package/dist/TextAlign.cjs +1 -1
  137. package/dist/TextAlign.js +1 -1
  138. package/dist/TextDirection.cjs +1 -1
  139. package/dist/TextDirection.js +1 -1
  140. package/dist/{TextUnderline-C5A078R0.js → TextUnderline-Cqm5NQVW.js} +1 -1
  141. package/dist/TextUnderline.cjs +1 -1
  142. package/dist/TextUnderline.js +1 -1
  143. package/dist/{Twitter-D7ulyHFD.cjs → Twitter-B4IYTs3E.cjs} +1 -1
  144. package/dist/{Twitter-ByGJ4v1K.js → Twitter-CZHAICpz.js} +1 -1
  145. package/dist/Twitter.cjs +1 -1
  146. package/dist/Twitter.js +1 -1
  147. package/dist/{Video-hhw77FP4.js → Video-5nw_Zeob.js} +1 -1
  148. package/dist/{Video-ConJGjxP.cjs → Video-CtGR5VVD.cjs} +1 -1
  149. package/dist/Video.cjs +1 -1
  150. package/dist/Video.js +1 -1
  151. package/dist/WordCount.cjs +1 -1
  152. package/dist/WordCount.js +1 -1
  153. package/dist/bubble-BhkjoWdo.js +79 -0
  154. package/dist/bubble.cjs +1 -1
  155. package/dist/bubble.js +1 -1
  156. package/dist/{cdn-loader-BGIuN138-wkFA6jnE.cjs → cdn-loader-BGIuN138-7PrAg-Ef.cjs} +1 -1
  157. package/dist/docs-agent.cjs +1 -1
  158. package/dist/docs-agent.js +1 -1
  159. package/dist/editor-kit.cjs +1 -1
  160. package/dist/editor-kit.js +1 -1
  161. package/dist/editorConfig-BR7z-P0e.js +18 -0
  162. package/dist/editorConfig-CHBSp2KG.cjs +1 -0
  163. package/dist/extensions/Ai/Ai.d.ts +22 -5
  164. package/dist/extensions/Ai/commands.d.ts +6 -1
  165. package/dist/extensions/Ai/components/AiMenu.d.ts +6 -5
  166. package/dist/extensions/Ai/components/RichTextAi.d.ts +12 -0
  167. package/dist/extensions/Ai/index.d.ts +9 -3
  168. package/dist/extensions/Ai/lib/completionToContent.d.ts +35 -0
  169. package/dist/extensions/Ai/lib/createStreamingCompletion.d.ts +27 -0
  170. package/dist/extensions/Ai/lib/prompt.d.ts +38 -0
  171. package/dist/extensions/Ai/lib/sanitizeCompletion.d.ts +37 -0
  172. package/dist/extensions/Ai/types.d.ts +47 -3
  173. package/dist/index.cjs +1 -1
  174. package/dist/index.js +1 -1
  175. package/dist/marked.esm-B7mQ2Kzc.cjs +1 -0
  176. package/dist/marked.esm-CNm6O672.js +1 -0
  177. package/dist/{react-BQVDEMs2.cjs → react-Bfe0Tko8.cjs} +1 -1
  178. package/dist/reason-docs.cjs +1 -1
  179. package/dist/reason-docs.js +1 -1
  180. package/dist/{reason-toolbar-skin-9xQLtzeK.js → reason-toolbar-skin-BNYK97ET.js} +1 -1
  181. package/dist/{reason-toolbar-skin-DyYu9ywU.cjs → reason-toolbar-skin-CD4T53He.cjs} +1 -1
  182. package/dist/style.css +1 -1
  183. package/dist/useButtonProps-BBiR6DPI.cjs +1 -0
  184. package/dist/useButtonProps-Codtb0k0.js +1 -0
  185. package/package.json +1 -1
  186. package/dist/Ai-BGpnAE8s.js +0 -1
  187. package/dist/Ai-CORhNCSN.cjs +0 -1
  188. package/dist/BubbleMenus-QlttKSIN.cjs +0 -1
  189. package/dist/BubbleMenus-mwxYB3IU.js +0 -195
  190. package/dist/MarkdownPaste-C5jQ33SR.js +0 -1
  191. package/dist/bubble-CpeBzXMe.js +0 -78
  192. package/dist/editorConfig-D-Tlrdwj.js +0 -18
  193. package/dist/editorConfig-Du7YaEDm.cjs +0 -1
  194. package/dist/useButtonProps-BFfsKvCi.cjs +0 -1
  195. package/dist/useButtonProps-BZwO1Of-.js +0 -1
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BeavJI0R.cjs"),t=require("./toggle-JU5XOZYT.cjs"),i=require("./locales-DRkmn37v.cjs"),a=require("./Icon-CC1yoE4E.cjs"),r=require("./button-5s-zJAUQ.cjs"),n=require("./checkbox-CqncDIUk.cjs"),s=require("./dialog-DbI7mYml.cjs"),o=require("./input-qTd6QuLt.cjs"),l=require("./label-Byrl10cV.cjs"),c=require("./tabs-DYP_5Khw.cjs"),u=require("./throttle-COe5rswR.cjs"),d=require("./isNumber-CmHpmrpR.cjs"),m=require("./useButtonProps-BFfsKvCi.cjs"),g=require("./file-B1Z0XcVJ.cjs");let p=require("@tiptap/react"),h=require("react"),f=e.__toESM(h,1);h=e.__toESM(h);let x=require("@tiptap/core"),b=require("react/jsx-runtime"),j=require("react-image-crop");j=e.__toESM(j,1);var v=0;var y=new Map;function w(e){if(y.has(e))return;const t=setTimeout(()=>{y.delete(e),S({type:"REMOVE_TOAST",toastId:e})},1e6);y.set(e,t)}var A=[],I={toasts:[]};function S(e){I=function(e,t){switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{const{toastId:i}=t;return i?w(i):e.toasts.forEach(e=>{w(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===i||void 0===i?{...e,open:!1}:e)}}case"REMOVE_TOAST":return void 0===t.toastId?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}}(I,e),A.forEach(e=>{e(I)})}function T({...e}){const t=(v=(v+1)%Number.MAX_SAFE_INTEGER).toString(),i=()=>S({type:"DISMISS_TOAST",toastId:t});return S({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||i()}}}),{id:t,dismiss:i,update:e=>S({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function C(){const[e,t]=f.useState(I);return f.useEffect(()=>(A.push(t),()=>{const e=A.indexOf(t);e>-1&&A.splice(e,1)}),[e]),{...e,toast:T,dismiss:e=>S({type:"DISMISS_TOAST",toastId:e})}}var E="tl",M="tr",N="bl",_="br";function L(e){const[t,a]=(0,f.useState)({width:i.IMAGE_MAX_SIZE,height:i.IMAGE_MAX_SIZE}),[r,n]=(0,f.useState)({width:0,height:0}),[s]=(0,f.useState)([E,M,N,_]),[o,l]=(0,f.useState)(!1),[c,m]=(0,f.useState)({x:0,y:0,w:0,h:0,dir:""}),{align:g,inline:h}=e.node.attrs,x=h&&("left"===g||"right"===g),j=(0,f.useMemo)(()=>{const{src:t,alt:i,width:a,height:r,flipX:n,flipY:s}=e.node.attrs,o=d.isNumber(a)?`${a}px`:a,l=d.isNumber(r)?`${r}px`:r,c=[];n&&c.push("rotateX(180deg)"),s&&c.push("rotateY(180deg)");return{src:t||void 0,alt:i||void 0,style:{width:o||void 0,height:l||void 0,transform:c.join(" ")||"none",...x?{float:g}:{}}}},[e?.node?.attrs]),v=(0,f.useMemo)(()=>{const{style:{width:e}}=j;return{width:"100%"===e?e:void 0}},[j]);function y(){const{editor:t,getPos:i}=e;t.commands.setNodeSelection(i())}const w=(0,f.useCallback)(u.throttle(()=>{const{editor:t}=e,{width:i}=getComputedStyle(t.view.dom);a(e=>({...e,width:Number.parseInt(i,10)}))},16),[e?.editor]);const A=(0,f.useCallback)(u.throttle(i=>{if(i.preventDefault(),i.stopPropagation(),!o)return;const{x:a,w:r,dir:n}=c,s=(i.clientX-a)*(/l/.test(n)?-1:1),l=d.clamp(r+s,20,t.width);e.updateAttributes({width:l,height:null})},16),[o,c,t,e.updateAttributes]),I=(0,f.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),o&&(m({x:0,y:0,w:0,h:0,dir:""}),l(!1),y())},[o,y]),S=(0,f.useCallback)(()=>{document?.addEventListener("mousemove",A,!0),document?.addEventListener("mouseup",I,!0)},[A,I]),T=(0,f.useCallback)(()=>{document?.removeEventListener("mousemove",A,!0),document?.removeEventListener("mouseup",I,!0)},[A,I]);(0,f.useEffect)(()=>(o?S():T(),()=>{T()}),[o,S,T]);const C=(0,f.useMemo)(()=>new ResizeObserver(()=>w()),[w]);return(0,f.useEffect)(()=>(C.observe(e.editor.view.dom),()=>{C.disconnect()}),[e.editor.view.dom,C]),(0,b.jsx)(p.NodeViewWrapper,{as:h?"span":"div",className:"image-view",style:{float:x?g:void 0,margin:x?"left"===g?"1em 1em 1em 0":"1em 0 1em 1em":void 0,display:h?"inline":"block",textAlign:x?void 0:g,width:j.style?.width??"auto",...x?{}:v},children:(0,b.jsxs)("div",{"data-drag-handle":!0,draggable:"true",style:v,className:`image-view__body ${e?.selected?"image-view__body--focused":""} ${o?"image-view__body--resizing":""}`,children:[(0,b.jsx)("img",{alt:j.alt,className:"image-view__body__image block",height:"auto",onClick:y,onLoad:function(e){n({width:e.target.width,height:e.target.height})},src:j.src,style:j.style}),e?.editor.view.editable&&(e?.selected||o)&&(0,b.jsx)("div",{className:"image-resizer",children:s?.map(i=>(0,b.jsx)("span",{className:`image-resizer__handler image-resizer__handler--${i}`,onMouseDown:a=>function(i,a){i.preventDefault(),i.stopPropagation();const n=r.width,s=n/r.height;let o=Number(e.node.attrs.width),c=Number(e.node.attrs.height);const u=t.width;o&&!c?(o=o>u?u:o,c=Math.round(o/s)):c&&!o?(o=Math.round(c*s),o=o>u?u:o):o||c?o=o>u?u:o:(o=n>u?u:n,c=Math.round(o/s)),l(!0),m({x:i.clientX,y:i.clientY,w:o,h:c,dir:a})}(a,i)},`image-dir-${i}`))})]})})}function D(e,t){const{acceptMimes:i,maxSize:a,t:r,toast:n}=t,s=[];return(Array.isArray(e)?e:Object.values(e)).forEach(e=>{if(function(e,t){if(!t||0===t.length)return!0;const i=e.type,a=e.name.toLowerCase(),r=a.split(".").pop();if(!r)return!1;const n=i||{heif:"image/heif",heic:"image/heic",dng:"image/x-adobe-dng",cr2:"image/x-canon-cr2",nef:"image/x-nikon-nef",arw:"image/x-sony-arw",raf:"image/x-fuji-raf",orf:"image/x-olympus-orf"}[r];return t.some(e=>{if(e.startsWith("."))return a.endsWith(e);if(e.endsWith("/*")){const t=e.split("/")[0];return n?.startsWith(t+"/")}return n===e})}(e,i)){if(e.size>a){const i=(a/1024/1024).toFixed(2);return void(t.onError?t.onError({type:"size",message:r("editor.upload.fileSizeTooBig",{fileName:e.name,size:i}),file:e}):n({variant:"default",title:r("editor.upload.fileSizeTooBig",{fileName:e.name,size:i})}))}s.push(e)}else t.onError?t.onError({type:"type",message:r("editor.upload.fileTypeNotSupported",{fileName:e.name}),file:e}):n({variant:"default",title:r("editor.upload.fileTypeNotSupported",{fileName:e.name})})}),s}function O(){const{t:e}=i.useLocale(),{toast:u}=C(),d=m.useEditorInstance(),g=m.useButtonProps(q.name),{icon:p,tooltip:h}=g?.componentProps??{},{editorDisabled:x}=m.useToggleActive(),[j,v]=(0,f.useState)(!1),[y,w]=(0,f.useState)(!1),A=m.useExtension(q.name),[I,S]=(0,f.useState)(""),[T,E]=(0,f.useState)(""),M=(0,f.useRef)(null),N=A?.options.defaultInline||!1,[_,L]=(0,f.useState)(N),O=(0,f.useMemo)(()=>A?.options||k,[A]);return g?(0,b.jsxs)(s.Dialog,{onOpenChange:v,open:j,children:[(0,b.jsx)(s.DialogTrigger,{asChild:!0,children:(0,b.jsx)(t.ActionButton,{disabled:x,icon:p,tooltip:h,action:()=>{x||v(!0)}})}),(0,b.jsxs)(s.DialogContent,{children:[(0,b.jsx)(s.DialogTitle,{children:e("editor.image.dialog.title")}),(0,b.jsxs)(c.Tabs,{activationMode:"manual",defaultValue:"both"===O.resourceImage||"upload"===O.resourceImage?"upload":"link",children:["both"===O.resourceImage&&(0,b.jsxs)(c.TabsList,{className:"richtext-grid richtext-w-full richtext-grid-cols-2",children:[(0,b.jsx)(c.TabsTrigger,{value:"upload",children:e("editor.image.dialog.tab.upload")}),(0,b.jsx)(c.TabsTrigger,{value:"link",children:e("editor.image.dialog.tab.url")})]}),(0,b.jsxs)("div",{className:"richtext-my-[10px] richtext-flex richtext-items-center richtext-gap-[4px]",children:[(0,b.jsx)(n.Checkbox,{checked:_,onCheckedChange:e=>{L(e)}}),(0,b.jsx)(l.Label,{children:e("editor.link.dialog.inline")})]}),O.enableAlt&&(0,b.jsxs)("div",{className:"richtext-my-[10px]",children:[(0,b.jsx)(l.Label,{className:"mb-[6px]",children:e("editor.imageUpload.alt")}),(0,b.jsx)(o.Input,{onChange:e=>E(e.target.value),required:!0,type:"text",value:T})]}),(0,b.jsxs)(c.TabsContent,{value:"upload",children:[(0,b.jsxs)("div",{className:"richtext-flex richtext-items-center richtext-gap-[10px]",children:[(0,b.jsx)(r.Button,{className:"richtext-mt-1 richtext-w-full",disabled:y,onClick:function(e){e.preventDefault(),M.current?.click()},size:"sm",children:y?(0,b.jsxs)(b.Fragment,{children:[e("editor.imageUpload.uploading"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1 richtext-animate-spin",name:"Loader"})]}):e("editor.image.dialog.tab.upload")}),(0,b.jsx)(P,{alt:T,disabled:y,editor:d,imageInline:_,onClose:()=>{E("")}})]}),(0,b.jsx)("input",{accept:O?.acceptMimes?.join(",")||"image/*",multiple:O.multiple,onChange:async function(t){const i=t?.target?.files;if(!d||d.isDestroyed||0===i.length||y)return void(t.target.value="");const a=D(i,{acceptMimes:O?.acceptMimes,maxSize:O?.maxSize,t:e,toast:u,onError:O.onError});if(a.length<=0)t.target.value="";else{w(!0);try{if(O?.multiple){const e=a.map(async e=>{let t="";return t=O.upload?await O.upload(e):URL.createObjectURL(e),t});(await Promise.all(e)).forEach(e=>{d.chain().focus().setImageInline({src:e,inline:_,alt:T}).run()})}else{const e=a[0];let t="";t=O.upload?await O.upload(e):URL.createObjectURL(e),d.chain().focus().setImageInline({src:t,inline:_,alt:T}).run()}v(!1),E(""),L(N)}catch(r){O.onError?O.onError({type:"upload",message:e("editor.upload.error")}):u({variant:"destructive",title:e("editor.upload.error")})}finally{w(!1),t.target.value=""}}},ref:M,style:{display:"none"},type:"file"})]}),(0,b.jsx)(c.TabsContent,{value:"link",children:(0,b.jsx)("form",{onSubmit:function(e){e.preventDefault(),e.stopPropagation(),d.chain().focus().setImageInline({src:I,inline:_,alt:T}).run(),v(!1),L(N),S(""),E("")},children:(0,b.jsxs)("div",{className:"richtext-flex richtext-items-center richtext-gap-2",children:[(0,b.jsx)(o.Input,{autoFocus:!0,onChange:e=>S(e.target.value),placeholder:e("editor.image.dialog.placeholder"),required:!0,type:"url",value:I}),(0,b.jsx)(r.Button,{type:"submit",children:e("editor.image.dialog.button.apply")})]})})})]})]})]}):(0,b.jsx)(b.Fragment,{})}var k={acceptMimes:["image/jpeg","image/gif","image/png","image/jpg"],maxSize:5242880,multiple:!0,resourceImage:"both",defaultInline:!1,enableAlt:!0},q=u.index_default.extend({group:"inline",inline:!0,defining:!0,draggable:!0,selectable:!0,addOptions(){return{...k,...this.parent?.(),upload:()=>Promise.reject("Image Upload Function"),button:({editor:e,extension:t,t:i})=>({componentProps:{action:()=>!0,upload:t.options.upload,disabled:!e.can().setImage?.({}),icon:"ImageUp",tooltip:i("editor.image.tooltip")}})}},addAttributes(){return{...this.parent?.(),flipX:{default:!1},flipY:{default:!1},width:{default:null,parseHTML:e=>{const t=e.style.width||e.getAttribute("width")||null;return t?Number.parseInt(t,10):null},renderHTML:e=>({width:e.width})},align:{default:"center",parseHTML:e=>e.getAttribute("align"),renderHTML:e=>({align:e.align})},inline:{default:!1,parseHTML:e=>Boolean(e.getAttribute("inline")),renderHTML:e=>({inline:e.inline})},alt:{default:"",parseHTML:e=>e.getAttribute("alt"),renderHTML:e=>({alt:e.alt})}}},addNodeView:()=>(0,p.ReactNodeViewRenderer)(L),addCommands(){return{...this.parent?.(),setImageInline:e=>({commands:t})=>t.insertContent({type:this.name,attrs:{...e,inline:e.inline??this.options.defaultInline}}),updateImage:e=>({commands:t})=>t.updateAttributes(this.name,e),setAlignImage:e=>({commands:t})=>t.updateAttributes(this.name,{align:e})}},renderHTML({HTMLAttributes:e}){const{flipX:t,flipY:i,align:a,inline:r}=e,n=r&&("left"===a||"right"===a),s=`${n?`float: ${a};`:""}${n?"left"===a?"margin: 1em 1em 1em 0;":"margin: 1em 0 1em 1em;":""}${t||i?`transform: rotateX(${t?"180":"0"}deg) rotateY(${i?"180":"0"}deg);`:""}`;return[r?"span":"div",{style:n?"":`text-align: ${a};`,class:"image"},["img",(0,x.mergeAttributes)({height:"auto",style:s},this.options.HTMLAttributes,e)]]},parseHTML:()=>[{tag:"span.image img",getAttrs:e=>{const t=e?.parentElement,i=e?.getAttribute("width"),a=e?.getAttribute("flipx")||!1,r=e?.getAttribute("flipy")||!1;return{src:e?.getAttribute("src"),alt:e?.getAttribute("alt"),caption:e?.getAttribute("caption"),width:i?Number.parseInt(i,10):null,align:e?.getAttribute("align")||t?.style?.textAlign||null,inline:e?.getAttribute("inline")||!1,flipX:"true"===a,flipY:"true"===r}}},{tag:"div[class=image]",getAttrs:e=>{const t=e.querySelector("img"),i=t?.getAttribute("width"),a=t?.getAttribute("flipx")||!1,r=t?.getAttribute("flipy")||!1;return{src:t?.getAttribute("src"),alt:t?.getAttribute("alt"),caption:t?.getAttribute("caption"),width:i?Number.parseInt(i,10):null,align:t?.getAttribute("align")||e.style.textAlign||null,inline:t?.getAttribute("inline")||!1,flipX:"true"===a,flipY:"true"===r}}},{tag:'img[src]:not([src^="data:"])'}]});function P({editor:e,imageInline:t,onClose:n,disabled:o,alt:l}){const{t:c}=i.useLocale(),{toast:u}=C(),[d,p]=(0,f.useState)(!1),[h,x]=(0,f.useState)(!1),v=f.default.useRef(null),[y,w]=f.default.useState(),[A,I]=f.default.useState(""),S=(0,f.useRef)(null),[T,E]=(0,f.useState)({src:"",file:null}),M=m.useExtension(q.name),N=(0,f.useMemo)(()=>M?.options??{},[M]);function _(e){if(v.current&&e.width&&e.height){const t=function(e,t){const i=document.createElement("canvas"),a=e.naturalWidth/e.width,r=e.naturalHeight/e.height;i.width=t.width*a,i.height=t.height*r;const n=i.getContext("2d");n&&(n.imageSmoothingEnabled=!1,n.drawImage(e,t.x*a,t.y*r,t.width*a,t.height*r,0,0,t.width*a,t.height*r));return i.toDataURL("image/png",1)}(v.current,e);I(t)}}const L=f.default.useCallback(async()=>{if(!h){x(!0);try{const i=g.dataURLtoFile(A,T?.file?.name||"image.png");let a="";a=N.upload?await N.upload(i):URL.createObjectURL(i),e.chain().focus().setImageInline({src:a,inline:t,alt:l}).run(),p(!1),E({src:"",file:null}),O(),n()}catch(i){}finally{x(!1)}}},[A,e,t,h,n,T?.file?.name,N]);const O=()=>{S.current&&(S.current.value="")};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(r.Button,{className:"richtext-mt-1 richtext-w-full",disabled:o,onClick:function(e){e.preventDefault(),S.current?.click()},size:"sm",children:c("editor.image.dialog.tab.uploadCrop")}),(0,b.jsxs)(s.Dialog,{open:d,onOpenChange:e=>{p(e),e||(E({src:"",file:null}),O())},children:[(0,b.jsx)(s.DialogTrigger,{}),(0,b.jsxs)(s.DialogContent,{children:[(0,b.jsx)(s.DialogTitle,{children:c("editor.image.dialog.tab.uploadCrop")}),(0,b.jsx)("div",{children:T.src&&(0,b.jsx)(j.default,{className:"richtext-w-full",crop:y,onChange:e=>w(e),onComplete:e=>_(e),children:(0,b.jsx)("img",{alt:"Crop me",ref:v,src:T.src})})}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsxs)(r.Button,{disabled:h,onClick:()=>{p(!1),E({src:"",file:null}),O()},children:[c("editor.imageUpload.cancel"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1",name:"Trash2"})]}),(0,b.jsx)(r.Button,{className:"richtext-w-fit",disabled:h||!y,onClick:L,children:h?(0,b.jsxs)(b.Fragment,{children:[c("editor.imageUpload.uploading"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1 richtext-animate-spin",name:"Loader"})]}):(0,b.jsxs)(b.Fragment,{children:[c("editor.imageUpload.crop"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1",name:"Crop"})]})})]})]})]}),(0,b.jsx)("input",{accept:N?.acceptMimes?.join(",")||"image/*",multiple:!1,onChange:async t=>{const i=t?.target?.files;if(!e||e.isDestroyed||0===i.length)return void(t.target.value="");const a=D(i,{acceptMimes:N?.acceptMimes,maxSize:N?.maxSize,t:c,toast:u,onError:N.onError});if(a.length<=0)return void(t.target.value="");const r=a[0],n=await g.readImageAsBase64(r);p(!0),E({src:n.src,file:r})},ref:S,style:{display:"none"},type:"file"})]})}Object.defineProperty(exports,"DEFAULT_OPTIONS",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"Image",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"ImageCropper",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"RichTextImage",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"useToast",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"validateFiles",{enumerable:!0,get:function(){return D}});
1
+ const e=require("./rolldown-runtime-BeavJI0R.cjs"),t=require("./toggle-JU5XOZYT.cjs"),i=require("./locales-DRkmn37v.cjs"),a=require("./Icon-CC1yoE4E.cjs"),r=require("./button-5s-zJAUQ.cjs"),n=require("./checkbox-CqncDIUk.cjs"),s=require("./dialog-DbI7mYml.cjs"),o=require("./input-qTd6QuLt.cjs"),l=require("./label-Byrl10cV.cjs"),c=require("./tabs-DYP_5Khw.cjs"),u=require("./throttle-COe5rswR.cjs"),d=require("./isNumber-CmHpmrpR.cjs"),m=require("./useButtonProps-BBiR6DPI.cjs"),g=require("./file-B1Z0XcVJ.cjs");let p=require("@tiptap/react"),h=require("react"),f=e.__toESM(h,1);h=e.__toESM(h);let x=require("@tiptap/core"),b=require("react/jsx-runtime"),j=require("react-image-crop");j=e.__toESM(j,1);var v=0;var y=new Map;function w(e){if(y.has(e))return;const t=setTimeout(()=>{y.delete(e),S({type:"REMOVE_TOAST",toastId:e})},1e6);y.set(e,t)}var A=[],I={toasts:[]};function S(e){I=function(e,t){switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{const{toastId:i}=t;return i?w(i):e.toasts.forEach(e=>{w(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===i||void 0===i?{...e,open:!1}:e)}}case"REMOVE_TOAST":return void 0===t.toastId?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}}(I,e),A.forEach(e=>{e(I)})}function T({...e}){const t=(v=(v+1)%Number.MAX_SAFE_INTEGER).toString(),i=()=>S({type:"DISMISS_TOAST",toastId:t});return S({type:"ADD_TOAST",toast:{...e,id:t,open:!0,onOpenChange:e=>{e||i()}}}),{id:t,dismiss:i,update:e=>S({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function C(){const[e,t]=f.useState(I);return f.useEffect(()=>(A.push(t),()=>{const e=A.indexOf(t);e>-1&&A.splice(e,1)}),[e]),{...e,toast:T,dismiss:e=>S({type:"DISMISS_TOAST",toastId:e})}}var E="tl",M="tr",N="bl",_="br";function L(e){const[t,a]=(0,f.useState)({width:i.IMAGE_MAX_SIZE,height:i.IMAGE_MAX_SIZE}),[r,n]=(0,f.useState)({width:0,height:0}),[s]=(0,f.useState)([E,M,N,_]),[o,l]=(0,f.useState)(!1),[c,m]=(0,f.useState)({x:0,y:0,w:0,h:0,dir:""}),{align:g,inline:h}=e.node.attrs,x=h&&("left"===g||"right"===g),j=(0,f.useMemo)(()=>{const{src:t,alt:i,width:a,height:r,flipX:n,flipY:s}=e.node.attrs,o=d.isNumber(a)?`${a}px`:a,l=d.isNumber(r)?`${r}px`:r,c=[];n&&c.push("rotateX(180deg)"),s&&c.push("rotateY(180deg)");return{src:t||void 0,alt:i||void 0,style:{width:o||void 0,height:l||void 0,transform:c.join(" ")||"none",...x?{float:g}:{}}}},[e?.node?.attrs]),v=(0,f.useMemo)(()=>{const{style:{width:e}}=j;return{width:"100%"===e?e:void 0}},[j]);function y(){const{editor:t,getPos:i}=e;t.commands.setNodeSelection(i())}const w=(0,f.useCallback)(u.throttle(()=>{const{editor:t}=e,{width:i}=getComputedStyle(t.view.dom);a(e=>({...e,width:Number.parseInt(i,10)}))},16),[e?.editor]);const A=(0,f.useCallback)(u.throttle(i=>{if(i.preventDefault(),i.stopPropagation(),!o)return;const{x:a,w:r,dir:n}=c,s=(i.clientX-a)*(/l/.test(n)?-1:1),l=d.clamp(r+s,20,t.width);e.updateAttributes({width:l,height:null})},16),[o,c,t,e.updateAttributes]),I=(0,f.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),o&&(m({x:0,y:0,w:0,h:0,dir:""}),l(!1),y())},[o,y]),S=(0,f.useCallback)(()=>{document?.addEventListener("mousemove",A,!0),document?.addEventListener("mouseup",I,!0)},[A,I]),T=(0,f.useCallback)(()=>{document?.removeEventListener("mousemove",A,!0),document?.removeEventListener("mouseup",I,!0)},[A,I]);(0,f.useEffect)(()=>(o?S():T(),()=>{T()}),[o,S,T]);const C=(0,f.useMemo)(()=>new ResizeObserver(()=>w()),[w]);return(0,f.useEffect)(()=>(C.observe(e.editor.view.dom),()=>{C.disconnect()}),[e.editor.view.dom,C]),(0,b.jsx)(p.NodeViewWrapper,{as:h?"span":"div",className:"image-view",style:{float:x?g:void 0,margin:x?"left"===g?"1em 1em 1em 0":"1em 0 1em 1em":void 0,display:h?"inline":"block",textAlign:x?void 0:g,width:j.style?.width??"auto",...x?{}:v},children:(0,b.jsxs)("div",{"data-drag-handle":!0,draggable:"true",style:v,className:`image-view__body ${e?.selected?"image-view__body--focused":""} ${o?"image-view__body--resizing":""}`,children:[(0,b.jsx)("img",{alt:j.alt,className:"image-view__body__image block",height:"auto",onClick:y,onLoad:function(e){n({width:e.target.width,height:e.target.height})},src:j.src,style:j.style}),e?.editor.view.editable&&(e?.selected||o)&&(0,b.jsx)("div",{className:"image-resizer",children:s?.map(i=>(0,b.jsx)("span",{className:`image-resizer__handler image-resizer__handler--${i}`,onMouseDown:a=>function(i,a){i.preventDefault(),i.stopPropagation();const n=r.width,s=n/r.height;let o=Number(e.node.attrs.width),c=Number(e.node.attrs.height);const u=t.width;o&&!c?(o=o>u?u:o,c=Math.round(o/s)):c&&!o?(o=Math.round(c*s),o=o>u?u:o):o||c?o=o>u?u:o:(o=n>u?u:n,c=Math.round(o/s)),l(!0),m({x:i.clientX,y:i.clientY,w:o,h:c,dir:a})}(a,i)},`image-dir-${i}`))})]})})}function D(e,t){const{acceptMimes:i,maxSize:a,t:r,toast:n}=t,s=[];return(Array.isArray(e)?e:Object.values(e)).forEach(e=>{if(function(e,t){if(!t||0===t.length)return!0;const i=e.type,a=e.name.toLowerCase(),r=a.split(".").pop();if(!r)return!1;const n=i||{heif:"image/heif",heic:"image/heic",dng:"image/x-adobe-dng",cr2:"image/x-canon-cr2",nef:"image/x-nikon-nef",arw:"image/x-sony-arw",raf:"image/x-fuji-raf",orf:"image/x-olympus-orf"}[r];return t.some(e=>{if(e.startsWith("."))return a.endsWith(e);if(e.endsWith("/*")){const t=e.split("/")[0];return n?.startsWith(t+"/")}return n===e})}(e,i)){if(e.size>a){const i=(a/1024/1024).toFixed(2);return void(t.onError?t.onError({type:"size",message:r("editor.upload.fileSizeTooBig",{fileName:e.name,size:i}),file:e}):n({variant:"default",title:r("editor.upload.fileSizeTooBig",{fileName:e.name,size:i})}))}s.push(e)}else t.onError?t.onError({type:"type",message:r("editor.upload.fileTypeNotSupported",{fileName:e.name}),file:e}):n({variant:"default",title:r("editor.upload.fileTypeNotSupported",{fileName:e.name})})}),s}function O(){const{t:e}=i.useLocale(),{toast:u}=C(),d=m.useEditorInstance(),g=m.useButtonProps(q.name),{icon:p,tooltip:h}=g?.componentProps??{},{editorDisabled:x}=m.useToggleActive(),[j,v]=(0,f.useState)(!1),[y,w]=(0,f.useState)(!1),A=m.useExtension(q.name),[I,S]=(0,f.useState)(""),[T,E]=(0,f.useState)(""),M=(0,f.useRef)(null),N=A?.options.defaultInline||!1,[_,L]=(0,f.useState)(N),O=(0,f.useMemo)(()=>A?.options||k,[A]);return g?(0,b.jsxs)(s.Dialog,{onOpenChange:v,open:j,children:[(0,b.jsx)(s.DialogTrigger,{asChild:!0,children:(0,b.jsx)(t.ActionButton,{disabled:x,icon:p,tooltip:h,action:()=>{x||v(!0)}})}),(0,b.jsxs)(s.DialogContent,{children:[(0,b.jsx)(s.DialogTitle,{children:e("editor.image.dialog.title")}),(0,b.jsxs)(c.Tabs,{activationMode:"manual",defaultValue:"both"===O.resourceImage||"upload"===O.resourceImage?"upload":"link",children:["both"===O.resourceImage&&(0,b.jsxs)(c.TabsList,{className:"richtext-grid richtext-w-full richtext-grid-cols-2",children:[(0,b.jsx)(c.TabsTrigger,{value:"upload",children:e("editor.image.dialog.tab.upload")}),(0,b.jsx)(c.TabsTrigger,{value:"link",children:e("editor.image.dialog.tab.url")})]}),(0,b.jsxs)("div",{className:"richtext-my-[10px] richtext-flex richtext-items-center richtext-gap-[4px]",children:[(0,b.jsx)(n.Checkbox,{checked:_,onCheckedChange:e=>{L(e)}}),(0,b.jsx)(l.Label,{children:e("editor.link.dialog.inline")})]}),O.enableAlt&&(0,b.jsxs)("div",{className:"richtext-my-[10px]",children:[(0,b.jsx)(l.Label,{className:"mb-[6px]",children:e("editor.imageUpload.alt")}),(0,b.jsx)(o.Input,{onChange:e=>E(e.target.value),required:!0,type:"text",value:T})]}),(0,b.jsxs)(c.TabsContent,{value:"upload",children:[(0,b.jsxs)("div",{className:"richtext-flex richtext-items-center richtext-gap-[10px]",children:[(0,b.jsx)(r.Button,{className:"richtext-mt-1 richtext-w-full",disabled:y,onClick:function(e){e.preventDefault(),M.current?.click()},size:"sm",children:y?(0,b.jsxs)(b.Fragment,{children:[e("editor.imageUpload.uploading"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1 richtext-animate-spin",name:"Loader"})]}):e("editor.image.dialog.tab.upload")}),(0,b.jsx)(P,{alt:T,disabled:y,editor:d,imageInline:_,onClose:()=>{E("")}})]}),(0,b.jsx)("input",{accept:O?.acceptMimes?.join(",")||"image/*",multiple:O.multiple,onChange:async function(t){const i=t?.target?.files;if(!d||d.isDestroyed||0===i.length||y)return void(t.target.value="");const a=D(i,{acceptMimes:O?.acceptMimes,maxSize:O?.maxSize,t:e,toast:u,onError:O.onError});if(a.length<=0)t.target.value="";else{w(!0);try{if(O?.multiple){const e=a.map(async e=>{let t="";return t=O.upload?await O.upload(e):URL.createObjectURL(e),t});(await Promise.all(e)).forEach(e=>{d.chain().focus().setImageInline({src:e,inline:_,alt:T}).run()})}else{const e=a[0];let t="";t=O.upload?await O.upload(e):URL.createObjectURL(e),d.chain().focus().setImageInline({src:t,inline:_,alt:T}).run()}v(!1),E(""),L(N)}catch(r){O.onError?O.onError({type:"upload",message:e("editor.upload.error")}):u({variant:"destructive",title:e("editor.upload.error")})}finally{w(!1),t.target.value=""}}},ref:M,style:{display:"none"},type:"file"})]}),(0,b.jsx)(c.TabsContent,{value:"link",children:(0,b.jsx)("form",{onSubmit:function(e){e.preventDefault(),e.stopPropagation(),d.chain().focus().setImageInline({src:I,inline:_,alt:T}).run(),v(!1),L(N),S(""),E("")},children:(0,b.jsxs)("div",{className:"richtext-flex richtext-items-center richtext-gap-2",children:[(0,b.jsx)(o.Input,{autoFocus:!0,onChange:e=>S(e.target.value),placeholder:e("editor.image.dialog.placeholder"),required:!0,type:"url",value:I}),(0,b.jsx)(r.Button,{type:"submit",children:e("editor.image.dialog.button.apply")})]})})})]})]})]}):(0,b.jsx)(b.Fragment,{})}var k={acceptMimes:["image/jpeg","image/gif","image/png","image/jpg"],maxSize:5242880,multiple:!0,resourceImage:"both",defaultInline:!1,enableAlt:!0},q=u.index_default.extend({group:"inline",inline:!0,defining:!0,draggable:!0,selectable:!0,addOptions(){return{...k,...this.parent?.(),upload:()=>Promise.reject("Image Upload Function"),button:({editor:e,extension:t,t:i})=>({componentProps:{action:()=>!0,upload:t.options.upload,disabled:!e.can().setImage?.({}),icon:"ImageUp",tooltip:i("editor.image.tooltip")}})}},addAttributes(){return{...this.parent?.(),flipX:{default:!1},flipY:{default:!1},width:{default:null,parseHTML:e=>{const t=e.style.width||e.getAttribute("width")||null;return t?Number.parseInt(t,10):null},renderHTML:e=>({width:e.width})},align:{default:"center",parseHTML:e=>e.getAttribute("align"),renderHTML:e=>({align:e.align})},inline:{default:!1,parseHTML:e=>Boolean(e.getAttribute("inline")),renderHTML:e=>({inline:e.inline})},alt:{default:"",parseHTML:e=>e.getAttribute("alt"),renderHTML:e=>({alt:e.alt})}}},addNodeView:()=>(0,p.ReactNodeViewRenderer)(L),addCommands(){return{...this.parent?.(),setImageInline:e=>({commands:t})=>t.insertContent({type:this.name,attrs:{...e,inline:e.inline??this.options.defaultInline}}),updateImage:e=>({commands:t})=>t.updateAttributes(this.name,e),setAlignImage:e=>({commands:t})=>t.updateAttributes(this.name,{align:e})}},renderHTML({HTMLAttributes:e}){const{flipX:t,flipY:i,align:a,inline:r}=e,n=r&&("left"===a||"right"===a),s=`${n?`float: ${a};`:""}${n?"left"===a?"margin: 1em 1em 1em 0;":"margin: 1em 0 1em 1em;":""}${t||i?`transform: rotateX(${t?"180":"0"}deg) rotateY(${i?"180":"0"}deg);`:""}`;return[r?"span":"div",{style:n?"":`text-align: ${a};`,class:"image"},["img",(0,x.mergeAttributes)({height:"auto",style:s},this.options.HTMLAttributes,e)]]},parseHTML:()=>[{tag:"span.image img",getAttrs:e=>{const t=e?.parentElement,i=e?.getAttribute("width"),a=e?.getAttribute("flipx")||!1,r=e?.getAttribute("flipy")||!1;return{src:e?.getAttribute("src"),alt:e?.getAttribute("alt"),caption:e?.getAttribute("caption"),width:i?Number.parseInt(i,10):null,align:e?.getAttribute("align")||t?.style?.textAlign||null,inline:e?.getAttribute("inline")||!1,flipX:"true"===a,flipY:"true"===r}}},{tag:"div[class=image]",getAttrs:e=>{const t=e.querySelector("img"),i=t?.getAttribute("width"),a=t?.getAttribute("flipx")||!1,r=t?.getAttribute("flipy")||!1;return{src:t?.getAttribute("src"),alt:t?.getAttribute("alt"),caption:t?.getAttribute("caption"),width:i?Number.parseInt(i,10):null,align:t?.getAttribute("align")||e.style.textAlign||null,inline:t?.getAttribute("inline")||!1,flipX:"true"===a,flipY:"true"===r}}},{tag:'img[src]:not([src^="data:"])'}]});function P({editor:e,imageInline:t,onClose:n,disabled:o,alt:l}){const{t:c}=i.useLocale(),{toast:u}=C(),[d,p]=(0,f.useState)(!1),[h,x]=(0,f.useState)(!1),v=f.default.useRef(null),[y,w]=f.default.useState(),[A,I]=f.default.useState(""),S=(0,f.useRef)(null),[T,E]=(0,f.useState)({src:"",file:null}),M=m.useExtension(q.name),N=(0,f.useMemo)(()=>M?.options??{},[M]);function _(e){if(v.current&&e.width&&e.height){const t=function(e,t){const i=document.createElement("canvas"),a=e.naturalWidth/e.width,r=e.naturalHeight/e.height;i.width=t.width*a,i.height=t.height*r;const n=i.getContext("2d");n&&(n.imageSmoothingEnabled=!1,n.drawImage(e,t.x*a,t.y*r,t.width*a,t.height*r,0,0,t.width*a,t.height*r));return i.toDataURL("image/png",1)}(v.current,e);I(t)}}const L=f.default.useCallback(async()=>{if(!h){x(!0);try{const i=g.dataURLtoFile(A,T?.file?.name||"image.png");let a="";a=N.upload?await N.upload(i):URL.createObjectURL(i),e.chain().focus().setImageInline({src:a,inline:t,alt:l}).run(),p(!1),E({src:"",file:null}),O(),n()}catch(i){}finally{x(!1)}}},[A,e,t,h,n,T?.file?.name,N]);const O=()=>{S.current&&(S.current.value="")};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(r.Button,{className:"richtext-mt-1 richtext-w-full",disabled:o,onClick:function(e){e.preventDefault(),S.current?.click()},size:"sm",children:c("editor.image.dialog.tab.uploadCrop")}),(0,b.jsxs)(s.Dialog,{open:d,onOpenChange:e=>{p(e),e||(E({src:"",file:null}),O())},children:[(0,b.jsx)(s.DialogTrigger,{}),(0,b.jsxs)(s.DialogContent,{children:[(0,b.jsx)(s.DialogTitle,{children:c("editor.image.dialog.tab.uploadCrop")}),(0,b.jsx)("div",{children:T.src&&(0,b.jsx)(j.default,{className:"richtext-w-full",crop:y,onChange:e=>w(e),onComplete:e=>_(e),children:(0,b.jsx)("img",{alt:"Crop me",ref:v,src:T.src})})}),(0,b.jsxs)(s.DialogFooter,{children:[(0,b.jsxs)(r.Button,{disabled:h,onClick:()=>{p(!1),E({src:"",file:null}),O()},children:[c("editor.imageUpload.cancel"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1",name:"Trash2"})]}),(0,b.jsx)(r.Button,{className:"richtext-w-fit",disabled:h||!y,onClick:L,children:h?(0,b.jsxs)(b.Fragment,{children:[c("editor.imageUpload.uploading"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1 richtext-animate-spin",name:"Loader"})]}):(0,b.jsxs)(b.Fragment,{children:[c("editor.imageUpload.crop"),(0,b.jsx)(a.IconComponent,{className:"richtext-ml-1",name:"Crop"})]})})]})]})]}),(0,b.jsx)("input",{accept:N?.acceptMimes?.join(",")||"image/*",multiple:!1,onChange:async t=>{const i=t?.target?.files;if(!e||e.isDestroyed||0===i.length)return void(t.target.value="");const a=D(i,{acceptMimes:N?.acceptMimes,maxSize:N?.maxSize,t:c,toast:u,onError:N.onError});if(a.length<=0)return void(t.target.value="");const r=a[0],n=await g.readImageAsBase64(r);p(!0),E({src:n.src,file:r})},ref:S,style:{display:"none"},type:"file"})]})}Object.defineProperty(exports,"DEFAULT_OPTIONS",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"Image",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"ImageCropper",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"RichTextImage",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"useToast",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"validateFiles",{enumerable:!0,get:function(){return D}});
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BeavJI0R.cjs"),t=require("./toggle-JU5XOZYT.cjs"),i=require("./locales-DRkmn37v.cjs"),r=require("./input-qTd6QuLt.cjs"),a=require("./popover-C3EbRkjg.cjs"),s=require("./throttle-COe5rswR.cjs"),n=require("./isNumber-CmHpmrpR.cjs"),o=require("./useButtonProps-BFfsKvCi.cjs");let d=require("@tiptap/react"),c=require("react");c=e.__toESM(c,1);let l=require("@tiptap/core"),u=require("react/jsx-runtime"),h=require("grab-url");h=e.__toESM(h,1);var g="tl",m="tr",p="bl",f="br";function w(e){const[t,r]=(0,c.useState)({width:i.IMAGE_MAX_SIZE,height:i.IMAGE_MAX_SIZE}),[a,o]=(0,c.useState)({width:0,height:0}),[l]=(0,c.useState)([g,m,p,f]),[h,w]=(0,c.useState)(!1),[v,b]=(0,c.useState)({x:0,y:0,w:0,h:0,dir:""}),{align:x}=e.node.attrs,y=(0,c.useMemo)(()=>{const{src:t,alt:i,width:r,height:a}=e.node.attrs;return{src:t||void 0,alt:i||void 0,style:{width:(n.isNumber(r)?`${r}px`:r)||void 0,height:(n.isNumber(a)?`${a}px`:a)||void 0}}},[e?.node?.attrs]),_=(0,c.useMemo)(()=>{const{style:{width:e}}=y;return{width:"100%"===e?e:void 0}},[y]);function j(){const{editor:t,getPos:i}=e;t.commands.setNodeSelection(i())}const A=(0,c.useCallback)(s.throttle(()=>{const{editor:t}=e,{width:i}=getComputedStyle(t.view.dom);r(e=>({...e,width:Number.parseInt(i,10)}))},16),[e?.editor]);const I=(0,c.useCallback)(s.throttle(i=>{if(i.preventDefault(),i.stopPropagation(),!h)return;const{x:r,w:a,dir:s}=v,o=(i.clientX-r)*(/l/.test(s)?-1:1),d=n.clamp(a+o,20,t.width);e.updateAttributes({width:d,height:null})},16),[h,v,t,e.updateAttributes]),N=(0,c.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),h&&(b({x:0,y:0,w:0,h:0,dir:""}),w(!1),j())},[h,j]),M=(0,c.useCallback)(()=>{document?.addEventListener("mousemove",I,!0),document?.addEventListener("mouseup",N,!0)},[I,N]),q=(0,c.useCallback)(()=>{document?.removeEventListener("mousemove",I,!0),document?.removeEventListener("mouseup",N,!0)},[I,N]);(0,c.useEffect)(()=>(h?M():q(),()=>{q()}),[h,M,q]);const k=(0,c.useMemo)(()=>new ResizeObserver(()=>A()),[A]);return(0,c.useEffect)(()=>(k.observe(e.editor.view.dom),()=>{k.disconnect()}),[e.editor.view.dom,k]),(0,u.jsx)(d.NodeViewWrapper,{className:"image-view",style:{..._,width:"100%",textAlign:x},children:(0,u.jsxs)("div",{"data-drag-handle":!0,draggable:"true",style:_,className:`image-view__body ${e?.selected?"image-view__body--focused":""} ${h?"image-view__body--resizing":""}`,children:[(0,u.jsx)("img",{alt:y.alt,className:"image-view__body__image block",height:"auto",onClick:j,onLoad:function(e){o({width:e.target.width,height:e.target.height})},src:y.src,style:y.style}),e?.editor.view.editable&&(e?.selected||h)&&(0,u.jsx)("div",{className:"image-resizer",children:l?.map(i=>(0,u.jsx)("span",{className:`image-resizer__handler image-resizer__handler--${i}`,onMouseDown:r=>function(i,r){i.preventDefault(),i.stopPropagation();const s=a.width,n=s/a.height;let o=Number(e.node.attrs.width),d=Number(e.node.attrs.height);const c=t.width;o&&!d?(o=o>c?c:o,d=Math.round(o/n)):d&&!o?(o=Math.round(d*n),o=o>c?c:o):o||d?o=o>c?c:o:(o=s>c?c:s,d=Math.round(o/n)),w(!0),b({x:i.clientX,y:i.clientY,w:o,h:d,dir:r})}(r,i)},`image-dir-${i}`))})]})})}function v(e,t){return{searchTrending:async()=>t?"giphy"===e?async function(e){return(await(0,h.default)(`https://api.giphy.com/v1/gifs/trending?q=&limit=15&api_key=${e}`)).data?.data?.map(e=>({id:e?.id,src:e?.images.original?.url,width:+e?.images.original?.width,height:+e?.images.original?.width}))}(t):"tenor"===e?async function(e){const t=(await(0,h.default)(`https://tenor.googleapis.com/v2/trending_terms?key=${e}&limit=10`)).data;return(await(0,h.default)(`https://tenor.googleapis.com/v2/search?key=${e}&q=${t?.results?.[0]}&limit=15`)).data?.results?.map(e=>({id:e?.id,src:e?.media_formats?.gif?.url,width:e?.media_formats?.gif?.dims?.[0],height:e?.media_formats?.gif?.dims?.[1]}))}(t):[]:[],searchWord:async i=>t?"giphy"===e?async function(e,t){return(await(0,h.default)(`https://api.giphy.com/v1/gifs/search?q=${e}&limit=15&api_key=${t}`)).data?.data?.map(e=>({id:e?.id,src:e?.images.original?.url,width:+e?.images.original?.width,height:+e?.images.original?.width}))}(i,t):"tenor"===e?async function(e,t){return(await(0,h.default)(`https://tenor.googleapis.com/v2/search?key=${t}&q=${e}&limit=15`)).data?.results?.map(e=>({id:e?.id,src:e?.media_formats?.gif?.url,width:e?.media_formats?.gif?.dims?.[0],height:e?.media_formats?.gif?.dims?.[1]}))}(i,t):[]:[]}}function b({selectImage:e,apiKey:t,provider:i,children:n}){const[d,l]=(0,c.useState)(!1),[h,g]=(0,c.useState)([]),{editorDisabled:m}=o.useToggleActive(),p=(0,c.useRef)(null),{searchTrending:f,searchWord:w}=v(i,t);(0,c.useEffect)(()=>{(async()=>{const e=await f();g(e)})()},[]);const b=(0,c.useCallback)(s.debounce(async e=>{if(!e.target.value){const e=await f();return void g(e)}const t=await w(e.target.value);g(t)},350),[]);return(0,u.jsxs)(a.Popover,{modal:!0,onOpenChange:l,open:d,children:[(0,u.jsx)(a.PopoverTrigger,{asChild:!0,disabled:m,children:n}),(0,u.jsx)(a.PopoverContent,{align:"start",className:"richtext-size-full richtext-p-2",hideWhenDetached:!0,side:"bottom",children:t?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("div",{className:"richtext-mb-[10px] richtext-w-full",children:(0,u.jsx)(r.Input,{onChange:b,placeholder:"Search GIF",ref:p,type:"text"})}),(0,u.jsx)("div",{className:"richtext-max-h-[280px] !richtext-max-w-[400px] richtext-overflow-y-auto",children:(0,u.jsx)("div",{className:"richtext-grid richtext-grid-cols-2 richtext-gap-1",children:h?.length?h?.map(t=>(0,u.jsx)("img",{alt:"",className:"richtext-cursor-pointer richtext-object-contain richtext-text-center",src:t.src,onClick:()=>{e(t.src),l(!1)}},t.id)):(0,u.jsx)("p",{children:"No GIFs found"})})})]}):(0,u.jsx)("div",{children:(0,u.jsx)("p",{children:"Missing Giphy API Key"})})})]})}function x(){const{action:e,icon:i,tooltip:r,apiKey:a,provider:s}=o.useButtonProps(y.name)?.componentProps??{},{editorDisabled:n}=o.useToggleActive();return(0,u.jsx)(b,{apiKey:a,provider:s,selectImage:t=>{n||e&&e(t)},children:(0,u.jsx)(t.ActionButton,{disabled:n,icon:i,tooltip:r})})}var y=s.index_default.extend({name:"imageGif",addOptions(){return{...this.parent?.(),inline:!1,content:"",marks:"",group:"block",API_KEY:"",provider:"giphy",draggable:!1,selectable:!0,atom:!0,button:({editor:e,extension:t,t:i})=>{const r=t?.options?.provider||"",a=t?.options?.API_KEY||"";return{componentProps:{action:t=>{e.chain().focus().setImageGif({src:t}).run()},isActive:()=>!1,disabled:!1,icon:"GifIcon",tooltip:i("editor.imageGif.tooltip"),apiKey:a,provider:r}}}}},addAttributes(){return{...this.parent?.(),width:{default:null,parseHTML:e=>{const t=e.style.width||e.getAttribute("width")||"10";return void 0===t?null:Number.parseInt(`${t}`,10)},renderHTML:e=>({width:e.width})},align:{default:"center",parseHTML:e=>e.getAttribute("align"),renderHTML:e=>({align:e.align})}}},addNodeView:()=>(0,d.ReactNodeViewRenderer)(w),addCommands(){return{...this.parent?.(),setImageGif:e=>({commands:t})=>t.insertContent({type:this.name,attrs:e}),updateImageGif:e=>({commands:t})=>t.updateAttributes(this.name,e),setAlignImageGif:e=>({commands:t})=>t.updateAttributes(this.name,{align:e})}},renderHTML({HTMLAttributes:e}){const{align:t}=e;return["div",{style:t?`text-align: ${t};`:"",class:"imageGIf"},["img",(0,l.mergeAttributes)({height:"auto"},this.options.HTMLAttributes,e)]]},parseHTML:()=>[{tag:"div[class=imageGIf]",getAttrs:e=>{const t=e.querySelector("img"),i=t?.getAttribute("width");return{src:t?.getAttribute("src"),alt:t?.getAttribute("alt"),title:t?.getAttribute("title"),width:i?Number.parseInt(i,10):null,align:t?.getAttribute("align")||e.style.textAlign||null}}}]});Object.defineProperty(exports,"ImageGif",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"RichTextImageGif",{enumerable:!0,get:function(){return x}});
1
+ const e=require("./rolldown-runtime-BeavJI0R.cjs"),t=require("./toggle-JU5XOZYT.cjs"),i=require("./locales-DRkmn37v.cjs"),r=require("./input-qTd6QuLt.cjs"),a=require("./popover-C3EbRkjg.cjs"),s=require("./throttle-COe5rswR.cjs"),n=require("./isNumber-CmHpmrpR.cjs"),o=require("./useButtonProps-BBiR6DPI.cjs");let d=require("@tiptap/react"),c=require("react");c=e.__toESM(c,1);let l=require("@tiptap/core"),u=require("react/jsx-runtime"),h=require("grab-url");h=e.__toESM(h,1);var g="tl",m="tr",p="bl",f="br";function w(e){const[t,r]=(0,c.useState)({width:i.IMAGE_MAX_SIZE,height:i.IMAGE_MAX_SIZE}),[a,o]=(0,c.useState)({width:0,height:0}),[l]=(0,c.useState)([g,m,p,f]),[h,w]=(0,c.useState)(!1),[v,b]=(0,c.useState)({x:0,y:0,w:0,h:0,dir:""}),{align:x}=e.node.attrs,y=(0,c.useMemo)(()=>{const{src:t,alt:i,width:r,height:a}=e.node.attrs;return{src:t||void 0,alt:i||void 0,style:{width:(n.isNumber(r)?`${r}px`:r)||void 0,height:(n.isNumber(a)?`${a}px`:a)||void 0}}},[e?.node?.attrs]),_=(0,c.useMemo)(()=>{const{style:{width:e}}=y;return{width:"100%"===e?e:void 0}},[y]);function j(){const{editor:t,getPos:i}=e;t.commands.setNodeSelection(i())}const A=(0,c.useCallback)(s.throttle(()=>{const{editor:t}=e,{width:i}=getComputedStyle(t.view.dom);r(e=>({...e,width:Number.parseInt(i,10)}))},16),[e?.editor]);const I=(0,c.useCallback)(s.throttle(i=>{if(i.preventDefault(),i.stopPropagation(),!h)return;const{x:r,w:a,dir:s}=v,o=(i.clientX-r)*(/l/.test(s)?-1:1),d=n.clamp(a+o,20,t.width);e.updateAttributes({width:d,height:null})},16),[h,v,t,e.updateAttributes]),N=(0,c.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),h&&(b({x:0,y:0,w:0,h:0,dir:""}),w(!1),j())},[h,j]),M=(0,c.useCallback)(()=>{document?.addEventListener("mousemove",I,!0),document?.addEventListener("mouseup",N,!0)},[I,N]),q=(0,c.useCallback)(()=>{document?.removeEventListener("mousemove",I,!0),document?.removeEventListener("mouseup",N,!0)},[I,N]);(0,c.useEffect)(()=>(h?M():q(),()=>{q()}),[h,M,q]);const k=(0,c.useMemo)(()=>new ResizeObserver(()=>A()),[A]);return(0,c.useEffect)(()=>(k.observe(e.editor.view.dom),()=>{k.disconnect()}),[e.editor.view.dom,k]),(0,u.jsx)(d.NodeViewWrapper,{className:"image-view",style:{..._,width:"100%",textAlign:x},children:(0,u.jsxs)("div",{"data-drag-handle":!0,draggable:"true",style:_,className:`image-view__body ${e?.selected?"image-view__body--focused":""} ${h?"image-view__body--resizing":""}`,children:[(0,u.jsx)("img",{alt:y.alt,className:"image-view__body__image block",height:"auto",onClick:j,onLoad:function(e){o({width:e.target.width,height:e.target.height})},src:y.src,style:y.style}),e?.editor.view.editable&&(e?.selected||h)&&(0,u.jsx)("div",{className:"image-resizer",children:l?.map(i=>(0,u.jsx)("span",{className:`image-resizer__handler image-resizer__handler--${i}`,onMouseDown:r=>function(i,r){i.preventDefault(),i.stopPropagation();const s=a.width,n=s/a.height;let o=Number(e.node.attrs.width),d=Number(e.node.attrs.height);const c=t.width;o&&!d?(o=o>c?c:o,d=Math.round(o/n)):d&&!o?(o=Math.round(d*n),o=o>c?c:o):o||d?o=o>c?c:o:(o=s>c?c:s,d=Math.round(o/n)),w(!0),b({x:i.clientX,y:i.clientY,w:o,h:d,dir:r})}(r,i)},`image-dir-${i}`))})]})})}function v(e,t){return{searchTrending:async()=>t?"giphy"===e?async function(e){return(await(0,h.default)(`https://api.giphy.com/v1/gifs/trending?q=&limit=15&api_key=${e}`)).data?.data?.map(e=>({id:e?.id,src:e?.images.original?.url,width:+e?.images.original?.width,height:+e?.images.original?.width}))}(t):"tenor"===e?async function(e){const t=(await(0,h.default)(`https://tenor.googleapis.com/v2/trending_terms?key=${e}&limit=10`)).data;return(await(0,h.default)(`https://tenor.googleapis.com/v2/search?key=${e}&q=${t?.results?.[0]}&limit=15`)).data?.results?.map(e=>({id:e?.id,src:e?.media_formats?.gif?.url,width:e?.media_formats?.gif?.dims?.[0],height:e?.media_formats?.gif?.dims?.[1]}))}(t):[]:[],searchWord:async i=>t?"giphy"===e?async function(e,t){return(await(0,h.default)(`https://api.giphy.com/v1/gifs/search?q=${e}&limit=15&api_key=${t}`)).data?.data?.map(e=>({id:e?.id,src:e?.images.original?.url,width:+e?.images.original?.width,height:+e?.images.original?.width}))}(i,t):"tenor"===e?async function(e,t){return(await(0,h.default)(`https://tenor.googleapis.com/v2/search?key=${t}&q=${e}&limit=15`)).data?.results?.map(e=>({id:e?.id,src:e?.media_formats?.gif?.url,width:e?.media_formats?.gif?.dims?.[0],height:e?.media_formats?.gif?.dims?.[1]}))}(i,t):[]:[]}}function b({selectImage:e,apiKey:t,provider:i,children:n}){const[d,l]=(0,c.useState)(!1),[h,g]=(0,c.useState)([]),{editorDisabled:m}=o.useToggleActive(),p=(0,c.useRef)(null),{searchTrending:f,searchWord:w}=v(i,t);(0,c.useEffect)(()=>{(async()=>{const e=await f();g(e)})()},[]);const b=(0,c.useCallback)(s.debounce(async e=>{if(!e.target.value){const e=await f();return void g(e)}const t=await w(e.target.value);g(t)},350),[]);return(0,u.jsxs)(a.Popover,{modal:!0,onOpenChange:l,open:d,children:[(0,u.jsx)(a.PopoverTrigger,{asChild:!0,disabled:m,children:n}),(0,u.jsx)(a.PopoverContent,{align:"start",className:"richtext-size-full richtext-p-2",hideWhenDetached:!0,side:"bottom",children:t?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)("div",{className:"richtext-mb-[10px] richtext-w-full",children:(0,u.jsx)(r.Input,{onChange:b,placeholder:"Search GIF",ref:p,type:"text"})}),(0,u.jsx)("div",{className:"richtext-max-h-[280px] !richtext-max-w-[400px] richtext-overflow-y-auto",children:(0,u.jsx)("div",{className:"richtext-grid richtext-grid-cols-2 richtext-gap-1",children:h?.length?h?.map(t=>(0,u.jsx)("img",{alt:"",className:"richtext-cursor-pointer richtext-object-contain richtext-text-center",src:t.src,onClick:()=>{e(t.src),l(!1)}},t.id)):(0,u.jsx)("p",{children:"No GIFs found"})})})]}):(0,u.jsx)("div",{children:(0,u.jsx)("p",{children:"Missing Giphy API Key"})})})]})}function x(){const{action:e,icon:i,tooltip:r,apiKey:a,provider:s}=o.useButtonProps(y.name)?.componentProps??{},{editorDisabled:n}=o.useToggleActive();return(0,u.jsx)(b,{apiKey:a,provider:s,selectImage:t=>{n||e&&e(t)},children:(0,u.jsx)(t.ActionButton,{disabled:n,icon:i,tooltip:r})})}var y=s.index_default.extend({name:"imageGif",addOptions(){return{...this.parent?.(),inline:!1,content:"",marks:"",group:"block",API_KEY:"",provider:"giphy",draggable:!1,selectable:!0,atom:!0,button:({editor:e,extension:t,t:i})=>{const r=t?.options?.provider||"",a=t?.options?.API_KEY||"";return{componentProps:{action:t=>{e.chain().focus().setImageGif({src:t}).run()},isActive:()=>!1,disabled:!1,icon:"GifIcon",tooltip:i("editor.imageGif.tooltip"),apiKey:a,provider:r}}}}},addAttributes(){return{...this.parent?.(),width:{default:null,parseHTML:e=>{const t=e.style.width||e.getAttribute("width")||"10";return void 0===t?null:Number.parseInt(`${t}`,10)},renderHTML:e=>({width:e.width})},align:{default:"center",parseHTML:e=>e.getAttribute("align"),renderHTML:e=>({align:e.align})}}},addNodeView:()=>(0,d.ReactNodeViewRenderer)(w),addCommands(){return{...this.parent?.(),setImageGif:e=>({commands:t})=>t.insertContent({type:this.name,attrs:e}),updateImageGif:e=>({commands:t})=>t.updateAttributes(this.name,e),setAlignImageGif:e=>({commands:t})=>t.updateAttributes(this.name,{align:e})}},renderHTML({HTMLAttributes:e}){const{align:t}=e;return["div",{style:t?`text-align: ${t};`:"",class:"imageGIf"},["img",(0,l.mergeAttributes)({height:"auto"},this.options.HTMLAttributes,e)]]},parseHTML:()=>[{tag:"div[class=imageGIf]",getAttrs:e=>{const t=e.querySelector("img"),i=t?.getAttribute("width");return{src:t?.getAttribute("src"),alt:t?.getAttribute("alt"),title:t?.getAttribute("title"),width:i?Number.parseInt(i,10):null,align:t?.getAttribute("align")||e.style.textAlign||null}}}]});Object.defineProperty(exports,"ImageGif",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"RichTextImageGif",{enumerable:!0,get:function(){return x}});
@@ -1,3 +1,3 @@
1
- import{n as t}from"./toggle-BnR5VE66.js";import{g as e}from"./locales-rT_qjKW9.js";import{t as i}from"./input-BpHg1W4N.js";import{i as r,r as a,t as n}from"./popover-Bgd9XvwH.js";import{n as s,o,t as d}from"./throttle-BpbN7uB1.js";import{n as c,t as l}from"./isNumber-BBkF36Z-.js";import{c as m,t as h}from"./useButtonProps-BZwO1Of-.js";import{NodeViewWrapper as g,ReactNodeViewRenderer as p}from"@tiptap/react";import u,{useCallback as f,useEffect as w,useMemo as v,useRef as y,useState as b}from"react";import{mergeAttributes as x}from"@tiptap/core";import{Fragment as _,jsx as A,jsxs as N}from"react/jsx-runtime";import I from"grab-url";var $="tl",L="tr",M="bl",G="br";function j(t){const[i,r]=b({width:e,height:e}),[a,n]=b({width:0,height:0}),[s]=b([$,L,M,G]),[o,m]=b(!1),[h,p]=b({x:0,y:0,w:0,h:0,dir:""}),{align:u}=t.node.attrs,y=v(()=>{const{src:e,alt:i,width:r,height:a}=t.node.attrs;return{src:e||void 0,alt:i||void 0,style:{width:(l(r)?`${r}px`:r)||void 0,height:(l(a)?`${a}px`:a)||void 0}}},[t?.node?.attrs]),x=v(()=>{const{style:{width:t}}=y;return{width:"100%"===t?t:void 0}},[y]);function _(){const{editor:e,getPos:i}=t;e.commands.setNodeSelection(i())}const I=f(d(()=>{const{editor:e}=t,{width:i}=getComputedStyle(e.view.dom);r(t=>({...t,width:Number.parseInt(i,10)}))},16),[t?.editor]);const j=f(d(e=>{if(e.preventDefault(),e.stopPropagation(),!o)return;const{x:r,w:a,dir:n}=h,s=(e.clientX-r)*(/l/.test(n)?-1:1),d=c(a+s,20,i.width);t.updateAttributes({width:d,height:null})},16),[o,h,i,t.updateAttributes]),k=f(t=>{t.preventDefault(),t.stopPropagation(),o&&(p({x:0,y:0,w:0,h:0,dir:""}),m(!1),_())},[o,_]),P=f(()=>{document?.addEventListener("mousemove",j,!0),document?.addEventListener("mouseup",k,!0)},[j,k]),T=f(()=>{document?.removeEventListener("mousemove",j,!0),document?.removeEventListener("mouseup",k,!0)},[j,k]);w(()=>(o?P():T(),()=>{T()}),[o,P,T]);const C=v(()=>new ResizeObserver(()=>I()),[I]);return w(()=>(C.observe(t.editor.view.dom),()=>{C.disconnect()}),[t.editor.view.dom,C]),/* @__PURE__ */A(g,{className:"image-view",style:{...x,width:"100%",textAlign:u},children:/* @__PURE__ */N("div",{"data-drag-handle":!0,draggable:"true",style:x,className:`image-view__body ${t?.selected?"image-view__body--focused":""} ${o?"image-view__body--resizing":""}`,children:[/* @__PURE__ */A("img",{alt:y.alt,className:"image-view__body__image block",height:"auto",onClick:_,onLoad:function(t){n({width:t.target.width,height:t.target.height})},src:y.src,style:y.style}),t?.editor.view.editable&&(t?.selected||o)&&/* @__PURE__ */A("div",{className:"image-resizer",children:s?.map(e=>/* @__PURE__ */A("span",{className:`image-resizer__handler image-resizer__handler--${e}`,onMouseDown:r=>function(e,r){e.preventDefault(),e.stopPropagation();const n=a.width,s=n/a.height;let o=Number(t.node.attrs.width),d=Number(t.node.attrs.height);const c=i.width;o&&!d?(o=o>c?c:o,d=Math.round(o/s)):d&&!o?(o=Math.round(d*s),o=o>c?c:o):o||d?o=o>c?c:o:(o=n>c?c:n,d=Math.round(o/s)),m(!0),p({x:e.clientX,y:e.clientY,w:o,h:d,dir:r})}(r,e)},`image-dir-${e}`))})]})})}function k(t,e){return{searchTrending:async()=>e?"giphy"===t?async function(t){return(await I(`https://api.giphy.com/v1/gifs/trending?q=&limit=15&api_key=${t}`)).data?.data?.map(t=>({id:t?.id,src:t?.images.original?.url,width:+t?.images.original?.width,height:+t?.images.original?.width}))}(e):"tenor"===t?async function(t){const e=(await I(`https://tenor.googleapis.com/v2/trending_terms?key=${t}&limit=10`)).data;return(await I(`https://tenor.googleapis.com/v2/search?key=${t}&q=${e?.results?.[0]}&limit=15`)).data?.results?.map(t=>({id:t?.id,src:t?.media_formats?.gif?.url,width:t?.media_formats?.gif?.dims?.[0],height:t?.media_formats?.gif?.dims?.[1]}))}(e):[]:[],searchWord:async i=>e?"giphy"===t?async function(t,e){return(await I(`https://api.giphy.com/v1/gifs/search?q=${t}&limit=15&api_key=${e}`)).data?.data?.map(t=>({id:t?.id,src:t?.images.original?.url,width:+t?.images.original?.width,height:+t?.images.original?.width}))}(i,e):"tenor"===t?async function(t,e){return(await I(`https://tenor.googleapis.com/v2/search?key=${e}&q=${t}&limit=15`)).data?.results?.map(t=>({id:t?.id,src:t?.media_formats?.gif?.url,width:t?.media_formats?.gif?.dims?.[0],height:t?.media_formats?.gif?.dims?.[1]}))}(i,e):[]:[]}}function P({selectImage:t,apiKey:e,provider:o,children:d}){const[c,l]=b(!1),[h,g]=b([]),{editorDisabled:p}=m(),u=y(null),{searchTrending:v,searchWord:x}=k(o,e);w(()=>{(async()=>{const t=await v();g(t)})()},[]);const I=f(s(async t=>{if(!t.target.value){const t=await v();return void g(t)}const e=await x(t.target.value);g(e)},350),[]);/* @__PURE__ */
1
+ import{n as t}from"./toggle-BnR5VE66.js";import{g as e}from"./locales-rT_qjKW9.js";import{t as i}from"./input-BpHg1W4N.js";import{i as r,r as a,t as n}from"./popover-Bgd9XvwH.js";import{n as s,o,t as d}from"./throttle-BpbN7uB1.js";import{n as c,t as l}from"./isNumber-BBkF36Z-.js";import{c as m,t as h}from"./useButtonProps-Codtb0k0.js";import{NodeViewWrapper as g,ReactNodeViewRenderer as p}from"@tiptap/react";import u,{useCallback as f,useEffect as w,useMemo as v,useRef as y,useState as b}from"react";import{mergeAttributes as x}from"@tiptap/core";import{Fragment as _,jsx as A,jsxs as N}from"react/jsx-runtime";import I from"grab-url";var $="tl",L="tr",M="bl",G="br";function j(t){const[i,r]=b({width:e,height:e}),[a,n]=b({width:0,height:0}),[s]=b([$,L,M,G]),[o,m]=b(!1),[h,p]=b({x:0,y:0,w:0,h:0,dir:""}),{align:u}=t.node.attrs,y=v(()=>{const{src:e,alt:i,width:r,height:a}=t.node.attrs;return{src:e||void 0,alt:i||void 0,style:{width:(l(r)?`${r}px`:r)||void 0,height:(l(a)?`${a}px`:a)||void 0}}},[t?.node?.attrs]),x=v(()=>{const{style:{width:t}}=y;return{width:"100%"===t?t:void 0}},[y]);function _(){const{editor:e,getPos:i}=t;e.commands.setNodeSelection(i())}const I=f(d(()=>{const{editor:e}=t,{width:i}=getComputedStyle(e.view.dom);r(t=>({...t,width:Number.parseInt(i,10)}))},16),[t?.editor]);const j=f(d(e=>{if(e.preventDefault(),e.stopPropagation(),!o)return;const{x:r,w:a,dir:n}=h,s=(e.clientX-r)*(/l/.test(n)?-1:1),d=c(a+s,20,i.width);t.updateAttributes({width:d,height:null})},16),[o,h,i,t.updateAttributes]),k=f(t=>{t.preventDefault(),t.stopPropagation(),o&&(p({x:0,y:0,w:0,h:0,dir:""}),m(!1),_())},[o,_]),P=f(()=>{document?.addEventListener("mousemove",j,!0),document?.addEventListener("mouseup",k,!0)},[j,k]),T=f(()=>{document?.removeEventListener("mousemove",j,!0),document?.removeEventListener("mouseup",k,!0)},[j,k]);w(()=>(o?P():T(),()=>{T()}),[o,P,T]);const C=v(()=>new ResizeObserver(()=>I()),[I]);return w(()=>(C.observe(t.editor.view.dom),()=>{C.disconnect()}),[t.editor.view.dom,C]),/* @__PURE__ */A(g,{className:"image-view",style:{...x,width:"100%",textAlign:u},children:/* @__PURE__ */N("div",{"data-drag-handle":!0,draggable:"true",style:x,className:`image-view__body ${t?.selected?"image-view__body--focused":""} ${o?"image-view__body--resizing":""}`,children:[/* @__PURE__ */A("img",{alt:y.alt,className:"image-view__body__image block",height:"auto",onClick:_,onLoad:function(t){n({width:t.target.width,height:t.target.height})},src:y.src,style:y.style}),t?.editor.view.editable&&(t?.selected||o)&&/* @__PURE__ */A("div",{className:"image-resizer",children:s?.map(e=>/* @__PURE__ */A("span",{className:`image-resizer__handler image-resizer__handler--${e}`,onMouseDown:r=>function(e,r){e.preventDefault(),e.stopPropagation();const n=a.width,s=n/a.height;let o=Number(t.node.attrs.width),d=Number(t.node.attrs.height);const c=i.width;o&&!d?(o=o>c?c:o,d=Math.round(o/s)):d&&!o?(o=Math.round(d*s),o=o>c?c:o):o||d?o=o>c?c:o:(o=n>c?c:n,d=Math.round(o/s)),m(!0),p({x:e.clientX,y:e.clientY,w:o,h:d,dir:r})}(r,e)},`image-dir-${e}`))})]})})}function k(t,e){return{searchTrending:async()=>e?"giphy"===t?async function(t){return(await I(`https://api.giphy.com/v1/gifs/trending?q=&limit=15&api_key=${t}`)).data?.data?.map(t=>({id:t?.id,src:t?.images.original?.url,width:+t?.images.original?.width,height:+t?.images.original?.width}))}(e):"tenor"===t?async function(t){const e=(await I(`https://tenor.googleapis.com/v2/trending_terms?key=${t}&limit=10`)).data;return(await I(`https://tenor.googleapis.com/v2/search?key=${t}&q=${e?.results?.[0]}&limit=15`)).data?.results?.map(t=>({id:t?.id,src:t?.media_formats?.gif?.url,width:t?.media_formats?.gif?.dims?.[0],height:t?.media_formats?.gif?.dims?.[1]}))}(e):[]:[],searchWord:async i=>e?"giphy"===t?async function(t,e){return(await I(`https://api.giphy.com/v1/gifs/search?q=${t}&limit=15&api_key=${e}`)).data?.data?.map(t=>({id:t?.id,src:t?.images.original?.url,width:+t?.images.original?.width,height:+t?.images.original?.width}))}(i,e):"tenor"===t?async function(t,e){return(await I(`https://tenor.googleapis.com/v2/search?key=${e}&q=${t}&limit=15`)).data?.results?.map(t=>({id:t?.id,src:t?.media_formats?.gif?.url,width:t?.media_formats?.gif?.dims?.[0],height:t?.media_formats?.gif?.dims?.[1]}))}(i,e):[]:[]}}function P({selectImage:t,apiKey:e,provider:o,children:d}){const[c,l]=b(!1),[h,g]=b([]),{editorDisabled:p}=m(),u=y(null),{searchTrending:v,searchWord:x}=k(o,e);w(()=>{(async()=>{const t=await v();g(t)})()},[]);const I=f(s(async t=>{if(!t.target.value){const t=await v();return void g(t)}const e=await x(t.target.value);g(e)},350),[]);/* @__PURE__ */
2
2
  return N(n,{modal:!0,onOpenChange:l,open:c,children:[/* @__PURE__ */A(r,{asChild:!0,disabled:p,children:d}),/* @__PURE__ */A(a,{align:"start",className:"richtext-size-full richtext-p-2",hideWhenDetached:!0,side:"bottom",children:e?/* @__PURE__ */N(_,{children:[/* @__PURE__ */A("div",{className:"richtext-mb-[10px] richtext-w-full",children:/* @__PURE__ */A(i,{onChange:I,placeholder:"Search GIF",ref:u,type:"text"})}),/* @__PURE__ */A("div",{className:"richtext-max-h-[280px] !richtext-max-w-[400px] richtext-overflow-y-auto",children:/* @__PURE__ */A("div",{className:"richtext-grid richtext-grid-cols-2 richtext-gap-1",children:h?.length?h?.map(e=>/* @__PURE__ */A("img",{alt:"",className:"richtext-cursor-pointer richtext-object-contain richtext-text-center",src:e.src,onClick:()=>{t(e.src),l(!1)}},e.id)):/* @__PURE__ */A("p",{children:"No GIFs found"})})})]}):/* @__PURE__ */A("div",{children:/* @__PURE__ */A("p",{children:"Missing Giphy API Key"})})})]})}function T(){const{action:e,icon:i,tooltip:r,apiKey:a,provider:n}=h(C.name)?.componentProps??{},{editorDisabled:s}=m();/* @__PURE__ */
3
3
  return A(P,{apiKey:a,provider:n,selectImage:t=>{s||e&&e(t)},children:/* @__PURE__ */A(t,{disabled:s,icon:i,tooltip:r})})}var C=o.extend({name:"imageGif",addOptions(){return{...this.parent?.(),inline:!1,content:"",marks:"",group:"block",API_KEY:"",provider:"giphy",draggable:!1,selectable:!0,atom:!0,button:({editor:t,extension:e,t:i})=>{const r=e?.options?.provider||"",a=e?.options?.API_KEY||"";return{componentProps:{action:e=>{t.chain().focus().setImageGif({src:e}).run()},isActive:()=>!1,disabled:!1,icon:"GifIcon",tooltip:i("editor.imageGif.tooltip"),apiKey:a,provider:r}}}}},addAttributes(){return{...this.parent?.(),width:{default:null,parseHTML:t=>{const e=t.style.width||t.getAttribute("width")||"10";return void 0===e?null:Number.parseInt(`${e}`,10)},renderHTML:t=>({width:t.width})},align:{default:"center",parseHTML:t=>t.getAttribute("align"),renderHTML:t=>({align:t.align})}}},addNodeView:()=>p(j),addCommands(){return{...this.parent?.(),setImageGif:t=>({commands:e})=>e.insertContent({type:this.name,attrs:t}),updateImageGif:t=>({commands:e})=>e.updateAttributes(this.name,t),setAlignImageGif:t=>({commands:e})=>e.updateAttributes(this.name,{align:t})}},renderHTML({HTMLAttributes:t}){const{align:e}=t;return["div",{style:e?`text-align: ${e};`:"",class:"imageGIf"},["img",x({height:"auto"},this.options.HTMLAttributes,t)]]},parseHTML:()=>[{tag:"div[class=imageGIf]",getAttrs:t=>{const e=t.querySelector("img"),i=e?.getAttribute("width");return{src:e?.getAttribute("src"),alt:e?.getAttribute("alt"),title:e?.getAttribute("title"),width:i?Number.parseInt(i,10):null,align:e?.getAttribute("align")||t.style.textAlign||null}}}]});export{T as n,C as t};
package/dist/ImageGif.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./rolldown-runtime-BeavJI0R.cjs");const e=require("./ImageGif-BSVyqEv6.cjs");exports.ImageGif=e.ImageGif,exports.RichTextImageGif=e.RichTextImageGif;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("./rolldown-runtime-BeavJI0R.cjs");const e=require("./ImageGif-3dik7FeU.cjs");exports.ImageGif=e.ImageGif,exports.RichTextImageGif=e.RichTextImageGif;
package/dist/ImageGif.js CHANGED
@@ -1 +1 @@
1
- import{n as a,t as m}from"./ImageGif-BvthT-Lc.js";export{m as ImageGif,a as RichTextImageGif};
1
+ import{n as a,t as m}from"./ImageGif-D_kKkBU5.js";export{m as ImageGif,a as RichTextImageGif};