@dooboostore/dom-render
Version:
html view template engine
87 lines (86 loc) • 4.52 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var DrTargetElementIsElement_exports = {};
__export(DrTargetElementIsElement_exports, {
DrTargetElementIsElement: () => DrTargetElementIsElement
});
module.exports = __toCommonJS(DrTargetElementIsElement_exports);
var import_RawSet = require("../rawsets/RawSet");
var import_OperatorExecuter = require("./OperatorExecuter");
var import_core = require("@dooboostore/core");
var import_rawsets = require("../rawsets");
class DrTargetElementIsElement extends import_OperatorExecuter.OperatorExecuter {
constructor(rawSet, render, returnContainer, elementSource, source, afterCallBack) {
source.operatorAround = void 0;
super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);
}
async execute(attr) {
if (!attr) {
return import_OperatorExecuter.ExecuteState.NO_EXECUTE;
}
const targetElement = this.source.config?.targetElements?.find((it) => it.name.toLowerCase() === attr.toLowerCase());
if (targetElement) {
if (this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement && this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement) {
this.rawSet.point.start.setAttribute("this-path", `this.${import_rawsets.DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY}.${this.rawSet.uuid}`);
this.rawSet.point.end.setAttribute("this-path", `this.${import_rawsets.DomRenderComponentMetaKey.DOMRENDER_COMPONENTS_KEY}.${this.rawSet.uuid}`);
}
const documentFragment = await targetElement.callBack(this.elementSource.element, this.source.obj, this.rawSet, this.elementSource.attrs, this.source.config);
if (documentFragment) {
const detectAction = this.elementSource.element.getAttribute(import_RawSet.RawSet.DR_DETECT_NAME);
this.rawSet.dataSet.fragment = documentFragment;
if (detectAction && this.rawSet.dataSet.render) {
this.rawSet.detect = {
action: () => {
const script = `var $component = this.__render.component; var $element = this.__render.element; var $innerHTML = this.__render.innerHTML; var $attribute = this.__render.attribute; ${detectAction} `;
import_core.ObjectUtils.Script.evaluate(script, Object.assign(this.source.obj, {
__render: this.rawSet.dataSet.render
}));
}
};
}
const noStrip = targetElement.noStrip;
let targetFragment = documentFragment;
if (noStrip) {
const fragment = this.source.config.window.document.createDocumentFragment();
Array.from(documentFragment.firstElementChild?.childNodes || []).forEach((child) => {
fragment.appendChild(child);
});
targetFragment = fragment;
}
const rr = import_RawSet.RawSet.checkPointCreates(targetFragment, this.source.obj, this.source.config);
if (noStrip) {
Array.from(targetFragment.childNodes || []).forEach((child) => {
documentFragment.firstElementChild?.appendChild(child);
});
}
this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);
this.returnContainer.raws.push(...rr);
this.afterCallBack.onElementInitCallBacks.push({
name: targetElement.name.toLowerCase(),
obj: this.source.obj,
targetElement,
creatorMetaData: targetElement.__creatorMetaData
});
targetElement?.complete?.(this.elementSource.element, this.source.obj, this.rawSet);
}
return import_OperatorExecuter.ExecuteState.EXECUTE;
}
return import_OperatorExecuter.ExecuteState.NO_EXECUTE;
}
}
//# sourceMappingURL=DrTargetElementIsElement.js.map