index.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import Vue from 'vue';
  3. import VanNotify from './Notify';
  4. import { RED, WHITE } from '../utils/color';
  5. import { isObj, isServer } from '../utils';
  6. import { mount } from '../utils/functional';
  7. var timer;
  8. var instance;
  9. function parseOptions(message) {
  10. return isObj(message) ? message : {
  11. message: message
  12. };
  13. }
  14. function Notify(options) {
  15. /* istanbul ignore if */
  16. if (isServer) {
  17. return;
  18. }
  19. if (!instance) {
  20. instance = mount(VanNotify);
  21. }
  22. options = _extends({}, Notify.currentOptions, parseOptions(options));
  23. _extends(instance, options);
  24. clearTimeout(timer);
  25. if (options.duration && options.duration > 0) {
  26. timer = setTimeout(Notify.clear, options.duration);
  27. }
  28. return instance;
  29. }
  30. function defaultOptions() {
  31. return {
  32. value: true,
  33. message: '',
  34. color: WHITE,
  35. background: RED,
  36. duration: 3000,
  37. className: ''
  38. };
  39. }
  40. Notify.clear = function () {
  41. if (instance) {
  42. instance.value = false;
  43. }
  44. };
  45. Notify.currentOptions = defaultOptions();
  46. Notify.setDefaultOptions = function (options) {
  47. _extends(Notify.currentOptions, options);
  48. };
  49. Notify.resetDefaultOptions = function () {
  50. Notify.currentOptions = defaultOptions();
  51. };
  52. Notify.install = function () {
  53. Vue.use(VanNotify);
  54. };
  55. Vue.prototype.$notify = Notify;
  56. export default Notify;