+import I,{forwardRef as T,useEffect as N,useImperativeHandle as E,useRef as A}from"react";function h(r){return typeof r=="object"&&r.type==="tag"}function M(r){return{type:"tag",attrs:{...r.attrs}}}function l(r){let a=[];return r.forEach(t=>{var i;t.type==="paragraph"&&(a.push([]),(i=t==null?void 0:t.content)==null||i.forEach(e=>{var p,s;e.type==="text"&&e.text&&((p=a.at(-1))==null||p.push(e.text)),e.type==="tag"&&((s=a.at(-1))==null||s.push(M(e)))}))}),a}function f(r){let a=[];return r.forEach((t,i)=>{Array.isArray(a[i])||a.push({type:"paragraph",content:[]});let e=a.at(-1);typeof t=="string"&&(e!=null&&e.content)&&e.content.push({type:"text",text:t}),!Array.isArray(t)&&h(t)&&(e!=null&&e.content)&&e.content.push({type:"tag",attrs:{...t.attrs}}),Array.isArray(t)&&t.forEach(p=>{typeof p=="string"&&(e!=null&&e.content)&&e.content.push({type:"text",text:p}),typeof p=="object"&&p.type==="tag"&&(e!=null&&e.content)&&e.content.push({type:"tag",attrs:{...p.attrs}})})}),a}import{EditorContent as C,useEditor as O}from"@tiptap/react";import R from"@tiptap/extension-document";import J from"@tiptap/extension-paragraph";import P from"@tiptap/extension-text";import S from"@tiptap/extension-placeholder";import{mergeAttributes as V,Node as b}from"@tiptap/core";var d=b.create({name:"tag",group:"inline",inline:!0,atom:!0,selectable:!1,parseHTML(){return[{tag:`span[data-type="${this.name}"]`}]},renderHTML({HTMLAttributes:r}){return["span",V(r)]},addNodeView:()=>({node:r,extension:a})=>{let t=document.createElement("span");t.className="mi-tag",t.innerHTML=r.attrs.label,t.setAttribute("data-type","tag"),r.attrs.id&&t.setAttribute("data-id",r.attrs.id),a.options.tagClassName&&t.classList.add(a.options.tagClassName),r.attrs.class&&(Array.isArray(r.attrs.class)?r.attrs.class.forEach(e=>{t.classList.add(e)}):t.classList.add(r.attrs.class)),r.attrs.style&&Object.assign(t.style,r.attrs.style);let i=document.createElement("span");return i.appendChild(t),i.appendChild(document.createTextNode("\u200B")),{dom:i}},addAttributes(){return{label:void 0,id:void 0,class:void 0,style:void 0}}});var L=T((r,a)=>{let{onChange:t,value:i,placeholder:e,readonly:p=!1,tagClassName:s,editorOptions:g,...m}=r,u=A(null),n=O({editorProps:{attributes:{class:"mix-input"}},extensions:[R,J.configure({HTMLAttributes:{class:"mi-paragraph"}}),P,S.configure({placeholder:e}),d.configure({tagClassName:s})],onUpdate:({editor:o})=>{var c;t==null||t(l(((c=o==null?void 0:o.getJSON())==null?void 0:c.content)||[]))},...g}),y=o=>{n==null||n.chain().focus().insertContent(o).run()};return N(()=>{let o=f(i);o.length===0&&(o=[{type:"paragraph"}]),JSON.stringify(o)!==JSON.stringify(n==null?void 0:n.getJSON().content)&&(console.log({updatedValueFromParent:o,value:n==null?void 0:n.getJSON().content}),n==null||n.commands.setContent(o))},[i]),E(a,()=>({element:u.current,editor:n,insertContent:y})),I.createElement(C,{editor:n,innerRef:u,...m})}),x=L;var X=x;export{X as default};
0 commit comments