import { html, render, directive } from 'lit-html';
// Directive for Async call
const resolvePromise = directive((promise) => (part: any) => {
part.setValue("Waiting for promise to resolve....");
Promise.resolve(promise).then(
(resolvedValue) => {
part.setValue(resolvedValue);
part.commit();
}
);
});
const waitForIt = new Promise((resolve) => {
setTimeout(() => {
resolve("Promise is resolved.");
}, 3000);
});
const helloTemplate = html`
${resolvePromise (waitForIt)}
`
render(helloTemplate, document.getElementById('part1'));
// Directive for handdling state
const stateMap = new WeakMap();
const statefulDirective = directive(() => (part: any) => {
let myState = stateMap.get(part);
const object1 = {};
if (myState === undefined) {
// Initialize state for this location
myState = {};
stateMap.set(object1, 'state with weakMap');
part.setValue(stateMap.get(object1));
}
});
const helloTemplate1 = html`${statefulDirective ()}
`
render(helloTemplate1, document.getElementById('part2'));