编辑器头部按钮显示与否支持配置
This commit is contained in:
		
							parent
							
								
									a756acf27c
								
							
						
					
					
						commit
						be9323c408
					
				| @ -114,7 +114,8 @@ export default { | ||||
|       publishLocations: 'current', | ||||
|     }), | ||||
|     pagedownButtons() { | ||||
|       return pagedownButtons.map(button => ({ | ||||
|       const buttonShowObj = store.getters['data/computedSettings'].editor.headButtons; | ||||
|       return pagedownButtons.filter(it => buttonShowObj[it.method]).map(button => ({ | ||||
|         ...button, | ||||
|         titleWithShortcut: `${button.title}${getShortcut(button.method)}`, | ||||
|         iconClass: `icon-${button.icon}`, | ||||
|  | ||||
| @ -17,6 +17,32 @@ editor: | ||||
|   monospacedFontOnly: false | ||||
|   # 是否显示右上角图标 | ||||
|   showInPageButtons: true | ||||
|   # 头部的按钮是否显示独立设置 | ||||
|   headButtons: | ||||
|     # 加粗 | ||||
|     bold: true | ||||
|     # 斜体 | ||||
|     italic: true | ||||
|     # 标题 | ||||
|     heading: true | ||||
|     # 删除线 | ||||
|     strikethrough: true | ||||
|     # 无序列表 | ||||
|     ulist: true | ||||
|     # 有序列表 | ||||
|     olist: true | ||||
|     # 可选列表 | ||||
|     clist: true | ||||
|     # 块引用 | ||||
|     quote: true | ||||
|     # 代码 | ||||
|     code: true | ||||
|     # 表格 | ||||
|     table: true | ||||
|     # 链接 | ||||
|     link: true | ||||
|     # 图片 | ||||
|     image: true | ||||
| 
 | ||||
| # Keyboard shortcuts | ||||
| # See https://craig.is/killing/mice | ||||
|  | ||||
| @ -15,7 +15,7 @@ export default [{ | ||||
|   method: 'strikethrough', | ||||
|   title: '删除线', | ||||
|   icon: 'format-strikethrough', | ||||
| }, { | ||||
| // }, {
 | ||||
| }, { | ||||
|   method: 'ulist', | ||||
|   title: '无序列表', | ||||
| @ -28,7 +28,7 @@ export default [{ | ||||
|   method: 'clist', | ||||
|   title: '可选列表', | ||||
|   icon: 'format-list-checks', | ||||
| }, { | ||||
| // }, {
 | ||||
| }, { | ||||
|   method: 'quote', | ||||
|   title: '块引用', | ||||
|  | ||||
| @ -1,3 +1,4 @@ | ||||
| import md5 from 'js-md5'; | ||||
| import FileSaver from 'file-saver'; | ||||
| import TemplateWorker from 'worker-loader!./templateWorker.js'; // eslint-disable-line
 | ||||
| import localDbSvc from './localDbSvc'; | ||||
| @ -34,6 +35,24 @@ function groupHeadings(headings, level = 1) { | ||||
|   return result; | ||||
| } | ||||
| 
 | ||||
| const getImgBase64 = async (uri) => { | ||||
|   if (uri.indexOf('http://') !== 0 && uri.indexOf('https://') !== 0) { | ||||
|     const currDirNode = store.getters['explorer/selectedNodeFolder']; | ||||
|     const absoluteImgPath = utils.getAbsoluteFilePath(currDirNode, uri); | ||||
|     const md5Id = md5(absoluteImgPath); | ||||
|     const imgItem = await localDbSvc.getImgItem(md5Id); | ||||
|     if (imgItem) { | ||||
|       const potIdx = uri.lastIndexOf('.'); | ||||
|       const suffix = potIdx > -1 ? uri.substring(potIdx + 1) : 'png'; | ||||
|       const mime = `image/${suffix}`; | ||||
|       return `data:${mime};base64,${imgItem.content}`; | ||||
|     } | ||||
|     return ''; | ||||
|   } | ||||
|   return uri; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| const containerElt = document.createElement('div'); | ||||
| containerElt.className = 'hidden-rendering-container'; | ||||
| document.body.appendChild(containerElt); | ||||
| @ -65,6 +84,28 @@ export default { | ||||
|       wrapperElt.parentNode.removeChild(wrapperElt); | ||||
|     }); | ||||
| 
 | ||||
|     // 替换相对路径图片为blob图片
 | ||||
|     const imgs = Array.prototype.slice.call(containerElt.getElementsByTagName('img')).map((imgElt) => { | ||||
|       let uri = imgElt.attributes.src.nodeValue; | ||||
|       if (uri.indexOf('http://') !== 0 && uri.indexOf('https://') !== 0) { | ||||
|         uri = decodeURIComponent(uri); | ||||
|         imgElt.removeAttribute('src'); | ||||
|         return { imgElt, uri }; | ||||
|       } | ||||
|       return { imgElt }; | ||||
|     }); | ||||
|     const loadedPromises = imgs.map(it => new Promise((resolve, reject) => { | ||||
|       if (!it.imgElt.src && it.uri) { | ||||
|         getImgBase64(it.uri).then((newUrl) => { | ||||
|           it.imgElt.src = newUrl; | ||||
|           resolve(); | ||||
|         }, () => reject(new Error('加载当前空间图片出错'))); | ||||
|         return; | ||||
|       } | ||||
|       resolve(); | ||||
|     })); | ||||
|     await Promise.all(loadedPromises); | ||||
| 
 | ||||
|     // Make TOC
 | ||||
|     const headings = containerElt.querySelectorAll('h1,h2,h3,h4,h5,h6').cl_map(headingElt => ({ | ||||
|       title: headingElt.textContent, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 xiaoqi.cxq
						xiaoqi.cxq