{"version":3,"file":"notification-list.mjs","sources":["../../../components/notification/notification-list.tsx"],"sourcesContent":["import { defineComponent, ref, computed, Ref, CSSProperties } from 'vue';\nimport Notification from './notification';\nimport { TdNotificationProps, NotificationOptions } from './type';\nimport { DEFAULT_Z_INDEX, PLACEMENT_OFFSET, DISTANCE } from './consts';\nimport { usePrefixClass } from '../hooks/useConfig';\n\nexport default defineComponent({\n  props: {\n    placement: {\n      type: String,\n      default: 'top-right',\n      validator(v: string): boolean {\n        return ['top-left', 'top-right', 'bottom-left', 'bottom-right'].indexOf(v) > -1;\n      },\n    },\n  },\n  setup(props, { expose }) {\n    const COMPONENT_NAME = usePrefixClass('notification-list');\n\n    const { placement } = props as NotificationOptions;\n\n    const list: Ref<NotificationOptions[]> = ref([]);\n    const notificationList = ref([]);\n\n    const styles = computed(() => ({\n      zIndex: DEFAULT_Z_INDEX,\n      ...PLACEMENT_OFFSET[placement],\n    }));\n\n    const add = (options: TdNotificationProps): number => {\n      list.value.push(options);\n      return list.value.length - 1;\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 notificationStyles = (item: { offset: NotificationOptions['offset']; zIndex: number }) => {\n      const styles: CSSProperties = {\n        marginBottom: DISTANCE,\n      };\n      if (item.offset) {\n        styles.position = 'relative';\n        styles.left = getOffset(item.offset[0]);\n        styles.top = getOffset(item.offset[1]);\n      }\n      if (item.zIndex) styles['z-index'] = item.zIndex;\n      return styles;\n    };\n\n    const getProps = (index: number, item: NotificationOptions) => {\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        notificationList.value.push(el);\n      }\n    };\n    expose({ add, remove, removeAll, list, notificationList });\n\n    return () => {\n      if (!list.value.length) return;\n\n      return (\n        <div class={`${COMPONENT_NAME.value}__show`} style={styles.value}>\n          {list.value.map((item: { offset: NotificationOptions['offset']; zIndex: number; id: number }, index) => (\n            <Notification ref={addChild} key={item.id} style={notificationStyles(item)} {...getProps(index, item)} />\n          ))}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","props","placement","type","String","validator","v","indexOf","setup","_ref","expose","COMPONENT_NAME","usePrefixClass","list","ref","notificationList","styles","computed","_objectSpread","zIndex","DEFAULT_Z_INDEX","PLACEMENT_OFFSET","add","options","value","push","length","remove","index","splice","removeAll","getOffset","val","isNaN","Number","notificationStyles","item","marginBottom","DISTANCE","offset","position","left","top","getProps","onCloseBtnClick","e","onDurationEnd","addChild","el","_createVNode","concat","map","Notification","_mergeProps","id"],"mappings":"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"}