@botonic/react
Version:
Build Chatbots using React
46 lines • 1.91 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useDeviceAdapter = void 0;
const react_1 = require("react");
const devices_1 = require("../devices");
const use_scroll_to_bottom_1 = require("./use-scroll-to-bottom");
const use_scrollbar_controller_1 = require("./use-scrollbar-controller");
const use_virtual_keyboard_detection_1 = require("./use-virtual-keyboard-detection");
const use_webchat_resizer_1 = require("./use-webchat-resizer");
function getCurrentDevice() {
// @ts-ignore
if (navigator.userAgentData)
return navigator.userAgentData.platform;
return navigator.platform;
}
const useDeviceAdapter = (host, isWebchatOpen) => {
const currentDevice = getCurrentDevice();
const { scrollToBottom } = (0, use_scroll_to_bottom_1.useScrollToBottom)({ host });
const { isVirtualKeyboardVisible } = (0, use_virtual_keyboard_detection_1.useVirtualKeyboardDetection)(window.innerHeight);
const { handleKeyboardShown, handleKeyboardHidden } = (0, use_webchat_resizer_1.useWebchatResizer)();
const { handleScrollEvents } = (0, use_scrollbar_controller_1.useScrollbarController)(currentDevice, host);
(0, react_1.useEffect)(() => {
if (currentDevice !== devices_1.DEVICES.MOBILE.IPHONE)
return;
if (isVirtualKeyboardVisible) {
handleKeyboardShown();
scrollToBottom();
}
else {
handleKeyboardHidden();
}
return;
}, [isVirtualKeyboardVisible]);
(0, react_1.useEffect)(() => {
if (host && isWebchatOpen) {
if (currentDevice !== devices_1.DEVICES.MOBILE.IPHONE)
return;
handleScrollEvents();
}
}, [host, isWebchatOpen, handleScrollEvents]);
return {
currentDevice,
};
};
exports.useDeviceAdapter = useDeviceAdapter;
//# sourceMappingURL=use-device-adapter.js.map
;