@tamagui/toast 1.14.0 → 1.14.2
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/dist/cjs/Toast.js +185 -1
- package/dist/cjs/Toast.js.map +2 -2
- package/dist/cjs/ToastAnnounce.js +92 -1
- package/dist/cjs/ToastAnnounce.js.map +2 -2
- package/dist/cjs/ToastImperative.js +110 -1
- package/dist/cjs/ToastImperative.js.map +2 -2
- package/dist/cjs/ToastImpl.js +352 -1
- package/dist/cjs/ToastImpl.js.map +2 -2
- package/dist/cjs/ToastProvider.js +119 -1
- package/dist/cjs/ToastProvider.js.map +2 -2
- package/dist/cjs/ToastViewport.js +312 -1
- package/dist/cjs/ToastViewport.js.map +2 -2
- package/dist/cjs/constants.js +28 -1
- package/dist/cjs/constants.js.map +2 -2
- package/dist/cjs/createNativeToast.js +69 -1
- package/dist/cjs/createNativeToast.js.map +2 -2
- package/dist/cjs/createNativeToast.native.js +43 -1
- package/dist/cjs/createNativeToast.native.js.map +2 -2
- package/dist/cjs/index.js +18 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/types.js +16 -1
- package/dist/cjs/types.js.map +2 -2
- package/dist/esm/Toast.js +163 -1
- package/dist/esm/Toast.js.map +2 -2
- package/dist/esm/Toast.mjs +163 -1
- package/dist/esm/Toast.mjs.map +2 -2
- package/dist/esm/ToastAnnounce.js +63 -1
- package/dist/esm/ToastAnnounce.js.map +2 -2
- package/dist/esm/ToastAnnounce.mjs +63 -1
- package/dist/esm/ToastAnnounce.mjs.map +2 -2
- package/dist/esm/ToastImperative.js +73 -1
- package/dist/esm/ToastImperative.js.map +2 -2
- package/dist/esm/ToastImperative.mjs +73 -1
- package/dist/esm/ToastImperative.mjs.map +2 -2
- package/dist/esm/ToastImpl.js +328 -1
- package/dist/esm/ToastImpl.js.map +2 -2
- package/dist/esm/ToastImpl.mjs +328 -1
- package/dist/esm/ToastImpl.mjs.map +2 -2
- package/dist/esm/ToastProvider.js +80 -1
- package/dist/esm/ToastProvider.js.map +2 -2
- package/dist/esm/ToastProvider.mjs +80 -1
- package/dist/esm/ToastProvider.mjs.map +2 -2
- package/dist/esm/ToastViewport.js +279 -1
- package/dist/esm/ToastViewport.js.map +2 -2
- package/dist/esm/ToastViewport.mjs +279 -1
- package/dist/esm/ToastViewport.mjs.map +2 -2
- package/dist/esm/constants.js +4 -1
- package/dist/esm/constants.js.map +2 -2
- package/dist/esm/constants.mjs +4 -1
- package/dist/esm/constants.mjs.map +2 -2
- package/dist/esm/createNativeToast.js +44 -1
- package/dist/esm/createNativeToast.js.map +2 -2
- package/dist/esm/createNativeToast.mjs +44 -1
- package/dist/esm/createNativeToast.mjs.map +2 -2
- package/dist/esm/createNativeToast.native.js +18 -1
- package/dist/esm/createNativeToast.native.js.map +2 -2
- package/dist/esm/createNativeToast.native.mjs +18 -1
- package/dist/esm/createNativeToast.native.mjs.map +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/jsx/Toast.js +156 -1
- package/dist/jsx/Toast.js.map +2 -2
- package/dist/jsx/Toast.mjs +156 -1
- package/dist/jsx/Toast.mjs.map +2 -2
- package/dist/jsx/ToastAnnounce.js +59 -1
- package/dist/jsx/ToastAnnounce.js.map +2 -2
- package/dist/jsx/ToastAnnounce.mjs +59 -1
- package/dist/jsx/ToastAnnounce.mjs.map +2 -2
- package/dist/jsx/ToastImperative.js +72 -1
- package/dist/jsx/ToastImperative.js.map +2 -2
- package/dist/jsx/ToastImperative.mjs +72 -1
- package/dist/jsx/ToastImperative.mjs.map +2 -2
- package/dist/jsx/ToastImpl.js +307 -1
- package/dist/jsx/ToastImpl.js.map +2 -2
- package/dist/jsx/ToastImpl.mjs +307 -1
- package/dist/jsx/ToastImpl.mjs.map +2 -2
- package/dist/jsx/ToastProvider.js +75 -1
- package/dist/jsx/ToastProvider.js.map +2 -2
- package/dist/jsx/ToastProvider.mjs +75 -1
- package/dist/jsx/ToastProvider.mjs.map +2 -2
- package/dist/jsx/ToastViewport.js +259 -1
- package/dist/jsx/ToastViewport.js.map +2 -2
- package/dist/jsx/ToastViewport.mjs +259 -1
- package/dist/jsx/ToastViewport.mjs.map +2 -2
- package/dist/jsx/constants.js +4 -1
- package/dist/jsx/constants.js.map +2 -2
- package/dist/jsx/constants.mjs +4 -1
- package/dist/jsx/constants.mjs.map +2 -2
- package/dist/jsx/createNativeToast.js +44 -1
- package/dist/jsx/createNativeToast.js.map +2 -2
- package/dist/jsx/createNativeToast.mjs +44 -1
- package/dist/jsx/createNativeToast.mjs.map +2 -2
- package/dist/jsx/createNativeToast.native.js +18 -1
- package/dist/jsx/createNativeToast.native.js.map +2 -2
- package/dist/jsx/createNativeToast.native.mjs +18 -1
- package/dist/jsx/createNativeToast.native.mjs.map +2 -2
- package/dist/jsx/index.js +1 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +1 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/package.json +13 -13
package/dist/cjs/Toast.js
CHANGED
|
@@ -1,2 +1,186 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var Toast_exports = {};
|
|
30
|
+
__export(Toast_exports, {
|
|
31
|
+
Toast: () => Toast,
|
|
32
|
+
ToastProvider: () => import_ToastProvider.ToastProvider,
|
|
33
|
+
ToastViewport: () => import_ToastViewport.ToastViewport,
|
|
34
|
+
createToastScope: () => import_ToastProvider.createToastScope,
|
|
35
|
+
useToast: () => import_ToastImperative.useToast,
|
|
36
|
+
useToastController: () => import_ToastImperative.useToastController,
|
|
37
|
+
useToastState: () => import_ToastImperative.useToastState
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(Toast_exports);
|
|
40
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
|
+
var import_core = require("@tamagui/core");
|
|
42
|
+
var import_stacks = require("@tamagui/stacks");
|
|
43
|
+
var import_text = require("@tamagui/text");
|
|
44
|
+
var import_use_controllable_state = require("@tamagui/use-controllable-state");
|
|
45
|
+
var React = __toESM(require("react"));
|
|
46
|
+
var import_constants = require("./constants");
|
|
47
|
+
var import_ToastAnnounce = require("./ToastAnnounce");
|
|
48
|
+
var import_ToastImperative = require("./ToastImperative.js");
|
|
49
|
+
var import_ToastImpl = require("./ToastImpl");
|
|
50
|
+
var import_ToastProvider = require("./ToastProvider");
|
|
51
|
+
var import_ToastViewport = require("./ToastViewport");
|
|
52
|
+
const TITLE_NAME = "ToastTitle";
|
|
53
|
+
const ToastTitleFrame = (0, import_core.styled)(import_text.SizableText, {
|
|
54
|
+
name: TITLE_NAME,
|
|
55
|
+
variants: {
|
|
56
|
+
unstyled: {
|
|
57
|
+
false: {
|
|
58
|
+
color: "$color",
|
|
59
|
+
size: "$4"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
defaultVariants: {
|
|
64
|
+
unstyled: false
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
const ToastTitle = React.forwardRef(
|
|
68
|
+
(props, forwardedRef) => {
|
|
69
|
+
const { __scopeToast, ...titleProps } = props;
|
|
70
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToastTitleFrame, { ...titleProps, ref: forwardedRef });
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
ToastTitle.displayName = TITLE_NAME;
|
|
74
|
+
const DESCRIPTION_NAME = "ToastDescription";
|
|
75
|
+
const ToastDescriptionFrame = (0, import_core.styled)(import_text.SizableText, {
|
|
76
|
+
name: DESCRIPTION_NAME,
|
|
77
|
+
variants: {
|
|
78
|
+
unstyled: {
|
|
79
|
+
false: {
|
|
80
|
+
color: "$color11",
|
|
81
|
+
size: "$1"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
defaultVariants: {
|
|
86
|
+
unstyled: false
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
const ToastDescription = React.forwardRef(
|
|
90
|
+
(props, forwardedRef) => {
|
|
91
|
+
const { __scopeToast, ...descriptionProps } = props;
|
|
92
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToastDescriptionFrame, { ...descriptionProps, ref: forwardedRef });
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
ToastDescription.displayName = DESCRIPTION_NAME;
|
|
96
|
+
const ACTION_NAME = "ToastAction";
|
|
97
|
+
const ToastAction = React.forwardRef(
|
|
98
|
+
(props, forwardedRef) => {
|
|
99
|
+
const { altText, ...actionProps } = props;
|
|
100
|
+
if (!altText)
|
|
101
|
+
return null;
|
|
102
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ToastAnnounce.ToastAnnounceExclude, { altText, asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToastClose, { ...actionProps, ref: forwardedRef }) });
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
ToastAction.propTypes = {
|
|
106
|
+
altText(props) {
|
|
107
|
+
if (!props.altText) {
|
|
108
|
+
return new Error(`Missing prop \`altText\` expected on \`${ACTION_NAME}\``);
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
ToastAction.displayName = ACTION_NAME;
|
|
114
|
+
const CLOSE_NAME = "ToastClose";
|
|
115
|
+
const ToastCloseFrame = (0, import_core.styled)(import_stacks.ThemeableStack, {
|
|
116
|
+
name: CLOSE_NAME,
|
|
117
|
+
tag: "button"
|
|
118
|
+
});
|
|
119
|
+
const ToastClose = React.forwardRef(
|
|
120
|
+
(props, forwardedRef) => {
|
|
121
|
+
const { __scopeToast, ...closeProps } = props;
|
|
122
|
+
const interactiveContext = (0, import_ToastImpl.useToastInteractiveContext)(CLOSE_NAME, __scopeToast);
|
|
123
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ToastAnnounce.ToastAnnounceExclude, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
124
|
+
ToastCloseFrame,
|
|
125
|
+
{
|
|
126
|
+
accessibilityLabel: "Dialog Close",
|
|
127
|
+
...closeProps,
|
|
128
|
+
ref: forwardedRef,
|
|
129
|
+
onPress: (0, import_core.composeEventHandlers)(props.onPress, interactiveContext.onClose)
|
|
130
|
+
}
|
|
131
|
+
) });
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
ToastClose.displayName = CLOSE_NAME;
|
|
135
|
+
const ToastComponent = React.forwardRef(
|
|
136
|
+
import_ToastImpl.ToastImplFrame.extractable((props, forwardedRef) => {
|
|
137
|
+
const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;
|
|
138
|
+
const [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
|
|
139
|
+
prop: openProp,
|
|
140
|
+
defaultProp: defaultOpen ?? true,
|
|
141
|
+
onChange: onOpenChange
|
|
142
|
+
});
|
|
143
|
+
const id = (0, import_core.useId)();
|
|
144
|
+
const onPause = (0, import_core.useEvent)(props.onPause);
|
|
145
|
+
const onResume = (0, import_core.useEvent)(props.onResume);
|
|
146
|
+
const shouldShow = forceMount || open;
|
|
147
|
+
if (!shouldShow)
|
|
148
|
+
return null;
|
|
149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
150
|
+
import_ToastImpl.ToastImpl,
|
|
151
|
+
{
|
|
152
|
+
id,
|
|
153
|
+
open,
|
|
154
|
+
...toastProps,
|
|
155
|
+
ref: forwardedRef,
|
|
156
|
+
onClose: () => setOpen(false),
|
|
157
|
+
onPause,
|
|
158
|
+
onResume,
|
|
159
|
+
onSwipeEnd: (0, import_core.composeEventHandlers)(props.onSwipeEnd, (event) => {
|
|
160
|
+
setOpen(false);
|
|
161
|
+
})
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
})
|
|
165
|
+
);
|
|
166
|
+
ToastComponent.displayName = import_constants.TOAST_NAME;
|
|
167
|
+
const Toast = (0, import_core.withStaticProperties)(
|
|
168
|
+
(0, import_core.themeable)(ToastComponent, import_ToastImpl.ToastImplFrame.staticConfig),
|
|
169
|
+
{
|
|
170
|
+
Title: ToastTitle,
|
|
171
|
+
Description: ToastDescription,
|
|
172
|
+
Action: ToastAction,
|
|
173
|
+
Close: ToastClose
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
177
|
+
0 && (module.exports = {
|
|
178
|
+
Toast,
|
|
179
|
+
ToastProvider,
|
|
180
|
+
ToastViewport,
|
|
181
|
+
createToastScope,
|
|
182
|
+
useToast,
|
|
183
|
+
useToastController,
|
|
184
|
+
useToastState
|
|
185
|
+
});
|
|
2
186
|
//# sourceMappingURL=Toast.js.map
|
package/dist/cjs/Toast.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Toast.tsx"],
|
|
4
4
|
"sourcesContent": ["import {\n GetProps,\n TamaguiElement,\n composeEventHandlers,\n styled,\n themeable,\n useEvent,\n useId,\n withStaticProperties,\n} from '@tamagui/core'\nimport { ThemeableStack } from '@tamagui/stacks'\nimport { SizableText } from '@tamagui/text'\nimport { useControllableState } from '@tamagui/use-controllable-state'\nimport * as React from 'react'\n\nimport { TOAST_NAME } from './constants'\nimport { ToastAnnounceExclude } from './ToastAnnounce'\nimport {\n ToastNativePlatform,\n ToastNativeValue,\n useToast,\n useToastController,\n useToastState,\n} from './ToastImperative.js'\nimport {\n ToastImpl,\n ToastImplFrame,\n ToastProps,\n useToastInteractiveContext,\n} from './ToastImpl'\nimport {\n ScopedProps,\n ToastProvider,\n ToastProviderProps,\n createToastScope,\n} from './ToastProvider'\nimport { ToastViewport, ToastViewportProps } from './ToastViewport'\n\n/* -------------------------------------------------------------------------------------------------\n * ToastTitle\n * -----------------------------------------------------------------------------------------------*/\n\nconst TITLE_NAME = 'ToastTitle'\n\nconst ToastTitleFrame = styled(SizableText, {\n name: TITLE_NAME,\n variants: {\n unstyled: {\n false: {\n color: '$color',\n size: '$4',\n },\n },\n },\n defaultVariants: {\n unstyled: false,\n },\n})\n\ntype PrimitiveDivProps = GetProps<typeof ToastTitleFrame>\ntype ToastTitleProps = PrimitiveDivProps & {}\n\nconst ToastTitle = React.forwardRef<TamaguiElement, ToastTitleProps>(\n (props: ScopedProps<ToastTitleProps>, forwardedRef) => {\n const { __scopeToast, ...titleProps } = props\n return <ToastTitleFrame {...titleProps} ref={forwardedRef} />\n }\n)\n\nToastTitle.displayName = TITLE_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * ToastDescription\n * -----------------------------------------------------------------------------------------------*/\n\nconst DESCRIPTION_NAME = 'ToastDescription'\n\nconst ToastDescriptionFrame = styled(SizableText, {\n name: DESCRIPTION_NAME,\n\n variants: {\n unstyled: {\n false: {\n color: '$color11',\n size: '$1',\n },\n },\n },\n\n defaultVariants: {\n unstyled: false,\n },\n})\n\ntype ToastDescriptionFrameProps = GetProps<typeof ToastDescriptionFrame>\ntype ToastDescriptionProps = ToastDescriptionFrameProps & {}\n\nconst ToastDescription = React.forwardRef<TamaguiElement, ToastDescriptionProps>(\n (props: ScopedProps<ToastDescriptionProps>, forwardedRef) => {\n const { __scopeToast, ...descriptionProps } = props\n return <ToastDescriptionFrame {...descriptionProps} ref={forwardedRef} />\n }\n)\n\nToastDescription.displayName = DESCRIPTION_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * ToastAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst ACTION_NAME = 'ToastAction'\n\ntype ToastActionProps = ToastCloseProps & {\n /**\n * A short description for an alternate way to carry out the action. For screen reader users\n * who will not be able to navigate to the button easily/quickly.\n * @example <ToastAction altText=\"Goto account settings to updgrade\">Upgrade</ToastAction>\n * @example <ToastAction altText=\"Undo (Alt+U)\">Undo</ToastAction>\n */\n altText: string\n}\n\nconst ToastAction = React.forwardRef<TamaguiElement, ToastActionProps>(\n (props: ScopedProps<ToastActionProps>, forwardedRef) => {\n const { altText, ...actionProps } = props\n if (!altText) return null\n return (\n <ToastAnnounceExclude altText={altText} asChild>\n <ToastClose {...actionProps} ref={forwardedRef} />\n </ToastAnnounceExclude>\n )\n }\n)\n\nToastAction.propTypes = {\n altText(props) {\n if (!props.altText) {\n return new Error(`Missing prop \\`altText\\` expected on \\`${ACTION_NAME}\\``)\n }\n return null\n },\n}\n\nToastAction.displayName = ACTION_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * ToastClose\n * -----------------------------------------------------------------------------------------------*/\n\nconst CLOSE_NAME = 'ToastClose'\n\nconst ToastCloseFrame = styled(ThemeableStack, {\n name: CLOSE_NAME,\n tag: 'button',\n})\ntype ToastCloseFrameProps = GetProps<typeof ToastCloseFrame>\ntype ToastCloseProps = ToastCloseFrameProps & {}\n\nconst ToastClose = React.forwardRef<TamaguiElement, ToastCloseProps>(\n (props: ScopedProps<ToastCloseProps>, forwardedRef) => {\n const { __scopeToast, ...closeProps } = props\n const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast)\n\n return (\n <ToastAnnounceExclude asChild>\n <ToastCloseFrame\n accessibilityLabel=\"Dialog Close\"\n {...closeProps}\n ref={forwardedRef}\n onPress={composeEventHandlers(props.onPress as any, interactiveContext.onClose)}\n />\n </ToastAnnounceExclude>\n )\n }\n)\n\nToastClose.displayName = CLOSE_NAME\n\n/* -------------------------------------------------------------------------------------------------\n * Toast\n * -----------------------------------------------------------------------------------------------*/\n\nconst ToastComponent = React.forwardRef<TamaguiElement, ToastProps>(\n ToastImplFrame.extractable((props: ScopedProps<ToastProps>, forwardedRef) => {\n const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? true,\n onChange: onOpenChange,\n })\n\n const id = useId()\n const onPause = useEvent(props.onPause)\n const onResume = useEvent(props.onResume)\n const shouldShow = forceMount || open\n\n if (!shouldShow) return null\n\n return (\n <ToastImpl\n id={id}\n open={open}\n {...toastProps}\n ref={forwardedRef}\n onClose={() => setOpen(false)}\n onPause={onPause}\n onResume={onResume}\n onSwipeEnd={composeEventHandlers(props.onSwipeEnd, (event) => {\n setOpen(false)\n })}\n />\n )\n })\n)\n\nToastComponent.displayName = TOAST_NAME\n\nconst Toast = withStaticProperties(\n themeable(ToastComponent, ToastImplFrame.staticConfig),\n {\n Title: ToastTitle,\n Description: ToastDescription,\n Action: ToastAction,\n Close: ToastClose,\n }\n)\n\n/* ---------------------------------------------------------------------------------------------- */\n\nexport {\n Toast,\n ToastProvider,\n ToastViewport,\n //\n createToastScope,\n // imperative\n useToast,\n useToastController,\n useToastState,\n}\nexport type {\n ToastActionProps,\n ToastCloseProps,\n ToastDescriptionProps,\n ToastProps,\n ToastProviderProps,\n ToastTitleProps,\n ToastViewportProps,\n // imperative\n ToastNativeValue,\n ToastNativePlatform,\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": [
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,93 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var ToastAnnounce_exports = {};
|
|
30
|
+
__export(ToastAnnounce_exports, {
|
|
31
|
+
ToastAnnounce: () => ToastAnnounce,
|
|
32
|
+
ToastAnnounceExclude: () => ToastAnnounceExclude
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(ToastAnnounce_exports);
|
|
35
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
|
+
var import_core = require("@tamagui/core");
|
|
37
|
+
var import_portal = require("@tamagui/portal");
|
|
38
|
+
var import_visually_hidden = require("@tamagui/visually-hidden");
|
|
39
|
+
var React = __toESM(require("react"));
|
|
40
|
+
var import_ToastProvider = require("./ToastProvider");
|
|
41
|
+
var import_constants = require("./constants");
|
|
42
|
+
const ToastAnnounceExcludeFrame = (0, import_core.styled)(import_core.Stack, {
|
|
43
|
+
name: "ToastAnnounceExclude"
|
|
44
|
+
});
|
|
45
|
+
const ToastAnnounceExclude = React.forwardRef(
|
|
46
|
+
(props, forwardedRef) => {
|
|
47
|
+
const { __scopeToast, altText, ...announceExcludeProps } = props;
|
|
48
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49
|
+
ToastAnnounceExcludeFrame,
|
|
50
|
+
{
|
|
51
|
+
"data-toast-announce-exclude": "",
|
|
52
|
+
"data-toast-announce-alt": altText || void 0,
|
|
53
|
+
...announceExcludeProps,
|
|
54
|
+
ref: forwardedRef
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
const ToastAnnounce = (props) => {
|
|
60
|
+
const { __scopeToast, children, ...announceProps } = props;
|
|
61
|
+
const context = (0, import_ToastProvider.useToastProviderContext)(import_constants.TOAST_NAME, __scopeToast);
|
|
62
|
+
const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);
|
|
63
|
+
const [isAnnounced, setIsAnnounced] = React.useState(false);
|
|
64
|
+
useNextFrame(() => setRenderAnnounceText(true));
|
|
65
|
+
React.useEffect(() => {
|
|
66
|
+
const timer = setTimeout(() => setIsAnnounced(true), 1e3);
|
|
67
|
+
return () => clearTimeout(timer);
|
|
68
|
+
}, []);
|
|
69
|
+
return isAnnounced ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_portal.Portal, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_visually_hidden.VisuallyHidden, { ...announceProps, children: renderAnnounceText && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_core.Text, { children: [
|
|
70
|
+
context.label,
|
|
71
|
+
" ",
|
|
72
|
+
children
|
|
73
|
+
] }) }) });
|
|
74
|
+
};
|
|
75
|
+
function useNextFrame(callback = () => {
|
|
76
|
+
}) {
|
|
77
|
+
const fn = (0, import_core.useEvent)(callback);
|
|
78
|
+
(0, import_core.useIsomorphicLayoutEffect)(() => {
|
|
79
|
+
let raf1 = 0;
|
|
80
|
+
let raf2 = 0;
|
|
81
|
+
raf1 = requestAnimationFrame(() => raf2 = requestAnimationFrame(fn));
|
|
82
|
+
return () => {
|
|
83
|
+
cancelAnimationFrame(raf1);
|
|
84
|
+
cancelAnimationFrame(raf2);
|
|
85
|
+
};
|
|
86
|
+
}, [fn]);
|
|
87
|
+
}
|
|
88
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
89
|
+
0 && (module.exports = {
|
|
90
|
+
ToastAnnounce,
|
|
91
|
+
ToastAnnounceExclude
|
|
92
|
+
});
|
|
2
93
|
//# sourceMappingURL=ToastAnnounce.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ToastAnnounce.tsx"],
|
|
4
4
|
"sourcesContent": ["import {\n GetProps,\n Stack,\n TamaguiElement,\n Text,\n styled,\n useEvent,\n useIsomorphicLayoutEffect,\n} from '@tamagui/core'\nimport { Portal } from '@tamagui/portal'\nimport { VisuallyHidden } from '@tamagui/visually-hidden'\nimport * as React from 'react'\n\nimport { ScopedProps, useToastProviderContext } from './ToastProvider'\nimport { TOAST_NAME } from './constants'\n\nconst ToastAnnounceExcludeFrame = styled(Stack, {\n name: 'ToastAnnounceExclude',\n})\ntype ToastAnnounceExcludeFrameProps = GetProps<typeof ToastAnnounceExcludeFrame>\ntype ToastAnnounceExcludeProps = ToastAnnounceExcludeFrameProps & {\n altText?: string\n}\n\nconst ToastAnnounceExclude = React.forwardRef<TamaguiElement, ToastAnnounceExcludeProps>(\n (props: ScopedProps<ToastAnnounceExcludeProps>, forwardedRef) => {\n const { __scopeToast, altText, ...announceExcludeProps } = props\n\n return (\n <ToastAnnounceExcludeFrame\n data-toast-announce-exclude=\"\"\n data-toast-announce-alt={altText || undefined}\n {...announceExcludeProps}\n ref={forwardedRef}\n />\n )\n }\n)\n\n/* -----------------------------------------------------------------------------------------------*/\n\ninterface ToastAnnounceProps\n extends Omit<GetProps<typeof VisuallyHidden>, 'children'>,\n ScopedProps<{ children: string[] }> {}\n\nconst ToastAnnounce: React.FC<ToastAnnounceProps> = (\n props: ScopedProps<ToastAnnounceProps>\n) => {\n const { __scopeToast, children, ...announceProps } = props\n const context = useToastProviderContext(TOAST_NAME, __scopeToast)\n const [renderAnnounceText, setRenderAnnounceText] = React.useState(false)\n const [isAnnounced, setIsAnnounced] = React.useState(false)\n\n // render text content in the next frame to ensure toast is announced in NVDA\n useNextFrame(() => setRenderAnnounceText(true))\n\n // cleanup after announcing\n React.useEffect(() => {\n const timer = setTimeout(() => setIsAnnounced(true), 1000)\n return () => clearTimeout(timer)\n }, [])\n\n return isAnnounced ? null : (\n <Portal asChild>\n <VisuallyHidden {...announceProps}>\n {renderAnnounceText && (\n <Text>\n {context.label} {children}\n </Text>\n )}\n </VisuallyHidden>\n </Portal>\n )\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useNextFrame(callback = () => {}) {\n const fn = useEvent(callback)\n useIsomorphicLayoutEffect(() => {\n let raf1 = 0\n let raf2 = 0\n raf1 = requestAnimationFrame(() => (raf2 = requestAnimationFrame(fn)))\n return () => {\n cancelAnimationFrame(raf1)\n cancelAnimationFrame(raf2)\n }\n }, [fn])\n}\n\n\nexport {\n ToastAnnounce,\n ToastAnnounceProps,\n ToastAnnounceExclude,\n ToastAnnounceExcludeProps,\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": [
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BM;AA7BN,kBAQO;AACP,oBAAuB;AACvB,6BAA+B;AAC/B,YAAuB;AAEvB,2BAAqD;AACrD,uBAA2B;AAE3B,MAAM,gCAA4B,oBAAO,mBAAO;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;AAAA,MAAC;AAAA;AAAA,QACC,+BAA4B;AAAA,QAC5B,2BAAyB,WAAW;AAAA,QACnC,GAAG;AAAA,QACJ,KAAK;AAAA;AAAA,IACP;AAAA,EAEJ;AACF;AAQA,MAAM,gBAA8C,CAClD,UACG;AACH,QAAM,EAAE,cAAc,UAAU,GAAG,cAAc,IAAI;AACrD,QAAM,cAAU,8CAAwB,6BAAY,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,4CAAC,wBAAO,SAAO,MACb,sDAAC,yCAAgB,GAAG,eACjB,gCACC,6CAAC,oBACE;AAAA,YAAQ;AAAA,IAAM;AAAA,IAAE;AAAA,KACnB,GAEJ,GACF;AAEJ;AAIA,SAAS,aAAa,WAAW,MAAM;AAAC,GAAG;AACzC,QAAM,SAAK,sBAAS,QAAQ;AAC5B,6CAA0B,MAAM;AAC9B,QAAI,OAAO;AACX,QAAI,OAAO;AACX,WAAO,sBAAsB,MAAO,OAAO,sBAAsB,EAAE,CAAE;AACrE,WAAO,MAAM;AACX,2BAAqB,IAAI;AACzB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,EAAE,CAAC;AACT;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,111 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var ToastImperative_exports = {};
|
|
30
|
+
__export(ToastImperative_exports, {
|
|
31
|
+
ToastImperativeProvider: () => ToastImperativeProvider,
|
|
32
|
+
useToast: () => useToast,
|
|
33
|
+
useToastController: () => useToastController,
|
|
34
|
+
useToastState: () => useToastState
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(ToastImperative_exports);
|
|
37
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
38
|
+
var import_core = require("@tamagui/core");
|
|
39
|
+
var import_react = __toESM(require("react"));
|
|
40
|
+
var import_react_native = require("react-native");
|
|
41
|
+
var import_createNativeToast = require("./createNativeToast");
|
|
42
|
+
const ToastContext = (0, import_react.createContext)({});
|
|
43
|
+
const ToastCurrentContext = (0, import_react.createContext)(null);
|
|
44
|
+
const useToastController = () => {
|
|
45
|
+
return (0, import_react.useContext)(ToastContext);
|
|
46
|
+
};
|
|
47
|
+
const useToastState = () => {
|
|
48
|
+
return (0, import_react.useContext)(ToastCurrentContext);
|
|
49
|
+
};
|
|
50
|
+
const useToast = () => {
|
|
51
|
+
return {
|
|
52
|
+
...useToastController(),
|
|
53
|
+
currentToast: useToastState()
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
const ToastImperativeProvider = ({
|
|
57
|
+
children,
|
|
58
|
+
options
|
|
59
|
+
}) => {
|
|
60
|
+
const counterRef = (0, import_react.useRef)(0);
|
|
61
|
+
const [toast, setToast] = import_react.default.useState(null);
|
|
62
|
+
const [lastNativeToastRef, setLastNativeToastRef] = import_react.default.useState(null);
|
|
63
|
+
const show = import_react.default.useCallback(
|
|
64
|
+
(title, showOptions) => {
|
|
65
|
+
const native = (showOptions == null ? void 0 : showOptions.native) ?? options.native;
|
|
66
|
+
const isWebNative = Array.isArray(native) ? native.includes("web") : native === "web";
|
|
67
|
+
const isMobileNative = Array.isArray(native) ? native.includes("mobile") : native === "mobile";
|
|
68
|
+
const isAndroidNative = isMobileNative || (Array.isArray(native) ? native.includes("android") : native === "android");
|
|
69
|
+
const isIosNative = isMobileNative || (Array.isArray(native) ? native.includes("ios") : native === "ios");
|
|
70
|
+
const isHandledNatively = native === true || import_core.isWeb && isWebNative || !import_core.isWeb && isMobileNative || import_react_native.Platform.OS === "android" && isAndroidNative || import_react_native.Platform.OS === "ios" && isIosNative;
|
|
71
|
+
if (isHandledNatively) {
|
|
72
|
+
const nativeToastResult = (0, import_createNativeToast.createNativeToast)(title, showOptions ?? {});
|
|
73
|
+
if (typeof nativeToastResult === "object" && nativeToastResult.nativeToastRef) {
|
|
74
|
+
setLastNativeToastRef(nativeToastResult.nativeToastRef);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
counterRef.current++;
|
|
78
|
+
setToast({
|
|
79
|
+
title,
|
|
80
|
+
id: counterRef.current.toString(),
|
|
81
|
+
...showOptions,
|
|
82
|
+
isHandledNatively
|
|
83
|
+
});
|
|
84
|
+
return true;
|
|
85
|
+
},
|
|
86
|
+
[setToast, options.native]
|
|
87
|
+
);
|
|
88
|
+
const hide = import_react.default.useCallback(() => {
|
|
89
|
+
lastNativeToastRef == null ? void 0 : lastNativeToastRef.close();
|
|
90
|
+
setToast(null);
|
|
91
|
+
}, [setToast, lastNativeToastRef]);
|
|
92
|
+
const contextValue = (0, import_react.useMemo)(() => {
|
|
93
|
+
return {
|
|
94
|
+
show,
|
|
95
|
+
hide,
|
|
96
|
+
nativeToast: lastNativeToastRef,
|
|
97
|
+
options
|
|
98
|
+
};
|
|
99
|
+
}, [show, hide, lastNativeToastRef, JSON.stringify(options || null)]);
|
|
100
|
+
const currentContextValue = (0, import_react.useMemo)(() => {
|
|
101
|
+
}, []);
|
|
102
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToastContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToastCurrentContext.Provider, { value: toast, children }) });
|
|
103
|
+
};
|
|
104
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
105
|
+
0 && (module.exports = {
|
|
106
|
+
ToastImperativeProvider,
|
|
107
|
+
useToast,
|
|
108
|
+
useToastController,
|
|
109
|
+
useToastState
|
|
110
|
+
});
|
|
2
111
|
//# sourceMappingURL=ToastImperative.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ToastImperative.tsx"],
|
|
4
4
|
"sourcesContent": ["import { isWeb } from '@tamagui/core'\nimport React, { createContext, useContext, useMemo, useRef } from 'react'\nimport { Platform } from 'react-native'\n\nimport { createNativeToast } from './createNativeToast'\nimport {\n CreateNativeToastOptions,\n NativeToastRef,\n ToastNativePlatform,\n ToastNativeValue,\n} from './types'\n\ninterface ToastImperativeOptions extends Omit<CreateNativeToastOptions, 'message'> {\n /**\n * Will show a native toast if is true or is set to the current platform. On iOS, it wraps `SPIndicator` and `SPAlert`. On Android, it wraps `ToastAndroid`. On web, it wraps Notification API. Mobile's native features are handled by `burnt`.\n */\n native?: ToastNativeValue\n}\ninterface ShowOptions extends CreateNativeToastOptions {\n /**\n * Used when need custom data\n */\n additionalInfo?: Record<string, any>\n /**\n * Overrides the native option on `ToastImperativeProvider`\n */\n native?: ToastNativeValue\n}\n\ntype ToastData = { title: string; id: string } & CreateNativeToastOptions & {\n isHandledNatively: boolean\n }\n\ninterface ToastContextI {\n nativeToast: NativeToastRef | null\n\n /**\n * Call it to show a new toast. If you're using native toasts, you can pass native options using \\`burntOptions\\` or \\`notificationOptions\\` depending on the native platform (mobile/web).\n */\n show: (title: string, options?: ShowOptions) => boolean\n\n /**\n * Call it to hide the currently displayed toast.\n *\n * _NOTE_: does not work on Android native toasts\n *\n * _NOTE_: hides the last toast on web notification toasts\n */\n hide: () => void\n\n options?: ToastImperativeOptions\n}\n\nconst ToastContext = createContext<ToastContextI>({} as any)\nconst ToastCurrentContext = createContext<ToastData | null>(null)\n\nexport const useToastController = () => {\n return useContext(ToastContext)\n}\n\nexport const useToastState = () => {\n return useContext(ToastCurrentContext)\n}\n\n/** @deprecated use `useToastController` and `useToastState` instead to avoid performance pitfalls */\nexport const useToast = () => {\n return {\n ...useToastController(),\n currentToast: useToastState(),\n }\n}\n\ninterface ToastImperativeProviderProps {\n children: React.ReactNode\n /**\n * Used to provide defaults to imperative API. Options can be overwritten when calling `show()`.\n */\n options: ToastImperativeOptions\n}\n\nexport const ToastImperativeProvider = ({\n children,\n options,\n}: ToastImperativeProviderProps) => {\n const counterRef = useRef(0)\n\n const [toast, setToast] = React.useState<ToastData | null>(null)\n\n const [lastNativeToastRef, setLastNativeToastRef] =\n React.useState<ToastContextI['nativeToast']>(null)\n\n const show = React.useCallback<ToastContextI['show']>(\n (title, showOptions) => {\n const native = showOptions?.native ?? options.native\n const isWebNative = Array.isArray(native)\n ? native.includes('web')\n : native === 'web'\n const isMobileNative = Array.isArray(native)\n ? native.includes('mobile')\n : native === 'mobile'\n const isAndroidNative =\n isMobileNative ||\n (Array.isArray(native) ? native.includes('android') : native === 'android')\n const isIosNative =\n isMobileNative ||\n (Array.isArray(native) ? native.includes('ios') : native === 'ios')\n\n const isHandledNatively =\n native === true ||\n (isWeb && isWebNative) ||\n (!isWeb && isMobileNative) ||\n (Platform.OS === 'android' && isAndroidNative) ||\n (Platform.OS === 'ios' && isIosNative)\n\n if (isHandledNatively) {\n const nativeToastResult = createNativeToast(title, showOptions ?? {})\n if (typeof nativeToastResult === 'object' && nativeToastResult.nativeToastRef) {\n setLastNativeToastRef(nativeToastResult.nativeToastRef)\n }\n }\n counterRef.current++\n setToast({\n title,\n id: counterRef.current.toString(),\n ...showOptions,\n isHandledNatively,\n })\n return true\n },\n [setToast, options.native]\n )\n const hide = React.useCallback(() => {\n lastNativeToastRef?.close()\n setToast(null)\n }, [setToast, lastNativeToastRef])\n\n const contextValue = useMemo(() => {\n return {\n show,\n hide,\n nativeToast: lastNativeToastRef,\n options,\n }\n }, [show, hide, lastNativeToastRef, JSON.stringify(options || null)])\n\n const currentContextValue = useMemo(() => {}, [])\n\n return (\n <ToastContext.Provider value={contextValue}>\n <ToastCurrentContext.Provider value={toast}>\n {children}\n </ToastCurrentContext.Provider>\n </ToastContext.Provider>\n )\n}\n\nexport type { ToastImperativeProviderProps, ToastNativePlatform, ToastNativeValue }\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqJM;AArJN,kBAAsB;AACtB,mBAAkE;AAClE,0BAAyB;AAEzB,+BAAkC;AAiDlC,MAAM,mBAAe,4BAA6B,CAAC,CAAQ;AAC3D,MAAM,0BAAsB,4BAAgC,IAAI;AAEzD,MAAM,qBAAqB,MAAM;AACtC,aAAO,yBAAW,YAAY;AAChC;AAEO,MAAM,gBAAgB,MAAM;AACjC,aAAO,yBAAW,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,iBAAa,qBAAO,CAAC;AAE3B,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAAA,QAAM,SAA2B,IAAI;AAE/D,QAAM,CAAC,oBAAoB,qBAAqB,IAC9C,aAAAA,QAAM,SAAuC,IAAI;AAEnD,QAAM,OAAO,aAAAA,QAAM;AAAA,IACjB,CAAC,OAAO,gBAAgB;AACtB,YAAM,UAAS,2CAAa,WAAU,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,qBAAS,eACT,CAAC,qBAAS,kBACV,6BAAS,OAAO,aAAa,mBAC7B,6BAAS,OAAO,SAAS;AAE5B,UAAI,mBAAmB;AACrB,cAAM,wBAAoB,4CAAkB,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;AAAA,QACA,IAAI,WAAW,QAAQ,SAAS;AAAA,QAChC,GAAG;AAAA,QACH;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,CAAC,UAAU,QAAQ,MAAM;AAAA,EAC3B;AACA,QAAM,OAAO,aAAAA,QAAM,YAAY,MAAM;AACnC,6DAAoB;AACpB,aAAS,IAAI;AAAA,EACf,GAAG,CAAC,UAAU,kBAAkB,CAAC;AAEjC,QAAM,mBAAe,sBAAQ,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,QAAM,0BAAsB,sBAAQ,MAAM;AAAA,EAAC,GAAG,CAAC,CAAC;AAEhD,SACE,4CAAC,aAAa,UAAb,EAAsB,OAAO,cAC5B,sDAAC,oBAAoB,UAApB,EAA6B,OAAO,OAClC,UACH,GACF;AAEJ;",
|
|
6
|
+
"names": ["React"]
|
|
7
7
|
}
|