@tamagui/alert-dialog 2.0.0-rc.9 → 2.0.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.
@@ -4,33 +4,35 @@ var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf,
8
- __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __export = (target, all) => {
10
- for (var name in all) __defProp(target, name, {
11
- get: all[name],
12
- enumerable: !0
13
- });
14
- },
15
- __copyProps = (to, from, except, desc) => {
16
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
17
18
  get: () => from[key],
18
19
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
20
  });
20
- return to;
21
- };
21
+ }
22
+ return to;
23
+ };
22
24
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
- value: mod,
29
- enumerable: !0
30
- }) : target, mod)),
31
- __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
- value: !0
33
- }), mod);
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
+ value: mod,
31
+ enumerable: true
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
34
36
  var AlertDialog_exports = {};
35
37
  __export(AlertDialog_exports, {
36
38
  AlertDialog: () => AlertDialog,
@@ -45,314 +47,306 @@ __export(AlertDialog_exports, {
45
47
  AlertDialogTrigger: () => AlertDialogTrigger
46
48
  });
47
49
  module.exports = __toCommonJS(AlertDialog_exports);
48
- var import_jsx_runtime = require("react/jsx-runtime"),
49
- import_compose_refs = require("@tamagui/compose-refs"),
50
- import_constants = require("@tamagui/constants"),
51
- import_core = require("@tamagui/core"),
52
- import_dialog = require("@tamagui/dialog"),
53
- import_helpers = require("@tamagui/helpers"),
54
- import_use_controllable_state = require("@tamagui/use-controllable-state"),
55
- React = __toESM(require("react"), 1),
56
- import_react_native = require("react-native"),
57
- getAlertDialogScope = function (scope) {
58
- return scope;
59
- },
60
- ROOT_NAME = "AlertDialog",
61
- TRIGGER_NAME = "AlertDialogTrigger",
62
- NativeAlertDialogTriggerFrame = (0, import_core.styled)(import_core.View, {
63
- name: TRIGGER_NAME
64
- }),
65
- AlertDialogTrigger = NativeAlertDialogTriggerFrame.styleable(function (props, forwardedRef) {
66
- if (props.__native) {
67
- var {
68
- __native,
69
- onPress,
70
- __onPress,
71
- ...rest
72
- } = props;
73
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(NativeAlertDialogTriggerFrame, {
74
- ...rest,
75
- onPress: (0, import_helpers.composeEventHandlers)(onPress, __onPress)
76
- });
77
- }
50
+ var import_jsx_runtime = require("react/jsx-runtime");
51
+ var import_compose_refs = require("@tamagui/compose-refs");
52
+ var import_constants = require("@tamagui/constants");
53
+ var import_core = require("@tamagui/core");
54
+ var import_dialog = require("@tamagui/dialog");
55
+ var import_helpers = require("@tamagui/helpers");
56
+ var import_use_controllable_state = require("@tamagui/use-controllable-state");
57
+ var React = __toESM(require("react"), 1);
58
+ var import_react_native = require("react-native");
59
+ var getAlertDialogScope = function (scope) {
60
+ return scope;
61
+ };
62
+ var ROOT_NAME = "AlertDialog";
63
+ var TRIGGER_NAME = "AlertDialogTrigger";
64
+ var NativeAlertDialogTriggerFrame = (0, import_core.styled)(import_core.View, {
65
+ name: TRIGGER_NAME
66
+ });
67
+ var AlertDialogTrigger = NativeAlertDialogTriggerFrame.styleable(function AlertDialogTrigger2(props, forwardedRef) {
68
+ if (props["__native"]) {
78
69
  var {
79
- scope,
80
- ...triggerProps
70
+ __native,
71
+ onPress,
72
+ __onPress,
73
+ ...rest
81
74
  } = props;
82
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogTrigger, {
83
- scope: getAlertDialogScope(scope),
84
- ...triggerProps,
85
- ref: forwardedRef
75
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(NativeAlertDialogTriggerFrame, {
76
+ ...rest,
77
+ onPress: (0, import_helpers.composeEventHandlers)(onPress, __onPress)
86
78
  });
79
+ }
80
+ var {
81
+ scope,
82
+ ...triggerProps
83
+ } = props;
84
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogTrigger, {
85
+ scope: getAlertDialogScope(scope),
86
+ ...triggerProps,
87
+ ref: forwardedRef
87
88
  });
88
- var AlertDialogPortal = function (props) {
89
- var {
90
- scope,
91
- ...portalProps
92
- } = props;
93
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogPortal, {
94
- scope: getAlertDialogScope(scope),
95
- ...portalProps
96
- });
97
- },
98
- OVERLAY_NAME = "AlertDialogOverlay",
99
- AlertDialogOverlayFrame = (0, import_core.styled)(import_dialog.DialogOverlayFrame, {
100
- name: OVERLAY_NAME
101
- }),
102
- AlertDialogOverlay = AlertDialogOverlayFrame.styleable(function (props, forwardedRef) {
103
- var {
89
+ });
90
+ var AlertDialogPortal = function AlertDialogPortal2(props) {
91
+ var {
92
+ scope,
93
+ ...portalProps
94
+ } = props;
95
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogPortal, {
96
+ scope: getAlertDialogScope(scope),
97
+ ...portalProps
98
+ });
99
+ };
100
+ var AlertDialogOverlay = (0, import_core.styled)(import_dialog.DialogOverlayFrame, {
101
+ name: "AlertDialogOverlay"
102
+ }).styleable(function AlertDialogOverlay2(props, forwardedRef) {
103
+ var {
104
+ scope,
105
+ ...overlayProps
106
+ } = props;
107
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogOverlay, {
108
+ scope: getAlertDialogScope(scope),
109
+ ...overlayProps,
110
+ ref: forwardedRef
111
+ });
112
+ });
113
+ var CONTENT_NAME = "AlertDialogContent";
114
+ var {
115
+ Provider: AlertDialogContextProvider,
116
+ useStyledContext: useAlertDialogContentContext
117
+ } = (0, import_core.createStyledContext)({}, "AlertDialogContext");
118
+ var AlertDialogContent = /* @__PURE__ */React.forwardRef(function AlertDialogContent2(props, forwardedRef) {
119
+ var {
120
+ scope,
121
+ children,
122
+ ...contentProps
123
+ } = props;
124
+ var dialogScope = getAlertDialogScope(scope);
125
+ var contentRef = React.useRef(null);
126
+ var composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, contentRef);
127
+ var cancelRef = React.useRef(null);
128
+ var destructiveRef = React.useRef(null);
129
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogWarningProvider, {
130
+ contentName: CONTENT_NAME,
131
+ titleName: TITLE_NAME,
132
+ docsSlug: "alert-dialog",
133
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(AlertDialogContextProvider, {
104
134
  scope,
105
- ...overlayProps
106
- } = props;
107
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogOverlay, {
108
- scope: getAlertDialogScope(scope),
109
- ...overlayProps,
110
- ref: forwardedRef
111
- });
112
- }),
113
- CONTENT_NAME = "AlertDialogContent",
114
- {
115
- Provider: AlertDialogContextProvider,
116
- useStyledContext: useAlertDialogContentContext
117
- } = (0, import_core.createStyledContext)({}, "AlertDialogContext"),
118
- AlertDialogContent = /* @__PURE__ */React.forwardRef(function (props, forwardedRef) {
119
- var {
120
- scope,
121
- children,
122
- ...contentProps
123
- } = props,
124
- dialogScope = getAlertDialogScope(scope),
125
- contentRef = React.useRef(null),
126
- composedRefs = (0, import_compose_refs.useComposedRefs)(forwardedRef, contentRef),
127
- cancelRef = React.useRef(null),
128
- destructiveRef = React.useRef(null);
129
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogWarningProvider, {
130
- contentName: CONTENT_NAME,
131
- titleName: TITLE_NAME,
132
- docsSlug: "alert-dialog",
133
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(AlertDialogContextProvider, {
134
- scope,
135
- cancelRef,
136
- destructiveRef,
137
- children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_dialog.DialogContent, {
138
- role: "alertdialog",
139
- "aria-modal": !0,
140
- scope: dialogScope,
141
- ...contentProps,
142
- ref: composedRefs,
143
- onOpenAutoFocus: (0, import_helpers.composeEventHandlers)(contentProps.onOpenAutoFocus, function (event) {
144
- if (event.preventDefault(), import_constants.isWeb) {
145
- var _cancelRef_current;
146
- (_cancelRef_current = cancelRef.current) === null || _cancelRef_current === void 0 || _cancelRef_current.focus({
147
- preventScroll: !0
148
- });
149
- }
150
- }),
151
- onPointerDownOutside: function (event) {
152
- return event.preventDefault();
153
- },
154
- onInteractOutside: function (event) {
155
- return event.preventDefault();
156
- },
157
- children: [
158
- /**
159
- * We have to use `Slottable` here as we cannot wrap the `AlertDialogContentProvider`
160
- * around everything, otherwise the `DescriptionWarning` would be rendered straight away.
161
- * This is because we want the accessibility checks to run only once the content is actually
162
- * open and that behaviour is already encapsulated in `DialogContent`.
163
- */
164
- /* @__PURE__ */
165
- (0, import_jsx_runtime.jsx)(import_core.Slottable, {
166
- children
167
- }), process.env.NODE_ENV === "development" && /* @__PURE__ */(0, import_jsx_runtime.jsx)(DescriptionWarning, {
168
- contentRef
169
- })]
170
- })
135
+ cancelRef,
136
+ destructiveRef,
137
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_dialog.DialogContent, {
138
+ role: "alertdialog",
139
+ "aria-modal": true,
140
+ scope: dialogScope,
141
+ ...contentProps,
142
+ ref: composedRefs,
143
+ onOpenAutoFocus: (0, import_helpers.composeEventHandlers)(contentProps.onOpenAutoFocus, function (event) {
144
+ event.preventDefault();
145
+ if (import_constants.isWeb) {
146
+ var _cancelRef_current;
147
+ (_cancelRef_current = cancelRef.current) === null || _cancelRef_current === void 0 || _cancelRef_current.focus({
148
+ preventScroll: true
149
+ });
150
+ }
151
+ }),
152
+ onPointerDownOutside: function (event) {
153
+ return event.preventDefault();
154
+ },
155
+ onInteractOutside: function (event) {
156
+ return event.preventDefault();
157
+ },
158
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.Slottable, {
159
+ children
160
+ }), process.env.NODE_ENV === "development" && /* @__PURE__ */(0, import_jsx_runtime.jsx)(DescriptionWarning, {
161
+ contentRef
162
+ })]
171
163
  })
172
- });
173
- }),
174
- TITLE_NAME = "AlertDialogTitle",
175
- AlertDialogTitleFrame = (0, import_core.styled)(import_core.View, {
176
- name: TITLE_NAME
177
- }),
178
- AlertDialogTitle = AlertDialogTitleFrame.styleable(function (props, forwardedRef) {
179
- var {
180
- scope,
181
- ...titleProps
182
- } = props;
183
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogTitle, {
184
- scope: getAlertDialogScope(scope),
185
- ...titleProps,
186
- ref: forwardedRef
187
- });
188
- }),
189
- DESCRIPTION_NAME = "AlertDialogDescription",
190
- AlertDialogDescriptionFrame = (0, import_core.styled)(import_core.View, {
191
- name: DESCRIPTION_NAME
192
- }),
193
- AlertDialogDescription = AlertDialogDescriptionFrame.styleable(function (props, forwardedRef) {
194
- var {
195
- scope,
196
- ...descriptionProps
197
- } = props;
198
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogDescription, {
199
- scope: getAlertDialogScope(scope),
200
- ...descriptionProps,
201
- ref: forwardedRef
202
- });
203
- }),
204
- ACTION_NAME = "AlertDialogAction",
205
- AlertDialogActionFrame = (0, import_core.styled)(import_core.View, {
206
- name: ACTION_NAME
207
- }),
208
- AlertDialogAction = AlertDialogActionFrame.styleable(function (props, forwardedRef) {
209
- var {
210
- scope,
211
- ...actionProps
212
- } = props;
213
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogClose, {
214
- scope: getAlertDialogScope(scope),
215
- ...actionProps,
216
- ref: forwardedRef
217
- });
218
- }),
219
- CANCEL_NAME = "AlertDialogCancel",
220
- AlertDialogCancelFrame = (0, import_core.styled)(import_core.View, {
221
- name: CANCEL_NAME
222
- }),
223
- AlertDialogCancel = AlertDialogCancelFrame.styleable(function (props, forwardedRef) {
224
- var {
225
- scope,
226
- ...cancelProps
227
- } = props,
228
- {
229
- cancelRef
230
- } = useAlertDialogContentContext(scope),
231
- ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, cancelRef);
232
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogClose, {
233
- scope: getAlertDialogScope(scope),
234
- ...cancelProps,
235
- ref
236
- });
237
- }),
238
- DESTRUCTIVE_NAME = "AlertDialogDestructive",
239
- AlertDialogDestructiveFrame = (0, import_core.styled)(import_core.View, {
240
- name: DESTRUCTIVE_NAME
241
- }),
242
- AlertDialogDestructive = AlertDialogDestructiveFrame.styleable(function (props, forwardedRef) {
243
- var {
244
- scope,
245
- ...destructiveProps
246
- } = props,
247
- {
248
- destructiveRef
249
- } = useAlertDialogContentContext(scope),
250
- ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, destructiveRef);
251
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogClose, {
252
- scope: getAlertDialogScope(scope),
253
- ...destructiveProps,
254
- ref
255
- });
256
- }),
257
- DescriptionWarning = function (param) {
258
- var {
259
- contentRef
260
- } = param;
261
- return process.env.NODE_ENV === "development" && React.useEffect(function () {
262
- var _contentRef_current;
263
- if (import_constants.isWeb) {
264
- var hasDescription = document.getElementById((_contentRef_current = contentRef.current) === null || _contentRef_current === void 0 ? void 0 : _contentRef_current.getAttribute("aria-describedby"));
265
- hasDescription || console.warn(`\`${CONTENT_NAME}\` requires a description for the component to be accessible for screen reader users.
164
+ })
165
+ });
166
+ });
167
+ var TITLE_NAME = "AlertDialogTitle";
168
+ var AlertDialogTitle = (0, import_core.styled)(import_core.View, {
169
+ name: TITLE_NAME
170
+ }).styleable(function AlertDialogTitle2(props, forwardedRef) {
171
+ var {
172
+ scope,
173
+ ...titleProps
174
+ } = props;
175
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogTitle, {
176
+ scope: getAlertDialogScope(scope),
177
+ ...titleProps,
178
+ ref: forwardedRef
179
+ });
180
+ });
181
+ var DESCRIPTION_NAME = "AlertDialogDescription";
182
+ var AlertDialogDescription = (0, import_core.styled)(import_core.View, {
183
+ name: DESCRIPTION_NAME
184
+ }).styleable(function AlertDialogDescription2(props, forwardedRef) {
185
+ var {
186
+ scope,
187
+ ...descriptionProps
188
+ } = props;
189
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogDescription, {
190
+ scope: getAlertDialogScope(scope),
191
+ ...descriptionProps,
192
+ ref: forwardedRef
193
+ });
194
+ });
195
+ var ACTION_NAME = "AlertDialogAction";
196
+ var AlertDialogAction = (0, import_core.styled)(import_core.View, {
197
+ name: ACTION_NAME
198
+ }).styleable(function AlertDialogAction2(props, forwardedRef) {
199
+ var {
200
+ scope,
201
+ ...actionProps
202
+ } = props;
203
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogClose, {
204
+ scope: getAlertDialogScope(scope),
205
+ ...actionProps,
206
+ ref: forwardedRef
207
+ });
208
+ });
209
+ var CANCEL_NAME = "AlertDialogCancel";
210
+ var AlertDialogCancel = (0, import_core.styled)(import_core.View, {
211
+ name: CANCEL_NAME
212
+ }).styleable(function AlertDialogCancel2(props, forwardedRef) {
213
+ var {
214
+ scope,
215
+ ...cancelProps
216
+ } = props;
217
+ var {
218
+ cancelRef
219
+ } = useAlertDialogContentContext(scope);
220
+ var ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, cancelRef);
221
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogClose, {
222
+ scope: getAlertDialogScope(scope),
223
+ ...cancelProps,
224
+ ref
225
+ });
226
+ });
227
+ var DESTRUCTIVE_NAME = "AlertDialogDestructive";
228
+ var AlertDialogDestructive = (0, import_core.styled)(import_core.View, {
229
+ name: DESTRUCTIVE_NAME
230
+ }).styleable(function AlertDialogDestructive2(props, forwardedRef) {
231
+ var {
232
+ scope,
233
+ ...destructiveProps
234
+ } = props;
235
+ var {
236
+ destructiveRef
237
+ } = useAlertDialogContentContext(scope);
238
+ var ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, destructiveRef);
239
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.DialogClose, {
240
+ scope: getAlertDialogScope(scope),
241
+ ...destructiveProps,
242
+ ref
243
+ });
244
+ });
245
+ var DescriptionWarning = function (param) {
246
+ var {
247
+ contentRef
248
+ } = param;
249
+ if (process.env.NODE_ENV === "development") React.useEffect(function () {
250
+ var _contentRef_current;
251
+ if (!import_constants.isWeb) return;
252
+ if (!document.getElementById((_contentRef_current = contentRef.current) === null || _contentRef_current === void 0 ? void 0 : _contentRef_current.getAttribute("aria-describedby"))) console.warn(`\`${CONTENT_NAME}\` requires a description for the component to be accessible for screen reader users.
266
253
 
267
254
  You can add a description to the \`${CONTENT_NAME}\` by passing a \`${DESCRIPTION_NAME}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
268
255
 
269
256
  Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${CONTENT_NAME}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
270
257
 
271
258
  For more information, see https://tamagui.dev/docs/components/alert-dialog`);
272
- }
273
- }, [contentRef]), null;
274
- },
275
- AlertDialogInner = function (props) {
276
- var {
277
- scope,
278
- native,
279
- ...alertDialogProps
280
- } = props,
281
- dialogScope = getAlertDialogScope(scope),
282
- [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
283
- prop: props.open,
284
- defaultProp: props.defaultOpen || !1,
285
- onChange: props.onOpenChange,
286
- transition: !0
287
- }),
288
- triggerElement = null,
289
- title = "",
290
- description = "",
291
- buttons = [];
292
- return forEachChildDeep(React.Children.toArray(props.children), function (child) {
293
- if (! /* @__PURE__ */React.isValidElement(child)) return !1;
294
- var name = (0, import_core.isTamaguiElement)(child) ? child.type.staticConfig.componentName : child.type.displayName;
295
- switch (name) {
296
- case TRIGGER_NAME:
297
- return triggerElement = /* @__PURE__ */React.cloneElement(child, {
298
- __native: !0
299
- }), !1;
300
- case TITLE_NAME:
301
- return title = getStringChildren(child), !1;
302
- case DESCRIPTION_NAME:
303
- return description = getStringChildren(child), !1;
304
- case ACTION_NAME:
305
- case DESTRUCTIVE_NAME:
306
- case CANCEL_NAME:
307
- {
308
- var style = name === ACTION_NAME ? "default" : name === DESTRUCTIVE_NAME ? "destructive" : "cancel",
309
- text = getStringChildren(child),
310
- onPress = function () {
311
- var _childProps_onPress,
312
- childProps = child.props;
313
- childProps == null || (_childProps_onPress = childProps.onPress) === null || _childProps_onPress === void 0 || _childProps_onPress.call(childProps, {
314
- native: !0
315
- }), setOpen(!1);
316
- };
317
- return buttons.push({
318
- style,
319
- text,
320
- // @ts-ignore
321
- onPress
322
- }), !1;
323
- }
324
- default:
325
- return !0;
326
- }
327
- }), (0, import_constants.useIsomorphicLayoutEffect)(function () {
328
- !open || !native || (title || description) && import_react_native.Alert.alert(title, description, buttons);
329
- }, [native, open]), native ? /* @__PURE__ */React.cloneElement(triggerElement, {
330
- __onPress: function () {
331
- setOpen(!0);
332
- }
333
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.Dialog, {
334
- scope: dialogScope,
335
- ...alertDialogProps,
336
- modal: !0
337
- });
338
- };
259
+ }, [contentRef]);
260
+ return null;
261
+ };
262
+ var AlertDialogInner = function (props) {
263
+ var {
264
+ scope,
265
+ native,
266
+ ...alertDialogProps
267
+ } = props;
268
+ var dialogScope = getAlertDialogScope(scope);
269
+ var [open, setOpen] = (0, import_use_controllable_state.useControllableState)({
270
+ prop: props.open,
271
+ defaultProp: props.defaultOpen || false,
272
+ onChange: props.onOpenChange,
273
+ transition: true
274
+ });
275
+ var triggerElement = null;
276
+ var title = "";
277
+ var description = "";
278
+ var buttons = [];
279
+ forEachChildDeep(React.Children.toArray(props.children), function (child) {
280
+ if (! /* @__PURE__ */React.isValidElement(child)) return false;
281
+ var name = (0, import_core.isTamaguiElement)(child) ? child.type.staticConfig.componentName : child.type["displayName"];
282
+ switch (name) {
283
+ case TRIGGER_NAME:
284
+ triggerElement = /* @__PURE__ */React.cloneElement(child, {
285
+ __native: true
286
+ });
287
+ return false;
288
+ case TITLE_NAME:
289
+ title = getStringChildren(child);
290
+ return false;
291
+ case DESCRIPTION_NAME:
292
+ description = getStringChildren(child);
293
+ return false;
294
+ case ACTION_NAME:
295
+ case DESTRUCTIVE_NAME:
296
+ case CANCEL_NAME:
297
+ var style = name === ACTION_NAME ? "default" : name === DESTRUCTIVE_NAME ? "destructive" : "cancel";
298
+ var text = getStringChildren(child);
299
+ var onPress = function () {
300
+ var _childProps_onPress;
301
+ var childProps = child.props;
302
+ childProps === null || childProps === void 0 || (_childProps_onPress = childProps.onPress) == null || _childProps_onPress.call(childProps, {
303
+ native: true
304
+ });
305
+ setOpen(false);
306
+ };
307
+ buttons.push({
308
+ style,
309
+ text,
310
+ onPress
311
+ });
312
+ return false;
313
+ default:
314
+ return true;
315
+ }
316
+ });
317
+ (0, import_constants.useIsomorphicLayoutEffect)(function () {
318
+ if (!open || !native) return;
319
+ if (title || description) import_react_native.Alert.alert(title, description, buttons);
320
+ }, [native, open]);
321
+ if (native) return /* @__PURE__ */React.cloneElement(triggerElement, {
322
+ __onPress: function () {
323
+ setOpen(true);
324
+ }
325
+ });
326
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_dialog.Dialog, {
327
+ scope: dialogScope,
328
+ ...alertDialogProps,
329
+ modal: true
330
+ });
331
+ };
339
332
  function forEachChildDeep(children, onChild) {
340
- var _iteratorNormalCompletion = !0,
341
- _didIteratorError = !1,
333
+ var _iteratorNormalCompletion = true,
334
+ _didIteratorError = false,
342
335
  _iteratorError = void 0;
343
336
  try {
344
- for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
337
+ for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
345
338
  var child = _step.value;
346
- if (/* @__PURE__ */React.isValidElement(child) && onChild(child)) {
347
- var childProps = child.props;
348
- childProps.children && forEachChildDeep(React.Children.toArray(childProps.children), onChild);
349
- }
339
+ if (! /* @__PURE__ */React.isValidElement(child)) continue;
340
+ if (!onChild(child)) continue;
341
+ var childProps = child.props;
342
+ if (childProps.children) forEachChildDeep(React.Children.toArray(childProps.children), onChild);
350
343
  }
351
344
  } catch (err) {
352
- _didIteratorError = !0, _iteratorError = err;
345
+ _didIteratorError = true;
346
+ _iteratorError = err;
353
347
  } finally {
354
348
  try {
355
- !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
349
+ if (!_iteratorNormalCompletion && _iterator.return != null) _iterator.return();
356
350
  } finally {
357
351
  if (_didIteratorError) throw _iteratorError;
358
352
  }
@@ -360,9 +354,14 @@ function forEachChildDeep(children, onChild) {
360
354
  }
361
355
  function getStringChildren(child) {
362
356
  var string = "";
363
- return forEachChildDeep(React.Children.toArray(child), function (child2) {
364
- return typeof child2.props.children == "string" ? (string = child2.props.children, !1) : !0;
365
- }), string;
357
+ forEachChildDeep(React.Children.toArray(child), function (child2) {
358
+ if (typeof child2.props.children === "string") {
359
+ string = child2.props.children;
360
+ return false;
361
+ }
362
+ return true;
363
+ });
364
+ return string;
366
365
  }
367
366
  var AlertDialog = (0, import_helpers.withStaticProperties)(AlertDialogInner, {
368
367
  Trigger: AlertDialogTrigger,