“MediaWiki:Gadget-site-lib.codemirror.js”的版本间差异

无编辑摘要
// 由ResourceLoader直接调用,不可使用ES6语法
/**
* @FunctionDescription: 1. 下载需要LLWiki定义的CodeMirror模式扩展函数,桌面版、手机版均可用
// * @Function: 1. 下载需要的CodeMirror模式(CodeMirror.download)
* 2. 高亮显示页内Wikitext代码(CodeMirror.runmode)
* @Source: [https://codemirror.net/addon/runmode/runmode.js]
* @EditedByAuthor: 无特殊说明时均为[[User:Bhsd]]
*/
"use strict";
/*global CodeMirror*/
 
// 1. 下载需要的CodeMirror模式
/**
* @Function: 根据内容模型下载需要的CodeMirror模式
* @Param {String} alias, 内容模型名称或别名
* @Return {Promise} 表示下载是否成功的Promise对象
*/
const promise = {javascript: null, css: null, lua: null, wiki: null},
aliases = { js: 'javascript', javascript: 'javascript', json: 'javascript', css: 'css',
};
 
/**
// 2. 高亮显示页面代码
* @Function: 高亮页内Wikitext代码
* @Source: [https://codemirror.net/addon/runmode/runmode.js]
* @EditedBy: [[User:Bhsd]]
* @Param {HTMLElement} pre, 含有Wikitext代码的HTML元素,通常为<pre>或<code>
* @Param {Boolean} force, 是否不执行默认的懒加载
*/
const render = function(obj) {
observer.unobserve( obj.target );
callback = function(entries) { entries.filter(function(obj) { return obj.isIntersecting; }).forEach( render ); },
observer = new IntersectionObserver(callback, {threshold: 0.01}); // jshint ignore: line
CodeMirror.runmode = function(pre, force) {
CodeMirror.download( 'wiki' ).then(function() { observer.observe( pre ); });
if (force) { render( {target: pre} ); }
else { observer.observe( pre ); }
});
};
//</nowiki>
16,874

个编辑