growi-facade.ts 752 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { GrowiFacade, isServer } from '@growi/core';
  2. import deepmerge from 'ts-deepmerge';
  3. declare global {
  4. // eslint-disable-next-line vars-on-top, no-var
  5. var growiFacade: GrowiFacade;
  6. }
  7. export const initializeGrowiFacade = (): void => {
  8. if (isServer()) {
  9. return;
  10. }
  11. if (window.growiFacade == null) {
  12. window.growiFacade = {};
  13. }
  14. };
  15. export const getGrowiFacade = (): GrowiFacade => {
  16. if (isServer()) {
  17. return {};
  18. }
  19. initializeGrowiFacade();
  20. return window.growiFacade;
  21. };
  22. export const registerGrowiFacade = (addedFacade: GrowiFacade): void => {
  23. if (isServer()) {
  24. throw new Error('This method is available only in client.');
  25. }
  26. window.growiFacade = deepmerge(
  27. getGrowiFacade(),
  28. addedFacade,
  29. );
  30. };