UNPKG

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.

41 lines (30 loc) 1.08 kB
import { createStateContainer } from 'scrivito_sdk/state'; import { MenuBuilder, MenuPatch } from 'scrivito_sdk/ui_interface'; import { MenuHandlerBuilder } from './menu/menu_handler_builder'; import { MenuPatchBuilder } from './menu/menu_patch_builder'; import { getMenuCallbacks } from './menu/menu_registry'; const counterState = createStateContainer<number>(); export function getMenuPatch(): MenuPatch { // Make `getMenuPatch`'s state depend on the counter getCounter(); const builder = new MenuPatchBuilder(); evaluateCallbacks(builder); return builder.getPatch(); } export function getMenuHandler(id: string): (() => void) | undefined { const builder = new MenuHandlerBuilder(id); evaluateCallbacks(builder); return builder.getHandler(); } /** @public */ export function updateMenuExtensions(): void { counterState.set((getCounter() || 0) + 1); } function evaluateCallbacks(builder: MenuBuilder) { getMenuCallbacks().forEach((menuCallback) => menuCallback.call(null, builder) ); } function getCounter() { return counterState.get(); }