{"version":3,"file":"notice.vue2.mjs","sources":["../../../components/notice/notice.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Icon } from '@/components/icon'\nimport { Renderer } from '@/components/renderer'\nimport { Popup } from '@/components/popup'\n\nimport { computed, reactive, ref } from 'vue'\n\nimport { useIcons, useNameHelper } from '@vexip-ui/config'\nimport { assertiveTypes, effectiveTypes } from './symbol'\n\nimport type { Key, NoticeConfig, NoticePlacement } from './symbol'\n\ndefineOptions({ name: 'Notice' })\n\nconst nh = useNameHelper('notice')\nconst icons = useIcons()\n\nconst predefinedIcons = computed(() => ({\n  primary: icons.value.info,\n  info: icons.value.info,\n  success: icons.value.success,\n  warning: icons.value.warning,\n  error: icons.value.error,\n}))\n\nconst placement = ref<NoticePlacement>('top-right')\nconst popup = ref<InstanceType<typeof Popup>>()\n\nasync function add(options: Record<string, any>) {\n  if (popup.value) {\n    await popup.value.add(options)\n  }\n}\n\nasync function remove(key: Key) {\n  return !!popup.value && (await popup.value.remove(key))\n}\n\nfunction clear() {\n  popup.value && popup.value.clear()\n}\n\nfunction config(config: NoticeConfig) {\n  placement.value = config.placement || placement.value\n}\n\ndefineExpose(\n  reactive({\n    popup,\n    add,\n    remove,\n    clear,\n    config,\n  }),\n)\n</script>\n\n<template>\n  <!-- eslint-disable vue/no-v-html -->\n  <Popup\n    ref=\"popup\"\n    :class=\"nh.b()\"\n    :transition-name=\"nh.ns(`popup-${placement.split('-')[1]}`)\"\n    :placement=\"placement\"\n  >\n    <template #item=\"{ item }: { item: import('./symbol').NoticeOptions }\">\n      <div\n        :class=\"[\n          {\n            [nh.be('item')]: true,\n            [nh.bs('vars')]: true,\n            [nh.bem('item', 'title-only')]: !item.content && typeof item.renderer !== 'function',\n            [nh.bem('item', 'has-icon')]: item.icon,\n            [nh.bem('item', 'content-only')]: !item.title,\n            [nh.bem('item', item.type!)]: item.type && effectiveTypes.includes(item.type),\n            [nh.bem('item', 'background')]: item.background,\n            [nh.bem('item', 'color')]: item.background && item.color,\n            [nh.bem('item', 'color-only')]: !item.background && item.color,\n            [nh.bem('item', 'marker')]: item.marker\n          },\n          item.className\n        ]\"\n        role=\"alert\"\n        :style=\"[\n          {\n            color: typeof item.color === 'string' ? item.color : undefined,\n            backgroundColor: typeof item.background === 'string' ? item.background : undefined\n          },\n          item.style || {}\n        ]\"\n        aria-atomic=\"true\"\n        :aria-live=\"item.type && assertiveTypes.includes(item.type) ? 'assertive' : 'polite'\"\n      >\n        <div\n          v-if=\"item.icon || (item.type && effectiveTypes.includes(item.type))\"\n          :class=\"nh.be('icon')\"\n          :style=\"{ color: item.iconColor }\"\n        >\n          <Icon\n            v-if=\"item.icon\"\n            :icon=\"item.icon\"\n            :scale=\"!item.content && typeof item.renderer !== 'function' ? 1 : 2\"\n            :style=\"[{ color: item.iconColor }, (item.icon as any).style]\"\n          ></Icon>\n          <Icon\n            v-else\n            v-bind=\"predefinedIcons[item.type!]\"\n            :scale=\"!item.content && typeof item.renderer !== 'function' ? 1 : 2\"\n            :style=\"{ color: item.iconColor }\"\n          ></Icon>\n        </div>\n        <div :class=\"nh.be('wrapper')\">\n          <Renderer\n            v-if=\"typeof item.renderer === 'function'\"\n            :renderer=\"item.renderer\"\n            :data=\"item\"\n          ></Renderer>\n          <template v-else>\n            <template v-if=\"item.title\">\n              <div\n                v-if=\"item.parseHtml\"\n                :class=\"nh.be('title')\"\n                :style=\"{\n                  color: typeof item.titleColor === 'string' ? item.titleColor : undefined\n                }\"\n                v-html=\"item.title\"\n              ></div>\n              <div\n                v-else\n                :class=\"nh.be('title')\"\n                :style=\"{\n                  color: typeof item.titleColor === 'string' ? item.titleColor : undefined\n                }\"\n              >\n                {{ item.title || '' }}\n              </div>\n            </template>\n            <template v-if=\"item.content\">\n              <div v-if=\"item.parseHtml\" :class=\"nh.be('content')\" v-html=\"item.content\"></div>\n              <div v-else :class=\"nh.be('content')\">\n                {{ item.content || '' }}\n              </div>\n            </template>\n          </template>\n        </div>\n        <button\n          v-if=\"item.closable\"\n          type=\"button\"\n          :class=\"nh.be('close')\"\n          @click=\"remove(item.key!)\"\n        >\n          <Icon v-bind=\"icons.close\" label=\"close\"></Icon>\n        </button>\n      </div>\n    </template>\n  </Popup>\n</template>\n"],"names":["nh","useNameHelper","icons","useIcons","predefinedIcons","computed","placement","ref","popup","add","options","remove","key","clear","config","__expose","reactive","_createBlock","_unref","Popup","_normalizeClass","_withCtx","item","_createElementVNode","effectiveTypes","_normalizeStyle","assertiveTypes","_createElementBlock","Icon","_openBlock","_mergeProps","Renderer","_Fragment","_toDisplayString","$event","_createVNode"],"mappings":"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"}