{"version":3,"file":"index.cjs","sources":["../../../../../packages/hooks/use-responsive-observe/index.ts"],"sourcesContent":["import type { GlobalToken } from '@antdv/theme';\nimport type { BreakpointMap, ScreenMap } from '@antdv/types';\nimport { useToken } from '@antdv/theme';\nimport { computed } from 'vue';\n\ntype SubscribeFunc = (screens: ScreenMap) => void;\nfunction getResponsiveMap(token: GlobalToken): BreakpointMap {\n  return {\n    xs: `(max-width: ${token.screenXSMax}px)`,\n    sm: `(min-width: ${token.screenSM}px)`,\n    md: `(min-width: ${token.screenMD}px)`,\n    lg: `(min-width: ${token.screenLG}px)`,\n    xl: `(min-width: ${token.screenXL}px)`,\n    xxl: `(min-width: ${token.screenXXL}px)`,\n    xxxl: `{min-width: ${token.screenXXXL}px}`,\n  };\n}\n\nexport function useResponsiveObserver() {\n  const [, token] = useToken();\n\n  return computed(() => {\n    const responsiveMap: BreakpointMap = getResponsiveMap(token.value);\n    const subscribers = new Map<number, SubscribeFunc>();\n    let subUid = -1;\n    let screens = {};\n\n    return {\n      matchHandlers: {} as {\n        [prop: string]: {\n          mql: MediaQueryList;\n          listener: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n        };\n      },\n      dispatch(pointMap: ScreenMap) {\n        screens = pointMap;\n        subscribers.forEach(func => func(screens));\n        return subscribers.size >= 1;\n      },\n      subscribe(func: SubscribeFunc): number {\n        if (!subscribers.size) this.register();\n        subUid += 1;\n        subscribers.set(subUid, func);\n        func(screens);\n        return subUid;\n      },\n      unsubscribe(paramToken: number) {\n        subscribers.delete(paramToken);\n        if (!subscribers.size) this.unregister();\n      },\n      unregister() {\n        Object.keys(responsiveMap).forEach((screen: string) => {\n          const matchMediaQuery = responsiveMap[screen];\n          const handler = this.matchHandlers[matchMediaQuery];\n          handler?.mql.removeListener(handler?.listener);\n        });\n        subscribers.clear();\n      },\n      register() {\n        Object.keys(responsiveMap).forEach((screen: string) => {\n          const matchMediaQuery = responsiveMap[screen];\n          const listener = ({ matches }: { matches: boolean }) => {\n            this.dispatch({\n              ...screens,\n              [screen]: matches,\n            });\n          };\n          const mql = window.matchMedia(matchMediaQuery);\n          mql.addListener(listener);\n          this.matchHandlers[matchMediaQuery] = {\n            mql,\n            listener,\n          };\n\n          listener(mql);\n        });\n      },\n      responsiveMap,\n    };\n  });\n}\n"],"names":["useToken","computed"],"mappings":"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"}