238 lines
7.5 KiB
JavaScript
238 lines
7.5 KiB
JavaScript
(function () {
|
|
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["keyboard-5742b5da-js"], {
|
|
/***/
|
|
"./node_modules/@ionic/core/dist/esm/keyboard-5742b5da.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/@ionic/core/dist/esm/keyboard-5742b5da.js ***!
|
|
\****************************************************************/
|
|
|
|
/*! exports provided: KEYBOARD_DID_CLOSE, KEYBOARD_DID_OPEN, copyVisualViewport, keyboardDidClose, keyboardDidOpen, keyboardDidResize, resetKeyboardAssist, setKeyboardClose, setKeyboardOpen, startKeyboardAssist, trackViewportChanges */
|
|
|
|
/***/
|
|
function node_modulesIonicCoreDistEsmKeyboard5742b5daJs(module, __webpack_exports__, __webpack_require__) {
|
|
"use strict";
|
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "KEYBOARD_DID_CLOSE", function () {
|
|
return KEYBOARD_DID_CLOSE;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "KEYBOARD_DID_OPEN", function () {
|
|
return KEYBOARD_DID_OPEN;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "copyVisualViewport", function () {
|
|
return copyVisualViewport;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "keyboardDidClose", function () {
|
|
return keyboardDidClose;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "keyboardDidOpen", function () {
|
|
return keyboardDidOpen;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "keyboardDidResize", function () {
|
|
return keyboardDidResize;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "resetKeyboardAssist", function () {
|
|
return resetKeyboardAssist;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "setKeyboardClose", function () {
|
|
return setKeyboardClose;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "setKeyboardOpen", function () {
|
|
return setKeyboardOpen;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "startKeyboardAssist", function () {
|
|
return startKeyboardAssist;
|
|
});
|
|
/* harmony export (binding) */
|
|
|
|
|
|
__webpack_require__.d(__webpack_exports__, "trackViewportChanges", function () {
|
|
return trackViewportChanges;
|
|
});
|
|
|
|
var KEYBOARD_DID_OPEN = 'ionKeyboardDidShow';
|
|
var KEYBOARD_DID_CLOSE = 'ionKeyboardDidHide';
|
|
var KEYBOARD_THRESHOLD = 150;
|
|
var previousVisualViewport = {};
|
|
var currentVisualViewport = {};
|
|
var keyboardOpen = false;
|
|
/**
|
|
* This is only used for tests
|
|
*/
|
|
|
|
var resetKeyboardAssist = function resetKeyboardAssist() {
|
|
previousVisualViewport = {};
|
|
currentVisualViewport = {};
|
|
keyboardOpen = false;
|
|
};
|
|
|
|
var startKeyboardAssist = function startKeyboardAssist(win) {
|
|
startNativeListeners(win);
|
|
|
|
if (!win.visualViewport) {
|
|
return;
|
|
}
|
|
|
|
currentVisualViewport = copyVisualViewport(win.visualViewport);
|
|
|
|
win.visualViewport.onresize = function () {
|
|
trackViewportChanges(win);
|
|
|
|
if (keyboardDidOpen() || keyboardDidResize(win)) {
|
|
setKeyboardOpen(win);
|
|
} else if (keyboardDidClose(win)) {
|
|
setKeyboardClose(win);
|
|
}
|
|
};
|
|
};
|
|
/**
|
|
* Listen for events fired by native keyboard plugin
|
|
* in Capacitor/Cordova so devs only need to listen
|
|
* in one place.
|
|
*/
|
|
|
|
|
|
var startNativeListeners = function startNativeListeners(win) {
|
|
win.addEventListener('keyboardDidShow', function (ev) {
|
|
return setKeyboardOpen(win, ev);
|
|
});
|
|
win.addEventListener('keyboardDidHide', function () {
|
|
return setKeyboardClose(win);
|
|
});
|
|
};
|
|
|
|
var setKeyboardOpen = function setKeyboardOpen(win, ev) {
|
|
fireKeyboardOpenEvent(win, ev);
|
|
keyboardOpen = true;
|
|
};
|
|
|
|
var setKeyboardClose = function setKeyboardClose(win) {
|
|
fireKeyboardCloseEvent(win);
|
|
keyboardOpen = false;
|
|
};
|
|
/**
|
|
* Returns `true` if the `keyboardOpen` flag is not
|
|
* set, the previous visual viewport width equal the current
|
|
* visual viewport width, and if the scaled difference
|
|
* of the previous visual viewport height minus the current
|
|
* visual viewport height is greater than KEYBOARD_THRESHOLD
|
|
*
|
|
* We need to be able to accommodate users who have zooming
|
|
* enabled in their browser (or have zoomed in manually) which
|
|
* is why we take into account the current visual viewport's
|
|
* scale value.
|
|
*/
|
|
|
|
|
|
var keyboardDidOpen = function keyboardDidOpen() {
|
|
var scaledHeightDifference = (previousVisualViewport.height - currentVisualViewport.height) * currentVisualViewport.scale;
|
|
return !keyboardOpen && previousVisualViewport.width === currentVisualViewport.width && scaledHeightDifference > KEYBOARD_THRESHOLD;
|
|
};
|
|
/**
|
|
* Returns `true` if the keyboard is open,
|
|
* but the keyboard did not close
|
|
*/
|
|
|
|
|
|
var keyboardDidResize = function keyboardDidResize(win) {
|
|
return keyboardOpen && !keyboardDidClose(win);
|
|
};
|
|
/**
|
|
* Determine if the keyboard was closed
|
|
* Returns `true` if the `keyboardOpen` flag is set and
|
|
* the current visual viewport height equals the
|
|
* layout viewport height.
|
|
*/
|
|
|
|
|
|
var keyboardDidClose = function keyboardDidClose(win) {
|
|
return keyboardOpen && currentVisualViewport.height === win.innerHeight;
|
|
};
|
|
/**
|
|
* Dispatch a keyboard open event
|
|
*/
|
|
|
|
|
|
var fireKeyboardOpenEvent = function fireKeyboardOpenEvent(win, nativeEv) {
|
|
var keyboardHeight = nativeEv ? nativeEv.keyboardHeight : win.innerHeight - currentVisualViewport.height;
|
|
var ev = new CustomEvent(KEYBOARD_DID_OPEN, {
|
|
detail: {
|
|
keyboardHeight: keyboardHeight
|
|
}
|
|
});
|
|
win.dispatchEvent(ev);
|
|
};
|
|
/**
|
|
* Dispatch a keyboard close event
|
|
*/
|
|
|
|
|
|
var fireKeyboardCloseEvent = function fireKeyboardCloseEvent(win) {
|
|
var ev = new CustomEvent(KEYBOARD_DID_CLOSE);
|
|
win.dispatchEvent(ev);
|
|
};
|
|
/**
|
|
* Given a window object, create a copy of
|
|
* the current visual and layout viewport states
|
|
* while also preserving the previous visual and
|
|
* layout viewport states
|
|
*/
|
|
|
|
|
|
var trackViewportChanges = function trackViewportChanges(win) {
|
|
previousVisualViewport = Object.assign({}, currentVisualViewport);
|
|
currentVisualViewport = copyVisualViewport(win.visualViewport);
|
|
};
|
|
/**
|
|
* Creates a deep copy of the visual viewport
|
|
* at a given state
|
|
*/
|
|
|
|
|
|
var copyVisualViewport = function copyVisualViewport(visualViewport) {
|
|
return {
|
|
width: Math.round(visualViewport.width),
|
|
height: Math.round(visualViewport.height),
|
|
offsetTop: visualViewport.offsetTop,
|
|
offsetLeft: visualViewport.offsetLeft,
|
|
pageTop: visualViewport.pageTop,
|
|
pageLeft: visualViewport.pageLeft,
|
|
scale: visualViewport.scale
|
|
};
|
|
};
|
|
/***/
|
|
|
|
}
|
|
}]);
|
|
})();
|
|
//# sourceMappingURL=keyboard-5742b5da-js-es5.js.map
|