68 lines
3.0 KiB
JavaScript
68 lines
3.0 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$dom$DOMPipe = function(global, require, module, exports) {
|
|
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
|
|
var CanvasObserver = require("module$node_modules$pixi_DOT_js$lib$dom$CanvasObserver");
|
|
"use strict";
|
|
class DOMPipe {
|
|
constructor(renderer) {
|
|
this._attachedDomElements = [];
|
|
this._renderer = renderer;
|
|
this._renderer.runners.postrender.add(this);
|
|
this._renderer.runners.init.add(this);
|
|
this._domElement = document.createElement("div");
|
|
this._domElement.style.position = "absolute";
|
|
this._domElement.style.top = "0";
|
|
this._domElement.style.left = "0";
|
|
this._domElement.style.pointerEvents = "none";
|
|
this._domElement.style.zIndex = "1000";
|
|
}
|
|
init() {
|
|
this._canvasObserver = new CanvasObserver.CanvasObserver({domElement:this._domElement, renderer:this._renderer});
|
|
}
|
|
addRenderable(domContainer, _instructionSet) {
|
|
this._attachedDomElements.includes(domContainer) || this._attachedDomElements.push(domContainer);
|
|
}
|
|
updateRenderable(_domContainer) {
|
|
}
|
|
validateRenderable(_domContainer) {
|
|
return !0;
|
|
}
|
|
postrender() {
|
|
const attachedDomElements = this._attachedDomElements;
|
|
if (0 === attachedDomElements.length) {
|
|
this._domElement.remove();
|
|
} else {
|
|
this._canvasObserver.ensureAttached();
|
|
for (let i = 0; i < attachedDomElements.length; i++) {
|
|
const domContainer = attachedDomElements[i], element = domContainer.element;
|
|
if (!domContainer.parent || 7 > domContainer.globalDisplayStatus) {
|
|
element?.remove(), attachedDomElements.splice(i, 1), i--;
|
|
} else {
|
|
this._domElement.contains(element) || (element.style.position = "absolute", element.style.pointerEvents = "auto", this._domElement.appendChild(element));
|
|
const wt = domContainer.worldTransform;
|
|
var anchor = domContainer._anchor;
|
|
const ax = domContainer.width * anchor.x;
|
|
anchor = domContainer.height * anchor.y;
|
|
element.style.transformOrigin = `${ax}px ${anchor}px`;
|
|
element.style.transform = `matrix(${wt.a}, ${wt.b}, ${wt.c}, ${wt.d}, ${wt.tx - ax}, ${wt.ty - anchor})`;
|
|
element.style.opacity = domContainer.groupAlpha.toString();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
destroy() {
|
|
this._renderer.runners.postrender.remove(this);
|
|
for (let i = 0; i < this._attachedDomElements.length; i++) {
|
|
this._attachedDomElements[i].element?.remove();
|
|
}
|
|
this._attachedDomElements.length = 0;
|
|
this._domElement.remove();
|
|
this._canvasObserver.destroy();
|
|
this._renderer = null;
|
|
}
|
|
}
|
|
DOMPipe.extension = {type:[global.ExtensionType.WebGLPipes, global.ExtensionType.WebGPUPipes, global.ExtensionType.CanvasPipes], name:"dom"};
|
|
exports.DOMPipe = DOMPipe;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$dom$DOMPipe.js.map
|