/** 标题折叠 * 2022-7 */ function initFoldTitle(me, domUtils) { domUtils = domUtils; var foldTitle; //鼠标移上显示折叠 me.addListener('mouseover', function (type, e) { var hTitle; if (/h\d/i.test(e.target.nodeName)) { hTitle = e.target; } if((e.target.nodeName == 'OL' || e.target.nodeName == 'UL') && e.target.firstChild && e.target.firstChild.firstChild && /h\d/i.test(e.target.firstChild.firstChild.nodeName)){ hTitle = e.target.firstChild.firstChild; } if (hTitle) { //表格、课程报告、勾选框、录音打点、收件箱签名 不显示折叠三角 if($(hTitle).parents('table').length > 0 || $(hTitle).parents('.top-cover-bot').length > 0 || $(hTitle).parents('.todo-view').length > 0 || $(hTitle).parents('.callout-block').length > 0 || $(hTitle).parents('.record-box').length > 0 || $(hTitle).parents('.signDiv').length > 0 || $(hTitle).hasClass('signTitle')){ return } if(hTitle.innerText.trim() == '' || domUtils.isFillChar(hTitle.innerText.trim()) || hTitle.innerText.trim() == ''){ return } //PC端笔记编辑器,正文标题下如果没有子内容,不显示展开收起按钮。 if(!hTitle.nextSibling || (hTitle.nextSibling && /h\d/i.test(hTitle.nextSibling.nodeName) && hTitle.nextSibling.nodeName.replace(/h/i,'') <= hTitle.nodeName.replace(/h/i,''))){ return; } if (!foldTitle) { foldTitle = new Title(); foldTitle.init(me, hTitle); me.ui.getDom().appendChild(foldTitle.resizer); } foldTitle.show(hTitle,domUtils); } }); me.addListener('mouseleave',function (type,e) { var hTitle; if (/h\d/i.test(e.target.nodeName)) { hTitle = e.target; } if((e.target.nodeName == 'OL' || e.target.nodeName == 'UL') && e.target.firstChild && e.target.firstChild.firstChild && /h\d/i.test(e.target.firstChild.firstChild.nodeName)){ hTitle = e.target.firstChild.firstChild; } if(hTitle){ $(me.body).find('.edui-editor-foldTitlebar .tri').css('transition','') } }) $('body').on('mouseover', function (e) { if ($(e.target).hasClass('edui-editor-foldTitlebar') || $(e.target).parents('.edui-editor-foldTitlebar').length > 0) { var resizer = $(e.target).hasClass('edui-editor-foldTitlebar') ? e.target : $(e.target).parents('.edui-editor-foldTitlebar')[0]; var editorId = $(resizer).parents('.edui-editor.edui-default').parent().attr('id'); var editor = UE.getEditor(editorId); //列表悬浮隐藏 $(editor.body).find('li').removeClass('hover'); $(resizer).parents('.edui-editor.edui-default').parent().find('.listtoolList,.modifyListNum,.edui-editor-listtoolbar .hoverTips').hide(); $(resizer).parents('.edui-editor.edui-default').parent().find('.continueListNumBtn,.startNewListBtn,.modifyListNumBtn').removeClass('disabled'); $(resizer).parents('.edui-editor.edui-default').parent().find('.edui-editor-listtoolbar').removeClass('hover'); if ($(editor.container).find('.edui-editor-foldTitlebar')[0] == resizer) { $(editor.body).find('h1,h2,h3,h4,h5,h6').eq($(resizer).attr('index')).addClass('hover'); } } }) $(me.container).on('mouseleave', function (e) { if(foldTitle){ foldTitle.hide(); } }) me.addListener("contentchange", function () { $(me.container).find('.edui-editor-foldTitlebar').removeClass('hover') }) me.addListener('keydown', function (type, evt) { var keyCode = evt.keyCode || evt.which; if (keyCode == 8) { //删除 var range = me.selection.getRange(); var start = range.startContainer; while(!(start.nodeType == 1 && domUtils.isBlockElm(start))){ start = start.parentNode; } //折叠标题后,光标定在标题下一行的开始点删除,展开上一个折叠标题,当前标题变成正文,当前标题也展开 if(range.collapsed && domUtils.isStartInblock(range) && /h\d/i.test(start.tagName) && ((start.previousElementSibling && start.previousElementSibling.style.display == 'none') || (start.innerText.trim() == '' || start.innerText == fillChar))){ evt.preventDefault() var prev = start.previousElementSibling; var next = start.nextElementSibling; //如果当前标题折叠,全部打开 if($(start).hasClass('fold')){ while(next && next.style.display == 'none'){ next.style.display = ''; next = next.nextElementSibling; } } //当前标题变成p var p = document.createElement('p'); p.innerHTML = start.innerHTML; p.setAttribute('element-id',start.getAttribute('element-id')); start.parentNode.insertBefore(p,start); range.setStart(p,0).collapse(true).select(true); start.parentNode.removeChild(start); //start前面折叠起来的全部展开 while(prev && prev.style.display == 'none'){ prev.style.display = ''; prev = prev.previousElementSibling; } if(prev) prev.classList.remove('fold'); } } }); } function Title() { this.editor = null; this.resizer = null; this.doc = document; this.title = null; } Title.prototype = { init: function (editor) { var me = this; me.editor = editor; var resizer = me.resizer = document.createElement('div'); resizer.innerHTML = '