@shijiu/jsview 1.9.731 → 1.9.759

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 (124) hide show
  1. package/dom/jsv-browser-debug-dom.js +12 -5
  2. package/dom/jsv-code-debug.mjs +14 -0
  3. package/dom/jsv-dom.js +12 -5
  4. package/dom/jsv-engine-js-browser.js +12 -5
  5. package/dom/jsv-forge-define.js +17 -5
  6. package/package.json +14 -17
  7. package/patches/node_modules/react-scripts/config/paths.js +161 -0
  8. package/patches/node_modules/react-scripts/config/webpack.config.js +825 -0
  9. package/patches/node_modules/react-scripts/package.json +108 -0
  10. package/patches/node_modules/vite/dist/node/chunks/dep-0fc8e132.js +8 -1
  11. package/patches/node_modules/vite/dist/node/jsview.vite.config.js +15 -7
  12. package/tools/common.js +7 -2
  13. package/tools/jsview-post-build.js +3 -3
  14. package/tools/jsview-post-install-react.js +1 -3
  15. package/tools/jsview-post-install.js +1 -1
  16. package/dom/jsview-dom/README.md +0 -5
  17. package/dom/jsview-dom/package-lock.json-perfect +0 -3898
  18. package/dom/jsview-dom/package.json +0 -23
  19. package/dom/jsview-dom/rollup/browser-debug-dom.rollup.config.js +0 -15
  20. package/dom/jsview-dom/rollup/dom.rollup.config.js +0 -14
  21. package/dom/jsview-dom/rollup/engine-js-browser.rollup.config.js +0 -14
  22. package/dom/jsview-dom/rollup/forge-define.rollup.config.js +0 -14
  23. package/dom/jsview-dom/scripts/release_dist.sh +0 -36
  24. package/dom/jsview-dom/src/dom-browser-hook/HookDocument.js +0 -118
  25. package/dom/jsview-dom/src/dom-browser-hook/OriginDocument.js +0 -19
  26. package/dom/jsview-dom/src/dom-browser-hook/StyleFormatCheck.js +0 -559
  27. package/dom/jsview-dom/src/dom-browser-hook/index.js +0 -6
  28. package/dom/jsview-dom/src/dom-wrapper/ForgeExtension.js +0 -226
  29. package/dom/jsview-dom/src/dom-wrapper/JsViewForgeApp.js +0 -85
  30. package/dom/jsview-dom/src/dom-wrapper/JsViewProxy.js +0 -51
  31. package/dom/jsview-dom/src/dom-wrapper/event/AnimationEvent.js +0 -7
  32. package/dom/jsview-dom/src/dom-wrapper/event/Event.js +0 -12
  33. package/dom/jsview-dom/src/dom-wrapper/event/FocusEvent.js +0 -9
  34. package/dom/jsview-dom/src/dom-wrapper/event/KeyboardEvent.js +0 -43
  35. package/dom/jsview-dom/src/dom-wrapper/event/LoadEvent.js +0 -8
  36. package/dom/jsview-dom/src/dom-wrapper/index.js +0 -16
  37. package/dom/jsview-dom/src/dom-wrapper/node/AnchorElement.js +0 -24
  38. package/dom/jsview-dom/src/dom-wrapper/node/AudioElement.js +0 -60
  39. package/dom/jsview-dom/src/dom-wrapper/node/Comment.js +0 -10
  40. package/dom/jsview-dom/src/dom-wrapper/node/DivElement.js +0 -498
  41. package/dom/jsview-dom/src/dom-wrapper/node/Document.js +0 -274
  42. package/dom/jsview-dom/src/dom-wrapper/node/Element.js +0 -852
  43. package/dom/jsview-dom/src/dom-wrapper/node/FDivElement.js +0 -48
  44. package/dom/jsview-dom/src/dom-wrapper/node/HeadElement.js +0 -47
  45. package/dom/jsview-dom/src/dom-wrapper/node/ImageElement.js +0 -203
  46. package/dom/jsview-dom/src/dom-wrapper/node/JsvAudioTrackElement.js +0 -22
  47. package/dom/jsview-dom/src/dom-wrapper/node/JsvElement.js +0 -40
  48. package/dom/jsview-dom/src/dom-wrapper/node/LinkElement.js +0 -48
  49. package/dom/jsview-dom/src/dom-wrapper/node/MediaElement.js +0 -230
  50. package/dom/jsview-dom/src/dom-wrapper/node/Node.js +0 -178
  51. package/dom/jsview-dom/src/dom-wrapper/node/SVGElement.js +0 -9
  52. package/dom/jsview-dom/src/dom-wrapper/node/ScriptElement.js +0 -45
  53. package/dom/jsview-dom/src/dom-wrapper/node/StyleElement.js +0 -33
  54. package/dom/jsview-dom/src/dom-wrapper/node/StyleElementCache.js +0 -41
  55. package/dom/jsview-dom/src/dom-wrapper/node/Text.js +0 -22
  56. package/dom/jsview-dom/src/dom-wrapper/node/UnknownElement.js +0 -4
  57. package/dom/jsview-dom/src/dom-wrapper/node/VideoElement.js +0 -237
  58. package/dom/jsview-dom/src/dom-wrapper/style/BorderImage.js +0 -25
  59. package/dom/jsview-dom/src/dom-wrapper/style/Inset.js +0 -26
  60. package/dom/jsview-dom/src/dom-wrapper/style/JsvStyleVariable.js +0 -65
  61. package/dom/jsview-dom/src/dom-wrapper/style/KeyframeRule.js +0 -11
  62. package/dom/jsview-dom/src/dom-wrapper/style/StyleDeclaration.js +0 -609
  63. package/dom/jsview-dom/src/dom-wrapper/style/StyleSheet.js +0 -51
  64. package/dom/jsview-dom/src/dom-wrapper/style/StyleValue.js +0 -385
  65. package/dom/jsview-dom/src/dom-wrapper/style/TextStylePackMap.js +0 -43
  66. package/dom/jsview-dom/src/dom-wrapper/style/URL.js +0 -144
  67. package/dom/jsview-dom/src/dom-wrapper/utils/EventHandler.js +0 -42
  68. package/dom/jsview-dom/src/dom-wrapper/utils/FDivRoot.js +0 -86
  69. package/dom/jsview-dom/src/dom-wrapper/utils/JsvLazySyncCache.js +0 -64
  70. package/dom/jsview-dom/src/dom-wrapper/utils/Log.js +0 -42
  71. package/dom/jsview-dom/src/dom-wrapper/utils/MutationObserver.js +0 -32
  72. package/dom/jsview-dom/src/dom-wrapper/utils/focusableNode.js +0 -715
  73. package/dom/jsview-dom/src/engine-js/ForgeDefine.js +0 -8
  74. package/dom/jsview-dom/src/engine-js/ForgeExtensionDefine.js +0 -14
  75. package/dom/jsview-dom/src/engine-js/browser/PlatformUtils.js +0 -100
  76. package/dom/jsview-dom/src/engine-js/browser/animation_base.js +0 -313
  77. package/dom/jsview-dom/src/engine-js/browser/animation_keyframe.js +0 -64
  78. package/dom/jsview-dom/src/engine-js/browser/animation_progress.js +0 -287
  79. package/dom/jsview-dom/src/engine-js/browser/animation_proxy.js +0 -906
  80. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/demux.js +0 -143
  81. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/gifDecoder.js +0 -12
  82. package/dom/jsview-dom/src/engine-js/browser/apic_decoder/libwebp-0.6.0.min.js +0 -160
  83. package/dom/jsview-dom/src/engine-js/browser/console_log.js +0 -25
  84. package/dom/jsview-dom/src/engine-js/browser/dynamic_key_frames.js +0 -95
  85. package/dom/jsview-dom/src/engine-js/browser/easing.js +0 -114
  86. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/element_transform.js +0 -122
  87. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/gjk.js +0 -450
  88. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/mat.js +0 -102
  89. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/range_model.js +0 -296
  90. package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/test_collide.js +0 -10
  91. package/dom/jsview-dom/src/engine-js/browser/index.js +0 -38
  92. package/dom/jsview-dom/src/engine-js/browser/latex_parse.js +0 -336
  93. package/dom/jsview-dom/src/engine-js/browser/layout_params.js +0 -113
  94. package/dom/jsview-dom/src/engine-js/browser/layout_view.js +0 -3545
  95. package/dom/jsview-dom/src/engine-js/browser/layout_view_debug.js +0 -15
  96. package/dom/jsview-dom/src/engine-js/browser/media.js +0 -379
  97. package/dom/jsview-dom/src/engine-js/browser/page_base.js +0 -941
  98. package/dom/jsview-dom/src/engine-js/browser/particle_view.js +0 -526
  99. package/dom/jsview-dom/src/engine-js/browser/platform_timer.js +0 -61
  100. package/dom/jsview-dom/src/engine-js/browser/react_utils.js +0 -5
  101. package/dom/jsview-dom/src/engine-js/browser/rect_utils.js +0 -91
  102. package/dom/jsview-dom/src/engine-js/browser/render_bridge.js +0 -128
  103. package/dom/jsview-dom/src/engine-js/browser/render_texture_proxy.js +0 -155
  104. package/dom/jsview-dom/src/engine-js/browser/renderer_deprecated.js +0 -75
  105. package/dom/jsview-dom/src/engine-js/browser/sound_pool.js +0 -139
  106. package/dom/jsview-dom/src/engine-js/browser/steps_animation.js +0 -192
  107. package/dom/jsview-dom/src/engine-js/browser/text_style_cache.js +0 -454
  108. package/dom/jsview-dom/src/engine-js/browser/text_utils.js +0 -299
  109. package/dom/jsview-dom/src/engine-js/browser/text_view.js +0 -428
  110. package/dom/jsview-dom/src/engine-js/browser/texture_manager.js +0 -1060
  111. package/dom/jsview-dom/src/engine-js/browser/url.js +0 -69
  112. package/dom/jsview-dom/src/engine-js/browser/velocity.js +0 -40
  113. package/dom/jsview-dom/src/engine-js/browser/view_sensor/autofroze_sensor.js +0 -77
  114. package/dom/jsview-dom/src/engine-js/browser/view_sensor/drag_impact_sensor.js +0 -67
  115. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor.js +0 -98
  116. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_callback.js +0 -21
  117. package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_manager.js +0 -24
  118. package/dom/jsview-dom/src/engine-js/browser/view_sensor/index.js +0 -9
  119. package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor.js +0 -268
  120. package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor_manager.js +0 -84
  121. package/dom/jsview-dom/src/engine-js/browser/view_sensor/visible_sensor.js +0 -213
  122. package/dom/jsview-dom/src/engine-js/browser/view_store.js +0 -41
  123. package/dom/jsview-dom/src/engine-js/index.js +0 -2
  124. package/dom/jsview-dom/src/engine-js/native/README.md +0 -1
@@ -1,178 +0,0 @@
1
- /* eslint-disable no-unused-vars */
2
- /* eslint-disable no-prototype-builtins */
3
-
4
- import Log from "../utils/Log";
5
-
6
- class Node {
7
- constructor(type) {
8
- this.ownerDocument = window.document;
9
- this.nodeType = type;
10
- this.parentNode = undefined;
11
- this.childNodes = [];
12
- this.jsvEventListener = undefined;
13
- this.jsvChildChangedCallback = undefined;
14
- }
15
-
16
- jsvGetTagName() {
17
- return "Unknown";
18
- }
19
-
20
- appendChild(node) {
21
- // Log.V(this, "Node.appendChild() node=", node.id);
22
- this.childNodes.push(node);
23
- node.parentNode = this;
24
-
25
- this.jsvChildChangedCallback?.();
26
- }
27
-
28
- moveChild(node, newParent, beforeNode) {
29
- // Remove child
30
- let nodeIdx = this.childNodes.indexOf(node)
31
- if (nodeIdx < 0) {
32
- Log.Throw("Failed to call Node.removeChild(), node not found. node=", node)
33
- }
34
- this.childNodes.splice(nodeIdx, 1);
35
- node.parentNode = undefined;
36
- this.jsvChildChangedCallback?.();
37
-
38
- // Insert
39
- newParent._insertBeforeInner(node, beforeNode);
40
- }
41
-
42
- removeChild(node) {
43
- // 递归删除所有子节点
44
- for (let idx = node.childNodes.length - 1; idx >= 0; idx--) {
45
- node.removeChild(node.childNodes[idx]) ;
46
- }
47
-
48
- // Log.V(this, "Node.removeChild() node=", node.id);
49
- let nodeIdx = this.childNodes.indexOf(node)
50
- if(nodeIdx < 0) {
51
- Log.Throw("Failed to call Node.removeChild(), node not found. node=", node)
52
- }
53
- this.childNodes.splice(nodeIdx, 1);
54
-
55
- node.parentNode = undefined;
56
-
57
- this.jsvChildChangedCallback?.();
58
- }
59
-
60
- insertBefore(node, beforeNode) {
61
- this._insertBeforeInner(node, beforeNode);
62
- }
63
-
64
- _insertBeforeInner(node, beforeNode) {
65
- let nodeIdx = this.childNodes.length;
66
- if (typeof beforeNode === 'undefined') {
67
- Log.Throw("TypeError: Failed to execute 'insertBefore' on 'Node': 2 arguments required, but only 1 present.");
68
- } else if (beforeNode !== null) {
69
- nodeIdx = this.childNodes.indexOf(beforeNode)
70
- }
71
- if (nodeIdx < 0) {
72
- Log.Throw("Failed to call Node.insertBefore(), before node not found. beforeNode=", beforeNode)
73
- }
74
- this.childNodes.splice(nodeIdx, 0, node);
75
-
76
- node.parentNode = this;
77
-
78
- this.jsvChildChangedCallback?.();
79
- }
80
-
81
- get previousSibling() {
82
- const childNodesOfParent = this.parentNode.childNodes;
83
- let thisIdx = childNodesOfParent.indexOf(this)
84
- if(thisIdx < 0) {
85
- Log.Throw("Failed to call Node.previousSibling(), this node not found. this=", this)
86
- }
87
- let siblingNode = childNodesOfParent[thisIdx - 1]; // 如果nodeIdx == 0,则数组会返回undefined
88
-
89
- // Log.V(this, ".previousSibling() siblingNode=", siblingNode);
90
- return siblingNode;
91
- }
92
-
93
- get nextSibling() {
94
- const childNodesOfParent = this.parentNode.childNodes;
95
- let thisIdx = childNodesOfParent.indexOf(this)
96
- if(thisIdx < 0) {
97
- Log.Throw("Failed to call Node.nextSibling(), this node not found. this=", this)
98
- }
99
- let siblingNode = childNodesOfParent[thisIdx + 1]; // 如果nodeIdx + 1溢出,则数组会返回undefined
100
-
101
- // Log.V(this, ".nextSibling() siblingNode=", siblingNode);
102
- return siblingNode;
103
- }
104
-
105
- addEventListener(event, func, useCapture) {
106
- //console.log("Node.addEventListener() this=", this.nodeType, " event=", event);
107
-
108
- if(!this.jsvEventListener) {
109
- this.jsvEventListener = {};
110
- }
111
- let valueSet = this.jsvEventListener[event];
112
- if(!valueSet) {
113
- valueSet = new Set();
114
- this.jsvEventListener[event] = valueSet;
115
- }
116
-
117
- valueSet.add(func);
118
- //console.log("valueSet:",valueSet);
119
- }
120
-
121
- removeEventListener(event, func, useCapture) {
122
- //console.log("Node.removeEventListener() this=", this, " event=", event);
123
-
124
- if(!this.jsvEventListener) {
125
- return;
126
- }
127
-
128
- let valueSet = this.jsvEventListener[event];
129
- if(!valueSet) {
130
- return;
131
- }
132
-
133
- valueSet.delete(func);
134
-
135
- if(valueSet.size <= 0) {
136
- if (this.jsvEventListener.hasOwnProperty(event)) {
137
- delete this.jsvEventListener[event];
138
- }
139
- }
140
-
141
- if (Object.values(this.jsvEventListener).length === 0) {
142
- this.jsvEventListener = undefined;
143
- }
144
- }
145
-
146
- dispatchEvent(event) {
147
- //console.log("Node.dispatchEvent() this=", this, " event=", event.type);
148
- if(!this.jsvEventListener) {
149
- console.warn("Node.dispatchEvent() Ignore to dispatch event: " + event.type + ". No event added.");
150
- return;
151
- }
152
- //console.log("this.jsvEventListener:",this.jsvEventListener, );
153
- let valueSet = this.jsvEventListener[event.type];
154
- if(!valueSet) {
155
- console.warn("Node.dispatchEvent() Ignore to dispatch event: " + event.type + ". No listener added.");
156
- return;
157
- }
158
-
159
- if(!event.target) {
160
- event.target = document.activeElement;
161
- }
162
-
163
- for(let listener of valueSet) {
164
- listener(event);
165
- }
166
- }
167
-
168
- jsvObserveChildChanged(callback) {
169
- this.jsvChildChangedCallback = callback;
170
- }
171
- }
172
-
173
- Node.ELEMENT_NODE = 1
174
- Node.TEXT_NODE = 3
175
- Node.COMMENT_NODE = 8
176
- Node.DOCUMENT_NODE = 9
177
- Node.NOLAYOUT_NODE = 10
178
- export default Node;
@@ -1,9 +0,0 @@
1
- import Element from "./Element"
2
-
3
- class SVGElement extends Element {
4
- jsvGetTagName() {
5
- return Element.TAG.LINK;
6
- }
7
- }
8
-
9
- export default SVGElement;
@@ -1,45 +0,0 @@
1
- import Element from "./Element"
2
- import Event from "../event/Event"
3
- import URL from "../style/URL"
4
-
5
- class ScriptElement extends Element {
6
- constructor(tag) {
7
- super(tag);
8
- this.src = null;
9
- this.onerror = null;
10
- this.onload = null;
11
- this.charset = null;
12
- this.timeout = 120;
13
- }
14
-
15
- setAttribute(name, value) {
16
- console.log("ScriptElement.setAttribute() name=" + name + ", value=", value);
17
- this[name] = value;
18
- }
19
-
20
- jsvLoadResource() {
21
- if (this.src != null) {
22
- var url = new URL(this.src);
23
- console.log("load script with url=" + url.href);
24
- var _this = this;
25
- window.JsView.runJsWithUrl(url.href, false, (is_success, err_code)=>{
26
- _this.jsvOnLoadResult(is_success, err_code);
27
- });
28
- }
29
- }
30
-
31
- jsvOnLoadResult(is_success, err_code) {
32
- console.log("onLoadResult " + is_success + " " + err_code);
33
- if (is_success) {
34
- if (this.onload) {
35
- let event = new Event('load');
36
- this.onload(event);
37
- }
38
- } else {
39
- if (this.onerror) {
40
- this.onerror({ type: 'jsvErr_' + err_code, target:this });
41
- }
42
- }
43
- }
44
- }
45
- export default ScriptElement;
@@ -1,33 +0,0 @@
1
- import Element from "./Element"
2
- import StyleSheet from "../style/StyleSheet"
3
-
4
- class StyleElement extends Element {
5
- constructor(tag) {
6
- // console.warn("StyleElement.constructor()")
7
- super(tag)
8
- this.textContent = null;
9
- }
10
-
11
- jsvGetTagName() {
12
- return Element.TAG.STYLE;
13
- }
14
-
15
- appendChild(node) {
16
- super.appendChild(node);
17
-
18
- let styleSheet = new StyleSheet(node.textContent);
19
- // document.styleSheets.append(styleSheet);
20
- // console.warn("StyleElement.appendChild()", document)
21
- document.jsvAppendStyleSheet(styleSheet);
22
- }
23
-
24
- removeChild(node) {
25
- super.removeChild(node);
26
-
27
- // document.styleSheets.remove(styleSheet);
28
- throw Error("Failed to removeChild, unimplement!.");
29
- }
30
-
31
- }
32
-
33
- export default StyleElement;
@@ -1,41 +0,0 @@
1
- class StyleElementCache{
2
- static jsvGetKeyFrames(name) {
3
- // console.log(">>>>>>>>>>>>>>>>>>>> name=", name);
4
- let cached = StyleElementCache.jsvKeyFramesCache[name];
5
- if(!!cached) {
6
- return cached;
7
- }
8
-
9
- let keyFrames = "@keyframes ";
10
- let customKeyFrames = "-keyframes"; // 例如-webkit-keyframes
11
- let keyName = keyFrames + name;
12
- for(let textContent of StyleElementCache.jsvCache) {
13
- let startIdx = textContent.indexOf(keyName);
14
- // console.log(">>>>>>>>>>>>>>>>>>>> startIdx=", startIdx, " textContent=", textContent);
15
- if(startIdx < 0) {
16
- continue;
17
- }
18
-
19
-
20
- let customEndIdx = textContent.indexOf(customKeyFrames, startIdx + 1); // 寻找下一个"@keyframes"
21
- let endIdx = textContent.indexOf(keyFrames, startIdx + 1); // 寻找下一个"@keyframes"
22
- if(endIdx < 0) { // 当前是最后一个
23
- endIdx = textContent.length;
24
- }
25
- if(customEndIdx > 0 && customEndIdx < endIdx) { // 去除自定义keyframes的部分
26
- endIdx = customEndIdx;
27
- }
28
-
29
- let keyFramesContent = textContent.substring(startIdx, endIdx);
30
- StyleElementCache.jsvKeyFramesCache[name] = keyFramesContent;
31
- // console.log(">>>>>>>>>>>>>>>>>>>> StyleElement.jsvKeyFramesCache=", JSON.stringify(StyleElement.jsvKeyFramesCache));
32
- return keyFramesContent;
33
- }
34
-
35
- return null;
36
- }
37
- }
38
-
39
- StyleElementCache.jsvCache = new Set();
40
- StyleElementCache.jsvKeyFramesCache = {};
41
- export default StyleElementCache;
@@ -1,22 +0,0 @@
1
- import Node from "./Node"
2
- class Text extends Node {
3
- constructor(content) {
4
- // console.log("Text.Text() content=" + content);
5
- super(Node.TEXT_NODE)
6
- this.textContent = content
7
- }
8
-
9
- get nodeValue() {
10
- return this.textContent;
11
- }
12
-
13
- set nodeValue(value) {
14
- this.textContent = value;
15
-
16
- if(this.parentNode) {
17
- this.parentNode.textContent = this.textContent;
18
- }
19
- }
20
- }
21
-
22
- export default Text
@@ -1,4 +0,0 @@
1
- import Element from "./Element"
2
- class UnknownElement extends Element {
3
- }
4
- export default UnknownElement;
@@ -1,237 +0,0 @@
1
- /* eslint-disable no-extra-boolean-cast */
2
- import Forge from "../../engine-js/ForgeDefine"
3
- import Event from "../event/Event"
4
- import Element from "./Element"
5
- import MediaElement from "./MediaElement"
6
- import StyleDeclaration from "../style/StyleDeclaration"
7
- import ForgeExtension from "../ForgeExtension"
8
-
9
- class VideoElement extends MediaElement {
10
- constructor(src) {
11
- super(src);
12
- console.log("VideoElement.constructor()", this);
13
- this._EventCache = [];
14
- this._UseTexture = false;
15
- this._StartTime = 0;
16
- }
17
-
18
- jsvGetTagName() {
19
- return Element.TAG.VIDEO;
20
- }
21
-
22
- setAttribute(name, value) {
23
- /**
24
- react解析过程调用顺序理解
25
- 1. 先addEventListener
26
- 2. 然后setAttribute,在此需要jsv_media_usetexture属性在其他所有属性设定之前设定,尤其必须在src属性设定前
27
- 3. appendChild->jsvOnloadForgeView 会被调用,触发jsvMainView的创建
28
- 4. media的prepareAsync完成后会调用jsvOnload,在此根据texture状态申请不同的LayoutView
29
- */
30
- if(name === "jsv-media-usetexture"
31
- && (value === "true" || value === true || value === "")) {
32
- this._UseTexture = true;
33
- return;
34
- } else if (name === "jsv_media_usetexture" && value === "true") { // 兼容旧下划线方式
35
- this._UseTexture = true;
36
- return;
37
- }
38
-
39
- super.setAttribute(name, value);
40
- }
41
-
42
- removeAttribute(name) {
43
- if (name === "jsv-media-usetexture"
44
- || name === "jsv_media_usetexture") { // 兼容旧下划线方式
45
- this._UseTexture = false;
46
- console.log("removeAttribute jsv_media_usetexture");
47
- return;
48
- }
49
-
50
- super.removeAttribute(name);
51
- }
52
-
53
- jsvFlushViewLayout() {
54
- super.jsvFlushViewLayout();
55
-
56
- let degrees = this.style.JsvVideoRotation;
57
- if (isNaN(degrees)) {
58
- degrees = 0;
59
- }
60
- if(!!this.style.objectFit && this.style.objectFit != StyleDeclaration.ObjectFit.CONTAIN
61
- && this.style.objectFit != StyleDeclaration.ObjectFit.FILL) {
62
- console.error("Video rotation is not valid on objectFit=", this.style.objectFit)
63
- degrees = 0;
64
- }
65
- if (this.jsvMedia) {
66
- this.jsvMedia.setRotation?.(degrees,
67
- this.style.width, this.style.height,
68
- this.style.objectFit == StyleDeclaration.ObjectFit.FILL);
69
- }
70
- }
71
-
72
- jsvAddMediaListener(event) {
73
- if (!this.jsvMedia) {
74
- this._EventCache.push(event);
75
- } else {
76
- this.jsvMedia.addEventListener(event, () => {
77
- let ev = new Event(event);
78
- ev.target = this;
79
- this.dispatchEvent(ev);
80
- });
81
- }
82
- }
83
-
84
- jsvFlushVideoView() {
85
- if (!this.jsvMediaView) {
86
- return;
87
- }
88
-
89
- this.jsvStore.textureWidth = this.jsvMedia.videoWidth;
90
- this.jsvStore.textureHeight = this.jsvMedia.videoHeight;
91
-
92
- // 触发view进行resize调整
93
- this.style.jsvLazySyncCache.setCacheProperty(StyleDeclaration.TYPE.LAYOUT_SIZE, true);
94
- }
95
-
96
- // Override
97
- jsvApplyObjectFit(origin_layout) {
98
- return Element.applyObjectFitCommon(this, origin_layout, this.jsvMediaView);
99
- }
100
-
101
- jsvInit() {
102
- console.log("VideoElement jsvInit");
103
- if (!this._UseTexture) {
104
- this.jsvMedia = new MediaElement.HOOKS.Video();
105
- } else {
106
- this.jsvMedia = new MediaElement.HOOKS.OffscreenVideo();
107
- }
108
-
109
- if (this._EventCache.length > 0) {
110
- this._EventCache.map((event) => {
111
- this.jsvAddMediaListener(event);
112
- })
113
- this._EventCache = [];
114
- }
115
- this.addEventListener("load", this.jsvOnLoaded.bind(this));
116
- super.jsvInit();
117
- }
118
-
119
- jsvRelease() {
120
- super.jsvRelease();
121
- this.jsvMedia = null;
122
- }
123
-
124
- jsvOnLoaded() {
125
- if (!this.jsvMediaView) {
126
- let textureSetting;
127
- if (this._UseTexture) {
128
- this.jsvMediaView = new Forge.LayoutView();
129
- // 配置Texture
130
- let videoTexture = ForgeExtension.TextureManager.GetOffScreenMediaTexture(this.jsvMedia);
131
- // 配置视频的圆角设定
132
- let corner = this.style.borderRadius;
133
- let cornerMask;
134
- if (!!corner) {
135
- cornerMask = new Forge.ViewRoundCornerMask(corner.topLeft, corner.topRight,
136
- corner.bottomLeft, corner.bottomRight);
137
- }
138
- // 组合TextureSetting并设置view的texture
139
- textureSetting = new Forge.TextureSetting(videoTexture, cornerMask);
140
- } else {
141
- this.jsvMediaView = new Forge.VideoView(this.jsvMedia);
142
- // 配置Texture
143
- let videoTexture = ForgeExtension.TextureManager.GetColorTexture("rgba(0,0,0,0)");
144
- // 组合TextureSetting并设置view的texture
145
- textureSetting = new Forge.TextureSetting(videoTexture, null, null, false);
146
- }
147
- this.jsvMainView.AddView(this.jsvMediaView);
148
- this.jsvMediaView.ResetTexture(textureSetting);
149
- }
150
-
151
- this.jsvFlushVideoView();
152
- }
153
-
154
- // override
155
- jsvOnLoadForgeView() {
156
- if (!this.style.objectFit) {
157
- // Video若objectFit未填写则默认为contain
158
- this.style.jsvSetPropertySilently("objectFit", StyleDeclaration.ObjectFit.CONTAIN);
159
- }
160
-
161
- super.jsvOnLoadForgeView();
162
- }
163
-
164
- onJsViewHide() {
165
- this._StartTime = this.jsvMedia.currentTime;
166
- super.onJsViewHide();
167
- this.jsvMedia.setState("autoPlay", false, "boolean");
168
- }
169
-
170
- onJsViewShow() {
171
- //重新加载
172
- if (!this.jsvMedia) {
173
- this.jsvInit();
174
- }
175
- this.jsvMedia.src = this.srcValue;
176
- this.jsvMedia.startTime = Math.max(this._StartTime - 1, 0);
177
- this._StartTime = 0;
178
-
179
- if (this.stopByOnHide) {
180
- this.stopByOnHide = false;
181
- this.jsvMedia.play();
182
- }
183
- }
184
- }
185
-
186
- VideoElement.PROP = {
187
- SetOnly: [],
188
- GetOnly: [
189
- "videoHeight",
190
- "videoWidth",
191
- ],
192
- SetAndGet: [
193
- "height",
194
- "poster",
195
- "width",
196
- ],
197
- };
198
-
199
- for (let propType in VideoElement.PROP) {
200
- let propArray = VideoElement.PROP[propType];
201
- for (let propName of propArray) {
202
- let propValue = {};
203
- if (propType === "SetOnly" || propType === "SetAndGet") {
204
- propValue.set = function (value) {
205
- this.media[propName] = value;
206
- }
207
- }
208
- if (propType === "GetOnly" || propType === "SetAndGet") {
209
- propValue.get = function () {
210
- return this.media[propName];
211
- }
212
- }
213
-
214
- VideoElement.prototype[propName] = propValue;
215
- }
216
- }
217
-
218
- VideoElement.EVENTS = [
219
- "oncanplay",
220
- "oncanplaythrough",
221
- "ondurationchange",
222
- "onended",
223
- "onerror",
224
- "onload",
225
- "onloadedmetadata",
226
- "onloadstart",
227
- "onpause",
228
- "onplay",
229
- "onplaying",
230
- "onprogress",
231
- "onseeking",
232
- "onseeked",
233
- "onstalled",
234
- "ontimeupdate",
235
- ];
236
-
237
- export default VideoElement;
@@ -1,25 +0,0 @@
1
- import StyleValue from "./StyleValue"
2
- import URL from "./URL"
3
- class BorderImage {
4
- constructor(value) {
5
- this.source = null;
6
- this.slice = null;
7
- this.repeat = null;
8
- this.outset = null;
9
- this.width = null;
10
-
11
- if(!value) {
12
- console.error("BorderImage.constructor() InvalidArgs: value=", value);
13
- return;
14
- }
15
-
16
- let separator = value.indexOf(')') + 1;
17
- let url = value.substring(0, separator);
18
- let slice = value.substring(separator);
19
- this.source = new URL(url);
20
- this.slice = StyleValue.ConvertRect(slice);
21
-
22
- // console.warn("BorderImage.constructor() this=", this);
23
- }
24
- }
25
- export default BorderImage;
@@ -1,26 +0,0 @@
1
- import StyleValue from "./StyleValue"
2
- class Inset {
3
- constructor(value) {
4
- this.top = null;
5
- this.right = null;
6
- this.bottom = null;
7
- this.left = null;
8
-
9
- if(!value
10
- || value.startsWith('inset') === false) {
11
- console.error("Inset.Parse() InvalidArgs: value=", value);
12
- return;
13
- }
14
-
15
- let idx = value.indexOf('(') + 1;
16
- let edgeValue = value.substring(idx);
17
- let rect = StyleValue.ConvertRect(edgeValue);
18
- this.top = rect.top;
19
- this.right = rect.right;
20
- this.bottom = rect.bottom;
21
- this.left = rect.left;
22
-
23
- // console.warn(".constructor() this=", this);
24
- }
25
- }
26
- export default Inset;
@@ -1,65 +0,0 @@
1
- /* eslint-disable no-extra-boolean-cast */
2
- /* eslint-disable no-prototype-builtins */
3
-
4
- class JsvStyleVariable {
5
- constructor() {
6
- this.refStyleObject = new Map();
7
- this.value = undefined;
8
- }
9
-
10
- static AppendRefStyle(varName, style, propName) {
11
- let jsvStyleVar = JsvStyleVariable.jsvGetStyleVar(varName);
12
-
13
- if(!jsvStyleVar.refStyleObject.has(style)) {
14
- jsvStyleVar.refStyleObject.set(style, []);
15
- }
16
- let refStyleProps = jsvStyleVar.refStyleObject.get(style);
17
-
18
- refStyleProps.push(propName);
19
- }
20
-
21
- static RemoveRefStyle(style) {
22
- for(const jsvStyleVar of JsvStyleVariable.VariableMap.values()) {
23
- for(const refStyle of jsvStyleVar.refStyleObject.keys()) {
24
- if(refStyle == style) {
25
- jsvStyleVar.refStyleObject.delete(style);
26
- }
27
- }
28
- }
29
- }
30
-
31
- static UpdateValue(varName, varValue) {
32
- let jsvStyleVar = JsvStyleVariable.jsvGetStyleVar(varName);
33
-
34
- jsvStyleVar.value = varValue;
35
-
36
- for(const [style, propList] of jsvStyleVar.refStyleObject) {
37
- for(const propName of propList) {
38
- style.jsvSetClassProperty(propName);
39
- }
40
- }
41
- }
42
-
43
- static GetValue(varName) {
44
- let jsvStyleVar = JsvStyleVariable.jsvGetStyleVar(varName);
45
-
46
- return jsvStyleVar.value;
47
- }
48
-
49
- static jsvGetStyleVar(varName) {
50
- if(varName.startsWith('--')) {
51
- varName = `var(${varName})`; // var(--xxx)
52
- }
53
-
54
- if(!JsvStyleVariable.VariableMap.has(varName)) {
55
- JsvStyleVariable.VariableMap.set(varName, new JsvStyleVariable());
56
- }
57
- const jsvStyleVar = JsvStyleVariable.VariableMap.get(varName);
58
-
59
- return jsvStyleVar;
60
- }
61
- }
62
-
63
- JsvStyleVariable.VariableMap = new Map;
64
-
65
- export default JsvStyleVariable;