{"version":3,"file":"messageList.mjs","sources":["../../src/message/messageList.tsx"],"sourcesContent":["import { computed, defineComponent, ref } from 'vue';\nimport { PLACEMENT_OFFSET } from './const';\nimport TMessage from './message';\nimport { MessageOptions } from './type';\nimport { usePrefixClass } from '../hooks/useConfig';\n\nexport const DEFAULT_Z_INDEX = 6000;\n\nconst getUniqueId = (() => {\n  let id = 0;\n  return () => {\n    id += 1;\n    return id;\n  };\n})();\n\nexport const MessageList = defineComponent({\n  name: 'XMessageList',\n  props: {\n    zIndex: {\n      type: Number,\n      default: 0,\n    },\n    placement: {\n      type: String,\n      default: '',\n    },\n  },\n  setup(props, { expose }) {\n    const COMPONENT_NAME = usePrefixClass('message__list');\n    const list = ref([]);\n    const messageList = ref([]);\n\n    const styles = computed(() => ({\n      ...PLACEMENT_OFFSET[props.placement],\n      zIndex: props.zIndex !== DEFAULT_Z_INDEX ? props.zIndex : DEFAULT_Z_INDEX,\n    }));\n\n    const add = (msg: MessageOptions): number => {\n      const mg = { ...msg, key: getUniqueId() };\n      list.value.push(mg);\n      return mg.key;\n    };\n\n    const remove = (index: number) => {\n      list.value.splice(index, 1);\n    };\n\n    const removeAll = () => {\n      list.value = [];\n    };\n\n    const getOffset = (val: string | number) => {\n      if (!val) return;\n      return isNaN(Number(val)) ? val : `${val}px`;\n    };\n\n    const msgStyles = (item: { offset: Array<string | number> }) => {\n      return (\n        item.offset && {\n          position: 'relative',\n          left: getOffset(item.offset[0]),\n          top: getOffset(item.offset[1]),\n        }\n      );\n    };\n\n    const getProps = (index: number, item: MessageOptions) => {\n      return {\n        ...item,\n        onCloseBtnClick: (e: any) => {\n          if (item.onCloseBtnClick) {\n            item.onCloseBtnClick(e);\n          }\n          return remove(index);\n        },\n        onDurationEnd: () => {\n          if (item.onDurationEnd) {\n            item.onDurationEnd();\n          }\n          return remove(index);\n        },\n      };\n    };\n\n    const addChild = (el: Element) => {\n      if (el) {\n        messageList.value.push(el);\n      }\n    };\n\n    expose({ add, removeAll, list, messageList });\n\n    return () => {\n      if (!list.value.length) return;\n\n      return (\n        <div class={COMPONENT_NAME.value} style={styles.value}>\n          {list.value.map((item, index) => (\n            <TMessage key={item.key} style={msgStyles(item)} ref={addChild} {...getProps(index, item)} />\n          ))}\n        </div>\n      );\n    };\n  },\n});\n\nexport default MessageList;\n"],"names":["id","name","props","zIndex","type","placement","setup","list","position","onCloseBtnClick","item","messageList","expose","add","removeAll","_createVNode","TMessage","_mergeProps"],"mappings":"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"}