plugins-context.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import type { VbenPluginsOptions } from './types';
  2. let globalPluginsOptions: null | VbenPluginsOptions = null;
  3. export function providePluginsOptions(options: VbenPluginsOptions) {
  4. if (!globalPluginsOptions) {
  5. globalPluginsOptions = options;
  6. return;
  7. }
  8. globalPluginsOptions = {
  9. ...globalPluginsOptions,
  10. ...options,
  11. form:
  12. globalPluginsOptions.form && options.form
  13. ? { ...globalPluginsOptions.form, ...options.form }
  14. : globalPluginsOptions.form || options.form,
  15. modal:
  16. globalPluginsOptions.modal && options.modal
  17. ? { ...globalPluginsOptions.modal, ...options.modal }
  18. : globalPluginsOptions.modal || options.modal,
  19. message:
  20. globalPluginsOptions.message && options.message
  21. ? { ...globalPluginsOptions.message, ...options.message }
  22. : globalPluginsOptions.message || options.message,
  23. components: {
  24. ...globalPluginsOptions.components,
  25. ...options.components,
  26. },
  27. };
  28. }
  29. export function injectPluginsOptions() {
  30. return globalPluginsOptions;
  31. }
  32. export function resetPluginsOptions() {
  33. globalPluginsOptions = null;
  34. }