{"version":3,"sources":["./node_modules/@ionic/core/dist/esm/focus-visible-70713a0c.js"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAE6B","file":"focus-visible-70713a0c-js-es2015.js","sourcesContent":["const ION_FOCUSED = 'ion-focused';\r\nconst ION_FOCUSABLE = 'ion-focusable';\r\nconst FOCUS_KEYS = ['Tab', 'ArrowDown', 'Space', 'Escape', ' ', 'Shift', 'Enter', 'ArrowLeft', 'ArrowRight', 'ArrowUp'];\r\nconst startFocusVisible = () => {\r\n let currentFocus = [];\r\n let keyboardMode = true;\r\n const doc = document;\r\n const setFocus = (elements) => {\r\n currentFocus.forEach(el => el.classList.remove(ION_FOCUSED));\r\n elements.forEach(el => el.classList.add(ION_FOCUSED));\r\n currentFocus = elements;\r\n };\r\n const pointerDown = () => {\r\n keyboardMode = false;\r\n setFocus([]);\r\n };\r\n doc.addEventListener('keydown', ev => {\r\n keyboardMode = FOCUS_KEYS.includes(ev.key);\r\n if (!keyboardMode) {\r\n setFocus([]);\r\n }\r\n });\r\n doc.addEventListener('focusin', ev => {\r\n if (keyboardMode && ev.composedPath) {\r\n const toFocus = ev.composedPath().filter((el) => {\r\n if (el.classList) {\r\n return el.classList.contains(ION_FOCUSABLE);\r\n }\r\n return false;\r\n });\r\n setFocus(toFocus);\r\n }\r\n });\r\n doc.addEventListener('focusout', () => {\r\n if (doc.activeElement === doc.body) {\r\n setFocus([]);\r\n }\r\n });\r\n doc.addEventListener('touchstart', pointerDown);\r\n doc.addEventListener('mousedown', pointerDown);\r\n};\n\nexport { startFocusVisible };\n"],"sourceRoot":"webpack:///"}