Files
sigpro-ui/dist/sigpro-ui.editor.esm.min.js
natxocc e7e3def5ed
All checks were successful
Deploy Docs to Synology / deploy (push) Successful in 8s
MOdular
2026-05-05 22:44:16 +02:00

8 lines
9.2 KiB
JavaScript

import{$ as y,isFunc as W,h as o}from"./sigpro.js";import{$ as A,watch as J,h as z,mount as M,when as P,each as X,isFunc as Z}from"./sigpro.js";var w=(u)=>typeof u==="function"?u():u;var R=(...u)=>u.filter(Boolean).join(" ").trim();var N=A("en");var c=(u,g)=>(x)=>z(u,{...x,class:`${g} ${x?.class||""}`.trim()}),t=(u,g)=>(x,b)=>z(u,{...x,class:`${g} ${x?.class||""}`.trim()},b),E=(u,g,x)=>(b)=>z(u,{type:x,...b,class:`${g} ${b?.class||""}`.trim()}),S=t("div","alert");var Y=t("div","avatar-group -space-x-6"),$=t("span","badge"),B=t("div","breadcrumbs"),H=t("button","btn"),I=t("div","card"),V=t("div","card-title"),D=t("div","card-body"),m=t("div","card-actions"),F=t("div","carousel"),v=t("div","carousel-item"),h=t("div","chat"),p=t("div","chat-bubble"),nn=t("div","chat-footer"),on=t("div","chat-header");var tn=E("input","checkbox","checkbox"),bn=t("div","drawer");var sn=t("div","drawer-content"),en=t("div","drawer-side");var rn=c("div","divider"),un=t("div","dropdown");var gn=t("kbd","kbd"),xn=t("ul","list");var ln=t("span","loading loading-spinner"),an=t("div","navbar"),fn=c("progress","progress");var dn=E("input","radio","radio"),kn=E("input","range","range"),cn=t("div","rating");var yn=c("div","skeleton"),Ln=c("span","skeleton skeleton-text"),Tn=t("div","stack"),En=t("div","stats shadow"),Cn=t("ul","steps");var _n=t("label","swap");var zn=t("div","swap-on"),Un=t("div","swap-off"),jn=t("table","table"),wn=c("textarea","textarea");var Rn=t("ul","timeline"),On=E("input","toggle","checkbox");var An=(u)=>{let{value:g,class:x}=u,b=null,f=null,l=y(!1),i=y(""),U=y(0),C=y(0),d=y(!1),O=["\uD83D\uDE00","\uD83D\uDE0A","\uD83D\uDE09","\uD83E\uDDD0","\uD83D\uDE2E","\uD83E\uDD14","\uD83D\uDE05","\uD83D\uDE02","\uD83D\uDE0D","\uD83D\uDE18","\uD83E\uDD70","\uD83D\uDC4D","\uD83D\uDC4E","\uD83D\uDC4C","\uD83E\uDD1D","\uD83E\uDD1E","\uD83D\uDC4B","\uD83D\uDC4F","\uD83D\uDE4C","\uD83D\uDE4F","\uD83D\uDCAA","☝️","\uD83D\uDC47","\uD83D\uDC48","\uD83D\uDC49","\uD83D\uDD95","✅","⚠️","\uD83D\uDE80","\uD83D\uDCE2","✉️","❤️"],L=()=>{let n=window.getSelection();if(n.getRangeAt&&n.rangeCount)f=n.getRangeAt(0)},K=()=>{if(f){let n=window.getSelection();n.removeAllRanges(),n.addRange(f)}},_=()=>{if(C(C()+1),b)U(b.innerText.length)},T=()=>{if(!b)return;let n=b.innerHTML;if(W(g))g(n);else u.onchange?.(n);_()},s=(n,e=null)=>{if(!b)return;if(b.focus(),f)K();document.execCommand(n,!1,e),f=null,T()},Q=(n)=>{let e=document.createElement("div");e.style="position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:9999;display:flex;align-items:center;justify-content:center;cursor:zoom-out;";let r=document.createElement("img");r.src=n,r.style="max-width:95%;max-height:95%;box-shadow:0 0 30px rgba(0,0,0,0.5);border-radius:4px;",e.onclick=()=>document.body.removeChild(e),e.appendChild(r),document.body.appendChild(e)},j=(n)=>{if(!n)return;let e=new FileReader;e.onload=(r)=>{if(n.type.startsWith("image/")){let a=`<div style="display:inline-block; resize:both; overflow:hidden; vertical-align:bottom; line-height:0; width:200px; height:auto; border:1px dashed #ccc; padding:2px; cursor:pointer;" class="resizable-img-container"><img src="${r.target.result}" style="width:100%; height:100%; object-fit:contain; pointer-events:none;"></div>&nbsp;`;s("insertHTML",a)}else{let a=`<a href="${r.target.result}" download="${n.name}" contenteditable="false" style="display:inline-flex; align-items:center; gap:5px; padding:4px 8px; border:1px solid #ccc; border-radius:4px; background:#f9f9f9; text-decoration:none; color:#333; font-size:12px; margin:2px; cursor:pointer;"><span class="icon-[lucide--paperclip] w-3 h-3"></span>${n.name}</a>&nbsp;`;s("insertHTML",a)}},e.readAsDataURL(n)},k=(n,e=null)=>{if(C(),!b||l())return!1;try{if(n==="formatBlock"){let r=window.getSelection().getRangeAt(0).commonAncestorContainer;while(r&&r!==b){if(r.nodeType===1&&r.tagName===e)return!0;r=r.parentNode}return!1}return document.queryCommandState(n)}catch(r){return!1}},q=o("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200 sticky top-0 z-20"},[o("div",{class:"flex flex-wrap gap-1 flex-1 items-center"},[o("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${k("bold")?"btn-active bg-primary/20":""}`,onclick:()=>s("bold")},o("span",{class:"icon-[lucide--bold]"})),o("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${k("italic")?"btn-active bg-primary/20":""}`,onclick:()=>s("italic")},o("span",{class:"icon-[lucide--italic]"})),o("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${k("underline")?"btn-active bg-primary/20":""}`,onclick:()=>s("underline")},o("span",{class:"icon-[lucide--underline]"})),o("input",{type:"color",class:"w-5 h-5 p-0 border-0 bg-transparent cursor-pointer",oninput:(n)=>s("foreColor",n.target.value)}),o("span",{class:"w-px h-5 bg-base-300 mx-1"}),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("justifyLeft")},o("span",{class:"icon-[lucide--align-left]"})),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("justifyCenter")},o("span",{class:"icon-[lucide--align-center]"})),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("justifyRight")},o("span",{class:"icon-[lucide--align-right]"})),o("span",{class:"w-px h-5 bg-base-300 mx-1"}),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("insertUnorderedList")},o("span",{class:"icon-[lucide--list]"})),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("insertOrderedList")},o("span",{class:"icon-[lucide--list-ordered]"})),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("outdent")},o("span",{class:"icon-[lucide--indent-decrease]"})),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("indent")},o("span",{class:"icon-[lucide--indent-increase]"})),o("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${k("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>s("formatBlock",k("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},o("span",{class:"icon-[lucide--quote]"})),o("span",{class:"w-px h-5 bg-base-300 mx-1"}),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let n=window.prompt("URL:");if(n)s("createLink",n)}},o("span",{class:"icon-[lucide--link]"})),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>{let n=document.createElement("input");n.type="file",n.onchange=(e)=>j(e.target.files[0]),n.click()}},o("span",{class:"icon-[lucide--paperclip]"})),o("div",{class:"relative"},[o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:(n)=>{n.stopPropagation(),L(),d(!d())}},o("span",{class:"icon-[lucide--smile]"})),o("div",{class:"absolute top-full left-0 mt-1 p-2 bg-base-100 border border-base-300 shadow-xl rounded-box w-52 z-50 flex flex-wrap gap-1",style:()=>d()?"display:flex":"display:none"},O.map((n)=>o("span",{class:"cursor-pointer hover:bg-base-200 p-1 rounded text-lg",onclick:(e)=>{e.stopPropagation(),s("insertText",n),d(!1)}},n)))]),o("span",{class:"w-px h-5 bg-base-300 mx-1"}),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("undo")},o("span",{class:"icon-[lucide--undo-2]"})),o("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>s("redo")},o("span",{class:"icon-[lucide--redo-2]"}))]),o("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${l()?"btn-active":""}`,onclick:()=>{if(!l())i(b?.innerHTML||"");else if(b)b.innerHTML=i(),T();l(!l())}},o("span",{class:"icon-[lucide--code-2]"}))]);if(typeof document<"u"&&!document.getElementById("editor-styles")){let n=document.createElement("style");n.id="editor-styles",n.textContent=`
[contenteditable="true"] div,
[contenteditable="true"] p {
margin: 0;
padding: 0;
}
`,document.head.appendChild(n)}return o("div",{class:R("border border-base-300 rounded-box bg-base-100 overflow-hidden shadow-sm flex flex-col",x)},[q,o("div",{class:"relative flex-1 flex flex-col",onclick:()=>d(!1)},[o("div",{ref:(n)=>{if(!b&&n)b=n,n.innerHTML=w(g)||"",document.execCommand("defaultParagraphSeparator",!1,"br"),n.addEventListener("click",(e)=>{let r=e.target.closest(".resizable-img-container");if(r){let a=r.querySelector("img");if(a)Q(a.src)}})},style:()=>`min-height:22rem;${l()?"display:none":""}`,class:"p-4 outline-none text-base-content leading-relaxed [&>div]:m-0 [&>p]:m-0 [&>div]:min-h-[1em] [&_.resizable-img-container]:hover:border-primary [&_blockquote]:border-l-4 [&_blockquote]:border-base-300 [&_blockquote]:pl-4 [&_blockquote]:italic [&_ul]:list-disc [&_ul]:pl-8 [&_ol]:list-decimal [&_ol]:pl-8",contenteditable:"true",oninput:T,onkeydown:(n)=>{if(n.key==="Tab")n.preventDefault(),s("indent")},onkeyup:()=>{_(),L()},onclick:(n)=>{_(),L(),n.stopPropagation()},onmouseup:()=>{T(),L()},onpaste:(n)=>{n.preventDefault();let e=n.clipboardData.getData("text/plain");s("insertText",e)},ondragover:(n)=>n.preventDefault(),ondrop:(n)=>{n.preventDefault(),j(n.dataTransfer.files[0])}}),o("textarea",{class:"w-full flex-1 min-h-[22rem] p-4 outline-none font-mono text-sm bg-base-200 border-0",style:()=>l()?"":"display:none",value:i,oninput:(n)=>{if(i(n.target.value),b)b.innerHTML=n.target.value;u.onchange?.(n.target.value)}})]),o("div",{class:"px-3 py-1 border-t border-base-300 bg-base-100/50 text-[10px] text-right text-base-content/60 italic"},[o("span",()=>`${U()}`)])])};export{An as Editor};