scrivito
Version:
Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.
50 lines (39 loc) • 1.23 kB
text/typescript
import { EditingConfig } from 'scrivito_sdk/app_support/editing_config';
import { onReset } from 'scrivito_sdk/common';
import { StateContainer, createStateContainer } from 'scrivito_sdk/state';
class EditingConfigStore {
private updateCounter: StateContainer<number>;
private store: { [className: string]: EditingConfig };
constructor() {
this.store = {};
this.updateCounter = createStateContainer();
}
set(key: string, value: EditingConfig): void {
this.store[key] = value;
this.incrementUpdateCounter();
}
get(key: string): EditingConfig | undefined {
this.updateCounter.get();
return this.store[key];
}
clear(): void {
this.store = {};
this.incrementUpdateCounter();
}
private incrementUpdateCounter() {
this.updateCounter.set((this.updateCounter.get() || 0) + 1);
}
}
const editingConfigStore = new EditingConfigStore();
export function setEditingConfigFor(
className: string,
editingConfig: EditingConfig
): void {
editingConfigStore.set(className, editingConfig);
}
export function getEditingConfigFor(
className: string
): EditingConfig | undefined {
return editingConfigStore.get(className);
}
onReset(() => editingConfigStore.clear());