antd-overlay 0.2.0 → 0.4.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # antd-overlay
2
2
 
3
- Ant Design Modal/Drawer 命令式调用方案。
3
+ Ant Design Modal/Drawer/Tour 命令式调用方案。
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/antd-overlay.svg)](https://www.npmjs.com/package/antd-overlay)
6
6
  [![license](https://img.shields.io/npm/l/antd-overlay.svg)](https://github.com/RaineySpace/antd-overlay/blob/main/LICENSE)
@@ -8,7 +8,7 @@ Ant Design Modal/Drawer 命令式调用方案。
8
8
  ## 特性
9
9
 
10
10
  - 🚀 **命令式调用** - 通过函数调用打开/关闭覆盖层,无需在业务里维护 `open` 状态
11
- - 🎨 **动画支持** - 正确处理打开/关闭动画(Modal 使用 `afterClose`,Drawer 使用 `afterOpenChange`),避免动画未完成就卸载
11
+ - 🎨 **动画支持** - 正确处理打开/关闭动画(Modal 使用 `afterClose`,Drawer 使用 `afterOpenChange`;Tour 默认直接卸载)
12
12
  - 🌍 **全局挂载** - 支持跨组件调用,覆盖层挂载到 `AntdOverlayProvider` 统一容器
13
13
  - 📦 **类型安全** - 完整的 TypeScript 类型支持
14
14
  - 🔧 **灵活扩展** - `useOverlay` + `propsAdapter` 可对接自定义覆盖层组件
@@ -38,7 +38,7 @@ yarn add antd-overlay
38
38
 
39
39
  ```bash
40
40
  pnpm install
41
- pnpm dev:demo # 启动 Vite 演示(demo/:Modal / Drawer / useOverlay)
41
+ pnpm dev:demo # 启动 Vite 演示(demo/:Modal / Drawer / Tour / useOverlay)
42
42
  pnpm build # 使用 tsup 构建 dist
43
43
  pnpm typecheck # TypeScript 检查
44
44
  ```
@@ -137,7 +137,7 @@ function GlobalUsage() {
137
137
 
138
138
  `openModal(...)` 返回 `OverlayController`:可调用 `update` 传入要更新的字段(与当前已保存的 props 及 Hook 的 `defaultProps` **浅合并**,同名键以本次 `update` 入参为准)、`close` 关闭(会尊重动画配置)。
139
139
 
140
- `customOk` 关闭语义(适用于 `useOverlay` / `useModal` / `useDrawer`):
140
+ `customOk` 关闭语义(适用于 `useOverlay` / `useModal` / `useDrawer` / `useTour`):
141
141
 
142
142
  - 同步回调正常返回:自动关闭覆盖层
143
143
  - 异步回调 `Promise resolve`:在 Promise 完成后自动关闭覆盖层
@@ -152,7 +152,7 @@ function GlobalUsage() {
152
152
  - `docs/ai/api-manifest.json`:机器可读 API 清单
153
153
  - `docs/ai/contracts.json`:能力、约束、错误语义和推荐模板
154
154
 
155
- 若 AI 生成的是全局 Hook(`useGlobalModal`、`useGlobalDrawer`、`useGlobalOverlay`)用法,务必同时生成 `AntdOverlayProvider` 包裹代码。
155
+ 若 AI 生成的是全局 Hook(`useGlobalModal`、`useGlobalDrawer`、`useGlobalTour`、`useGlobalOverlay`)用法,务必同时生成 `AntdOverlayProvider` 包裹代码。
156
156
 
157
157
  ## API
158
158
 
@@ -167,11 +167,13 @@ function GlobalUsage() {
167
167
  - `children: React.ReactNode`
168
168
  - `defaultModalProps?: Partial<ModalProps>` — 默认 Modal 属性,与每次 `open` / `update` 传入的 props 合并(传入方优先)
169
169
  - `defaultDrawerProps?: Partial<DrawerProps>` — 同上,作用于 Drawer
170
+ - `defaultTourProps?: Partial<TourProps>` — 同上,作用于 Tour
170
171
 
171
172
  ```tsx
172
173
  <AntdOverlayProvider
173
174
  defaultModalProps={{ centered: true, maskClosable: false }}
174
175
  defaultDrawerProps={{ width: 600 }}
176
+ defaultTourProps={{ mask: true }}
175
177
  >
176
178
  <App />
177
179
  </AntdOverlayProvider>
@@ -179,7 +181,7 @@ function GlobalUsage() {
179
181
 
180
182
  #### `useAntdOverlayContext()`
181
183
 
182
- 读取 Context(含 `holders`、`addHolder`、`removeHolder` 及默认 Modal/Drawer 配置)。**必须在 `AntdOverlayProvider` 内使用**;一般供扩展或库内集成,业务侧很少直接使用。
184
+ 读取 Context(含 `holders`、`addHolder`、`removeHolder` 及默认 Modal/Drawer/Tour 配置)。**必须在 `AntdOverlayProvider` 内使用**;一般供扩展或库内集成,业务侧很少直接使用。
183
185
 
184
186
  ### Modal Hooks
185
187
 
@@ -220,6 +222,58 @@ export const {
220
222
 
221
223
  生成 `{ useDrawer, useGlobalDrawer }`。
222
224
 
225
+ ### Tour Hooks
226
+
227
+ #### `useTour<T>(Component, options?)` / `useGlobalTour<T>(Component, options?)`
228
+
229
+ 语义与 Modal / Drawer 侧相同,选项类型为 `UseTourOptions<T>`(`T` 由 Tour 组件推断;同样支持 `animation`、`defaultProps`、顶层 Tour 属性及组件自定义扩展字段)。
230
+
231
+ Tour 没有类似 Modal `afterClose` 或 Drawer `afterOpenChange` 的关闭动画完成回调,因此 `useTour` / `useGlobalTour` 默认使用 `animation: false`,关闭时直接卸载;如调用方显式传入 `animation`,会尊重传入值。
232
+
233
+ ```tsx
234
+ import { Tour } from 'antd';
235
+ import { CustomTourProps, useTour } from 'antd-overlay';
236
+
237
+ const GuideTour: React.FC<CustomTourProps> = ({ customClose, customOk, ...props }) => {
238
+ void customClose;
239
+ void customOk;
240
+ return <Tour {...props} />;
241
+ };
242
+
243
+ function Page() {
244
+ const targetRef = React.useRef<HTMLButtonElement>(null);
245
+ const [openTour, holder] = useTour(GuideTour, {
246
+ mask: true,
247
+ });
248
+
249
+ return (
250
+ <>
251
+ <button
252
+ ref={targetRef}
253
+ onClick={() =>
254
+ openTour({
255
+ steps: [
256
+ {
257
+ title: '第一步',
258
+ description: '这里是引导内容',
259
+ target: () => targetRef.current,
260
+ },
261
+ ],
262
+ })
263
+ }
264
+ >
265
+ 打开 Tour
266
+ </button>
267
+ {holder}
268
+ </>
269
+ );
270
+ }
271
+ ```
272
+
273
+ #### `generateUseTourHook<T>(Component)`
274
+
275
+ 生成 `{ useTour, useGlobalTour }`。
276
+
223
277
  ### 通用 Overlay Hooks
224
278
 
225
279
  #### `useOverlay<T>(Component, options?)`
@@ -247,6 +301,77 @@ const [openOverlay, holder] = useOverlay(MyOverlay, {
247
301
 
248
302
  生成绑定组件的 `useOverlay` / `useGlobalOverlay`;调用时可再传 `options` 与 `defaultOptions` 浅合并。
249
303
 
304
+ ### Promise Hooks
305
+
306
+ 如果业务流程希望在调用处直接 `await` 用户的确认结果,使用 Promise 版本:
307
+
308
+ - `usePromiseOverlay<T>(Component, options?) => [openPromise, holder]`
309
+ - `useGlobalPromiseOverlay<T>(Component, options?) => openPromise`
310
+ - `generateUsePromiseOverlayHook<T>(Component, defaultOptions?) => { usePromiseOverlay, useGlobalPromiseOverlay }`
311
+ - `usePromiseModal<T>(Component, options?) => [openPromise, holder]`
312
+ - `useGlobalPromiseModal<T>(Component, options?) => openPromise`
313
+ - `generateUsePromiseModalHook<T>(Component) => { usePromiseModal, useGlobalPromiseModal }`
314
+ - `usePromiseDrawer<T>(Component, options?) => [openPromise, holder]`
315
+ - `useGlobalPromiseDrawer<T>(Component, options?) => openPromise`
316
+ - `generateUsePromiseDrawerHook<T>(Component) => { usePromiseDrawer, useGlobalPromiseDrawer }`
317
+
318
+ `openPromise(initialize?)` 返回 `Promise<V | undefined>`,`V` 由组件 `CustomOverlayProps<V>` 的 `customOk` 入参类型推断。
319
+
320
+ **行为契约:**
321
+
322
+ | 场景 | 外层 Promise | 覆盖层 |
323
+ | --- | --- | --- |
324
+ | `customOk(value)` 同步成功 | `resolve(value)` —— 入参,非 customOk 返回值 | 自动关闭 |
325
+ | `customOk(value)` 异步 resolve | resolve 后 `resolve(value)` | 自动关闭 |
326
+ | `customOk` 同步抛错 / 异步 reject | `reject(error)`,错误透传给 `await` 调用方 | **保持打开** |
327
+ | `customClose` / antd 取消按钮 / 蒙层 / esc | `resolve(undefined)` | 自动关闭 |
328
+ | 同一 hook 实例再次 `openPromise` | 前一个 Promise 立即 `resolve(undefined)` | 旧覆盖层被新一次打开覆盖 |
329
+ | 调用 `usePromise*` 的组件卸载 | `resolve(undefined)` | — |
330
+
331
+ Promise 仅结算一次(幂等);解析时机为决策时刻,**不等待关闭动画**。
332
+
333
+ ```tsx
334
+ import { usePromiseModal, CustomModalProps } from 'antd-overlay';
335
+ import { Modal } from 'antd';
336
+
337
+ interface ConfirmModalProps extends CustomModalProps<{ value: string }> {
338
+ initialValue?: string;
339
+ }
340
+
341
+ const ConfirmModal: React.FC<ConfirmModalProps> = ({
342
+ open,
343
+ customClose,
344
+ customOk,
345
+ initialValue = '',
346
+ }) => {
347
+ const [value, setValue] = React.useState(initialValue);
348
+ return (
349
+ <Modal open={open} onCancel={customClose} onOk={() => customOk?.({ value })}>
350
+ <input value={value} onChange={(e) => setValue(e.target.value)} />
351
+ </Modal>
352
+ );
353
+ };
354
+
355
+ function Page() {
356
+ const [openConfirm, holder] = usePromiseModal(ConfirmModal);
357
+
358
+ const handleClick = async () => {
359
+ const result = await openConfirm({ initialValue: 'hello' });
360
+ if (result === undefined) return; // 用户取消 / 关闭
361
+ console.log(result.value);
362
+ };
363
+
364
+ return (
365
+ <>
366
+ <button onClick={handleClick}>Open</button>
367
+ {holder}
368
+ </>
369
+ );
370
+ }
371
+ ```
372
+
373
+ 如需在 `customOk` 中做异步校验:抛错 / reject 即可让 `await` 进入 `catch`,覆盖层会保持打开供用户修改后重新提交。
374
+
250
375
  ### 类型定义
251
376
 
252
377
  #### `CustomOverlayProps<T, R>`
@@ -261,9 +386,9 @@ interface CustomOverlayProps<T = any, R = void> {
261
386
 
262
387
  如需本地验证异步行为,可运行 demo 中的 `AsyncCustomOkDemo`(包含 Overlay / Modal / Drawer 的异步成功与失败场景)。
263
388
 
264
- #### `CustomModalProps<T, R>` / `CustomDrawerProps<T, R>`
389
+ #### `CustomModalProps<T, R>` / `CustomDrawerProps<T, R>` / `CustomTourProps<T, R>`
265
390
 
266
- 分别为 `ModalProps` / `DrawerProps` 与 `CustomOverlayProps` 的交叉类型。
391
+ 分别为 `ModalProps` / `DrawerProps` / `TourProps` 与 `CustomOverlayProps` 的交叉类型。
267
392
 
268
393
  #### `InternalOverlayProps<T>`
269
394
 
@@ -456,7 +581,7 @@ function ProgressModal() {
456
581
 
457
582
  ```
458
583
  ┌─────────────────────────────────────────────────────────┐
459
- useModal / useDrawer │ 业务层封装
584
+ useModal / useDrawer / useTour │ 业务层封装
460
585
  ├─────────────────────────────────────────────────────────┤
461
586
  │ useOverlay / useGlobalOverlay │ 核心逻辑层
462
587
  ├─────────────────────────────────────────────────────────┤
package/dist/index.cjs CHANGED
@@ -12,7 +12,8 @@ var AntdOverlayContext = React2.createContext(null);
12
12
  function AntdOverlayProvider({
13
13
  children,
14
14
  defaultModalProps,
15
- defaultDrawerProps
15
+ defaultDrawerProps,
16
+ defaultTourProps
16
17
  }) {
17
18
  const [holders, setHolders] = React2.useState([]);
18
19
  const addHolder = React2.useCallback((holder) => {
@@ -22,8 +23,15 @@ function AntdOverlayProvider({
22
23
  setHolders((prev) => prev.filter((h) => h !== holder));
23
24
  }, []);
24
25
  const value = React2.useMemo(
25
- () => ({ holders, addHolder, removeHolder, defaultModalProps, defaultDrawerProps }),
26
- [holders, addHolder, removeHolder, defaultModalProps, defaultDrawerProps]
26
+ () => ({
27
+ holders,
28
+ addHolder,
29
+ removeHolder,
30
+ defaultModalProps,
31
+ defaultDrawerProps,
32
+ defaultTourProps
33
+ }),
34
+ [holders, addHolder, removeHolder, defaultModalProps, defaultDrawerProps, defaultTourProps]
27
35
  );
28
36
  return /* @__PURE__ */ jsxRuntime.jsxs(AntdOverlayContext.Provider, { value, children: [
29
37
  children,
@@ -266,17 +274,275 @@ function generateUseDrawerHook(DrawerComponent) {
266
274
  useGlobalDrawer: (options) => useGlobalDrawer(DrawerComponent, options)
267
275
  };
268
276
  }
277
+ var createTourPropsAdapter = (defaultProps) => {
278
+ return (props, state) => {
279
+ const result = {
280
+ ...defaultProps,
281
+ ...props,
282
+ open: state.open,
283
+ customClose: state.onClose,
284
+ onClose: (current) => {
285
+ props?.onClose?.(current);
286
+ state.onClose();
287
+ }
288
+ };
289
+ if (result.customOk) {
290
+ result.customOk = wrapCustomOk(result.customOk, state.onClose);
291
+ }
292
+ return result;
293
+ };
294
+ };
295
+ function useTour(TourComponent, options) {
296
+ const context = useAntdOverlayContext();
297
+ const propsAdapter = React2.useMemo(
298
+ () => createTourPropsAdapter(context?.defaultTourProps),
299
+ [context?.defaultTourProps]
300
+ );
301
+ return useOverlay(TourComponent, {
302
+ animation: false,
303
+ ...options,
304
+ keyPrefix: "use-tour",
305
+ propsAdapter
306
+ });
307
+ }
308
+ function useGlobalTour(TourComponent, options) {
309
+ const context = useAntdOverlayContext();
310
+ const propsAdapter = React2.useMemo(
311
+ () => createTourPropsAdapter(context?.defaultTourProps),
312
+ [context?.defaultTourProps]
313
+ );
314
+ return useGlobalOverlay(TourComponent, {
315
+ animation: false,
316
+ ...options,
317
+ keyPrefix: "use-tour",
318
+ propsAdapter
319
+ });
320
+ }
321
+ function generateUseTourHook(TourComponent) {
322
+ return {
323
+ useTour: (options) => useTour(TourComponent, options),
324
+ useGlobalTour: (options) => useGlobalTour(TourComponent, options)
325
+ };
326
+ }
327
+ var createSettler = (rawResolve, rawReject) => {
328
+ let settled = false;
329
+ return {
330
+ resolve: (value) => {
331
+ if (settled) return;
332
+ settled = true;
333
+ rawResolve(value);
334
+ },
335
+ reject: (err) => {
336
+ if (settled) return;
337
+ settled = true;
338
+ rawReject(err);
339
+ }
340
+ };
341
+ };
342
+ var passthroughAdapter = (props, state) => {
343
+ const result = {
344
+ ...props,
345
+ open: state.open,
346
+ customClose: state.onClose
347
+ };
348
+ if (result.customOk) {
349
+ result.customOk = wrapCustomOk(result.customOk, state.onClose);
350
+ }
351
+ return result;
352
+ };
353
+ var withPromiseAdapter = (innerAdapter, settleRef) => {
354
+ return (props, state) => {
355
+ const inner = innerAdapter(props, state);
356
+ const innerCustomOk = inner.customOk;
357
+ const innerCustomClose = inner.customClose;
358
+ return {
359
+ ...inner,
360
+ customOk: ((value) => {
361
+ if (innerCustomOk) {
362
+ try {
363
+ const result = innerCustomOk(value);
364
+ if (result instanceof Promise) {
365
+ return result.then(
366
+ (resolved) => {
367
+ settleRef.current?.resolve(value);
368
+ return resolved;
369
+ },
370
+ (err) => {
371
+ settleRef.current?.reject(err);
372
+ throw err;
373
+ }
374
+ );
375
+ }
376
+ settleRef.current?.resolve(value);
377
+ return result;
378
+ } catch (err) {
379
+ settleRef.current?.reject(err);
380
+ throw err;
381
+ }
382
+ }
383
+ settleRef.current?.resolve(value);
384
+ state.onClose();
385
+ return void 0;
386
+ }),
387
+ customClose: () => {
388
+ settleRef.current?.resolve(void 0);
389
+ innerCustomClose();
390
+ }
391
+ };
392
+ };
393
+ };
394
+ var makePromiseOpener = (openOverlay, settleRef) => {
395
+ return (initialize) => {
396
+ settleRef.current?.resolve(void 0);
397
+ let rawResolve = () => void 0;
398
+ let rawReject = () => void 0;
399
+ const promise = new Promise((resolve, reject) => {
400
+ rawResolve = resolve;
401
+ rawReject = reject;
402
+ });
403
+ settleRef.current = createSettler(rawResolve, rawReject);
404
+ openOverlay(initialize);
405
+ return promise;
406
+ };
407
+ };
408
+ function usePromiseOverlay(OverlayComponent, options = {}) {
409
+ const settleRef = React2.useRef(null);
410
+ const { propsAdapter: userAdapter, ...rest } = options;
411
+ const wrappedAdapter = React2.useMemo(
412
+ () => withPromiseAdapter(
413
+ userAdapter ?? passthroughAdapter,
414
+ settleRef
415
+ ),
416
+ [userAdapter]
417
+ );
418
+ const [openOverlay, holder] = useOverlay(OverlayComponent, {
419
+ ...rest,
420
+ propsAdapter: wrappedAdapter
421
+ });
422
+ React2.useEffect(() => {
423
+ return () => {
424
+ settleRef.current?.resolve(void 0);
425
+ };
426
+ }, []);
427
+ const openPromise = React2.useMemo(() => makePromiseOpener(openOverlay, settleRef), [openOverlay]);
428
+ return [openPromise, holder];
429
+ }
430
+ function useGlobalPromiseOverlay(OverlayComponent, options = {}) {
431
+ const settleRef = React2.useRef(null);
432
+ const { propsAdapter: userAdapter, ...rest } = options;
433
+ const wrappedAdapter = React2.useMemo(
434
+ () => withPromiseAdapter(
435
+ userAdapter ?? passthroughAdapter,
436
+ settleRef
437
+ ),
438
+ [userAdapter]
439
+ );
440
+ const openOverlay = useGlobalOverlay(OverlayComponent, {
441
+ ...rest,
442
+ propsAdapter: wrappedAdapter
443
+ });
444
+ React2.useEffect(() => {
445
+ return () => {
446
+ settleRef.current?.resolve(void 0);
447
+ };
448
+ }, []);
449
+ return React2.useMemo(() => makePromiseOpener(openOverlay, settleRef), [openOverlay]);
450
+ }
451
+ function generateUsePromiseOverlayHook(OverlayComponent, defaultOptions) {
452
+ return {
453
+ usePromiseOverlay: (options) => usePromiseOverlay(OverlayComponent, {
454
+ ...defaultOptions,
455
+ ...options
456
+ }),
457
+ useGlobalPromiseOverlay: (options) => useGlobalPromiseOverlay(OverlayComponent, {
458
+ ...defaultOptions,
459
+ ...options
460
+ })
461
+ };
462
+ }
463
+ function usePromiseModal(ModalComponent, options) {
464
+ const context = useAntdOverlayContext();
465
+ const propsAdapter = React2.useMemo(
466
+ () => createModalPropsAdapter(context?.defaultModalProps),
467
+ [context?.defaultModalProps]
468
+ );
469
+ return usePromiseOverlay(ModalComponent, {
470
+ ...options,
471
+ keyPrefix: "use-modal",
472
+ propsAdapter
473
+ });
474
+ }
475
+ function useGlobalPromiseModal(ModalComponent, options) {
476
+ const context = useAntdOverlayContext();
477
+ const propsAdapter = React2.useMemo(
478
+ () => createModalPropsAdapter(context?.defaultModalProps),
479
+ [context?.defaultModalProps]
480
+ );
481
+ return useGlobalPromiseOverlay(ModalComponent, {
482
+ ...options,
483
+ keyPrefix: "use-modal",
484
+ propsAdapter
485
+ });
486
+ }
487
+ function generateUsePromiseModalHook(ModalComponent) {
488
+ return {
489
+ usePromiseModal: (options) => usePromiseModal(ModalComponent, options),
490
+ useGlobalPromiseModal: (options) => useGlobalPromiseModal(ModalComponent, options)
491
+ };
492
+ }
493
+ function usePromiseDrawer(DrawerComponent, options) {
494
+ const context = useAntdOverlayContext();
495
+ const propsAdapter = React2.useMemo(
496
+ () => createDrawerPropsAdapter(context?.defaultDrawerProps),
497
+ [context?.defaultDrawerProps]
498
+ );
499
+ return usePromiseOverlay(DrawerComponent, {
500
+ ...options,
501
+ keyPrefix: "use-drawer",
502
+ propsAdapter
503
+ });
504
+ }
505
+ function useGlobalPromiseDrawer(DrawerComponent, options) {
506
+ const context = useAntdOverlayContext();
507
+ const propsAdapter = React2.useMemo(
508
+ () => createDrawerPropsAdapter(context?.defaultDrawerProps),
509
+ [context?.defaultDrawerProps]
510
+ );
511
+ return useGlobalPromiseOverlay(DrawerComponent, {
512
+ ...options,
513
+ keyPrefix: "use-drawer",
514
+ propsAdapter
515
+ });
516
+ }
517
+ function generateUsePromiseDrawerHook(DrawerComponent) {
518
+ return {
519
+ usePromiseDrawer: (options) => usePromiseDrawer(DrawerComponent, options),
520
+ useGlobalPromiseDrawer: (options) => useGlobalPromiseDrawer(DrawerComponent, options)
521
+ };
522
+ }
269
523
 
270
524
  exports.AntdOverlayProvider = AntdOverlayProvider;
271
525
  exports.generateUseDrawerHook = generateUseDrawerHook;
272
526
  exports.generateUseModalHook = generateUseModalHook;
273
527
  exports.generateUseOverlayHook = generateUseOverlayHook;
528
+ exports.generateUsePromiseDrawerHook = generateUsePromiseDrawerHook;
529
+ exports.generateUsePromiseModalHook = generateUsePromiseModalHook;
530
+ exports.generateUsePromiseOverlayHook = generateUsePromiseOverlayHook;
531
+ exports.generateUseTourHook = generateUseTourHook;
274
532
  exports.useAntdOverlayContext = useAntdOverlayContext;
275
533
  exports.useDrawer = useDrawer;
276
534
  exports.useGlobalDrawer = useGlobalDrawer;
277
535
  exports.useGlobalModal = useGlobalModal;
278
536
  exports.useGlobalOverlay = useGlobalOverlay;
537
+ exports.useGlobalPromiseDrawer = useGlobalPromiseDrawer;
538
+ exports.useGlobalPromiseModal = useGlobalPromiseModal;
539
+ exports.useGlobalPromiseOverlay = useGlobalPromiseOverlay;
540
+ exports.useGlobalTour = useGlobalTour;
279
541
  exports.useModal = useModal;
280
542
  exports.useOverlay = useOverlay;
543
+ exports.usePromiseDrawer = usePromiseDrawer;
544
+ exports.usePromiseModal = usePromiseModal;
545
+ exports.usePromiseOverlay = usePromiseOverlay;
546
+ exports.useTour = useTour;
281
547
  //# sourceMappingURL=index.cjs.map
282
548
  //# sourceMappingURL=index.cjs.map