@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,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;