Merge branch master into master-merge-feature

This commit is contained in:
栗嘉男 2024-12-31 10:48:05 +08:00
commit b5af1f5570
2 changed files with 11 additions and 8 deletions

View File

@ -69,13 +69,13 @@ export default function useResponsiveObserver() {
return React.useMemo(() => { return React.useMemo(() => {
const subscribers = new Map<number, SubscribeFunc>(); const subscribers = new Map<number, SubscribeFunc>();
let subUid = -1; let subUid = -1;
let screens = {}; let screens: Partial<Record<Breakpoint, boolean>> = {};
return { return {
matchHandlers: {} as { matchHandlers: {} as {
[prop: string]: { [prop: string]: {
mql: MediaQueryList; mql: MediaQueryList;
listener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null; listener: (this: MediaQueryList, ev: MediaQueryListEvent) => void;
}; };
}, },
dispatch(pointMap: ScreenMap) { dispatch(pointMap: ScreenMap) {
@ -84,7 +84,9 @@ export default function useResponsiveObserver() {
return subscribers.size >= 1; return subscribers.size >= 1;
}, },
subscribe(func: SubscribeFunc): number { subscribe(func: SubscribeFunc): number {
if (!subscribers.size) this.register(); if (!subscribers.size) {
this.register();
}
subUid += 1; subUid += 1;
subscribers.set(subUid, func); subscribers.set(subUid, func);
func(screens); func(screens);
@ -92,7 +94,9 @@ export default function useResponsiveObserver() {
}, },
unsubscribe(paramToken: number) { unsubscribe(paramToken: number) {
subscribers.delete(paramToken); subscribers.delete(paramToken);
if (!subscribers.size) this.unregister(); if (!subscribers.size) {
this.unregister();
}
}, },
unregister() { unregister() {
Object.keys(responsiveMap).forEach((screen) => { Object.keys(responsiveMap).forEach((screen) => {
@ -117,7 +121,6 @@ export default function useResponsiveObserver() {
mql, mql,
listener, listener,
}; };
listener(mql); listener(mql);
}); });
}, },
@ -129,7 +132,7 @@ export default function useResponsiveObserver() {
export const matchScreen = (screens: ScreenMap, screenSizes?: ScreenSizeMap) => { export const matchScreen = (screens: ScreenMap, screenSizes?: ScreenSizeMap) => {
if (screenSizes && typeof screenSizes === 'object') { if (screenSizes && typeof screenSizes === 'object') {
for (let i = 0; i < responsiveArray.length; i++) { for (let i = 0; i < responsiveArray.length; i++) {
const breakpoint: Breakpoint = responsiveArray[i]; const breakpoint = responsiveArray[i];
if (screens[breakpoint] && screenSizes[breakpoint] !== undefined) { if (screens[breakpoint] && screenSizes[breakpoint] !== undefined) {
return screenSizes[breakpoint]; return screenSizes[breakpoint];
} }

View File

@ -144,7 +144,7 @@
"rc-slider": "~11.1.7", "rc-slider": "~11.1.7",
"rc-steps": "~6.0.1", "rc-steps": "~6.0.1",
"rc-switch": "~4.1.0", "rc-switch": "~4.1.0",
"rc-table": "~7.49.0", "rc-table": "~7.50.1",
"rc-tabs": "~15.5.0", "rc-tabs": "~15.5.0",
"rc-textarea": "~1.8.2", "rc-textarea": "~1.8.2",
"rc-tooltip": "~6.3.2", "rc-tooltip": "~6.3.2",
@ -351,4 +351,4 @@
"resolutions": { "resolutions": {
"nwsapi": "2.2.13" "nwsapi": "2.2.13"
} }
} }