@jx3box/jx3box-editor 2.2.47 → 3.0.0
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/config/global.js +79 -0
- package/config/global.less +16 -0
- package/index.js +21 -8
- package/package.json +64 -63
- package/readme.md +25 -99
- package/src/Article.vue +96 -57
- package/src/ArticleMarkdown.vue +54 -47
- package/src/BoxResource.vue +67 -42
- package/src/Buff.vue +18 -7
- package/src/GameText.vue +32 -45
- package/src/Item.vue +143 -235
- package/src/ItemSimple.vue +27 -37
- package/src/Markdown.vue +362 -210
- package/src/Npc.vue +51 -30
- package/src/Resource.vue +296 -252
- package/src/Skill.vue +36 -26
- package/src/Tinymce.vue +162 -126
- package/src/Upload.vue +238 -155
- package/src/UploadAlbum.vue +189 -118
- package/{assets → src/assets}/css/article.less +1 -0
- package/src/assets/css/markdown.less +4 -0
- package/{assets → src/assets}/css/module/author.less +4 -3
- package/{assets → src/assets}/css/module/directory.less +23 -32
- package/{assets → src/assets}/css/module/talent.less +2 -2
- package/{assets → src/assets}/css/resource.less +56 -22
- package/src/assets/css/tinymce/_.less +28 -0
- package/src/assets/css/tinymce/a.less +21 -0
- package/{assets → src/assets}/css/tinymce/code.less +1 -1
- package/{assets/css → src/assets/css/tinymce}/combo.less +123 -18
- package/{assets → src/assets}/css/tinymce/fold.less +3 -6
- package/src/assets/css/tinymce/h.less +90 -0
- package/{assets → src/assets}/css/tinymce/latex.less +14 -14
- package/{assets → src/assets}/css/tinymce/macro.less +3 -3
- package/{assets → src/assets}/css/tinymce/pz.less +2 -2
- package/{assets → src/assets}/css/tinymce/table.less +5 -10
- package/{assets → src/assets}/css/tinymce.less +8 -4
- package/src/assets/css/upload.less +195 -0
- package/src/assets/css/upload_album.less +164 -0
- package/src/assets/css/var.less +2 -0
- package/src/assets/img/other/qr-code.svg +1 -0
- package/{assets → src/assets}/js/audio.js +2 -2
- package/{assets → src/assets}/js/directory.js +51 -23
- package/src/assets/js/hljs_languages.js +177 -0
- package/src/assets/js/katex.js +211 -0
- package/src/assets/js/renderImgPreview.js +49 -0
- package/{assets → src/assets}/js/xss.js +48 -5
- package/src/components/Author.vue +32 -13
- package/src/components/Avatar.vue +22 -3
- package/src/components/Combo.vue +118 -72
- package/src/components/PostAuthor.vue +13 -11
- package/src/components/QRcode.vue +136 -0
- package/src/components/SkillMartial.vue +13 -12
- package/src/pages/article.js +14 -0
- package/src/pages/index.js +5 -0
- package/src/pages/markdown.js +14 -0
- package/src/pages/tinymce.js +49 -0
- package/src/pages/upload.js +14 -0
- package/{service → src/service}/author.js +2 -2
- package/{service → src/service}/cms.js +5 -3
- package/{service → src/service}/database.js +4 -2
- package/{service → src/service}/item.js +1 -1
- package/{service → src/service}/node.js +1 -1
- package/{service → src/service}/resource.js +1 -1
- package/src/views/article.vue +72 -0
- package/src/views/index.vue +11 -0
- package/src/views/markdown.vue +58 -0
- package/src/views/tinymce.vue +58 -0
- package/src/views/upload.vue +111 -0
- package/.env +0 -2
- package/.vscode/settings.json +0 -5
- package/assets/css/katex-fix.css +0 -20
- package/assets/css/tinymce/_.less +0 -30
- package/assets/css/tinymce/a.less +0 -30
- package/assets/css/tinymce/combo.less +0 -111
- package/assets/css/tinymce/h.less +0 -58
- package/assets/css/upload.less +0 -105
- package/assets/js/katex.js +0 -191
- package/assets/js/renderImgPreview.js +0 -25
- package/babel.config.js +0 -3
- package/docs/markdown.md +0 -16
- package/jsconfig.json +0 -9
- package/public/article.html +0 -15
- package/public/css/article.css +0 -2481
- package/public/css/article.less +0 -3
- package/public/favicon.ico +0 -0
- package/public/tinymce.html +0 -33
- package/src/Equip.vue +0 -301
- package/src/components/LetterDemo.vue +0 -93
- package/src/components/medal.vue +0 -43
- package/test-audio.html +0 -121
- package/vue.config.js +0 -147
- /package/{assets → src/assets}/css/markdown/_.less +0 -0
- /package/{assets → src/assets}/css/markdown/macro.less +0 -0
- /package/{assets/css/article_markdown.less → src/assets/css/markdown/markdown-article.less} +0 -0
- /package/{assets/css/markdown.less → src/assets/css/markdown/markdown-editor.less} +0 -0
- /package/{assets → src/assets}/css/markdown/talent.less +0 -0
- /package/{assets → src/assets}/css/markdown/video.less +0 -0
- /package/{assets → src/assets}/css/module/buff.less +0 -0
- /package/{assets → src/assets}/css/module/icon.less +0 -0
- /package/{assets → src/assets}/css/module/item.less +0 -0
- /package/{assets → src/assets}/css/module/item_simple.less +0 -0
- /package/{assets → src/assets}/css/module/jx3_element.less +0 -0
- /package/{assets → src/assets}/css/module/macro.less +0 -0
- /package/{assets → src/assets}/css/module/npc.less +0 -0
- /package/{assets → src/assets}/css/module/resource.less +0 -0
- /package/{assets → src/assets}/css/module/skill.less +0 -0
- /package/{assets → src/assets}/css/tinymce/hr.less +0 -0
- /package/{assets → src/assets}/css/tinymce/img.less +0 -0
- /package/{assets → src/assets}/css/tinymce/imgpreview.less +0 -0
- /package/{assets → src/assets}/css/tinymce/list.less +0 -0
- /package/{assets → src/assets}/css/tinymce/nextpage.less +0 -0
- /package/{assets → src/assets}/css/tinymce/p.less +0 -0
- /package/{assets → src/assets}/css/tinymce/plugin.less +0 -0
- /package/{assets → src/assets}/css/tinymce/qixue.less +0 -0
- /package/{assets → src/assets}/css/tinymce/quote.less +0 -0
- /package/{assets → src/assets}/css/tinymce/video.less +0 -0
- /package/{assets → src/assets}/css/tinymce/voice.less +0 -0
- /package/{assets → src/assets}/data/detach_type.json +0 -0
- /package/{assets → src/assets}/data/game_font.json +0 -0
- /package/{assets → src/assets}/data/markdown_whitelist.json +0 -0
- /package/{assets → src/assets}/data/weapon_type.json +0 -0
- /package/{assets → src/assets}/img/buff.svg +0 -0
- /package/{assets → src/assets}/img/equip_bg.png +0 -0
- /package/{assets → src/assets}/img/file.svg +0 -0
- /package/{assets → src/assets}/img/icons.svg +0 -0
- /package/{assets → src/assets}/img/item/pve.png +0 -0
- /package/{assets → src/assets}/img/item/pvp.png +0 -0
- /package/{assets → src/assets}/img/item/pvx.png +0 -0
- /package/{assets → src/assets}/img/item/std.png +0 -0
- /package/{assets → src/assets}/img/item/wujie.png +0 -0
- /package/{assets → src/assets}/img/item.svg +0 -0
- /package/{assets → src/assets}/img/jx3.svg +0 -0
- /package/{assets → src/assets}/img/jx3box.svg +0 -0
- /package/{assets → src/assets}/img/npc/attack.svg +0 -0
- /package/{assets → src/assets}/img/npc/buff.svg +0 -0
- /package/{assets → src/assets}/img/npc/energy.svg +0 -0
- /package/{assets → src/assets}/img/npc/miss.svg +0 -0
- /package/{assets → src/assets}/img/npc/npc.svg +0 -0
- /package/{assets → src/assets}/img/npc/radar.svg +0 -0
- /package/{assets → src/assets}/img/npc/shield.svg +0 -0
- /package/{assets → src/assets}/img/npc/sight.svg +0 -0
- /package/{assets → src/assets}/img/npc/skull.svg +0 -0
- /package/{assets → src/assets}/img/npc/target.svg +0 -0
- /package/{assets → src/assets}/img/skill.svg +0 -0
- /package/{assets → src/assets}/img/skillset.png +0 -0
- /package/{assets → src/assets}/js/a.js +0 -0
- /package/{assets → src/assets}/js/code.js +0 -0
- /package/{assets → src/assets}/js/combo.js +0 -0
- /package/{assets → src/assets}/js/drag.js +0 -0
- /package/{assets → src/assets}/js/filter2.js +0 -0
- /package/{assets → src/assets}/js/fold.js +0 -0
- /package/{assets → src/assets}/js/gallery.js +0 -0
- /package/{assets → src/assets}/js/iframe.js +0 -0
- /package/{assets → src/assets}/js/img.js +0 -0
- /package/{assets → src/assets}/js/item/attribute_percent.js +0 -0
- /package/{assets → src/assets}/js/item/bind.js +0 -0
- /package/{assets → src/assets}/js/item/border.js +0 -0
- /package/{assets → src/assets}/js/item/border_quest.js +0 -0
- /package/{assets → src/assets}/js/item/color.js +0 -0
- /package/{assets → src/assets}/js/item/hljs_languages.js +0 -0
- /package/{assets → src/assets}/js/item/icon_url.js +0 -0
- /package/{assets → src/assets}/js/item/second_format.js +0 -0
- /package/{assets → src/assets}/js/jx3_element.js +0 -0
- /package/{assets → src/assets}/js/macro.js +0 -0
- /package/{assets → src/assets}/js/nextpage.js +0 -0
- /package/{assets → src/assets}/js/pswp.js +0 -0
- /package/{assets → src/assets}/js/pswp_template.js +0 -0
- /package/{assets → src/assets}/js/pz_iframe.js +0 -0
- /package/{assets → src/assets}/js/qixue.js +0 -0
- /package/{assets → src/assets}/js/script.js +0 -0
- /package/{assets → src/assets}/js/talent2.js +0 -0
- /package/{assets → src/assets}/js/tex-mml-chtml.js +0 -0
- /package/{service → src/service}/enum/CollectionPublic.js +0 -0
- /package/{service → src/service}/enum/EquipPosition.js +0 -0
- /package/{service → src/service}/enum/EquipType.js +0 -0
package/src/Buff.vue
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<span class="w-buff-name">{{ data.Name }}</span>
|
|
10
10
|
<span class="w-buff-desc">{{ data.Desc }}</span>
|
|
11
11
|
<span class="w-buff-type" v-if="data.DetachType"
|
|
12
|
-
>※ {{ data.DetachType
|
|
12
|
+
>※ {{ showDetachType(data.DetachType) }}</span
|
|
13
13
|
>
|
|
14
14
|
<span class="w-buff-meta">ID : {{ data.BuffID }}</span>
|
|
15
15
|
<span class="w-buff-meta">Level : {{ data.Level }}</span>
|
|
@@ -20,12 +20,25 @@
|
|
|
20
20
|
</template>
|
|
21
21
|
|
|
22
22
|
<script>
|
|
23
|
-
import { getBuff } from "
|
|
23
|
+
import { getBuff } from "./service/database.js";
|
|
24
24
|
import { iconLink } from "@jx3box/jx3box-common/js/utils";
|
|
25
|
-
import detach_types from "
|
|
25
|
+
import detach_types from "./assets/data/detach_type.json";
|
|
26
26
|
export default {
|
|
27
27
|
name: "Buff",
|
|
28
|
-
props:
|
|
28
|
+
props: {
|
|
29
|
+
client: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: "std",
|
|
32
|
+
},
|
|
33
|
+
id: {
|
|
34
|
+
type: [String, Number],
|
|
35
|
+
default: "",
|
|
36
|
+
},
|
|
37
|
+
level: {
|
|
38
|
+
type: [String, Number],
|
|
39
|
+
default: "",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
29
42
|
data: () => ({
|
|
30
43
|
data: null,
|
|
31
44
|
}),
|
|
@@ -71,8 +84,6 @@ export default {
|
|
|
71
84
|
iconLink: function (id) {
|
|
72
85
|
return iconLink(id, this.client);
|
|
73
86
|
},
|
|
74
|
-
},
|
|
75
|
-
filters: {
|
|
76
87
|
showDetachType: function (val) {
|
|
77
88
|
if (val && detach_types[val]) {
|
|
78
89
|
return detach_types[val];
|
|
@@ -85,5 +96,5 @@ export default {
|
|
|
85
96
|
</script>
|
|
86
97
|
|
|
87
98
|
<style lang="less">
|
|
88
|
-
@import "
|
|
99
|
+
@import "./assets/css/module/buff.less";
|
|
89
100
|
</style>
|
package/src/GameText.vue
CHANGED
|
@@ -10,13 +10,10 @@
|
|
|
10
10
|
</template>
|
|
11
11
|
|
|
12
12
|
<script>
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
getLink,
|
|
16
|
-
iconLink,
|
|
17
|
-
} from "@jx3box/jx3box-common/js/utils";
|
|
18
|
-
import { getResource as getResourceFromNode } from "../service/resource";
|
|
13
|
+
import { extractTextContent, getLink, iconLink } from "@jx3box/jx3box-common/js/utils";
|
|
14
|
+
import { getResource as getResourceFromNode } from "./service/resource";
|
|
19
15
|
import { escape } from "lodash";
|
|
16
|
+
import gameFonts from "./assets/data/game_font.json";
|
|
20
17
|
|
|
21
18
|
export default {
|
|
22
19
|
name: "GameText",
|
|
@@ -37,6 +34,7 @@ export default {
|
|
|
37
34
|
data: function () {
|
|
38
35
|
return {
|
|
39
36
|
html: "",
|
|
37
|
+
renderVersion: 0,
|
|
40
38
|
};
|
|
41
39
|
},
|
|
42
40
|
methods: {
|
|
@@ -50,23 +48,19 @@ export default {
|
|
|
50
48
|
let style = ``;
|
|
51
49
|
let link = null;
|
|
52
50
|
content = content.replace(/\\n/g, "<br />").replace(/\\/g, "");
|
|
53
|
-
if ([item.r, item.g, item.b].every(v => v != undefined && v > 0)) {
|
|
51
|
+
if ([item.r, item.g, item.b].every((v) => v != undefined && v > 0)) {
|
|
54
52
|
style = `color: rgb(${item.r}, ${item.g}, ${item.b});`;
|
|
55
53
|
} else if (item.font != undefined && item.font != 100) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (fonts[color].includes(item.font)) {
|
|
54
|
+
for (let color in gameFonts) {
|
|
55
|
+
if (gameFonts[color].includes(item.font)) {
|
|
59
56
|
style = `color: ${color};`;
|
|
60
57
|
break;
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
60
|
}
|
|
64
61
|
if (item.name == "iteminfolink" && item.script) {
|
|
65
|
-
let item_type = item.script?.match(
|
|
66
|
-
|
|
67
|
-
)?.[1];
|
|
68
|
-
let item_index =
|
|
69
|
-
item.script?.match(/this\.dwIndex=(\d+)/i)?.[1];
|
|
62
|
+
let item_type = item.script?.match(/this\.dwTabType=(\d+)/i)?.[1];
|
|
63
|
+
let item_index = item.script?.match(/this\.dwIndex=(\d+)/i)?.[1];
|
|
70
64
|
if (item_type && item_index) {
|
|
71
65
|
let item_id = `${item_type}_${item_index}`;
|
|
72
66
|
link = getLink("item", item_id);
|
|
@@ -105,8 +99,8 @@ export default {
|
|
|
105
99
|
renderTextHtml: function (Text) {
|
|
106
100
|
let result = Text;
|
|
107
101
|
result = this.renderImageHtml(result);
|
|
108
|
-
const matches =
|
|
109
|
-
if (!matches) return
|
|
102
|
+
const matches = result.match(/<Text>(.*?)<\/text>/gims);
|
|
103
|
+
if (!matches) return result;
|
|
110
104
|
for (let match of matches) {
|
|
111
105
|
let text = extractTextContent(match);
|
|
112
106
|
let html = this.renderItemHtml(text[0]);
|
|
@@ -117,29 +111,28 @@ export default {
|
|
|
117
111
|
/**
|
|
118
112
|
* 获取形如<BUFF 110 1 desc>, <ENCHANT 100>的资源字段并转换
|
|
119
113
|
*/
|
|
120
|
-
renderBuffResource: async function () {
|
|
114
|
+
renderBuffResource: async function (version) {
|
|
121
115
|
const matches = this.html?.match(/<BUFF (\d+) (\d+) (.*?)>/gim);
|
|
122
116
|
if (!matches) return;
|
|
123
117
|
let resourceKeys = [];
|
|
124
118
|
let replaceMap = {};
|
|
125
119
|
//先统计需要的资源,减少请求数量
|
|
126
120
|
for (let match of matches) {
|
|
127
|
-
let [token, id, level, type] = match.match(
|
|
128
|
-
/<BUFF (\d+) (\d+) (.*?)>/i
|
|
129
|
-
);
|
|
121
|
+
let [token, id, level, type] = match.match(/<BUFF (\d+) (\d+) (.*?)>/i);
|
|
130
122
|
resourceKeys.push(`${id}_${level}`);
|
|
131
123
|
if (level != 0) resourceKeys.push(`${id}_0`);
|
|
132
124
|
replaceMap[token] = [id, level, type];
|
|
133
125
|
}
|
|
134
126
|
await this.getAllResources("buff", resourceKeys, this.client);
|
|
127
|
+
if (version !== this.renderVersion) return;
|
|
135
128
|
for (let replace in replaceMap) {
|
|
136
129
|
let [id, level, type] = replaceMap[replace];
|
|
137
130
|
// 持续时间
|
|
138
131
|
if (type === "time") {
|
|
139
132
|
let interval;
|
|
140
133
|
let buff = this.getResource("buff", id, level);
|
|
141
|
-
if (buff
|
|
142
|
-
else interval = this.getResource("buff", id, 0)
|
|
134
|
+
if (buff?.Interval) interval = buff.Interval;
|
|
135
|
+
else interval = this.getResource("buff", id, 0)?.Interval;
|
|
143
136
|
if (!interval) {
|
|
144
137
|
console.log(replace, escape(replace));
|
|
145
138
|
this.html = this.html.replace(replace, escape(replace));
|
|
@@ -157,8 +150,8 @@ export default {
|
|
|
157
150
|
// buff描述
|
|
158
151
|
if (type === "desc") {
|
|
159
152
|
let buff = this.getResource("buff", id, level);
|
|
160
|
-
let desc = buff
|
|
161
|
-
if (!desc) desc = this.getResource("buff", id, 0)
|
|
153
|
+
let desc = buff?.Desc;
|
|
154
|
+
if (!desc) desc = this.getResource("buff", id, 0)?.Desc;
|
|
162
155
|
if (!desc) {
|
|
163
156
|
this.html = this.html.replace(replace, escape(replace));
|
|
164
157
|
continue;
|
|
@@ -170,10 +163,7 @@ export default {
|
|
|
170
163
|
let [_, _attr] = _m.match(/<BUFF ([0-9a-zA-Z]+)>/i);
|
|
171
164
|
for (let i = 1; i < 15; i++) {
|
|
172
165
|
if (buff[`BeginAttrib${i}`] == _attr) {
|
|
173
|
-
desc = desc.replace(
|
|
174
|
-
_m,
|
|
175
|
-
buff[`BeginValue${i}A`]
|
|
176
|
-
);
|
|
166
|
+
desc = desc.replace(_m, buff[`BeginValue${i}A`]);
|
|
177
167
|
}
|
|
178
168
|
}
|
|
179
169
|
}
|
|
@@ -182,7 +172,7 @@ export default {
|
|
|
182
172
|
}
|
|
183
173
|
}
|
|
184
174
|
},
|
|
185
|
-
renderEnchantResource: async function () {
|
|
175
|
+
renderEnchantResource: async function (version) {
|
|
186
176
|
const matches = this.html.match(/<ENCHANT (\d+)>/gim);
|
|
187
177
|
if (!matches) return;
|
|
188
178
|
let resourceKeys = [];
|
|
@@ -193,6 +183,7 @@ export default {
|
|
|
193
183
|
replaceMap[match] = enchant_id;
|
|
194
184
|
}
|
|
195
185
|
await this.getAllResources("enchant", resourceKeys, this.client);
|
|
186
|
+
if (version !== this.renderVersion) return;
|
|
196
187
|
for (let replace in replaceMap) {
|
|
197
188
|
try {
|
|
198
189
|
let enchant_id = replaceMap[replace];
|
|
@@ -207,9 +198,9 @@ export default {
|
|
|
207
198
|
}
|
|
208
199
|
}
|
|
209
200
|
},
|
|
210
|
-
renderResource: function () {
|
|
211
|
-
this.
|
|
212
|
-
this.renderEnchantResource();
|
|
201
|
+
renderResource: async function () {
|
|
202
|
+
const version = this.renderVersion;
|
|
203
|
+
await Promise.all([this.renderBuffResource(version), this.renderEnchantResource(version)]);
|
|
213
204
|
},
|
|
214
205
|
getAllResources: async function (type, ids) {
|
|
215
206
|
let resources = await getResourceFromNode(type, ids, this.client);
|
|
@@ -218,18 +209,12 @@ export default {
|
|
|
218
209
|
if (type == "buff") {
|
|
219
210
|
for (let item of data) {
|
|
220
211
|
let buff_token = `${item.BuffID}_${item.Level}`;
|
|
221
|
-
sessionStorage.setItem(
|
|
222
|
-
`buff-${this.client}-${buff_token}`,
|
|
223
|
-
JSON.stringify(item)
|
|
224
|
-
);
|
|
212
|
+
sessionStorage.setItem(`buff-${this.client}-${buff_token}`, JSON.stringify(item));
|
|
225
213
|
}
|
|
226
214
|
} else if (type == "enchant") {
|
|
227
215
|
for (let item of data) {
|
|
228
216
|
let enchant_token = `${item.ID}`;
|
|
229
|
-
sessionStorage.setItem(
|
|
230
|
-
`enchant-${this.client}-${enchant_token}`,
|
|
231
|
-
JSON.stringify(item)
|
|
232
|
-
);
|
|
217
|
+
sessionStorage.setItem(`enchant-${this.client}-${enchant_token}`, JSON.stringify(item));
|
|
233
218
|
}
|
|
234
219
|
}
|
|
235
220
|
},
|
|
@@ -238,9 +223,7 @@ export default {
|
|
|
238
223
|
if (type == "buff") {
|
|
239
224
|
token = `${id}_${level}`;
|
|
240
225
|
}
|
|
241
|
-
let resource = sessionStorage.getItem(
|
|
242
|
-
`${type}-${this.client}-${token}`
|
|
243
|
-
);
|
|
226
|
+
let resource = sessionStorage.getItem(`${type}-${this.client}-${token}`);
|
|
244
227
|
if (resource) return JSON.parse(resource);
|
|
245
228
|
return null;
|
|
246
229
|
},
|
|
@@ -249,7 +232,11 @@ export default {
|
|
|
249
232
|
text: {
|
|
250
233
|
immediate: true,
|
|
251
234
|
handler: function (val) {
|
|
252
|
-
|
|
235
|
+
this.renderVersion += 1;
|
|
236
|
+
if (!val) {
|
|
237
|
+
this.html = "";
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
253
240
|
this.html = this.renderTextHtml(val);
|
|
254
241
|
this.renderResource();
|
|
255
242
|
},
|