UNPKG

@dooboostore/dom-render

Version:
182 lines (181 loc) 7.51 kB
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