growi-facade.ts 655 B

123456789101112131415161718192021222324252627
  1. import { GrowiFacade, isServer } from '@growi/core';
  2. import deepmerge from 'ts-deepmerge';
  3. import { CustomWindow } from '~/interfaces/global';
  4. export const getGrowiFacade = (): GrowiFacade => {
  5. if (isServer()) {
  6. return {};
  7. }
  8. if ((window as CustomWindow).growiFacade == null) {
  9. (window as CustomWindow).growiFacade = {};
  10. }
  11. return (window as CustomWindow).growiFacade;
  12. };
  13. export const registerGrowiFacade = (addedFacade: GrowiFacade): void => {
  14. if (isServer()) {
  15. throw new Error('This method is available only in client.');
  16. }
  17. (window as CustomWindow).growiFacade = deepmerge(
  18. getGrowiFacade(),
  19. addedFacade,
  20. );
  21. };