{"version":3,"sources":["node_modules/@ionic/core/components/keyboard2.js"],"sourcesContent":["/*!\n * (C) Ionic http://ionicframework.com - MIT License\n */\nimport { K as Keyboard } from './keyboard.js';\nconst KEYBOARD_DID_OPEN = 'ionKeyboardDidShow';\nconst KEYBOARD_DID_CLOSE = 'ionKeyboardDidHide';\nconst KEYBOARD_THRESHOLD = 150;\n// TODO(FW-2832): types\nlet previousVisualViewport = {};\nlet currentVisualViewport = {};\nlet keyboardOpen = false;\n/**\n * This is only used for tests\n */\nconst resetKeyboardAssist = () => {\n previousVisualViewport = {};\n currentVisualViewport = {};\n keyboardOpen = false;\n};\nconst startKeyboardAssist = win => {\n const nativeEngine = Keyboard.getEngine();\n /**\n * If the native keyboard plugin is available\n * then we are running in a native environment. As a result\n * we should only listen on the native events instead of\n * using the Visual Viewport as the Ionic webview manipulates\n * how it resizes such that the Visual Viewport API is not\n * reliable here.\n */\n if (nativeEngine) {\n startNativeListeners(win);\n } else {\n if (!win.visualViewport) {\n return;\n }\n currentVisualViewport = copyVisualViewport(win.visualViewport);\n win.visualViewport.onresize = () => {\n trackViewportChanges(win);\n if (keyboardDidOpen() || keyboardDidResize(win)) {\n setKeyboardOpen(win);\n } else if (keyboardDidClose(win)) {\n setKeyboardClose(win);\n }\n };\n }\n};\n/**\n * Listen for events fired by native keyboard plugin\n * in Capacitor/Cordova so devs only need to listen\n * in one place.\n */\nconst startNativeListeners = win => {\n win.addEventListener('keyboardDidShow', ev => setKeyboardOpen(win, ev));\n win.addEventListener('keyboardDidHide', () => setKeyboardClose(win));\n};\nconst setKeyboardOpen = (win, ev) => {\n fireKeyboardOpenEvent(win, ev);\n keyboardOpen = true;\n};\nconst setKeyboardClose = win => {\n fireKeyboardCloseEvent(win);\n keyboardOpen = false;\n};\n/**\n * Returns `true` if the `keyboardOpen` flag is not\n * set, the previous visual viewport width equal the current\n * visual viewport width, and if the scaled difference\n * of the previous visual viewport height minus the current\n * visual viewport height is greater than KEYBOARD_THRESHOLD\n *\n * We need to be able to accommodate users who have zooming\n * enabled in their browser (or have zoomed in manually) which\n * is why we take into account the current visual viewport's\n * scale value.\n */\nconst keyboardDidOpen = () => {\n const scaledHeightDifference = (previousVisualViewport.height - currentVisualViewport.height) * currentVisualViewport.scale;\n return !keyboardOpen && previousVisualViewport.width === currentVisualViewport.width && scaledHeightDifference > KEYBOARD_THRESHOLD;\n};\n/**\n * Returns `true` if the keyboard is open,\n * but the keyboard did not close\n */\nconst keyboardDidResize = win => {\n return keyboardOpen && !keyboardDidClose(win);\n};\n/**\n * Determine if the keyboard was closed\n * Returns `true` if the `keyboardOpen` flag is set and\n * the current visual viewport height equals the\n * layout viewport height.\n */\nconst keyboardDidClose = win => {\n return keyboardOpen && currentVisualViewport.height === win.innerHeight;\n};\n/**\n * Dispatch a keyboard open event\n */\nconst fireKeyboardOpenEvent = (win, nativeEv) => {\n const keyboardHeight = nativeEv ? nativeEv.keyboardHeight : win.innerHeight - currentVisualViewport.height;\n const ev = new CustomEvent(KEYBOARD_DID_OPEN, {\n detail: {\n keyboardHeight\n }\n });\n win.dispatchEvent(ev);\n};\n/**\n * Dispatch a keyboard close event\n */\nconst fireKeyboardCloseEvent = win => {\n const ev = new CustomEvent(KEYBOARD_DID_CLOSE);\n win.dispatchEvent(ev);\n};\n/**\n * Given a window object, create a copy of\n * the current visual and layout viewport states\n * while also preserving the previous visual and\n * layout viewport states\n */\nconst trackViewportChanges = win => {\n previousVisualViewport = Object.assign({}, currentVisualViewport);\n currentVisualViewport = copyVisualViewport(win.visualViewport);\n};\n/**\n * Creates a deep copy of the visual viewport\n * at a given state\n */\nconst copyVisualViewport = visualViewport => {\n return {\n width: Math.round(visualViewport.width),\n height: Math.round(visualViewport.height),\n offsetTop: visualViewport.offsetTop,\n offsetLeft: visualViewport.offsetLeft,\n pageTop: visualViewport.pageTop,\n pageLeft: visualViewport.pageLeft,\n scale: visualViewport.scale\n };\n};\nexport { KEYBOARD_DID_CLOSE, KEYBOARD_DID_OPEN, copyVisualViewport, keyboardDidClose, keyboardDidOpen, keyboardDidResize, resetKeyboardAssist, setKeyboardClose, setKeyboardOpen, startKeyboardAssist, trackViewportChanges };"],"names":["KEYBOARD_DID_OPEN","KEYBOARD_DID_CLOSE","KEYBOARD_THRESHOLD","previousVisualViewport","currentVisualViewport","keyboardOpen","resetKeyboardAssist","startKeyboardAssist","win","Keyboard","startNativeListeners","copyVisualViewport","trackViewportChanges","keyboardDidOpen","keyboardDidResize","setKeyboardOpen","keyboardDidClose","setKeyboardClose","ev","fireKeyboardOpenEvent","fireKeyboardCloseEvent","scaledHeightDifference","nativeEv","keyboardHeight","visualViewport"],"mappings":";;wCAIA,IAAMA,EAAoB,qBACpBC,EAAqB,qBACrBC,EAAqB,IAEvBC,EAAyB,CAAC,EAC1BC,EAAwB,CAAC,EACzBC,EAAe,GAIbC,EAAsB,IAAM,CAChCH,EAAyB,CAAC,EAC1BC,EAAwB,CAAC,EACzBC,EAAe,EACjB,EACME,EAAsBC,GAAO,CAUjC,GATqBC,EAAS,UAAU,EAUtCC,EAAqBF,CAAG,MACnB,CACL,GAAI,CAACA,EAAI,eACP,OAEFJ,EAAwBO,EAAmBH,EAAI,cAAc,EAC7DA,EAAI,eAAe,SAAW,IAAM,CAClCI,EAAqBJ,CAAG,EACpBK,EAAgB,GAAKC,EAAkBN,CAAG,EAC5CO,EAAgBP,CAAG,EACVQ,EAAiBR,CAAG,GAC7BS,EAAiBT,CAAG,CAExB,CACF,CACF,EAMME,EAAuBF,GAAO,CAClCA,EAAI,iBAAiB,kBAAmBU,GAAMH,EAAgBP,EAAKU,CAAE,CAAC,EACtEV,EAAI,iBAAiB,kBAAmB,IAAMS,EAAiBT,CAAG,CAAC,CACrE,EACMO,EAAkB,CAACP,EAAKU,IAAO,CACnCC,EAAsBX,EAAKU,CAAE,EAC7Bb,EAAe,EACjB,EACMY,EAAmBT,GAAO,CAC9BY,EAAuBZ,CAAG,EAC1BH,EAAe,EACjB,EAaMQ,EAAkB,IAAM,CAC5B,IAAMQ,GAA0BlB,EAAuB,OAASC,EAAsB,QAAUA,EAAsB,MACtH,MAAO,CAACC,GAAgBF,EAAuB,QAAUC,EAAsB,OAASiB,EAAyBnB,CACnH,EAKMY,EAAoBN,GACjBH,GAAgB,CAACW,EAAiBR,CAAG,EAQxCQ,EAAmBR,GAChBH,GAAgBD,EAAsB,SAAWI,EAAI,YAKxDW,EAAwB,CAACX,EAAKc,IAAa,CAC/C,IAAMC,EAAiBD,EAAWA,EAAS,eAAiBd,EAAI,YAAcJ,EAAsB,OAC9Fc,EAAK,IAAI,YAAYlB,EAAmB,CAC5C,OAAQ,CACN,eAAAuB,CACF,CACF,CAAC,EACDf,EAAI,cAAcU,CAAE,CACtB,EAIME,EAAyBZ,GAAO,CACpC,IAAMU,EAAK,IAAI,YAAYjB,CAAkB,EAC7CO,EAAI,cAAcU,CAAE,CACtB,EAOMN,EAAuBJ,GAAO,CAClCL,EAAyB,OAAO,OAAO,CAAC,EAAGC,CAAqB,EAChEA,EAAwBO,EAAmBH,EAAI,cAAc,CAC/D,EAKMG,EAAqBa,IAClB,CACL,MAAO,KAAK,MAAMA,EAAe,KAAK,EACtC,OAAQ,KAAK,MAAMA,EAAe,MAAM,EACxC,UAAWA,EAAe,UAC1B,WAAYA,EAAe,WAC3B,QAASA,EAAe,QACxB,SAAUA,EAAe,SACzB,MAAOA,EAAe,KACxB","debug_id":"e110bc04-d4b8-55e3-9d2c-5abd1c49c0f8"}