@dooboostore/dom-render
Version:
html view template engine
182 lines (181 loc) • 7.51 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 PromiseSwitch_exports = {};
__export(PromiseSwitch_exports, {
PromiseSwitch: () => PromiseSwitch,
default: () => PromiseSwitch_default
});
module.exports = __toCommonJS(PromiseSwitch_exports);
var import_ComponentBase = require("../ComponentBase");
var import_DomRender = require("../../DomRender");
var import_RawSet = require("../../rawsets/RawSet");
var import_core = require("@dooboostore/core");
var import_core2 = require("@dooboostore/core");
var PromiseSwitch;
((_PromiseSwitch) => {
_PromiseSwitch.selector = "dr-promise-switch";
class ChildBase extends import_ComponentBase.ComponentBase {
constructor() {
super(...arguments);
this.hidden = true;
}
}
class Default extends ChildBase {
}
_PromiseSwitch.Default = Default;
class Pending extends ChildBase {
// onChangeAttrRender(name: string, value: any, other: OtherData) {
// super.onChangeAttrRender(name, value, other);
// if (this.equalsAttributeName(name, 'defaultView')) {
// // console.log('--------------', value)
// if (value !== null) {
// this.hidden = false;
// } else {
// this.hidden = true;
// }
// // console.log('--------------', this.hidden)
// }
// }
}
_PromiseSwitch.Pending = Pending;
class Fulfilled extends ChildBase {
setData(data) {
this.data = data;
}
}
_PromiseSwitch.Fulfilled = Fulfilled;
class Rejected extends ChildBase {
setData(data) {
this.data = data;
}
}
_PromiseSwitch.Rejected = Rejected;
class PromiseSwitch2 extends import_ComponentBase.ComponentBase {
onCreatedThisChild(child, data) {
super.onCreatedThisChild(child, data);
this.childStateChange();
}
childStateChange() {
const defaults = this.getChildren(Default);
const pendings = this.getChildren(Pending);
const fulfilleds = this.getChildren(Fulfilled);
const rejecteds = this.getChildren(Rejected);
const full = [...fulfilleds, ...rejecteds, ...pendings, ...defaults];
if (this.promiseState === void 0) {
this.state = void 0;
full.filter((it) => !it.hidden).forEach((it) => it.hidden = true);
defaults.filter((it) => it.hidden).forEach((it) => it.hidden = false);
pendings.filter((it) => it.getAttribute("defaultView") && it.hidden).forEach((it) => it.hidden = false);
} else if (this.promiseState.status === "pending") {
this.state = "pending";
full.filter((it) => !it.hidden).forEach((it) => it.hidden = true);
pendings.filter((it) => it.hidden).forEach((it) => it.hidden = false);
} else if (this.promiseState.status === "fulfilled") {
this.state = "fulfilled";
const value = this.promiseState.value;
full.filter((it) => !it.hidden).forEach((it) => it.hidden = true);
fulfilleds.forEach((it) => {
it.setData(value);
});
fulfilleds.filter((it) => it.hidden).forEach((it) => it.hidden = false);
} else if (this.promiseState.status === "rejected") {
this.state = "rejected";
const value = this.promiseState.reason;
full.filter((it) => !it.hidden).forEach((it) => it.hidden = true);
rejecteds.forEach((it) => {
it.setData(value);
});
rejecteds.filter((it) => it.hidden).forEach((it) => it.hidden = false);
}
return this.state;
}
onChangeAttrRender(name, value, other) {
super.onChangeAttrRender(name, value, other);
if (this.equalsAttributeName(name, "data") && value) {
this.promiseState = void 0;
this.state = void 0;
this.promiseState = import_core2.Promises.Result.wrap(typeof value === "function" ? value() : value);
this.getAttribute("change")?.({ status: "pending" });
this.childStateChange();
this.promiseState.then((data) => {
this.childStateChange();
this.getAttribute("change")?.({ status: "fulfilled", data });
return data;
}).catch((e) => {
this.childStateChange();
this.getAttribute("change")?.({ status: "rejected", data: e });
throw e;
}).finally(() => {
this.getAttribute("change")?.({ status: "finally" });
});
} else if (this.equalsAttributeName(name, "data") && import_core.ValidUtils.isNullOrUndefined(value)) {
this.promiseState = void 0;
this.childStateChange();
}
}
}
_PromiseSwitch.PromiseSwitch = PromiseSwitch2;
})(PromiseSwitch || (PromiseSwitch = {}));
var PromiseSwitch_default = {
promiseDefault: (config) => {
return import_RawSet.RawSet.createComponentTargetElement({
name: `${PromiseSwitch.selector}-default`,
template: '<div dr-if="!@this@.hidden" dr-option-strip="true">#innerHTML#</div>',
objFactory: (e, o, r2, counstructorParam) => {
return import_DomRender.DomRender.run({ rootObject: new PromiseSwitch.Default(...counstructorParam), config });
}
});
},
promisePending: (config) => {
return import_RawSet.RawSet.createComponentTargetElement({
name: `${PromiseSwitch.selector}-pending`,
template: '<div dr-if="!@this@.hidden" dr-option-strip="true">#innerHTML#</div>',
objFactory: (e, o, r2, counstructorParam) => {
return import_DomRender.DomRender.run({ rootObject: new PromiseSwitch.Pending(...counstructorParam), config });
}
});
},
promiseFulfilled: (config) => {
return import_RawSet.RawSet.createComponentTargetElement({
name: `${PromiseSwitch.selector}-fulfilled`,
template: '<div dr-if="!@this@.hidden" dr-option-strip="true">#innerHTML#</div>',
objFactory: (e, o, r2, counstructorParam) => {
return import_DomRender.DomRender.run({ rootObject: new PromiseSwitch.Fulfilled(...counstructorParam), config });
}
});
},
promiseRejected: (config) => {
return import_RawSet.RawSet.createComponentTargetElement({
name: `${PromiseSwitch.selector}-rejected`,
template: '<div dr-if="!@this@.hidden" dr-option-strip="true">#innerHTML#</div>',
objFactory: (e, o, r2, counstructorParam) => {
return import_DomRender.DomRender.run({ rootObject: new PromiseSwitch.Rejected(...counstructorParam), config });
}
});
},
promiseSwitch: (config) => {
return import_RawSet.RawSet.createComponentTargetElement({
name: `${PromiseSwitch.selector}`,
template: "#innerHTML#",
objFactory: (e, o, r2, counstructorParam) => {
return import_DomRender.DomRender.run({ rootObject: new PromiseSwitch.PromiseSwitch(...counstructorParam), config });
}
});
}
};
//# sourceMappingURL=PromiseSwitch.js.map