@shijiu/jsview 1.9.730 → 1.9.747

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 (116) hide show
  1. package/dom/jsv-browser-debug-dom.js +1 -1
  2. package/dom/jsv-dom.js +1 -1
  3. package/dom/jsv-engine-js-browser.js +1 -1
  4. package/dom/jsv-forge-define.js +1 -1
  5. package/package.json +14 -17
  6. package/patches/node_modules/vite/dist/node/chunks/dep-0fc8e132.js +8 -1
  7. package/patches/node_modules/vite/dist/node/jsview.vite.config.js +12 -6
  8. package/dom/jsview-dom/README.md +0 -5
  9. package/dom/jsview-dom/package-lock.json-perfect +0 -3898
  10. package/dom/jsview-dom/package.json +0 -23
  11. package/dom/jsview-dom/rollup/browser-debug-dom.rollup.config.js +0 -15
  12. package/dom/jsview-dom/rollup/dom.rollup.config.js +0 -14
  13. package/dom/jsview-dom/rollup/engine-js-browser.rollup.config.js +0 -14
  14. package/dom/jsview-dom/rollup/forge-define.rollup.config.js +0 -14
  15. package/dom/jsview-dom/scripts/release_dist.sh +0 -36
  16. package/dom/jsview-dom/src/dom-browser-hook/HookDocument.js +0 -118
  17. package/dom/jsview-dom/src/dom-browser-hook/OriginDocument.js +0 -19
  18. package/dom/jsview-dom/src/dom-browser-hook/StyleFormatCheck.js +0 -559
  19. package/dom/jsview-dom/src/dom-browser-hook/index.js +0 -6
  20. package/dom/jsview-dom/src/dom-wrapper/ForgeExtension.js +0 -226
  21. package/dom/jsview-dom/src/dom-wrapper/JsViewForgeApp.js +0 -85
  22. package/dom/jsview-dom/src/dom-wrapper/JsViewProxy.js +0 -51
  23. package/dom/jsview-dom/src/dom-wrapper/event/AnimationEvent.js +0 -7
  24. package/dom/jsview-dom/src/dom-wrapper/event/Event.js +0 -12
  25. package/dom/jsview-dom/src/dom-wrapper/event/FocusEvent.js +0 -9
  26. package/dom/jsview-dom/src/dom-wrapper/event/KeyboardEvent.js +0 -43
  27. package/dom/jsview-dom/src/dom-wrapper/event/LoadEvent.js +0 -8
  28. package/dom/jsview-dom/src/dom-wrapper/index.js +0 -16
  29. package/dom/jsview-dom/src/dom-wrapper/node/AnchorElement.js +0 -24
  30. package/dom/jsview-dom/src/dom-wrapper/node/AudioElement.js +0 -60
  31. package/dom/jsview-dom/src/dom-wrapper/node/Comment.js +0 -10
  32. package/dom/jsview-dom/src/dom-wrapper/node/DivElement.js +0 -498
  33. package/dom/jsview-dom/src/dom-wrapper/node/Document.js +0 -274
  34. package/dom/jsview-dom/src/dom-wrapper/node/Element.js +0 -852
  35. package/dom/jsview-dom/src/dom-wrapper/node/FDivElement.js +0 -48
  36. package/dom/jsview-dom/src/dom-wrapper/node/HeadElement.js +0 -47
  37. package/dom/jsview-dom/src/dom-wrapper/node/ImageElement.js +0 -203
  38. package/dom/jsview-dom/src/dom-wrapper/node/JsvAudioTrackElement.js +0 -22
  39. package/dom/jsview-dom/src/dom-wrapper/node/JsvElement.js +0 -40
  40. package/dom/jsview-dom/src/dom-wrapper/node/LinkElement.js +0 -48
  41. package/dom/jsview-dom/src/dom-wrapper/node/MediaElement.js +0 -230
  42. package/dom/jsview-dom/src/dom-wrapper/node/Node.js +0 -178
  43. package/dom/jsview-dom/src/dom-wrapper/node/SVGElement.js +0 -9
  44. package/dom/jsview-dom/src/dom-wrapper/node/ScriptElement.js +0 -45
  45. package/dom/jsview-dom/src/dom-wrapper/node/StyleElement.js +0 -33
  46. package/dom/jsview-dom/src/dom-wrapper/node/StyleElementCache.js +0 -41
  47. package/dom/jsview-dom/src/dom-wrapper/node/Text.js +0 -22
  48. package/dom/jsview-dom/src/dom-wrapper/node/UnknownElement.js +0 -4
  49. package/dom/jsview-dom/src/dom-wrapper/node/VideoElement.js +0 -237
  50. package/dom/jsview-dom/src/dom-wrapper/style/BorderImage.js +0 -25
  51. package/dom/jsview-dom/src/dom-wrapper/style/Inset.js +0 -26
  52. package/dom/jsview-dom/src/dom-wrapper/style/JsvStyleVariable.js +0 -65
  53. package/dom/jsview-dom/src/dom-wrapper/style/KeyframeRule.js +0 -11
  54. package/dom/jsview-dom/src/dom-wrapper/style/StyleDeclaration.js +0 -609
  55. package/dom/jsview-dom/src/dom-wrapper/style/StyleSheet.js +0 -51
  56. package/dom/jsview-dom/src/dom-wrapper/style/StyleValue.js +0 -385
  57. package/dom/jsview-dom/src/dom-wrapper/style/TextStylePackMap.js +0 -43
  58. package/dom/jsview-dom/src/dom-wrapper/style/URL.js +0 -144
  59. package/dom/jsview-dom/src/dom-wrapper/utils/EventHandler.js +0 -42
  60. package/dom/jsview-dom/src/dom-wrapper/utils/FDivRoot.js +0 -86
  61. package/dom/jsview-dom/src/dom-wrapper/utils/JsvLazySyncCache.js +0 -64
  62. package/dom/jsview-dom/src/dom-wrapper/utils/Log.js +0 -42
  63. package/dom/jsview-dom/src/dom-wrapper/utils/MutationObserver.js +0 -32
  64. package/dom/jsview-dom/src/dom-wrapper/utils/focusableNode.js +0 -715
  65. package/dom/jsview-dom/src/engine-js/ForgeDefine.js +0 -8
  66. package/dom/jsview-dom/src/engine-js/ForgeExtensionDefine.js +0 -14
  67. package/dom/jsview-dom/src/engine-js/browser/PlatformUtils.js +0 -100
  68. package/dom/jsview-dom/src/engine-js/browser/animation_base.js +0 -313
  69. package/dom/jsview-dom/src/engine-js/browser/animation_keyframe.js +0 -64
  70. package/dom/jsview-dom/src/engine-js/browser/animation_progress.js +0 -287
  71. package/dom/jsview-dom/src/engine-js/browser/animation_proxy.js +0 -906
  72. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/demux.js +0 -143
  73. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/gifDecoder.js +0 -12
  74. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/libwebp-0.6.0.min.js +0 -160
  75. package/dom/jsview-dom/src/engine-js/browser/console_log.js +0 -25
  76. package/dom/jsview-dom/src/engine-js/browser/dynamic_key_frames.js +0 -95
  77. package/dom/jsview-dom/src/engine-js/browser/easing.js +0 -114
  78. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/element_transform.js +0 -122
  79. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/gjk.js +0 -450
  80. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/mat.js +0 -102
  81. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/range_model.js +0 -296
  82. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/test_collide.js +0 -10
  83. package/dom/jsview-dom/src/engine-js/browser/index.js +0 -38
  84. package/dom/jsview-dom/src/engine-js/browser/latex_parse.js +0 -336
  85. package/dom/jsview-dom/src/engine-js/browser/layout_params.js +0 -113
  86. package/dom/jsview-dom/src/engine-js/browser/layout_view.js +0 -3545
  87. package/dom/jsview-dom/src/engine-js/browser/layout_view_debug.js +0 -15
  88. package/dom/jsview-dom/src/engine-js/browser/media.js +0 -379
  89. package/dom/jsview-dom/src/engine-js/browser/page_base.js +0 -941
  90. package/dom/jsview-dom/src/engine-js/browser/particle_view.js +0 -526
  91. package/dom/jsview-dom/src/engine-js/browser/platform_timer.js +0 -61
  92. package/dom/jsview-dom/src/engine-js/browser/react_utils.js +0 -5
  93. package/dom/jsview-dom/src/engine-js/browser/rect_utils.js +0 -91
  94. package/dom/jsview-dom/src/engine-js/browser/render_bridge.js +0 -128
  95. package/dom/jsview-dom/src/engine-js/browser/render_texture_proxy.js +0 -155
  96. package/dom/jsview-dom/src/engine-js/browser/renderer_deprecated.js +0 -75
  97. package/dom/jsview-dom/src/engine-js/browser/sound_pool.js +0 -139
  98. package/dom/jsview-dom/src/engine-js/browser/steps_animation.js +0 -192
  99. package/dom/jsview-dom/src/engine-js/browser/text_style_cache.js +0 -454
  100. package/dom/jsview-dom/src/engine-js/browser/text_utils.js +0 -299
  101. package/dom/jsview-dom/src/engine-js/browser/text_view.js +0 -428
  102. package/dom/jsview-dom/src/engine-js/browser/texture_manager.js +0 -1060
  103. package/dom/jsview-dom/src/engine-js/browser/url.js +0 -69
  104. package/dom/jsview-dom/src/engine-js/browser/velocity.js +0 -40
  105. package/dom/jsview-dom/src/engine-js/browser/view_sensor/autofroze_sensor.js +0 -77
  106. package/dom/jsview-dom/src/engine-js/browser/view_sensor/drag_impact_sensor.js +0 -67
  107. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor.js +0 -98
  108. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_callback.js +0 -21
  109. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_manager.js +0 -24
  110. package/dom/jsview-dom/src/engine-js/browser/view_sensor/index.js +0 -9
  111. package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor.js +0 -268
  112. package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor_manager.js +0 -84
  113. package/dom/jsview-dom/src/engine-js/browser/view_sensor/visible_sensor.js +0 -213
  114. package/dom/jsview-dom/src/engine-js/browser/view_store.js +0 -41
  115. package/dom/jsview-dom/src/engine-js/index.js +0 -2
  116. package/dom/jsview-dom/src/engine-js/native/README.md +0 -1
@@ -1,385 +0,0 @@
1
- /* eslint-disable no-extra-boolean-cast */
2
- import Forge from "../../engine-js/ForgeDefine"
3
-
4
- class StyleValue {
5
- static ConvertInt(value) {
6
- if(!value) {
7
- return value;
8
- }
9
- if(typeof value == "number") {
10
- return Math.floor(value);
11
- }
12
-
13
- if(typeof value == "string") {
14
- return parseInt(value);
15
- }
16
-
17
- return value;
18
- }
19
-
20
- static ConvertFloat(value) {
21
- if(!value) {
22
- return value;
23
- }
24
- if(typeof value !== "string") {
25
- return value;
26
- }
27
-
28
- let ret = parseFloat(value);
29
- return ret;
30
- }
31
-
32
- static ConvertPx(value) {
33
- if(!value) {
34
- return value;
35
- }
36
- if(typeof value !== "string") {
37
- return value;
38
- }
39
- if(value === "0") { // 0可以不写单位
40
- return 0;
41
- }
42
-
43
- if(value.endsWith('px')) {
44
- let ret = parseInt(value);
45
- return ret;
46
- }
47
-
48
- return value;
49
- }
50
-
51
- static ConvertRect(str) {
52
- let arrays = StyleValue.SplitString(str, ' ');
53
-
54
- let rect = {
55
- top : arrays.length > 0 ? parseInt(arrays[0]) : 0,
56
- right : arrays.length > 1 ? parseInt(arrays[1]) : null,
57
- bottom : arrays.length > 2 ? parseInt(arrays[2]) : null,
58
- left : arrays.length > 3 ? parseInt(arrays[3]) : null,
59
- };
60
- rect.right = (!!rect.right || rect.right === 0 ? rect.right : rect.top);
61
- rect.bottom = (!!rect.bottom || rect.bottom === 0 ? rect.bottom : rect.top);
62
- rect.left = (!!rect.left || rect.left === 0 ? rect.left : rect.right);
63
- return rect;
64
- }
65
-
66
- static ConvertCorner(str) {
67
- let arrays = StyleValue.SplitString(str, ' ');
68
-
69
- let rect = {
70
- topLeft : arrays.length > 0 ? parseInt(arrays[0]) : 0,
71
- topRight : arrays.length > 1 ? parseInt(arrays[1]) : null,
72
- bottomRight : arrays.length > 2 ? parseInt(arrays[2]) : null,
73
- bottomLeft : arrays.length > 3 ? parseInt(arrays[3]) : null,
74
- };
75
- rect.topRight = (!!rect.topRight || rect.topRight === 0 ? rect.topRight : rect.topLeft);
76
- rect.bottomRight = (!!rect.bottomRight || rect.bottomRight === 0 ? rect.bottomRight : rect.topLeft);
77
- rect.bottomLeft = (!!rect.bottomLeft || rect.bottomLeft === 0 ? rect.bottomLeft : rect.bottomRight);
78
- return rect;
79
- }
80
-
81
- static ConvertSize(str) {
82
- let arrays = StyleValue.SplitString(str, ' ');
83
-
84
- let size = {
85
- width : arrays.length > 0 ? parseInt(arrays[0]) : 0,
86
- height : arrays.length > 1 ? parseInt(arrays[1]) : null,
87
- };
88
- size.height = (!!size.height || size.height === 0 ? size.height : size.width);
89
- return size;
90
- }
91
-
92
- static ConvertAnimation(str) {
93
- if(str === null || str.length === 0) {
94
- return null;
95
- }
96
-
97
- let bezierStart = str.indexOf('cubic-bezier');
98
- let arrays = [];
99
- if(bezierStart >= 0) { // 防止贝塞尔里面的空格被拆分
100
- let bezierEnd = str.indexOf(')');
101
- let bezierStr = str.substring(bezierStart, bezierEnd + 1);
102
- let bezierArray = StyleValue.SplitString(str, bezierStr);
103
- for(let item of bezierArray) {
104
- let subArrays = StyleValue.SplitString(item, ' ');
105
- arrays = arrays.concat(subArrays);
106
- }
107
- arrays.push(bezierStr);
108
- } else {
109
- arrays = StyleValue.SplitString(str, ' ');
110
- }
111
-
112
- // 下面四个属性在animation字符串中是无序的,所以需要单独判断。
113
- let timingFunction = null;
114
- let delay = 0;
115
- let iterationCount = 1;
116
- let direction = str.includes("alternate");
117
- for(let idx = 2; idx < arrays.length; idx++) { // 前两个选项固定是name和duration
118
- if(arrays[idx] === "infinite") {
119
- iterationCount = -1; // -1表示无限循环
120
- continue;
121
- }
122
-
123
- let num = StyleValue.ConvertTimeMs(arrays[idx]);
124
- if(isNaN(num) === false) { // 表示时间
125
- delay = num;
126
- } else {
127
- num = parseFloat(arrays[idx]);
128
- if (isNaN(num) === false) { // 表示次数
129
- iterationCount = num;
130
- } else { // 不是数字,直接赋给timingFunction,省略判断
131
- timingFunction = arrays[idx];
132
- }
133
- }
134
- }
135
-
136
- let duration = arrays.length > 1 ? StyleValue.ConvertTimeMs(arrays[1]) : 0;
137
- let anim = {
138
- name : arrays.length > 0 ? arrays[0] : "",
139
- duration : duration,
140
- timingFunction : StyleValue.ConvertEasing(timingFunction, duration),
141
- delay : delay,
142
- iterationCount : iterationCount,
143
- direction : direction,
144
- originStr : str,
145
- };
146
- // console.log("StyleValue.ConvertAnimation() anim=", anim);
147
-
148
- return anim;
149
- }
150
-
151
- static ConvertTransition(str) {
152
- if(str == null || str.length == 0) {
153
- return null;
154
- }
155
- let transition = {};
156
- let arrays = new Array();
157
- let splitStr = str.split(',');
158
- for (let idx = 0; idx < splitStr.length; idx++) {
159
- if(splitStr[idx].indexOf('(') >= 0) { // 如果包含"(", 则将直到")"为止的内容当作一个部分
160
- let endIdx = idx;
161
- while (endIdx < splitStr.length && splitStr[endIdx].indexOf(')') < 0) { // 没有包含")"
162
- endIdx++;
163
- }
164
- let concatStr = "";
165
- for (let subIdx = idx; subIdx <= endIdx; subIdx++) {
166
- if(subIdx != idx) {
167
- concatStr += ",";
168
- }
169
- concatStr += splitStr[subIdx];
170
- }
171
- idx = endIdx;
172
- arrays = arrays.concat(concatStr);
173
- } else {
174
- arrays = arrays.concat(splitStr[idx]);
175
- }
176
- }
177
- // console.warn("StyleValue.ConvertTransition() arrays=" + JSON.stringify(arrays));
178
- for (let item of arrays) {
179
- let ret = StyleValue.ConvertAnimation(item);
180
- transition[ret.name] = ret;
181
- if(ret.name == "all") {
182
- let allProps = new Array("opacity", "left", "top", "width", "height", "transform");
183
- for(let prop of allProps) {
184
- transition[prop] = ret;
185
- }
186
- }
187
- }
188
- return transition;
189
- }
190
-
191
- static ConvertTimeMs(str) {
192
- if(!str) {
193
- str = "";
194
- }
195
- str = str.trim();
196
-
197
- let timing = NaN;
198
- if(str.endsWith('ms')) {
199
- timing = 1;
200
- } else if(str.endsWith('s')) {
201
- timing = 1000;
202
- }
203
- timing *= parseFloat(str);
204
-
205
- return timing;
206
- }
207
-
208
- static ConvertEasing(str, duration) {
209
- let easing = Forge.Easing.Circular.InOut;
210
- if(!str) {
211
- return easing;
212
- }
213
-
214
- if(str.includes('ease')) { // 加速用
215
- if (str.includes('-in-out')) {
216
- easing = Forge.Easing.Circular.InOut;
217
- } else if (str.includes('-out')) {
218
- easing = Forge.Easing.Circular.Out;
219
- } else if (str.includes('-in')) {
220
- easing = Forge.Easing.Circular.In;
221
- } else {
222
- easing = Forge.Easing.Circular.InOut;
223
- }
224
- } else if(str.includes('linear')) {
225
- easing = null; // null是匀速动画
226
- } else if(str.includes('cubic-bezier')) {
227
- let bezier = StyleValue.ConvertBezier(str);
228
- easing = new Forge.BezierEasing(bezier.x1, bezier.y1, bezier.x2, bezier.y2, duration);
229
- } else if (str.includes("steps")) {
230
- let steps = StyleValue.ConvertSteps(str);
231
- easing = new Forge.StepsEasing(steps.steps, steps.type);
232
- }
233
-
234
- // console.log("StyleValue.ConvertEasing() easing=" + JSON.stringify(easing.Package()));
235
- return easing;
236
- }
237
-
238
- static ConvertBezier(str) {
239
- let startIdx = str.indexOf('(');
240
- if(startIdx >= 0) {
241
- str = str.substring(startIdx + 1);
242
- }
243
-
244
- let arrays = StyleValue.SplitString(str, ',');
245
-
246
- let bezier = {
247
- x1 : arrays.length > 0 ? parseFloat(arrays[0]) : 0,
248
- y1 : arrays.length > 1 ? parseFloat(arrays[1]) : 0,
249
- x2 : arrays.length > 2 ? parseFloat(arrays[2]) : 0,
250
- y2 : arrays.length > 3 ? parseFloat(arrays[3]) : 0,
251
- };
252
- return bezier;
253
- }
254
-
255
- static ConvertSteps(str) {
256
- let startIdx = str.indexOf('(');
257
- if(startIdx >= 0) {
258
- str = str.substring(startIdx + 1);
259
- }
260
- let arrays = StyleValue.SplitString(str, ',');
261
- return {
262
- steps: arrays.length > 0 ? parseInt(arrays[0]) : 1,
263
- type: arrays.length > 1 ? (arrays[1].includes("start") ? 0 : 1) : 0,
264
- }
265
- }
266
-
267
- static ConvertOverflow(str, overflow_define) {
268
- if (!!str) {
269
- if(!str.includes('visible')) {
270
- return overflow_define.HIDDEN;
271
- }
272
- }
273
-
274
- return overflow_define.VISIBLE; // default value
275
- }
276
-
277
- static ConvertObjectFit(str, object_fit_define) {
278
- if(typeof(str) == "symbol") {
279
- return str;
280
- }
281
-
282
- if(!str) {
283
- str = "";
284
- }
285
-
286
- if(str.includes('fill')) {
287
- return object_fit_define.FILL;
288
- } else if(str.includes('contain')) {
289
- return object_fit_define.CONTAIN;
290
- } else if(str.includes('cover')) {
291
- return object_fit_define.COVER;
292
- } else if(str.includes('none')) {
293
- return object_fit_define.NONE;
294
- } else if(str.includes('scale-down')) {
295
- return object_fit_define.SCALEDOWN;
296
- }
297
-
298
- return object_fit_define.CONTAIN; // default value
299
- }
300
-
301
- static ConvertGradient(str) {
302
- if(!str) {
303
- str = "";
304
- }
305
- str = str.trim();
306
-
307
- if (!str.startsWith('linear-gradient')
308
- && !str.startsWith('radial-gradient')) {
309
- return str;
310
- }
311
-
312
- let gradient = {
313
- rawValue: str,
314
- }
315
- let values = str.replace(/.*?\((.*)\)/, '$1');
316
- let arrays = StyleValue.SplitStringOutsideParentheses(values, ',');
317
- if (str.startsWith('linear-gradient')) {
318
- if (arrays[0]?.startsWith('to ')
319
- || arrays[0]?.endsWith('deg')) {
320
- arrays = arrays.slice(1);
321
- throw new Error("linear-gradient direction or angle is not supported.")
322
- }
323
- if (arrays.length < 2) {
324
- console.error("linear-gradient colors is invalid.")
325
- } else {
326
- gradient.type = 'linear-gradient';
327
- gradient.colors = arrays;
328
- }
329
- } else if (str.startsWith('radial-gradient')) {
330
- throw new Error("radial-gradient is not supported.")
331
- }
332
-
333
- return gradient;
334
- }
335
-
336
- static SplitString(from, sep) {
337
- if (!from) {
338
- from = "";
339
- }
340
- let arrays = from.trim().split(sep);
341
- if (sep !== ' ') {
342
- return arrays;
343
- }
344
-
345
- //去除多个空格的条件下的影响
346
- let ret = [];
347
- for (let item of arrays) {
348
- if (!item) {
349
- continue;
350
- }
351
-
352
- ret.push(item);
353
- }
354
-
355
- return ret;
356
- }
357
-
358
- static SplitStringOutsideParentheses(from, sep) {
359
- let arrays = [];
360
-
361
- let splitStr = from.split(sep);
362
- for (let idx = 0; idx < splitStr.length; idx++) {
363
- if (splitStr[idx].indexOf('(') >= 0) { // 如果包含"(", 则将直到")"为止的内容当作一个部分
364
- let endIdx = idx;
365
- while (endIdx < splitStr.length && splitStr[endIdx].indexOf(')') < 0) { // 没有包含")"
366
- endIdx++;
367
- }
368
- let concatStr = "";
369
- for (let subIdx = idx; subIdx <= endIdx; subIdx++) {
370
- if (subIdx != idx) {
371
- concatStr += sep;
372
- }
373
- concatStr += splitStr[subIdx];
374
- }
375
- idx = endIdx;
376
- arrays = arrays.concat(concatStr.trim());
377
- } else {
378
- arrays = arrays.concat(splitStr[idx].trim());
379
- }
380
- }
381
-
382
- return arrays;
383
- }
384
- }
385
- export default StyleValue;
@@ -1,43 +0,0 @@
1
- class TextStylePackMap {
2
- constructor() {
3
- this._PersistMap = new Map();
4
- this._PersistMax = 300;
5
- this._PersistIdx = 0;
6
- this._PersistTrackList = new Array(this._PersistMax);
7
- this._TempMap = new Map();
8
- this._TempMax = 50;
9
- this._TempIdx = 0;
10
- this._TempTrackList = new Array(this._TempMax);
11
- }
12
-
13
- getPersistPack(key) {
14
- return this._PersistMap.get(key);
15
- }
16
-
17
- putPersistPack(key, pack) {
18
- TextStylePackMap._putPack(this._PersistMap, this._PersistTrackList, this._PersistIdx, key, pack);
19
- this._PersistIdx = (this._PersistIdx + 1) % this._PersistMax;
20
- }
21
-
22
- getTempPack(key) {
23
- return this._TempMap.get(key);
24
- }
25
-
26
- putTempPack(key, pack) {
27
- TextStylePackMap._putPack(this._TempMap, this._TempTrackList, this._TempIdx, key, pack);
28
- this._TempIdx = (this._TempIdx + 1) % this._TempMax;
29
- }
30
-
31
- static _putPack(map, list, write_idx, key, pack) {
32
- let expired_key = list[write_idx];
33
- if (expired_key) {
34
- // 轮换内容
35
- map.delete(expired_key);
36
- list[write_idx] = key;
37
- }
38
- map.set(key, pack);
39
- }
40
- }
41
-
42
- let sTextStylePackMap = new TextStylePackMap();
43
- export default sTextStylePackMap
@@ -1,144 +0,0 @@
1
- class URL {
2
- constructor(value, parseTotal) {
3
- this.href = '';
4
- this.origin = '';
5
- this.protocol = '';
6
- this.host = '';
7
- this.hostname = '';
8
- this.port = '';
9
- this.pathname = '';
10
- this.search = '';
11
- this.hash = '';
12
- if (!value) {
13
- return;
14
- }
15
- if (value.startsWith('url') === true) {
16
- let startIdx = value.indexOf('(') + 1;
17
- let endIdx = value.lastIndexOf(')');
18
- value = value.substring(startIdx, endIdx).trim();
19
- if (value === "undefined" || value === "null" || value.length === 0) {
20
- // 空内容,不进行其他自动解析和填充
21
- return;
22
- }
23
- }
24
-
25
- if (value.startsWith('data:') === true) {
26
- this.href = value;
27
- return;
28
- }
29
-
30
- let schema_idx = value.indexOf("://");
31
- if ((schema_idx < 0 || schema_idx > 10)
32
- && (!value.startsWith('./') && !value.startsWith('/'))) {
33
- /* 无schema时认为是相对路径 */
34
- value = "./" + value;
35
- }
36
- if (value.startsWith('/') === true) {
37
- value = document.location.origin + value;
38
- } else if (value.startsWith('./') === true || value.startsWith('../') === true) {
39
- if (typeof window.JsView !== "undefined"
40
- && typeof window.JsView.Dom.JsSubPath !== "undefined") {
41
- if (typeof window.JsView.Dom.__MainPath === "undefined"
42
- || (window.JsView.Dom.__MainPathRef === "undefined"
43
- || window.JsView.Dom.__MainPathRef !== document.location.href)) {
44
- // Update MainPath from JsSubPath & location.href
45
- if (!window.JsView.Dom.JsSubPath.startsWith('/'))
46
- window.JsView.Dom.JsSubPath = "/" + window.JsView.Dom.JsSubPath;
47
- if (!window.JsView.Dom.JsSubPath.endsWith('/'))
48
- window.JsView.Dom.JsSubPath = window.JsView.Dom.JsSubPath + "/";
49
- window.JsView.Dom.__MainPathRef = document.location.href;
50
- let subPathIdx = document.location.pathname.lastIndexOf(window.JsView.Dom.JsSubPath);
51
- window.JsView.Dom.__MainPath = document.location.origin + document.location.pathname.substring(0, subPathIdx) + '/';
52
- }
53
- let main_path = window.JsView.Dom.__MainPath;
54
-
55
- if (value.startsWith('./')) {
56
- // "./"格式
57
- // 为了避免部分服务器不支持 ./ 的相对寻址,尽量去掉./的修饰
58
- // 因为 window.JsView.Dom.__MainPath 一定以 '/' 结尾,所以'./' 整体全部去掉
59
- value = main_path + value.substring(2);
60
- } else {
61
- // "../"格式
62
- // URL支持 https://xxxx/../../ 的相对寻路径格式(服务端支持),所以不用刻意去去掉../的处理
63
- value = main_path + value;
64
- }
65
- }
66
- }
67
-
68
- this.href = value;
69
- if (!parseTotal) {
70
- return;
71
- }
72
-
73
- let url_parsed_left = this.href;
74
-
75
- // Parse .hash
76
- let hash_idx = url_parsed_left.indexOf('#');
77
- if (hash_idx > 0) {
78
- // Build hash
79
- this.hash = url_parsed_left.substring(hash_idx);
80
-
81
- // Remove hash from url parsed string
82
- url_parsed_left = url_parsed_left.substring(0, hash_idx);
83
- }
84
-
85
- // Parse .search
86
- let search_idx = url_parsed_left.indexOf('?');
87
- if (search_idx > 1) {
88
- this.search = url_parsed_left.substring(search_idx);
89
- // Remove search from parsed string
90
- url_parsed_left = url_parsed_left.substring(0, search_idx);
91
- }
92
-
93
- let protocolHostPath = url_parsed_left;
94
-
95
- // Parse .protocol
96
- let idx = protocolHostPath.indexOf('://');
97
- this.protocol = (idx > 0 ? protocolHostPath.substring(0, idx + 1) : "");
98
- let hostPath = (idx > 1 ? protocolHostPath.substring(idx + 3) : "");
99
-
100
- // Parse .host .pathname .origin
101
- idx = hostPath.indexOf('/');
102
- this.host = (idx > 0 ? hostPath.substring(0, idx) : "");
103
- this.pathname = (idx > 1 ? hostPath.substring(idx) : "");
104
- this.origin = (idx > 0 ? this.protocol + "//" + this.host : "");
105
- // if(!this.origin) {
106
- // throw Error("Failed to parse total url.");
107
- // }
108
-
109
- // Parse .hostname .port
110
- if (this.host.startsWith('[')) {
111
- // ipv6
112
-
113
- // ip part
114
- let idx = this.host.indexOf(']');
115
- this.hostname = this.host.substring(0, idx + 1);
116
-
117
- // port part
118
- let port_part = this.host.substring(idx + 1);
119
- idx = port_part.indexOf(":");
120
- this.port = (idx > 1 ? this.host.substring(idx + 1) : "");
121
- } else {
122
- // ipv4 or domain
123
- let idx = this.host.indexOf(':');
124
- this.hostname = (idx > 0 ? this.host.substring(0, idx) : this.host);
125
- this.port = (idx > 1 ? this.host.substring(idx + 1) : "");
126
- }
127
-
128
- // console.log("create total parse URL, this=", this);
129
- }
130
-
131
- replace(newUrl) {
132
- this.href = newUrl;
133
- }
134
- }
135
-
136
- // 向JsView 的 XML http Request 注册 URL转换处理
137
- if (window.JsView) {
138
- window.JsView.registerUriConverter?.((origin_url) => {
139
- let converter = new URL(origin_url, false);
140
- return converter.href;
141
- });
142
- }
143
-
144
- export default URL;
@@ -1,42 +0,0 @@
1
- /*
2
- * @Author: ChenChanghua
3
- * @Date: 2020-06-29 18:27:41
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2020-06-30 10:45:07
6
- * @Description: file content
7
- */
8
-
9
- /* eslint-disable no-unused-vars */
10
- let REACT_TOKEN =null;
11
-
12
- class EventHandler{
13
- static getHandlers(ele) {
14
- const handlers = EventHandler.reactEventHandlers(ele);
15
- if(handlers) { // react hooked event
16
- return handlers;
17
- } else if(ele._vei) { // Vue3 hooked event
18
- return ele._vei;
19
- }
20
-
21
- return {};
22
- }
23
-
24
-
25
- static reactEventHandlers(ele) {
26
- if (REACT_TOKEN == null) {
27
- EventHandler._getReactToken(ele);
28
- }
29
- return ele["__reactEventHandlers$" + REACT_TOKEN]
30
- }
31
-
32
- static _getReactToken(ele) {
33
- for (let key in ele) {
34
- if (key.indexOf("__reactEventHandlers") >= 0 || key.indexOf("__reactInternalInstance") >= 0) {
35
- let index = key.indexOf("$");
36
- REACT_TOKEN = key.substring(index + 1);
37
- break;
38
- }
39
- }
40
- }
41
- }
42
- export default EventHandler;
@@ -1,86 +0,0 @@
1
- /* eslint-disable no-extra-boolean-cast */
2
- /* eslint-disable no-prototype-builtins */
3
-
4
- import { TriggerFocus } from "../utils/focusableNode"
5
-
6
- let sWindowRootMap = {};
7
-
8
- function findFDivRootByName(app_root_div_name) {
9
- return sWindowRootMap[app_root_div_name];
10
- }
11
-
12
- class FDivRoot {
13
- constructor(app_root_div_name, dispatch_key_proxy, root_element) {
14
- this._Element = root_element;
15
-
16
- // 加入到window root map中
17
- if (sWindowRootMap.hasOwnProperty(app_root_div_name)) {
18
- console.error(`Warn: FDivRoot duplicate name=${app_root_div_name}`);
19
- }
20
- sWindowRootMap[app_root_div_name] = this;
21
-
22
- // 进行初始化
23
- this._DoInit(dispatch_key_proxy);
24
- }
25
-
26
- _DoInit(dispatch_key_proxy) {
27
- let root_focus_node = this._Element.FocusNodeRef;
28
-
29
- // 创建RouterHub
30
- this._Element.setAttribute("new-namespace", "__AppRoot__");
31
-
32
- // 初始化DispatchKeyProxy
33
- if (dispatch_key_proxy) {
34
- root_focus_node.setDispatchKeyProxy(
35
- dispatch_key_proxy.keyDown,
36
- dispatch_key_proxy.keyUp);
37
- }
38
-
39
- // 接管全部由引擎过来的所有按键信息
40
- if(!!window.JsView) {
41
- // JsView环境: 和Activity关联以对接按键事件
42
- let forge_ext = window.JsView.ForgeExt;
43
- root_focus_node.attachToActivity(forge_ext.RootActivity, forge_ext.RootView);
44
- } else {
45
- // HTML环境: hook window的keydown和keyup
46
- window.addEventListener('keydown', (ev) => {
47
- var tag_name=document.activeElement.tagName; // 当前获取焦点的对象的tagName
48
- if (!tag_name || tag_name.toLowerCase() !== "input") {
49
- root_focus_node.dispatchKeyDown(ev);
50
- if (ev.preventDefault) {
51
- ev.preventDefault();
52
- }
53
- }
54
- });
55
-
56
- window.addEventListener('keyup', (ev) => {
57
- var tag_name=document.activeElement.tagName; // 当前获取焦点的对象的tagName
58
- if (!tag_name || tag_name.toLowerCase() !== "input") {
59
- root_focus_node.dispatchKeyUp(ev);
60
- if (ev.preventDefault) {
61
- ev.preventDefault();
62
- }
63
- }
64
- });
65
- }
66
- }
67
-
68
- getElement() {
69
- return this._Element;
70
- }
71
-
72
- getHub() {
73
- return this._Element.jsvGetHub();
74
- }
75
-
76
- onMounted() {
77
- // 进行Mounted操作,触发focus处理
78
- this._Element.FocusNodeRef.updateMountState();
79
- TriggerFocus();
80
- }
81
- }
82
-
83
- export {
84
- FDivRoot,
85
- findFDivRootByName
86
- }