UNPKG

veboundary

Version:

Simple and convenient Vue error boundary.

2 lines (1 loc) 1.35 kB
(function(r,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue-demi"),require("@vue/devtools-api")):typeof define=="function"&&define.amd?define(["exports","vue-demi","@vue/devtools-api"],n):(r=typeof globalThis<"u"?globalThis:r||self,n(r.VueErrorBoundary={},r.VueDemi))})(this,function(r,n){"use strict";const c=Symbol("veboundary"),E=n.defineComponent({name:"VeBoundary",inheritAttrs:!1,props:{propagation:{type:Boolean,default:!1},keepEmit:{type:Boolean,default:!1},include:[Array,RegExp],exclude:[Array,RegExp]},emits:["caputred"],setup(e,{slots:o,emit:B,attrs:b}){o.default,o.fallback;const t=n.ref(null),s=n.ref("");function y(){t.value=null,s.value=""}return n.provide(c,{reset:y,error:t}),n.onErrorCaptured(function(i,x,v){const{name:p,message:a}=i;let l=!0,f=!0;e.include&&(Array.isArray(e.include)?l=e.include.some(u=>p===u||a===u):l=e.include.test(a)),e.exclude&&(Array.isArray(e.exclude)?f=e.exclude.every(u=>p!==u&&a!==u):f=!e.exclude.test(a));const d=l&&f;return d&&(t.value=i,s.value=v),(d||!d&&e.keepEmit)&&B("caputred",{error:i,instance:x,info:v}),d?e.propagation:!0}),function(){return t.value===null?o.default?.():o.fallback?.({error:t.value,reset:y})}}});function m(){return n.inject(c)}r.default=E,r.useBoundary=m,Object.defineProperties(r,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});