// Общий хук адаптивности — matchMedia, реагирует на resize/поворот экрана.
// Экспортируется в window, чтобы любой babel-standalone скрипт (в своём
// изолированном scope) мог использовать: window.useIsMobile() / useIsTablet().
//
// Подключать ПЕРВЫМ среди text/babel-скриптов поверхности (до компонентов,
// которые вызывают хук).
(function () {
  function makeMediaHook(query) {
    return function useMediaQuery() {
      const read = () => (
        typeof window !== 'undefined' && window.matchMedia
          ? window.matchMedia(query).matches
          : false
      );
      const [matches, setMatches] = React.useState(read);
      React.useEffect(() => {
        if (!window.matchMedia) return undefined;
        const mql = window.matchMedia(query);
        const onChange = () => setMatches(mql.matches);
        onChange(); // синхронизируемся на случай, если значение изменилось до маунта
        // addEventListener('change') — современный API; addListener — старый Safari/iOS.
        if (mql.addEventListener) mql.addEventListener('change', onChange);
        else mql.addListener(onChange);
        return () => {
          if (mql.removeEventListener) mql.removeEventListener('change', onChange);
          else mql.removeListener(onChange);
        };
      }, []);
      return matches;
    };
  }

  // ≤768px — телефон; ≤1024px — планшет/узкий ноут.
  const useIsMobile = makeMediaHook('(max-width: 768px)');
  const useIsTablet = makeMediaHook('(max-width: 1024px)');

  Object.assign(window, { useIsMobile, useIsTablet });
})();
