@visactor/vrender-core
Version:
```typescript import { xxx } from '@visactor/vrender-core'; ```
30 lines (28 loc) • 905 B
JavaScript
function isRendererFactory(entry) {
return "function" == typeof entry;
}
export class RendererRegistry {
constructor() {
this.entries = new Map, this.cache = new Map;
}
register(key, renderer) {
this.entries.set(key, renderer), this.cache.delete(key);
}
unregister(key) {
this.entries.delete(key), this.cache.delete(key);
}
get(key) {
if (this.cache.has(key)) return this.cache.get(key);
const entry = this.entries.get(key);
if (!entry) return;
const renderer = isRendererFactory(entry) ? entry() : entry;
return this.cache.set(key, renderer), renderer;
}
getAll() {
return Array.from(this.entries.keys()).map((key => this.get(key))).filter((renderer => !!renderer));
}
clear() {
this.entries.clear(), this.cache.clear();
}
}
//# sourceMappingURL=renderer-registry.js.map