@eva/plugin-renderer-video 2.1.0-beta.13 → 2.1.0-beta.15
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.
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
var globalThis = typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : Function('return this')();
|
|
2
3
|
globalThis.EVA = globalThis.EVA || {};
|
|
3
4
|
globalThis.EVA.plugin = globalThis.EVA.plugin || {};
|
|
4
5
|
globalThis.EVA.plugin.renderer = globalThis.EVA.plugin.renderer || {};
|
|
5
|
-
var _EVA_IIFE_video = function (exports, eva_js, pluginRenderer, pixi_js) {
|
|
6
|
+
var _EVA_IIFE_video = function (exports, eva_js, inspectorDecorator, pluginRenderer, pixi_js) {
|
|
6
7
|
'use strict';
|
|
7
8
|
function __decorate(decorators, target, key, desc) {
|
|
8
9
|
var c = arguments.length,
|
|
@@ -41,110 +42,6 @@ var _EVA_IIFE_video = function (exports, eva_js, pluginRenderer, pixi_js) {
|
|
|
41
42
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
45
|
-
var e = new Error(message);
|
|
46
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
47
|
-
};
|
|
48
|
-
function __rest(s, e) {
|
|
49
|
-
var t = {};
|
|
50
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
51
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
52
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
53
|
-
}
|
|
54
|
-
return t;
|
|
55
|
-
}
|
|
56
|
-
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
57
|
-
var e = new Error(message);
|
|
58
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
59
|
-
};
|
|
60
|
-
class SymbolKeysNotSupportedError extends Error {
|
|
61
|
-
constructor() {
|
|
62
|
-
super('Symbol keys are not supported yet!');
|
|
63
|
-
Object.setPrototypeOf(this, new.target.prototype);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
const IDE_PROPERTY_METADATA = 'IDE_PROPERTY_METADATA';
|
|
67
|
-
function transformBasicType(type) {
|
|
68
|
-
if (type === String) {
|
|
69
|
-
return 'string';
|
|
70
|
-
}
|
|
71
|
-
if (type === Number) {
|
|
72
|
-
return 'number';
|
|
73
|
-
}
|
|
74
|
-
if (type === Boolean) {
|
|
75
|
-
return 'boolean';
|
|
76
|
-
}
|
|
77
|
-
return 'unknown';
|
|
78
|
-
}
|
|
79
|
-
function defineLegacyIDEProp(target, propertyKey, patch) {
|
|
80
|
-
const constructor = target.constructor;
|
|
81
|
-
const current = constructor.IDEProps || {};
|
|
82
|
-
current[propertyKey] = _extends(_extends({
|
|
83
|
-
key: propertyKey
|
|
84
|
-
}, current[propertyKey]), patch);
|
|
85
|
-
constructor.IDEProps = current;
|
|
86
|
-
}
|
|
87
|
-
function defineTypes(target, key, options, returnTypeFunction) {
|
|
88
|
-
let type = Reflect.getMetadata('design:type', target, key);
|
|
89
|
-
let isArray = type === Array;
|
|
90
|
-
const str = transformBasicType(type);
|
|
91
|
-
if (str !== 'unknown') {
|
|
92
|
-
type = str;
|
|
93
|
-
}
|
|
94
|
-
if (returnTypeFunction) {
|
|
95
|
-
const returnType = returnTypeFunction();
|
|
96
|
-
if (Array.isArray(returnType)) {
|
|
97
|
-
isArray = true;
|
|
98
|
-
type = returnType[0];
|
|
99
|
-
} else {
|
|
100
|
-
type = returnType;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
const properties = Reflect.getMetadata(IDE_PROPERTY_METADATA, target.constructor) || {};
|
|
104
|
-
const current = properties[key] || {};
|
|
105
|
-
const property = _extends(_extends(_extends({}, current), {
|
|
106
|
-
type,
|
|
107
|
-
isArray: isArray
|
|
108
|
-
}), options);
|
|
109
|
-
properties[key] = property;
|
|
110
|
-
Reflect.defineMetadata(IDE_PROPERTY_METADATA, properties, target.constructor);
|
|
111
|
-
const legacyProperty = __rest(property, ["isArray"]);
|
|
112
|
-
defineLegacyIDEProp(target, key, legacyProperty);
|
|
113
|
-
}
|
|
114
|
-
function type(type) {
|
|
115
|
-
return Field({
|
|
116
|
-
type
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
function getTypeDecoratorParams(returnTypeFuncOrOptions, maybeOptions) {
|
|
120
|
-
if (typeof returnTypeFuncOrOptions === 'function') {
|
|
121
|
-
return {
|
|
122
|
-
returnTypeFunc: returnTypeFuncOrOptions,
|
|
123
|
-
options: maybeOptions || {}
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
return {
|
|
127
|
-
options: returnTypeFuncOrOptions || {}
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
function Field(returnTypeFunction, maybeOptions) {
|
|
131
|
-
return (target, propertyKey) => {
|
|
132
|
-
if (typeof propertyKey === 'symbol') {
|
|
133
|
-
throw new SymbolKeysNotSupportedError();
|
|
134
|
-
}
|
|
135
|
-
const {
|
|
136
|
-
options,
|
|
137
|
-
returnTypeFunc
|
|
138
|
-
} = getTypeDecoratorParams(returnTypeFunction, maybeOptions);
|
|
139
|
-
defineTypes(target, propertyKey, options, returnTypeFunc);
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
var ExecuteMode;
|
|
143
|
-
(function (ExecuteMode) {
|
|
144
|
-
ExecuteMode[ExecuteMode["Edit"] = 2] = "Edit";
|
|
145
|
-
ExecuteMode[ExecuteMode["Game"] = 4] = "Game";
|
|
146
|
-
ExecuteMode[ExecuteMode["All"] = 6] = "All";
|
|
147
|
-
})(ExecuteMode || (ExecuteMode = {}));
|
|
148
45
|
class Video extends eva_js.Component {
|
|
149
46
|
constructor() {
|
|
150
47
|
super(...arguments);
|
|
@@ -209,15 +106,15 @@ var _EVA_IIFE_video = function (exports, eva_js, pluginRenderer, pixi_js) {
|
|
|
209
106
|
}
|
|
210
107
|
}
|
|
211
108
|
Video.componentName = 'Video';
|
|
212
|
-
__decorate([type('string'), __metadata("design:type", String)], Video.prototype, "src", void 0);
|
|
213
|
-
__decorate([type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "loop", void 0);
|
|
214
|
-
__decorate([type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "autoplay", void 0);
|
|
215
|
-
__decorate([type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "muted", void 0);
|
|
216
|
-
__decorate([type('number'), __metadata("design:type", Number)], Video.prototype, "volume", void 0);
|
|
217
|
-
__decorate([type('number'), __metadata("design:type", Number)], Video.prototype, "playbackRate", void 0);
|
|
218
|
-
__decorate([type('number'), __metadata("design:type", Number)], Video.prototype, "anchorX", void 0);
|
|
219
|
-
__decorate([type('number'), __metadata("design:type", Number)], Video.prototype, "anchorY", void 0);
|
|
220
|
-
__decorate([type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "playsInline", void 0);
|
|
109
|
+
__decorate([inspectorDecorator.type('string'), __metadata("design:type", String)], Video.prototype, "src", void 0);
|
|
110
|
+
__decorate([inspectorDecorator.type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "loop", void 0);
|
|
111
|
+
__decorate([inspectorDecorator.type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "autoplay", void 0);
|
|
112
|
+
__decorate([inspectorDecorator.type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "muted", void 0);
|
|
113
|
+
__decorate([inspectorDecorator.type('number'), __metadata("design:type", Number)], Video.prototype, "volume", void 0);
|
|
114
|
+
__decorate([inspectorDecorator.type('number'), __metadata("design:type", Number)], Video.prototype, "playbackRate", void 0);
|
|
115
|
+
__decorate([inspectorDecorator.type('number'), __metadata("design:type", Number)], Video.prototype, "anchorX", void 0);
|
|
116
|
+
__decorate([inspectorDecorator.type('number'), __metadata("design:type", Number)], Video.prototype, "anchorY", void 0);
|
|
117
|
+
__decorate([inspectorDecorator.type('boolean'), __metadata("design:type", Boolean)], Video.prototype, "playsInline", void 0);
|
|
221
118
|
function resolveSrc(src) {
|
|
222
119
|
if (!src) return '';
|
|
223
120
|
if (src.startsWith('http://') || src.startsWith('https://') || src.startsWith('//') || src.startsWith('/')) {
|
|
@@ -474,5 +371,5 @@ var _EVA_IIFE_video = function (exports, eva_js, pluginRenderer, pixi_js) {
|
|
|
474
371
|
value: true
|
|
475
372
|
});
|
|
476
373
|
return exports;
|
|
477
|
-
}({}, EVA, EVA.plugin.renderer, PIXI);
|
|
374
|
+
}({}, EVA, inspectorDecorator, EVA.plugin.renderer, PIXI);
|
|
478
375
|
globalThis.EVA.plugin.renderer.video = globalThis.EVA.plugin.renderer.video || _EVA_IIFE_video;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}globalThis.EVA=globalThis.EVA||{},globalThis.EVA.plugin=globalThis.EVA.plugin||{},globalThis.EVA.plugin.renderer=globalThis.EVA.plugin.renderer||{};var _EVA_IIFE_video=function(e,t,o,n){"use strict";function r(e,t,o,n){var r,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,o,n);else for(var d=e.length-1;d>=0;d--)(r=e[d])&&(a=(i<3?r(a):i>3?r(t,o,a):r(t,o))||a);return i>3&&a&&Object.defineProperty(t,o,a),a}function i(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function a(e,t,o,n){return new(o||(o=Promise))(function(r,i){function a(e){try{s(n.next(e))}catch(e){i(e)}}function d(e){try{s(n.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,d)}s((n=n.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError,"function"==typeof SuppressedError&&SuppressedError;class d extends Error{constructor(){super("Symbol keys are not supported yet!"),Object.setPrototypeOf(this,new.target.prototype)}}const s="IDE_PROPERTY_METADATA";function c(e,t,o,n){let r=Reflect.getMetadata("design:type",e,t),i=r===Array;const a=function(e){return e===String?"string":e===Number?"number":e===Boolean?"boolean":"unknown"}(r);if("unknown"!==a&&(r=a),n){const e=n();Array.isArray(e)?(i=!0,r=e[0]):r=e}const d=Reflect.getMetadata(s,e.constructor)||{},c=_extends(_extends(_extends({},d[t]||{}),{type:r,isArray:i}),o);d[t]=c,Reflect.defineMetadata(s,d,e.constructor);!function(e,t,o){const n=e.constructor,r=n.IDEProps||{};r[t]=_extends(_extends({key:t},r[t]),o),n.IDEProps=r}(e,t,function(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(o[n[r]]=e[n[r]])}return o}(c,["isArray"]))}function l(e){return t={type:e},(e,n)=>{if("symbol"==typeof n)throw new d;const{options:r,returnTypeFunc:i}=function(e,t){return"function"==typeof e?{returnTypeFunc:e,options:t||{}}:{options:e||{}}}(t,o);c(e,n,r,i)};var t,o}var u;!function(e){e[e.Edit=2]="Edit",e[e.Game=4]="Game",e[e.All=6]="All"}(u||(u={}));class p extends t.Component{constructor(){super(...arguments),this.src="",this.loop=!1,this.autoplay=!0,this.muted=!0,this.volume=1,this.playbackRate=1,this.anchorX=.5,this.anchorY=.5,this.crossOrigin="anonymous",this.playsInline=!0,this.completed=!1}init(e){e&&_extends(this,e)}play(){if(this.videoElement)try{const e=this.videoElement.play();if(e&&"function"==typeof e.catch)return e.catch(e=>{console.warn("[Video] play() rejected:",e)})}catch(e){console.warn("[Video] play() threw:",e)}}pause(){if(this.videoElement)try{this.videoElement.pause()}catch(e){}}setCurrentTime(e){if(this.videoElement)try{this.videoElement.currentTime=Math.max(0,e)}catch(e){}}snapshot(e){var t,o,n,r;const i=this.videoElement;if(!i||i.readyState<2)return null;const a=null!==(t=null==e?void 0:e.width)&&void 0!==t?t:i.videoWidth,d=null!==(o=null==e?void 0:e.height)&&void 0!==o?o:i.videoHeight;if(a<=0||d<=0)return null;try{const t=document.createElement("canvas");t.width=a,t.height=d;const o=t.getContext("2d");return o?(o.drawImage(i,null!==(n=null==e?void 0:e.x)&&void 0!==n?n:0,null!==(r=null==e?void 0:e.y)&&void 0!==r?r:0,a,d,0,0,a,d),t):null}catch(e){return null}}}function h(e){if(!e)return"";if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")||e.startsWith("/"))return e;if(/\.(mp4|webm|ogv|m4v|mov)(\?|#|$)/i.test(e))return e;try{const o=t.resource.resourcesMap||t.resource.resources;if(o&&o[e]){const t=o[e],n=t.src||t.data||{},r=n.video||n.audio||n.image||n;if(null==r?void 0:r.url)return r.url;if(null==r?void 0:r.src)return r.src}}catch(e){}return e}p.componentName="Video",r([l("string"),i("design:type",String)],p.prototype,"src",void 0),r([l("boolean"),i("design:type",Boolean)],p.prototype,"loop",void 0),r([l("boolean"),i("design:type",Boolean)],p.prototype,"autoplay",void 0),r([l("boolean"),i("design:type",Boolean)],p.prototype,"muted",void 0),r([l("number"),i("design:type",Number)],p.prototype,"volume",void 0),r([l("number"),i("design:type",Number)],p.prototype,"playbackRate",void 0),r([l("number"),i("design:type",Number)],p.prototype,"anchorX",void 0),r([l("number"),i("design:type",Number)],p.prototype,"anchorY",void 0),r([l("boolean"),i("design:type",Boolean)],p.prototype,"playsInline",void 0);let v=class extends o.Renderer{constructor(){super(...arguments),this.name="Video",this.records={}}init(){this.renderSystem=this.game.getSystem(o.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){var t,o,r,i,a;const d=this.records[e.id];if(!d)return;const s=d.component,c=d.video;if(d.ctx&&c.readyState>=2&&c.videoWidth>0&&c.videoHeight>0){if(!d.resizedToVideo){d.canvas.width=c.videoWidth,d.canvas.height=c.videoHeight,d.resizedToVideo=!0;const e=d.texture,t=n.Texture.from(d.canvas);if(d.texture=t,d.sprite.texture=t,e&&e!==t)try{e.destroy(!1)}catch(e){}}try{d.ctx.drawImage(c,0,0,d.canvas.width,d.canvas.height);const e=null===(t=d.texture)||void 0===t?void 0:t.source;e&&("function"==typeof e.update?e.update():e.dirty=!0)}catch(e){}}const l=null!==(o=s.width)&&void 0!==o?o:c.videoWidth||256,u=null!==(r=s.height)&&void 0!==r?r:c.videoHeight||256;d.sprite.width=l,d.sprite.height=u,d.sprite.anchor.set(null!==(i=s.anchorX)&&void 0!==i?i:.5,null!==(a=s.anchorY)&&void 0!==a?a:.5)}componentChanged(e){var o,n,r,i,d;return a(this,void 0,void 0,function*(){if("Video"!==e.componentName)return;const a=e.component,s=e.gameObject.id;if(e.type===t.OBSERVER_TYPE.ADD){const t=this.createRecord(a);this.records[s]=t;const o=this.containerManager.getContainer(s);o&&o.addChildAt(t.sprite,0),this.attachEndedHandler(t,e.gameObject),this.startLoad(t)}else if(e.type===t.OBSERVER_TYPE.CHANGE){const t=this.records[s];if(!t)return;const d=null===(n=null===(o=e.prop)||void 0===o?void 0:o.prop)||void 0===n?void 0:n[0];if("src"===d){try{t.video.pause()}catch(e){}const e=h(a.src);t.video.src=e,t.component=a,a.videoElement=t.video,a.completed=!1,t.resizedToVideo=!1;try{t.video.load()}catch(e){}!1!==a.autoplay&&this.tryPlay(t.video)}else"loop"===d?t.video.loop=!!a.loop:"muted"===d?t.video.muted=!!a.muted:"volume"===d?t.video.volume=Math.max(0,Math.min(1,null!==(r=a.volume)&&void 0!==r?r:1)):"playbackRate"===d&&(t.video.playbackRate=null!==(i=a.playbackRate)&&void 0!==i?i:1)}else if(e.type===t.OBSERVER_TYPE.REMOVE){const e=this.records[s];if(!e)return;this.tearDown(e);const t=null===(d=this.containerManager)||void 0===d?void 0:d.getContainer(s);t&&t.removeChild(e.sprite);try{e.sprite.destroy({children:!0})}catch(e){}delete this.records[s]}})}createRecord(e){var t,o,r,i,a,d,s;const c=document.createElement("video");c.crossOrigin=null!==(t=e.crossOrigin)&&void 0!==t?t:"anonymous",c.loop=!!e.loop,c.muted=!1!==e.muted,c.volume=Math.max(0,Math.min(1,null!==(o=e.volume)&&void 0!==o?o:1)),c.playbackRate=null!==(r=e.playbackRate)&&void 0!==r?r:1,c.playsInline=!1!==e.playsInline,c["webkit-playsinline"]="",c.preload="auto",e.videoElement=c;const l=document.createElement("canvas");l.width=null!==(i=e.width)&&void 0!==i?i:256,l.height=null!==(a=e.height)&&void 0!==a?a:256;const u=l.getContext("2d"),p=n.Texture.from("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),h=new n.Sprite(p);return h.anchor.set(null!==(d=e.anchorX)&&void 0!==d?d:.5,null!==(s=e.anchorY)&&void 0!==s?s:.5),{video:c,canvas:l,ctx:u,texture:p,sprite:h,component:e,endedHandler:null,resizedToVideo:!1}}attachEndedHandler(e,t){const o=()=>{e.component.completed=!0;try{e.video.dispatchEvent(new Event("eva-video-complete"))}catch(e){}};e.video.addEventListener("ended",o),e.endedHandler=o}startLoad(e){const t=h(e.component.src);e.video.src=t;try{e.video.load()}catch(e){}if(!1!==e.component.autoplay){const t=()=>{e.video.removeEventListener("canplay",t),e.video.removeEventListener("loadeddata",t),this.tryPlay(e.video)};e.video.readyState>=2?this.tryPlay(e.video):(e.video.addEventListener("canplay",t),e.video.addEventListener("loadeddata",t))}}tryPlay(e){try{const t=e.play();t&&"function"==typeof t.catch&&t.catch(e=>{console.warn("[Video] autoplay rejected:",(null==e?void 0:e.message)||e)})}catch(e){console.warn("[Video] autoplay threw:",e)}}tearDown(e){try{e.video.pause()}catch(e){}if(e.endedHandler)try{e.video.removeEventListener("ended",e.endedHandler)}catch(e){}try{e.video.removeAttribute("src"),e.video.load()}catch(e){}if(e.texture){try{e.texture.destroy(!1)}catch(e){}e.texture=null}}destroy(){var e;for(const t in this.records){const o=parseInt(t),n=this.records[o];this.tearDown(n);const r=null===(e=this.containerManager)||void 0===e?void 0:e.getContainer(o);r&&r.removeChild(n.sprite);try{n.sprite.destroy({children:!0})}catch(e){}delete this.records[o]}}};v.systemName="Video",v=r([t.decorators.componentObserver({Video:[{prop:["src"],deep:!1},{prop:["loop"],deep:!1},{prop:["muted"],deep:!1},{prop:["volume"],deep:!1},{prop:["playbackRate"],deep:!1}]})],v);var y=v;return e.Video=p,e.VideoSystem=y,Object.defineProperty(e,"__esModule",{value:!0}),e}({},EVA,EVA.plugin.renderer,PIXI);globalThis.EVA.plugin.renderer.video=globalThis.EVA.plugin.renderer.video||_EVA_IIFE_video;
|
|
1
|
+
function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)({}).hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},_extends.apply(null,arguments)}var globalThis="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();globalThis.EVA=globalThis.EVA||{},globalThis.EVA.plugin=globalThis.EVA.plugin||{},globalThis.EVA.plugin.renderer=globalThis.EVA.plugin.renderer||{};var _EVA_IIFE_video=function(e,t,o,n){"use strict";var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])},r(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}var a=function(){return a=Object.assign||function(e){for(var t,o=1,n=arguments.length;o<n;o++)for(var r in t=arguments[o])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},a.apply(this,arguments)};function s(e,t,o,n){var r,i=arguments.length,a=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,o,n);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,o,a):r(t,o))||a);return i>3&&a&&Object.defineProperty(t,o,a),a}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,t,o,n){return new(o||(o=Promise))(function(r,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,s)}c((n=n.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;var l=function(e){function t(){var t=this.constructor,o=e.call(this,"Symbol keys are not supported yet!")||this;return Object.setPrototypeOf(o,t.prototype),o}return i(t,e),t}(Error);!function(e){function t(){var t=this.constructor,o=e.call(this,"getProperties is not a function!")||this;return Object.setPrototypeOf(o,t.prototype),o}i(t,e)}(Error);var u,p="IDE_PROPERTY_METADATA";function h(e,t,o,n){var r=Reflect.getMetadata("design:type",e,t),i=r===Array,s=function(e){return e===String?"string":e===Number?"number":e===Boolean?"boolean":"unknown"}(r);if("unknown"!==s&&(r=s),n){var c=n();Array.isArray(c)?(i=!0,r=c[0]):r=c}var d=Reflect.getMetadata(p,e.constructor)||{},l=d[t]||{},u=a(a(a({},l),{type:r,isArray:i}),o);d[t]=u,Reflect.defineMetadata(p,d,e.constructor),u.isArray,function(e,t,o){var n=e.constructor,r=n.IDEProps||{};r[t]=a(a({key:t},r[t]),o),n.IDEProps=r}(e,t,function(e,t){var o={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(o[n[r]]=e[n[r]])}return o}(u,["isArray"]))}function v(e){return t={type:e},function(e,n){if("symbol"==typeof n)throw new l;var r=function(e,t){return"function"==typeof e?{returnTypeFunc:e,options:t||{}}:{options:e||{}}}(t,o);h(e,n,r.options,r.returnTypeFunc)};var t,o}!function(e){e[e.Edit=2]="Edit",e[e.Game=4]="Game",e[e.All=6]="All"}(u||(u={}));class y extends t.Component{constructor(){super(...arguments),this.src="",this.loop=!1,this.autoplay=!0,this.muted=!0,this.volume=1,this.playbackRate=1,this.anchorX=.5,this.anchorY=.5,this.crossOrigin="anonymous",this.playsInline=!0,this.completed=!1}init(e){e&&_extends(this,e)}play(){if(this.videoElement)try{const e=this.videoElement.play();if(e&&"function"==typeof e.catch)return e.catch(e=>{console.warn("[Video] play() rejected:",e)})}catch(e){console.warn("[Video] play() threw:",e)}}pause(){if(this.videoElement)try{this.videoElement.pause()}catch(e){}}setCurrentTime(e){if(this.videoElement)try{this.videoElement.currentTime=Math.max(0,e)}catch(e){}}snapshot(e){var t,o,n,r;const i=this.videoElement;if(!i||i.readyState<2)return null;const a=null!==(t=null==e?void 0:e.width)&&void 0!==t?t:i.videoWidth,s=null!==(o=null==e?void 0:e.height)&&void 0!==o?o:i.videoHeight;if(a<=0||s<=0)return null;try{const t=document.createElement("canvas");t.width=a,t.height=s;const o=t.getContext("2d");return o?(o.drawImage(i,null!==(n=null==e?void 0:e.x)&&void 0!==n?n:0,null!==(r=null==e?void 0:e.y)&&void 0!==r?r:0,a,s,0,0,a,s),t):null}catch(e){return null}}}function f(e){if(!e)return"";if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")||e.startsWith("/"))return e;if(/\.(mp4|webm|ogv|m4v|mov)(\?|#|$)/i.test(e))return e;try{const o=t.resource.resourcesMap||t.resource.resources;if(o&&o[e]){const t=o[e],n=t.src||t.data||{},r=n.video||n.audio||n.image||n;if(null==r?void 0:r.url)return r.url;if(null==r?void 0:r.src)return r.src}}catch(e){}return e}y.componentName="Video",s([v("string"),c("design:type",String)],y.prototype,"src",void 0),s([v("boolean"),c("design:type",Boolean)],y.prototype,"loop",void 0),s([v("boolean"),c("design:type",Boolean)],y.prototype,"autoplay",void 0),s([v("boolean"),c("design:type",Boolean)],y.prototype,"muted",void 0),s([v("number"),c("design:type",Number)],y.prototype,"volume",void 0),s([v("number"),c("design:type",Number)],y.prototype,"playbackRate",void 0),s([v("number"),c("design:type",Number)],y.prototype,"anchorX",void 0),s([v("number"),c("design:type",Number)],y.prototype,"anchorY",void 0),s([v("boolean"),c("design:type",Boolean)],y.prototype,"playsInline",void 0);let m=class extends o.Renderer{constructor(){super(...arguments),this.name="Video",this.records={}}init(){this.renderSystem=this.game.getSystem(o.RendererSystem),this.renderSystem.rendererManager.register(this)}rendererUpdate(e){var t,o,r,i,a;const s=this.records[e.id];if(!s)return;const c=s.component,d=s.video;if(s.ctx&&d.readyState>=2&&d.videoWidth>0&&d.videoHeight>0){if(!s.resizedToVideo){s.canvas.width=d.videoWidth,s.canvas.height=d.videoHeight,s.resizedToVideo=!0;const e=s.texture,t=n.Texture.from(s.canvas);if(s.texture=t,s.sprite.texture=t,e&&e!==t)try{e.destroy(!1)}catch(e){}}try{s.ctx.drawImage(d,0,0,s.canvas.width,s.canvas.height);const e=null===(t=s.texture)||void 0===t?void 0:t.source;e&&("function"==typeof e.update?e.update():e.dirty=!0)}catch(e){}}const l=null!==(o=c.width)&&void 0!==o?o:d.videoWidth||256,u=null!==(r=c.height)&&void 0!==r?r:d.videoHeight||256;s.sprite.width=l,s.sprite.height=u,s.sprite.anchor.set(null!==(i=c.anchorX)&&void 0!==i?i:.5,null!==(a=c.anchorY)&&void 0!==a?a:.5)}componentChanged(e){var o,n,r,i,a;return d(this,void 0,void 0,function*(){if("Video"!==e.componentName)return;const s=e.component,c=e.gameObject.id;if(e.type===t.OBSERVER_TYPE.ADD){const t=this.createRecord(s);this.records[c]=t;const o=this.containerManager.getContainer(c);o&&o.addChildAt(t.sprite,0),this.attachEndedHandler(t,e.gameObject),this.startLoad(t)}else if(e.type===t.OBSERVER_TYPE.CHANGE){const t=this.records[c];if(!t)return;const a=null===(n=null===(o=e.prop)||void 0===o?void 0:o.prop)||void 0===n?void 0:n[0];if("src"===a){try{t.video.pause()}catch(e){}const e=f(s.src);t.video.src=e,t.component=s,s.videoElement=t.video,s.completed=!1,t.resizedToVideo=!1;try{t.video.load()}catch(e){}!1!==s.autoplay&&this.tryPlay(t.video)}else"loop"===a?t.video.loop=!!s.loop:"muted"===a?t.video.muted=!!s.muted:"volume"===a?t.video.volume=Math.max(0,Math.min(1,null!==(r=s.volume)&&void 0!==r?r:1)):"playbackRate"===a&&(t.video.playbackRate=null!==(i=s.playbackRate)&&void 0!==i?i:1)}else if(e.type===t.OBSERVER_TYPE.REMOVE){const e=this.records[c];if(!e)return;this.tearDown(e);const t=null===(a=this.containerManager)||void 0===a?void 0:a.getContainer(c);t&&t.removeChild(e.sprite);try{e.sprite.destroy({children:!0})}catch(e){}delete this.records[c]}})}createRecord(e){var t,o,r,i,a,s,c;const d=document.createElement("video");d.crossOrigin=null!==(t=e.crossOrigin)&&void 0!==t?t:"anonymous",d.loop=!!e.loop,d.muted=!1!==e.muted,d.volume=Math.max(0,Math.min(1,null!==(o=e.volume)&&void 0!==o?o:1)),d.playbackRate=null!==(r=e.playbackRate)&&void 0!==r?r:1,d.playsInline=!1!==e.playsInline,d["webkit-playsinline"]="",d.preload="auto",e.videoElement=d;const l=document.createElement("canvas");l.width=null!==(i=e.width)&&void 0!==i?i:256,l.height=null!==(a=e.height)&&void 0!==a?a:256;const u=l.getContext("2d"),p=n.Texture.from("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),h=new n.Sprite(p);return h.anchor.set(null!==(s=e.anchorX)&&void 0!==s?s:.5,null!==(c=e.anchorY)&&void 0!==c?c:.5),{video:d,canvas:l,ctx:u,texture:p,sprite:h,component:e,endedHandler:null,resizedToVideo:!1}}attachEndedHandler(e,t){const o=()=>{e.component.completed=!0;try{e.video.dispatchEvent(new Event("eva-video-complete"))}catch(e){}};e.video.addEventListener("ended",o),e.endedHandler=o}startLoad(e){const t=f(e.component.src);e.video.src=t;try{e.video.load()}catch(e){}if(!1!==e.component.autoplay){const t=()=>{e.video.removeEventListener("canplay",t),e.video.removeEventListener("loadeddata",t),this.tryPlay(e.video)};e.video.readyState>=2?this.tryPlay(e.video):(e.video.addEventListener("canplay",t),e.video.addEventListener("loadeddata",t))}}tryPlay(e){try{const t=e.play();t&&"function"==typeof t.catch&&t.catch(e=>{console.warn("[Video] autoplay rejected:",(null==e?void 0:e.message)||e)})}catch(e){console.warn("[Video] autoplay threw:",e)}}tearDown(e){try{e.video.pause()}catch(e){}if(e.endedHandler)try{e.video.removeEventListener("ended",e.endedHandler)}catch(e){}try{e.video.removeAttribute("src"),e.video.load()}catch(e){}if(e.texture){try{e.texture.destroy(!1)}catch(e){}e.texture=null}}destroy(){var e;for(const t in this.records){const o=parseInt(t),n=this.records[o];this.tearDown(n);const r=null===(e=this.containerManager)||void 0===e?void 0:e.getContainer(o);r&&r.removeChild(n.sprite);try{n.sprite.destroy({children:!0})}catch(e){}delete this.records[o]}}};m.systemName="Video",m=s([t.decorators.componentObserver({Video:[{prop:["src"],deep:!1},{prop:["loop"],deep:!1},{prop:["muted"],deep:!1},{prop:["volume"],deep:!1},{prop:["playbackRate"],deep:!1}]})],m);var g=m;return e.Video=y,e.VideoSystem=g,Object.defineProperty(e,"__esModule",{value:!0}),e}({},EVA,EVA.plugin.renderer,PIXI);globalThis.EVA.plugin.renderer.video=globalThis.EVA.plugin.renderer.video||_EVA_IIFE_video;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eva/plugin-renderer-video",
|
|
3
|
-
"version": "2.1.0-beta.
|
|
3
|
+
"version": "2.1.0-beta.15",
|
|
4
4
|
"description": "@eva/plugin-renderer-video",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "dist/plugin-renderer-video.esm.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"homepage": "https://eva.js.org",
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@eva/inspector-decorator": "^2.0.0-beta.0",
|
|
23
|
-
"@eva/eva.js": "2.1.0-beta.
|
|
24
|
-
"@eva/plugin-renderer": "2.1.0-beta.
|
|
25
|
-
"pixi.js": "
|
|
23
|
+
"@eva/eva.js": "2.1.0-beta.15",
|
|
24
|
+
"@eva/plugin-renderer": "2.1.0-beta.15",
|
|
25
|
+
"pixi.js": "8.19.0"
|
|
26
26
|
}
|
|
27
27
|
}
|