UNPKG

piral-ng

Version:

Plugin for integrating Angular components in Piral.

38 lines 1.42 kB
import { BehaviorSubject } from 'rxjs'; import { enqueue } from './queue'; import { defineModule } from './module'; import { bootstrap, prepareBootstrap } from './bootstrap'; import { NgExtension } from '../common'; export function createConverter(_ = {}) { const registry = new Map(); const convert = (component) => ({ mount(el, props, ctx, locals) { locals.active = true; if (!locals.props) { locals.props = new BehaviorSubject(props); } if (!locals.queued) { locals.queued = Promise.resolve(); } locals.queued = locals.queued.then(() => enqueue(async () => { if (!registry.has(component)) { registry.set(component, await prepareBootstrap(component, props.piral)); } if (locals.active) { return await bootstrap(registry.get(component), el, locals.props, ctx); } })); }, update(el, props, ctx, locals) { locals.props.next(props); }, unmount(el, locals) { locals.active = false; locals.queued = locals.queued.then((dispose) => dispose && enqueue(dispose)); }, }); convert.defineModule = defineModule; convert.Extension = NgExtension; return convert; } //# sourceMappingURL=converter.js.map