UNPKG

ant-design-x-vue-next

Version:

Ant Design X for Vue — community continuation aligned with @ant-design/x

2 lines (1 loc) 1.57 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const M=require("vue"),g=require("../_util/warning.js");let d=0;const i=class i{constructor(){i.permissible=typeof globalThis<"u"&&!!globalThis.Notification,g.default(i.permissible)}get permission(){return i.permissible?globalThis.Notification.permission:"denied"}open(e){if(!i.permissible)return;const{title:t,tag:o,onClick:r,duration:n,onClose:c,onError:u,onShow:p,...h}=e||{};if(o&&i.permissionMap.has(o))return;d+=1;const f=o||`x_notification_${d}`,a=new globalThis.Notification(t,h||{}),m=a.close.bind(a);if(typeof n=="number"){const s=setTimeout(()=>{clearTimeout(s),m()},n*1e3)}a.onclick=s=>{r==null||r(s,m)},a.onshow=s=>{p==null||p(s),i.permissionMap.set(f,{close:m})},a.onclose=s=>{c==null||c(s),i.permissionMap.delete(f)},a.onerror=s=>{u==null||u(s)}}async requestPermission(){return i.permissible?globalThis.Notification.requestPermission():"denied"}useNotification(){const e=M.reactive({permission:this.permission});return[e,{open:this.open.bind(this),close:this.close.bind(this),requestPermission:async()=>{const t=await this.requestPermission();return e.permission=t,t}}]}close(e){i.permissible&&Array.from(i.permissionMap.keys()).forEach(t=>{var o,r,n,c;e===void 0&&((r=(o=i.permissionMap.get(t))==null?void 0:o.close)==null||r.call(o)),e!=null&&e.includes(t)&&((c=(n=i.permissionMap.get(t))==null?void 0:n.close)==null||c.call(n))})}};i.permissionMap=new Map;let l=i;const b=new l;exports.XNotification=l;exports.default=b;exports.notification=b;