UNPKG

@design.estate/dees-element

Version:

A library for creating custom elements extending the lit element class with additional functionalities.

44 lines 3.33 kB
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