UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

6 lines (5 loc) 2.58 kB
var m=Object.defineProperty;var p=(l,e)=>m(l,"name",{value:e,configurable:!0});var n,h=function(l,e,t,o){var r=arguments.length,s=r<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,t):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(l,e,t,o);else for(var d=l.length-1;d>=0;d--)(c=l[d])&&(s=(r<3?c(s):r>3?c(e,t,s):c(e,t))||s);return r>3&&s&&Object.defineProperty(e,t,s),s},f;import{component as u,throttle as v,watch as a}from"jodit/esm/core/decorators/index.js";import{position as g}from"jodit/esm/core/helpers/size/position.js";import{UIGroup as I}from"jodit/esm/core/ui/group/group.js";import{FileBrowserItem as _}from"jodit/esm/modules/file-browser/builders/item.js";import{UIBrowserItem as y}from"../item/item.js";import{UISelectItems as M}from"../../../../traits/select-items/select-items.js";let i=f=(n=class extends I{className(){return"UIVirtualScroll"}render(){return`<div> <div class="&__empty-message">~There are no files~</div> <div class='&__loader'></div> <div class='&__drag-area'>~Drop image~</div> </div>`}constructor(e,t){super(e),this.stateManager=t,this.syncMod=!0,this.addItemsSelector()}reconcile(e){const t=this.elements.findIndex((o,r)=>!e[r]||o.item.uniqueHashKey!==_.create(e[r]).uniqueHashKey);if(t>-1){for(let o=t;o<this.elements.length;o+=1)this.elements[o].destruct();this.elements.length=t}return t}build(e){const t=this.reconcile(e);e.slice(t>-1?t:this.elements.length).forEach(o=>{const r=new y(this.jodit,o);Object.keys(this.mods).forEach(s=>{r.setMod(s,this.mods[s])}),this.append(r)}),this.setMod("empty",!this.elements.length)}onScrollLoadChunk(){!this.stateManager.isFavoriteItems&&this.container.scrollHeight-(this.container.scrollTop+this.container.offsetHeight)<this.j.o.pixelOffsetLoadNewChunk&&this.j.loadingManager.loadItemsChunk()}onDragOver(e){e.preventDefault(),this.setMod("dragover",!0)}onDragLeave(e){e.preventDefault(),this.setMod("dragover",!1)}addItemsSelector(){M.install(this)}static intersectRect(e,t){return!(t.left>e.left+e.width||t.left+t.width<e.left||t.top>e.top+e.height||t.top+t.height<e.top)}onSelectItems(e){const t=[];this.elements.forEach(o=>{const r=g(o.container);f.intersectRect(r,e)&&t.push(o.item)}),this.stateManager.state.activeElements=t}},p(n,"UIVirtualScroll"),n);h([a(":afterResize"),a(":resize"),a("container:scroll"),v()],i.prototype,"onScrollLoadChunk",null),h([a("container:dragover")],i.prototype,"onDragOver",null),h([a(["container:dragleave","container:drop"])],i.prototype,"onDragLeave",null),i=f=h([u],i);export{i as UIVirtualScroll};