expo-error-toast
Version:
Toast to show error messages for Expo applications
23 lines (22 loc) • 8.84 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),b=require("react-native"),O=require("@expo/vector-icons/FontAwesome"),se=require("expo-clipboard");function ie(t){const u=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const l in t)if(l!=="default"){const f=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(u,l,f.get?f:{enumerable:!0,get:()=>t[l]})}}return u.default=t,Object.freeze(u)}const le=ie(se);var P={exports:{}},h={};/**
* @license React
* react-jsx-runtime.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var z;function ce(){if(z)return h;z=1;var t=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function l(f,n,c){var T=null;if(c!==void 0&&(T=""+c),n.key!==void 0&&(T=""+n.key),"key"in n){c={};for(var g in n)g!=="key"&&(c[g]=n[g])}else c=n;return n=c.ref,{$$typeof:t,type:f,key:T,ref:n!==void 0?n:null,props:c}}return h.Fragment=u,h.jsx=l,h.jsxs=l,h}var R={};/**
* @license React
* react-jsx-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/var W;function ue(){return W||(W=1,process.env.NODE_ENV!=="production"&&function(){function t(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===oe?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case w:return"Fragment";case X:return"Profiler";case G:return"StrictMode";case K:return"Suspense";case ee:return"SuspenseList";case te:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case B:return"Portal";case Z:return(e.displayName||"Context")+".Provider";case H:return(e._context.displayName||"Context")+".Consumer";case Q:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case re:return r=e.displayName||null,r!==null?r:t(e.type)||"Memo";case I:r=e._payload,e=e._init;try{return t(e(r))}catch{}}return null}function u(e){return""+e}function l(e){try{u(e);var r=!1}catch{r=!0}if(r){r=console;var o=r.error,a=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",a),u(e)}}function f(e){if(e===w)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===I)return"<...>";try{var r=t(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function n(){var e=x.A;return e===null?null:e.getOwner()}function c(){return Error("react-stack-top-frame")}function T(e){if(Y.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function g(e,r){function o(){D||(D=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}function U(){var e=t(this.type);return F[e]||(F[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function J(e,r,o,a,E,d,j,S){return o=d.ref,e={$$typeof:N,type:e,key:r,props:d,_owner:E},(o!==void 0?o:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:U}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:j}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:S}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function A(e,r,o,a,E,d,j,S){var s=r.children;if(s!==void 0)if(a)if(ne(s)){for(a=0;a<s.length;a++)C(s[a]);Object.freeze&&Object.freeze(s)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else C(s);if(Y.call(r,"key")){s=t(e);var v=Object.keys(r).filter(function(ae){return ae!=="key"});a=0<v.length?"{key: someKey, "+v.join(": ..., ")+": ...}":"{key: someKey}",$[s+a]||(v=0<v.length?"{"+v.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,a,s,v,s),$[s+a]=!0)}if(s=null,o!==void 0&&(l(o),s=""+o),T(r)&&(l(r.key),s=""+r.key),"key"in r){o={};for(var k in r)k!=="key"&&(o[k]=r[k])}else o=r;return s&&g(o,typeof e=="function"?e.displayName||e.name||"Unknown":e),J(e,s,d,E,n(),o,j,S)}function C(e){typeof e=="object"&&e!==null&&e.$$typeof===N&&e._store&&(e._store.validated=1)}var _=p,N=Symbol.for("react.transitional.element"),B=Symbol.for("react.portal"),w=Symbol.for("react.fragment"),G=Symbol.for("react.strict_mode"),X=Symbol.for("react.profiler"),H=Symbol.for("react.consumer"),Z=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),K=Symbol.for("react.suspense"),ee=Symbol.for("react.suspense_list"),re=Symbol.for("react.memo"),I=Symbol.for("react.lazy"),te=Symbol.for("react.activity"),oe=Symbol.for("react.client.reference"),x=_.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y=Object.prototype.hasOwnProperty,ne=Array.isArray,y=console.createTask?console.createTask:function(){return null};_={"react-stack-bottom-frame":function(e){return e()}};var D,F={},M=_["react-stack-bottom-frame"].bind(_,c)(),V=y(f(c)),$={};R.Fragment=w,R.jsx=function(e,r,o,a,E){var d=1e4>x.recentlyCreatedOwnerStacks++;return A(e,r,o,!1,a,E,d?Error("react-stack-top-frame"):M,d?y(f(e)):V)},R.jsxs=function(e,r,o,a,E){var d=1e4>x.recentlyCreatedOwnerStacks++;return A(e,r,o,!0,a,E,d?Error("react-stack-top-frame"):M,d?y(f(e)):V)}}()),R}process.env.NODE_ENV==="production"?P.exports=ce():P.exports=ue();var i=P.exports;const L=({message:t,onClose:u,visible:l})=>{const[f,n]=p.useState(!1),c=async()=>{await le.setStringAsync(t),n(!0),setTimeout(()=>n(!1),2e3)};return l?i.jsxs(i.Fragment,{children:[i.jsx(b.Pressable,{style:m.overlay}),i.jsx(b.View,{style:m.container,children:i.jsxs(b.View,{style:m.content,children:[i.jsxs(b.View,{style:m.messageContainer,children:[i.jsx(O,{name:"exclamation-circle",size:20,color:"white",style:m.icon}),i.jsx(b.ScrollView,{style:m.scrollView,showsVerticalScrollIndicator:!0,children:i.jsx(b.Text,{style:m.message,children:t})})]}),i.jsxs(b.View,{style:m.buttonsContainer,children:[i.jsx(b.Pressable,{onPress:u,style:m.closeButton,hitSlop:8,children:i.jsx(O,{name:"times",size:20,color:"white"})}),i.jsx(b.Pressable,{onPress:c,style:m.copyButton,hitSlop:8,children:i.jsx(O,{name:f?"check":"copy",size:18,color:"white"})})]})]})})]}):null},m=b.StyleSheet.create({overlay:{position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:9998},container:{position:"absolute",top:140,left:16,right:16,zIndex:9999},content:{backgroundColor:"rgba(255, 59, 48, 0.9)",borderRadius:8,padding:16,flexDirection:"row",justifyContent:"space-between",alignItems:"flex-start",shadowColor:"#000",shadowOffset:{width:0,height:2},shadowOpacity:.25,shadowRadius:4,elevation:5,maxWidth:"100%"},messageContainer:{flexDirection:"row",flex:1,marginRight:12},scrollView:{flex:1,maxHeight:200},icon:{marginRight:12},message:{color:"white",fontSize:16,fontWeight:"600"},buttonsContainer:{flexDirection:"column",alignItems:"center",gap:16},closeButton:{padding:4},copyButton:{padding:4}}),q=p.createContext(void 0);function fe(){const t=p.useContext(q);if(!t)throw new Error("useErrorToast must be used within an ErrorToastProvider");return t}const de=t=>t instanceof Error?t.message:typeof t=="string"?t:JSON.stringify(t);function me({children:t}){const[u,l]=p.useState(""),[f,n]=p.useState(!1),c=p.useCallback(g=>{l(de(g)),n(!0)},[]),T=p.useCallback(()=>{n(!1),setTimeout(()=>l(""),300)},[]);return i.jsxs(q.Provider,{value:{showError:c},children:[t,i.jsx(L,{message:u,visible:f,onClose:T})]})}exports.ErrorToast=L;exports.ErrorToastProvider=me;exports.useErrorToast=fe;