@tamagui/toast 1.46.2 → 1.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +13 -13
- package/dist/jsx/Toast.mjs +0 -145
- package/dist/jsx/Toast.mjs.map +0 -6
- package/dist/jsx/ToastAnnounce.mjs +0 -62
- package/dist/jsx/ToastAnnounce.mjs.map +0 -6
- package/dist/jsx/ToastImperative.mjs +0 -73
- package/dist/jsx/ToastImperative.mjs.map +0 -6
- package/dist/jsx/ToastImpl.mjs +0 -337
- package/dist/jsx/ToastImpl.mjs.map +0 -6
- package/dist/jsx/ToastProvider.mjs +0 -81
- package/dist/jsx/ToastProvider.mjs.map +0 -6
- package/dist/jsx/ToastViewport.mjs +0 -300
- package/dist/jsx/ToastViewport.mjs.map +0 -6
- package/dist/jsx/constants.mjs +0 -5
- package/dist/jsx/constants.mjs.map +0 -6
- package/dist/jsx/createNativeToast.mjs +0 -45
- package/dist/jsx/createNativeToast.mjs.map +0 -6
- package/dist/jsx/createNativeToast.native.mjs +0 -19
- package/dist/jsx/createNativeToast.native.mjs.map +0 -6
- package/dist/jsx/index.mjs +0 -2
- package/dist/jsx/index.mjs.map +0 -6
- package/dist/jsx/types.mjs +0 -1
- package/dist/jsx/types.mjs.map +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/toast",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.47.0",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@tamagui/animate-presence": "1.
|
|
35
|
-
"@tamagui/compose-refs": "1.
|
|
36
|
-
"@tamagui/core": "1.
|
|
37
|
-
"@tamagui/create-context": "1.
|
|
38
|
-
"@tamagui/dismissable": "1.
|
|
39
|
-
"@tamagui/polyfill-dev": "1.
|
|
40
|
-
"@tamagui/portal": "1.
|
|
41
|
-
"@tamagui/stacks": "1.
|
|
42
|
-
"@tamagui/text": "1.
|
|
43
|
-
"@tamagui/use-controllable-state": "1.
|
|
44
|
-
"@tamagui/visually-hidden": "1.
|
|
34
|
+
"@tamagui/animate-presence": "1.47.0",
|
|
35
|
+
"@tamagui/compose-refs": "1.47.0",
|
|
36
|
+
"@tamagui/core": "1.47.0",
|
|
37
|
+
"@tamagui/create-context": "1.47.0",
|
|
38
|
+
"@tamagui/dismissable": "1.47.0",
|
|
39
|
+
"@tamagui/polyfill-dev": "1.47.0",
|
|
40
|
+
"@tamagui/portal": "1.47.0",
|
|
41
|
+
"@tamagui/stacks": "1.47.0",
|
|
42
|
+
"@tamagui/text": "1.47.0",
|
|
43
|
+
"@tamagui/use-controllable-state": "1.47.0",
|
|
44
|
+
"@tamagui/visually-hidden": "1.47.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"burnt": "^0.10.0",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"react-native": "*"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@tamagui/build": "1.
|
|
52
|
+
"@tamagui/build": "1.47.0",
|
|
53
53
|
"burnt": "^0.10.0",
|
|
54
54
|
"react": "^18.2.0",
|
|
55
55
|
"react-native": "^0.72.1"
|
package/dist/jsx/Toast.mjs
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
composeEventHandlers,
|
|
3
|
-
styled,
|
|
4
|
-
themeable,
|
|
5
|
-
useEvent,
|
|
6
|
-
withStaticProperties
|
|
7
|
-
} from "@tamagui/core";
|
|
8
|
-
import { ThemeableStack } from "@tamagui/stacks";
|
|
9
|
-
import { SizableText } from "@tamagui/text";
|
|
10
|
-
import { useControllableState } from "@tamagui/use-controllable-state";
|
|
11
|
-
import * as React from "react";
|
|
12
|
-
import { TOAST_NAME } from "./constants";
|
|
13
|
-
import { ToastAnnounceExclude } from "./ToastAnnounce";
|
|
14
|
-
import {
|
|
15
|
-
useToast,
|
|
16
|
-
useToastController,
|
|
17
|
-
useToastState
|
|
18
|
-
} from "./ToastImperative";
|
|
19
|
-
import {
|
|
20
|
-
ToastImpl,
|
|
21
|
-
ToastImplFrame,
|
|
22
|
-
useToastInteractiveContext
|
|
23
|
-
} from "./ToastImpl";
|
|
24
|
-
import {
|
|
25
|
-
ToastProvider,
|
|
26
|
-
createToastScope
|
|
27
|
-
} from "./ToastProvider";
|
|
28
|
-
import { ToastViewport } from "./ToastViewport";
|
|
29
|
-
const TITLE_NAME = "ToastTitle";
|
|
30
|
-
const ToastTitle = styled(SizableText, {
|
|
31
|
-
name: TITLE_NAME,
|
|
32
|
-
variants: {
|
|
33
|
-
unstyled: {
|
|
34
|
-
false: {
|
|
35
|
-
color: "$color",
|
|
36
|
-
size: "$4"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
defaultVariants: {
|
|
41
|
-
unstyled: false
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
ToastTitle.displayName = TITLE_NAME;
|
|
45
|
-
const DESCRIPTION_NAME = "ToastDescription";
|
|
46
|
-
const ToastDescription = styled(SizableText, {
|
|
47
|
-
name: DESCRIPTION_NAME,
|
|
48
|
-
variants: {
|
|
49
|
-
unstyled: {
|
|
50
|
-
false: {
|
|
51
|
-
color: "$color11",
|
|
52
|
-
size: "$1"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
defaultVariants: {
|
|
57
|
-
unstyled: false
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
ToastDescription.displayName = DESCRIPTION_NAME;
|
|
61
|
-
const ACTION_NAME = "ToastAction";
|
|
62
|
-
const ToastAction = React.forwardRef(
|
|
63
|
-
(props, forwardedRef) => {
|
|
64
|
-
const { altText, ...actionProps } = props;
|
|
65
|
-
if (!altText)
|
|
66
|
-
return null;
|
|
67
|
-
return <ToastAnnounceExclude altText={altText} asChild><ToastClose {...actionProps} ref={forwardedRef} /></ToastAnnounceExclude>;
|
|
68
|
-
}
|
|
69
|
-
);
|
|
70
|
-
ToastAction.propTypes = {
|
|
71
|
-
altText(props) {
|
|
72
|
-
if (!props.altText) {
|
|
73
|
-
return new Error(`Missing prop \`altText\` expected on \`${ACTION_NAME}\``);
|
|
74
|
-
}
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
ToastAction.displayName = ACTION_NAME;
|
|
79
|
-
const CLOSE_NAME = "ToastClose";
|
|
80
|
-
const ToastCloseFrame = styled(ThemeableStack, {
|
|
81
|
-
name: CLOSE_NAME,
|
|
82
|
-
tag: "button"
|
|
83
|
-
});
|
|
84
|
-
const ToastClose = React.forwardRef(
|
|
85
|
-
(props, forwardedRef) => {
|
|
86
|
-
const { __scopeToast, ...closeProps } = props;
|
|
87
|
-
const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);
|
|
88
|
-
return <ToastAnnounceExclude asChild><ToastCloseFrame
|
|
89
|
-
accessibilityLabel="Dialog Close"
|
|
90
|
-
{...closeProps}
|
|
91
|
-
ref={forwardedRef}
|
|
92
|
-
onPress={composeEventHandlers(props.onPress, interactiveContext.onClose)}
|
|
93
|
-
/></ToastAnnounceExclude>;
|
|
94
|
-
}
|
|
95
|
-
);
|
|
96
|
-
ToastClose.displayName = CLOSE_NAME;
|
|
97
|
-
const ToastComponent = React.forwardRef(
|
|
98
|
-
ToastImplFrame.extractable((props, forwardedRef) => {
|
|
99
|
-
const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;
|
|
100
|
-
const [open, setOpen] = useControllableState({
|
|
101
|
-
prop: openProp,
|
|
102
|
-
defaultProp: defaultOpen ?? true,
|
|
103
|
-
onChange: onOpenChange,
|
|
104
|
-
strategy: "most-recent-wins"
|
|
105
|
-
});
|
|
106
|
-
const id = React.useId();
|
|
107
|
-
const onPause = useEvent(props.onPause);
|
|
108
|
-
const onResume = useEvent(props.onResume);
|
|
109
|
-
const shouldShow = forceMount || open;
|
|
110
|
-
if (!shouldShow)
|
|
111
|
-
return null;
|
|
112
|
-
return <ToastImpl
|
|
113
|
-
id={id}
|
|
114
|
-
open={open}
|
|
115
|
-
{...toastProps}
|
|
116
|
-
ref={forwardedRef}
|
|
117
|
-
onClose={() => setOpen(false)}
|
|
118
|
-
onPause={onPause}
|
|
119
|
-
onResume={onResume}
|
|
120
|
-
onSwipeEnd={composeEventHandlers(props.onSwipeEnd, (event) => {
|
|
121
|
-
setOpen(false);
|
|
122
|
-
})}
|
|
123
|
-
/>;
|
|
124
|
-
})
|
|
125
|
-
);
|
|
126
|
-
ToastComponent.displayName = TOAST_NAME;
|
|
127
|
-
const Toast = withStaticProperties(
|
|
128
|
-
themeable(ToastComponent, ToastImplFrame.staticConfig),
|
|
129
|
-
{
|
|
130
|
-
Title: ToastTitle,
|
|
131
|
-
Description: ToastDescription,
|
|
132
|
-
Action: ToastAction,
|
|
133
|
-
Close: ToastClose
|
|
134
|
-
}
|
|
135
|
-
);
|
|
136
|
-
export {
|
|
137
|
-
Toast,
|
|
138
|
-
ToastProvider,
|
|
139
|
-
ToastViewport,
|
|
140
|
-
createToastScope,
|
|
141
|
-
useToast,
|
|
142
|
-
useToastController,
|
|
143
|
-
useToastState
|
|
144
|
-
};
|
|
145
|
-
//# sourceMappingURL=Toast.mjs.map
|
package/dist/jsx/Toast.mjs.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/Toast.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Stack,
|
|
3
|
-
Text,
|
|
4
|
-
styled,
|
|
5
|
-
useEvent,
|
|
6
|
-
useIsomorphicLayoutEffect
|
|
7
|
-
} from "@tamagui/core";
|
|
8
|
-
import { Portal } from "@tamagui/portal";
|
|
9
|
-
import { VisuallyHidden } from "@tamagui/visually-hidden";
|
|
10
|
-
import * as React from "react";
|
|
11
|
-
import { TOAST_NAME } from "./constants";
|
|
12
|
-
import { useToastProviderContext } from "./ToastProvider";
|
|
13
|
-
const ToastAnnounceExcludeFrame = styled(Stack, {
|
|
14
|
-
name: "ToastAnnounceExclude"
|
|
15
|
-
});
|
|
16
|
-
const ToastAnnounceExclude = React.forwardRef(
|
|
17
|
-
(props, forwardedRef) => {
|
|
18
|
-
const { __scopeToast, altText, ...announceExcludeProps } = props;
|
|
19
|
-
return <ToastAnnounceExcludeFrame
|
|
20
|
-
data-toast-announce-exclude=""
|
|
21
|
-
data-toast-announce-alt={altText || void 0}
|
|
22
|
-
{...announceExcludeProps}
|
|
23
|
-
ref={forwardedRef}
|
|
24
|
-
/>;
|
|
25
|
-
}
|
|
26
|
-
);
|
|
27
|
-
const ToastAnnounce = (props) => {
|
|
28
|
-
const { __scopeToast, children, ...announceProps } = props;
|
|
29
|
-
const context = useToastProviderContext(TOAST_NAME, __scopeToast);
|
|
30
|
-
const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);
|
|
31
|
-
const [isAnnounced, setIsAnnounced] = React.useState(false);
|
|
32
|
-
useNextFrame(() => setRenderAnnounceText(true));
|
|
33
|
-
React.useEffect(() => {
|
|
34
|
-
const timer = setTimeout(() => setIsAnnounced(true), 1e3);
|
|
35
|
-
return () => clearTimeout(timer);
|
|
36
|
-
}, []);
|
|
37
|
-
return isAnnounced ? null : <Portal asChild><VisuallyHidden {...announceProps}>{renderAnnounceText && <Text>
|
|
38
|
-
{context.label}
|
|
39
|
-
{" "}
|
|
40
|
-
{children}
|
|
41
|
-
</Text>}</VisuallyHidden></Portal>;
|
|
42
|
-
};
|
|
43
|
-
function useNextFrame(callback = () => {
|
|
44
|
-
}) {
|
|
45
|
-
const fn = useEvent(callback);
|
|
46
|
-
useIsomorphicLayoutEffect(() => {
|
|
47
|
-
let raf1 = 0;
|
|
48
|
-
let raf2 = 0;
|
|
49
|
-
raf1 = requestAnimationFrame(() => {
|
|
50
|
-
raf2 = requestAnimationFrame(fn);
|
|
51
|
-
});
|
|
52
|
-
return () => {
|
|
53
|
-
cancelAnimationFrame(raf1);
|
|
54
|
-
cancelAnimationFrame(raf2);
|
|
55
|
-
};
|
|
56
|
-
}, [fn]);
|
|
57
|
-
}
|
|
58
|
-
export {
|
|
59
|
-
ToastAnnounce,
|
|
60
|
-
ToastAnnounceExclude
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=ToastAnnounce.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/ToastAnnounce.tsx"],
|
|
4
|
-
"mappings": "AAAA;AAAA,EAEE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAC/B,YAAY,WAAW;AAEvB,SAAS,kBAAkB;AAC3B,SAAsB,+BAA+B;AAErD,MAAM,4BAA4B,OAAO,OAAO;AAAA,EAC9C,MAAM;AACR,CAAC;AAMD,MAAM,uBAAuB,MAAM;AAAA,EACjC,CAAC,OAA+C,iBAAiB;AAC/D,UAAM,EAAE,cAAc,SAAS,GAAG,qBAAqB,IAAI;AAE3D,WACE,CAAC;AAAA,MACC,4BAA4B;AAAA,MAC5B,yBAAyB,WAAW;AAAA,UAChC;AAAA,MACJ,KAAK;AAAA,IACP;AAAA,EAEJ;AACF;AAQA,MAAM,gBAA8C,CAClD,UACG;AACH,QAAM,EAAE,cAAc,UAAU,GAAG,cAAc,IAAI;AACrD,QAAM,UAAU,wBAAwB,YAAY,YAAY;AAChE,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,MAAM,SAAS,KAAK;AACxE,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAS,KAAK;AAG1D,eAAa,MAAM,sBAAsB,IAAI,CAAC;AAG9C,QAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,WAAW,MAAM,eAAe,IAAI,GAAG,GAAI;AACzD,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,CAAC;AAEL,SAAO,cAAc,OACnB,CAAC,OAAO,QACN,CAAC,mBAAmB,gBACjB,sBACC,CAAC;AAAA,KACE,QAAQ;AAAA,KAAM;AAAA,KAAE;AAAA,EACnB,EAFC,MAIL,EANC,eAOH,EARC;AAUL;AAIA,SAAS,aAAa,WAAW,MAAM;AAAC,GAAG;AACzC,QAAM,KAAK,SAAS,QAAQ;AAC5B,4BAA0B,MAAM;AAC9B,QAAI,OAAO;AACX,QAAI,OAAO;AACX,WAAO,sBAAsB,MAAM;AACjC,aAAO,sBAAsB,EAAE;AAAA,IACjC,CAAC;AACD,WAAO,MAAM;AACX,2BAAqB,IAAI;AACzB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,EAAE,CAAC;AACT;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { isWeb } from "@tamagui/core";
|
|
2
|
-
import React, { createContext, useContext, useMemo, useRef } from "react";
|
|
3
|
-
import { Platform } from "react-native";
|
|
4
|
-
import { createNativeToast } from "./createNativeToast";
|
|
5
|
-
const ToastContext = createContext({});
|
|
6
|
-
const ToastCurrentContext = createContext(null);
|
|
7
|
-
const useToastController = () => {
|
|
8
|
-
return useContext(ToastContext);
|
|
9
|
-
};
|
|
10
|
-
const useToastState = () => {
|
|
11
|
-
return useContext(ToastCurrentContext);
|
|
12
|
-
};
|
|
13
|
-
const useToast = () => {
|
|
14
|
-
return {
|
|
15
|
-
...useToastController(),
|
|
16
|
-
currentToast: useToastState()
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
const ToastImperativeProvider = ({
|
|
20
|
-
children,
|
|
21
|
-
options
|
|
22
|
-
}) => {
|
|
23
|
-
const counterRef = useRef(0);
|
|
24
|
-
const [toast, setToast] = React.useState(null);
|
|
25
|
-
const [lastNativeToastRef, setLastNativeToastRef] = React.useState(null);
|
|
26
|
-
const show = React.useCallback(
|
|
27
|
-
(title, showOptions) => {
|
|
28
|
-
const native = showOptions?.native ?? options.native;
|
|
29
|
-
const isWebNative = Array.isArray(native) ? native.includes("web") : native === "web";
|
|
30
|
-
const isMobileNative = Array.isArray(native) ? native.includes("mobile") : native === "mobile";
|
|
31
|
-
const isAndroidNative = isMobileNative || (Array.isArray(native) ? native.includes("android") : native === "android");
|
|
32
|
-
const isIosNative = isMobileNative || (Array.isArray(native) ? native.includes("ios") : native === "ios");
|
|
33
|
-
const isHandledNatively = native === true || isWeb && isWebNative || !isWeb && isMobileNative || Platform.OS === "android" && isAndroidNative || Platform.OS === "ios" && isIosNative;
|
|
34
|
-
if (isHandledNatively) {
|
|
35
|
-
const nativeToastResult = createNativeToast(title, showOptions ?? {});
|
|
36
|
-
if (typeof nativeToastResult === "object" && nativeToastResult.nativeToastRef) {
|
|
37
|
-
setLastNativeToastRef(nativeToastResult.nativeToastRef);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
counterRef.current++;
|
|
41
|
-
setToast({
|
|
42
|
-
...showOptions?.customData,
|
|
43
|
-
...showOptions,
|
|
44
|
-
viewportName: showOptions?.viewportName ?? "default",
|
|
45
|
-
title,
|
|
46
|
-
id: counterRef.current.toString(),
|
|
47
|
-
isHandledNatively
|
|
48
|
-
});
|
|
49
|
-
return true;
|
|
50
|
-
},
|
|
51
|
-
[setToast, options.native]
|
|
52
|
-
);
|
|
53
|
-
const hide = React.useCallback(() => {
|
|
54
|
-
lastNativeToastRef?.close();
|
|
55
|
-
setToast(null);
|
|
56
|
-
}, [setToast, lastNativeToastRef]);
|
|
57
|
-
const contextValue = useMemo(() => {
|
|
58
|
-
return {
|
|
59
|
-
show,
|
|
60
|
-
hide,
|
|
61
|
-
nativeToast: lastNativeToastRef,
|
|
62
|
-
options
|
|
63
|
-
};
|
|
64
|
-
}, [show, hide, lastNativeToastRef, JSON.stringify(options || null)]);
|
|
65
|
-
return <ToastContext.Provider value={contextValue}><ToastCurrentContext.Provider value={toast}>{children}</ToastCurrentContext.Provider></ToastContext.Provider>;
|
|
66
|
-
};
|
|
67
|
-
export {
|
|
68
|
-
ToastImperativeProvider,
|
|
69
|
-
useToast,
|
|
70
|
-
useToastController,
|
|
71
|
-
useToastState
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=ToastImperative.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/ToastImperative.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAsC,aAAa;AACnD,OAAO,SAAS,eAAe,YAAY,SAAS,cAAc;AAClE,SAAS,gBAAgB;AAEzB,SAAS,yBAAyB;AA4ElC,MAAM,eAAe,cAA6B,CAAC,CAAQ;AAC3D,MAAM,sBAAsB,cAAgC,IAAI;AAEzD,MAAM,qBAAqB,MAAM;AACtC,SAAO,WAAW,YAAY;AAChC;AAEO,MAAM,gBAAgB,MAAM;AACjC,SAAO,WAAW,mBAAmB;AACvC;AAGO,MAAM,WAAW,MAAM;AAC5B,SAAO;AAAA,IACL,GAAG,mBAAmB;AAAA,IACtB,cAAc,cAAc;AAAA,EAC9B;AACF;AAUO,MAAM,0BAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AACF,MAAoC;AAClC,QAAM,aAAa,OAAO,CAAC;AAE3B,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,SAA2B,IAAI;AAE/D,QAAM,CAAC,oBAAoB,qBAAqB,IAC9C,MAAM,SAAuC,IAAI;AAEnD,QAAM,OAAO,MAAM;AAAA,IACjB,CAAC,OAAO,gBAAgB;AACtB,YAAM,SAAS,aAAa,UAAU,QAAQ;AAC9C,YAAM,cAAc,MAAM,QAAQ,MAAM,IACpC,OAAO,SAAS,KAAK,IACrB,WAAW;AACf,YAAM,iBAAiB,MAAM,QAAQ,MAAM,IACvC,OAAO,SAAS,QAAQ,IACxB,WAAW;AACf,YAAM,kBACJ,mBACC,MAAM,QAAQ,MAAM,IAAI,OAAO,SAAS,SAAS,IAAI,WAAW;AACnE,YAAM,cACJ,mBACC,MAAM,QAAQ,MAAM,IAAI,OAAO,SAAS,KAAK,IAAI,WAAW;AAE/D,YAAM,oBACJ,WAAW,QACV,SAAS,eACT,CAAC,SAAS,kBACV,SAAS,OAAO,aAAa,mBAC7B,SAAS,OAAO,SAAS;AAE5B,UAAI,mBAAmB;AACrB,cAAM,oBAAoB,kBAAkB,OAAO,eAAe,CAAC,CAAC;AACpE,YAAI,OAAO,sBAAsB,YAAY,kBAAkB,gBAAgB;AAC7E,gCAAsB,kBAAkB,cAAc;AAAA,QACxD;AAAA,MACF;AACA,iBAAW;AACX,eAAS;AAAA,QACP,GAAG,aAAa;AAAA,QAChB,GAAG;AAAA,QACH,cAAc,aAAa,gBAAgB;AAAA,QAC3C;AAAA,QACA,IAAI,WAAW,QAAQ,SAAS;AAAA,QAChC;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU,QAAQ,MAAM;AAAA,EAC3B;AACA,QAAM,OAAO,MAAM,YAAY,MAAM;AACnC,wBAAoB,MAAM;AAC1B,aAAS,IAAI;AAAA,EACf,GAAG,CAAC,UAAU,kBAAkB,CAAC;AAEjC,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,MAAM,oBAAoB,KAAK,UAAU,WAAW,IAAI,CAAC,CAAC;AAEpE,SACE,CAAC,aAAa,SAAS,OAAO,cAC5B,CAAC,oBAAoB,SAAS,OAAO,QAClC,SACH,EAFC,oBAAoB,SAGvB,EAJC,aAAa;AAMlB;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/ToastImpl.mjs
DELETED
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
import { useIsPresent } from "@tamagui/animate-presence";
|
|
2
|
-
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
3
|
-
import {
|
|
4
|
-
Theme,
|
|
5
|
-
composeEventHandlers,
|
|
6
|
-
isWeb,
|
|
7
|
-
styled,
|
|
8
|
-
useAnimationDriver,
|
|
9
|
-
useEvent,
|
|
10
|
-
useThemeName
|
|
11
|
-
} from "@tamagui/core";
|
|
12
|
-
import { Dismissable } from "@tamagui/dismissable";
|
|
13
|
-
import { PortalItem } from "@tamagui/portal";
|
|
14
|
-
import { ThemeableStack } from "@tamagui/stacks";
|
|
15
|
-
import * as React from "react";
|
|
16
|
-
import {
|
|
17
|
-
PanResponder
|
|
18
|
-
} from "react-native";
|
|
19
|
-
import { TOAST_NAME } from "./constants";
|
|
20
|
-
import { ToastAnnounce } from "./ToastAnnounce";
|
|
21
|
-
import {
|
|
22
|
-
Collection,
|
|
23
|
-
createToastContext,
|
|
24
|
-
useToastProviderContext
|
|
25
|
-
} from "./ToastProvider";
|
|
26
|
-
import { VIEWPORT_PAUSE, VIEWPORT_RESUME } from "./ToastViewport";
|
|
27
|
-
const ToastImplFrame = styled(ThemeableStack, {
|
|
28
|
-
name: "ToastImpl",
|
|
29
|
-
focusable: true,
|
|
30
|
-
variants: {
|
|
31
|
-
unstyled: {
|
|
32
|
-
false: {
|
|
33
|
-
focusStyle: {
|
|
34
|
-
outlineStyle: "solid",
|
|
35
|
-
outlineWidth: 2,
|
|
36
|
-
outlineColor: "$borderColorHover"
|
|
37
|
-
},
|
|
38
|
-
backgroundColor: "$color6",
|
|
39
|
-
borderRadius: "$10",
|
|
40
|
-
paddingHorizontal: "$5",
|
|
41
|
-
paddingVertical: "$2",
|
|
42
|
-
marginHorizontal: "auto",
|
|
43
|
-
marginVertical: "$1"
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
defaultVariants: {
|
|
48
|
-
unstyled: false
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
const [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(
|
|
52
|
-
TOAST_NAME,
|
|
53
|
-
{
|
|
54
|
-
onClose() {
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
);
|
|
58
|
-
const ToastImpl = React.forwardRef(
|
|
59
|
-
(props, forwardedRef) => {
|
|
60
|
-
const {
|
|
61
|
-
__scopeToast,
|
|
62
|
-
type = "foreground",
|
|
63
|
-
duration: durationProp,
|
|
64
|
-
open,
|
|
65
|
-
onClose,
|
|
66
|
-
onEscapeKeyDown,
|
|
67
|
-
onPause,
|
|
68
|
-
onResume,
|
|
69
|
-
onSwipeStart,
|
|
70
|
-
onSwipeMove,
|
|
71
|
-
onSwipeCancel,
|
|
72
|
-
onSwipeEnd,
|
|
73
|
-
viewportName = "default",
|
|
74
|
-
...toastProps
|
|
75
|
-
} = props;
|
|
76
|
-
const isPresent = useIsPresent();
|
|
77
|
-
const context = useToastProviderContext(TOAST_NAME, __scopeToast);
|
|
78
|
-
const [node, setNode] = React.useState(null);
|
|
79
|
-
const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
|
|
80
|
-
const duration = durationProp || context.duration;
|
|
81
|
-
const closeTimerStartTimeRef = React.useRef(0);
|
|
82
|
-
const closeTimerRemainingTimeRef = React.useRef(duration);
|
|
83
|
-
const closeTimerRef = React.useRef(0);
|
|
84
|
-
const { onToastAdd, onToastRemove } = context;
|
|
85
|
-
const viewport = React.useMemo(() => {
|
|
86
|
-
return context.viewports[viewportName];
|
|
87
|
-
}, [context.viewports, viewportName]);
|
|
88
|
-
const handleClose = useEvent(() => {
|
|
89
|
-
if (!isPresent) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (isWeb) {
|
|
93
|
-
const isFocusInToast = node?.contains(document.activeElement);
|
|
94
|
-
if (isFocusInToast)
|
|
95
|
-
viewport?.focus();
|
|
96
|
-
}
|
|
97
|
-
onClose();
|
|
98
|
-
});
|
|
99
|
-
const startTimer = React.useCallback(
|
|
100
|
-
(duration2) => {
|
|
101
|
-
if (!duration2 || duration2 === Infinity)
|
|
102
|
-
return;
|
|
103
|
-
clearTimeout(closeTimerRef.current);
|
|
104
|
-
closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();
|
|
105
|
-
closeTimerRef.current = setTimeout(handleClose, duration2);
|
|
106
|
-
},
|
|
107
|
-
[handleClose]
|
|
108
|
-
);
|
|
109
|
-
const handleResume = React.useCallback(() => {
|
|
110
|
-
startTimer(closeTimerRemainingTimeRef.current);
|
|
111
|
-
onResume?.();
|
|
112
|
-
}, [onResume, startTimer]);
|
|
113
|
-
const handlePause = React.useCallback(() => {
|
|
114
|
-
const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;
|
|
115
|
-
closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;
|
|
116
|
-
window.clearTimeout(closeTimerRef.current);
|
|
117
|
-
onPause?.();
|
|
118
|
-
}, [onPause]);
|
|
119
|
-
React.useEffect(() => {
|
|
120
|
-
if (!isWeb)
|
|
121
|
-
return;
|
|
122
|
-
if (viewport) {
|
|
123
|
-
viewport.addEventListener(VIEWPORT_PAUSE, handlePause);
|
|
124
|
-
viewport.addEventListener(VIEWPORT_RESUME, handleResume);
|
|
125
|
-
return () => {
|
|
126
|
-
viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);
|
|
127
|
-
viewport.removeEventListener(VIEWPORT_RESUME, handleResume);
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
}, [viewport, duration, onPause, onResume, startTimer]);
|
|
131
|
-
React.useEffect(() => {
|
|
132
|
-
if (open && !context.isClosePausedRef.current) {
|
|
133
|
-
startTimer(duration);
|
|
134
|
-
}
|
|
135
|
-
}, [open, duration, context.isClosePausedRef, startTimer]);
|
|
136
|
-
React.useEffect(() => {
|
|
137
|
-
onToastAdd();
|
|
138
|
-
return () => onToastRemove();
|
|
139
|
-
}, [onToastAdd, onToastRemove]);
|
|
140
|
-
const announceTextContent = React.useMemo(() => {
|
|
141
|
-
if (!isWeb)
|
|
142
|
-
return null;
|
|
143
|
-
return node ? getAnnounceTextContent(node) : null;
|
|
144
|
-
}, [node]);
|
|
145
|
-
const isHorizontalSwipe = ["left", "right", "horizontal"].includes(
|
|
146
|
-
context.swipeDirection
|
|
147
|
-
);
|
|
148
|
-
const driver = useAnimationDriver();
|
|
149
|
-
if (!driver) {
|
|
150
|
-
throw new Error("Must set animations in tamagui.config.ts");
|
|
151
|
-
}
|
|
152
|
-
const { useAnimatedNumber, useAnimatedNumberStyle } = driver;
|
|
153
|
-
const animatedNumber = useAnimatedNumber(0);
|
|
154
|
-
const AnimatedView = driver["NumberView"] ?? driver.View;
|
|
155
|
-
const animatedStyles = useAnimatedNumberStyle(animatedNumber, (val) => {
|
|
156
|
-
"worklet";
|
|
157
|
-
return {
|
|
158
|
-
transform: [isHorizontalSwipe ? { translateX: val } : { translateY: val }]
|
|
159
|
-
};
|
|
160
|
-
});
|
|
161
|
-
const panResponder = React.useMemo(() => {
|
|
162
|
-
return PanResponder.create({
|
|
163
|
-
onMoveShouldSetPanResponder: (e, gesture) => {
|
|
164
|
-
const shouldMove = shouldGrantGestureMove(context.swipeDirection, gesture);
|
|
165
|
-
if (shouldMove) {
|
|
166
|
-
onSwipeStart?.(e);
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
return false;
|
|
170
|
-
},
|
|
171
|
-
onPanResponderGrant: (e) => {
|
|
172
|
-
if (!isWeb) {
|
|
173
|
-
handlePause?.();
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
onPanResponderMove: (e, gesture) => {
|
|
177
|
-
const { x, y } = getGestureDistance(context.swipeDirection, gesture);
|
|
178
|
-
const delta = { x, y };
|
|
179
|
-
animatedNumber.setValue(isHorizontalSwipe ? x : y, { type: "direct" });
|
|
180
|
-
if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {
|
|
181
|
-
onSwipeEnd?.(e);
|
|
182
|
-
}
|
|
183
|
-
onSwipeMove?.(e);
|
|
184
|
-
},
|
|
185
|
-
onPanResponderEnd: (e, { dx, dy }) => {
|
|
186
|
-
if (!isDeltaInDirection(
|
|
187
|
-
{ x: dx, y: dy },
|
|
188
|
-
context.swipeDirection,
|
|
189
|
-
context.swipeThreshold
|
|
190
|
-
)) {
|
|
191
|
-
if (!isWeb) {
|
|
192
|
-
handleResume?.();
|
|
193
|
-
}
|
|
194
|
-
onSwipeCancel?.(e);
|
|
195
|
-
animatedNumber.setValue(0, { type: "spring" });
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
}, [handlePause, handleResume]);
|
|
200
|
-
const themeName = useThemeName();
|
|
201
|
-
return <>
|
|
202
|
-
{announceTextContent && <ToastAnnounce
|
|
203
|
-
__scopeToast={__scopeToast}
|
|
204
|
-
role="status"
|
|
205
|
-
aria-live={type === "foreground" ? "assertive" : "polite"}
|
|
206
|
-
aria-atomic
|
|
207
|
-
>{announceTextContent}</ToastAnnounce>}
|
|
208
|
-
<PortalItem hostName={viewportName ?? "default"}><ToastInteractiveProvider
|
|
209
|
-
key={props.id}
|
|
210
|
-
scope={__scopeToast}
|
|
211
|
-
onClose={() => {
|
|
212
|
-
handleClose();
|
|
213
|
-
}}
|
|
214
|
-
><Dismissable
|
|
215
|
-
onEscapeKeyDown={composeEventHandlers(onEscapeKeyDown, () => {
|
|
216
|
-
if (!context.isFocusedToastEscapeKeyDownRef.current) {
|
|
217
|
-
handleClose();
|
|
218
|
-
}
|
|
219
|
-
context.isFocusedToastEscapeKeyDownRef.current = false;
|
|
220
|
-
})}
|
|
221
|
-
><Theme forceClassName name={themeName}><AnimatedView
|
|
222
|
-
{...panResponder?.panHandlers}
|
|
223
|
-
style={[{ margin: "auto" }, animatedStyles]}
|
|
224
|
-
><Collection.ItemSlot scope={__scopeToast}><ToastImplFrame
|
|
225
|
-
role="status"
|
|
226
|
-
aria-live="off"
|
|
227
|
-
aria-atomic
|
|
228
|
-
data-state={open ? "open" : "closed"}
|
|
229
|
-
data-swipe-direction={context.swipeDirection}
|
|
230
|
-
pointerEvents="auto"
|
|
231
|
-
userSelect="none"
|
|
232
|
-
{...toastProps}
|
|
233
|
-
ref={composedRefs}
|
|
234
|
-
{...isWeb && {
|
|
235
|
-
onKeyDown: composeEventHandlers(
|
|
236
|
-
props.onKeyDown,
|
|
237
|
-
(event) => {
|
|
238
|
-
if (event.key !== "Escape")
|
|
239
|
-
return;
|
|
240
|
-
onEscapeKeyDown?.(event);
|
|
241
|
-
onEscapeKeyDown?.(event);
|
|
242
|
-
if (!event.defaultPrevented) {
|
|
243
|
-
context.isFocusedToastEscapeKeyDownRef.current = true;
|
|
244
|
-
handleClose();
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
)
|
|
248
|
-
}}
|
|
249
|
-
/></Collection.ItemSlot></AnimatedView></Theme></Dismissable></ToastInteractiveProvider></PortalItem>
|
|
250
|
-
</>;
|
|
251
|
-
}
|
|
252
|
-
);
|
|
253
|
-
ToastImpl.propTypes = {
|
|
254
|
-
type(props) {
|
|
255
|
-
if (props.type && !["foreground", "background"].includes(props.type)) {
|
|
256
|
-
const error = `Invalid prop \`type\` supplied to \`${TOAST_NAME}\`. Expected \`foreground | background\`.`;
|
|
257
|
-
return new Error(error);
|
|
258
|
-
}
|
|
259
|
-
return null;
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
|
-
const isDeltaInDirection = (delta, direction, threshold = 0) => {
|
|
263
|
-
const deltaX = Math.abs(delta.x);
|
|
264
|
-
const deltaY = Math.abs(delta.y);
|
|
265
|
-
const isDeltaX = deltaX > deltaY;
|
|
266
|
-
if (direction === "left" || direction === "right" || direction === "horizontal") {
|
|
267
|
-
return isDeltaX && deltaX > threshold;
|
|
268
|
-
} else {
|
|
269
|
-
return !isDeltaX && deltaY > threshold;
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
function getAnnounceTextContent(container) {
|
|
273
|
-
if (!isWeb)
|
|
274
|
-
return "";
|
|
275
|
-
const textContent = [];
|
|
276
|
-
const childNodes = Array.from(container.childNodes);
|
|
277
|
-
childNodes.forEach((node) => {
|
|
278
|
-
if (node.nodeType === node.TEXT_NODE && node.textContent)
|
|
279
|
-
textContent.push(node.textContent);
|
|
280
|
-
if (isHTMLElement(node)) {
|
|
281
|
-
const isHidden = node.ariaHidden || node.hidden || node.style.display === "none";
|
|
282
|
-
const isExcluded = node.dataset.toastAnnounceExclude === "";
|
|
283
|
-
if (!isHidden) {
|
|
284
|
-
if (isExcluded) {
|
|
285
|
-
const altText = node.dataset.toastAnnounceAlt;
|
|
286
|
-
if (altText)
|
|
287
|
-
textContent.push(altText);
|
|
288
|
-
} else {
|
|
289
|
-
textContent.push(...getAnnounceTextContent(node));
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
});
|
|
294
|
-
return textContent;
|
|
295
|
-
}
|
|
296
|
-
function isHTMLElement(node) {
|
|
297
|
-
return node.nodeType === node.ELEMENT_NODE;
|
|
298
|
-
}
|
|
299
|
-
const GESTURE_GRANT_THRESHOLD = 10;
|
|
300
|
-
const shouldGrantGestureMove = (dir, { dx, dy }) => {
|
|
301
|
-
if ((dir === "horizontal" || dir === "left") && dx < -GESTURE_GRANT_THRESHOLD) {
|
|
302
|
-
return true;
|
|
303
|
-
} else if ((dir === "horizontal" || dir === "right") && dx > GESTURE_GRANT_THRESHOLD) {
|
|
304
|
-
return true;
|
|
305
|
-
} else if ((dir === "vertical" || dir === "up") && dy > -GESTURE_GRANT_THRESHOLD) {
|
|
306
|
-
return true;
|
|
307
|
-
} else if ((dir === "vertical" || dir === "down") && dy < GESTURE_GRANT_THRESHOLD) {
|
|
308
|
-
return true;
|
|
309
|
-
}
|
|
310
|
-
return false;
|
|
311
|
-
};
|
|
312
|
-
const getGestureDistance = (dir, { dx, dy }) => {
|
|
313
|
-
let y = 0;
|
|
314
|
-
let x = 0;
|
|
315
|
-
if (dir === "horizontal")
|
|
316
|
-
x = dx;
|
|
317
|
-
else if (dir === "left")
|
|
318
|
-
x = Math.min(0, dx);
|
|
319
|
-
else if (dir === "right")
|
|
320
|
-
x = Math.max(0, dx);
|
|
321
|
-
else if (dir === "vertical")
|
|
322
|
-
y = dy;
|
|
323
|
-
else if (dir === "up")
|
|
324
|
-
y = Math.min(0, dy);
|
|
325
|
-
else if (dir === "down")
|
|
326
|
-
y = Math.max(0, dy);
|
|
327
|
-
return {
|
|
328
|
-
x,
|
|
329
|
-
y
|
|
330
|
-
};
|
|
331
|
-
};
|
|
332
|
-
export {
|
|
333
|
-
ToastImpl,
|
|
334
|
-
ToastImplFrame,
|
|
335
|
-
useToastInteractiveContext
|
|
336
|
-
};
|
|
337
|
-
//# sourceMappingURL=ToastImpl.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/ToastImpl.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["node", "duration"]
|
|
6
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { createCollection } from "@tamagui/collection";
|
|
2
|
-
import { createContextScope } from "@tamagui/create-context";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { ToastImperativeProvider } from "./ToastImperative";
|
|
5
|
-
const PROVIDER_NAME = "ToastProvider";
|
|
6
|
-
const [Collection, useCollection, createCollectionScope] = createCollection("Toast");
|
|
7
|
-
const [createToastContext, createToastScope] = createContextScope("Toast", [
|
|
8
|
-
createCollectionScope
|
|
9
|
-
]);
|
|
10
|
-
const [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);
|
|
11
|
-
const ToastProvider = (props) => {
|
|
12
|
-
const {
|
|
13
|
-
__scopeToast,
|
|
14
|
-
id: providedId,
|
|
15
|
-
burntOptions,
|
|
16
|
-
native,
|
|
17
|
-
notificationOptions,
|
|
18
|
-
label = "Notification",
|
|
19
|
-
duration = 5e3,
|
|
20
|
-
swipeDirection = "right",
|
|
21
|
-
swipeThreshold = 50,
|
|
22
|
-
children
|
|
23
|
-
} = props;
|
|
24
|
-
const id = providedId ?? React.useId();
|
|
25
|
-
const [viewports, setViewports] = React.useState({});
|
|
26
|
-
const [toastCount, setToastCount] = React.useState(0);
|
|
27
|
-
const isFocusedToastEscapeKeyDownRef = React.useRef(false);
|
|
28
|
-
const isClosePausedRef = React.useRef(false);
|
|
29
|
-
const handleViewportChange = React.useCallback(
|
|
30
|
-
(name, viewport) => {
|
|
31
|
-
setViewports((prev) => ({ ...prev, [name]: viewport }));
|
|
32
|
-
},
|
|
33
|
-
[]
|
|
34
|
-
);
|
|
35
|
-
const options = React.useMemo(() => {
|
|
36
|
-
return {
|
|
37
|
-
duration,
|
|
38
|
-
burntOptions,
|
|
39
|
-
native,
|
|
40
|
-
notificationOptions
|
|
41
|
-
};
|
|
42
|
-
}, [JSON.stringify([duration, burntOptions, native, notificationOptions])]);
|
|
43
|
-
return <Collection.Provider scope={__scopeToast}><ToastProviderProvider
|
|
44
|
-
scope={__scopeToast}
|
|
45
|
-
id={id}
|
|
46
|
-
label={label}
|
|
47
|
-
duration={duration}
|
|
48
|
-
swipeDirection={swipeDirection}
|
|
49
|
-
swipeThreshold={swipeThreshold}
|
|
50
|
-
toastCount={toastCount}
|
|
51
|
-
viewports={viewports}
|
|
52
|
-
onViewportChange={handleViewportChange}
|
|
53
|
-
onToastAdd={React.useCallback(() => {
|
|
54
|
-
setToastCount((prevCount) => prevCount + 1);
|
|
55
|
-
}, [])}
|
|
56
|
-
onToastRemove={React.useCallback(() => {
|
|
57
|
-
setToastCount((prevCount) => prevCount - 1);
|
|
58
|
-
}, [])}
|
|
59
|
-
isFocusedToastEscapeKeyDownRef={isFocusedToastEscapeKeyDownRef}
|
|
60
|
-
isClosePausedRef={isClosePausedRef}
|
|
61
|
-
><ToastImperativeProvider options={options}>{children}</ToastImperativeProvider></ToastProviderProvider></Collection.Provider>;
|
|
62
|
-
};
|
|
63
|
-
ToastProvider.propTypes = {
|
|
64
|
-
label(props) {
|
|
65
|
-
if (props.label && typeof props.label === "string" && !props.label.trim()) {
|
|
66
|
-
const error = `Invalid prop \`label\` supplied to \`${PROVIDER_NAME}\`. Expected non-empty \`string\`.`;
|
|
67
|
-
return new Error(error);
|
|
68
|
-
}
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
ToastProvider.displayName = PROVIDER_NAME;
|
|
73
|
-
export {
|
|
74
|
-
Collection,
|
|
75
|
-
ToastProvider,
|
|
76
|
-
createToastContext,
|
|
77
|
-
createToastScope,
|
|
78
|
-
useCollection,
|
|
79
|
-
useToastProviderContext
|
|
80
|
-
};
|
|
81
|
-
//# sourceMappingURL=ToastProvider.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/ToastProvider.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,wBAAwB;AAGjC,SAAS,0BAA0B;AACnC,YAAY,WAAW;AAEvB,SAAS,+BAA+B;AAOxC,MAAM,gBAAgB;AAEtB,MAAM,CAAC,YAAY,eAAe,qBAAqB,IACrD,iBAAiC,OAAO;AAoB1C,MAAM,CAAC,oBAAoB,gBAAgB,IAAI,mBAAmB,SAAS;AAAA,EACzE;AACF,CAAC;AACD,MAAM,CAAC,uBAAuB,uBAAuB,IACnD,mBAA8C,aAAa;AA4C7D,MAAM,gBAA8C,CAClD,UACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB;AAAA,EACF,IAAI;AACJ,QAAM,KAAK,cAAc,MAAM,MAAM;AACrC,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAEtC,CAAC,CAAC;AACJ,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,CAAC;AACpD,QAAM,iCAAiC,MAAM,OAAO,KAAK;AACzD,QAAM,mBAAmB,MAAM,OAAO,KAAK;AAE3C,QAAM,uBAAuB,MAAM;AAAA,IACjC,CAAC,MAAc,aAAoC;AACjD,mBAAa,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE;AAAA,IACxD;AAAA,IACA,CAAC;AAAA,EACH;AAGA,QAAM,UAAU,MAAM,QAAQ,MAAM;AAClC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EAEF,GAAG,CAAC,KAAK,UAAU,CAAC,UAAU,cAAc,QAAQ,mBAAmB,CAAC,CAAC,CAAC;AAE1E,SACE,CAAC,WAAW,SAAS,OAAO,cAC1B,CAAC;AAAA,IACC,OAAO;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,YAAY,MAAM,YAAY,MAAM;AAClC,oBAAc,CAAC,cAAc,YAAY,CAAC;AAAA,IAC5C,GAAG,CAAC,CAAC;AAAA,IACL,eAAe,MAAM,YAAY,MAAM;AACrC,oBAAc,CAAC,cAAc,YAAY,CAAC;AAAA,IAC5C,GAAG,CAAC,CAAC;AAAA,IACL,gCAAgC;AAAA,IAChC,kBAAkB;AAAA,GAElB,CAAC,wBAAwB,SAAS,UAAU,SAAS,EAApD,wBACH,EApBC,sBAqBH,EAtBC,WAAW;AAwBhB;AAEA,cAAc,YAAY;AAAA,EACxB,MAAM,OAAO;AACX,QAAI,MAAM,SAAS,OAAO,MAAM,UAAU,YAAY,CAAC,MAAM,MAAM,KAAK,GAAG;AACzE,YAAM,QAAQ,wCAAwC;AACtD,aAAO,IAAI,MAAM,KAAK;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AACF;AAEA,cAAc,cAAc;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
import { AnimatePresence } from "@tamagui/animate-presence";
|
|
2
|
-
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
3
|
-
import { isWeb, styled } from "@tamagui/core";
|
|
4
|
-
import { PortalHost } from "@tamagui/portal";
|
|
5
|
-
import { YStack } from "@tamagui/stacks";
|
|
6
|
-
import { VisuallyHidden } from "@tamagui/visually-hidden";
|
|
7
|
-
import * as React from "react";
|
|
8
|
-
import {
|
|
9
|
-
Collection,
|
|
10
|
-
useCollection,
|
|
11
|
-
useToastProviderContext
|
|
12
|
-
} from "./ToastProvider";
|
|
13
|
-
const VIEWPORT_NAME = "ToastViewport";
|
|
14
|
-
const VIEWPORT_DEFAULT_HOTKEY = ["F8"];
|
|
15
|
-
const VIEWPORT_PAUSE = "toast.viewportPause";
|
|
16
|
-
const VIEWPORT_RESUME = "toast.viewportResume";
|
|
17
|
-
const ToastViewportWrapperFrame = styled(YStack, {
|
|
18
|
-
name: "ViewportWrapper",
|
|
19
|
-
variants: {
|
|
20
|
-
unstyled: {
|
|
21
|
-
false: {
|
|
22
|
-
pointerEvents: "box-none",
|
|
23
|
-
top: 0,
|
|
24
|
-
bottom: 0,
|
|
25
|
-
left: 0,
|
|
26
|
-
right: 0,
|
|
27
|
-
position: isWeb ? "fixed" : "absolute",
|
|
28
|
-
maxWidth: "100%",
|
|
29
|
-
tabIndex: 0,
|
|
30
|
-
zIndex: 1e5
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
defaultVariants: {
|
|
35
|
-
unstyled: false
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
const ToastViewportFrame = styled(YStack, {
|
|
39
|
-
name: VIEWPORT_NAME,
|
|
40
|
-
variants: {
|
|
41
|
-
unstyled: {
|
|
42
|
-
false: {
|
|
43
|
-
pointerEvents: "box-none",
|
|
44
|
-
position: isWeb ? "fixed" : "absolute",
|
|
45
|
-
maxWidth: "100%"
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
defaultVariants: {
|
|
50
|
-
unstyled: false
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
const ToastViewport = React.forwardRef(
|
|
54
|
-
(props, forwardedRef) => {
|
|
55
|
-
const {
|
|
56
|
-
__scopeToast,
|
|
57
|
-
hotkey = VIEWPORT_DEFAULT_HOTKEY,
|
|
58
|
-
label = "Notifications ({hotkey})",
|
|
59
|
-
name = "default",
|
|
60
|
-
multipleToasts,
|
|
61
|
-
...viewportProps
|
|
62
|
-
} = props;
|
|
63
|
-
const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);
|
|
64
|
-
const getItems = useCollection(__scopeToast);
|
|
65
|
-
const headFocusProxyRef = React.useRef(null);
|
|
66
|
-
const tailFocusProxyRef = React.useRef(null);
|
|
67
|
-
const wrapperRef = React.useRef(null);
|
|
68
|
-
const ref = React.useRef(null);
|
|
69
|
-
const onViewportChange = React.useCallback(
|
|
70
|
-
(el) => {
|
|
71
|
-
if (context.viewports[name] !== el)
|
|
72
|
-
context.onViewportChange(name, el);
|
|
73
|
-
},
|
|
74
|
-
[name, context.viewports]
|
|
75
|
-
);
|
|
76
|
-
const composedRefs = useComposedRefs(forwardedRef, ref, onViewportChange);
|
|
77
|
-
const hotkeyLabel = hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, "");
|
|
78
|
-
const hasToasts = context.toastCount > 0;
|
|
79
|
-
React.useEffect(() => {
|
|
80
|
-
if (!isWeb)
|
|
81
|
-
return;
|
|
82
|
-
if (context.toastCount === 0)
|
|
83
|
-
return;
|
|
84
|
-
const handleKeyDown = (event) => {
|
|
85
|
-
const isHotkeyPressed = hotkey.every(
|
|
86
|
-
(key) => event[key] || event.code === key
|
|
87
|
-
);
|
|
88
|
-
if (isHotkeyPressed)
|
|
89
|
-
ref.current?.focus();
|
|
90
|
-
};
|
|
91
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
92
|
-
return () => {
|
|
93
|
-
document.removeEventListener("keydown", handleKeyDown);
|
|
94
|
-
};
|
|
95
|
-
}, [hotkey, context.toastCount]);
|
|
96
|
-
React.useEffect(() => {
|
|
97
|
-
if (!isWeb)
|
|
98
|
-
return;
|
|
99
|
-
if (context.toastCount === 0)
|
|
100
|
-
return;
|
|
101
|
-
const wrapper = wrapperRef.current;
|
|
102
|
-
const viewport = ref.current;
|
|
103
|
-
if (hasToasts && wrapper && viewport) {
|
|
104
|
-
const handlePause = () => {
|
|
105
|
-
if (!context.isClosePausedRef.current) {
|
|
106
|
-
const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);
|
|
107
|
-
viewport.dispatchEvent(pauseEvent);
|
|
108
|
-
context.isClosePausedRef.current = true;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
const handleResume = () => {
|
|
112
|
-
if (context.isClosePausedRef.current) {
|
|
113
|
-
const resumeEvent = new CustomEvent(VIEWPORT_RESUME);
|
|
114
|
-
viewport.dispatchEvent(resumeEvent);
|
|
115
|
-
context.isClosePausedRef.current = false;
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
const handleFocusOutResume = (event) => {
|
|
119
|
-
const isFocusMovingOutside = !wrapper.contains(
|
|
120
|
-
event.relatedTarget
|
|
121
|
-
);
|
|
122
|
-
if (isFocusMovingOutside)
|
|
123
|
-
handleResume();
|
|
124
|
-
};
|
|
125
|
-
const handlePointerLeaveResume = () => {
|
|
126
|
-
const isFocusInside = wrapper.contains(document.activeElement);
|
|
127
|
-
if (!isFocusInside)
|
|
128
|
-
handleResume();
|
|
129
|
-
};
|
|
130
|
-
wrapper.addEventListener("focusin", handlePause);
|
|
131
|
-
wrapper.addEventListener("focusout", handleFocusOutResume);
|
|
132
|
-
wrapper.addEventListener("pointermove", handlePause);
|
|
133
|
-
wrapper.addEventListener("pointerleave", handlePointerLeaveResume);
|
|
134
|
-
window.addEventListener("blur", handlePause);
|
|
135
|
-
window.addEventListener("focus", handleResume);
|
|
136
|
-
return () => {
|
|
137
|
-
wrapper.removeEventListener("focusin", handlePause);
|
|
138
|
-
wrapper.removeEventListener("focusout", handleFocusOutResume);
|
|
139
|
-
wrapper.removeEventListener("pointermove", handlePause);
|
|
140
|
-
wrapper.removeEventListener("pointerleave", handlePointerLeaveResume);
|
|
141
|
-
window.removeEventListener("blur", handlePause);
|
|
142
|
-
window.removeEventListener("focus", handleResume);
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
}, [hasToasts, context.isClosePausedRef, context.toastCount]);
|
|
146
|
-
const getSortedTabbableCandidates = React.useCallback(
|
|
147
|
-
({ tabbingDirection }) => {
|
|
148
|
-
const toastItems = getItems();
|
|
149
|
-
const tabbableCandidates = toastItems.map((toastItem) => {
|
|
150
|
-
const toastNode = toastItem.ref.current;
|
|
151
|
-
const toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];
|
|
152
|
-
return tabbingDirection === "forwards" ? toastTabbableCandidates : toastTabbableCandidates.reverse();
|
|
153
|
-
});
|
|
154
|
-
return (tabbingDirection === "forwards" ? tabbableCandidates.reverse() : tabbableCandidates).flat();
|
|
155
|
-
},
|
|
156
|
-
[getItems]
|
|
157
|
-
);
|
|
158
|
-
React.useEffect(() => {
|
|
159
|
-
if (!isWeb)
|
|
160
|
-
return;
|
|
161
|
-
if (context.toastCount === 0)
|
|
162
|
-
return;
|
|
163
|
-
const viewport = ref.current;
|
|
164
|
-
if (viewport) {
|
|
165
|
-
const handleKeyDown = (event) => {
|
|
166
|
-
const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;
|
|
167
|
-
const isTabKey = event.key === "Tab" && !isMetaKey;
|
|
168
|
-
if (isTabKey) {
|
|
169
|
-
const focusedElement = document.activeElement;
|
|
170
|
-
const isTabbingBackwards = event.shiftKey;
|
|
171
|
-
const targetIsViewport = event.target === viewport;
|
|
172
|
-
if (targetIsViewport && isTabbingBackwards) {
|
|
173
|
-
headFocusProxyRef.current?.focus();
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
const tabbingDirection = isTabbingBackwards ? "backwards" : "forwards";
|
|
177
|
-
const sortedCandidates = getSortedTabbableCandidates({ tabbingDirection });
|
|
178
|
-
const index = sortedCandidates.findIndex(
|
|
179
|
-
(candidate) => candidate === focusedElement
|
|
180
|
-
);
|
|
181
|
-
if (focusFirst(sortedCandidates.slice(index + 1))) {
|
|
182
|
-
event.preventDefault();
|
|
183
|
-
} else {
|
|
184
|
-
isTabbingBackwards ? (
|
|
185
|
-
// @ts-ignore ali TODO type
|
|
186
|
-
headFocusProxyRef.current?.focus()
|
|
187
|
-
) : (
|
|
188
|
-
// @ts-ignore ali TODO type
|
|
189
|
-
tailFocusProxyRef.current?.focus()
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
viewport.addEventListener("keydown", handleKeyDown);
|
|
195
|
-
return () => viewport.removeEventListener("keydown", handleKeyDown);
|
|
196
|
-
}
|
|
197
|
-
}, [getItems, getSortedTabbableCandidates, context.toastCount]);
|
|
198
|
-
return <ToastViewportWrapperFrame
|
|
199
|
-
ref={wrapperRef}
|
|
200
|
-
role="region"
|
|
201
|
-
aria-label={label.replace("{hotkey}", hotkeyLabel)}
|
|
202
|
-
tabIndex={-1}
|
|
203
|
-
>
|
|
204
|
-
{hasToasts && <FocusProxy
|
|
205
|
-
viewportName={name}
|
|
206
|
-
ref={headFocusProxyRef}
|
|
207
|
-
onFocusFromOutsideViewport={() => {
|
|
208
|
-
const tabbableCandidates = getSortedTabbableCandidates({
|
|
209
|
-
tabbingDirection: "forwards"
|
|
210
|
-
});
|
|
211
|
-
focusFirst(tabbableCandidates);
|
|
212
|
-
}}
|
|
213
|
-
/>}
|
|
214
|
-
{
|
|
215
|
-
/**
|
|
216
|
-
* tabindex on the the list so that it can be focused when items are removed. we focus
|
|
217
|
-
* the list instead of the viewport so it announces number of items remaining.
|
|
218
|
-
*/
|
|
219
|
-
}
|
|
220
|
-
<Collection.Slot scope={__scopeToast}><ToastViewportFrame
|
|
221
|
-
focusable={context.toastCount > 0}
|
|
222
|
-
ref={composedRefs}
|
|
223
|
-
{...viewportProps}
|
|
224
|
-
><PortalHost
|
|
225
|
-
render={(children) => <AnimatePresence exitBeforeEnter={!multipleToasts}>{children}</AnimatePresence>}
|
|
226
|
-
name={name ?? "default"}
|
|
227
|
-
/></ToastViewportFrame></Collection.Slot>
|
|
228
|
-
{hasToasts && <FocusProxy
|
|
229
|
-
viewportName={name}
|
|
230
|
-
ref={tailFocusProxyRef}
|
|
231
|
-
onFocusFromOutsideViewport={() => {
|
|
232
|
-
const tabbableCandidates = getSortedTabbableCandidates({
|
|
233
|
-
tabbingDirection: "backwards"
|
|
234
|
-
});
|
|
235
|
-
focusFirst(tabbableCandidates);
|
|
236
|
-
}}
|
|
237
|
-
/>}
|
|
238
|
-
</ToastViewportWrapperFrame>;
|
|
239
|
-
}
|
|
240
|
-
);
|
|
241
|
-
ToastViewport.displayName = VIEWPORT_NAME;
|
|
242
|
-
const FOCUS_PROXY_NAME = "ToastFocusProxy";
|
|
243
|
-
const FocusProxy = React.forwardRef(
|
|
244
|
-
(props, forwardedRef) => {
|
|
245
|
-
const { __scopeToast, onFocusFromOutsideViewport, viewportName, ...proxyProps } = props;
|
|
246
|
-
const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);
|
|
247
|
-
const viewport = context.viewports[viewportName];
|
|
248
|
-
return <VisuallyHidden
|
|
249
|
-
aria-hidden
|
|
250
|
-
tabIndex={0}
|
|
251
|
-
{...proxyProps}
|
|
252
|
-
ref={forwardedRef}
|
|
253
|
-
position={isWeb ? "fixed" : "absolute"}
|
|
254
|
-
onFocus={(event) => {
|
|
255
|
-
if (!isWeb)
|
|
256
|
-
return;
|
|
257
|
-
const prevFocusedElement = event.relatedTarget;
|
|
258
|
-
const isFocusFromOutsideViewport = !viewport?.contains(prevFocusedElement);
|
|
259
|
-
if (isFocusFromOutsideViewport)
|
|
260
|
-
onFocusFromOutsideViewport();
|
|
261
|
-
}}
|
|
262
|
-
/>;
|
|
263
|
-
}
|
|
264
|
-
);
|
|
265
|
-
FocusProxy.displayName = FOCUS_PROXY_NAME;
|
|
266
|
-
function focusFirst(candidates) {
|
|
267
|
-
if (!isWeb)
|
|
268
|
-
return;
|
|
269
|
-
const previouslyFocusedElement = document.activeElement;
|
|
270
|
-
return candidates.some((candidate) => {
|
|
271
|
-
if (candidate === previouslyFocusedElement)
|
|
272
|
-
return true;
|
|
273
|
-
candidate.focus();
|
|
274
|
-
return document.activeElement !== previouslyFocusedElement;
|
|
275
|
-
});
|
|
276
|
-
}
|
|
277
|
-
function getTabbableCandidates(container) {
|
|
278
|
-
if (!isWeb)
|
|
279
|
-
return [];
|
|
280
|
-
const containerHtml = container;
|
|
281
|
-
const nodes = [];
|
|
282
|
-
const walker = document.createTreeWalker(containerHtml, NodeFilter.SHOW_ELEMENT, {
|
|
283
|
-
acceptNode: (node) => {
|
|
284
|
-
const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
|
|
285
|
-
if (node.disabled || node.hidden || isHiddenInput)
|
|
286
|
-
return NodeFilter.FILTER_SKIP;
|
|
287
|
-
return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
288
|
-
}
|
|
289
|
-
});
|
|
290
|
-
while (walker.nextNode())
|
|
291
|
-
nodes.push(walker.currentNode);
|
|
292
|
-
return nodes;
|
|
293
|
-
}
|
|
294
|
-
export {
|
|
295
|
-
ToastViewport,
|
|
296
|
-
VIEWPORT_DEFAULT_HOTKEY,
|
|
297
|
-
VIEWPORT_PAUSE,
|
|
298
|
-
VIEWPORT_RESUME
|
|
299
|
-
};
|
|
300
|
-
//# sourceMappingURL=ToastViewport.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/ToastViewport.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/constants.mjs
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
const createNativeToast = (title, { message, notificationOptions }) => {
|
|
2
|
-
if (!("Notification" in window)) {
|
|
3
|
-
console.error("This browser does not support notifications");
|
|
4
|
-
return false;
|
|
5
|
-
}
|
|
6
|
-
if (Notification.permission === "denied")
|
|
7
|
-
false;
|
|
8
|
-
const showNotification = () => {
|
|
9
|
-
const notification = new Notification(title, {
|
|
10
|
-
body: message,
|
|
11
|
-
...notificationOptions
|
|
12
|
-
});
|
|
13
|
-
return notification;
|
|
14
|
-
};
|
|
15
|
-
if (Notification.permission === "granted") {
|
|
16
|
-
const notification = showNotification();
|
|
17
|
-
return {
|
|
18
|
-
nativeToastRef: notification
|
|
19
|
-
};
|
|
20
|
-
} else {
|
|
21
|
-
Notification.requestPermission().then((permission) => {
|
|
22
|
-
if (permission === "granted") {
|
|
23
|
-
const notification = showNotification();
|
|
24
|
-
return {
|
|
25
|
-
nativeToastRef: notification
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return true;
|
|
31
|
-
};
|
|
32
|
-
const hideNativeToast = (ref) => {
|
|
33
|
-
if (!("Notification" in window)) {
|
|
34
|
-
console.error("This browser does not support notifications");
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (ref) {
|
|
38
|
-
ref.close();
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
export {
|
|
42
|
-
createNativeToast,
|
|
43
|
-
hideNativeToast
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=createNativeToast.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/createNativeToast.tsx"],
|
|
4
|
-
"mappings": "AAEO,MAAM,oBAA0C,CACrD,OACA,EAAE,SAAS,oBAAoB,MAC5B;AACH,MAAI,EAAE,kBAAkB,SAAS;AAC/B,YAAQ,MAAM,6CAA6C;AAC3D,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,eAAe;AAAU;AAC1C,QAAM,mBAAmB,MAAM;AAC7B,UAAM,eAAe,IAAI,aAAa,OAAO;AAAA,MAC3C,MAAM;AAAA,MACN,GAAG;AAAA,IACL,CAAC;AAED,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,eAAe,WAAW;AACzC,UAAM,eAAe,iBAAiB;AACtC,WAAO;AAAA,MACL,gBAAgB;AAAA,IAClB;AAAA,EACF,OAAO;AACL,iBAAa,kBAAkB,EAAE,KAAK,CAAC,eAAe;AACpD,UAAI,eAAe,WAAW;AAC5B,cAAM,eAAe,iBAAiB;AACtC,eAAO;AAAA,UACL,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,MAAM,kBAAsC,CAAC,QAAQ;AAC1D,MAAI,EAAE,kBAAkB,SAAS;AAC/B,YAAQ,MAAM,6CAA6C;AAC3D;AAAA,EACF;AAEA,MAAI,KAAK;AACP,QAAI,MAAM;AAAA,EACZ;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
const createNativeToast = (title, { message, duration, burntOptions }) => {
|
|
2
|
-
const Burnt = require("burnt");
|
|
3
|
-
Burnt.toast({
|
|
4
|
-
title,
|
|
5
|
-
message,
|
|
6
|
-
duration: duration ? duration * 1e3 : void 0,
|
|
7
|
-
...burntOptions
|
|
8
|
-
});
|
|
9
|
-
return true;
|
|
10
|
-
};
|
|
11
|
-
const hideNativeToast = () => {
|
|
12
|
-
const Burnt = require("burnt");
|
|
13
|
-
Burnt.dismissAllAlerts();
|
|
14
|
-
};
|
|
15
|
-
export {
|
|
16
|
-
createNativeToast,
|
|
17
|
-
hideNativeToast
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=createNativeToast.native.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/createNativeToast.native.tsx"],
|
|
4
|
-
"mappings": "AAEO,MAAM,oBAA0C,CACrD,OACA,EAAE,SAAS,UAAU,aAAa,MAC/B;AAEH,QAAM,QAAQ,QAAQ,OAAO;AAE7B,QAAM,MAAM;AAAA,IACV;AAAA,IACA;AAAA,IACA,UAAU,WAAW,WAAW,MAAO;AAAA,IACvC,GAAG;AAAA,EACL,CAAC;AACD,SAAO;AACT;AAEO,MAAM,kBAAsC,MAAM;AACvD,QAAM,QAAQ,QAAQ,OAAO;AAC7B,QAAM,iBAAiB;AACzB;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/index.mjs
DELETED
package/dist/jsx/index.mjs.map
DELETED
package/dist/jsx/types.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.mjs.map
|