UNPKG

@oruga-ui/oruga-next

Version:

UI components for Vue.js and CSS framework agnostic

1 lines 2.64 kB
{"version":3,"file":"useMatchMedia-EgWTgaUx.cjs","sources":["../../src/composables/useMatchMedia.ts"],"sourcesContent":["import { getCurrentInstance, ref, type Ref } from \"vue\";\nimport { getOption } from \"@/utils/config\";\nimport { useEventListener } from \"./useEventListener\";\nimport { isClient } from \"@/utils/ssr\";\n\n/**\n * Checks if the match media is mobile.\n * @param mobileBreakpoint px breakpoint\n */\nexport function useMatchMedia(mobileBreakpoint?: string): {\n isMobile: Ref<boolean>;\n} {\n const isMobile = ref(false);\n const mediaQuery = ref<MediaQueryList>();\n\n // getting a hold of the internal instance in setup()\n const vm = getCurrentInstance();\n if (!vm)\n throw new Error(\n \"useMatchMedia must be called within a component setup function.\",\n );\n // get component props\n const props = vm.props;\n\n const componentKey = vm.proxy?.$options.configField;\n if (!componentKey)\n throw new Error(\"component must define the 'configField' option.\");\n\n // get mobileBreakpoint width value\n let width = props.mobileBreakpoint;\n if (!width) {\n const defaultWidth = getOption(`mobileBreakpoint`, mobileBreakpoint);\n width = getOption(`${componentKey}.mobileBreakpoint`, defaultWidth);\n }\n if (!width) return { isMobile };\n\n // define match media query ref\n mediaQuery.value = isClient\n ? window.matchMedia(`(max-width: ${width})`)\n : undefined;\n\n if (mediaQuery.value) {\n isMobile.value = mediaQuery.value.matches;\n useEventListener(mediaQuery.value, \"change\", onMatchMedia);\n } else {\n isMobile.value = false;\n }\n\n function onMatchMedia(event: any): void {\n isMobile.value = event.matches;\n }\n\n return { isMobile };\n}\n"],"names":["ref","getCurrentInstance","getOption","isClient","useEventListener"],"mappings":";;;;;AASO,SAAS,cAAc,kBAE5B;;AACQ,QAAA,WAAWA,QAAI,KAAK;AAC1B,QAAM,aAAaA,IAAAA,IAAoB;AAGvC,QAAM,KAAKC,IAAAA,mBAAmB;AAC9B,MAAI,CAAC;AACD,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAEJ,QAAM,QAAQ,GAAG;AAEX,QAAA,gBAAe,QAAG,UAAH,mBAAU,SAAS;AACxC,MAAI,CAAC;AACK,UAAA,IAAI,MAAM,iDAAiD;AAGrE,MAAI,QAAQ,MAAM;AAClB,MAAI,CAAC,OAAO;AACF,UAAA,eAAeC,OAAU,UAAA,oBAAoB,gBAAgB;AACnE,YAAQA,OAAU,UAAA,GAAG,YAAY,qBAAqB,YAAY;AAAA,EAAA;AAEtE,MAAI,CAAC,MAAc,QAAA,EAAE,SAAS;AAG9B,aAAW,QAAQC,OACb,WAAA,OAAO,WAAW,eAAe,KAAK,GAAG,IACzC;AAEN,MAAI,WAAW,OAAO;AACT,aAAA,QAAQ,WAAW,MAAM;AACjBC,qBAAAA,iBAAA,WAAW,OAAO,UAAU,YAAY;AAAA,EAAA,OACtD;AACH,aAAS,QAAQ;AAAA,EAAA;AAGrB,WAAS,aAAa,OAAkB;AACpC,aAAS,QAAQ,MAAM;AAAA,EAAA;AAG3B,SAAO,EAAE,SAAS;AACtB;;"}