@virtualstate/examples
Version:
54 lines • 1.61 kB
JavaScript
import { DoneSymbol } from "./source.interface.js";
export const SourceURLSymbol = Symbol("Source URL");
export const SourceInterfaceURLSymbol = Symbol("SourceInterface URL");
export const SourceInterfaceSymbol = Symbol("Source Interface");
export const SourceSymbol = Symbol("Source");
export const StateSymbol = Symbol("State");
export { DoneSymbol };
export function isStateVNode(value) {
return value?.reference === StateSymbol;
}
function createState(source) {
return {
reference: StateSymbol,
source
};
}
export async function* Transform(context, container) {
// console.log({
// context,
// state: container?.source,
// });
if (!container) {
// console.log("Yielding!");
return yield createState(container?.source ?? {
currentThing: 1,
step: "default state",
updatedAt: Date.now()
});
}
const { source: state } = container;
const timeSince = Date.now() - container.source.updatedAt;
if (timeSince > 1000) {
yield createState({
currentThing: state.currentThing + 1,
step: "time since changed past 1000",
updatedAt: Date.now()
});
await new Promise(resolve => setTimeout(resolve, 800));
}
if (state.currentThing > 3) {
yield createState({
...state,
step: "done",
[DoneSymbol]: true
});
}
//
// console.log({
// context,
// state: container?.source,
// });
// console.log("Done!");
}
//# sourceMappingURL=source.transform.js.map