1 line
4.2 KiB
JavaScript
1 line
4.2 KiB
JavaScript
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[896],{2896:(e,t,s)=>{s.r(t),s.d(t,{RichTextEditor:()=>g});var n=s(5155),i=s(9372),l=s(9448),r=s(53),a=s(2115),o=s(878),c=s(9201),d=s(8701),u=s(9021),h=s(5814),x=s(4113),m=s(3243),f=s(2921),p=s(3312);function g(e){let{content:t,onChange:s,placeholder:g,maxLength:b}=e,j=(0,i.hG)({immediatelyRender:!1,extensions:[l.A.configure({link:!1}),r.Ay.configure({openOnClick:!1,HTMLAttributes:{class:"text-blue-600 hover:underline cursor-pointer"}})],content:t,onUpdate:e=>{let{editor:t}=e,n=t.getHTML(),i=t.getText();b&&i.length>b||s(n)},editorProps:{attributes:{class:"prose prose-sm max-w-none focus:outline-none min-h-[200px] px-3 py-2"}}});(0,a.useCallback)(e=>{e.preventDefault();let t=e.currentTarget.getAttribute("href");if(t){if(t.startsWith("http://")||t.startsWith("https://")){let e=new URL(t).hostname;confirm("Вы переходите на внешний ресурс: ".concat(e,"\n\n")+"Ссылка: ".concat(t,"\n\n")+"Вы уверены, что хотите перейти?")&&window.open(t,"_blank","noopener,noreferrer")}else window.open(t,"_blank")}},[]);let k=(0,a.useCallback)(()=>{if(!j)return;let e=j.getAttributes("link").href,t=window.prompt("Введите URL ссылки:",e||"");if(null!==t){if(""===t){j.chain().focus().extendMarkRange("link").unsetLink().run();return}j.chain().focus().extendMarkRange("link").setLink({href:t}).run()}},[j]),v=(0,a.useCallback)(()=>{j&&j.chain().focus().extendMarkRange("link").unsetLink().run()},[j]);if((0,a.useEffect)(()=>{j&&t!==j.getHTML()&&j.commands.setContent(t)},[t,j]),!j)return null;let w=j.getText().length,N=b&&w>b;return(0,n.jsxs)("div",{className:"border rounded-md overflow-hidden",children:[(0,n.jsxs)("div",{className:"border-b bg-muted/50 p-2 flex flex-wrap gap-1",children:[(0,n.jsx)(p.$,{type:"button",variant:j.isActive("bold")?"default":"ghost",size:"sm",onClick:()=>j.chain().focus().toggleBold().run(),title:"Жирный (Ctrl+B)",children:(0,n.jsx)(o.A,{className:"h-4 w-4"})}),(0,n.jsx)(p.$,{type:"button",variant:j.isActive("italic")?"default":"ghost",size:"sm",onClick:()=>j.chain().focus().toggleItalic().run(),title:"Курсив (Ctrl+I)",children:(0,n.jsx)(c.A,{className:"h-4 w-4"})}),(0,n.jsx)("div",{className:"w-px h-6 bg-border mx-1"}),(0,n.jsx)(p.$,{type:"button",variant:j.isActive("bulletList")?"default":"ghost",size:"sm",onClick:()=>j.chain().focus().toggleBulletList().run(),title:"Маркированный список",children:(0,n.jsx)(d.A,{className:"h-4 w-4"})}),(0,n.jsx)(p.$,{type:"button",variant:j.isActive("orderedList")?"default":"ghost",size:"sm",onClick:()=>j.chain().focus().toggleOrderedList().run(),title:"Нумерованный список",children:(0,n.jsx)(u.A,{className:"h-4 w-4"})}),(0,n.jsx)("div",{className:"w-px h-6 bg-border mx-1"}),j.isActive("link")?(0,n.jsx)(p.$,{type:"button",variant:"default",size:"sm",onClick:v,title:"Убрать ссылку",children:(0,n.jsx)(h.A,{className:"h-4 w-4"})}):(0,n.jsx)(p.$,{type:"button",variant:"ghost",size:"sm",onClick:k,title:"Добавить ссылку",children:(0,n.jsx)(x.A,{className:"h-4 w-4"})}),(0,n.jsx)("div",{className:"w-px h-6 bg-border mx-1"}),(0,n.jsx)(p.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>j.chain().focus().undo().run(),disabled:!j.can().undo(),title:"Отменить (Ctrl+Z)",children:(0,n.jsx)(m.A,{className:"h-4 w-4"})}),(0,n.jsx)(p.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>j.chain().focus().redo().run(),disabled:!j.can().redo(),title:"Повторить (Ctrl+Y)",children:(0,n.jsx)(f.A,{className:"h-4 w-4"})})]}),(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsx)(i.$Z,{editor:j}),j.isEmpty&&g&&(0,n.jsx)("div",{className:"absolute top-2 left-3 text-muted-foreground pointer-events-none",children:g})]}),b&&(0,n.jsxs)("div",{className:"border-t px-3 py-2 text-xs flex justify-between",children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:["Поддерживаются: ",(0,n.jsx)("strong",{children:"жирный"}),", ",(0,n.jsx)("em",{children:"курсив"}),", списки, ссылки"]}),(0,n.jsxs)("span",{className:N?"text-destructive font-medium":"text-muted-foreground",children:[w," / ",b," символов"]})]})]})}}}]); |