@chenyomi/leafer-htmltext-edit 2.4.1 → 2.4.2
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.
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -2
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var editor=require('@leafer-in/editor'),leaferUi=require('leafer-ui'),S=require('crypto-js'),core=require('@leafer-ui/core'),w=require('quill');require('quill/dist/quill.core.css');var font=require('quill/formats/font'),html=require('@leafer-in/html');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var S__default=/*#__PURE__*/_interopDefault(S);var w__default=/*#__PURE__*/_interopDefault(w);var b=(t,i,n,e)=>{for(var o=i,s=t.length-1,a;s>=0;s--)(a=t[s])&&(o=(a(o))||o);return o};function P(t){let e=new DOMParser().parseFromString(t,"text/html").body;function o(r){if(r.nodeType===Node.TEXT_NODE){let l=r.textContent;return l?Array.from(l).map(u=>document.createTextNode(u)):[]}else if(r.nodeType===Node.ELEMENT_NODE){let l=[];for(let d of Array.from(r.childNodes))o(d).forEach((f,h)=>{let g=r.cloneNode(false);g.appendChild(f),l.push(g);});return l}return []}let s=[];for(let r of Array.from(e.childNodes)){let l=o(r);s.push(...l);}let a=document.createElement("div");return s.forEach((r,l)=>{a.appendChild(r);}),a.innerHTML}var k="LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxaUFnU1hWM3dMKzh2YkZ2OVkwQwpEN1dBUjhPa2I4bjlmTWxpQjF3enZodTBrdVdZUWEvMUxvVDhHWVh6WWlRQVFBRk9zTTA0MGp2dlNRT2hRSWpiCjRaYXZ1NHUvWVA5bElPYjFKYnZnYkFoYVVOQnphL0l2UmFnaFlKYTJBc1cyRVhnZkVrdmMyUENNMS9zbVlFNnoKNjZiUmx1dnREK3FJZkpLVCtUUXJRRmp5TnNTZ0c2Z2R4MThrZTRMSStBejFPcklMbUsyMHlBU2tlRXpYT1BTVAplM3RNYThleHpZdmUzV0wyNHRHUHg5WHNvN1JyUEl1elZlajh0NDYrZ0c1Y0pQaVh0N1lqa0V2NEJOUUt5eUpoCkltOVRJdVZ6clFpa2NJNE14dExNSGdUMHpLcU9ZZ1NzcmEvTHNDd2ZOdzdtYWxITkU2c21YZWYyQ2E5RGhZODQKS1FJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==";function Z(t){let i=t.replace(/-----BEGIN PUBLIC KEY-----/,"").replace(/-----END PUBLIC KEY-----/,"").replace(/\s/g,"");return _(i)}function _(t){let i=atob(t),n=new Uint8Array(i.length);for(let e=0;e<i.length;e++)n[e]=i.charCodeAt(e);return n.buffer}async function J(){let t=atob(k),i=Z(t);return await crypto.subtle.importKey("spki",i,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},false,["verify"])}async function z(t,i){try{let n=await J(),e=new TextEncoder().encode(t),o=_(i);return await crypto.subtle.verify("RSASSA-PKCS1-v1_5",n,o,e)}catch{return false}}var R="c19496eb17719960b6c3cebab0ef5eddfce5d0315ab8c5af86a52fbda434fea9",V="ce1e3e8974f1392b3c5803b34ecf659f";function $(t){try{let i=S__default.default.enc.Hex.parse(R),n=S__default.default.enc.Hex.parse(V),o=S__default.default.AES.decrypt(t,i,{iv:n,mode:S__default.default.mode.CBC,padding:S__default.default.pad.Pkcs7}).toString(S__default.default.enc.Utf8);if(!o)throw new Error("Decryption resulted in empty string - invalid ciphertext or wrong key");return o}catch(i){throw i}}async function j(t){try{let i=atob(t),n=JSON.parse(i);if(!n.data||!n.signature||!await z(n.data,n.signature))return null;let o=n.data;if(n.encrypted)try{o=$(n.data);}catch{return null}return JSON.parse(o)}catch{return null}}function X(t){if(!t||t.length===0)return true;let i=window.location.hostname;if(i==="localhost"||i==="127.0.0.1")return true;let n=t.some(e=>{if(e.startsWith("*.")){let o=e.slice(2);return i.endsWith(o)}return i===e});return n}function G(t){if(!t)return true;try{let i=new Date(t),n=new Date;return n>=i?!1:(Math.ceil((i.getTime()-n.getTime())/(1e3*60*60*24))<=7,!0)}catch{return false}}function tt(t){if(!t)return true;try{return !(new Date(t)>new Date)}catch{return true}}async function B(t){try{let i=await j(t);return i?tt(i.issueDate)?X(i.domains)?G(i.expireDate)?{valid:!0,data:i}:{valid:!1,error:"License has expired",data:i}:{valid:!1,error:`License not valid for domain: ${window.location.hostname}`,data:i}:{valid:!1,error:"Invalid license issue date",data:i}:{valid:!1,error:"Invalid license key or signature verification failed"}}catch{return {valid:false,error:"ERR"}}}var E=null,v=null,m=0;async function et(t){let i=await B(t);return i.valid&&i.data?(E=t,v=i.data,m=1,true):(E=null,v=null,m=0,false)}async function I(){return !E||!m?0:(m=(await B(E)).valid?1:0,m||(v=null),m)}function U(){return m?v:null}var p=async(t,i,n)=>{let{scaleX:e,scaleY:o}=t.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),a=document.querySelector("#textInnerEditor");if(a&&t.data.textData?.fontSize&&(a.style.fontSize=`${t.data.textData.fontSize*s}px`),a&&t.data.textData?.lineHeight&&(a.style.lineHeight=t.data.textData.lineHeight),a&&t.data.textData?.letterSpacing&&(a.style.letterSpacing=`${t.data.textData.letterSpacing}px`),a&&t.data.textData?.textShadow?a.style.textShadow=t.data.textData.textShadow:a.style.textShadow="none",a&&t.data.textData?.textStroke?(a.style.paintOrder="stroke fill",a.style.WebkitTextStroke=nt(t.data.textData.textStroke,s)):(a.style.paintOrder="unset",a.style.WebkitTextStroke="unset"),a&&t.data.textData?.alignContent){let d=a.querySelector(".ql-editor");d.style.alignContent=t.data.textData.alignContent;}let l=c.getQuill().getSemanticHTML();if(l==="<p></p>"){t.text.includes("<style>@font-face")?t.text=t.text.split("</style>")[0]+"</style>":t.text="";return}if(t.text.includes("<style>@font-face")){let d=t.text.split("</style>")[0];if(n&&!d.includes(n)){let u=`@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+u+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=d+"</style>"+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else if(i&&n){let d=`<style>@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);},M=(t,i,n=20.67,e=1.5,o=0,s="none",a="start",r="unset")=>{let{scaleX:l,scaleY:d}=t.worldTransform,u=Math.max(Math.abs(l),Math.abs(d)),f=document.createElement("div");f.innerHTML=i;let h={fontSize:`${n}px`,lineHeight:e,letterSpacing:`${o}px`,textShadow:s};r!=="unset"?(h.paintOrder="stroke fill",h.WebkitTextStroke=r):(h.paintOrder="unset",h.WebkitTextStroke="unset"),f.querySelectorAll("p,ol,ul").forEach(Y=>{Object.assign(Y.style,h);});let g=f.innerHTML;/<p\b[^>]*><\/p>/.test(g)&&(g=g.replace(/<p\b([^>]*)><\/p>/g,"<p$1> </p>")),/"/.test(g)&&(g=g.replace(/"/g,""));let x;document.querySelector("#textInnerEditor");let y=c.getQuill(),D=Number((y.scroll.domNode.scrollHeight/u).toFixed(0));Number((y.scroll.domNode.scrollWidth/u).toFixed(0));["center","end"].includes(t.data.textData.alignContent)?t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`:t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`;let L="<style>p{margin:0;}sub,sup{font-size:63%;}.ql-ui{position:absolute}ol,ul{counter-reset:list-0;padding-left:1.5em;margin:0}ol>li,ul>li{counter-increment:list-0;list-style-type:none;position:relative;padding-left:0;margin:0}ol>li::before{content:counter(list-0,decimal) '. ';position:absolute;left:-1.5em;width:1.2em;text-align:right}ul>li::before{content:'\u2022';position:absolute;left:-1.5em;width:1.2em;text-align:right}li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-left{text-align:left}.ql-align-justify{text-align:justify}</style>",T="";return t.parent.children[0].tag.includes("Shape")?T=L+`<div style="width: ${t.parent.width}px;height: ${t.parent.height}px;overflow-wrap:break-word;word-break:break-all;align-content:center;">${g}</div>`:t.data.canChangeBox?T=L+`<div style="width: ${t.parent.width}px;height:${x};overflow-wrap:break-word;word-break:break-all;align-content:${a};">${g}</div>`:t.data.textData.italic?T=L+g:T=L+`<div style="overflow-wrap:break-word;word-break:break-all;">${g}</div>`,T},At=(t,i,n)=>{let e=c.getQuill(),{editor:o,canvas:s}=c.getCanvas();if(!e)return;i===0&&(i="0");let a=e.selection.savedRange;c.dateEdit(async r=>{if(r.tag==="HTMLText")if(t==="font")o.innerEditing?(a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null)):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null));else if(t==="fontSize")r.data.textData[t]=i,c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),p(r,n??null);else if(t==="textCase"){if(o.innerEditing){let l=e.getText(a.index,a.length),d=e.getFormat(a.index,a.length);e.deleteText(a.index,a.length);let u;l===l.toUpperCase()&&/[A-Z]/.test(l)?u=l.toLowerCase():(l===l.toLowerCase()&&/[a-z]/.test(l),u=l.toUpperCase()),e.insertText(a.index,u,d),a&&o.innerEditing&&e.setSelection(a.index,a.length);}}else if(t==="script"){let l="sub";i==="super"&&(l="sup"),o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,e.getFormat(a).script===i?false:l):e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l),p(r));}else if(t==="align")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing?e.format(t,i):e.formatLine(0,e.getLength(),t,i),p(r);else if(t==="alignContent")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="lineHeight"||t==="letterSpacing")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="color")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.tag==="HTMLText"?p(r):r.parent.findOne("HTMLText")&&p(r.parent.findOne("HTMLText"));else if(t==="textShadow"||t==="textStroke")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="list"){if(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing){let[l]=e.getLine(a?.index||0);l.formats().list?e.format(t,false):e.format(t,i);}else {let[l]=e.getLine(a?.index||0);l.formats().list?e.formatLine(0,e.getLength(),t,false):e.formatLine(0,e.getLength(),t,i);}p(r);}else if(t==="textVertical"){let l=U();if(l&&l?.features?.length&&l?.features?.includes("textVertical")){e.clipboard.dangerouslyPasteHTML(r.text);let d=e.getSemanticHTML();e.clipboard.dangerouslyPasteHTML(P(d)),r.data.textData.align="center",p(r);}}else o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,i===void 0?!e.getFormat(a)[t]:i):e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i),p(r));},1);};function nt(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}var C=class extends editor.EditTool{constructor(n){super(n);this.quill=null;this.isUpdatingPoints=false;this.curveAmount=0;this.eventIds=[],this.updateBoxDebounced=this.debounce(e=>{p(e);},300);}get tag(){return "TextEditTool"}debounce(n,e){let o=null;return((...s)=>{o!==null&&window.clearTimeout(o),o=window.setTimeout(()=>n.apply(this,s),e);})}addEvent(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s)),r=document.querySelector("#textInnerEditor"),{style:l}=r;this.eventIds=[n.on_(editor.EditorScaleEvent.SCALE,d=>{e.data.canChangeBox||(e.data.canChangeBox=true),e.data.canChangeBox&&(l.width=e.parent.width*a+"px",l.height="auto");let u=1;e.parent.tag==="HtmlText"&&e.parent.lockRatio&&e.data?.baseSize?.width&&(u=e.parent.width/e.data?.baseSize.width,e.data.textData.fontSize=e.data.textData.fontSize*u),e.data?.baseSize?.width&&(e.data.baseSize.width=e.parent.width),this.updateBoxDebounced(e);}),n.on_(leaferUi.PointerEvent.DOUBLE_TAP,()=>{e.parent.locked||n.openInnerEditor(e,true);})];}onLoad(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s));this.addEvent(),this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(e.text);let r=document.querySelector("#textInnerEditor"),{style:l}=r;e.data.canChangeBox?(l.width=e.parent.width*a+"px",l.height=e.parent.height*a+"px"):(l.width="auto",l.height="auto");}updateChangeBoxBound(n){n&&n.set({width:n.__layout.boxBounds.width,height:n.__layout.boxBounds.height});}onUpdate(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");e&&this.curveAmount!=e.curveAmount&&this.isUpdatingPoints;}onUnload(){let{editor:n}=c.getCanvas();n.off_(this.eventIds);}onDestroy(){}};C=b([editor.registerEditTool()],C);var H=class extends editor.InnerEditor{constructor(){super(...arguments);this.config={selectAll:false};this.eventIds=[];this.selectText=void 0;this.inBody=void 0;this.isHTMLText=void 0;this.n=void 0;this.quill=null;this.isComposing=false;this.onInput=async()=>{let{editDom:n}=this;p(this.editTarget);};this.isUpdatingPoints=false;}get tag(){return "TextEditor"}onLoad(){let{editor:n}=this,{config:e}=n.app,o=this.editTarget,{scaleX:s,scaleY:a}=o.worldTransform,r=Math.max(Math.abs(s),Math.abs(a));this.isHTMLText=!(o instanceof Text),this.n=e.keyEvent,e.keyEvent=false;let l=this.editDom=document.querySelector("#textInnerEditor"),{style:d}=l;if(d.visibility="visible",o.data.canChangeBox?(d.width=o.parent.width*r+"px",d.height=o.parent.height*r+"px"):(d.width="auto",d.height="auto"),d.outline="solid #8499EF",o.data.textData.fontSize&&(l.style.fontSize=`${o.data.textData.fontSize*r}px`),o.data.textData.lineHeight&&(l.style.lineHeight=o.data.textData.lineHeight),o.data.textData.letterSpacing&&(l.style.letterSpacing=`${o.data.textData.letterSpacing}px`),o.data.textData.textShadow?l.style.textShadow=O(o.data.textData.textShadow,r):l.style.textShadow="none",o.data.textData.textStroke?(l.style.paintOrder="stroke fill",l.style.WebkitTextStroke=O(o.data.textData.textStroke,r)):(l.style.paintOrder="unset",l.style.WebkitTextStroke="unset"),o.data.textData.alignContent){let u=l.querySelector(".ql-editor");u.style.alignContent=`${o.data.textData.alignContent}`;}this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(o.text),o.parent.children[0].tag.includes("Shape")?(d.width=o.parent.width*r+"px",d.left="0px",this.quill.formatLine(0,this.quill.getLength(),"align","center")):this.quill.setSelection(0,this.quill.getLength()-1),this.quill.on("text-change",this.onInput),this.eventIds=[n.app.on_(core.PointerEvent.DOWN,u=>{let{target:f}=u.origin,h=false;for(;f;)f===l&&(h=true),f=f.parentElement;h||(n.closeInnerEditor(),n.cancel());})];}onUpdate(){let{editTarget:n}=this,{scaleX:e,scaleY:o}=n.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),{width:a,height:r}=n.parent.__local;a*=s,r*=s;let{x:l,y:d}=this.inBody?n.app.clientBounds:n.app.tree.clientBounds,{a:u,b:f,c:h,d:g,e:x,f:F}=new core.Matrix(n.worldTransform).scale(1/s).translateInner(0,0),{style:y}=this.editDom;y.transform=`matrix(${u},${f},${h},${g},${x},${F})`,y.left=l+"px",y.top=d+"px",n.set({visible:false});}onUnload(){let{editTarget:n,editor:e,editDom:o}=this;n&&(this.onInput(),e.app&&(e.app.config.keyEvent=this.n),e.off_(this.eventIds),this.editDom.style.visibility="hidden",this.eventIds=[]),n.parent&&n.parent.name=="Text"&&n.parent.children.some(s=>s.tag==="Box")?(n.parent.findOne("Box").opacity=1,n.visible=false):n.set({visible:true}),this.quill.getLength()===1&&n.parent.name==="Text"&&n.parent.remove(),this.quill.off("text-change",this.onInput);}};H=b([editor.registerInnerEditor()],H);function O(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}function A(t,{insertAt:i}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",i==="top"&&n.firstChild?n.insertBefore(e,n.firstChild):n.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t));}A(`.ql-editor{padding:0!important;line-height:unset!important;overflow:unset!important;outline:0}.ql-container{font-family:unset!important}.ql-editor p{margin:0!important}.ql-editor sub,.ql-editor sup{font-size:63%}.ql-editor sup{top:-.58em}.ql-editor sub{bottom:-.38em}.ql-editor ol{padding-left:0!important}
|
|
1
|
+
'use strict';var editor=require('@leafer-in/editor'),core=require('@leafer-ui/core'),S=require('crypto-js'),w=require('quill');require('quill/dist/quill.core.css');var font=require('quill/formats/font'),html=require('@leafer-in/html');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var S__default=/*#__PURE__*/_interopDefault(S);var w__default=/*#__PURE__*/_interopDefault(w);var b=(t,i,n,e)=>{for(var o=i,s=t.length-1,a;s>=0;s--)(a=t[s])&&(o=(a(o))||o);return o};function P(t){let e=new DOMParser().parseFromString(t,"text/html").body;function o(r){if(r.nodeType===Node.TEXT_NODE){let l=r.textContent;return l?Array.from(l).map(u=>document.createTextNode(u)):[]}else if(r.nodeType===Node.ELEMENT_NODE){let l=[];for(let d of Array.from(r.childNodes))o(d).forEach((f,h)=>{let g=r.cloneNode(false);g.appendChild(f),l.push(g);});return l}return []}let s=[];for(let r of Array.from(e.childNodes)){let l=o(r);s.push(...l);}let a=document.createElement("div");return s.forEach((r,l)=>{a.appendChild(r);}),a.innerHTML}var k="LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxaUFnU1hWM3dMKzh2YkZ2OVkwQwpEN1dBUjhPa2I4bjlmTWxpQjF3enZodTBrdVdZUWEvMUxvVDhHWVh6WWlRQVFBRk9zTTA0MGp2dlNRT2hRSWpiCjRaYXZ1NHUvWVA5bElPYjFKYnZnYkFoYVVOQnphL0l2UmFnaFlKYTJBc1cyRVhnZkVrdmMyUENNMS9zbVlFNnoKNjZiUmx1dnREK3FJZkpLVCtUUXJRRmp5TnNTZ0c2Z2R4MThrZTRMSStBejFPcklMbUsyMHlBU2tlRXpYT1BTVAplM3RNYThleHpZdmUzV0wyNHRHUHg5WHNvN1JyUEl1elZlajh0NDYrZ0c1Y0pQaVh0N1lqa0V2NEJOUUt5eUpoCkltOVRJdVZ6clFpa2NJNE14dExNSGdUMHpLcU9ZZ1NzcmEvTHNDd2ZOdzdtYWxITkU2c21YZWYyQ2E5RGhZODQKS1FJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==";function Z(t){let i=t.replace(/-----BEGIN PUBLIC KEY-----/,"").replace(/-----END PUBLIC KEY-----/,"").replace(/\s/g,"");return _(i)}function _(t){let i=atob(t),n=new Uint8Array(i.length);for(let e=0;e<i.length;e++)n[e]=i.charCodeAt(e);return n.buffer}async function J(){let t=atob(k),i=Z(t);return await crypto.subtle.importKey("spki",i,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},false,["verify"])}async function z(t,i){try{let n=await J(),e=new TextEncoder().encode(t),o=_(i);return await crypto.subtle.verify("RSASSA-PKCS1-v1_5",n,o,e)}catch{return false}}var R="c19496eb17719960b6c3cebab0ef5eddfce5d0315ab8c5af86a52fbda434fea9",V="ce1e3e8974f1392b3c5803b34ecf659f";function $(t){try{let i=S__default.default.enc.Hex.parse(R),n=S__default.default.enc.Hex.parse(V),o=S__default.default.AES.decrypt(t,i,{iv:n,mode:S__default.default.mode.CBC,padding:S__default.default.pad.Pkcs7}).toString(S__default.default.enc.Utf8);if(!o)throw new Error("Decryption resulted in empty string - invalid ciphertext or wrong key");return o}catch(i){throw i}}async function j(t){try{let i=atob(t),n=JSON.parse(i);if(!n.data||!n.signature||!await z(n.data,n.signature))return null;let o=n.data;if(n.encrypted)try{o=$(n.data);}catch{return null}return JSON.parse(o)}catch{return null}}function X(t){if(!t||t.length===0)return true;let i=window.location.hostname;if(i==="localhost"||i==="127.0.0.1")return true;let n=t.some(e=>{if(e.startsWith("*.")){let o=e.slice(2);return i.endsWith(o)}return i===e});return n}function G(t){if(!t)return true;try{let i=new Date(t),n=new Date;return n>=i?!1:(Math.ceil((i.getTime()-n.getTime())/(1e3*60*60*24))<=7,!0)}catch{return false}}function tt(t){if(!t)return true;try{return !(new Date(t)>new Date)}catch{return true}}async function B(t){try{let i=await j(t);return i?tt(i.issueDate)?X(i.domains)?G(i.expireDate)?{valid:!0,data:i}:{valid:!1,error:"License has expired",data:i}:{valid:!1,error:`License not valid for domain: ${window.location.hostname}`,data:i}:{valid:!1,error:"Invalid license issue date",data:i}:{valid:!1,error:"Invalid license key or signature verification failed"}}catch{return {valid:false,error:"ERR"}}}var E=null,v=null,m=0;async function et(t){let i=await B(t);return i.valid&&i.data?(E=t,v=i.data,m=1,true):(E=null,v=null,m=0,false)}async function I(){return !E||!m?0:(m=(await B(E)).valid?1:0,m||(v=null),m)}function U(){return m?v:null}var p=async(t,i,n)=>{let{scaleX:e,scaleY:o}=t.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),a=document.querySelector("#textInnerEditor");if(a&&t.data.textData?.fontSize&&(a.style.fontSize=`${t.data.textData.fontSize*s}px`),a&&t.data.textData?.lineHeight&&(a.style.lineHeight=t.data.textData.lineHeight),a&&t.data.textData?.letterSpacing&&(a.style.letterSpacing=`${t.data.textData.letterSpacing}px`),a&&t.data.textData?.textShadow?a.style.textShadow=t.data.textData.textShadow:a.style.textShadow="none",a&&t.data.textData?.textStroke?(a.style.paintOrder="stroke fill",a.style.WebkitTextStroke=nt(t.data.textData.textStroke,s)):(a.style.paintOrder="unset",a.style.WebkitTextStroke="unset"),a&&t.data.textData?.alignContent){let d=a.querySelector(".ql-editor");d.style.alignContent=t.data.textData.alignContent;}let l=c.getQuill().getSemanticHTML();if(l==="<p></p>"){t.text.includes("<style>@font-face")?t.text=t.text.split("</style>")[0]+"</style>":t.text="";return}if(t.text.includes("<style>@font-face")){let d=t.text.split("</style>")[0];if(n&&!d.includes(n)){let u=`@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+u+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=d+"</style>"+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else if(i&&n){let d=`<style>@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);},M=(t,i,n=20.67,e=1.5,o=0,s="none",a="start",r="unset")=>{let{scaleX:l,scaleY:d}=t.worldTransform,u=Math.max(Math.abs(l),Math.abs(d)),f=document.createElement("div");f.innerHTML=i;let h={fontSize:`${n}px`,lineHeight:e,letterSpacing:`${o}px`,textShadow:s};r!=="unset"?(h.paintOrder="stroke fill",h.WebkitTextStroke=r):(h.paintOrder="unset",h.WebkitTextStroke="unset"),f.querySelectorAll("p,ol,ul").forEach(Y=>{Object.assign(Y.style,h);});let g=f.innerHTML;/<p\b[^>]*><\/p>/.test(g)&&(g=g.replace(/<p\b([^>]*)><\/p>/g,"<p$1> </p>")),/"/.test(g)&&(g=g.replace(/"/g,""));let x;document.querySelector("#textInnerEditor");let y=c.getQuill(),D=Number((y.scroll.domNode.scrollHeight/u).toFixed(0));Number((y.scroll.domNode.scrollWidth/u).toFixed(0));["center","end"].includes(t.data.textData.alignContent)?t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`:t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`;let L="<style>p{margin:0;}sub,sup{font-size:63%;}.ql-ui{position:absolute}ol,ul{counter-reset:list-0;padding-left:1.5em;margin:0}ol>li,ul>li{counter-increment:list-0;list-style-type:none;position:relative;padding-left:0;margin:0}ol>li::before{content:counter(list-0,decimal) '. ';position:absolute;left:-1.5em;width:1.2em;text-align:right}ul>li::before{content:'\u2022';position:absolute;left:-1.5em;width:1.2em;text-align:right}li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-left{text-align:left}.ql-align-justify{text-align:justify}</style>",T="";return t.parent.children[0].tag.includes("Shape")?T=L+`<div style="width: ${t.parent.width}px;height: ${t.parent.height}px;overflow-wrap:break-word;word-break:break-all;align-content:center;">${g}</div>`:t.data.canChangeBox?T=L+`<div style="width: ${t.parent.width}px;height:${x};overflow-wrap:break-word;word-break:break-all;align-content:${a};">${g}</div>`:t.data.textData.italic?T=L+g:T=L+`<div style="overflow-wrap:break-word;word-break:break-all;">${g}</div>`,T},At=(t,i,n)=>{let e=c.getQuill(),{editor:o,canvas:s}=c.getCanvas();if(!e)return;i===0&&(i="0");let a=e.selection.savedRange;c.dateEdit(async r=>{if(r.tag==="HTMLText")if(t==="font")o.innerEditing?(a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null)):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null));else if(t==="fontSize")r.data.textData[t]=i,c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),p(r,n??null);else if(t==="textCase"){if(o.innerEditing){let l=e.getText(a.index,a.length),d=e.getFormat(a.index,a.length);e.deleteText(a.index,a.length);let u;l===l.toUpperCase()&&/[A-Z]/.test(l)?u=l.toLowerCase():(l===l.toLowerCase()&&/[a-z]/.test(l),u=l.toUpperCase()),e.insertText(a.index,u,d),a&&o.innerEditing&&e.setSelection(a.index,a.length);}}else if(t==="script"){let l="sub";i==="super"&&(l="sup"),o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,e.getFormat(a).script===i?false:l):e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l),p(r));}else if(t==="align")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing?e.format(t,i):e.formatLine(0,e.getLength(),t,i),p(r);else if(t==="alignContent")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="lineHeight"||t==="letterSpacing")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="color")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.tag==="HTMLText"?p(r):r.parent.findOne("HTMLText")&&p(r.parent.findOne("HTMLText"));else if(t==="textShadow"||t==="textStroke")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="list"){if(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing){let[l]=e.getLine(a?.index||0);l.formats().list?e.format(t,false):e.format(t,i);}else {let[l]=e.getLine(a?.index||0);l.formats().list?e.formatLine(0,e.getLength(),t,false):e.formatLine(0,e.getLength(),t,i);}p(r);}else if(t==="textVertical"){let l=U();if(l&&l?.features?.length&&l?.features?.includes("textVertical")){e.clipboard.dangerouslyPasteHTML(r.text);let d=e.getSemanticHTML();e.clipboard.dangerouslyPasteHTML(P(d)),r.data.textData.align="center",p(r);}}else o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,i===void 0?!e.getFormat(a)[t]:i):e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i),p(r));},1);};function nt(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}var C=class extends editor.EditTool{constructor(n){super(n);this.quill=null;this.isUpdatingPoints=false;this.curveAmount=0;this.eventIds=[],this.updateBoxDebounced=this.debounce(e=>{p(e);},300);}get tag(){return "TextEditTool"}debounce(n,e){let o=null;return((...s)=>{o!==null&&window.clearTimeout(o),o=window.setTimeout(()=>n.apply(this,s),e);})}addEvent(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s)),r=document.querySelector("#textInnerEditor"),{style:l}=r;this.eventIds=[n.on_(editor.EditorScaleEvent.SCALE,d=>{e.data.canChangeBox||(e.data.canChangeBox=true),e.data.canChangeBox&&(l.width=e.parent.width*a+"px",l.height="auto");let u=1;e.parent.tag==="HtmlText"&&e.parent.lockRatio&&e.data?.baseSize?.width&&(u=e.parent.width/e.data?.baseSize.width,e.data.textData.fontSize=e.data.textData.fontSize*u),e.data?.baseSize?.width&&(e.data.baseSize.width=e.parent.width),this.updateBoxDebounced(e);}),n.on_(core.PointerEvent.DOUBLE_TAP,()=>{e.parent.locked||n.openInnerEditor(e,true);})];}onLoad(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s));this.addEvent(),this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(e.text);let r=document.querySelector("#textInnerEditor"),{style:l}=r;e.data.canChangeBox?(l.width=e.parent.width*a+"px",l.height=e.parent.height*a+"px"):(l.width="auto",l.height="auto");}updateChangeBoxBound(n){n&&n.set({width:n.__layout.boxBounds.width,height:n.__layout.boxBounds.height});}onUpdate(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");e&&this.curveAmount!=e.curveAmount&&this.isUpdatingPoints;}onUnload(){let{editor:n}=c.getCanvas();n.off_(this.eventIds);}onDestroy(){}};C=b([editor.registerEditTool()],C);var H=class extends editor.InnerEditor{constructor(){super(...arguments);this.config={selectAll:false};this.eventIds=[];this.selectText=void 0;this.inBody=void 0;this.isHTMLText=void 0;this.n=void 0;this.quill=null;this.isComposing=false;this.onInput=async()=>{let{editDom:n}=this;p(this.editTarget);};this.isUpdatingPoints=false;}get tag(){return "TextEditor"}onLoad(){let{editor:n}=this,{config:e}=n.app,o=this.editTarget,{scaleX:s,scaleY:a}=o.worldTransform,r=Math.max(Math.abs(s),Math.abs(a));this.isHTMLText=!(o instanceof Text),this.n=e.keyEvent,e.keyEvent=false;let l=this.editDom=document.querySelector("#textInnerEditor"),{style:d}=l;if(d.visibility="visible",o.data.canChangeBox?(d.width=o.parent.width*r+"px",d.height=o.parent.height*r+"px"):(d.width="auto",d.height="auto"),d.outline="solid #8499EF",o.data.textData.fontSize&&(l.style.fontSize=`${o.data.textData.fontSize*r}px`),o.data.textData.lineHeight&&(l.style.lineHeight=o.data.textData.lineHeight),o.data.textData.letterSpacing&&(l.style.letterSpacing=`${o.data.textData.letterSpacing}px`),o.data.textData.textShadow?l.style.textShadow=O(o.data.textData.textShadow,r):l.style.textShadow="none",o.data.textData.textStroke?(l.style.paintOrder="stroke fill",l.style.WebkitTextStroke=O(o.data.textData.textStroke,r)):(l.style.paintOrder="unset",l.style.WebkitTextStroke="unset"),o.data.textData.alignContent){let u=l.querySelector(".ql-editor");u.style.alignContent=`${o.data.textData.alignContent}`;}this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(o.text),o.parent.children[0].tag.includes("Shape")?(d.width=o.parent.width*r+"px",d.left="0px",this.quill.formatLine(0,this.quill.getLength(),"align","center")):this.quill.setSelection(0,this.quill.getLength()-1),this.quill.on("text-change",this.onInput),this.eventIds=[n.app.on_(core.PointerEvent.DOWN,u=>{let{target:f}=u.origin,h=false;for(;f;)f===l&&(h=true),f=f.parentElement;h||(n.closeInnerEditor(),n.cancel());})];}onUpdate(){let{editTarget:n}=this,{scaleX:e,scaleY:o}=n.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),{width:a,height:r}=n.parent.__local;a*=s,r*=s;let{x:l,y:d}=this.inBody?n.app.clientBounds:n.app.tree.clientBounds,{a:u,b:f,c:h,d:g,e:x,f:F}=new core.Matrix(n.worldTransform).scale(1/s).translateInner(0,0),{style:y}=this.editDom;y.transform=`matrix(${u},${f},${h},${g},${x},${F})`,y.left=l+"px",y.top=d+"px",n.set({visible:false});}onUnload(){let{editTarget:n,editor:e,editDom:o}=this;n&&(this.onInput(),e.app&&(e.app.config.keyEvent=this.n),e.off_(this.eventIds),this.editDom.style.visibility="hidden",this.eventIds=[]),n.parent&&n.parent.name=="Text"&&n.parent.children.some(s=>s.tag==="Box")?(n.parent.findOne("Box").opacity=1,n.visible=false):n.set({visible:true}),this.quill.getLength()===1&&n.parent.name==="Text"&&n.parent.remove(),this.quill.off("text-change",this.onInput);}};H=b([editor.registerInnerEditor()],H);function O(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}function A(t,{insertAt:i}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",i==="top"&&n.firstChild?n.insertBefore(e,n.firstChild):n.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t));}A(`.ql-editor{padding:0!important;line-height:unset!important;overflow:unset!important;outline:0}.ql-container{font-family:unset!important}.ql-editor p{margin:0!important}.ql-editor sub,.ql-editor sup{font-size:63%}.ql-editor sup{top:-.58em}.ql-editor sub{bottom:-.38em}.ql-editor ol{padding-left:0!important}
|
|
2
2
|
`);var N=class t{constructor(){this.quill=null;this.app_=null;this.t=0;}static getInstance(){return t.instance||(t.instance=new t),t.instance}async init(i){if(this.t=await I(),this.app_=this.t?i:null,this.quill)return this.quill;let n=document.getElementById("textInnerEditor");if(n)this.quill=this.app_?.editor?.quill||null;else return n=document.createElement("div"),n.id="textInnerEditor",n.style.position="fixed",n.style.transformOrigin="left top",n.style.overflowWrap="break-word",n.style.wordBreak="break-all",n.style.visibility="hidden",document.body.appendChild(n),this.quill=new w__default.default("#textInnerEditor",{theme:void 0,modules:{toolbar:false,keyboard:{bindings:{enter:{key:"Enter",handler:e=>{if(!this.t)return true;let[o]=this.quill.getLine(e.index),s=w__default.default.import("blots/block");if(!s?.bubbleFormats)return true;let a=s.bubbleFormats(o),r=new w.Delta().retain(e.index).delete(e.length).insert(`
|
|
3
3
|
`,a);return this.quill.updateContents(r,w__default.default.sources.USER),this.quill.setSelection(e.index+1,w__default.default.sources.SILENT),false}}}}}}),this.app_?.editor&&(this.app_.editor.quill=this.quill),this.registerFonts(),this.quill}getQuill(){return this.t?this.quill:null}getCanvas(){return this.t?this.app_:null}getSelection(){return this.t?this.quill?.selection.savedRange:null}registerFonts(){this.t&&(font.FontStyle.whitelist=void 0,w__default.default.register("formats/font",font.FontStyle,true));}isMultiSelect(){return !this.t||!this.app_?.editor?false:this.app_.editor.multiple===true}dateEdit(i,n=0,e){let{editor:o}=this.app_||{};if(!o)return;let s=e||o.leafList?.list,a=r=>{n&&(r.tag==="Box"||r.name==="Text")?i(r.children?.[0]||r):i(r);};if(s?.length)if(Array.isArray(s)&&s.length>1){this.app_.lockLayout();let r=s.length*this.t;for(let l=0;l<r;l++)a(s[l]);this.app_.unlockLayout(),o.updateEditBox();}else this.t&&a(s[0]);}},c=N.getInstance();exports.HtmlText=class q extends core.Box{get __tag(){return "HtmlText"}constructor(i){let{text:n,fontSize:e,fontFamily:o,lineHeight:s,letterSpacing:a,textShadow:r,alignContent:l,...d}=i||{};super({editOuter:"TextEditTool",name:"HtmlText",x:0,y:0,editable:true,draggable:true,overflow:"show",...d}),i&&this.createTextElement(i);}createTextElement(i){let{text:n,fontSize:e,fontFamily:o,lineHeight:s,letterSpacing:a,textShadow:r,alignContent:l}=i,d="<style>p{margin:0;}sub,sup{font-size:63%;}.ql-ui{position:absolute}ol,ul{counter-reset:list-0;padding-left:1.5em;margin:0}ol>li,ul>li{counter-increment:list-0;list-style-type:none;position:relative;padding-left:0;margin:0}ol>li::before{content:counter(list-0,decimal) '. ';position:absolute;left:-1.5em;width:1.2em;text-align:right}ul>li::before{content:'\u2022';position:absolute;left:-1.5em;width:1.2em;text-align:right}li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-left{text-align:left}.ql-align-justify{text-align:justify}</style>",u=`<div style="ove
|
|
4
4
|
rflow-wrap:break-word;word-break:break-all;"><p style="font-size: ${e}px; line-height: ${s}; letter-spacing: ${a}px; text-shadow: ${r};"><strong>Hello World</strong></p></div>`;if(i.children?.length>0)return;let f=new html.HTMLText({name:"Text",text:d+(n||u),x:0,y:0,data:{canChangeBox:false,textData:{fontFamily:o,fontSize:e,lineHeight:s,letterSpacing:a||0,textShadow:r,alignContent:l}},editConfig:{selectedStyle:{strokeWidth:0}}});this.add(f);}};exports.HtmlText=b([core.registerUI()],exports.HtmlText);exports.checkLicense=I;exports.getLicenseInfo=U;exports.htmlTextManage=c;exports.setHTMLText=At;exports.setLicense=et;exports.updataHtmlText=p;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {registerEditTool,registerInnerEditor,EditTool,EditorScaleEvent,InnerEditor}from'@leafer-in/editor';import {PointerEvent}from'leafer-ui';import S from'crypto-js';import {registerUI,Box,PointerEvent as PointerEvent$1,Matrix}from'@leafer-ui/core';import w,{Delta}from'quill';import'quill/dist/quill.core.css';import {FontStyle}from'quill/formats/font';import {HTMLText}from'@leafer-in/html';var b=(t,i,n,e)=>{for(var o=i,s=t.length-1,a;s>=0;s--)(a=t[s])&&(o=(a(o))||o);return o};function P(t){let e=new DOMParser().parseFromString(t,"text/html").body;function o(r){if(r.nodeType===Node.TEXT_NODE){let l=r.textContent;return l?Array.from(l).map(u=>document.createTextNode(u)):[]}else if(r.nodeType===Node.ELEMENT_NODE){let l=[];for(let d of Array.from(r.childNodes))o(d).forEach((f,h)=>{let g=r.cloneNode(false);g.appendChild(f),l.push(g);});return l}return []}let s=[];for(let r of Array.from(e.childNodes)){let l=o(r);s.push(...l);}let a=document.createElement("div");return s.forEach((r,l)=>{a.appendChild(r);}),a.innerHTML}var k="LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxaUFnU1hWM3dMKzh2YkZ2OVkwQwpEN1dBUjhPa2I4bjlmTWxpQjF3enZodTBrdVdZUWEvMUxvVDhHWVh6WWlRQVFBRk9zTTA0MGp2dlNRT2hRSWpiCjRaYXZ1NHUvWVA5bElPYjFKYnZnYkFoYVVOQnphL0l2UmFnaFlKYTJBc1cyRVhnZkVrdmMyUENNMS9zbVlFNnoKNjZiUmx1dnREK3FJZkpLVCtUUXJRRmp5TnNTZ0c2Z2R4MThrZTRMSStBejFPcklMbUsyMHlBU2tlRXpYT1BTVAplM3RNYThleHpZdmUzV0wyNHRHUHg5WHNvN1JyUEl1elZlajh0NDYrZ0c1Y0pQaVh0N1lqa0V2NEJOUUt5eUpoCkltOVRJdVZ6clFpa2NJNE14dExNSGdUMHpLcU9ZZ1NzcmEvTHNDd2ZOdzdtYWxITkU2c21YZWYyQ2E5RGhZODQKS1FJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==";function Z(t){let i=t.replace(/-----BEGIN PUBLIC KEY-----/,"").replace(/-----END PUBLIC KEY-----/,"").replace(/\s/g,"");return _(i)}function _(t){let i=atob(t),n=new Uint8Array(i.length);for(let e=0;e<i.length;e++)n[e]=i.charCodeAt(e);return n.buffer}async function J(){let t=atob(k),i=Z(t);return await crypto.subtle.importKey("spki",i,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},false,["verify"])}async function z(t,i){try{let n=await J(),e=new TextEncoder().encode(t),o=_(i);return await crypto.subtle.verify("RSASSA-PKCS1-v1_5",n,o,e)}catch{return false}}var R="c19496eb17719960b6c3cebab0ef5eddfce5d0315ab8c5af86a52fbda434fea9",V="ce1e3e8974f1392b3c5803b34ecf659f";function $(t){try{let i=S.enc.Hex.parse(R),n=S.enc.Hex.parse(V),o=S.AES.decrypt(t,i,{iv:n,mode:S.mode.CBC,padding:S.pad.Pkcs7}).toString(S.enc.Utf8);if(!o)throw new Error("Decryption resulted in empty string - invalid ciphertext or wrong key");return o}catch(i){throw i}}async function j(t){try{let i=atob(t),n=JSON.parse(i);if(!n.data||!n.signature||!await z(n.data,n.signature))return null;let o=n.data;if(n.encrypted)try{o=$(n.data);}catch{return null}return JSON.parse(o)}catch{return null}}function X(t){if(!t||t.length===0)return true;let i=window.location.hostname;if(i==="localhost"||i==="127.0.0.1")return true;let n=t.some(e=>{if(e.startsWith("*.")){let o=e.slice(2);return i.endsWith(o)}return i===e});return n}function G(t){if(!t)return true;try{let i=new Date(t),n=new Date;return n>=i?!1:(Math.ceil((i.getTime()-n.getTime())/(1e3*60*60*24))<=7,!0)}catch{return false}}function tt(t){if(!t)return true;try{return !(new Date(t)>new Date)}catch{return true}}async function B(t){try{let i=await j(t);return i?tt(i.issueDate)?X(i.domains)?G(i.expireDate)?{valid:!0,data:i}:{valid:!1,error:"License has expired",data:i}:{valid:!1,error:`License not valid for domain: ${window.location.hostname}`,data:i}:{valid:!1,error:"Invalid license issue date",data:i}:{valid:!1,error:"Invalid license key or signature verification failed"}}catch{return {valid:false,error:"ERR"}}}var E=null,v=null,m=0;async function et(t){let i=await B(t);return i.valid&&i.data?(E=t,v=i.data,m=1,true):(E=null,v=null,m=0,false)}async function I(){return !E||!m?0:(m=(await B(E)).valid?1:0,m||(v=null),m)}function U(){return m?v:null}var p=async(t,i,n)=>{let{scaleX:e,scaleY:o}=t.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),a=document.querySelector("#textInnerEditor");if(a&&t.data.textData?.fontSize&&(a.style.fontSize=`${t.data.textData.fontSize*s}px`),a&&t.data.textData?.lineHeight&&(a.style.lineHeight=t.data.textData.lineHeight),a&&t.data.textData?.letterSpacing&&(a.style.letterSpacing=`${t.data.textData.letterSpacing}px`),a&&t.data.textData?.textShadow?a.style.textShadow=t.data.textData.textShadow:a.style.textShadow="none",a&&t.data.textData?.textStroke?(a.style.paintOrder="stroke fill",a.style.WebkitTextStroke=nt(t.data.textData.textStroke,s)):(a.style.paintOrder="unset",a.style.WebkitTextStroke="unset"),a&&t.data.textData?.alignContent){let d=a.querySelector(".ql-editor");d.style.alignContent=t.data.textData.alignContent;}let l=c.getQuill().getSemanticHTML();if(l==="<p></p>"){t.text.includes("<style>@font-face")?t.text=t.text.split("</style>")[0]+"</style>":t.text="";return}if(t.text.includes("<style>@font-face")){let d=t.text.split("</style>")[0];if(n&&!d.includes(n)){let u=`@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+u+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=d+"</style>"+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else if(i&&n){let d=`<style>@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);},M=(t,i,n=20.67,e=1.5,o=0,s="none",a="start",r="unset")=>{let{scaleX:l,scaleY:d}=t.worldTransform,u=Math.max(Math.abs(l),Math.abs(d)),f=document.createElement("div");f.innerHTML=i;let h={fontSize:`${n}px`,lineHeight:e,letterSpacing:`${o}px`,textShadow:s};r!=="unset"?(h.paintOrder="stroke fill",h.WebkitTextStroke=r):(h.paintOrder="unset",h.WebkitTextStroke="unset"),f.querySelectorAll("p,ol,ul").forEach(Y=>{Object.assign(Y.style,h);});let g=f.innerHTML;/<p\b[^>]*><\/p>/.test(g)&&(g=g.replace(/<p\b([^>]*)><\/p>/g,"<p$1> </p>")),/"/.test(g)&&(g=g.replace(/"/g,""));let x;document.querySelector("#textInnerEditor");let y=c.getQuill(),D=Number((y.scroll.domNode.scrollHeight/u).toFixed(0));Number((y.scroll.domNode.scrollWidth/u).toFixed(0));["center","end"].includes(t.data.textData.alignContent)?t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`:t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`;let L="<style>p{margin:0;}sub,sup{font-size:63%;}.ql-ui{position:absolute}ol,ul{counter-reset:list-0;padding-left:1.5em;margin:0}ol>li,ul>li{counter-increment:list-0;list-style-type:none;position:relative;padding-left:0;margin:0}ol>li::before{content:counter(list-0,decimal) '. ';position:absolute;left:-1.5em;width:1.2em;text-align:right}ul>li::before{content:'\u2022';position:absolute;left:-1.5em;width:1.2em;text-align:right}li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-left{text-align:left}.ql-align-justify{text-align:justify}</style>",T="";return t.parent.children[0].tag.includes("Shape")?T=L+`<div style="width: ${t.parent.width}px;height: ${t.parent.height}px;overflow-wrap:break-word;word-break:break-all;align-content:center;">${g}</div>`:t.data.canChangeBox?T=L+`<div style="width: ${t.parent.width}px;height:${x};overflow-wrap:break-word;word-break:break-all;align-content:${a};">${g}</div>`:t.data.textData.italic?T=L+g:T=L+`<div style="overflow-wrap:break-word;word-break:break-all;">${g}</div>`,T},At=(t,i,n)=>{let e=c.getQuill(),{editor:o,canvas:s}=c.getCanvas();if(!e)return;i===0&&(i="0");let a=e.selection.savedRange;c.dateEdit(async r=>{if(r.tag==="HTMLText")if(t==="font")o.innerEditing?(a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null)):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null));else if(t==="fontSize")r.data.textData[t]=i,c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),p(r,n??null);else if(t==="textCase"){if(o.innerEditing){let l=e.getText(a.index,a.length),d=e.getFormat(a.index,a.length);e.deleteText(a.index,a.length);let u;l===l.toUpperCase()&&/[A-Z]/.test(l)?u=l.toLowerCase():(l===l.toLowerCase()&&/[a-z]/.test(l),u=l.toUpperCase()),e.insertText(a.index,u,d),a&&o.innerEditing&&e.setSelection(a.index,a.length);}}else if(t==="script"){let l="sub";i==="super"&&(l="sup"),o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,e.getFormat(a).script===i?false:l):e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l),p(r));}else if(t==="align")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing?e.format(t,i):e.formatLine(0,e.getLength(),t,i),p(r);else if(t==="alignContent")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="lineHeight"||t==="letterSpacing")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="color")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.tag==="HTMLText"?p(r):r.parent.findOne("HTMLText")&&p(r.parent.findOne("HTMLText"));else if(t==="textShadow"||t==="textStroke")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="list"){if(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing){let[l]=e.getLine(a?.index||0);l.formats().list?e.format(t,false):e.format(t,i);}else {let[l]=e.getLine(a?.index||0);l.formats().list?e.formatLine(0,e.getLength(),t,false):e.formatLine(0,e.getLength(),t,i);}p(r);}else if(t==="textVertical"){let l=U();if(l&&l?.features?.length&&l?.features?.includes("textVertical")){e.clipboard.dangerouslyPasteHTML(r.text);let d=e.getSemanticHTML();e.clipboard.dangerouslyPasteHTML(P(d)),r.data.textData.align="center",p(r);}}else o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,i===void 0?!e.getFormat(a)[t]:i):e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i),p(r));},1);};function nt(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}var C=class extends EditTool{constructor(n){super(n);this.quill=null;this.isUpdatingPoints=false;this.curveAmount=0;this.eventIds=[],this.updateBoxDebounced=this.debounce(e=>{p(e);},300);}get tag(){return "TextEditTool"}debounce(n,e){let o=null;return((...s)=>{o!==null&&window.clearTimeout(o),o=window.setTimeout(()=>n.apply(this,s),e);})}addEvent(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s)),r=document.querySelector("#textInnerEditor"),{style:l}=r;this.eventIds=[n.on_(EditorScaleEvent.SCALE,d=>{e.data.canChangeBox||(e.data.canChangeBox=true),e.data.canChangeBox&&(l.width=e.parent.width*a+"px",l.height="auto");let u=1;e.parent.tag==="HtmlText"&&e.parent.lockRatio&&e.data?.baseSize?.width&&(u=e.parent.width/e.data?.baseSize.width,e.data.textData.fontSize=e.data.textData.fontSize*u),e.data?.baseSize?.width&&(e.data.baseSize.width=e.parent.width),this.updateBoxDebounced(e);}),n.on_(PointerEvent.DOUBLE_TAP,()=>{e.parent.locked||n.openInnerEditor(e,true);})];}onLoad(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s));this.addEvent(),this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(e.text);let r=document.querySelector("#textInnerEditor"),{style:l}=r;e.data.canChangeBox?(l.width=e.parent.width*a+"px",l.height=e.parent.height*a+"px"):(l.width="auto",l.height="auto");}updateChangeBoxBound(n){n&&n.set({width:n.__layout.boxBounds.width,height:n.__layout.boxBounds.height});}onUpdate(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");e&&this.curveAmount!=e.curveAmount&&this.isUpdatingPoints;}onUnload(){let{editor:n}=c.getCanvas();n.off_(this.eventIds);}onDestroy(){}};C=b([registerEditTool()],C);var H=class extends InnerEditor{constructor(){super(...arguments);this.config={selectAll:false};this.eventIds=[];this.selectText=void 0;this.inBody=void 0;this.isHTMLText=void 0;this.n=void 0;this.quill=null;this.isComposing=false;this.onInput=async()=>{let{editDom:n}=this;p(this.editTarget);};this.isUpdatingPoints=false;}get tag(){return "TextEditor"}onLoad(){let{editor:n}=this,{config:e}=n.app,o=this.editTarget,{scaleX:s,scaleY:a}=o.worldTransform,r=Math.max(Math.abs(s),Math.abs(a));this.isHTMLText=!(o instanceof Text),this.n=e.keyEvent,e.keyEvent=false;let l=this.editDom=document.querySelector("#textInnerEditor"),{style:d}=l;if(d.visibility="visible",o.data.canChangeBox?(d.width=o.parent.width*r+"px",d.height=o.parent.height*r+"px"):(d.width="auto",d.height="auto"),d.outline="solid #8499EF",o.data.textData.fontSize&&(l.style.fontSize=`${o.data.textData.fontSize*r}px`),o.data.textData.lineHeight&&(l.style.lineHeight=o.data.textData.lineHeight),o.data.textData.letterSpacing&&(l.style.letterSpacing=`${o.data.textData.letterSpacing}px`),o.data.textData.textShadow?l.style.textShadow=O(o.data.textData.textShadow,r):l.style.textShadow="none",o.data.textData.textStroke?(l.style.paintOrder="stroke fill",l.style.WebkitTextStroke=O(o.data.textData.textStroke,r)):(l.style.paintOrder="unset",l.style.WebkitTextStroke="unset"),o.data.textData.alignContent){let u=l.querySelector(".ql-editor");u.style.alignContent=`${o.data.textData.alignContent}`;}this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(o.text),o.parent.children[0].tag.includes("Shape")?(d.width=o.parent.width*r+"px",d.left="0px",this.quill.formatLine(0,this.quill.getLength(),"align","center")):this.quill.setSelection(0,this.quill.getLength()-1),this.quill.on("text-change",this.onInput),this.eventIds=[n.app.on_(PointerEvent$1.DOWN,u=>{let{target:f}=u.origin,h=false;for(;f;)f===l&&(h=true),f=f.parentElement;h||(n.closeInnerEditor(),n.cancel());})];}onUpdate(){let{editTarget:n}=this,{scaleX:e,scaleY:o}=n.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),{width:a,height:r}=n.parent.__local;a*=s,r*=s;let{x:l,y:d}=this.inBody?n.app.clientBounds:n.app.tree.clientBounds,{a:u,b:f,c:h,d:g,e:x,f:F}=new Matrix(n.worldTransform).scale(1/s).translateInner(0,0),{style:y}=this.editDom;y.transform=`matrix(${u},${f},${h},${g},${x},${F})`,y.left=l+"px",y.top=d+"px",n.set({visible:false});}onUnload(){let{editTarget:n,editor:e,editDom:o}=this;n&&(this.onInput(),e.app&&(e.app.config.keyEvent=this.n),e.off_(this.eventIds),this.editDom.style.visibility="hidden",this.eventIds=[]),n.parent&&n.parent.name=="Text"&&n.parent.children.some(s=>s.tag==="Box")?(n.parent.findOne("Box").opacity=1,n.visible=false):n.set({visible:true}),this.quill.getLength()===1&&n.parent.name==="Text"&&n.parent.remove(),this.quill.off("text-change",this.onInput);}};H=b([registerInnerEditor()],H);function O(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}function A(t,{insertAt:i}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",i==="top"&&n.firstChild?n.insertBefore(e,n.firstChild):n.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t));}A(`.ql-editor{padding:0!important;line-height:unset!important;overflow:unset!important;outline:0}.ql-container{font-family:unset!important}.ql-editor p{margin:0!important}.ql-editor sub,.ql-editor sup{font-size:63%}.ql-editor sup{top:-.58em}.ql-editor sub{bottom:-.38em}.ql-editor ol{padding-left:0!important}
|
|
1
|
+
import {registerEditTool,registerInnerEditor,EditTool,EditorScaleEvent,InnerEditor}from'@leafer-in/editor';import {registerUI,Box,PointerEvent,Matrix}from'@leafer-ui/core';import S from'crypto-js';import w,{Delta}from'quill';import'quill/dist/quill.core.css';import {FontStyle}from'quill/formats/font';import {HTMLText}from'@leafer-in/html';var b=(t,i,n,e)=>{for(var o=i,s=t.length-1,a;s>=0;s--)(a=t[s])&&(o=(a(o))||o);return o};function P(t){let e=new DOMParser().parseFromString(t,"text/html").body;function o(r){if(r.nodeType===Node.TEXT_NODE){let l=r.textContent;return l?Array.from(l).map(u=>document.createTextNode(u)):[]}else if(r.nodeType===Node.ELEMENT_NODE){let l=[];for(let d of Array.from(r.childNodes))o(d).forEach((f,h)=>{let g=r.cloneNode(false);g.appendChild(f),l.push(g);});return l}return []}let s=[];for(let r of Array.from(e.childNodes)){let l=o(r);s.push(...l);}let a=document.createElement("div");return s.forEach((r,l)=>{a.appendChild(r);}),a.innerHTML}var k="LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFxaUFnU1hWM3dMKzh2YkZ2OVkwQwpEN1dBUjhPa2I4bjlmTWxpQjF3enZodTBrdVdZUWEvMUxvVDhHWVh6WWlRQVFBRk9zTTA0MGp2dlNRT2hRSWpiCjRaYXZ1NHUvWVA5bElPYjFKYnZnYkFoYVVOQnphL0l2UmFnaFlKYTJBc1cyRVhnZkVrdmMyUENNMS9zbVlFNnoKNjZiUmx1dnREK3FJZkpLVCtUUXJRRmp5TnNTZ0c2Z2R4MThrZTRMSStBejFPcklMbUsyMHlBU2tlRXpYT1BTVAplM3RNYThleHpZdmUzV0wyNHRHUHg5WHNvN1JyUEl1elZlajh0NDYrZ0c1Y0pQaVh0N1lqa0V2NEJOUUt5eUpoCkltOVRJdVZ6clFpa2NJNE14dExNSGdUMHpLcU9ZZ1NzcmEvTHNDd2ZOdzdtYWxITkU2c21YZWYyQ2E5RGhZODQKS1FJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==";function Z(t){let i=t.replace(/-----BEGIN PUBLIC KEY-----/,"").replace(/-----END PUBLIC KEY-----/,"").replace(/\s/g,"");return _(i)}function _(t){let i=atob(t),n=new Uint8Array(i.length);for(let e=0;e<i.length;e++)n[e]=i.charCodeAt(e);return n.buffer}async function J(){let t=atob(k),i=Z(t);return await crypto.subtle.importKey("spki",i,{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"},false,["verify"])}async function z(t,i){try{let n=await J(),e=new TextEncoder().encode(t),o=_(i);return await crypto.subtle.verify("RSASSA-PKCS1-v1_5",n,o,e)}catch{return false}}var R="c19496eb17719960b6c3cebab0ef5eddfce5d0315ab8c5af86a52fbda434fea9",V="ce1e3e8974f1392b3c5803b34ecf659f";function $(t){try{let i=S.enc.Hex.parse(R),n=S.enc.Hex.parse(V),o=S.AES.decrypt(t,i,{iv:n,mode:S.mode.CBC,padding:S.pad.Pkcs7}).toString(S.enc.Utf8);if(!o)throw new Error("Decryption resulted in empty string - invalid ciphertext or wrong key");return o}catch(i){throw i}}async function j(t){try{let i=atob(t),n=JSON.parse(i);if(!n.data||!n.signature||!await z(n.data,n.signature))return null;let o=n.data;if(n.encrypted)try{o=$(n.data);}catch{return null}return JSON.parse(o)}catch{return null}}function X(t){if(!t||t.length===0)return true;let i=window.location.hostname;if(i==="localhost"||i==="127.0.0.1")return true;let n=t.some(e=>{if(e.startsWith("*.")){let o=e.slice(2);return i.endsWith(o)}return i===e});return n}function G(t){if(!t)return true;try{let i=new Date(t),n=new Date;return n>=i?!1:(Math.ceil((i.getTime()-n.getTime())/(1e3*60*60*24))<=7,!0)}catch{return false}}function tt(t){if(!t)return true;try{return !(new Date(t)>new Date)}catch{return true}}async function B(t){try{let i=await j(t);return i?tt(i.issueDate)?X(i.domains)?G(i.expireDate)?{valid:!0,data:i}:{valid:!1,error:"License has expired",data:i}:{valid:!1,error:`License not valid for domain: ${window.location.hostname}`,data:i}:{valid:!1,error:"Invalid license issue date",data:i}:{valid:!1,error:"Invalid license key or signature verification failed"}}catch{return {valid:false,error:"ERR"}}}var E=null,v=null,m=0;async function et(t){let i=await B(t);return i.valid&&i.data?(E=t,v=i.data,m=1,true):(E=null,v=null,m=0,false)}async function I(){return !E||!m?0:(m=(await B(E)).valid?1:0,m||(v=null),m)}function U(){return m?v:null}var p=async(t,i,n)=>{let{scaleX:e,scaleY:o}=t.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),a=document.querySelector("#textInnerEditor");if(a&&t.data.textData?.fontSize&&(a.style.fontSize=`${t.data.textData.fontSize*s}px`),a&&t.data.textData?.lineHeight&&(a.style.lineHeight=t.data.textData.lineHeight),a&&t.data.textData?.letterSpacing&&(a.style.letterSpacing=`${t.data.textData.letterSpacing}px`),a&&t.data.textData?.textShadow?a.style.textShadow=t.data.textData.textShadow:a.style.textShadow="none",a&&t.data.textData?.textStroke?(a.style.paintOrder="stroke fill",a.style.WebkitTextStroke=nt(t.data.textData.textStroke,s)):(a.style.paintOrder="unset",a.style.WebkitTextStroke="unset"),a&&t.data.textData?.alignContent){let d=a.querySelector(".ql-editor");d.style.alignContent=t.data.textData.alignContent;}let l=c.getQuill().getSemanticHTML();if(l==="<p></p>"){t.text.includes("<style>@font-face")?t.text=t.text.split("</style>")[0]+"</style>":t.text="";return}if(t.text.includes("<style>@font-face")){let d=t.text.split("</style>")[0];if(n&&!d.includes(n)){let u=`@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+u+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=d+"</style>"+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else if(i&&n){let d=`<style>@font-face {font-family: ${n.split(",")[0]};src: url(${i}) format('woff2') }</style>`;t.text=d+M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);}else t.text=M(t,l,t.data.textData.fontSize,t.data.textData.lineHeight,t.data.textData.letterSpacing,t.data.textData.textShadow,t.data.textData?.alignContent,t.data.textData.textStroke);},M=(t,i,n=20.67,e=1.5,o=0,s="none",a="start",r="unset")=>{let{scaleX:l,scaleY:d}=t.worldTransform,u=Math.max(Math.abs(l),Math.abs(d)),f=document.createElement("div");f.innerHTML=i;let h={fontSize:`${n}px`,lineHeight:e,letterSpacing:`${o}px`,textShadow:s};r!=="unset"?(h.paintOrder="stroke fill",h.WebkitTextStroke=r):(h.paintOrder="unset",h.WebkitTextStroke="unset"),f.querySelectorAll("p,ol,ul").forEach(Y=>{Object.assign(Y.style,h);});let g=f.innerHTML;/<p\b[^>]*><\/p>/.test(g)&&(g=g.replace(/<p\b([^>]*)><\/p>/g,"<p$1> </p>")),/"/.test(g)&&(g=g.replace(/"/g,""));let x;document.querySelector("#textInnerEditor");let y=c.getQuill(),D=Number((y.scroll.domNode.scrollHeight/u).toFixed(0));Number((y.scroll.domNode.scrollWidth/u).toFixed(0));["center","end"].includes(t.data.textData.alignContent)?t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`:t.parent.height<D?x=(D||t.__layout.boxBounds.height)+"px":x=`${t.parent.height}px`;let L="<style>p{margin:0;}sub,sup{font-size:63%;}.ql-ui{position:absolute}ol,ul{counter-reset:list-0;padding-left:1.5em;margin:0}ol>li,ul>li{counter-increment:list-0;list-style-type:none;position:relative;padding-left:0;margin:0}ol>li::before{content:counter(list-0,decimal) '. ';position:absolute;left:-1.5em;width:1.2em;text-align:right}ul>li::before{content:'\u2022';position:absolute;left:-1.5em;width:1.2em;text-align:right}li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-left{text-align:left}.ql-align-justify{text-align:justify}</style>",T="";return t.parent.children[0].tag.includes("Shape")?T=L+`<div style="width: ${t.parent.width}px;height: ${t.parent.height}px;overflow-wrap:break-word;word-break:break-all;align-content:center;">${g}</div>`:t.data.canChangeBox?T=L+`<div style="width: ${t.parent.width}px;height:${x};overflow-wrap:break-word;word-break:break-all;align-content:${a};">${g}</div>`:t.data.textData.italic?T=L+g:T=L+`<div style="overflow-wrap:break-word;word-break:break-all;">${g}</div>`,T},At=(t,i,n)=>{let e=c.getQuill(),{editor:o,canvas:s}=c.getCanvas();if(!e)return;i===0&&(i="0");let a=e.selection.savedRange;c.dateEdit(async r=>{if(r.tag==="HTMLText")if(t==="font")o.innerEditing?(a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null)):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i),r.data.textData.fontFamily=i,p(r,n??null,i??null));else if(t==="fontSize")r.data.textData[t]=i,c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),p(r,n??null);else if(t==="textCase"){if(o.innerEditing){let l=e.getText(a.index,a.length),d=e.getFormat(a.index,a.length);e.deleteText(a.index,a.length);let u;l===l.toUpperCase()&&/[A-Z]/.test(l)?u=l.toLowerCase():(l===l.toLowerCase()&&/[a-z]/.test(l),u=l.toUpperCase()),e.insertText(a.index,u,d),a&&o.innerEditing&&e.setSelection(a.index,a.length);}}else if(t==="script"){let l="sub";i==="super"&&(l="sup"),o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,e.getFormat(a).script===i?false:l):e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,e.getFormat().script===i?false:l),p(r));}else if(t==="align")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing?e.format(t,i):e.formatLine(0,e.getLength(),t,i),p(r);else if(t==="alignContent")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="lineHeight"||t==="letterSpacing")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="color")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),a&&a.length?e.formatText(a.index,a.length,t,i):e.formatText(0,e.getLength()-1,t,i),r.tag==="HTMLText"?p(r):r.parent.findOne("HTMLText")&&p(r.parent.findOne("HTMLText"));else if(t==="textShadow"||t==="textStroke")c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),r.data.textData[t]=i,p(r);else if(t==="list"){if(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),o.innerEditing){let[l]=e.getLine(a?.index||0);l.formats().list?e.format(t,false):e.format(t,i);}else {let[l]=e.getLine(a?.index||0);l.formats().list?e.formatLine(0,e.getLength(),t,false):e.formatLine(0,e.getLength(),t,i);}p(r);}else if(t==="textVertical"){let l=U();if(l&&l?.features?.length&&l?.features?.includes("textVertical")){e.clipboard.dangerouslyPasteHTML(r.text);let d=e.getSemanticHTML();e.clipboard.dangerouslyPasteHTML(P(d)),r.data.textData.align="center",p(r);}}else o.innerEditing?a&&a.length?e.formatText(a.index,a.length,t,i===void 0?!e.getFormat(a)[t]:i):e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i):(c.isMultiSelect()&&e.clipboard.dangerouslyPasteHTML(r.text),e.formatText(0,e.getLength()-1,t,i===void 0?!e.getFormat()[t]:i),p(r));},1);};function nt(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}var C=class extends EditTool{constructor(n){super(n);this.quill=null;this.isUpdatingPoints=false;this.curveAmount=0;this.eventIds=[],this.updateBoxDebounced=this.debounce(e=>{p(e);},300);}get tag(){return "TextEditTool"}debounce(n,e){let o=null;return((...s)=>{o!==null&&window.clearTimeout(o),o=window.setTimeout(()=>n.apply(this,s),e);})}addEvent(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s)),r=document.querySelector("#textInnerEditor"),{style:l}=r;this.eventIds=[n.on_(EditorScaleEvent.SCALE,d=>{e.data.canChangeBox||(e.data.canChangeBox=true),e.data.canChangeBox&&(l.width=e.parent.width*a+"px",l.height="auto");let u=1;e.parent.tag==="HtmlText"&&e.parent.lockRatio&&e.data?.baseSize?.width&&(u=e.parent.width/e.data?.baseSize.width,e.data.textData.fontSize=e.data.textData.fontSize*u),e.data?.baseSize?.width&&(e.data.baseSize.width=e.parent.width),this.updateBoxDebounced(e);}),n.on_(PointerEvent.DOUBLE_TAP,()=>{e.parent.locked||n.openInnerEditor(e,true);})];}onLoad(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");if(!e)return;let{scaleX:o,scaleY:s}=e.worldTransform,a=Math.max(Math.abs(o),Math.abs(s));this.addEvent(),this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(e.text);let r=document.querySelector("#textInnerEditor"),{style:l}=r;e.data.canChangeBox?(l.width=e.parent.width*a+"px",l.height=e.parent.height*a+"px"):(l.width="auto",l.height="auto");}updateChangeBoxBound(n){n&&n.set({width:n.__layout.boxBounds.width,height:n.__layout.boxBounds.height});}onUpdate(){let{editor:n}=c.getCanvas();if(n.multiple)return;let e=n.leafList.list[0].findOne("HTMLText");e&&this.curveAmount!=e.curveAmount&&this.isUpdatingPoints;}onUnload(){let{editor:n}=c.getCanvas();n.off_(this.eventIds);}onDestroy(){}};C=b([registerEditTool()],C);var H=class extends InnerEditor{constructor(){super(...arguments);this.config={selectAll:false};this.eventIds=[];this.selectText=void 0;this.inBody=void 0;this.isHTMLText=void 0;this.n=void 0;this.quill=null;this.isComposing=false;this.onInput=async()=>{let{editDom:n}=this;p(this.editTarget);};this.isUpdatingPoints=false;}get tag(){return "TextEditor"}onLoad(){let{editor:n}=this,{config:e}=n.app,o=this.editTarget,{scaleX:s,scaleY:a}=o.worldTransform,r=Math.max(Math.abs(s),Math.abs(a));this.isHTMLText=!(o instanceof Text),this.n=e.keyEvent,e.keyEvent=false;let l=this.editDom=document.querySelector("#textInnerEditor"),{style:d}=l;if(d.visibility="visible",o.data.canChangeBox?(d.width=o.parent.width*r+"px",d.height=o.parent.height*r+"px"):(d.width="auto",d.height="auto"),d.outline="solid #8499EF",o.data.textData.fontSize&&(l.style.fontSize=`${o.data.textData.fontSize*r}px`),o.data.textData.lineHeight&&(l.style.lineHeight=o.data.textData.lineHeight),o.data.textData.letterSpacing&&(l.style.letterSpacing=`${o.data.textData.letterSpacing}px`),o.data.textData.textShadow?l.style.textShadow=O(o.data.textData.textShadow,r):l.style.textShadow="none",o.data.textData.textStroke?(l.style.paintOrder="stroke fill",l.style.WebkitTextStroke=O(o.data.textData.textStroke,r)):(l.style.paintOrder="unset",l.style.WebkitTextStroke="unset"),o.data.textData.alignContent){let u=l.querySelector(".ql-editor");u.style.alignContent=`${o.data.textData.alignContent}`;}this.quill=c.getQuill(),this.quill.clipboard.dangerouslyPasteHTML(o.text),o.parent.children[0].tag.includes("Shape")?(d.width=o.parent.width*r+"px",d.left="0px",this.quill.formatLine(0,this.quill.getLength(),"align","center")):this.quill.setSelection(0,this.quill.getLength()-1),this.quill.on("text-change",this.onInput),this.eventIds=[n.app.on_(PointerEvent.DOWN,u=>{let{target:f}=u.origin,h=false;for(;f;)f===l&&(h=true),f=f.parentElement;h||(n.closeInnerEditor(),n.cancel());})];}onUpdate(){let{editTarget:n}=this,{scaleX:e,scaleY:o}=n.worldTransform,s=Math.max(Math.abs(e),Math.abs(o)),{width:a,height:r}=n.parent.__local;a*=s,r*=s;let{x:l,y:d}=this.inBody?n.app.clientBounds:n.app.tree.clientBounds,{a:u,b:f,c:h,d:g,e:x,f:F}=new Matrix(n.worldTransform).scale(1/s).translateInner(0,0),{style:y}=this.editDom;y.transform=`matrix(${u},${f},${h},${g},${x},${F})`,y.left=l+"px",y.top=d+"px",n.set({visible:false});}onUnload(){let{editTarget:n,editor:e,editDom:o}=this;n&&(this.onInput(),e.app&&(e.app.config.keyEvent=this.n),e.off_(this.eventIds),this.editDom.style.visibility="hidden",this.eventIds=[]),n.parent&&n.parent.name=="Text"&&n.parent.children.some(s=>s.tag==="Box")?(n.parent.findOne("Box").opacity=1,n.visible=false):n.set({visible:true}),this.quill.getLength()===1&&n.parent.name==="Text"&&n.parent.remove(),this.quill.off("text-change",this.onInput);}};H=b([registerInnerEditor()],H);function O(t,i){return t.replace(/(-?\d*\.?\d+)px/g,(n,e)=>Number(e)*i+"px")}function A(t,{insertAt:i}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",i==="top"&&n.firstChild?n.insertBefore(e,n.firstChild):n.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t));}A(`.ql-editor{padding:0!important;line-height:unset!important;overflow:unset!important;outline:0}.ql-container{font-family:unset!important}.ql-editor p{margin:0!important}.ql-editor sub,.ql-editor sup{font-size:63%}.ql-editor sup{top:-.58em}.ql-editor sub{bottom:-.38em}.ql-editor ol{padding-left:0!important}
|
|
2
2
|
`);var N=class t{constructor(){this.quill=null;this.app_=null;this.t=0;}static getInstance(){return t.instance||(t.instance=new t),t.instance}async init(i){if(this.t=await I(),this.app_=this.t?i:null,this.quill)return this.quill;let n=document.getElementById("textInnerEditor");if(n)this.quill=this.app_?.editor?.quill||null;else return n=document.createElement("div"),n.id="textInnerEditor",n.style.position="fixed",n.style.transformOrigin="left top",n.style.overflowWrap="break-word",n.style.wordBreak="break-all",n.style.visibility="hidden",document.body.appendChild(n),this.quill=new w("#textInnerEditor",{theme:void 0,modules:{toolbar:false,keyboard:{bindings:{enter:{key:"Enter",handler:e=>{if(!this.t)return true;let[o]=this.quill.getLine(e.index),s=w.import("blots/block");if(!s?.bubbleFormats)return true;let a=s.bubbleFormats(o),r=new Delta().retain(e.index).delete(e.length).insert(`
|
|
3
3
|
`,a);return this.quill.updateContents(r,w.sources.USER),this.quill.setSelection(e.index+1,w.sources.SILENT),false}}}}}}),this.app_?.editor&&(this.app_.editor.quill=this.quill),this.registerFonts(),this.quill}getQuill(){return this.t?this.quill:null}getCanvas(){return this.t?this.app_:null}getSelection(){return this.t?this.quill?.selection.savedRange:null}registerFonts(){this.t&&(FontStyle.whitelist=void 0,w.register("formats/font",FontStyle,true));}isMultiSelect(){return !this.t||!this.app_?.editor?false:this.app_.editor.multiple===true}dateEdit(i,n=0,e){let{editor:o}=this.app_||{};if(!o)return;let s=e||o.leafList?.list,a=r=>{n&&(r.tag==="Box"||r.name==="Text")?i(r.children?.[0]||r):i(r);};if(s?.length)if(Array.isArray(s)&&s.length>1){this.app_.lockLayout();let r=s.length*this.t;for(let l=0;l<r;l++)a(s[l]);this.app_.unlockLayout(),o.updateEditBox();}else this.t&&a(s[0]);}},c=N.getInstance();var q=class extends Box{get __tag(){return "HtmlText"}constructor(i){let{text:n,fontSize:e,fontFamily:o,lineHeight:s,letterSpacing:a,textShadow:r,alignContent:l,...d}=i||{};super({editOuter:"TextEditTool",name:"HtmlText",x:0,y:0,editable:true,draggable:true,overflow:"show",...d}),i&&this.createTextElement(i);}createTextElement(i){let{text:n,fontSize:e,fontFamily:o,lineHeight:s,letterSpacing:a,textShadow:r,alignContent:l}=i,d="<style>p{margin:0;}sub,sup{font-size:63%;}.ql-ui{position:absolute}ol,ul{counter-reset:list-0;padding-left:1.5em;margin:0}ol>li,ul>li{counter-increment:list-0;list-style-type:none;position:relative;padding-left:0;margin:0}ol>li::before{content:counter(list-0,decimal) '. ';position:absolute;left:-1.5em;width:1.2em;text-align:right}ul>li::before{content:'\u2022';position:absolute;left:-1.5em;width:1.2em;text-align:right}li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-left{text-align:left}.ql-align-justify{text-align:justify}</style>",u=`<div style="ove
|
|
4
4
|
rflow-wrap:break-word;word-break:break-all;"><p style="font-size: ${e}px; line-height: ${s}; letter-spacing: ${a}px; text-shadow: ${r};"><strong>Hello World</strong></p></div>`;if(i.children?.length>0)return;let f=new HTMLText({name:"Text",text:d+(n||u),x:0,y:0,data:{canChangeBox:false,textData:{fontFamily:o,fontSize:e,lineHeight:s,letterSpacing:a||0,textShadow:r,alignContent:l}},editConfig:{selectedStyle:{strokeWidth:0}}});this.add(f);}};q=b([registerUI()],q);export{q as HtmlText,I as checkLicense,U as getLicenseInfo,c as htmlTextManage,At as setHTMLText,et as setLicense,p as updataHtmlText};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chenyomi/leafer-htmltext-edit",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.2",
|
|
4
4
|
"description": "A text editor plugin for Leafer UI with HTML text support",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -49,7 +49,6 @@
|
|
|
49
49
|
"@leafer-in/editor": "^2.0.0",
|
|
50
50
|
"@leafer-in/html": "^2.0.0",
|
|
51
51
|
"@leafer-ui/core": "^2.0.0",
|
|
52
|
-
"leafer-ui": "^2.0.0",
|
|
53
52
|
"quill": "^2.0.0"
|
|
54
53
|
},
|
|
55
54
|
"dependencies": {
|