diff --git a/public/dist/app.js b/public/dist/app.js index 9e360e8b9..09ce04776 100644 --- a/public/dist/app.js +++ b/public/dist/app.js @@ -30,7 +30,7 @@ Expect errors in decoding.`),E=E.replace(/[^A-Za-z0-9\+\/\=]/g,"");_=this.KEY_ST `).length;this.cm.setCursor(n.line+i,n.ch)}),window.$events.listen("editor::insert",t=>{let n=e(t);this.cm.replaceSelection(n)}),window.$events.listen("editor::focus",()=>{this.cm.focus()})}},Fc=So;var Co=class{constructor(e){this.elem=e,this.inviteOption=e.querySelector("input[name=send_invite]"),this.inviteOption&&(this.inviteOption.addEventListener("change",this.inviteOptionChange.bind(this)),this.inviteOptionChange())}inviteOptionChange(){let e=this.inviteOption.value==="true",t=this.elem.querySelectorAll("input[type=password]");for(let o of t)o.disabled=e;let n=this.elem.querySelector("#password-input-container");n&&(n.style.display=e?"none":"block")}},Rc=Co;var Ao=class{constructor(e){this.elem=e,this.type=e.getAttribute("notification"),this.textElem=e.querySelector("span"),this.autohide=this.elem.hasAttribute("data-autohide"),this.elem.style.display="grid",window.$events.listen(this.type,t=>{this.show(t)}),e.addEventListener("click",this.hide.bind(this)),e.hasAttribute("data-show")&&setTimeout(()=>this.show(this.textElem.textContent),100),this.hideCleanup=this.hideCleanup.bind(this)}show(e=""){if(this.elem.removeEventListener("transitionend",this.hideCleanup),this.textElem.textContent=e,this.elem.style.display="grid",setTimeout(()=>{this.elem.classList.add("showing")},1),this.autohide){let t=e.split(" ").length,n=Math.max(2e3,1e3+250*t);setTimeout(this.hide.bind(this),n)}}hide(){this.elem.classList.remove("showing"),this.elem.addEventListener("transitionend",this.hideCleanup)}hideCleanup(){this.elem.style.display="none",this.elem.removeEventListener("transitionend",this.hideCleanup)}},Oc=Ao;var ko=class{setup(){this.removeButton=this.$refs.remove,this.showButton=this.$refs.show,this.input=this.$refs.input,this.setupListeners()}setupListeners(){Be(this.removeButton,()=>{this.input.value="",this.input.classList.add("hidden"),this.removeButton.classList.add("hidden"),this.showButton.classList.remove("hidden")}),Be(this.showButton,()=>{this.input.classList.remove("hidden"),this.removeButton.classList.remove("hidden"),this.showButton.classList.add("hidden")})}},Pc=ko;var To=class{setup(){this.elem=this.$el,this.pageId=Number(this.$opts.pageId),this.container=this.$refs.commentContainer,this.formContainer=this.$refs.formContainer,this.commentCountBar=this.$refs.commentCountBar,this.addButtonContainer=this.$refs.addButtonContainer,this.replyToRow=this.$refs.replyToRow,this.updatedText=this.$opts.updatedText,this.deletedText=this.$opts.deletedText,this.createdText=this.$opts.createdText,this.countText=this.$opts.countText,this.editingComment=null,this.parentId=null,this.formContainer&&(this.form=this.formContainer.querySelector("form"),this.formInput=this.form.querySelector("textarea"),this.form.addEventListener("submit",this.saveComment.bind(this))),this.elem.addEventListener("click",this.handleAction.bind(this)),this.elem.addEventListener("submit",this.updateComment.bind(this))}handleAction(e){let t=e.target.closest("[action]");if(e.target.matches('a[href^="#"]')){let s=e.target.href.split("#")[1];kr(document.querySelector("#"+s))}if(t===null)return;e.preventDefault();let n=t.getAttribute("action"),o=t.closest("[comment]");n==="edit"&&this.editComment(o),n==="closeUpdateForm"&&this.closeUpdateForm(),n==="delete"&&this.deleteComment(o),n==="addComment"&&this.showForm(),n==="hideForm"&&this.hideForm(),n==="reply"&&this.setReply(o),n==="remove-reply-to"&&this.removeReplyTo()}closeUpdateForm(){!this.editingComment||(this.editingComment.querySelector("[comment-content]").style.display="block",this.editingComment.querySelector("[comment-edit-container]").style.display="none")}editComment(e){this.hideForm(),this.editingComment&&this.closeUpdateForm(),e.querySelector("[comment-content]").style.display="none",e.querySelector("[comment-edit-container]").style.display="block";let t=e.querySelector("[comment-edit-container] textarea"),n=t.value.split(` `).length;t.style.height=n*20+40+"px",this.editingComment=e}updateComment(e){let t=e.target;e.preventDefault();let o={text:t.querySelector("textarea").value,parent_id:this.parentId||null};this.showLoading(t);let s=this.editingComment.getAttribute("comment");window.$http.put(`/comment/${s}`,o).then(i=>{let a=document.createElement("div");a.innerHTML=i.data,this.editingComment.innerHTML=a.children[0].innerHTML,window.$events.success(this.updatedText),window.components.init(this.editingComment),this.closeUpdateForm(),this.editingComment=null}).catch(window.$events.showValidationErrors).then(()=>{this.hideLoading(t)})}deleteComment(e){let t=e.getAttribute("comment");this.showLoading(e.querySelector("[comment-content]")),window.$http.delete(`/comment/${t}`).then(n=>{e.parentNode.removeChild(e),window.$events.success(this.deletedText),this.updateCount(),this.hideForm()})}saveComment(e){e.preventDefault(),e.stopPropagation();let n={text:this.formInput.value,parent_id:this.parentId||null};this.showLoading(this.form),window.$http.post(`/comment/${this.pageId}`,n).then(o=>{let s=document.createElement("div");s.innerHTML=o.data;let i=s.children[0];this.container.appendChild(i),window.components.init(i),window.$events.success(this.createdText),this.resetForm(),this.updateCount()}).catch(o=>{window.$events.showValidationErrors(o),this.hideLoading(this.form)})}updateCount(){let e=this.container.children.length;this.elem.querySelector("[comments-title]").textContent=window.trans_plural(this.countText,e,{count:e})}resetForm(){this.formInput.value="",this.formContainer.appendChild(this.form),this.hideForm(),this.removeReplyTo(),this.hideLoading(this.form)}showForm(){this.formContainer.style.display="block",this.formContainer.parentNode.style.display="block",this.addButtonContainer.style.display="none",this.formInput.focus(),this.formInput.scrollIntoView({behavior:"smooth"})}hideForm(){this.formContainer.style.display="none",this.formContainer.parentNode.style.display="none",this.getCommentCount()>0?this.elem.appendChild(this.addButtonContainer):this.commentCountBar.appendChild(this.addButtonContainer),this.addButtonContainer.style.display="block"}getCommentCount(){return this.elem.querySelectorAll(".comment-box[comment]").length}setReply(e){this.showForm(),this.parentId=Number(e.getAttribute("local-id")),this.replyToRow.style.display="block";let t=this.replyToRow.querySelector("a");t.textContent=`#${this.parentId}`,t.href=`#comment${this.parentId}`}removeReplyTo(){this.parentId=null,this.replyToRow.style.display="none"}showLoading(e){let t=e.querySelectorAll(".form-group");for(let n of t)n.style.display="none";e.querySelector(".form-group.loading").style.display="block"}hideLoading(e){let t=e.querySelectorAll(".form-group");for(let n of t)n.style.display="block";e.querySelector(".form-group.loading").style.display="none"}},Mc=To;var Nc=Yr(_c());var Do=class{constructor(e){if(this.elem=e,this.pageId=e.getAttribute("page-display"),window.importVersioned("code").then(n=>n.highlight()),this.setupPointer(),this.setupNavHighlighting(),this.setupDetailsCodeBlockRefresh(),window.location.hash){let n=window.location.hash.replace(/\%20/g," ").substr(1);this.goToText(n)}let t=document.querySelector(".sidebar-page-nav");t&&qe(t,"a","click",(n,o)=>{n.preventDefault(),window.components["tri-layout"][0].showContent();let s=o.getAttribute("href").substr(1);this.goToText(s),window.history.pushState(null,null,"#"+s)})}goToText(e){let t=document.getElementById(e);if(Zr(".page-content [data-highlighted]",n=>{n.removeAttribute("data-highlighted"),n.style.backgroundColor=null}),t!==null)kr(t);else{let n=ns(".page-content > div > *",e);n&&kr(n)}}setupPointer(){let e=document.getElementById("pointer");if(!e)return;e=e.parentNode.removeChild(e);let t=e.querySelector("div.pointer"),n=!1,o=!1,s=!0,i="";qe(e,"input","click",(l,u)=>{u.select(),l.stopPropagation()}),Qr(e,["click","focus"],l=>{l.stopPropagation()}),qe(e,"span.icon","click",(l,u)=>{l.stopPropagation(),s=!s,u.querySelector('[data-icon="include"]').style.display=s?"none":"inline",u.querySelector('[data-icon="link"]').style.display=s?"inline":"none",a()}),new Nc.default(e.querySelector("button")),Qr(document.body,["click","focus"],l=>{!n||o||(e=e.parentElement.removeChild(e),n=!1)});let a=l=>{let u=s?window.baseUrl(`/link/${this.pageId}#${i}`):`{{@${this.pageId}#${i}}}`;s&&!u.startsWith("http")&&(u=window.location.protocol+"//"+window.location.host+u),e.querySelector("input").value=u;let c=e.querySelector("#pointer-edit");if(c&&l){let f=c.dataset.editHref,h=l.id,d=l.textContent&&l.textContent.substring(0,50);c.href=`${f}?content-id=${h}&content-text=${encodeURIComponent(d)}`}};Zr('.page-content [id^="bkmrk"]',l=>{Qr(l,["mouseup","keyup"],u=>{u.stopPropagation(),window.getSelection().toString().length!==0&&(i=l.id,a(l),l.parentNode.insertBefore(e,l),e.style.display="block",n=!0,o=!0,requestAnimationFrame(()=>{let f=l.getBoundingClientRect(),h=u.pageX-f.left-164;h<0&&(h=0);let d=h/f.width*100;t.style.left=d+"%",setTimeout(()=>{o=!1},100)}))})})}setupNavHighlighting(){if(!("IntersectionObserver"in window)||!("IntersectionObserverEntry"in window)||!("intersectionRatio"in window.IntersectionObserverEntry.prototype))return;let e=document.querySelector(".sidebar-page-nav"),t=document.querySelector(".page-content").querySelectorAll("h1, h2, h3, h4, h5, h6");t.length>0&&e!==null&&n(t);function n(i){let a={rootMargin:"0px 0px 0px 0px",threshold:1},l=new IntersectionObserver(o,a);for(let u of i)l.observe(u)}function o(i,a){for(let l of i){let u=l.intersectionRatio===1;s(l.target.id,u)}}function s(i,a){Zr('a[href="#'+i+'"]',l=>{l.closest("li").classList.toggle("current-heading",a)})}}setupDetailsCodeBlockRefresh(){let e=n=>{[...n.target.querySelectorAll(".CodeMirror")].forEach(s=>s.CodeMirror&&s.CodeMirror.refresh())};[...this.elem.querySelectorAll("details")].forEach(n=>n.addEventListener("toggle",e))}},Bc=Do;function $c(r){let e=new Date(r*1e3),t=e.getHours(),n=e.getMinutes();return`${(t>9?"":"0")+t}:${(n>9?"":"0")+n}`}var Lo=class{setup(){this.draftsEnabled=this.$opts.draftsEnabled==="true",this.editorType=this.$opts.editorType,this.pageId=Number(this.$opts.pageId),this.isNewDraft=this.$opts.pageNewDraft==="true",this.hasDefaultTitle=this.$opts.hasDefaultTitle||!1,this.container=this.$el,this.titleElem=this.$refs.titleContainer.querySelector("input"),this.saveDraftButton=this.$refs.saveDraft,this.discardDraftButton=this.$refs.discardDraft,this.discardDraftWrap=this.$refs.discardDraftWrap,this.draftDisplay=this.$refs.draftDisplay,this.draftDisplayIcon=this.$refs.draftDisplayIcon,this.changelogInput=this.$refs.changelogInput,this.changelogDisplay=this.$refs.changelogDisplay,this.changeEditorButtons=this.$manyRefs.changeEditor,this.switchDialogContainer=this.$refs.switchDialog,this.draftText=this.$opts.draftText,this.autosaveFailText=this.$opts.autosaveFailText,this.editingPageText=this.$opts.editingPageText,this.draftDiscardedText=this.$opts.draftDiscardedText,this.setChangelogText=this.$opts.setChangelogText,this.editorHTML="",this.editorMarkdown="",this.autoSave={interval:null,frequency:3e4,last:0},this.shownWarningsCache=new Set,this.pageId!==0&&this.draftsEnabled&&window.setTimeout(()=>{this.startAutoSave()},1e3),this.draftDisplay.innerHTML=this.draftText,this.setupListeners(),this.setInitialFocus()}setupListeners(){window.$events.listen("editor-save-draft",this.saveDraft.bind(this)),window.$events.listen("editor-save-page",this.savePage.bind(this)),window.$events.listen("editor-html-change",e=>{this.editorHTML=e}),window.$events.listen("editor-markdown-change",e=>{this.editorMarkdown=e}),this.changelogInput.addEventListener("change",this.updateChangelogDisplay.bind(this)),Be(this.saveDraftButton,this.saveDraft.bind(this)),Be(this.discardDraftButton,this.discardDraft.bind(this)),Be(this.changeEditorButtons,this.changeEditor.bind(this))}setInitialFocus(){if(this.hasDefaultTitle)return this.titleElem.select();window.setTimeout(()=>{window.$events.emit("editor::focus","")},500)}startAutoSave(){let e=this.titleElem.value.trim()+"::"+this.editorHTML;this.autoSaveInterval=window.setInterval(()=>{if(Date.now()-this.autoSave.last{this.draftDisplayIcon.classList.remove("visible")},2e3)}async discardDraft(){let e;try{e=await window.$http.get(`/ajax/page/${this.pageId}`)}catch(t){return console.error(t)}this.autoSave.interval&&window.clearInterval(this.autoSave.interval),this.draftDisplay.innerText=this.editingPageText,this.toggleDiscardDraftVisibility(!1),window.$events.emit("editor::replace",{html:e.data.html,markdown:e.data.markdown}),this.titleElem.value=e.data.name,window.setTimeout(()=>{this.startAutoSave()},1e3),window.$events.emit("success",this.draftDiscardedText)}updateChangelogDisplay(){let e=this.changelogInput.value.trim();e.length===0?e=this.setChangelogText:e.length>16&&(e=e.slice(0,16)+"..."),this.changelogDisplay.innerText=e}toggleDiscardDraftVisibility(e){this.discardDraftWrap.classList.toggle("hidden",!e)}async changeEditor(e){e.preventDefault();let t=e.target.closest("a").href,n=this.switchDialogContainer.components["confirm-dialog"],[o,s]=await Promise.all([this.saveDraft(),n.show()]);o&&s&&(window.location=t)}},Uc=Lo;var Fo=class{constructor(e){this.elem=e,this.input=e.querySelector("input"),this.resetButton=e.querySelector("[page-picker-reset]"),this.selectButton=e.querySelector("[page-picker-select]"),this.display=e.querySelector("[page-picker-display]"),this.defaultDisplay=e.querySelector("[page-picker-default]"),this.buttonSep=e.querySelector("span.sep"),this.value=this.input.value,this.setupListeners()}setupListeners(){this.selectButton.addEventListener("click",this.showPopup.bind(this)),this.display.parentElement.addEventListener("click",this.showPopup.bind(this)),this.resetButton.addEventListener("click",e=>{this.setValue("","")})}showPopup(){window.EntitySelectorPopup.show(e=>{this.setValue(e.id,e.name)})}setValue(e,t){this.value=e,this.input.value=e,this.controlView(t)}controlView(e){let t=this.value&&this.value!==0;if(Mn(this.resetButton,t),Mn(this.buttonSep,t),Mn(this.defaultDisplay,!t),Mn(this.display,t),t){let n=this.getAssetIdFromVal();this.display.textContent=`#${n}, ${e}`,this.display.href=window.baseUrl(`/link/${n}`)}}getAssetIdFromVal(){return Number(this.value)}};function Mn(r,e){let t=r.tagName==="BUTTON"||r.tagName==="SPAN"?"inline-block":"block";r.style.display=e?t:"none"}var zc=Fo;var Ro=class{constructor(e){this.container=e,e.querySelector("[permissions-table-toggle-all]").addEventListener("click",this.toggleAllClick.bind(this));let n=e.querySelectorAll("[permissions-table-toggle-all-in-row]");for(let s of n)s.addEventListener("click",this.toggleRowClick.bind(this));let o=e.querySelectorAll("[permissions-table-toggle-all-in-column]");for(let s of o)s.addEventListener("click",this.toggleColumnClick.bind(this))}toggleAllClick(e){e.preventDefault(),this.toggleAllInElement(this.container)}toggleRowClick(e){e.preventDefault(),this.toggleAllInElement(e.target.closest("tr"))}toggleColumnClick(e){e.preventDefault();let t=e.target.closest("th,td"),n=Array.from(t.parentElement.children).indexOf(t),o=t.closest("table").querySelectorAll("tr"),s=[];for(let i of o){let a=i.children[n];a&&s.push(...a.querySelectorAll("input[type=checkbox]"))}this.toggleAllInputs(s)}toggleAllInElement(e){let t=e.querySelectorAll("input[type=checkbox]");this.toggleAllInputs(t)}toggleAllInputs(e){let t=e.length>0?e[0].checked:!1;for(let n of e)n.checked=!t,n.dispatchEvent(new Event("change"))}},jc=Ro;var Oo=class{setup(){this.container=this.$el,this.hideButtons=this.$manyRefs.hide||[],this.onkeyup=null,this.onHide=null,this.setupListeners()}setupListeners(){let e=null;this.container.addEventListener("mousedown",t=>{e=t.target}),this.container.addEventListener("click",t=>{if(t.target===this.container&&e===this.container)return this.hide()}),Be(this.hideButtons,t=>this.hide())}hide(e=null){vn(this.container,120,e),this.onkeyup&&(window.removeEventListener("keyup",this.onkeyup),this.onkeyup=null),this.onHide&&this.onHide()}show(e=null,t=null){$s(this.container,120,e),this.onkeyup=n=>{n.key==="Escape"&&this.hide()},window.addEventListener("keyup",this.onkeyup),this.onHide=t}},Hc=Oo;var Po=class{constructor(e){this.elem=e,this.colorInput=e.querySelector("input[type=color]"),this.lightColorInput=e.querySelector('input[name="setting-app-color-light"]'),this.resetButton=e.querySelector("[setting-app-color-picker-reset]"),this.defaultButton=e.querySelector("[setting-app-color-picker-default]"),this.colorInput.addEventListener("change",this.updateColor.bind(this)),this.colorInput.addEventListener("input",this.updateColor.bind(this)),this.resetButton.addEventListener("click",t=>{this.colorInput.value=this.colorInput.dataset.current,this.updateColor()}),this.defaultButton.addEventListener("click",t=>{this.colorInput.value=this.colorInput.dataset.default,this.updateColor()})}updateColor(){let e=this.colorInput.value,t=this.hexToRgb(e),n="rgba("+[t.r,t.g,t.b,"0.15"].join(",")+")";this.lightColorInput.value=n;let o=document.getElementById("custom-styles"),s=o.getAttribute("data-color"),i=o.getAttribute("data-color-light");o.innerHTML=o.innerHTML.split(s).join(e),o.innerHTML=o.innerHTML.split(i).join(n),o.setAttribute("data-color",e),o.setAttribute("data-color-light",n)}hexToRgb(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return{r:t?parseInt(t[1],16):0,g:t?parseInt(t[2],16):0,b:t?parseInt(t[3],16):0}}},qc=Po;var Mo=class{constructor(e){this.elem=e,this.colorInput=e.querySelector("input[type=color]"),this.resetButton=e.querySelector("[setting-color-picker-reset]"),this.defaultButton=e.querySelector("[setting-color-picker-default]"),this.resetButton.addEventListener("click",t=>{this.colorInput.value=this.colorInput.dataset.current}),this.defaultButton.addEventListener("click",t=>{this.colorInput.value=this.colorInput.dataset.default})}},Vc=Mo;var _o=class{setup(){this.elem=this.$el,this.input=this.$refs.input,this.shelfBookList=this.$refs.shelfBookList,this.allBookList=this.$refs.allBookList,this.bookSearchInput=this.$refs.bookSearch,this.initSortable(),this.setupListeners()}initSortable(){let e=this.elem.querySelectorAll(".scroll-box");for(let t of e)new hr(t,{group:"shelf-books",ghostClass:"primary-background-light",animation:150,onSort:this.onChange.bind(this)})}setupListeners(){this.elem.addEventListener("click",e=>{let t=e.target.closest(".scroll-box-item");t&&(e.preventDefault(),this.sortItemClick(t))}),this.bookSearchInput.addEventListener("input",e=>{this.filterBooksByName(this.bookSearchInput.value)})}filterBooksByName(e){this.allBookList.style.height||(this.allBookList.style.height=this.allBookList.getBoundingClientRect().height+"px");let t=this.allBookList.children,n=e.trim().toLowerCase();for(let o of t){let s=!e||o.textContent.toLowerCase().includes(n);o.style.display=s?null:"none"}}sortItemClick(e){let t=this.elem.querySelectorAll(".scroll-box"),n=Array.from(t).filter(o=>e.parentElement!==o);n.length>0&&n[0].appendChild(e),this.onChange()}onChange(){let e=Array.from(this.shelfBookList.querySelectorAll("[data-id]"));this.input.value=e.map(t=>t.getAttribute("data-id")).join(",")}},Gc=_o;var No=class{constructor(e){this.elem=e,this.toggleElem=e.querySelector(".sidebar-toggle"),this.toggleElem.addEventListener("click",this.toggle.bind(this))}toggle(e=!0){this.elem.classList.toggle("open")}},Wc=No;var Bo=class{setup(){this.container=this.$el,this.handleSelector=this.$opts.handleSelector;let e=new hr(this.container,{handle:this.handleSelector,animation:150,onSort:()=>{this.$emit("sort",{ids:e.toArray()})},setData(t,n){let o=n.getAttribute("data-drag-content");if(o){let s=JSON.parse(o);for(let[i,a]of Object.entries(s))t.setData(i,a)}},revertOnSpill:!0,dropBubble:!0,dragoverBubble:!1})}},Yc=Bo;var $o=class{setup(){this.filter=this.$opts.filter,this.$el.addEventListener("change",e=>{if(this.filter&&!e.target.matches(this.filter))return;let t=this.$el.closest("form");t&&t.submit()})}},Kc=$o;var Uo=class{setup(){this.tabContentsByName={},this.tabButtonsByName={},this.allContents=[],this.allButtons=[];for(let[e,t]of Object.entries(this.$manyRefs||{})){if(e.startsWith("toggle")){let n=e.replace("toggle","").toLowerCase();Be(t,o=>this.show(n)),this.allButtons.push(...t),this.tabButtonsByName[n]=t}if(e.startsWith("content")){let n=e.replace("content","").toLowerCase();this.tabContentsByName[n]=t,this.allContents.push(...t)}}}show(e){this.allContents.forEach(o=>{o.classList.add("hidden"),o.classList.remove("selected")}),this.allButtons.forEach(o=>o.classList.remove("selected"));let t=this.tabContentsByName[e]||[],n=this.tabButtonsByName[e]||[];t.length>0&&(t.forEach(o=>{o.classList.remove("hidden"),o.classList.add("selected")}),n.forEach(o=>o.classList.add("selected")))}},Xc=Uo;var zo=class{setup(){this.addRemoveComponentEl=this.$refs.addRemove,this.container=this.$el,this.rowSelector=this.$opts.rowSelector,this.setupListeners()}setupListeners(){this.container.addEventListener("change",e=>{let t=this.addRemoveComponentEl.components["add-remove-rows"];this.hasEmptyRows()||t.add()})}hasEmptyRows(){return[...this.container.querySelectorAll(this.rowSelector)].find(n=>[...n.querySelectorAll("input")].filter(o=>o.value).length===0)!==void 0}},Zc=zo;var jo=class{constructor(e){this.elem=e,this.list=e.querySelector("[template-manager-list]"),this.searching=!1,qe(this.elem,"[template-action]","click",this.handleTemplateActionClick.bind(this)),qe(this.elem,".pagination a","click",this.handlePaginationClick.bind(this)),qe(this.elem,".template-item-content","click",this.handleTemplateItemClick.bind(this)),qe(this.elem,".template-item","dragstart",this.handleTemplateItemDragStart.bind(this)),this.setupSearchBox()}handleTemplateItemClick(e,t){let n=t.closest("[template-id]").getAttribute("template-id");this.insertTemplate(n,"replace")}handleTemplateItemDragStart(e,t){let n=t.closest("[template-id]").getAttribute("template-id");e.dataTransfer.setData("bookstack/template",n),e.dataTransfer.setData("text/plain",n)}handleTemplateActionClick(e,t){e.stopPropagation();let n=t.getAttribute("template-action"),o=t.closest("[template-id]").getAttribute("template-id");this.insertTemplate(o,n)}async insertTemplate(e,t="replace"){let n=await window.$http.get(`/templates/${e}`),o="editor::"+t;window.$events.emit(o,n.data)}async handlePaginationClick(e,t){e.preventDefault();let n=t.getAttribute("href"),o=await window.$http.get(n);this.list.innerHTML=o.data}setupSearchBox(){let e=this.elem.querySelector(".search-box");if(!e)return;let t=e.querySelector("input"),n=e.querySelector("button"),o=e.querySelector("button.search-box-cancel");async function s(){let i=t.value,a=await window.$http.get("/templates",{search:i});o.style.display=i?"block":"none",this.list.innerHTML=a.data}s=s.bind(this),e.addEventListener("keypress",i=>{i.key==="Enter"&&(i.preventDefault(),s())}),n.addEventListener("click",i=>{s()}),o.addEventListener("click",i=>{t.value="",s()})}},Qc=jo;var Ho=class{constructor(e){this.elem=e,this.input=e.querySelector("input[type=hidden]"),this.checkbox=e.querySelector("input[type=checkbox]"),this.checkbox.addEventListener("change",this.stateChange.bind(this))}stateChange(){this.input.value=this.checkbox.checked?"true":"false";let e=new Event("change");this.input.dispatchEvent(e)}},Jc=Ho;var qo=class{setup(){this.container=this.$refs.container,this.tabs=this.$manyRefs.tab,this.lastLayoutType="none",this.onDestroy=null,this.scrollCache={content:0,info:0},this.lastTabShown="content",this.mobileTabClick=this.mobileTabClick.bind(this),this.updateLayout(),window.addEventListener("resize",e=>{this.updateLayout()},{passive:!0})}updateLayout(){let e="tablet";window.innerWidth<=1e3&&(e="mobile"),window.innerWidth>=1400&&(e="desktop"),e!==this.lastLayoutType&&(this.onDestroy&&(this.onDestroy(),this.onDestroy=null),e==="desktop"?this.setupDesktop():e==="mobile"&&this.setupMobile(),this.lastLayoutType=e)}setupMobile(){for(let e of this.tabs)e.addEventListener("click",this.mobileTabClick);this.onDestroy=()=>{for(let e of this.tabs)e.removeEventListener("click",this.mobileTabClick)}}setupDesktop(){}mobileTabClick(e){let t=e.target.dataset.tab;this.showTab(t)}showContent(){this.showTab("content",!1)}showTab(e,t=!0){this.scrollCache[this.lastTabShown]=document.documentElement.scrollTop;for(let o of this.tabs){let s=o.dataset.tab===e;o.setAttribute("aria-selected",s?"true":"false")}let n=e==="info";if(this.container.classList.toggle("show-info",n),t){let s=document.querySelector("header").getBoundingClientRect().bottom;document.documentElement.scrollTop=this.scrollCache[e]||s,setTimeout(()=>{document.documentElement.scrollTop=this.scrollCache[e]||s},50)}this.lastTabShown=e}},ed=qo;var Vo=class{setup(){this.input=this.$refs.input,this.userInfoContainer=this.$refs.userInfo,this.hide=this.$el.components.dropdown.hide,qe(this.$el,"a.dropdown-search-item","click",this.selectUser.bind(this))}selectUser(e,t){e.preventDefault();let n=t.getAttribute("data-id");this.input.value=n,this.userInfoContainer.innerHTML=t.innerHTML,this.input.dispatchEvent(new Event("change",{bubbles:!0})),this.hide()}},td=Vo;var Go=class{setup(){this.checkboxes=this.$el.querySelectorAll('input[type="checkbox"]'),this.allCheckbox=this.$el.querySelector('input[type="checkbox"][value="all"]'),this.$el.addEventListener("change",e=>{e.target.checked&&e.target===this.allCheckbox?this.deselectIndividualEvents():e.target.checked&&(this.allCheckbox.checked=!1)})}deselectIndividualEvents(){for(let e of this.checkboxes)e!==this.allCheckbox&&(e.checked=!1)}},rd=Go;function nd(r){for(let e=1;e<5;e++)r.shortcuts.add("meta+"+e,"",["FormatBlock",!1,"h"+(e+1)]);r.shortcuts.add("meta+5","",["FormatBlock",!1,"p"]),r.shortcuts.add("meta+d","",["FormatBlock",!1,"p"]),r.shortcuts.add("meta+6","",["FormatBlock",!1,"blockquote"]),r.shortcuts.add("meta+q","",["FormatBlock",!1,"blockquote"]),r.shortcuts.add("meta+7","",["codeeditor",!1,"pre"]),r.shortcuts.add("meta+e","",["codeeditor",!1,"pre"]),r.shortcuts.add("meta+8","",["FormatBlock",!1,"code"]),r.shortcuts.add("meta+shift+E","",["FormatBlock",!1,"code"]),r.shortcuts.add("meta+o","","InsertOrderedList"),r.shortcuts.add("meta+p","","InsertUnorderedList"),r.shortcuts.add("meta+S","",()=>{window.$events.emit("editor-save-draft")}),r.shortcuts.add("meta+13","",()=>{window.$events.emit("editor-save-page")}),r.shortcuts.add("meta+9","",function(){let e=r.selection.getNode(),t=e?e.closest(".callout"):null,n=["info","success","warning","danger"],s=(n.findIndex(a=>t&&t.classList.contains(a))+1)%n.length,i=n[s];r.formatter.apply("callout"+i)}),r.shortcuts.add("meta+shift+K","",function(){window.EntitySelectorPopup.show(function(e){r.selection.isCollapsed()?r.insertContent(r.dom.createHTML("a",{href:e.link},r.dom.encode(e.name))):r.formatter.apply("link",{href:e.link}),r.selection.collapse(!1),r.focus()})})}function id(r){window.$events.listen("editor::replace",({html:e})=>{r.setContent(e)}),window.$events.listen("editor::append",({html:e})=>{let t=r.getContent()+e;r.setContent(t)}),window.$events.listen("editor::prepend",({html:e})=>{let t=e+r.getContent();r.setContent(t)}),window.$events.listen("editor::insert",({html:e})=>{r.insertContent(e)}),window.$events.listen("editor::focus",()=>{r.initialized&&r.focus()})}function od(r){let t=new URL(window.location).searchParams.get("content-id");t&&Cm(r,t)}function Cm(r,e){let t=r.dom.get(encodeURIComponent(e).replace(/!/g,"%21"));!t||(t.scrollIntoView(),r.selection.select(t,!0),r.selection.collapse(!1),r.focus())}var ir,_n;function Am(r){return r&&!!(r.textContent||r.innerText)}function sd(r,e,t){let n=new Hr(t.clipboardData||t.dataTransfer);if(!n.hasItems()||n.containsTabularData())return;let o=n.getImages();for(let s of o){let i="image-"+Math.random().toString(16).slice(2),a=window.baseUrl("/loading.gif");t.preventDefault(),setTimeout(()=>{r.insertContent(`

`),km(s,e.pageId).then(l=>{let u=l.name.replace(/"/g,""),c=`${u}`,f=r.dom.create("a",{target:"_blank",href:l.url},c);r.dom.replace(f,i)}).catch(l=>{r.dom.remove(i),window.$events.emit("error",e.translations.imageUploadErrorText),console.log(l)})},10)}}async function km(r,e){if(r===null||r.type.indexOf("image")!==0)throw new Error("Not an image file");let t=r.name||`image-${Date.now()}.png`,n=new FormData;return n.append("file",r,t),n.append("uploaded_to",e),(await window.$http.post(window.baseUrl("/images/gallery"),n)).data}function Tm(r,e){let t=r.selection.getNode();t.nodeName==="IMG"&&(ir=r.dom.getParent(t,".mceTemp"),!ir&&t.parentNode.nodeName==="A"&&!Am(t.parentNode)&&(ir=t.parentNode)),t.hasAttribute("contenteditable")&&t.getAttribute("contenteditable")==="false"&&(_n=t)}function Im(r,e,t){let n=r.dom,o=tinymce.dom.RangeUtils.getCaretRangeFromPoint(t.clientX,t.clientY,r.getDoc()),s=t.dataTransfer&&t.dataTransfer.getData("bookstack/template");s&&(t.preventDefault(),window.$http.get(`/templates/${s}`).then(i=>{r.selection.setRng(o),r.undoManager.transact(function(){r.execCommand("mceInsertContent",!1,i.data.html)})})),n.getParent(o.startContainer,".mceTemp")?t.preventDefault():ir&&(t.preventDefault(),r.undoManager.transact(function(){r.selection.setRng(o),r.selection.setNode(ir),n.remove(ir)})),!t.isDefaultPrevented()&&_n&&(t.preventDefault(),r.undoManager.transact(function(){let i=r.selection.getNode(),a=r.selection.getRng(),l=i.closest("body > *");a.startOffset>a.startContainer.length/2?l.after(_n):l.before(_n)})),t.isDefaultPrevented()||sd(r,e,t),ir=null}function ad(r,e){r.on("dragstart",()=>Tm(r,e)),r.on("drop",t=>Im(r,e,t)),r.on("paste",t=>sd(r,e,t))}function ld(r){let e=r.textDirection==="rtl"?"ltr rtl":"";return["undo redo","styles","bold italic underline forecolor backcolor formatoverflow","alignleft aligncenter alignright alignjustify","bullist numlist listoverflow",e,"link table imagemanager-insert insertoverflow","code about fullscreen"].filter(n=>Boolean(n)).join(" | ")}function Dm(r){r.ui.registry.addGroupToolbarButton("formatoverflow",{icon:"more-drawer",tooltip:"More",items:"strikethrough superscript subscript inlinecode removeformat"}),r.ui.registry.addGroupToolbarButton("listoverflow",{icon:"more-drawer",tooltip:"More",items:"tasklist outdent indent"}),r.ui.registry.addGroupToolbarButton("insertoverflow",{icon:"more-drawer",tooltip:"More",items:"hr codeeditor drawio media details"})}function Lm(r){r.ui.registry.addContextToolbar("linkcontexttoolbar",{predicate(e){return e.closest("a")!==null},position:"node",scope:"node",items:"link unlink openlink"})}function Fm(r){r.ui.registry.addContextToolbar("imagecontexttoolbar",{predicate(e){return e.closest("img")!==null},position:"node",scope:"node",items:"image"})}function ud(r,e){Dm(r),Lm(r),Fm(r)}function cd(r){return r.tagName.toLowerCase()==="code-block"}function fd(r,e,t,n){window.components.first("code-editor").open(e,t,(o,s)=>{n(o,s),r.focus()})}function dd(r,e){fd(r,e.getContent(),e.getLanguage(),(t,n)=>{e.setContent(t,n)})}function Rm(r){let e=r.getDoc(),t=e.defaultView;class n extends t.HTMLElement{constructor(){super(),this.attachShadow({mode:"open"});let s=document.createElement("link");s.setAttribute("rel","stylesheet"),s.setAttribute("href",window.baseUrl("/dist/styles.css"));let i=document.createElement("div");i.style.pointerEvents="none",i.contentEditable="false",i.classList.add("CodeMirrorContainer"),this.shadowRoot.append(s,i)}getLanguage(){let s=l=>(l.split(" ").filter(c=>c.startsWith("language-"))[0]||"").replace("language-",""),i=this.querySelector("code"),a=this.querySelector("pre");return s(a.className)||i&&s(i.className)||""}setContent(s,i){this.cm&&importVersioned("code").then(u=>{u.setContent(this.cm,s),u.setMode(this.cm,i,s)});let a=this.querySelector("pre");a||(a=e.createElement("pre"),this.append(a)),a.innerHTML="";let l=e.createElement("code");a.append(l),l.innerText=s,l.className=`language-${i}`}getContent(){let s=this.querySelector("code")||this.querySelector("pre"),i=document.createElement("pre");i.innerHTML=s.innerHTML.replace(/\ufeff/g,"");let a=i.querySelectorAll("br");for(let l of a)l.replaceWith(` `);return i.textContent}connectedCallback(){let s=Date.now();if(this.cm)return;this.cleanChildContent();let i=this.getContent(),l=i.split(` -`).length*19.2+18+24;this.style.height=`${l}px`;let u=this.shadowRoot.querySelector(".CodeMirrorContainer"),c=f=>{this.cm=f.wysiwygView(u,i,this.getLanguage()),f.updateLayout(this.cm),setTimeout(()=>{this.style.height=null},1)};window.importVersioned("code").then(f=>{let h=Date.now()-s<20?20:0;setTimeout(()=>c(f),h)})}cleanChildContent(){let s=this.querySelector("pre");if(!!s)for(let i of s.childNodes)i.nodeName==="#text"&&i.textContent==="\uFEFF"&&i.remove()}}t.customElements.define("code-block",n)}function Om(r,e){r.ui.registry.addIcon("codeblock",''),r.ui.registry.addButton("codeeditor",{tooltip:"Insert code block",icon:"codeblock",onAction(){r.execCommand("codeeditor")}}),r.addCommand("codeeditor",()=>{let t=r.selection.getNode(),n=t.ownerDocument;if(cd(t))dd(r,t);else{let o=r.selection.getContent({format:"text"});fd(r,o,"",(s,i)=>{let a=n.createElement("pre"),l=n.createElement("code");l.classList.add(`language-${i}`),l.innerText=s,a.append(l),r.insertContent(a.outerHTML)})}}),r.on("dblclick",t=>{let n=r.selection.getNode();cd(n)&&dd(r,n)}),r.on("PreInit",()=>{r.parser.addNodeFilter("pre",function(t){for(let n of t){let o=tinymce.html.Node.create("code-block",{contenteditable:"false"}),s=n.getAll("span");for(let i of s)i.unwrap();n.attr("style",null),n.wrap(o)}}),r.parser.addNodeFilter("code-block",function(t){for(let n of t)n.attr("contenteditable","false")}),r.serializer.addNodeFilter("code-block",function(t){for(let n of t)n.unwrap()})}),r.on("PreInit",()=>{Rm(r)})}function hd(r){return Om}var Tt=null,sr=null,or={};function Wo(r){return r.hasAttribute("drawio-diagram")}function Pm(r,e=null){Tt=r,sr=e,window.ImageManager.show(function(t){if(e){let n=e.querySelector("img");Tt.dom.setAttrib(n,"src",t.url),Tt.dom.setAttrib(e,"drawio-diagram",t.id)}else{let n=`
`;Tt.insertContent(n)}},"drawio")}function pd(r,e=null){Tt=r,sr=e,bt.show(or.drawioUrl,_m,Mm)}async function Mm(r){let e="image-"+Math.random().toString(16).slice(2),t=window.baseUrl("/loading.gif"),n=o=>{o.status===413?window.$events.emit("error",or.translations.serverUploadLimitText):window.$events.emit("error",or.translations.imageUploadErrorText),console.log(o)};if(sr){bt.close();let o=sr.querySelector("img");try{let s=await bt.upload(r,or.pageId);Tt.dom.setAttrib(o,"src",s.url),Tt.dom.setAttrib(sr,"drawio-diagram",s.id)}catch(s){n(s)}return}setTimeout(async()=>{Tt.insertContent(`
`),bt.close();try{let o=await bt.upload(r,or.pageId);Tt.dom.setAttrib(e,"src",o.url),Tt.dom.get(e).parentNode.setAttribute("drawio-diagram",o.id)}catch(o){Tt.dom.remove(e),n(o)}},5)}function _m(){if(!sr)return Promise.resolve("");let r=sr.getAttribute("drawio-diagram");return bt.load(r)}function md(r){return or=r,function(e,t){e.addCommand("drawio",()=>{let n=e.selection.getNode();pd(e,Wo(n)?n:null)}),e.ui.registry.addIcon("diagram",``),e.ui.registry.addSplitButton("drawio",{tooltip:"Insert/edit drawing",icon:"diagram",onAction(){e.execCommand("drawio"),window.document.body.dispatchEvent(new Event("mousedown",{bubbles:!0}))},fetch(n){n([{type:"choiceitem",text:"Drawing manager",value:"drawing-manager"}])},onItemAction(n,o){if(o==="drawing-manager"){let s=e.selection.getNode();Pm(e,Wo(s)?s:null)}}}),e.on("dblclick",n=>{let o=e.selection.getNode();!Wo(o)||pd(e,o)}),e.on("SetContent",function(){let n=e.dom.select("body > div[drawio-diagram]");!n.length||e.undoManager.transact(function(){for(let o of n)o.setAttribute("contenteditable","false")})})}}function Nm(r,e){r.addCommand("InsertHorizontalRule",function(){let t=document.createElement("hr"),n=r.selection.getNode();n.parentNode.insertBefore(t,n)}),r.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Insert horizontal line",onAction(){r.execCommand("InsertHorizontalRule")}})}function gd(r){return Nm}function Bm(r,e){r.ui.registry.addButton("imagemanager-insert",{title:"Insert image",icon:"image",tooltip:"Insert image",onAction(){window.ImageManager.show(function(t){let n=t.thumbs.display||t.url,o=``;o+=`${t.name}`,o+="",r.execCommand("mceInsertContent",!1,o)},"gallery")}})}function vd(r){return Bm}function $m(r,e){let t={title:"About the WYSIWYG Editor",url:window.baseUrl("/help/wysiwyg")};r.ui.registry.addButton("about",{icon:"help",tooltip:"About the editor",onAction(){tinymce.activeEditor.windowManager.openUrl(t)}})}function yd(r){return $m}var bd=["p","h1","h2","h3","h4","h5","h6","div","blockquote","pre","code-block","details","ul","ol","table"];function Um(r,e){r.ui.registry.addIcon("details",''),r.ui.registry.addIcon("togglefold",''),r.ui.registry.addIcon("togglelabel",''),r.ui.registry.addButton("details",{icon:"details",tooltip:"Insert collapsible block",onAction(){r.execCommand("InsertDetailsBlock")}}),r.ui.registry.addButton("removedetails",{icon:"table-delete-table",tooltip:"Unwrap",onAction(){qm(r)}}),r.ui.registry.addButton("editdetials",{icon:"togglelabel",tooltip:"Edit label",onAction(){xd(r)}}),r.on("dblclick",t=>{!Nn(r)||t.target.closest("doc-root")||xd(r)}),r.ui.registry.addButton("toggledetails",{icon:"togglefold",tooltip:"Toggle open/closed",onAction(){Nn(r).toggleAttribute("open"),r.focus()}}),r.addCommand("InsertDetailsBlock",function(){let t=r.selection.getContent({format:"html"}),n=document.createElement("details"),o=document.createElement("summary"),s="details-"+Date.now();n.setAttribute("data-id",s),n.appendChild(o),t||(t="


"),n.innerHTML+=t,r.insertContent(n.outerHTML),r.focus();let i=r.dom.select(`[data-id="${s}"]`)[0]||null;if(i){let a=i.querySelector("doc-root > *");a&&a.focus(),i.removeAttribute("data-id")}}),r.ui.registry.addContextToolbar("details",{predicate:function(t){return t.nodeName.toLowerCase()==="details"},items:"editdetials toggledetails removedetails",position:"node",scope:"node"}),r.on("PreInit",()=>{Vm(r)})}function xd(r){let e=Nn(r);r.windowManager.open(jm(r)).setData({summary:zm(e)})}function Nn(r){return r.selection.getNode().closest("details")}function zm(r){let e=r.querySelector("summary");return e?e.textContent:""}function jm(r){return{title:"Edit collapsible block",body:{type:"panel",items:[{type:"input",name:"summary",label:"Toggle label"}]},buttons:[{type:"cancel",text:"Cancel"},{type:"submit",text:"Save",primary:!0}],onSubmit(e){let{summary:t}=e.getData();Hm(r,t),e.close()}}}function Hm(r,e){let t=Nn(r);!t||r.undoManager.transact(()=>{let n=t.querySelector("summary");n||(n=document.createElement("summary"),t.prepend(n)),n.textContent=e})}function qm(r){let e=r.selection.getNode().closest("details"),t=r.selection.getBookmark();if(e){let n=e.querySelectorAll("details > *:not(summary, doc-root), doc-root > *");r.undoManager.transact(()=>{for(let o of n)e.parentNode.insertBefore(o,e);e.remove()})}r.focus(),r.selection.moveToBookmark(t)}function Vm(r){r.parser.addNodeFilter("details",function(e){for(let t of e)Gm(t)}),r.serializer.addNodeFilter("details",function(e){for(let t of e)Yo(t),t.attr("open",null)}),r.serializer.addNodeFilter("doc-root",function(e){for(let t of e)t.unwrap()})}function Gm(r){Yo(r),r.attr("contenteditable","false");let e=tinymce.html.Node.create("doc-root",{contenteditable:"true"}),t=null;for(let n of r.children()){if(n.name==="summary")continue;bd.includes(n.name)?(e.append(n),t=null):(t||(t=tinymce.html.Node.create("p"),e.append(t)),t.append(n))}r.append(e)}function Yo(r){r.attr("contenteditable",null);let e=!1;for(let t of r.children())t.name==="doc-root"&&(t.unwrap(),e=!0);e&&Yo(r)}function wd(r){return Um}function Wm(r,e){r.ui.registry.addIcon("tasklist",''),r.ui.registry.addToggleButton("tasklist",{tooltip:"Task list",icon:"tasklist",active:!1,onAction(o){o.isActive()?r.execCommand("RemoveList"):r.execCommand("InsertUnorderedList",null,{"list-item-attributes":{class:"task-list-item"},"list-style-type":"tasklist"})},onSetup(o){r.on("NodeChange",s=>{let i=s.parents.find(l=>l.nodeName==="LI"),a=i&&i.classList.contains("task-list-item");o.setActive(Boolean(a))})}});let t=r.ui.registry.getAll().buttons.bullist;t.onSetup=function(o){r.on("NodeChange",s=>{let i=s.parents.find(u=>u.nodeName==="LI"),a=i&&i.classList.contains("task-list-item"),l=i&&i.parentNode.nodeName==="UL";o.setActive(Boolean(l&&!a))})},t.onAction=function(){Ym(r.selection.getNode())&&r.execCommand("InsertOrderedList",null,{"list-item-attributes":{class:null}}),r.execCommand("InsertUnorderedList",null,{"list-item-attributes":{class:null}})};let n=r.ui.registry.getAll().buttons.numlist;n.onAction=function(){r.execCommand("InsertOrderedList",null,{"list-item-attributes":{class:null}})},r.on("PreInit",()=>{r.parser.addNodeFilter("li",function(o){for(let s of o)s.attributes.map.class==="task-list-item"&&Xm(s)}),r.serializer.addNodeFilter("li",function(o){for(let s of o)s.attributes.map.class==="task-list-item"&&Zm(s)})}),r.on("click",function(o){let s=o.target;s.nodeName==="LI"&&s.classList.contains("task-list-item")&&(Km(o,s,r),o.preventDefault())})}function Ym(r){let e=r.closest("li");return e&&e.parentNode.nodeName==="UL"&&e.classList.contains("task-list-item")}function Km(r,e,t){let n=e.getBoundingClientRect();r.clientX<=n.right&&r.clientX>=n.left&&r.clientY>=n.top&&r.clientY<=n.bottom||t.undoManager.transact(()=>{e.hasAttribute("checked")?e.removeAttribute("checked"):e.setAttribute("checked","checked")})}function Xm(r){r.attr("class","task-list-item");for(let e of r.children())e.name==="input"&&(e.attr("checked")==="checked"&&r.attr("checked","checked"),e.remove())}function Zm(r){let e=r.attr("checked")==="checked";r.attr("checked",null);let t={type:"checkbox",disabled:"disabled"};e&&(t.checked="checked");let n=tinymce.html.Node.create("input",t);n.shortEnded=!0,r.firstChild?r.insert(n,r.firstChild,!0):r.append(n)}function Ed(r){return Wm}var Qm=[{title:"Large Header",format:"h2",preview:"color: blue;"},{title:"Medium Header",format:"h3"},{title:"Small Header",format:"h4"},{title:"Tiny Header",format:"h5"},{title:"Paragraph",format:"p",exact:!0,classes:""},{title:"Blockquote",format:"blockquote"},{title:"Callouts",items:[{title:"Information",format:"calloutinfo"},{title:"Success",format:"calloutsuccess"},{title:"Warning",format:"calloutwarning"},{title:"Danger",format:"calloutdanger"}]}],Jm={alignleft:{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",classes:"align-left"},aligncenter:{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",classes:"align-center"},alignright:{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",classes:"align-right"},calloutsuccess:{block:"p",exact:!0,attributes:{class:"callout success"}},calloutinfo:{block:"p",exact:!0,attributes:{class:"callout info"}},calloutwarning:{block:"p",exact:!0,attributes:{class:"callout warning"}},calloutdanger:{block:"p",exact:!0,attributes:{class:"callout danger"}}},eg=["#BFEDD2","","#FBEEB8","","#F8CAC6","","#ECCAFA","","#C2E0F4","","#2DC26B","","#F1C40F","","#E03E2D","","#B96AD9","","#3598DB","","#169179","","#E67E23","","#BA372A","","#843FA1","","#236FA1","","#ECF0F1","","#CED4D9","","#95A5A6","","#7E8C8D","","#34495E","","#000000","","#ffffff",""];function tg(r,e,t){t.filetype==="file"&&window.EntitySelectorPopup.show(n=>{r(n.link,{text:n.name,title:n.name})}),t.filetype==="image"&&window.ImageManager.show(function(n){r(n.url,{alt:n.name})},"gallery")}function rg(r){let e=["image","table","link","autolink","fullscreen","code","customhr","autosave","lists","codeeditor","media","imagemanager","about","details","tasklist",r.textDirection==="rtl"?"directionality":""];return window.tinymce.PluginManager.add("codeeditor",hd(r)),window.tinymce.PluginManager.add("customhr",gd(r)),window.tinymce.PluginManager.add("imagemanager",vd(r)),window.tinymce.PluginManager.add("about",yd(r)),window.tinymce.PluginManager.add("details",wd(r)),window.tinymce.PluginManager.add("tasklist",Ed(r)),r.drawioUrl&&(window.tinymce.PluginManager.add("drawio",md(r)),e.push("drawio")),e.filter(t=>Boolean(t))}function ng(){let r=document.head.innerHTML.split(` +`).length*19.2+18+24;this.style.height=`${l}px`;let u=this.shadowRoot.querySelector(".CodeMirrorContainer"),c=f=>{this.cm=f.wysiwygView(u,i,this.getLanguage()),setTimeout(()=>f.updateLayout(this.cm),10),setTimeout(()=>this.style.height=null,12)};window.importVersioned("code").then(f=>{let h=Date.now()-s<20?20:0;setTimeout(()=>c(f),h)})}cleanChildContent(){let s=this.querySelector("pre");if(!!s)for(let i of s.childNodes)i.nodeName==="#text"&&i.textContent==="\uFEFF"&&i.remove()}}t.customElements.define("code-block",n)}function Om(r,e){r.ui.registry.addIcon("codeblock",''),r.ui.registry.addButton("codeeditor",{tooltip:"Insert code block",icon:"codeblock",onAction(){r.execCommand("codeeditor")}}),r.addCommand("codeeditor",()=>{let t=r.selection.getNode(),n=t.ownerDocument;if(cd(t))dd(r,t);else{let o=r.selection.getContent({format:"text"});fd(r,o,"",(s,i)=>{let a=n.createElement("pre"),l=n.createElement("code");l.classList.add(`language-${i}`),l.innerText=s,a.append(l),r.insertContent(a.outerHTML)})}}),r.on("dblclick",t=>{let n=r.selection.getNode();cd(n)&&dd(r,n)}),r.on("PreInit",()=>{r.parser.addNodeFilter("pre",function(t){for(let n of t){let o=tinymce.html.Node.create("code-block",{contenteditable:"false"}),s=n.getAll("span");for(let i of s)i.unwrap();n.attr("style",null),n.wrap(o)}}),r.parser.addNodeFilter("code-block",function(t){for(let n of t)n.attr("contenteditable","false")}),r.serializer.addNodeFilter("code-block",function(t){for(let n of t)n.unwrap()})}),r.on("PreInit",()=>{Rm(r)})}function hd(r){return Om}var Tt=null,sr=null,or={};function Wo(r){return r.hasAttribute("drawio-diagram")}function Pm(r,e=null){Tt=r,sr=e,window.ImageManager.show(function(t){if(e){let n=e.querySelector("img");Tt.dom.setAttrib(n,"src",t.url),Tt.dom.setAttrib(e,"drawio-diagram",t.id)}else{let n=`
`;Tt.insertContent(n)}},"drawio")}function pd(r,e=null){Tt=r,sr=e,bt.show(or.drawioUrl,_m,Mm)}async function Mm(r){let e="image-"+Math.random().toString(16).slice(2),t=window.baseUrl("/loading.gif"),n=o=>{o.status===413?window.$events.emit("error",or.translations.serverUploadLimitText):window.$events.emit("error",or.translations.imageUploadErrorText),console.log(o)};if(sr){bt.close();let o=sr.querySelector("img");try{let s=await bt.upload(r,or.pageId);Tt.dom.setAttrib(o,"src",s.url),Tt.dom.setAttrib(sr,"drawio-diagram",s.id)}catch(s){n(s)}return}setTimeout(async()=>{Tt.insertContent(`
`),bt.close();try{let o=await bt.upload(r,or.pageId);Tt.dom.setAttrib(e,"src",o.url),Tt.dom.get(e).parentNode.setAttribute("drawio-diagram",o.id)}catch(o){Tt.dom.remove(e),n(o)}},5)}function _m(){if(!sr)return Promise.resolve("");let r=sr.getAttribute("drawio-diagram");return bt.load(r)}function md(r){return or=r,function(e,t){e.addCommand("drawio",()=>{let n=e.selection.getNode();pd(e,Wo(n)?n:null)}),e.ui.registry.addIcon("diagram",``),e.ui.registry.addSplitButton("drawio",{tooltip:"Insert/edit drawing",icon:"diagram",onAction(){e.execCommand("drawio"),window.document.body.dispatchEvent(new Event("mousedown",{bubbles:!0}))},fetch(n){n([{type:"choiceitem",text:"Drawing manager",value:"drawing-manager"}])},onItemAction(n,o){if(o==="drawing-manager"){let s=e.selection.getNode();Pm(e,Wo(s)?s:null)}}}),e.on("dblclick",n=>{let o=e.selection.getNode();!Wo(o)||pd(e,o)}),e.on("SetContent",function(){let n=e.dom.select("body > div[drawio-diagram]");!n.length||e.undoManager.transact(function(){for(let o of n)o.setAttribute("contenteditable","false")})})}}function Nm(r,e){r.addCommand("InsertHorizontalRule",function(){let t=document.createElement("hr"),n=r.selection.getNode();n.parentNode.insertBefore(t,n)}),r.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Insert horizontal line",onAction(){r.execCommand("InsertHorizontalRule")}})}function gd(r){return Nm}function Bm(r,e){r.ui.registry.addButton("imagemanager-insert",{title:"Insert image",icon:"image",tooltip:"Insert image",onAction(){window.ImageManager.show(function(t){let n=t.thumbs.display||t.url,o=``;o+=`${t.name}`,o+="",r.execCommand("mceInsertContent",!1,o)},"gallery")}})}function vd(r){return Bm}function $m(r,e){let t={title:"About the WYSIWYG Editor",url:window.baseUrl("/help/wysiwyg")};r.ui.registry.addButton("about",{icon:"help",tooltip:"About the editor",onAction(){tinymce.activeEditor.windowManager.openUrl(t)}})}function yd(r){return $m}var bd=["p","h1","h2","h3","h4","h5","h6","div","blockquote","pre","code-block","details","ul","ol","table"];function Um(r,e){r.ui.registry.addIcon("details",''),r.ui.registry.addIcon("togglefold",''),r.ui.registry.addIcon("togglelabel",''),r.ui.registry.addButton("details",{icon:"details",tooltip:"Insert collapsible block",onAction(){r.execCommand("InsertDetailsBlock")}}),r.ui.registry.addButton("removedetails",{icon:"table-delete-table",tooltip:"Unwrap",onAction(){qm(r)}}),r.ui.registry.addButton("editdetials",{icon:"togglelabel",tooltip:"Edit label",onAction(){xd(r)}}),r.on("dblclick",t=>{!Nn(r)||t.target.closest("doc-root")||xd(r)}),r.ui.registry.addButton("toggledetails",{icon:"togglefold",tooltip:"Toggle open/closed",onAction(){Nn(r).toggleAttribute("open"),r.focus()}}),r.addCommand("InsertDetailsBlock",function(){let t=r.selection.getContent({format:"html"}),n=document.createElement("details"),o=document.createElement("summary"),s="details-"+Date.now();n.setAttribute("data-id",s),n.appendChild(o),t||(t="


"),n.innerHTML+=t,r.insertContent(n.outerHTML),r.focus();let i=r.dom.select(`[data-id="${s}"]`)[0]||null;if(i){let a=i.querySelector("doc-root > *");a&&a.focus(),i.removeAttribute("data-id")}}),r.ui.registry.addContextToolbar("details",{predicate:function(t){return t.nodeName.toLowerCase()==="details"},items:"editdetials toggledetails removedetails",position:"node",scope:"node"}),r.on("PreInit",()=>{Vm(r)})}function xd(r){let e=Nn(r);r.windowManager.open(jm(r)).setData({summary:zm(e)})}function Nn(r){return r.selection.getNode().closest("details")}function zm(r){let e=r.querySelector("summary");return e?e.textContent:""}function jm(r){return{title:"Edit collapsible block",body:{type:"panel",items:[{type:"input",name:"summary",label:"Toggle label"}]},buttons:[{type:"cancel",text:"Cancel"},{type:"submit",text:"Save",primary:!0}],onSubmit(e){let{summary:t}=e.getData();Hm(r,t),e.close()}}}function Hm(r,e){let t=Nn(r);!t||r.undoManager.transact(()=>{let n=t.querySelector("summary");n||(n=document.createElement("summary"),t.prepend(n)),n.textContent=e})}function qm(r){let e=r.selection.getNode().closest("details"),t=r.selection.getBookmark();if(e){let n=e.querySelectorAll("details > *:not(summary, doc-root), doc-root > *");r.undoManager.transact(()=>{for(let o of n)e.parentNode.insertBefore(o,e);e.remove()})}r.focus(),r.selection.moveToBookmark(t)}function Vm(r){r.parser.addNodeFilter("details",function(e){for(let t of e)Gm(t)}),r.serializer.addNodeFilter("details",function(e){for(let t of e)Yo(t),t.attr("open",null)}),r.serializer.addNodeFilter("doc-root",function(e){for(let t of e)t.unwrap()})}function Gm(r){Yo(r),r.attr("contenteditable","false");let e=tinymce.html.Node.create("doc-root",{contenteditable:"true"}),t=null;for(let n of r.children()){if(n.name==="summary")continue;bd.includes(n.name)?(e.append(n),t=null):(t||(t=tinymce.html.Node.create("p"),e.append(t)),t.append(n))}r.append(e)}function Yo(r){r.attr("contenteditable",null);let e=!1;for(let t of r.children())t.name==="doc-root"&&(t.unwrap(),e=!0);e&&Yo(r)}function wd(r){return Um}function Wm(r,e){r.ui.registry.addIcon("tasklist",''),r.ui.registry.addToggleButton("tasklist",{tooltip:"Task list",icon:"tasklist",active:!1,onAction(o){o.isActive()?r.execCommand("RemoveList"):r.execCommand("InsertUnorderedList",null,{"list-item-attributes":{class:"task-list-item"},"list-style-type":"tasklist"})},onSetup(o){r.on("NodeChange",s=>{let i=s.parents.find(l=>l.nodeName==="LI"),a=i&&i.classList.contains("task-list-item");o.setActive(Boolean(a))})}});let t=r.ui.registry.getAll().buttons.bullist;t.onSetup=function(o){r.on("NodeChange",s=>{let i=s.parents.find(u=>u.nodeName==="LI"),a=i&&i.classList.contains("task-list-item"),l=i&&i.parentNode.nodeName==="UL";o.setActive(Boolean(l&&!a))})},t.onAction=function(){Ym(r.selection.getNode())&&r.execCommand("InsertOrderedList",null,{"list-item-attributes":{class:null}}),r.execCommand("InsertUnorderedList",null,{"list-item-attributes":{class:null}})};let n=r.ui.registry.getAll().buttons.numlist;n.onAction=function(){r.execCommand("InsertOrderedList",null,{"list-item-attributes":{class:null}})},r.on("PreInit",()=>{r.parser.addNodeFilter("li",function(o){for(let s of o)s.attributes.map.class==="task-list-item"&&Xm(s)}),r.serializer.addNodeFilter("li",function(o){for(let s of o)s.attributes.map.class==="task-list-item"&&Zm(s)})}),r.on("click",function(o){let s=o.target;s.nodeName==="LI"&&s.classList.contains("task-list-item")&&(Km(o,s,r),o.preventDefault())})}function Ym(r){let e=r.closest("li");return e&&e.parentNode.nodeName==="UL"&&e.classList.contains("task-list-item")}function Km(r,e,t){let n=e.getBoundingClientRect();r.clientX<=n.right&&r.clientX>=n.left&&r.clientY>=n.top&&r.clientY<=n.bottom||t.undoManager.transact(()=>{e.hasAttribute("checked")?e.removeAttribute("checked"):e.setAttribute("checked","checked")})}function Xm(r){r.attr("class","task-list-item");for(let e of r.children())e.name==="input"&&(e.attr("checked")==="checked"&&r.attr("checked","checked"),e.remove())}function Zm(r){let e=r.attr("checked")==="checked";r.attr("checked",null);let t={type:"checkbox",disabled:"disabled"};e&&(t.checked="checked");let n=tinymce.html.Node.create("input",t);n.shortEnded=!0,r.firstChild?r.insert(n,r.firstChild,!0):r.append(n)}function Ed(r){return Wm}var Qm=[{title:"Large Header",format:"h2",preview:"color: blue;"},{title:"Medium Header",format:"h3"},{title:"Small Header",format:"h4"},{title:"Tiny Header",format:"h5"},{title:"Paragraph",format:"p",exact:!0,classes:""},{title:"Blockquote",format:"blockquote"},{title:"Callouts",items:[{title:"Information",format:"calloutinfo"},{title:"Success",format:"calloutsuccess"},{title:"Warning",format:"calloutwarning"},{title:"Danger",format:"calloutdanger"}]}],Jm={alignleft:{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",classes:"align-left"},aligncenter:{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",classes:"align-center"},alignright:{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",classes:"align-right"},calloutsuccess:{block:"p",exact:!0,attributes:{class:"callout success"}},calloutinfo:{block:"p",exact:!0,attributes:{class:"callout info"}},calloutwarning:{block:"p",exact:!0,attributes:{class:"callout warning"}},calloutdanger:{block:"p",exact:!0,attributes:{class:"callout danger"}}},eg=["#BFEDD2","","#FBEEB8","","#F8CAC6","","#ECCAFA","","#C2E0F4","","#2DC26B","","#F1C40F","","#E03E2D","","#B96AD9","","#3598DB","","#169179","","#E67E23","","#BA372A","","#843FA1","","#236FA1","","#ECF0F1","","#CED4D9","","#95A5A6","","#7E8C8D","","#34495E","","#000000","","#ffffff",""];function tg(r,e,t){t.filetype==="file"&&window.EntitySelectorPopup.show(n=>{r(n.link,{text:n.name,title:n.name})}),t.filetype==="image"&&window.ImageManager.show(function(n){r(n.url,{alt:n.name})},"gallery")}function rg(r){let e=["image","table","link","autolink","fullscreen","code","customhr","autosave","lists","codeeditor","media","imagemanager","about","details","tasklist",r.textDirection==="rtl"?"directionality":""];return window.tinymce.PluginManager.add("codeeditor",hd(r)),window.tinymce.PluginManager.add("customhr",gd(r)),window.tinymce.PluginManager.add("imagemanager",vd(r)),window.tinymce.PluginManager.add("about",yd(r)),window.tinymce.PluginManager.add("details",wd(r)),window.tinymce.PluginManager.add("tasklist",Ed(r)),r.drawioUrl&&(window.tinymce.PluginManager.add("drawio",md(r)),e.push("drawio")),e.filter(t=>Boolean(t))}function ng(){let r=document.head.innerHTML.split(` `),e=r.findIndex(n=>n.trim()===""),t=r.findIndex(n=>n.trim()==="");return e===-1||t===-1?"":r.slice(e+1,t).join(` `)}function ig(r){r.serializer.addNodeFilter("br",function(e){for(let t of e)if(t.parent&&t.parent.name==="code"){let n=tinymce.html.Node.create("#text");n.value=` `,t.replace(n)}})}function og(r){return function(e){e.on("ExecCommand change input NodeChange ObjectResized",t),id(e),ad(e,r),e.on("init",()=>{t(),od(e),window.editor=e,nd(e)}),e.on("PreInit",()=>{ig(e)});function t(){let n=e.getContent();r.darkMode&&e.contentDocument.documentElement.classList.add("dark-mode"),window.$events.emit("editor-html-change",n)}window.$events.emitPublic(r.containerElement,"editor-tinymce::setup",{editor:e}),e.ui.registry.addButton("inlinecode",{tooltip:"Inline code",icon:"sourcecode",onAction(){e.execCommand("mceToggleFormat",!1,"code")}})}}function sg(r){return` diff --git a/version b/version index 0912384d0..f9f997b08 100644 --- a/version +++ b/version @@ -1 +1 @@ -v22.07.2 +v22.07.3