wikiplus-highlight 2.7.2 → 2.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # Wikiplus-highlight
2
+ [![jsdelivr hits](https://img.shields.io/jsdelivr/gh/hd/bhsd-harry/Wikiplus-highlight.svg)](https://github.com/bhsd-harry/Wikiplus-highlight)
3
+ [![npm version](https://badge.fury.io/js/wikiplus-highlight.svg)](https://www.npmjs.com/package/wikiplus-highlight)
4
+ [![npm downloads](https://img.shields.io/npm/dw/wikiplus-highlight.svg)](https://www.npmjs.com/package/wikiplus-highlight)
2
5
 
3
6
  **Wikiplus-highlight** 是由 Bhsd 编写的一款 [Wikiplus](https://github.com/Wikiplus/Wikiplus) 语法高亮插件,它主要基于 MediaWiki 内置的 [JavaScript 模块](https://www.mediawiki.org/wiki/ResourceLoader/Core_modules)和 [CodeMirror](https://codemirror.net/) 编写。
4
7
 
@@ -9,7 +12,13 @@
9
12
  在*个人 JS 页*添加以下代码:
10
13
 
11
14
  ```javascript
12
- mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight@2.7.2/main.min.js');
15
+ mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight@2.7.3');
16
+ ```
17
+
18
+
19
+
20
+ ```javascript
21
+ mw.loader.load('//unpkg.com/wikiplus-highlight@2.7.3/dist/main.min.js');
13
22
  ```
14
23
 
15
24
  ### 稳定版本
@@ -17,7 +26,13 @@ mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight@2.7.2/main.min.js');
17
26
  在*个人 JS 页*添加以下代码:
18
27
 
19
28
  ```javascript
20
- mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight/main.min.js');
29
+ mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight');
30
+ ```
31
+
32
+
33
+
34
+ ```javascript
35
+ mw.loader.load('//unpkg.com/wikiplus-highlight/dist/main.min.js');
21
36
  ```
22
37
 
23
38
  由于 CDN 的缓存机制,稳定版本的更新大约会滞后一周。
package/bump.sh CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/local/bin/bash
2
2
  sed -i '' -E "s/version = '.+'/version = '$1'/" main.js
3
- perl -pi -e "s|wikiplus-highlight@\d+\..+?/|wikiplus-highlight\@$1/|" README.md
3
+ sed -i '' -E "s/\"version\": \".+\"/\"version\": \"$1\"/" package.json
4
+ perl -pi -e "s|wikiplus-highlight@\d+\..+?(['/])|wikiplus-highlight\@$1\$1|" README.md
4
5
  for file in i18n/*
5
6
  do
6
7
  sed -i '' -E "s/\"wphl-version\": \".+\"/\"wphl-version\": \"$1\"/" $file
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @name Wikiplus-highlight Wikiplus编辑器的CodeMirror语法高亮扩展
3
+ * @author Bhsd <https://github.com/bhsd-harry>
4
+ * @author 机智的小鱼君 <https://github.com/Dragon-Fish>
5
+ * @license GPL-3.0
6
+ */
7
+ (async()=>{"use strict";const e="2.7.2",i="object"==typeof mw.storage&&"function"==typeof mw.storage.getObject?mw.storage:{getObject(e){const i=localStorage.getItem(e);if(!1===i)return!1;try{return JSON.parse(i)}catch(e){return null}},setObject(e,i){let t;try{return t=JSON.stringify(i),localStorage.setItem(e,t)}catch(e){return!1}}},t=Object.fromEntries||(e=>{const i={};for(const[t,a]of e)i[t]=a;return i}),a=e=>e.split(".").map((e=>Number(e))),n=(e,...i)=>mw.msg(`wphl-${e}`,...i),s=(...e)=>()=>{const i=$("<p>",{html:n(...e)});return mw.notify(i,{type:"success",autoHideSeconds:"long"}),i},o=a(e).slice(0,2).join("."),l="//fastly.jsdelivr.net",r="npm/codemirror@5.65.3",c="gh/bhsd-harry/codemirror-mediawiki@1.0",d=`npm/wikiplus-highlight@${o}`,{wgPageName:m,wgNamespaceNumber:u,wgPageContentModel:g,wgServerName:h,wgScriptPath:p,wgUserLanguage:w,skin:k}=mw.config.values,f=null!==mw.loader.getState("ext.CodeMirror"),b=i.getObject("InPageEditMwConfig")||{},x=`${h}${p}`,j=b[x]||{},y=j.time<Date.now()-2592e6,v={css:"css","sanitized-css":"css",javascript:"javascript",json:"javascript",wikitext:"mediawiki"},C=f?{lib:"ext.CodeMirror.lib",css:"ext.CodeMirror.lib.mode.css",javascript:"ext.CodeMirror.lib.mode.javascript",lua:`${r}/mode/lua/lua.min.js`,mediawiki:y?"ext.CodeMirror.data":[],htmlmixed:"ext.CodeMirror.lib.mode.htmlmixed",xml:[]}:{lib:`${r}/lib/codemirror.min.js`,css:`${r}/mode/css/css.min.js`,javascript:`${r}/mode/javascript/javascript.min.js`,lua:`${r}/mode/lua/lua.min.js`,mediawiki:[],htmlmixed:`${r}/mode/htmlmixed/htmlmixed.min.js`,xml:`${r}/mode/xml/xml.min.js`},W={searchcursor:`${r}/addon/search/searchcursor.min.js`,search:`${d}/search.min.js`,activeLine:`${r}/addon/selection/active-line.min.js`,markSelection:`${r}/addon/selection/mark-selection.min.js`,trailingspace:`${r}/addon/edit/trailingspace.min.js`,matchBrackets:`${r}/addon/edit/matchbrackets.min.js`,matchTags:`${d}/matchtags.min.js`};let S=i.getObject("Wikiplus-highlight-addons")||["search"],M=i.getObject("Wikiplus-highlight-indent")||"4";const O=document.getElementById("wphl-contextmenu")||mw.loader.addStyleTag("#Wikiplus-CodeMirror .cm-mw-template-name{cursor:pointer}");O.id="wphl-contextmenu",O.disabled=!0;let _,z=i.getObject("Wikiplus-highlight-i18n");z?((e,i)=>{const[t,n]=a(e),[s,o]=a(i);return t<s||t===s&&n<o})(z["wphl-version"],e)&&(_=s("welcome-upgrade",e)):(z={},_=s("welcome"));const T={zh:"zh-hans","zh-hans":"zh-hans","zh-cn":"zh-hans","zh-my":"zh-hans","zh-sg":"zh-hans","zh-hant":"zh-hant","zh-tw":"zh-hant","zh-hk":"zh-hant","zh-mo":"zh-hant"}[w]||"en",L=`${l}/${d}/i18n/${T}.json`,I=z["wphl-version"]===o,B=Promise.all([mw.loader.using("mediawiki.util"),(async()=>{I&&z["wphl-lang"]===T||(z=await $.ajax(`${L}`,{dataType:"json",cache:!0}),i.setObject("Wikiplus-highlight-i18n",z)),mw.messages.set(z)})()]),H=(e,i)=>{if(0!==e.length)return i?mw.loader.using(e):$.ajax(`${l}/${e.length>1?"combine/":""}${e.join()}`,{dataType:"script",cache:!0})};let E;const P=async e=>{let i=[];const t=[],a=[],n="function"==typeof window.CodeMirror,s=n?window.CodeMirror:{modes:{},prototype:{},commands:{},optionHandlers:{}};["mediawiki","widget"].includes(e)&&!s.modes.mediawiki&&(mw.loader.load(`${l}/${c}/mediawiki.min.css`,"text/css"),(f?t:i).push(`${c}/mediawiki.min.js`)),"mediawiki"===e&&"object"==typeof j.config&&j.config.tags.html&&(e="html"),n||((f?i:a).push(C.lib),f||mw.loader.load(`${l}/${r}/lib/codemirror.min.css`,"text/css")),!s.prototype.getSearchCursor&&S.includes("search")&&a.push(W.searchcursor),!s.commands.findForward&&S.includes("search")&&a.push(W.search),!s.optionHandlers.styleActiveLine&&S.includes("activeLine")&&a.push(W.activeLine),!s.optionHandlers.styleSelectedText&&S.includes("search")&&a.push(W.markSelection),!s.optionHandlers.showTrailingSpace&&S.includes("trailingspace")&&a.push(W.trailingspace),!s.optionHandlers.matchBrackets&&S.includes("matchBrackets")&&a.push(W.matchBrackets),!s.optionHandlers.matchTags&&S.includes("matchTags")&&a.push(W.matchTags),["widget","html"].includes(e)?["css","javascript","mediawiki","htmlmixed","xml"].forEach((e=>{s.modes[e]||(i=i.concat(C[e]))})):s.modes[e]||("lua"===e?(f?t:i).push(C.lua):i=i.concat(C[e])),n?await Promise.all([H(i,f),H(t),H(a)]):f?(await H(i,!0),await Promise.all([H(t),H(a)])):(await H(a),await H(i))},N=async(e,a)=>{if(!["mediawiki","widget"].includes(e))return;f&&y&&await a;let n=mw.config.get("extCodeMirrorConfig");if(n||y||!I||(({config:n}=j),mw.config.set("extCodeMirrorConfig",n)),n&&n.redirect&&n.img)return n;if(n)return n;const{query:{magicwords:s,extensiontags:o,functionhooks:l,variables:r}}=await(new mw.Api).get({meta:"siteinfo",siprop:n?"magicwords":"magicwords|extensiontags|functionhooks|variables",formatversion:2}),c=["msg","raw","msgnw","subst","safesubst"],d=e=>e.flatMap((({aliases:e,name:i})=>e.map((e=>({alias:e,name:i}))))),m=e=>t(e.map((({alias:e,name:i})=>[e.replace(/:$/,""),i])));if(n){const{functionSynonyms:[e]}=n;e.subst||d(s.filter((({name:e})=>c.includes(e)))).forEach((({alias:i,name:t})=>{e[i.replace(/:$/,"")]=t}))}else{n={tagModes:{pre:"mw-tag-pre",nowiki:"mw-tag-nowiki",ref:"text/mediawiki"},tags:t(o.map((e=>[e.slice(1,-1),!0]))),urlProtocols:mw.config.get("wgUrlProtocols")};const e=new Set([...l,...r,...c]),i=s.filter((({name:i,aliases:t})=>t.some((e=>/^__.+__$/.test(e)))||e.has(i))),a=d(i.filter((e=>e["case-sensitive"]))),u=d(i.filter((e=>!e["case-sensitive"]))).map((({alias:e,name:i})=>({alias:e.toLowerCase(),name:i})));n.doubleUnderscore=[m(u.filter((({alias:e})=>/^__.+__$/.test(e)))),m(a.filter((({alias:e})=>/^__.+__$/.test(e))))],n.functionSynonyms=[m(u.filter((({alias:e})=>!/^__.+__|^#$/.test(e)))),m(a.filter((({alias:e})=>!/^__.+__|^#$/.test(e))))]}return n.redirect=s.find((({name:e})=>"redirect"===e)).aliases,n.img=m(d(s.filter((({name:e})=>e.startsWith("img_"))))),mw.config.set("extCodeMirrorConfig",n),(e=>{b[x]={config:e,time:Date.now()},i.setObject("InPageEditMwConfig",b)})(n),n},Q=async(e,i)=>{const t=i?"javascript":await(async()=>{if([274,828].includes(u)&&!m.endsWith("/doc")){const e=274===u?"Widget":"Lua";return await mw.loader.using(["oojs-ui-windows","oojs-ui.styles.icons-content"]),await OO.ui.confirm(n("contentmodel"),{actions:[{label:e},{label:"Wikitext",action:"accept"}]})?"mediawiki":e.toLowerCase()}return m.endsWith("/doc")?"mediawiki":v[g]})(),a=P(t),[s]=await Promise.all([N(t,a),a]);"mediawiki"===t&&s.tags.html?(s.tagModes.html="htmlmixed",await P("html")):"widget"!==t||CodeMirror.mimeModes.widget||CodeMirror.defineMIME("widget",{name:"htmlmixed",tags:{noinclude:[[null,null,"mediawiki"]]}});const o=e.height();E&&E.toTextArea();const l=i||"json"===g,{name:r}=$.client.profile();E=CodeMirror.fromTextArea(e[0],$.extend({inputStyle:"safari"===r?"textarea":"contenteditable",lineNumbers:!0,lineWrapping:!0,mode:t,mwConfig:s,json:l,styleActiveLine:S.includes("activeLine"),styleSelectedText:S.includes("search"),showTrailingSpace:S.includes("trailingspace"),matchBrackets:S.includes("matchBrackets")&&("mediawiki"!==t&&!l||{bracketRegex:/[{}[\]]/}),matchTags:S.includes("matchBrackets")&&["mediawiki","widget"].includes(t)},"mediawiki"===t?{}:{indentUnit:S.includes("indentWithSpace")?M:"4",indentWithTabs:!S.includes("indentWithSpace")})),E.setSize(null,o),E.refresh();const c=E.getWrapperElement();if(c.id="Wikiplus-CodeMirror",["mediawiki","widget"].includes(t)&&S.includes("contextmenu")){O.disabled=!1;const{functionSynonyms:[e]}=mw.config.get("extCodeMirrorConfig"),i=i=>Object.keys(e).filter((t=>e[t]===i)).map((e=>e.startsWith("#")?e:`#${e}`)),t=i("invoke"),a=i("widget");await mw.loader.using("mediawiki.Title"),$(c).on("contextmenu",".cm-mw-template-name",(function(){const e=this.textContent.replace(/\u200e/g,"").trim(),i=new mw.Title(e);return 0!==i.namespace||e.startsWith(":")?open(i.getUrl(),"_blank"):open(mw.util.getUrl(`Template:${e}`),"_blank"),!1})).on("contextmenu",".cm-mw-parserfunction-name + .cm-mw-parserfunction-delimiter + .cm-mw-parserfunction",(function(){const e=this.previousSibling.previousSibling.textContent.trim().toLowerCase();return t.includes(e)?open(mw.util.getUrl(`Module:${this.textContent}`),"_blank"):a.includes(e)&&open(mw.util.getUrl(`Widget:${this.textContent}`,{action:"edit"}),"_blank"),!1}))}else O.disabled=!0;if($("#Wikiplus-Quickedit-Jump").children("a").attr("href","#Wikiplus-CodeMirror"),!i){const e=()=>{$("#Wikiplus-Quickedit-Submit").triggerHandler("click")},i=()=>{$("#Wikiplus-Quickedit-MinorEdit").click(),$("#Wikiplus-Quickedit-Submit").triggerHandler("click")};E.addKeyMap($.extend({"Ctrl-S":e,"Cmd-S":e,"Shift-Ctrl-S":i,"Shift-Cmd-S":i},Wikiplus.getSetting("esc_to_exit_quickedit")?{Esc(){$("#Wikiplus-Quickedit-Back").triggerHandler("click")}}:{}))}mw.hook("wiki-codemirror").fire(E)};new MutationObserver((e=>{const i=$(e.flatMap((({addedNodes:e})=>[...e]))).find("#Wikiplus-Quickedit, #Wikiplus-Setting-Input");0!==i.length&&Q(i,"Wikiplus-Setting-Input"===i.attr("id"))})).observe(document.body,{childList:!0});(document.getElementById("wphl-style")||mw.loader.addStyleTag("#Wikiplus-Quickedit+.CodeMirror,#Wikiplus-Setting-Input+.CodeMirror{border:1px solid #c8ccd1;line-height:1.3;clear:both}div.Wikiplus-InterBox{font-size:14px;z-index:100}.skin-minerva .Wikiplus-InterBox{font-size:16px}.cm-trailingspace{text-decoration:underline wavy red}div.CodeMirror span.CodeMirror-matchingbracket{box-shadow:0 0 0 2px #9aef98}div.CodeMirror span.CodeMirror-nonmatchingbracket{box-shadow:0 0 0 2px #eace64}#Wikiplus-highlight-dialog .oo-ui-messageDialog-title{margin-bottom:0.28571429em}#Wikiplus-highlight-dialog .oo-ui-flaggedElement-notice{font-weight:normal;margin:0}")).id="wphl-style";const{get:U=function(e){return e.value},set:D=function(e,i){e.value=i}}=$.valHooks.textarea||{},A=e=>["Wikiplus-Quickedit","Wikiplus-Setting-Input"].includes(e.id);let V,F,J,q,K;$.valHooks.textarea={get:e=>A(e)&&E?E.getValue():U(e),set(e,i){A(e)&&E?E.setValue(i):D(e,i)}},await B;const R=(e=S)=>{K.toggle(e.includes("indentWithSpace"))},G=$(mw.util.addPortletLink({minerva:"page-actions-overflow",citizen:"p-actions"}[k]||"p-cactions","#",n("portlet"),"wphl-settings")).click((async e=>{if(e.preventDefault(),!V){await mw.loader.using(["oojs-ui-windows","oojs-ui.styles.icons-content"]),V=new OO.ui.MessageDialog({id:"Wikiplus-highlight-dialog"});const e=new OO.ui.WindowManager;e.$element.appendTo(document.body),e.addWindows([V]),F=new OO.ui.CheckboxMultiselectInputWidget({options:[{data:"search",label:n("addon-search")},{data:"activeLine",label:n("addon-active-line")},{data:"trailingspace",label:n("addon-trailingspace")},{data:"matchBrackets",label:n("addon-matchbrackets")},{data:"matchTags",label:n("addon-matchtags")},{data:"contextmenu",label:n("addon-contextmenu")},{data:"indentWithSpace",label:n("addon-indentwithspace")}],value:S}).on("change",R),J=new OO.ui.NumberInputWidget({min:0,value:M}),q=new OO.ui.FieldLayout(F,{label:n("addon-label"),notices:[n("addon-notice")],align:"top"}),K=new OO.ui.FieldLayout(J,{label:n("addon-indent")}),R()}V.open({title:n("addon-title"),message:q.$element.add(K.$element).add($("<p>",{html:n("feedback")})),actions:[{action:"reject",label:mw.msg("ooui-dialog-message-reject")},{action:"accept",label:mw.msg("ooui-dialog-message-accept"),flags:"progressive"}],size:"en"===T?"medium":"small"}).closing.then((e=>{q.$element.detach(),K.$element.detach(),"object"==typeof e&&"accept"===e.action&&(S=F.getValue(),M=J.getValue(),i.setObject("Wikiplus-highlight-addons",S),i.setObject("Wikiplus-highlight-indent",M))}))}));"minerva"===k&&G.find("a").addClass("mw-ui-icon-minerva-settings"),"function"==typeof _&&_().find("#wphl-settings-notify").click((e=>{e.preventDefault(),$("#wphl-settings").triggerHandler("click")}))})();
package/i18n/en.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "wphl-version": "2.7.2",
2
+ "wphl-version": "2.7.3",
3
3
  "wphl-lang": "en",
4
4
  "wphl-addon-search": "Search",
5
5
  "wphl-addon-active-line": "Show active line",
package/i18n/zh-hans.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "wphl-version": "2.7.2",
2
+ "wphl-version": "2.7.3",
3
3
  "wphl-lang": "zh-hans",
4
4
  "wphl-addon-search": "搜索",
5
5
  "wphl-addon-active-line": "高亮显示光标所在行",
package/i18n/zh-hant.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "wphl-version": "2.7.2",
2
+ "wphl-version": "2.7.3",
3
3
  "wphl-lang": "zh-hant",
4
4
  "wphl-addon-search": "搜尋",
5
5
  "wphl-addon-active-line": "突出顯示游標所在行",
package/main.js CHANGED
@@ -8,7 +8,7 @@
8
8
  (async () => {
9
9
  'use strict';
10
10
 
11
- const version = '2.7.2';
11
+ const version = '2.7.3';
12
12
 
13
13
  /**
14
14
  * polyfill for mw.storage
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wikiplus-highlight",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
4
4
  "description": "A plugin for the MediaWiki front-end add-on \"Wikiplus\"",
5
5
  "main": "main.js",
6
6
  "scripts": {