GrowiPluginsActivator.client.tsx 992 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { useEffect } from 'react';
  2. import { initializeGrowiFacade, registerGrowiFacade } from '../utils/growi-facade-utils.client';
  3. declare global {
  4. // eslint-disable-next-line vars-on-top, no-var
  5. var pluginActivators: {
  6. [key: string]: {
  7. activate: () => void,
  8. deactivate: () => void,
  9. },
  10. };
  11. }
  12. async function activateAll(): Promise<void> {
  13. initializeGrowiFacade();
  14. // register renderer options to facade
  15. const { generateViewOptions, generatePreviewOptions } = await import('~/client/services/renderer/renderer');
  16. registerGrowiFacade({
  17. markdownRenderer: {
  18. optionsGenerators: {
  19. generateViewOptions,
  20. generatePreviewOptions,
  21. },
  22. },
  23. });
  24. if (!('pluginActivators' in window)) {
  25. return;
  26. }
  27. Object.entries(pluginActivators).forEach(([, activator]) => {
  28. activator.activate();
  29. });
  30. }
  31. export const GrowiPluginsActivator = (): JSX.Element => {
  32. useEffect(() => {
  33. activateAll();
  34. }, []);
  35. return <></>;
  36. };