text: import { useLayoutEffect } from 'react';
  var isFocusedElementEditable = function () {
      var activeElement = document.activeElement, body = document.body;
      if (!activeElement) {
          return false;
      }
      // If not element has focus, we assume it is not editable, too.
      if (activeElement === body) {
          return false;
      }
      // Assume <input> and <textarea> elements are editable.
      switch (activeElement.tagName) {
          case 'INPUT':
          case 'TEXTAREA':
              return true;
      }
      // Check if any other focused element id editable.
      return activeElement.hasAttribute('contenteditable');
  };
  var isTypedCharGood = function (_a) {
      var keyCode = _a.keyCode, metaKey = _a.metaKey, ctrlKey = _a.ctrlKey, altKey = _a.altKey;
      if (metaKey || ctrlKey || altKey) {
          return false;
      }
      // 0...9
      if (keyCode >= 48 && keyCode <= 57) {
          return true;
      }
      // a...z
      if (keyCode >= 65 && keyCode <= 90) {
          return true;
      }
      // All other keys.
      return false;
  };
  var useStartTyping = function (onStartTyping) {
      useLayoutEffect(function () {
          var keydown = function (event) {
              !isFocusedElementEditable() && isTypedCharGood(event) && onStartTyping(event);
          };
          document.addEventListener('keydown', keydown);
          return function () {
              document.removeEventListener('keydown', keydown);
          };
      }, []);
  };
  export default useStartTyping;
  