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 +134 -9
- package/dist/index.cjs +269 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +163 -4
- package/dist/index.d.ts +163 -4
- package/dist/index.js +258 -4
- package/dist/index.js.map +1 -1
- package/docs/ai/api-manifest.json +217 -3
- package/docs/ai/constraints.md +33 -1
- package/docs/ai/contracts.json +40 -2
- package/docs/ai/quick-reference.md +75 -1
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { ModalProps, DrawerProps } from 'antd';
|
|
2
|
+
import { ModalProps, DrawerProps, TourProps } from 'antd';
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
4
|
import React__default from 'react';
|
|
5
5
|
|
|
6
6
|
type DefaultModalProps = Partial<ModalProps>;
|
|
7
7
|
type DefaultDrawerProps = Partial<DrawerProps>;
|
|
8
|
+
type DefaultTourProps = Partial<TourProps>;
|
|
8
9
|
/**
|
|
9
10
|
* AntdOverlay Context 的值类型
|
|
10
11
|
*
|
|
@@ -23,12 +24,14 @@ interface AntdOverlayContextValue {
|
|
|
23
24
|
defaultModalProps?: DefaultModalProps;
|
|
24
25
|
/** 默认 Drawer 属性 */
|
|
25
26
|
defaultDrawerProps?: DefaultDrawerProps;
|
|
27
|
+
/** 默认 Tour 属性 */
|
|
28
|
+
defaultTourProps?: DefaultTourProps;
|
|
26
29
|
}
|
|
27
30
|
/**
|
|
28
31
|
* AntdOverlay 容器提供者组件
|
|
29
32
|
*
|
|
30
33
|
* 用于管理全局覆盖层的挂载点。所有通过 useGlobalOverlay、useGlobalModal、
|
|
31
|
-
* useGlobalDrawer 等 Hook 创建的覆盖层都会被挂载到这个 Provider 下。
|
|
34
|
+
* useGlobalDrawer、useGlobalTour 等 Hook 创建的覆盖层都会被挂载到这个 Provider 下。
|
|
32
35
|
*
|
|
33
36
|
* 渲染结构:
|
|
34
37
|
* ```
|
|
@@ -73,15 +76,18 @@ interface AntdOverlayProviderProps {
|
|
|
73
76
|
defaultModalProps?: DefaultModalProps;
|
|
74
77
|
/** 默认 Drawer 属性 */
|
|
75
78
|
defaultDrawerProps?: DefaultDrawerProps;
|
|
79
|
+
/** 默认 Tour 属性 */
|
|
80
|
+
defaultTourProps?: DefaultTourProps;
|
|
76
81
|
}
|
|
77
82
|
/**
|
|
78
83
|
* AntdOverlayProvider 组件
|
|
79
84
|
* @param children - 子节点
|
|
80
85
|
* @param defaultModalProps - 默认 Modal 属性
|
|
81
86
|
* @param defaultDrawerProps - 默认 Drawer 属性
|
|
87
|
+
* @param defaultTourProps - 默认 Tour 属性
|
|
82
88
|
* @returns React.ReactNode
|
|
83
89
|
*/
|
|
84
|
-
declare function AntdOverlayProvider({ children, defaultModalProps, defaultDrawerProps, }: AntdOverlayProviderProps): react_jsx_runtime.JSX.Element;
|
|
90
|
+
declare function AntdOverlayProvider({ children, defaultModalProps, defaultDrawerProps, defaultTourProps, }: AntdOverlayProviderProps): react_jsx_runtime.JSX.Element;
|
|
85
91
|
/**
|
|
86
92
|
* 获取 AntdOverlay Context 的 Hook
|
|
87
93
|
*
|
|
@@ -678,4 +684,157 @@ declare function generateUseDrawerHook<T extends CustomDrawerProps>(DrawerCompon
|
|
|
678
684
|
useGlobalDrawer: (options?: UseDrawerOptions<T>) => OverlayOpener<T>;
|
|
679
685
|
};
|
|
680
686
|
|
|
681
|
-
|
|
687
|
+
/**
|
|
688
|
+
* 自定义 Tour 组件的属性接口
|
|
689
|
+
* 继承 Ant Design TourProps 并添加自定义属性
|
|
690
|
+
*
|
|
691
|
+
* @template T - customOk 回调的参数类型
|
|
692
|
+
* @template R - customOk 回调的返回类型
|
|
693
|
+
*/
|
|
694
|
+
interface CustomTourProps<T = any, R = void> extends TourProps, CustomOverlayProps<T, R> {
|
|
695
|
+
}
|
|
696
|
+
/**
|
|
697
|
+
* useTour Hook 的配置选项
|
|
698
|
+
* 排除了 propsAdapter 和 keyPrefix,这些由内部自动处理。
|
|
699
|
+
* 与 {@link UseOverlayOptions} 一致:可在顶层或 defaultProps 中传入默认 Tour 属性。
|
|
700
|
+
*/
|
|
701
|
+
type UseTourOptions<T extends CustomTourProps = CustomTourProps> = Omit<UseOverlayOptions<T>, 'propsAdapter' | 'keyPrefix'>;
|
|
702
|
+
/**
|
|
703
|
+
* Tour 管理 Hook
|
|
704
|
+
*
|
|
705
|
+
* @returns 元组 [openTour, contextHolder]
|
|
706
|
+
*/
|
|
707
|
+
declare function useTour<T extends CustomTourProps>(TourComponent: React.FC<T>, options?: UseTourOptions<T>): [OverlayOpener<T>, React.ReactNode];
|
|
708
|
+
/**
|
|
709
|
+
* 全局 Tour 管理 Hook
|
|
710
|
+
*
|
|
711
|
+
* 与 useTour 的区别:无需手动渲染 contextHolder,Tour 会自动挂载到全局容器。
|
|
712
|
+
*/
|
|
713
|
+
declare function useGlobalTour<T extends CustomTourProps>(TourComponent: React.FC<T>, options?: UseTourOptions<T>): OverlayOpener<T>;
|
|
714
|
+
/**
|
|
715
|
+
* 生成绑定了特定 Tour 组件的 Hook 工厂函数
|
|
716
|
+
*/
|
|
717
|
+
declare function generateUseTourHook<T extends CustomTourProps>(TourComponent: React.FC<T>): {
|
|
718
|
+
useTour: (options?: UseTourOptions<T>) => [OverlayOpener<T>, React$1.ReactNode];
|
|
719
|
+
useGlobalTour: (options?: UseTourOptions<T>) => OverlayOpener<T>;
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* @file usePromiseOverlay - 命令式 Promise 风格的覆盖层管理 Hook
|
|
724
|
+
* @description
|
|
725
|
+
* 在 useOverlay / useGlobalOverlay 之上叠加 Promise 语义:
|
|
726
|
+
* - opener 返回 `Promise<V | undefined>`
|
|
727
|
+
* - customOk(value) 成功 → resolve(value)(解析值为入参,非 customOk 返回值)
|
|
728
|
+
* - 任意非 OK 关闭路径(customClose / 蒙层 / antd 取消按钮 / 组件卸载 / 再次 open 抢占)→ resolve(undefined)
|
|
729
|
+
* - customOk 抛错 / Promise reject → reject(error),覆盖层保持打开
|
|
730
|
+
*
|
|
731
|
+
* 实现思路:通过包装 propsAdapter 拦截 customOk 与 customClose;
|
|
732
|
+
* 让内层适配器(默认 / Modal / Drawer)先完成 defaultProps 合并与 wrapCustomOk 的
|
|
733
|
+
* 自动关闭链路,再在外层包一层用于结算 Promise。这样 Provider 上的
|
|
734
|
+
* defaultModalProps.customOk / defaultDrawerProps.customOk 也能被正常消费。
|
|
735
|
+
*/
|
|
736
|
+
|
|
737
|
+
/**
|
|
738
|
+
* 从覆盖层组件 props 推断 customOk 入参类型
|
|
739
|
+
*
|
|
740
|
+
* - 若 `T['customOk']` 为 `(value: V) => any`,则 `V`
|
|
741
|
+
* - 若组件未声明 `customOk`,则 `never`(外层 Promise 实际类型为 `Promise<undefined>`)
|
|
742
|
+
*/
|
|
743
|
+
type CustomOkValue<T extends CustomOverlayProps> = T['customOk'] extends ((value: infer V) => unknown) | undefined ? V : never;
|
|
744
|
+
/**
|
|
745
|
+
* usePromiseOverlay 系列的 opener 类型
|
|
746
|
+
*
|
|
747
|
+
* 调用 opener 即打开覆盖层并返回 Promise<V | undefined>。
|
|
748
|
+
*/
|
|
749
|
+
type PromiseOverlayOpener<T extends CustomOverlayProps, V = CustomOkValue<T>> = (initialize?: InternalOverlayProps<T>) => Promise<V | undefined>;
|
|
750
|
+
/**
|
|
751
|
+
* usePromiseOverlay 的配置选项(与 useOverlay 完全一致)
|
|
752
|
+
*/
|
|
753
|
+
type UsePromiseOverlayOptions<T extends CustomOverlayProps> = UseOverlayOptions<T>;
|
|
754
|
+
/**
|
|
755
|
+
* usePromiseOverlay
|
|
756
|
+
*
|
|
757
|
+
* @returns `[openPromise, holder]`
|
|
758
|
+
* @example
|
|
759
|
+
* const [openPromise, holder] = usePromiseOverlay(MyOverlay, {
|
|
760
|
+
* propsAdapter: (props, state) => ({ ...props, open: state.open, customClose: state.onClose }),
|
|
761
|
+
* });
|
|
762
|
+
* const value = await openPromise({ ...props });
|
|
763
|
+
*/
|
|
764
|
+
declare function usePromiseOverlay<T extends CustomOverlayProps>(OverlayComponent: React__default.FC<T>, options?: UsePromiseOverlayOptions<T>): [PromiseOverlayOpener<T>, React__default.ReactNode];
|
|
765
|
+
/**
|
|
766
|
+
* useGlobalPromiseOverlay
|
|
767
|
+
*
|
|
768
|
+
* 与 usePromiseOverlay 等价,但 holder 自动挂载到 AntdOverlayProvider。
|
|
769
|
+
* 必须在 AntdOverlayProvider 内部使用。
|
|
770
|
+
*/
|
|
771
|
+
declare function useGlobalPromiseOverlay<T extends CustomOverlayProps>(OverlayComponent: React__default.FC<T>, options?: UsePromiseOverlayOptions<T>): PromiseOverlayOpener<T>;
|
|
772
|
+
/**
|
|
773
|
+
* 生成绑定特定组件的 Promise 版 Hook 工厂
|
|
774
|
+
*
|
|
775
|
+
* @example
|
|
776
|
+
* export const {
|
|
777
|
+
* usePromiseOverlay: useMyPromiseOverlay,
|
|
778
|
+
* useGlobalPromiseOverlay: useGlobalMyPromiseOverlay,
|
|
779
|
+
* } = generateUsePromiseOverlayHook(MyOverlay, { propsAdapter });
|
|
780
|
+
*/
|
|
781
|
+
declare function generateUsePromiseOverlayHook<T extends CustomOverlayProps>(OverlayComponent: React__default.FC<T>, defaultOptions?: UsePromiseOverlayOptions<T>): {
|
|
782
|
+
usePromiseOverlay: (options?: UsePromiseOverlayOptions<T>) => [PromiseOverlayOpener<T, CustomOkValue<T>>, React__default.ReactNode];
|
|
783
|
+
useGlobalPromiseOverlay: (options?: UsePromiseOverlayOptions<T>) => PromiseOverlayOpener<T, CustomOkValue<T>>;
|
|
784
|
+
};
|
|
785
|
+
|
|
786
|
+
/**
|
|
787
|
+
* @file usePromiseModal - Promise 风格的 Modal 管理 Hook
|
|
788
|
+
* @description
|
|
789
|
+
* 在 usePromiseOverlay 上使用 Modal 专用的 propsAdapter,行为与 useModal 完全对齐:
|
|
790
|
+
* - opener 返回 `Promise<V | undefined>`
|
|
791
|
+
* - customOk(value) → resolve(value);非 OK 关闭 → resolve(undefined);customOk 抛错 / reject → reject 透传
|
|
792
|
+
*
|
|
793
|
+
* @example
|
|
794
|
+
* const [openConfirm, holder] = usePromiseModal(ConfirmModal);
|
|
795
|
+
* const result = await openConfirm({ title: 'Confirm?' });
|
|
796
|
+
* if (result === undefined) return; // 用户取消
|
|
797
|
+
*/
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* usePromiseModal 的配置选项(与 useModal 一致:不含 propsAdapter / keyPrefix)
|
|
801
|
+
*/
|
|
802
|
+
type UsePromiseModalOptions<T extends CustomModalProps = CustomModalProps> = UseModalOptions<T>;
|
|
803
|
+
declare function usePromiseModal<T extends CustomModalProps>(ModalComponent: React__default.FC<T>, options?: UsePromiseModalOptions<T>): [PromiseOverlayOpener<T>, React__default.ReactNode];
|
|
804
|
+
declare function useGlobalPromiseModal<T extends CustomModalProps>(ModalComponent: React__default.FC<T>, options?: UsePromiseModalOptions<T>): PromiseOverlayOpener<T>;
|
|
805
|
+
/**
|
|
806
|
+
* 生成绑定了特定 Modal 组件的 Promise Hook 工厂
|
|
807
|
+
*/
|
|
808
|
+
declare function generateUsePromiseModalHook<T extends CustomModalProps>(ModalComponent: React__default.FC<T>): {
|
|
809
|
+
usePromiseModal: (options?: UsePromiseModalOptions<T>) => [PromiseOverlayOpener<T>, React__default.ReactNode];
|
|
810
|
+
useGlobalPromiseModal: (options?: UsePromiseModalOptions<T>) => PromiseOverlayOpener<T>;
|
|
811
|
+
};
|
|
812
|
+
|
|
813
|
+
/**
|
|
814
|
+
* @file usePromiseDrawer - Promise 风格的 Drawer 管理 Hook
|
|
815
|
+
* @description
|
|
816
|
+
* 在 usePromiseOverlay 上使用 Drawer 专用的 propsAdapter,行为与 useDrawer 完全对齐:
|
|
817
|
+
* - opener 返回 `Promise<V | undefined>`
|
|
818
|
+
* - customOk(value) → resolve(value);非 OK 关闭 → resolve(undefined);customOk 抛错 / reject → reject 透传
|
|
819
|
+
*
|
|
820
|
+
* @example
|
|
821
|
+
* const [openPromiseDrawer, holder] = usePromiseDrawer(MyDrawer);
|
|
822
|
+
* const result = await openPromiseDrawer({ title: 'Edit' });
|
|
823
|
+
* if (result === undefined) return; // 用户取消
|
|
824
|
+
*/
|
|
825
|
+
|
|
826
|
+
/**
|
|
827
|
+
* usePromiseDrawer 的配置选项(与 useDrawer 一致:不含 propsAdapter / keyPrefix)
|
|
828
|
+
*/
|
|
829
|
+
type UsePromiseDrawerOptions<T extends CustomDrawerProps = CustomDrawerProps> = UseDrawerOptions<T>;
|
|
830
|
+
declare function usePromiseDrawer<T extends CustomDrawerProps>(DrawerComponent: React__default.FC<T>, options?: UsePromiseDrawerOptions<T>): [PromiseOverlayOpener<T>, React__default.ReactNode];
|
|
831
|
+
declare function useGlobalPromiseDrawer<T extends CustomDrawerProps>(DrawerComponent: React__default.FC<T>, options?: UsePromiseDrawerOptions<T>): PromiseOverlayOpener<T>;
|
|
832
|
+
/**
|
|
833
|
+
* 生成绑定了特定 Drawer 组件的 Promise Hook 工厂
|
|
834
|
+
*/
|
|
835
|
+
declare function generateUsePromiseDrawerHook<T extends CustomDrawerProps>(DrawerComponent: React__default.FC<T>): {
|
|
836
|
+
usePromiseDrawer: (options?: UsePromiseDrawerOptions<T>) => [PromiseOverlayOpener<T>, React__default.ReactNode];
|
|
837
|
+
useGlobalPromiseDrawer: (options?: UsePromiseDrawerOptions<T>) => PromiseOverlayOpener<T>;
|
|
838
|
+
};
|
|
839
|
+
|
|
840
|
+
export { AntdOverlayProvider, type AntdOverlayProviderProps, type CustomDrawerProps, type CustomModalProps, type CustomOkValue, type CustomOverlayProps, type CustomTourProps, type DefaultDrawerProps, type DefaultModalProps, type DefaultTourProps, type InternalOverlayProps, type OverlayController, type OverlayOpener, type PromiseOverlayOpener, type UseDrawerOptions, type UseModalOptions, type UseOverlayOptions, type UsePromiseDrawerOptions, type UsePromiseModalOptions, type UsePromiseOverlayOptions, type UseTourOptions, generateUseDrawerHook, generateUseModalHook, generateUseOverlayHook, generateUsePromiseDrawerHook, generateUsePromiseModalHook, generateUsePromiseOverlayHook, generateUseTourHook, useAntdOverlayContext, useDrawer, useGlobalDrawer, useGlobalModal, useGlobalOverlay, useGlobalPromiseDrawer, useGlobalPromiseModal, useGlobalPromiseOverlay, useGlobalTour, useModal, useOverlay, usePromiseDrawer, usePromiseModal, usePromiseOverlay, useTour };
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,8 @@ var AntdOverlayContext = createContext(null);
|
|
|
6
6
|
function AntdOverlayProvider({
|
|
7
7
|
children,
|
|
8
8
|
defaultModalProps,
|
|
9
|
-
defaultDrawerProps
|
|
9
|
+
defaultDrawerProps,
|
|
10
|
+
defaultTourProps
|
|
10
11
|
}) {
|
|
11
12
|
const [holders, setHolders] = useState([]);
|
|
12
13
|
const addHolder = useCallback((holder) => {
|
|
@@ -16,8 +17,15 @@ function AntdOverlayProvider({
|
|
|
16
17
|
setHolders((prev) => prev.filter((h) => h !== holder));
|
|
17
18
|
}, []);
|
|
18
19
|
const value = useMemo(
|
|
19
|
-
() => ({
|
|
20
|
-
|
|
20
|
+
() => ({
|
|
21
|
+
holders,
|
|
22
|
+
addHolder,
|
|
23
|
+
removeHolder,
|
|
24
|
+
defaultModalProps,
|
|
25
|
+
defaultDrawerProps,
|
|
26
|
+
defaultTourProps
|
|
27
|
+
}),
|
|
28
|
+
[holders, addHolder, removeHolder, defaultModalProps, defaultDrawerProps, defaultTourProps]
|
|
21
29
|
);
|
|
22
30
|
return /* @__PURE__ */ jsxs(AntdOverlayContext.Provider, { value, children: [
|
|
23
31
|
children,
|
|
@@ -260,7 +268,253 @@ function generateUseDrawerHook(DrawerComponent) {
|
|
|
260
268
|
useGlobalDrawer: (options) => useGlobalDrawer(DrawerComponent, options)
|
|
261
269
|
};
|
|
262
270
|
}
|
|
271
|
+
var createTourPropsAdapter = (defaultProps) => {
|
|
272
|
+
return (props, state) => {
|
|
273
|
+
const result = {
|
|
274
|
+
...defaultProps,
|
|
275
|
+
...props,
|
|
276
|
+
open: state.open,
|
|
277
|
+
customClose: state.onClose,
|
|
278
|
+
onClose: (current) => {
|
|
279
|
+
props?.onClose?.(current);
|
|
280
|
+
state.onClose();
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
if (result.customOk) {
|
|
284
|
+
result.customOk = wrapCustomOk(result.customOk, state.onClose);
|
|
285
|
+
}
|
|
286
|
+
return result;
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
function useTour(TourComponent, options) {
|
|
290
|
+
const context = useAntdOverlayContext();
|
|
291
|
+
const propsAdapter = useMemo(
|
|
292
|
+
() => createTourPropsAdapter(context?.defaultTourProps),
|
|
293
|
+
[context?.defaultTourProps]
|
|
294
|
+
);
|
|
295
|
+
return useOverlay(TourComponent, {
|
|
296
|
+
animation: false,
|
|
297
|
+
...options,
|
|
298
|
+
keyPrefix: "use-tour",
|
|
299
|
+
propsAdapter
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
function useGlobalTour(TourComponent, options) {
|
|
303
|
+
const context = useAntdOverlayContext();
|
|
304
|
+
const propsAdapter = useMemo(
|
|
305
|
+
() => createTourPropsAdapter(context?.defaultTourProps),
|
|
306
|
+
[context?.defaultTourProps]
|
|
307
|
+
);
|
|
308
|
+
return useGlobalOverlay(TourComponent, {
|
|
309
|
+
animation: false,
|
|
310
|
+
...options,
|
|
311
|
+
keyPrefix: "use-tour",
|
|
312
|
+
propsAdapter
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
function generateUseTourHook(TourComponent) {
|
|
316
|
+
return {
|
|
317
|
+
useTour: (options) => useTour(TourComponent, options),
|
|
318
|
+
useGlobalTour: (options) => useGlobalTour(TourComponent, options)
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
var createSettler = (rawResolve, rawReject) => {
|
|
322
|
+
let settled = false;
|
|
323
|
+
return {
|
|
324
|
+
resolve: (value) => {
|
|
325
|
+
if (settled) return;
|
|
326
|
+
settled = true;
|
|
327
|
+
rawResolve(value);
|
|
328
|
+
},
|
|
329
|
+
reject: (err) => {
|
|
330
|
+
if (settled) return;
|
|
331
|
+
settled = true;
|
|
332
|
+
rawReject(err);
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
};
|
|
336
|
+
var passthroughAdapter = (props, state) => {
|
|
337
|
+
const result = {
|
|
338
|
+
...props,
|
|
339
|
+
open: state.open,
|
|
340
|
+
customClose: state.onClose
|
|
341
|
+
};
|
|
342
|
+
if (result.customOk) {
|
|
343
|
+
result.customOk = wrapCustomOk(result.customOk, state.onClose);
|
|
344
|
+
}
|
|
345
|
+
return result;
|
|
346
|
+
};
|
|
347
|
+
var withPromiseAdapter = (innerAdapter, settleRef) => {
|
|
348
|
+
return (props, state) => {
|
|
349
|
+
const inner = innerAdapter(props, state);
|
|
350
|
+
const innerCustomOk = inner.customOk;
|
|
351
|
+
const innerCustomClose = inner.customClose;
|
|
352
|
+
return {
|
|
353
|
+
...inner,
|
|
354
|
+
customOk: ((value) => {
|
|
355
|
+
if (innerCustomOk) {
|
|
356
|
+
try {
|
|
357
|
+
const result = innerCustomOk(value);
|
|
358
|
+
if (result instanceof Promise) {
|
|
359
|
+
return result.then(
|
|
360
|
+
(resolved) => {
|
|
361
|
+
settleRef.current?.resolve(value);
|
|
362
|
+
return resolved;
|
|
363
|
+
},
|
|
364
|
+
(err) => {
|
|
365
|
+
settleRef.current?.reject(err);
|
|
366
|
+
throw err;
|
|
367
|
+
}
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
settleRef.current?.resolve(value);
|
|
371
|
+
return result;
|
|
372
|
+
} catch (err) {
|
|
373
|
+
settleRef.current?.reject(err);
|
|
374
|
+
throw err;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
settleRef.current?.resolve(value);
|
|
378
|
+
state.onClose();
|
|
379
|
+
return void 0;
|
|
380
|
+
}),
|
|
381
|
+
customClose: () => {
|
|
382
|
+
settleRef.current?.resolve(void 0);
|
|
383
|
+
innerCustomClose();
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
};
|
|
387
|
+
};
|
|
388
|
+
var makePromiseOpener = (openOverlay, settleRef) => {
|
|
389
|
+
return (initialize) => {
|
|
390
|
+
settleRef.current?.resolve(void 0);
|
|
391
|
+
let rawResolve = () => void 0;
|
|
392
|
+
let rawReject = () => void 0;
|
|
393
|
+
const promise = new Promise((resolve, reject) => {
|
|
394
|
+
rawResolve = resolve;
|
|
395
|
+
rawReject = reject;
|
|
396
|
+
});
|
|
397
|
+
settleRef.current = createSettler(rawResolve, rawReject);
|
|
398
|
+
openOverlay(initialize);
|
|
399
|
+
return promise;
|
|
400
|
+
};
|
|
401
|
+
};
|
|
402
|
+
function usePromiseOverlay(OverlayComponent, options = {}) {
|
|
403
|
+
const settleRef = useRef(null);
|
|
404
|
+
const { propsAdapter: userAdapter, ...rest } = options;
|
|
405
|
+
const wrappedAdapter = useMemo(
|
|
406
|
+
() => withPromiseAdapter(
|
|
407
|
+
userAdapter ?? passthroughAdapter,
|
|
408
|
+
settleRef
|
|
409
|
+
),
|
|
410
|
+
[userAdapter]
|
|
411
|
+
);
|
|
412
|
+
const [openOverlay, holder] = useOverlay(OverlayComponent, {
|
|
413
|
+
...rest,
|
|
414
|
+
propsAdapter: wrappedAdapter
|
|
415
|
+
});
|
|
416
|
+
useEffect(() => {
|
|
417
|
+
return () => {
|
|
418
|
+
settleRef.current?.resolve(void 0);
|
|
419
|
+
};
|
|
420
|
+
}, []);
|
|
421
|
+
const openPromise = useMemo(() => makePromiseOpener(openOverlay, settleRef), [openOverlay]);
|
|
422
|
+
return [openPromise, holder];
|
|
423
|
+
}
|
|
424
|
+
function useGlobalPromiseOverlay(OverlayComponent, options = {}) {
|
|
425
|
+
const settleRef = useRef(null);
|
|
426
|
+
const { propsAdapter: userAdapter, ...rest } = options;
|
|
427
|
+
const wrappedAdapter = useMemo(
|
|
428
|
+
() => withPromiseAdapter(
|
|
429
|
+
userAdapter ?? passthroughAdapter,
|
|
430
|
+
settleRef
|
|
431
|
+
),
|
|
432
|
+
[userAdapter]
|
|
433
|
+
);
|
|
434
|
+
const openOverlay = useGlobalOverlay(OverlayComponent, {
|
|
435
|
+
...rest,
|
|
436
|
+
propsAdapter: wrappedAdapter
|
|
437
|
+
});
|
|
438
|
+
useEffect(() => {
|
|
439
|
+
return () => {
|
|
440
|
+
settleRef.current?.resolve(void 0);
|
|
441
|
+
};
|
|
442
|
+
}, []);
|
|
443
|
+
return useMemo(() => makePromiseOpener(openOverlay, settleRef), [openOverlay]);
|
|
444
|
+
}
|
|
445
|
+
function generateUsePromiseOverlayHook(OverlayComponent, defaultOptions) {
|
|
446
|
+
return {
|
|
447
|
+
usePromiseOverlay: (options) => usePromiseOverlay(OverlayComponent, {
|
|
448
|
+
...defaultOptions,
|
|
449
|
+
...options
|
|
450
|
+
}),
|
|
451
|
+
useGlobalPromiseOverlay: (options) => useGlobalPromiseOverlay(OverlayComponent, {
|
|
452
|
+
...defaultOptions,
|
|
453
|
+
...options
|
|
454
|
+
})
|
|
455
|
+
};
|
|
456
|
+
}
|
|
457
|
+
function usePromiseModal(ModalComponent, options) {
|
|
458
|
+
const context = useAntdOverlayContext();
|
|
459
|
+
const propsAdapter = useMemo(
|
|
460
|
+
() => createModalPropsAdapter(context?.defaultModalProps),
|
|
461
|
+
[context?.defaultModalProps]
|
|
462
|
+
);
|
|
463
|
+
return usePromiseOverlay(ModalComponent, {
|
|
464
|
+
...options,
|
|
465
|
+
keyPrefix: "use-modal",
|
|
466
|
+
propsAdapter
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
function useGlobalPromiseModal(ModalComponent, options) {
|
|
470
|
+
const context = useAntdOverlayContext();
|
|
471
|
+
const propsAdapter = useMemo(
|
|
472
|
+
() => createModalPropsAdapter(context?.defaultModalProps),
|
|
473
|
+
[context?.defaultModalProps]
|
|
474
|
+
);
|
|
475
|
+
return useGlobalPromiseOverlay(ModalComponent, {
|
|
476
|
+
...options,
|
|
477
|
+
keyPrefix: "use-modal",
|
|
478
|
+
propsAdapter
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
function generateUsePromiseModalHook(ModalComponent) {
|
|
482
|
+
return {
|
|
483
|
+
usePromiseModal: (options) => usePromiseModal(ModalComponent, options),
|
|
484
|
+
useGlobalPromiseModal: (options) => useGlobalPromiseModal(ModalComponent, options)
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
function usePromiseDrawer(DrawerComponent, options) {
|
|
488
|
+
const context = useAntdOverlayContext();
|
|
489
|
+
const propsAdapter = useMemo(
|
|
490
|
+
() => createDrawerPropsAdapter(context?.defaultDrawerProps),
|
|
491
|
+
[context?.defaultDrawerProps]
|
|
492
|
+
);
|
|
493
|
+
return usePromiseOverlay(DrawerComponent, {
|
|
494
|
+
...options,
|
|
495
|
+
keyPrefix: "use-drawer",
|
|
496
|
+
propsAdapter
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
function useGlobalPromiseDrawer(DrawerComponent, options) {
|
|
500
|
+
const context = useAntdOverlayContext();
|
|
501
|
+
const propsAdapter = useMemo(
|
|
502
|
+
() => createDrawerPropsAdapter(context?.defaultDrawerProps),
|
|
503
|
+
[context?.defaultDrawerProps]
|
|
504
|
+
);
|
|
505
|
+
return useGlobalPromiseOverlay(DrawerComponent, {
|
|
506
|
+
...options,
|
|
507
|
+
keyPrefix: "use-drawer",
|
|
508
|
+
propsAdapter
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
function generateUsePromiseDrawerHook(DrawerComponent) {
|
|
512
|
+
return {
|
|
513
|
+
usePromiseDrawer: (options) => usePromiseDrawer(DrawerComponent, options),
|
|
514
|
+
useGlobalPromiseDrawer: (options) => useGlobalPromiseDrawer(DrawerComponent, options)
|
|
515
|
+
};
|
|
516
|
+
}
|
|
263
517
|
|
|
264
|
-
export { AntdOverlayProvider, generateUseDrawerHook, generateUseModalHook, generateUseOverlayHook, useAntdOverlayContext, useDrawer, useGlobalDrawer, useGlobalModal, useGlobalOverlay, useModal, useOverlay };
|
|
518
|
+
export { AntdOverlayProvider, generateUseDrawerHook, generateUseModalHook, generateUseOverlayHook, generateUsePromiseDrawerHook, generateUsePromiseModalHook, generateUsePromiseOverlayHook, generateUseTourHook, useAntdOverlayContext, useDrawer, useGlobalDrawer, useGlobalModal, useGlobalOverlay, useGlobalPromiseDrawer, useGlobalPromiseModal, useGlobalPromiseOverlay, useGlobalTour, useModal, useOverlay, usePromiseDrawer, usePromiseModal, usePromiseOverlay, useTour };
|
|
265
519
|
//# sourceMappingURL=index.js.map
|
|
266
520
|
//# sourceMappingURL=index.js.map
|