@unifiedsoftware/react-editor 2.0.0-beta.9 → 2.0.1-beta.1

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 (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var ue=Object.create;var R=Object.defineProperty;var pe=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var me=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})},J=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of fe(e))!he.call(r,n)&&n!==t&&R(r,n,{get:()=>e[n],enumerable:!(o=pe(e,n))||o.enumerable});return r};var ge=(r,e,t)=>(t=r!=null?ue(de(r)):{},J(e||!r||!r.__esModule?R(t,"default",{value:r,enumerable:!0}):t,r)),be=r=>J(R({},"__esModule",{value:!0}),r);var Ce={};me(Ce,{Editor:()=>Te,isToolbarButtonIcon:()=>ye,isToolbarButtonLabel:()=>M,isToolbarButtonLabelIcon:()=>L});module.exports=be(Ce);var se=require("@unifiedsoftware/react-ui"),K=ge(require("dompurify"));var F=[["undo","redo"],["font","fontSize"],["bold","italic","underline","strikethrough"],["ol","ul"],["outdent","indent"],["left","center","right","justify"],["link","unlink","image","source"]];var Me=require("jodit/es5/jodit.min.css"),Le=require("jodit/esm/plugins/source/source"),Ve=require("jodit/esm/plugins/indent/indent"),Ke=require("jodit/esm/plugins/justify/justify"),Je=require("jodit/esm/plugins/select/select"),Fe=require("jodit/esm/plugins/select-cells/select-cells"),Ue=require("jodit/esm/plugins/placeholder/placeholder"),A=require("jodit"),b=require("react"),ne=require("react-dom/server");function M(r){return r.label!==void 0&&r.icon===void 0}function ye(r){return r.label===void 0&&r.icon!==void 0}function L(r){return r.label!==void 0&&r.icon!==void 0}var G=require("jodit/esm/config.js"),f=require("jodit/esm/core/constants.js"),T=require("jodit/esm/core/decorators"),q=require("jodit/esm/core/dom/dom.js"),p=require("jodit/esm/core/helpers"),Q=require("jodit/esm/core/plugin"),X=require("jodit/esm/core/ui/popup/popup.js"),$=require("jodit/esm/jodit.js");var x=require("jodit/esm/core/dom/dom.js");function U(r){let{startContainer:e,startOffset:t}=r;if(x.Dom.isText(e))return e.nodeValue?.substr(0,t)??"";let o=e.childNodes[t];if(!o)return"";if(x.Dom.isText(o))return o.nodeValue??"";let n=x.Dom.findNotEmptyNeighbor(o,!0,e);return x.Dom.isText(n)?o.nodeValue??"":""}function W(r,e){let{startContainer:t,startOffset:o}=r;if(x.Dom.isText(t)||(t=t.childNodes[o-1],x.Dom.isText(t)&&(o=t.nodeValue?.length??0)),x.Dom.isText(t)){let n=t.nodeValue??"",s=n.substring(0,o),i=n.substring(o),a=s.split(" ");a[a.length-1]="";let u=a.join(" ");return t.nodeValue=u+i,r.setStart(t,u.length),void r.insertNode(e)}}var B=require("jodit/esm/core/decorators"),Y=require("jodit/esm/core/ui/group/group.js");var P=require("jodit/esm/core/helpers/checker"),z=require("jodit/esm/core/ui/element.js"),O=class extends z.UIElement{className(){return"AutocompleteItem"}constructor(e,t){super(e),this.item=t;let{container:o}=this;if((0,P.isFunction)(t.itemRenderer)){let n=t.itemRenderer(t);(0,P.isString)(n)?o.innerHTML=n:o.appendChild(n)}else o.innerText=t.title??t.value}};var H=require("jodit/esm/core/ui/element.js"),D=class extends H.UIElement{className(){return"AutocompleteLabel"}constructor(e){super(e);let{container:t}=this;t.innerText="Suggestions"}};var _=function(r,e,t,o){var n,s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var a=r.length-1;a>=0;a--)(n=r[a])&&(i=(s<3?n(i):s>3?n(e,t,i):n(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},v=class extends Y.UIGroup{constructor(){super(...arguments),this.elements=[],this.currentSelection=-1}className(){return"Autocomplete"}onChangeSelection(e,t){t!=null&&this.elements[t]?.setMod("active",!1),this.elements[this.currentSelection].setMod("active",!0),this.elements[this.currentSelection].container.scrollIntoView(!1)}build(e){this.clear();var t=new D(this.jodit);this.append(t),e.forEach((o,n)=>{let s=new O(this.jodit,o);this.j.e.on(s.container,"mousedown touchstart",i=>{i.preventDefault()}).on(s.container,"click",()=>{this.currentSelection=n,this.select()}),this.append(s)}),this.currentSelection=1,this.onChangeSelection()}selectNext(){this.currentSelection+1<=this.elements.length-1?this.currentSelection+=1:this.currentSelection=0}selectPrevious(){this.currentSelection-1>=0?this.currentSelection-=1:this.currentSelection=this.elements.length-1}select(){this.j.e.fire("select.autocomplete",this.elements[this.currentSelection].item)}};_([(0,B.watch)("currentSelection")],v.prototype,"onChangeSelection",null),v=_([B.component],v);var S=function(r,e,t,o){var n,s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var a=r.length-1;a>=0;a--)(n=r[a])&&(i=(s<3?n(i):s>3?n(e,t,i):n(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};G.Config.prototype.autocomplete={sources:[],maxItems:50,isMatchedQuery:(r,e)=>e.toLowerCase().indexOf(r.toLowerCase())===0,itemRenderer:r=>r.title??r.value,insertValueRenderer:r=>r.value+"&nbsp;"};var d=class r extends Q.Plugin{constructor(e){super(e),this.hasStyle=!$.Jodit.fatMode,this.sources=[]}afterInit(e){this.popup=new X.Popup(e),this.popup.setMod("padding",!1),this.list=new v(e),this.popup.setContent(this.list.container),e.e.on("select.autocomplete",t=>{let o=t.value;(0,p.isFunction)(t.insertValueRenderer)&&(o=t.insertValueRenderer(t)),q.Dom.isNode(o)||(o=e.createInside.fromHTML(o)),W(e.s.range,o),this.j.s.setCursorAfter(o),this.j.synchronizeValues(),this.popup.close()}).on("keydown.autocomplete",this.onKeyDown).on("keydown.autocomplete",this.onKeyControlDown,{top:!0}).on("beforeEnter.autocomplete",this.onEnter,{top:!0}).on("autocomplete.autocomplete",this.onAutoComplete).on("registerAutocompleteSource.autocomplete",this.registerAutocompleteSource)}registerAutocompleteSource(e){this.sources.push(e)}static isControlKey(e){return e===f.KEY_DOWN||e===f.KEY_UP||e===f.KEY_ENTER||e===f.KEY_TAB}async onKeyDown(e){if(e.key===f.KEY_ESC)return void(this.popup.isOpened&&this.popup.close());let{s:t}=this.j;if(r.isControlKey(e.key)||!t.isInsideArea||!t.isCollapsed)return;let o=this.j.s.sel?.rangeCount?this.j.s.sel?.getRangeAt(0):null,n=o&&U(o).split(" ").pop();if(n&&(0,p.trim)(n).length){let s=await this.onAutoComplete(n);if(s.length)return this.openPopup(s)}this.popup.isOpened&&this.popup.close()}onKeyControlDown(e){if(this.popup.isOpened&&r.isControlKey(e.key)){switch(e.key){case f.KEY_DOWN:this.list.selectNext();break;case f.KEY_UP:this.list.selectPrevious();break;case f.KEY_TAB:this.list.select()}return this.j.e.stopPropagation(e.type),!1}}onEnter(){if(this.popup.isOpened)return this.list.select(),!1}async onAutoComplete(e){let t=[];return await Promise.all(this.sources.concat(this.j.o.autocomplete.sources).map(async o=>{t.push(...await this.resolveFeed(e,o))})),t}async resolveFeed(e,t,o){let n;if((0,p.isPromise)(t)&&(t=await t),(0,p.isFunction)(t))n=await t(e);else if((0,p.isArray)(t)){let s=t,{isMatchedQuery:i}=this.j.o.autocomplete;n=s.filter(a=>(0,p.isString)(a)?i(e,a):i(e,a.value)).map(a=>(0,p.isString)(a)?{title:a,value:a}:a)}else n=await this.resolveFeed(e,t.feed,t);if(this.j.isDestructed)return[];if(n&&(0,p.isArray)(n)){let{itemRenderer:s,insertValueRenderer:i,maxItems:a}=this.j.o.autocomplete;return n=n.map(u=>({itemRenderer:o?.itemRenderer??s,insertValueRenderer:o?.insertValueRenderer??i,...u})),n.slice(0,a)}return[]}openPopup(e){this.list.build(e),this.popup.open(()=>{let{j:t}=this,o=t.s.range.getBoundingClientRect(),n={left:o.left,top:o.top,height:o.height,width:o.width};if(t.o.iframe&&t.iframe){let s=(0,p.position)(t.iframe,t);n.top+=s.top,n.left+=s.left}return n})}beforeDestruct(e){e.e.off(this.list).off("keydown.autocomplete",this.onKeyDown).off("autocomplete.autocomplete",this.onAutoComplete).off(".autocomplete"),this.list.destruct(),this.popup.destruct()}};d.requires=["enter"],S([T.autobind],d.prototype,"registerAutocompleteSource",null),S([(0,T.debounce)()],d.prototype,"onKeyDown",null),S([T.autobind],d.prototype,"onKeyControlDown",null),S([T.autobind],d.prototype,"onEnter",null),S([T.autobind],d.prototype,"onAutoComplete",null),S([T.autobind],d.prototype,"resolveFeed",null);var ee=require("jodit/esm/config.js"),I=require("jodit/esm/core/decorators"),g=require("jodit/esm/core/dom/dom.js"),te=require("jodit/esm/core/helpers/utils/attr.js"),oe=require("jodit/esm/core/plugin/plugin.js"),Z=function(r,e,t,o){let n,s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(let a=r.length-1;a>=0;a--)(n=r[a])&&(i=(s<3?n(i):s>3?n(e,t,i):n(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};ee.Config.prototype.highlightSignature={schema:{},excludeTags:["pre"]};var j=class r extends oe.Plugin{constructor(){super(...arguments),this.idleId=0}afterInit(e){Object.keys(e.o.highlightSignature.schema).length&&e.e.on("change afterSetMode",this.walkNodes).on("afterGetValueFromEditor",r.removeUtilWrappers)}beforeDestruct(e){e.e.off("change afterSetMode",this.walkNodes).off("afterGetValueFromEditor",r.removeUtilWrappers)}walkNodes(){if(!this.j.isEditorMode())return;this.checkUtilsBoxToSchema();let{j:e}=this,t=e.ed.createNodeIterator(e.editor,NodeFilter.SHOW_TEXT);this.j.async.cancelIdleCallback(this.idleId),this.workLoop(t)}runWorker(e,t){let o;this.j.e.mute();try{do{if(o=t.nextNode(),!o||this.checkNormalizing(o))return;this.checkReplaceSchemas(o)}while(o&&e.timeRemaining()>0)}finally{this.j.e.unmute()}this.workLoop(t)}workLoop(e){this.idleId=this.j.async.requestIdleCallback(t=>{this.runWorker(t,e)},{timeout:this.j.defaultTimeout})}checkNormalizing(e){return!!g.Dom.isText(e.nextSibling)&&(this.j.editor.normalize(),this.walkNodes(),!0)}checkReplaceSchemas(e){if(r.hasUtilWrapper(e))return;let t=e.nodeValue;if(t==null)return;let{j:o}=this,n=o.o.highlightSignature;for(let s in n.schema){let i=RegExp(s);if(i.test(t)){let a=t.match(i);if(!a||a.index===void 0)continue;let u=n.schema[s](this.j,a);if(u)return g.Dom.markTemporary(u,{dataHighlightSchema:s}),void this.replaceMatchedTextToElm(e,t,a,u)}}}replaceMatchedTextToElm(e,t,o,n){let{j:s}=this,{range:i}=s.s,a=i.startContainer===e,u=i.startOffset,h=o.index??0;e.nodeValue=t.substring(0,h);let C=t.substring(h+o[0].length);if(C.length){let c=s.createInside.text(C);g.Dom.after(e,c)}n.innerText=o[0],g.Dom.after(e,n),a&&this.restoreCursorPosition(u,e,n.firstChild,n.nextSibling)}static hasUtilWrapper(e){return g.Dom.isTemporary(e.parentElement)}static removeUtilWrappers(e){e.value=g.Dom.replaceTemporaryFromString(e.value)}restoreCursorPosition(e,...t){for(let o of t)if(o&&o.nodeValue){let n=o.nodeValue;if(n.length>=e){let s=this.j.s.createRange();s.setStart(o,e),this.j.s.selectRange(s,!1);break}e-=n.length}}checkUtilsBoxToSchema(){g.Dom.temporaryList(this.j.editor).forEach(e=>{let t=(0,te.attr)(e,"dataHighlightSchema");if(!t)return;let o=RegExp(t),n=e.innerText??"";o.test(n)&&!n.replace(o,"").length||(this.j.s.save(),g.Dom.unwrap(e),this.j.s.restore())})}};Z([(0,I.debounce)()],j.prototype,"walkNodes",null),Z([I.autobind],j.prototype,"runWorker",null);var ie=require("react/jsx-runtime");A.Jodit.plugins.add("autocomplete",d);A.Jodit.plugins.add("highlight-signature",j);function re(r){return typeof r=="string"?r:(0,ne.renderToString)(r)}var xe={undo:"undo",redo:"redo",font:"font",fontSize:"fontsize",bold:"bold",italic:"italic",underline:"underline",strikethrough:"strikethrough",ol:"ol",ul:"ul",outdent:"outdent",indent:"indent",left:"left",center:"center",right:"right",justify:"justify",link:"link",unlink:"unlink",image:"image",source:"source",brush:"brush"},V=({value:r,height:e,readOnly:t,toolbar:o,mention:n,onChange:s,onBlur:i,onPaste:a})=>{let u=(0,b.useRef)(null),h=(0,b.useRef)(null),C=(0,b.useMemo)(()=>o?.buttons?.map(c=>({buttons:c.map(l=>typeof l=="string"?xe[l]:L(l)?{name:l.label,tooltip:l.tooltip,icon:re(l.icon),exec:()=>{l.onAction()}}:M(l)?{name:l.label,tooltip:l.tooltip,exec:()=>{l.onAction()}}:{name:"",icon:re(l.icon),tooltip:l.tooltip,exec:()=>{l.onAction()}})})),[o?.buttons]);return(0,b.useEffect)(()=>{let c=u.current;if(!c)return;let l={iframe:!0,height:e??"480px",readonly:t,statusbar:!1,toolbarAdaptive:!0,...t?{toolbar:!1}:{buttons:C,buttonsXS:C,buttonsSM:C,buttonsMD:C}};console.log(n);let y=A.Jodit.make(c,{...l,...n?{highlightSignature:{schema:{"(^|\\s)(@\\w+)(?=\\s|$)":m=>m.createInside.element("strong",{style:{color:"blue"}})}},autocomplete:{itemRenderer:m=>{try{return n.renderItem?.({data:m,props:{}})}catch{return m.value}},sources:[n.data]}}:{},events:{paste:m=>{if(a){m.preventDefault();let E=m.clipboardData,ae=E.getData("text/html"),N=E.getData("text/plain");N=N.split(`
1
+ "use strict";var ue=Object.create;var R=Object.defineProperty;var pe=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var me=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})},J=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of fe(e))!he.call(r,n)&&n!==t&&R(r,n,{get:()=>e[n],enumerable:!(o=pe(e,n))||o.enumerable});return r};var ge=(r,e,t)=>(t=r!=null?ue(de(r)):{},J(e||!r||!r.__esModule?R(t,"default",{value:r,enumerable:!0}):t,r)),be=r=>J(R({},"__esModule",{value:!0}),r);var Ce={};me(Ce,{Editor:()=>Te,isToolbarButtonIcon:()=>ye,isToolbarButtonLabel:()=>M,isToolbarButtonLabelIcon:()=>L});module.exports=be(Ce);var se=require("@unifiedsoftware/react-ui"),K=ge(require("dompurify"));var F=[["undo","redo"],["font","fontSize"],["bold","italic","underline","strikethrough"],["ol","ul"],["outdent","indent"],["left","center","right","justify"],["link","unlink","image","source"]];var Me=require("jodit/es5/jodit.min.css"),Le=require("jodit/esm/plugins/source/source"),Ve=require("jodit/esm/plugins/indent/indent"),Ke=require("jodit/esm/plugins/justify/justify"),Je=require("jodit/esm/plugins/select/select"),Fe=require("jodit/esm/plugins/select-cells/select-cells"),Ue=require("jodit/esm/plugins/placeholder/placeholder"),A=require("jodit"),b=require("react"),ne=require("react-dom/server");function M(r){return r.label!==void 0&&r.icon===void 0}function ye(r){return r.label===void 0&&r.icon!==void 0}function L(r){return r.label!==void 0&&r.icon!==void 0}var G=require("jodit/esm/config.js"),f=require("jodit/esm/core/constants.js"),T=require("jodit/esm/core/decorators"),q=require("jodit/esm/core/dom/dom.js"),p=require("jodit/esm/core/helpers"),Q=require("jodit/esm/core/plugin"),X=require("jodit/esm/core/ui/popup/popup.js"),$=require("jodit/esm/jodit.js");var x=require("jodit/esm/core/dom/dom.js");function U(r){let{startContainer:e,startOffset:t}=r;if(x.Dom.isText(e))return e.nodeValue?.substr(0,t)??"";let o=e.childNodes[t];if(!o)return"";if(x.Dom.isText(o))return o.nodeValue??"";let n=x.Dom.findNotEmptyNeighbor(o,!0,e);return x.Dom.isText(n)?o.nodeValue??"":""}function W(r,e){let{startContainer:t,startOffset:o}=r;if(x.Dom.isText(t)||(t=t.childNodes[o-1],x.Dom.isText(t)&&(o=t.nodeValue?.length??0)),x.Dom.isText(t)){let n=t.nodeValue??"",s=n.substring(0,o),i=n.substring(o),a=s.split(" ");a[a.length-1]="";let u=a.join(" ");return t.nodeValue=u+i,r.setStart(t,u.length),void r.insertNode(e)}}var B=require("jodit/esm/core/decorators"),Y=require("jodit/esm/core/ui/group/group.js");var P=require("jodit/esm/core/helpers/checker"),z=require("jodit/esm/core/ui/element.js"),O=class extends z.UIElement{className(){return"AutocompleteItem"}constructor(e,t){super(e),this.item=t;let{container:o}=this;if((0,P.isFunction)(t.itemRenderer)){let n=t.itemRenderer(t);(0,P.isString)(n)?o.innerHTML=n:o.appendChild(n)}else o.innerText=t.title??t.value}};var H=require("jodit/esm/core/ui/element.js"),D=class extends H.UIElement{className(){return"AutocompleteLabel"}constructor(e){super(e);let{container:t}=this;t.innerText="Suggestions"}};var _=function(r,e,t,o){var n,s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var a=r.length-1;a>=0;a--)(n=r[a])&&(i=(s<3?n(i):s>3?n(e,t,i):n(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},v=class extends Y.UIGroup{constructor(){super(...arguments),this.elements=[],this.currentSelection=-1}className(){return"Autocomplete"}onChangeSelection(e,t){t!=null&&this.elements[t]?.setMod("active",!1),this.elements[this.currentSelection].setMod("active",!0),this.elements[this.currentSelection].container.scrollIntoView(!1)}build(e){this.clear();var t=new D(this.jodit);this.append(t),e.forEach((o,n)=>{let s=new O(this.jodit,o);this.j.e.on(s.container,"mousedown touchstart",i=>{i.preventDefault()}).on(s.container,"click",()=>{this.currentSelection=n,this.select()}),this.append(s)}),this.currentSelection=1,this.onChangeSelection()}selectNext(){this.currentSelection+1<=this.elements.length-1?this.currentSelection+=1:this.currentSelection=0}selectPrevious(){this.currentSelection-1>=0?this.currentSelection-=1:this.currentSelection=this.elements.length-1}select(){this.j.e.fire("select.autocomplete",this.elements[this.currentSelection].item)}};_([(0,B.watch)("currentSelection")],v.prototype,"onChangeSelection",null),v=_([B.component],v);var S=function(r,e,t,o){var n,s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(var a=r.length-1;a>=0;a--)(n=r[a])&&(i=(s<3?n(i):s>3?n(e,t,i):n(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};G.Config.prototype.autocomplete={sources:[],maxItems:50,isMatchedQuery:(r,e)=>e.toLowerCase().indexOf(r.toLowerCase())===0,itemRenderer:r=>r.title??r.value,insertValueRenderer:r=>r.value+"&nbsp;"};var d=class r extends Q.Plugin{constructor(e){super(e),this.hasStyle=!$.Jodit.fatMode,this.sources=[]}afterInit(e){this.popup=new X.Popup(e),this.popup.setMod("padding",!1),this.list=new v(e),this.popup.setContent(this.list.container),e.e.on("select.autocomplete",t=>{let o=t.value;(0,p.isFunction)(t.insertValueRenderer)&&(o=t.insertValueRenderer(t)),q.Dom.isNode(o)||(o=e.createInside.fromHTML(o)),W(e.s.range,o),this.j.s.setCursorAfter(o),this.j.synchronizeValues(),this.popup.close()}).on("keydown.autocomplete",this.onKeyDown).on("keydown.autocomplete",this.onKeyControlDown,{top:!0}).on("beforeEnter.autocomplete",this.onEnter,{top:!0}).on("autocomplete.autocomplete",this.onAutoComplete).on("registerAutocompleteSource.autocomplete",this.registerAutocompleteSource)}registerAutocompleteSource(e){this.sources.push(e)}static isControlKey(e){return e===f.KEY_DOWN||e===f.KEY_UP||e===f.KEY_ENTER||e===f.KEY_TAB}async onKeyDown(e){if(e.key===f.KEY_ESC)return void(this.popup.isOpened&&this.popup.close());let{s:t}=this.j;if(r.isControlKey(e.key)||!t.isInsideArea||!t.isCollapsed)return;let o=this.j.s.sel?.rangeCount?this.j.s.sel?.getRangeAt(0):null,n=o&&U(o).split(" ").pop();if(n&&(0,p.trim)(n).length){let s=await this.onAutoComplete(n);if(s.length)return this.openPopup(s)}this.popup.isOpened&&this.popup.close()}onKeyControlDown(e){if(this.popup.isOpened&&r.isControlKey(e.key)){switch(e.key){case f.KEY_DOWN:this.list.selectNext();break;case f.KEY_UP:this.list.selectPrevious();break;case f.KEY_TAB:this.list.select()}return this.j.e.stopPropagation(e.type),!1}}onEnter(){if(this.popup.isOpened)return this.list.select(),!1}async onAutoComplete(e){let t=[];return await Promise.all(this.sources.concat(this.j.o.autocomplete.sources).map(async o=>{t.push(...await this.resolveFeed(e,o))})),t}async resolveFeed(e,t,o){let n;if((0,p.isPromise)(t)&&(t=await t),(0,p.isFunction)(t))n=await t(e);else if((0,p.isArray)(t)){let s=t,{isMatchedQuery:i}=this.j.o.autocomplete;n=s.filter(a=>(0,p.isString)(a)?i(e,a):i(e,a.value)).map(a=>(0,p.isString)(a)?{title:a,value:a}:a)}else n=await this.resolveFeed(e,t.feed,t);if(this.j.isDestructed)return[];if(n&&(0,p.isArray)(n)){let{itemRenderer:s,insertValueRenderer:i,maxItems:a}=this.j.o.autocomplete;return n=n.map(u=>({itemRenderer:o?.itemRenderer??s,insertValueRenderer:o?.insertValueRenderer??i,...u})),n.slice(0,a)}return[]}openPopup(e){this.list.build(e),this.popup.open(()=>{let{j:t}=this,o=t.s.range.getBoundingClientRect(),n={left:o.left,top:o.top,height:o.height,width:o.width};if(t.o.iframe&&t.iframe){let s=(0,p.position)(t.iframe,t);n.top+=s.top,n.left+=s.left}return n})}beforeDestruct(e){e.e.off(this.list).off("keydown.autocomplete",this.onKeyDown).off("autocomplete.autocomplete",this.onAutoComplete).off(".autocomplete"),this.list.destruct(),this.popup.destruct()}};d.requires=["enter"],S([T.autobind],d.prototype,"registerAutocompleteSource",null),S([(0,T.debounce)()],d.prototype,"onKeyDown",null),S([T.autobind],d.prototype,"onKeyControlDown",null),S([T.autobind],d.prototype,"onEnter",null),S([T.autobind],d.prototype,"onAutoComplete",null),S([T.autobind],d.prototype,"resolveFeed",null);var ee=require("jodit/esm/config.js"),I=require("jodit/esm/core/decorators"),g=require("jodit/esm/core/dom/dom.js"),te=require("jodit/esm/core/helpers/utils/attr.js"),oe=require("jodit/esm/core/plugin/plugin.js"),Z=function(r,e,t,o){let n,s=arguments.length,i=s<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(r,e,t,o);else for(let a=r.length-1;a>=0;a--)(n=r[a])&&(i=(s<3?n(i):s>3?n(e,t,i):n(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i};ee.Config.prototype.highlightSignature={schema:{},excludeTags:["pre"]};var j=class r extends oe.Plugin{constructor(){super(...arguments),this.idleId=0}afterInit(e){Object.keys(e.o.highlightSignature.schema).length&&e.e.on("change afterSetMode",this.walkNodes).on("afterGetValueFromEditor",r.removeUtilWrappers)}beforeDestruct(e){e.e.off("change afterSetMode",this.walkNodes).off("afterGetValueFromEditor",r.removeUtilWrappers)}walkNodes(){if(!this.j.isEditorMode())return;this.checkUtilsBoxToSchema();let{j:e}=this,t=e.ed.createNodeIterator(e.editor,NodeFilter.SHOW_TEXT);this.j.async.cancelIdleCallback(this.idleId),this.workLoop(t)}runWorker(e,t){let o;this.j.e.mute();try{do{if(o=t.nextNode(),!o||this.checkNormalizing(o))return;this.checkReplaceSchemas(o)}while(o&&e.timeRemaining()>0)}finally{this.j.e.unmute()}this.workLoop(t)}workLoop(e){this.idleId=this.j.async.requestIdleCallback(t=>{this.runWorker(t,e)},{timeout:this.j.defaultTimeout})}checkNormalizing(e){return!!g.Dom.isText(e.nextSibling)&&(this.j.editor.normalize(),this.walkNodes(),!0)}checkReplaceSchemas(e){if(r.hasUtilWrapper(e))return;let t=e.nodeValue;if(t==null)return;let{j:o}=this,n=o.o.highlightSignature;for(let s in n.schema){let i=RegExp(s);if(i.test(t)){let a=t.match(i);if(!a||a.index===void 0)continue;let u=n.schema[s](this.j,a);if(u)return g.Dom.markTemporary(u,{dataHighlightSchema:s}),void this.replaceMatchedTextToElm(e,t,a,u)}}}replaceMatchedTextToElm(e,t,o,n){let{j:s}=this,{range:i}=s.s,a=i.startContainer===e,u=i.startOffset,h=o.index??0;e.nodeValue=t.substring(0,h);let C=t.substring(h+o[0].length);if(C.length){let c=s.createInside.text(C);g.Dom.after(e,c)}n.innerText=o[0],g.Dom.after(e,n),a&&this.restoreCursorPosition(u,e,n.firstChild,n.nextSibling)}static hasUtilWrapper(e){return g.Dom.isTemporary(e.parentElement)}static removeUtilWrappers(e){e.value=g.Dom.replaceTemporaryFromString(e.value)}restoreCursorPosition(e,...t){for(let o of t)if(o&&o.nodeValue){let n=o.nodeValue;if(n.length>=e){let s=this.j.s.createRange();s.setStart(o,e),this.j.s.selectRange(s,!1);break}e-=n.length}}checkUtilsBoxToSchema(){g.Dom.temporaryList(this.j.editor).forEach(e=>{let t=(0,te.attr)(e,"dataHighlightSchema");if(!t)return;let o=RegExp(t),n=e.innerText??"";o.test(n)&&!n.replace(o,"").length||(this.j.s.save(),g.Dom.unwrap(e),this.j.s.restore())})}};Z([(0,I.debounce)()],j.prototype,"walkNodes",null),Z([I.autobind],j.prototype,"runWorker",null);var ie=require("react/jsx-runtime");A.Jodit.plugins.add("autocomplete",d);A.Jodit.plugins.add("highlight-signature",j);function re(r){return typeof r=="string"?r:(0,ne.renderToString)(r)}var xe={undo:"undo",redo:"redo",font:"font",fontSize:"fontsize",bold:"bold",italic:"italic",underline:"underline",strikethrough:"strikethrough",ol:"ol",ul:"ul",outdent:"outdent",indent:"indent",left:"left",center:"center",right:"right",justify:"justify",link:"link",unlink:"unlink",image:"image",source:"source",brush:"brush"},V=({value:r,height:e,readOnly:t,toolbar:o,mention:n,onChange:s,onBlur:i,onPaste:a})=>{let u=(0,b.useRef)(null),h=(0,b.useRef)(null),C=(0,b.useMemo)(()=>o?.buttons?.map(c=>({buttons:c.map(l=>typeof l=="string"?xe[l]:L(l)?{name:l.label,tooltip:l.tooltip,icon:re(l.icon),exec:()=>{l.onAction()}}:M(l)?{name:l.label,tooltip:l.tooltip,exec:()=>{l.onAction()}}:{name:"",icon:re(l.icon),tooltip:l.tooltip,exec:()=>{l.onAction()}})})),[o?.buttons]);return(0,b.useEffect)(()=>{let c=u.current;if(!c)return;let l={iframe:!0,height:e??"480px",readonly:t,statusbar:!1,toolbarAdaptive:!0,...t?{toolbar:!1}:{buttons:C,buttonsXS:C,buttonsSM:C,buttonsMD:C}},y=A.Jodit.make(c,{...l,...n?{highlightSignature:{schema:{"(^|\\s)(@\\w+)(?=\\s|$)":m=>m.createInside.element("strong",{style:{color:"blue"}})}},autocomplete:{itemRenderer:m=>{try{return n.renderItem?.({data:m,props:{}})}catch{return m.value}},sources:[n.data]}}:{},events:{paste:m=>{if(a){m.preventDefault();let E=m.clipboardData,ae=E.getData("text/html"),N=E.getData("text/plain");N=N.split(`
2
2
  `).map(ce=>`<p>${ce.trim()}</p>`).join("");let le=a({html:ae,plain:N});y.selection.insertHTML(le)}return m}}});y.container.style.cssText="border: 0; border-radius: 0; background-color: #fff;",h.current=y;let w=y.iframe?.contentDocument;if(w){let m=w.head.getElementsByTagName("style")??[];Array.from(m).forEach(E=>E.remove())}return()=>{y?.destruct()}},[]),(0,b.useEffect)(()=>{let c=h.current;if(!c)return;let l=w=>{s?.(w)},y=()=>{i?.(c.value)};return c.events.on("change",l),c.events.on("blur",y),()=>{c?.events?.off("change",l),c?.events?.off("blur",y)}},[s,i]),(0,b.useEffect)(()=>{let c=h.current;c&&c.value!==r&&(c.value=r??"")},[r]),(0,ie.jsx)("div",{ref:u})};var k=require("react/jsx-runtime"),Te=({value:r,readOnly:e,toolbar:t,onChange:o,onBlur:n,onPaste:s,...i})=>{let a=h=>{o?.(K.default.sanitize(h))},u=h=>{n?.(K.default.sanitize(h))};return(0,k.jsx)(k.Fragment,{children:e?(0,k.jsx)(se.Html,{src:r}):(0,k.jsx)(V,{...i,value:r,toolbar:{buttons:t?.buttons??F},onChange:a,onBlur:u,onPaste:s})})};0&&(module.exports={Editor,isToolbarButtonIcon,isToolbarButtonLabel,isToolbarButtonLabelIcon});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unifiedsoftware/react-editor",
3
- "version": "2.0.0-beta.9",
3
+ "version": "2.0.1-beta.1",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -21,7 +21,7 @@
21
21
  "react-dom": ">=18"
22
22
  },
23
23
  "dependencies": {
24
- "@unifiedsoftware/react-ui": "2.0.0-beta.8",
24
+ "@unifiedsoftware/react-ui": "2.0.1-beta.1",
25
25
  "dompurify": "^3.1.6",
26
26
  "jodit": "4.2.24"
27
27
  },