UNPKG

@gpa-gemstone/helper-functions

Version:
50 lines (49 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); //****************************************************************************************************** // useMediaQuery.tsx - Gbtc // // Copyright (c) 2024, Grid Protection Alliance. All Rights Reserved. // // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See // the NOTICE file distributed with this work for additional information regarding copyright ownership. // The GPA may license this file to you under the MIT License (MIT), the "License"; you may not use this // file except in compliance with the License. You may obtain a copy of the License at: // // http://opensource.org/licenses/MIT // // Unless agreed to in writing, the subject software distributed under the License is distributed on an // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the // License for the specific language governing permissions and limitations. // // Code Modification History: // ---------------------------------------------------------------------------------------------------- // 04/04/2025 - Preston Crawford // Generated original version of source code. // //****************************************************************************************************** var React = require("react"); /** * * @param query A valid CSS media query string (e.g., '(min-width: 762px)'). * @returns true if the current document state matches the media query */ var useMediaQuery = function (query) { var _a = React.useState(function () { if (typeof window !== 'undefined' && window.matchMedia != null) return window.matchMedia(query).matches; return false; }), matches = _a[0], setMatches = _a[1]; React.useEffect(function () { if (typeof window === 'undefined' || window.matchMedia == null) return; var mediaQueryList = window.matchMedia(query); var listener = function (event) { return setMatches(event.matches); }; mediaQueryList.addEventListener('change', listener); return function () { mediaQueryList.removeEventListener('change', listener); }; }, [query]); return matches; }; exports.default = useMediaQuery;