wikijs-fork/assets/js/app.js

2 lines
39 KiB
JavaScript
Raw Normal View History

"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function setInputSelection(e,t,o){if(e.focus(),"undefined"!=typeof e.selectionStart)e.selectionStart=t,e.selectionEnd=o;else if(document.selection&&document.selection.createRange){e.select();var n=document.selection.createRange();n.collapse(!0),n.moveEnd("character",o),n.moveStart("character",t),n.select()}}function makeSafePath(e){var t=_.split(_.trim(e),"/");return t=_.map(t,function(e){return _.kebabCase(_.deburr(_.trim(e)))}),_.join(_.filter(t,function(e){return!_.isEmpty(e)}),"/")}var _createClass=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}();jQuery(document).ready(function(e){var t=this;e("a").smoothScroll({speed:400,offset:-70});new Sticky(".stickyscroll");e(window).bind("beforeunload",function(){e("#notifload").addClass("active")}),e(document).ajaxSend(function(){e("#notifload").addClass("active")}).ajaxComplete(function(){e("#notifload").removeClass("active")});var o=new Alerts;alertsData&&_.forEach(alertsData,function(e){o.push(e)});var n=io(window.location.origin);if(e("#search-input").length){e("#search-input").focus(),e(".searchresults").css("display","block");var i=new Vue({el:"#header-container",data:{searchq:"",searchres:[],searchsuggest:[],searchload:0,searchactive:!1,searchmoveidx:0,searchmovekey:"",searchmovearr:[]},watch:{searchq:function(e,t){i.searchmoveidx=0,e.length>=3?(i.searchactive=!0,i.searchload++,n.emit("search",{terms:e},function(e){i.searchres=e.match,i.searchsuggest=e.suggest,i.searchmovearr=_.concat([],i.searchres,i.searchsuggest),i.searchload>0&&i.searchload--})):(i.searchactive=!1,i.searchres=[],i.searchsuggest=[],i.searchmovearr=[],i.searchload=0)},searchmoveidx:function(e,t){e>0?i.searchmovekey=i.searchmovearr[e-1]?"res."+i.searchmovearr[e-1]._id:"sug."+i.searchmovearr[e-1]:i.searchmovekey=""}},methods:{useSuggestion:function(e){i.searchq=e},closeSearch:function(){i.searchq=""},moveSelectSearch:function(){if(!(i.searchmoveidx<1)){var e=i.searchmoveidx-1;i.searchmovearr[e]?window.location.assign("/"+i.searchmovearr[e]._id):i.searchq=i.searchmovearr[e]}},moveDownSearch:function(){i.searchmoveidx<i.searchmovearr.length&&i.searchmoveidx++},moveUpSearch:function(){i.searchmoveidx>0&&i.searchmoveidx--}}});e("main").on("click",i.closeSearch)}if(e("#page-type-view").length&&!function(){var t="home"!==e("#page-type-view").data("entrypath")?e("#page-type-view").data("entrypath"):"",n=t+"/new-page";e(".btn-create-prompt").on("click",function(o){e("#txt-create-prompt").val(n),e("#modal-create-prompt").toggleClass("is-active"),setInputSelection(e("#txt-create-prompt").get(0),t.length+1,n.length),e("#txt-create-prompt").removeClass("is-danger").next().addClass("is-hidden")}),e("#txt-create-prompt").on("keypress",function(t){13===t.which&&e(".btn-create-go").trigger("click")}),e(".btn-create-go").on("click",function(t){var o=makeSafePath(e("#txt-create-prompt").val());_.isEmpty(o)?e("#txt-create-prompt").addClass("is-danger").next().removeClass("is-hidden"):(e("#txt-create-prompt").parent().addClass("is-loading"),window.location.assign("/create/"+o))}),""!==t&&e(".btn-move-prompt").removeClass("is-hidden");var i=_.lastIndexOf(t,"/")+1;e(".btn-move-prompt").on("click",function(o){e("#txt-move-prompt").val(t),e("#modal-move-prompt").toggleClass("is-active"),setInputSelection(e("#txt-move-prompt").get(0),i,t.length),e("#txt-move-prompt").removeClass("is-danger").next().addClass("is-hidden")}),e("#txt-move-prompt").on("keypress",function(t){13===t.which&&e(".btn-move-go").trigger("click")}),e(".btn-move-go").on("click",function(n){var i=makeSafePath(e("#txt-move-prompt").val());_.isEmpty(i)||i===t||"home"===i?e("#txt-move-prompt").addClass("is-danger").next().removeClass("is-hidden"):(e("#txt-move-prompt").parent().addClass("is-loading"),e.ajax(window.location.href,{data:{move:i},dataType:
move:{name:"Move to...",icon:"fa-folder-open-o",items:t},delete:{name:"Delete",icon:"fa-trash",callback:function(e,t){c.deleteFileId=_.toString(t.$trigger[0].dataset.uid),c.deleteFileWarn(!0)}}}})}}});e("#btn-editor-file-upload input").on("change",function(n){var i=c.files.length;e(n.currentTarget).simpleUpload("/uploads/file",{name:"binfile",data:{folder:c.currentFolder},limit:20,expect:"json",maxFileSize:0,init:function(e){c.uploadSucceeded=!1,c.isLoadingText="Preparing to upload...",c.isLoading=!0},progress:function(e){c.isLoadingText="Uploading..."+Math.round(e)+"%"},success:function(e){if(e.ok){var t=_.filter(e.results,["ok",!1]);t.length?(_.forEach(t,function(e){o.pushError("Upload error",e.msg)}),t.length<e.results.length&&(o.push({title:"Some uploads succeeded",message:"Files that are not mentionned in the errors above were uploaded successfully."}),c.uploadSucceeded=!0)):c.uploadSucceeded=!0}else o.pushError("Upload error",e.msg)},error:function(e){o.pushError(e.message,t.upload.file.name)},finish:function(){c.uploadSucceeded?c.waitChangeComplete(i,!0):c.isLoading=!1}})});var d=ace.require("ace/ext/modelist"),s=null,m=[],u=function(t){return e.ajax({url:"/js/ace/mode-"+t+".js",dataType:"script",cache:!0,beforeSend:function(){if(_.includes(m,t))return!1},success:function(){m.push(t)}})},g=new Vue({el:"#modal-editor-codeblock",data:{modes:d.modesByName,modeSelected:"text",initContent:""},watch:{modeSelected:function(e,t){u(e).done(function(){ace.require("ace/mode/"+e),s.getSession().setMode("ace/mode/"+e)})}},methods:{open:function(t){e("#modal-editor-codeblock").addClass("is-active"),_.delay(function(){s=ace.edit("codeblock-editor"),s.setTheme("ace/theme/tomorrow_night"),s.getSession().setMode("ace/mode/"+g.modeSelected),s.setOption("fontSize","14px"),s.setOption("hScrollBarAlwaysVisible",!1),s.setOption("wrap",!0),s.setValue(g.initContent),s.focus(),s.renderer.updateFull()},300)},cancel:function(t){r=!1,e("#modal-editor-codeblock").removeClass("is-active"),g.initContent=""},insertCode:function(e){a.codemirror.doc.somethingSelected()&&a.codemirror.execCommand("singleSelection");var t="\n```"+g.modeSelected+"\n"+s.getValue()+"\n```\n";a.codemirror.doc.replaceSelection(t),g.cancel()}}});a=new SimpleMDE({autofocus:!0,autoDownloadFontAwesome:!1,element:e("#mk-editor").get(0),placeholder:"Enter Markdown formatted content here...",spellChecker:!1,status:!1,toolbar:[{name:"bold",action:SimpleMDE.toggleBold,className:"icon-bold",title:"Bold"},{name:"italic",action:SimpleMDE.toggleItalic,className:"icon-italic",title:"Italic"},{name:"strikethrough",action:SimpleMDE.toggleStrikethrough,className:"icon-strikethrough",title:"Strikethrough"},"|",{name:"heading-1",action:SimpleMDE.toggleHeading1,className:"icon-header fa-header-x fa-header-1",title:"Big Heading"},{name:"heading-2",action:SimpleMDE.toggleHeading2,className:"icon-header fa-header-x fa-header-2",title:"Medium Heading"},{name:"heading-3",action:SimpleMDE.toggleHeading3,className:"icon-header fa-header-x fa-header-3",title:"Small Heading"},{name:"quote",action:SimpleMDE.toggleBlockquote,className:"icon-quote-left",title:"Quote"},"|",{name:"unordered-list",action:SimpleMDE.toggleUnorderedList,className:"icon-list-ul",title:"Bullet List"},{name:"ordered-list",action:SimpleMDE.toggleOrderedList,className:"icon-list-ol",title:"Numbered List"},"|",{name:"link",action:function(e){},className:"icon-link2",title:"Insert Link"},{name:"image",action:function(e){r||l.open()},className:"icon-image3",title:"Insert Image"},{name:"file",action:function(e){r||c.open()},className:"icon-file-text-o",title:"Insert File"},{name:"video",action:function(e){},className:"icon-video-camera2",title:"Insert Video Player"},"|",{name:"inline-code",action:function(e){if(!e.codemirror.doc.somethingSelected())return o.pushError("Invalid selection","You must select at least 1 character first.");var t=e.codemirror.doc.getSelections();t=_.map(t,function(e){return"`"+e+"`"}),e.codemirror.doc.replaceSelections(t)},className:"icon-terminal",title:"Inline Code"},{name:"code-block",action:function(e){r|