166 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', { value: true });
 | |
| 
 | |
| var vue = require('vue');
 | |
| var message$2 = require('./message.js');
 | |
| var message$1 = require('./message2.js');
 | |
| var instance = require('./instance.js');
 | |
| var configProvider = require('../../config-provider/src/config-provider.js');
 | |
| var core = require('@vueuse/core');
 | |
| var types = require('../../../utils/types.js');
 | |
| var shared = require('@vue/shared');
 | |
| var error = require('../../../utils/error.js');
 | |
| 
 | |
| let seed = 1;
 | |
| const normalizeAppendTo = (normalized) => {
 | |
|   const appendTo = normalized.appendTo;
 | |
|   if (!appendTo) {
 | |
|     normalized.appendTo = document.body;
 | |
|   } else if (shared.isString(normalized.appendTo)) {
 | |
|     let appendTo2 = document.querySelector(normalized.appendTo);
 | |
|     if (!types.isElement(appendTo2)) {
 | |
|       appendTo2 = document.body;
 | |
|     }
 | |
|     normalized.appendTo = appendTo2;
 | |
|   }
 | |
| };
 | |
| const normalizePlacement = (normalized) => {
 | |
|   if (!normalized.placement && shared.isString(configProvider.messageConfig.placement) && configProvider.messageConfig.placement) {
 | |
|     normalized.placement = configProvider.messageConfig.placement;
 | |
|   }
 | |
|   if (!normalized.placement) {
 | |
|     normalized.placement = message$1.MESSAGE_DEFAULT_PLACEMENT;
 | |
|   }
 | |
|   if (!message$1.messagePlacement.includes(normalized.placement)) {
 | |
|     error.debugWarn("ElMessage", `Invalid placement: ${normalized.placement}. Falling back to '${message$1.MESSAGE_DEFAULT_PLACEMENT}'.`);
 | |
|     normalized.placement = message$1.MESSAGE_DEFAULT_PLACEMENT;
 | |
|   }
 | |
| };
 | |
| const normalizeOptions = (params) => {
 | |
|   const options = !params || shared.isString(params) || vue.isVNode(params) || shared.isFunction(params) ? { message: params } : params;
 | |
|   const normalized = {
 | |
|     ...message$1.messageDefaults,
 | |
|     ...options
 | |
|   };
 | |
|   normalizeAppendTo(normalized);
 | |
|   normalizePlacement(normalized);
 | |
|   if (types.isBoolean(configProvider.messageConfig.grouping) && !normalized.grouping) {
 | |
|     normalized.grouping = configProvider.messageConfig.grouping;
 | |
|   }
 | |
|   if (types.isNumber(configProvider.messageConfig.duration) && normalized.duration === 3e3) {
 | |
|     normalized.duration = configProvider.messageConfig.duration;
 | |
|   }
 | |
|   if (types.isNumber(configProvider.messageConfig.offset) && normalized.offset === 16) {
 | |
|     normalized.offset = configProvider.messageConfig.offset;
 | |
|   }
 | |
|   if (types.isBoolean(configProvider.messageConfig.showClose) && !normalized.showClose) {
 | |
|     normalized.showClose = configProvider.messageConfig.showClose;
 | |
|   }
 | |
|   if (types.isBoolean(configProvider.messageConfig.plain) && !normalized.plain) {
 | |
|     normalized.plain = configProvider.messageConfig.plain;
 | |
|   }
 | |
|   return normalized;
 | |
| };
 | |
| const closeMessage = (instance$1) => {
 | |
|   const placement = instance$1.props.placement || message$1.MESSAGE_DEFAULT_PLACEMENT;
 | |
|   const instances = instance.placementInstances[placement];
 | |
|   const idx = instances.indexOf(instance$1);
 | |
|   if (idx === -1)
 | |
|     return;
 | |
|   instances.splice(idx, 1);
 | |
|   const { handler } = instance$1;
 | |
|   handler.close();
 | |
| };
 | |
| const createMessage = ({ appendTo, ...options }, context) => {
 | |
|   const id = `message_${seed++}`;
 | |
|   const userOnClose = options.onClose;
 | |
|   const container = document.createElement("div");
 | |
|   const props = {
 | |
|     ...options,
 | |
|     id,
 | |
|     onClose: () => {
 | |
|       userOnClose == null ? void 0 : userOnClose();
 | |
|       closeMessage(instance);
 | |
|     },
 | |
|     onDestroy: () => {
 | |
|       vue.render(null, container);
 | |
|     }
 | |
|   };
 | |
|   const vnode = vue.createVNode(message$2["default"], props, shared.isFunction(props.message) || vue.isVNode(props.message) ? {
 | |
|     default: shared.isFunction(props.message) ? props.message : () => props.message
 | |
|   } : null);
 | |
|   vnode.appContext = context || message._context;
 | |
|   vue.render(vnode, container);
 | |
|   appendTo.appendChild(container.firstElementChild);
 | |
|   const vm = vnode.component;
 | |
|   const handler = {
 | |
|     close: () => {
 | |
|       vm.exposed.close();
 | |
|     }
 | |
|   };
 | |
|   const instance = {
 | |
|     id,
 | |
|     vnode,
 | |
|     vm,
 | |
|     handler,
 | |
|     props: vnode.component.props
 | |
|   };
 | |
|   return instance;
 | |
| };
 | |
| const message = (options = {}, context) => {
 | |
|   if (!core.isClient)
 | |
|     return { close: () => void 0 };
 | |
|   const normalized = normalizeOptions(options);
 | |
|   const instances = instance.getOrCreatePlacementInstances(normalized.placement || message$1.MESSAGE_DEFAULT_PLACEMENT);
 | |
|   if (normalized.grouping && instances.length) {
 | |
|     const instance2 = instances.find(({ vnode: vm }) => {
 | |
|       var _a;
 | |
|       return ((_a = vm.props) == null ? void 0 : _a.message) === normalized.message;
 | |
|     });
 | |
|     if (instance2) {
 | |
|       instance2.props.repeatNum += 1;
 | |
|       instance2.props.type = normalized.type;
 | |
|       return instance2.handler;
 | |
|     }
 | |
|   }
 | |
|   if (types.isNumber(configProvider.messageConfig.max) && instances.length >= configProvider.messageConfig.max) {
 | |
|     return { close: () => void 0 };
 | |
|   }
 | |
|   const instance$1 = createMessage(normalized, context);
 | |
|   instances.push(instance$1);
 | |
|   return instance$1.handler;
 | |
| };
 | |
| message$1.messageTypes.forEach((type) => {
 | |
|   message[type] = (options = {}, appContext) => {
 | |
|     const normalized = normalizeOptions(options);
 | |
|     return message({ ...normalized, type }, appContext);
 | |
|   };
 | |
| });
 | |
| function closeAll(type) {
 | |
|   for (const placement in instance.placementInstances) {
 | |
|     if (shared.hasOwn(instance.placementInstances, placement)) {
 | |
|       const instances = [...instance.placementInstances[placement]];
 | |
|       for (const instance of instances) {
 | |
|         if (!type || type === instance.props.type) {
 | |
|           instance.handler.close();
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| function closeAllByPlacement(placement) {
 | |
|   if (!instance.placementInstances[placement])
 | |
|     return;
 | |
|   const instances = [...instance.placementInstances[placement]];
 | |
|   instances.forEach((instance) => instance.handler.close());
 | |
| }
 | |
| message.closeAll = closeAll;
 | |
| message.closeAllByPlacement = closeAllByPlacement;
 | |
| message._context = null;
 | |
| 
 | |
| exports.closeAll = closeAll;
 | |
| exports.closeAllByPlacement = closeAllByPlacement;
 | |
| exports["default"] = message;
 | |
| //# sourceMappingURL=method.js.map
 |