@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.
- package/dom/jsv-browser-debug-dom.js +1 -1
- package/dom/jsv-dom.js +1 -1
- package/dom/jsv-engine-js-browser.js +1 -1
- package/dom/jsv-forge-define.js +1 -1
- package/package.json +14 -17
- package/patches/node_modules/vite/dist/node/chunks/dep-0fc8e132.js +8 -1
- package/patches/node_modules/vite/dist/node/jsview.vite.config.js +12 -6
- package/dom/jsview-dom/README.md +0 -5
- package/dom/jsview-dom/package-lock.json-perfect +0 -3898
- package/dom/jsview-dom/package.json +0 -23
- package/dom/jsview-dom/rollup/browser-debug-dom.rollup.config.js +0 -15
- package/dom/jsview-dom/rollup/dom.rollup.config.js +0 -14
- package/dom/jsview-dom/rollup/engine-js-browser.rollup.config.js +0 -14
- package/dom/jsview-dom/rollup/forge-define.rollup.config.js +0 -14
- package/dom/jsview-dom/scripts/release_dist.sh +0 -36
- package/dom/jsview-dom/src/dom-browser-hook/HookDocument.js +0 -118
- package/dom/jsview-dom/src/dom-browser-hook/OriginDocument.js +0 -19
- package/dom/jsview-dom/src/dom-browser-hook/StyleFormatCheck.js +0 -559
- package/dom/jsview-dom/src/dom-browser-hook/index.js +0 -6
- package/dom/jsview-dom/src/dom-wrapper/ForgeExtension.js +0 -226
- package/dom/jsview-dom/src/dom-wrapper/JsViewForgeApp.js +0 -85
- package/dom/jsview-dom/src/dom-wrapper/JsViewProxy.js +0 -51
- package/dom/jsview-dom/src/dom-wrapper/event/AnimationEvent.js +0 -7
- package/dom/jsview-dom/src/dom-wrapper/event/Event.js +0 -12
- package/dom/jsview-dom/src/dom-wrapper/event/FocusEvent.js +0 -9
- package/dom/jsview-dom/src/dom-wrapper/event/KeyboardEvent.js +0 -43
- package/dom/jsview-dom/src/dom-wrapper/event/LoadEvent.js +0 -8
- package/dom/jsview-dom/src/dom-wrapper/index.js +0 -16
- package/dom/jsview-dom/src/dom-wrapper/node/AnchorElement.js +0 -24
- package/dom/jsview-dom/src/dom-wrapper/node/AudioElement.js +0 -60
- package/dom/jsview-dom/src/dom-wrapper/node/Comment.js +0 -10
- package/dom/jsview-dom/src/dom-wrapper/node/DivElement.js +0 -498
- package/dom/jsview-dom/src/dom-wrapper/node/Document.js +0 -274
- package/dom/jsview-dom/src/dom-wrapper/node/Element.js +0 -852
- package/dom/jsview-dom/src/dom-wrapper/node/FDivElement.js +0 -48
- package/dom/jsview-dom/src/dom-wrapper/node/HeadElement.js +0 -47
- package/dom/jsview-dom/src/dom-wrapper/node/ImageElement.js +0 -203
- package/dom/jsview-dom/src/dom-wrapper/node/JsvAudioTrackElement.js +0 -22
- package/dom/jsview-dom/src/dom-wrapper/node/JsvElement.js +0 -40
- package/dom/jsview-dom/src/dom-wrapper/node/LinkElement.js +0 -48
- package/dom/jsview-dom/src/dom-wrapper/node/MediaElement.js +0 -230
- package/dom/jsview-dom/src/dom-wrapper/node/Node.js +0 -178
- package/dom/jsview-dom/src/dom-wrapper/node/SVGElement.js +0 -9
- package/dom/jsview-dom/src/dom-wrapper/node/ScriptElement.js +0 -45
- package/dom/jsview-dom/src/dom-wrapper/node/StyleElement.js +0 -33
- package/dom/jsview-dom/src/dom-wrapper/node/StyleElementCache.js +0 -41
- package/dom/jsview-dom/src/dom-wrapper/node/Text.js +0 -22
- package/dom/jsview-dom/src/dom-wrapper/node/UnknownElement.js +0 -4
- package/dom/jsview-dom/src/dom-wrapper/node/VideoElement.js +0 -237
- package/dom/jsview-dom/src/dom-wrapper/style/BorderImage.js +0 -25
- package/dom/jsview-dom/src/dom-wrapper/style/Inset.js +0 -26
- package/dom/jsview-dom/src/dom-wrapper/style/JsvStyleVariable.js +0 -65
- package/dom/jsview-dom/src/dom-wrapper/style/KeyframeRule.js +0 -11
- package/dom/jsview-dom/src/dom-wrapper/style/StyleDeclaration.js +0 -609
- package/dom/jsview-dom/src/dom-wrapper/style/StyleSheet.js +0 -51
- package/dom/jsview-dom/src/dom-wrapper/style/StyleValue.js +0 -385
- package/dom/jsview-dom/src/dom-wrapper/style/TextStylePackMap.js +0 -43
- package/dom/jsview-dom/src/dom-wrapper/style/URL.js +0 -144
- package/dom/jsview-dom/src/dom-wrapper/utils/EventHandler.js +0 -42
- package/dom/jsview-dom/src/dom-wrapper/utils/FDivRoot.js +0 -86
- package/dom/jsview-dom/src/dom-wrapper/utils/JsvLazySyncCache.js +0 -64
- package/dom/jsview-dom/src/dom-wrapper/utils/Log.js +0 -42
- package/dom/jsview-dom/src/dom-wrapper/utils/MutationObserver.js +0 -32
- package/dom/jsview-dom/src/dom-wrapper/utils/focusableNode.js +0 -715
- package/dom/jsview-dom/src/engine-js/ForgeDefine.js +0 -8
- package/dom/jsview-dom/src/engine-js/ForgeExtensionDefine.js +0 -14
- package/dom/jsview-dom/src/engine-js/browser/PlatformUtils.js +0 -100
- package/dom/jsview-dom/src/engine-js/browser/animation_base.js +0 -313
- package/dom/jsview-dom/src/engine-js/browser/animation_keyframe.js +0 -64
- package/dom/jsview-dom/src/engine-js/browser/animation_progress.js +0 -287
- package/dom/jsview-dom/src/engine-js/browser/animation_proxy.js +0 -906
- package/dom/jsview-dom/src/engine-js/browser/apic_decoder/demux.js +0 -143
- package/dom/jsview-dom/src/engine-js/browser/apic_decoder/gifDecoder.js +0 -12
- package/dom/jsview-dom/src/engine-js/browser/apic_decoder/libwebp-0.6.0.min.js +0 -160
- package/dom/jsview-dom/src/engine-js/browser/console_log.js +0 -25
- package/dom/jsview-dom/src/engine-js/browser/dynamic_key_frames.js +0 -95
- package/dom/jsview-dom/src/engine-js/browser/easing.js +0 -114
- package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/element_transform.js +0 -122
- package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/gjk.js +0 -450
- package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/mat.js +0 -102
- package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/range_model.js +0 -296
- package/dom/jsview-dom/src/engine-js/browser/html_shared_tools/test_collide.js +0 -10
- package/dom/jsview-dom/src/engine-js/browser/index.js +0 -38
- package/dom/jsview-dom/src/engine-js/browser/latex_parse.js +0 -336
- package/dom/jsview-dom/src/engine-js/browser/layout_params.js +0 -113
- package/dom/jsview-dom/src/engine-js/browser/layout_view.js +0 -3545
- package/dom/jsview-dom/src/engine-js/browser/layout_view_debug.js +0 -15
- package/dom/jsview-dom/src/engine-js/browser/media.js +0 -379
- package/dom/jsview-dom/src/engine-js/browser/page_base.js +0 -941
- package/dom/jsview-dom/src/engine-js/browser/particle_view.js +0 -526
- package/dom/jsview-dom/src/engine-js/browser/platform_timer.js +0 -61
- package/dom/jsview-dom/src/engine-js/browser/react_utils.js +0 -5
- package/dom/jsview-dom/src/engine-js/browser/rect_utils.js +0 -91
- package/dom/jsview-dom/src/engine-js/browser/render_bridge.js +0 -128
- package/dom/jsview-dom/src/engine-js/browser/render_texture_proxy.js +0 -155
- package/dom/jsview-dom/src/engine-js/browser/renderer_deprecated.js +0 -75
- package/dom/jsview-dom/src/engine-js/browser/sound_pool.js +0 -139
- package/dom/jsview-dom/src/engine-js/browser/steps_animation.js +0 -192
- package/dom/jsview-dom/src/engine-js/browser/text_style_cache.js +0 -454
- package/dom/jsview-dom/src/engine-js/browser/text_utils.js +0 -299
- package/dom/jsview-dom/src/engine-js/browser/text_view.js +0 -428
- package/dom/jsview-dom/src/engine-js/browser/texture_manager.js +0 -1060
- package/dom/jsview-dom/src/engine-js/browser/url.js +0 -69
- package/dom/jsview-dom/src/engine-js/browser/velocity.js +0 -40
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/autofroze_sensor.js +0 -77
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/drag_impact_sensor.js +0 -67
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor.js +0 -98
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_callback.js +0 -21
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/impact_sensor_manager.js +0 -24
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/index.js +0 -9
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor.js +0 -268
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/view_sensor_manager.js +0 -84
- package/dom/jsview-dom/src/engine-js/browser/view_sensor/visible_sensor.js +0 -213
- package/dom/jsview-dom/src/engine-js/browser/view_store.js +0 -41
- package/dom/jsview-dom/src/engine-js/index.js +0 -2
- 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,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,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;
|