@design.estate/dees-element
Version:
A library for creating custom elements extending the lit element class with additional functionalities.
44 lines • 3.33 kB
JavaScript
import { noChange } from 'lit';
import { AsyncDirective, directive } from 'lit/async-directive.js';
class ResolveDirective extends AsyncDirective {
constructor() {
super(...arguments);
this.hasPromiseSettled = false;
}
render(promise) {
if (this.promise !== promise) {
this.promise = promise;
if (this.isConnected) {
this.handlePromise(promise);
}
}
return noChange;
}
handlePromise(promise) {
this.hasPromiseSettled = false;
promise.then((value) => {
if (this.promise === promise && !this.hasPromiseSettled) {
this.setValue(value);
this.hasPromiseSettled = true;
}
}).catch((error) => {
if (this.promise === promise && !this.hasPromiseSettled) {
this.setValue(error);
this.hasPromiseSettled = true;
}
});
}
disconnected() {
this.hasPromiseSettled = true; // prevent setting value if the promise settles after disconnection
}
reconnected() {
if (!this.hasPromiseSettled) {
this.handlePromise(this.promise);
}
}
}
export const resolve = directive(ResolveDirective);
export const resolveExec = (funcArg) => {
return resolve(funcArg());
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1lbGVtZW50LmNsYXNzZXMucmVzb2x2ZWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RlZXMtZWxlbWVudC5jbGFzc2VzLnJlc29sdmVkaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRSxNQUFNLGdCQUFpQixTQUFRLGNBQWM7SUFBN0M7O1FBRUUsc0JBQWlCLEdBQVksS0FBSyxDQUFDO0lBdUNyQyxDQUFDO0lBckNDLE1BQU0sQ0FBQyxPQUF5QjtRQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFFdkIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQXlCO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxDQUFDLG1FQUFtRTtJQUNwRyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFRLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQWdELEVBQUUsRUFBRTtJQUM5RSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQSJ9