wikiplus-highlight 3.0.1 → 3.0.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.
Files changed (3) hide show
  1. package/README.md +13 -3
  2. package/dist/main.js +38 -7
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -12,13 +12,13 @@
12
12
  在*个人 JS 页*添加以下代码:
13
13
 
14
14
  ```javascript
15
- mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight@3.0.1');
15
+ mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight@3.0.3');
16
16
  ```
17
17
 
18
18
 
19
19
 
20
20
  ```javascript
21
- mw.loader.load('//unpkg.com/wikiplus-highlight@3.0.1/dist/main.js');
21
+ mw.loader.load('//unpkg.com/wikiplus-highlight@3.0.3');
22
22
  ```
23
23
 
24
24
  ### 稳定版本
@@ -32,7 +32,7 @@ mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight');
32
32
 
33
33
 
34
34
  ```javascript
35
- mw.loader.load('//unpkg.com/wikiplus-highlight/dist/main.js');
35
+ mw.loader.load('//unpkg.com/wikiplus-highlight');
36
36
  ```
37
37
 
38
38
  由于 CDN 的缓存机制,稳定版本的更新大约会滞后一周。
@@ -92,6 +92,16 @@ MediaWiki 模式下自动闭合生效的字符包括 `(`、`[`、`{` 和 `"`,
92
92
 
93
93
  这个功能基于 [wikiparser-node](https://github.com/bhsd-harry/wikiparser-node)。开启后将在编辑框内提示可能存在的维基语法错误。
94
94
 
95
+ ### 添加 WikiEditor 工具栏
96
+
97
+ *加入的版本:3.0.2*
98
+
99
+ 工具栏遵从当前网站安装的 [WikiEditor](https://www.mediawiki.org/wiki/Extension:WikiEditor) 扩展的版本。
100
+
101
+ ### 自动填充
102
+
103
+ 自动填充功能会在输入 `{{` 或 `__` 时自动填充魔术字,输入 `<` 或 `</` 时自动填充标签名。
104
+
95
105
  ### 调整缩进
96
106
 
97
107
  这是一个设置选项。默认设置下使用 Tab 进行缩进。
package/dist/main.js CHANGED
@@ -8,14 +8,21 @@
8
8
  if ('wphl' in mw.libs) {
9
9
  return;
10
10
  }
11
- const version = '3.0.1';
11
+ const version = '3.0.3';
12
12
  mw.libs['wphl'] = { version }; // 开始加载
13
13
  // 路径
14
- const CDN = '//testingcf.jsdelivr.net', MW_CDN = 'npm/@bhsd/codemirror-mediawiki@2.4.4/dist/mw.min.js', REPO_CDN = 'npm/wikiplus-highlight';
14
+ const CDN = '//testingcf.jsdelivr.net', MW_CDN = 'npm/@bhsd/codemirror-mediawiki@2.4.5/dist/mw.min.js', REPO_CDN = 'npm/wikiplus-highlight';
15
15
  const { wgPageName: page, wgNamespaceNumber: ns, wgPageContentModel: contentmodel, } = mw.config.get();
16
- const CONTENTMODEL = {
16
+ const CONTENTMODELS = {
17
17
  'sanitized-css': 'css',
18
18
  wikitext: 'mediawiki',
19
+ }, EXTS = {
20
+ css: 'css',
21
+ js: 'javascript',
22
+ json: 'json',
23
+ }, NAMESPACES = {
24
+ 828: 'lua',
25
+ 274: 'html',
19
26
  };
20
27
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/unbound-method
21
28
  const getObject = mw.storage.getObject || ((key) => JSON.parse(String(localStorage.getItem(key))));
@@ -31,10 +38,34 @@
31
38
  script.src = `${CDN}/${MW_CDN}`;
32
39
  document.head.appendChild(script);
33
40
  });
34
- /** 检查页面语言类型 */
35
- const getPageMode = async () => {
41
+ /**
42
+ * 检查页面语言类型
43
+ * @param value 页面内容
44
+ */
45
+ const getPageMode = async (value) => {
46
+ if (typeof _WikiplusPages === 'object') {
47
+ const pages = Object.values(_WikiplusPages)
48
+ .filter(({ sectionCache }) => Object.values(sectionCache).includes(value));
49
+ if (pages.some(({ title }) => !title.endsWith('/doc'))) {
50
+ await mw.loader.using('mediawiki.Title');
51
+ }
52
+ const modes = new Set(pages.map(({ title }) => {
53
+ var _a;
54
+ if (title.endsWith('/doc')) {
55
+ return 'mediawiki';
56
+ }
57
+ const t = new mw.Title(title), namespace = t.getNamespaceId();
58
+ return namespace % 2
59
+ ? 'mediawiki'
60
+ : EXTS[((_a = t.getExtension()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || ''] || NAMESPACES[namespace] || 'mediawiki';
61
+ }));
62
+ if (modes.size === 1) {
63
+ const [mode] = modes;
64
+ return mode;
65
+ }
66
+ }
36
67
  if (ns !== 274 && contentmodel !== 'Scribunto' || page.endsWith('/doc')) {
37
- return CONTENTMODEL[contentmodel] || contentmodel;
68
+ return CONTENTMODELS[contentmodel] || contentmodel;
38
69
  }
39
70
  await mw.loader.using('oojs-ui-windows');
40
71
  if (await OO.ui.confirm(mw.msg('cm-mw-contentmodel'), {
@@ -51,7 +82,7 @@
51
82
  */
52
83
  const renderEditor = async ($target, setting) => {
53
84
  await init();
54
- const cm = await CodeMirror6.fromTextArea($target[0], setting ? 'json' : await getPageMode());
85
+ const cm = await CodeMirror6.fromTextArea($target[0], setting ? 'json' : await getPageMode($target.val()));
55
86
  cm.view.dom.id = 'Wikiplus-CodeMirror';
56
87
  document.querySelector('#Wikiplus-Quickedit-Jump > a').href = '#Wikiplus-CodeMirror';
57
88
  if (!setting) { // 普通Wikiplus编辑区
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wikiplus-highlight",
3
- "version": "3.0.1",
3
+ "version": "3.0.3",
4
4
  "description": "A plugin for the MediaWiki front-end add-on \"Wikiplus\"",
5
5
  "keywords": [
6
6
  "mediawiki",