@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.
Files changed (175) hide show
  1. package/config/global.js +79 -0
  2. package/config/global.less +16 -0
  3. package/index.js +21 -8
  4. package/package.json +64 -63
  5. package/readme.md +25 -99
  6. package/src/Article.vue +96 -57
  7. package/src/ArticleMarkdown.vue +54 -47
  8. package/src/BoxResource.vue +67 -42
  9. package/src/Buff.vue +18 -7
  10. package/src/GameText.vue +32 -45
  11. package/src/Item.vue +143 -235
  12. package/src/ItemSimple.vue +27 -37
  13. package/src/Markdown.vue +362 -210
  14. package/src/Npc.vue +51 -30
  15. package/src/Resource.vue +296 -252
  16. package/src/Skill.vue +36 -26
  17. package/src/Tinymce.vue +162 -126
  18. package/src/Upload.vue +238 -155
  19. package/src/UploadAlbum.vue +189 -118
  20. package/{assets → src/assets}/css/article.less +1 -0
  21. package/src/assets/css/markdown.less +4 -0
  22. package/{assets → src/assets}/css/module/author.less +4 -3
  23. package/{assets → src/assets}/css/module/directory.less +23 -32
  24. package/{assets → src/assets}/css/module/talent.less +2 -2
  25. package/{assets → src/assets}/css/resource.less +56 -22
  26. package/src/assets/css/tinymce/_.less +28 -0
  27. package/src/assets/css/tinymce/a.less +21 -0
  28. package/{assets → src/assets}/css/tinymce/code.less +1 -1
  29. package/{assets/css → src/assets/css/tinymce}/combo.less +123 -18
  30. package/{assets → src/assets}/css/tinymce/fold.less +3 -6
  31. package/src/assets/css/tinymce/h.less +90 -0
  32. package/{assets → src/assets}/css/tinymce/latex.less +14 -14
  33. package/{assets → src/assets}/css/tinymce/macro.less +3 -3
  34. package/{assets → src/assets}/css/tinymce/pz.less +2 -2
  35. package/{assets → src/assets}/css/tinymce/table.less +5 -10
  36. package/{assets → src/assets}/css/tinymce.less +8 -4
  37. package/src/assets/css/upload.less +195 -0
  38. package/src/assets/css/upload_album.less +164 -0
  39. package/src/assets/css/var.less +2 -0
  40. package/src/assets/img/other/qr-code.svg +1 -0
  41. package/{assets → src/assets}/js/audio.js +2 -2
  42. package/{assets → src/assets}/js/directory.js +51 -23
  43. package/src/assets/js/hljs_languages.js +177 -0
  44. package/src/assets/js/katex.js +211 -0
  45. package/src/assets/js/renderImgPreview.js +49 -0
  46. package/{assets → src/assets}/js/xss.js +48 -5
  47. package/src/components/Author.vue +32 -13
  48. package/src/components/Avatar.vue +22 -3
  49. package/src/components/Combo.vue +118 -72
  50. package/src/components/PostAuthor.vue +13 -11
  51. package/src/components/QRcode.vue +136 -0
  52. package/src/components/SkillMartial.vue +13 -12
  53. package/src/pages/article.js +14 -0
  54. package/src/pages/index.js +5 -0
  55. package/src/pages/markdown.js +14 -0
  56. package/src/pages/tinymce.js +49 -0
  57. package/src/pages/upload.js +14 -0
  58. package/{service → src/service}/author.js +2 -2
  59. package/{service → src/service}/cms.js +5 -3
  60. package/{service → src/service}/database.js +4 -2
  61. package/{service → src/service}/item.js +1 -1
  62. package/{service → src/service}/node.js +1 -1
  63. package/{service → src/service}/resource.js +1 -1
  64. package/src/views/article.vue +72 -0
  65. package/src/views/index.vue +11 -0
  66. package/src/views/markdown.vue +58 -0
  67. package/src/views/tinymce.vue +58 -0
  68. package/src/views/upload.vue +111 -0
  69. package/.env +0 -2
  70. package/.vscode/settings.json +0 -5
  71. package/assets/css/katex-fix.css +0 -20
  72. package/assets/css/tinymce/_.less +0 -30
  73. package/assets/css/tinymce/a.less +0 -30
  74. package/assets/css/tinymce/combo.less +0 -111
  75. package/assets/css/tinymce/h.less +0 -58
  76. package/assets/css/upload.less +0 -105
  77. package/assets/js/katex.js +0 -191
  78. package/assets/js/renderImgPreview.js +0 -25
  79. package/babel.config.js +0 -3
  80. package/docs/markdown.md +0 -16
  81. package/jsconfig.json +0 -9
  82. package/public/article.html +0 -15
  83. package/public/css/article.css +0 -2481
  84. package/public/css/article.less +0 -3
  85. package/public/favicon.ico +0 -0
  86. package/public/tinymce.html +0 -33
  87. package/src/Equip.vue +0 -301
  88. package/src/components/LetterDemo.vue +0 -93
  89. package/src/components/medal.vue +0 -43
  90. package/test-audio.html +0 -121
  91. package/vue.config.js +0 -147
  92. /package/{assets → src/assets}/css/markdown/_.less +0 -0
  93. /package/{assets → src/assets}/css/markdown/macro.less +0 -0
  94. /package/{assets/css/article_markdown.less → src/assets/css/markdown/markdown-article.less} +0 -0
  95. /package/{assets/css/markdown.less → src/assets/css/markdown/markdown-editor.less} +0 -0
  96. /package/{assets → src/assets}/css/markdown/talent.less +0 -0
  97. /package/{assets → src/assets}/css/markdown/video.less +0 -0
  98. /package/{assets → src/assets}/css/module/buff.less +0 -0
  99. /package/{assets → src/assets}/css/module/icon.less +0 -0
  100. /package/{assets → src/assets}/css/module/item.less +0 -0
  101. /package/{assets → src/assets}/css/module/item_simple.less +0 -0
  102. /package/{assets → src/assets}/css/module/jx3_element.less +0 -0
  103. /package/{assets → src/assets}/css/module/macro.less +0 -0
  104. /package/{assets → src/assets}/css/module/npc.less +0 -0
  105. /package/{assets → src/assets}/css/module/resource.less +0 -0
  106. /package/{assets → src/assets}/css/module/skill.less +0 -0
  107. /package/{assets → src/assets}/css/tinymce/hr.less +0 -0
  108. /package/{assets → src/assets}/css/tinymce/img.less +0 -0
  109. /package/{assets → src/assets}/css/tinymce/imgpreview.less +0 -0
  110. /package/{assets → src/assets}/css/tinymce/list.less +0 -0
  111. /package/{assets → src/assets}/css/tinymce/nextpage.less +0 -0
  112. /package/{assets → src/assets}/css/tinymce/p.less +0 -0
  113. /package/{assets → src/assets}/css/tinymce/plugin.less +0 -0
  114. /package/{assets → src/assets}/css/tinymce/qixue.less +0 -0
  115. /package/{assets → src/assets}/css/tinymce/quote.less +0 -0
  116. /package/{assets → src/assets}/css/tinymce/video.less +0 -0
  117. /package/{assets → src/assets}/css/tinymce/voice.less +0 -0
  118. /package/{assets → src/assets}/data/detach_type.json +0 -0
  119. /package/{assets → src/assets}/data/game_font.json +0 -0
  120. /package/{assets → src/assets}/data/markdown_whitelist.json +0 -0
  121. /package/{assets → src/assets}/data/weapon_type.json +0 -0
  122. /package/{assets → src/assets}/img/buff.svg +0 -0
  123. /package/{assets → src/assets}/img/equip_bg.png +0 -0
  124. /package/{assets → src/assets}/img/file.svg +0 -0
  125. /package/{assets → src/assets}/img/icons.svg +0 -0
  126. /package/{assets → src/assets}/img/item/pve.png +0 -0
  127. /package/{assets → src/assets}/img/item/pvp.png +0 -0
  128. /package/{assets → src/assets}/img/item/pvx.png +0 -0
  129. /package/{assets → src/assets}/img/item/std.png +0 -0
  130. /package/{assets → src/assets}/img/item/wujie.png +0 -0
  131. /package/{assets → src/assets}/img/item.svg +0 -0
  132. /package/{assets → src/assets}/img/jx3.svg +0 -0
  133. /package/{assets → src/assets}/img/jx3box.svg +0 -0
  134. /package/{assets → src/assets}/img/npc/attack.svg +0 -0
  135. /package/{assets → src/assets}/img/npc/buff.svg +0 -0
  136. /package/{assets → src/assets}/img/npc/energy.svg +0 -0
  137. /package/{assets → src/assets}/img/npc/miss.svg +0 -0
  138. /package/{assets → src/assets}/img/npc/npc.svg +0 -0
  139. /package/{assets → src/assets}/img/npc/radar.svg +0 -0
  140. /package/{assets → src/assets}/img/npc/shield.svg +0 -0
  141. /package/{assets → src/assets}/img/npc/sight.svg +0 -0
  142. /package/{assets → src/assets}/img/npc/skull.svg +0 -0
  143. /package/{assets → src/assets}/img/npc/target.svg +0 -0
  144. /package/{assets → src/assets}/img/skill.svg +0 -0
  145. /package/{assets → src/assets}/img/skillset.png +0 -0
  146. /package/{assets → src/assets}/js/a.js +0 -0
  147. /package/{assets → src/assets}/js/code.js +0 -0
  148. /package/{assets → src/assets}/js/combo.js +0 -0
  149. /package/{assets → src/assets}/js/drag.js +0 -0
  150. /package/{assets → src/assets}/js/filter2.js +0 -0
  151. /package/{assets → src/assets}/js/fold.js +0 -0
  152. /package/{assets → src/assets}/js/gallery.js +0 -0
  153. /package/{assets → src/assets}/js/iframe.js +0 -0
  154. /package/{assets → src/assets}/js/img.js +0 -0
  155. /package/{assets → src/assets}/js/item/attribute_percent.js +0 -0
  156. /package/{assets → src/assets}/js/item/bind.js +0 -0
  157. /package/{assets → src/assets}/js/item/border.js +0 -0
  158. /package/{assets → src/assets}/js/item/border_quest.js +0 -0
  159. /package/{assets → src/assets}/js/item/color.js +0 -0
  160. /package/{assets → src/assets}/js/item/hljs_languages.js +0 -0
  161. /package/{assets → src/assets}/js/item/icon_url.js +0 -0
  162. /package/{assets → src/assets}/js/item/second_format.js +0 -0
  163. /package/{assets → src/assets}/js/jx3_element.js +0 -0
  164. /package/{assets → src/assets}/js/macro.js +0 -0
  165. /package/{assets → src/assets}/js/nextpage.js +0 -0
  166. /package/{assets → src/assets}/js/pswp.js +0 -0
  167. /package/{assets → src/assets}/js/pswp_template.js +0 -0
  168. /package/{assets → src/assets}/js/pz_iframe.js +0 -0
  169. /package/{assets → src/assets}/js/qixue.js +0 -0
  170. /package/{assets → src/assets}/js/script.js +0 -0
  171. /package/{assets → src/assets}/js/talent2.js +0 -0
  172. /package/{assets → src/assets}/js/tex-mml-chtml.js +0 -0
  173. /package/{service → src/service}/enum/CollectionPublic.js +0 -0
  174. /package/{service → src/service}/enum/EquipPosition.js +0 -0
  175. /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 | showDetachType }}</span
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 "../service/database.js";
23
+ import { getBuff } from "./service/database.js";
24
24
  import { iconLink } from "@jx3box/jx3box-common/js/utils";
25
- import detach_types from "../assets/data/detach_type.json";
25
+ import detach_types from "./assets/data/detach_type.json";
26
26
  export default {
27
27
  name: "Buff",
28
- props: ["client", "id", "level"],
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 "../assets/css/module/buff.less";
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
- extractTextContent,
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
- const fonts = require("../assets/data/game_font.json");
57
- for (let color in fonts) {
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
- /this\.dwTabType=(\d+)/i
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 = Text.match(/<Text>(.*?)<\/text>/gims);
109
- if (!matches) return Text;
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["Interval"]) interval = buff["Interval"];
142
- else interval = this.getResource("buff", id, 0)["Interval"];
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["Desc"];
161
- if (!desc) desc = this.getResource("buff", id, 0)["Desc"];
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.renderBuffResource();
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
- if (!val) return;
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
  },