{"version":3,"sources":["../node_modules/@ionic/core/dist/esm/legacy/ion-menu_4-md.entry.js","../node_modules/@ionic/core/dist/esm/legacy/chunk-9d21e8e5.js","../node_modules/@ionic/core/dist/esm/legacy/chunk-d102c9d1.js","../node_modules/@ionic/core/dist/esm/legacy/index-0303391f.js"],"names":["__webpack_require__","r","__webpack_exports__","d","Menu","MenuButton","MenuController","MenuToggle","tslib__WEBPACK_IMPORTED_MODULE_0__","_chunk_f257aad1_js__WEBPACK_IMPORTED_MODULE_1__","_chunk_1074393c_js__WEBPACK_IMPORTED_MODULE_2__","_chunk_9d21e8e5_js__WEBPACK_IMPORTED_MODULE_3__","_chunk_d102c9d1_js__WEBPACK_IMPORTED_MODULE_4__","_index_0303391f_js__WEBPACK_IMPORTED_MODULE_5__","hostRef","Object","this","lastOnEnd","blocker","createBlocker","disableScroll","mode","isAnimating","_isOpen","isPaneVisible","isEndSide","disabled","side","swipeGesture","maxEdgeStart","ionWillOpen","ionWillClose","ionDidOpen","ionDidClose","ionMenuChange","lazyMenuCtrl","prototype","typeChanged","type","oldType","contentEl","undefined","classList","remove","add","removeAttribute","menuInnerEl","animation","disabledChanged","updateState","emit","open","sideChanged","swipeGestureChanged","componentWillLoad","menuCtrl","_a","el","parent","content","_b","_this","_c","label","get","componentOnReady","then","p","_getInstance","sent","parentNode","contentId","document","getElementById","querySelector","tagName","_register","Promise","resolve","bind","console","error","gesture","createGesture","gestureName","gesturePriority","threshold","canStart","ev","onWillStart","onStart","onMove","onEnd","componentDidLoad","componentDidUnload","destroy","_unregister","backdropEl","onSplitPaneChanged","detail","isPane","onBackdropClick","timeStamp","composedPath","includes","preventDefault","stopPropagation","close","isOpen","isActive","_isActive","animated","setOpen","toggle","shouldOpen","_setOpen","beforeAnimation","loadAnimation","startAnimation","afterAnimation","width","offsetWidth","_createAnimation","ani","reverse","playAsync","playSync","canSwipe","getOpenSync","win","window","posX","currentX","innerWidth","progressStart","stepValue","computeDelta","deltaX","progressStep","delta","velocity","velocityX","z","shouldCompleteRight","shouldCompleteLeft","shouldComplete","missingDistance","realDur","dur","Math","abs","min","onFinish","clearExistingCallbacks","oneTimeCallback","progressEnd","SHOW_MENU","SHOW_BACKDROP","block","unblock","MENU_CONTENT_OPEN","setDisabled","forceClosing","_setActiveMenu","hostData","role","class","__stencil_render","ref","tappable","defineProperty","enumerable","configurable","render","max","autoHide","color","aria-disabled","assign","menuIcon","attrs","menu","icon","lazy","baseAnimation","AnimationC","easing","easingReverse","duration","BOX_SHADOW_WIDTH","menuOverlayAnimation","_","closedX","openedX","menuAnimation","addElement","fromTo","backdropAnimation","menuPushAnimation","contentOpenedX","menuClosedX","contentAnimation","menuRevealAnimation","contentOpen","menus","menuAnimations","Map","registerAnimation","menuEl","getOpen","enable","isEnabled","menuRef","waitUntilReady","find","m","menuId","length","getMenus","getMenusSync","isAnimatingSync","name","set","indexOf","push","index","splice","filter","forEach","openedMenu","menuCmp","animationBuilder","Error","e","mod","create","getBoolean","map","some","predicate","instance","all","Array","from","querySelectorAll","visible","onClick","getMenuController","updateVisibility","hidden","aria-hidden","doc","menuControllerElement","createColorClasses","getClassMap","hostContext","openURL","selector","closest","ion-color","classes","isArray","split","c","trim","getClassList","SCHEME","url","direction","router","test","rIC","callback","requestIdleCallback","setTimeout","hasShadowDom","shadowRoot","attachShadow","findItemLabel","componentEl","itemEl","renderHiddenInput","always","container","value","input","ownerDocument","createElement","appendChild","clamp","n","assert","actual","reason","message","now","Date","pointerCoord","changedTouches","touch","x","clientX","y","clientY","pageX","pageY","isRTL","dir","debounceEvent","event","wait","original","_original","debounce","func","timer","args","_i","arguments","clearTimeout","apply","concat","GESTURE_CONTROLLER","_sPassive","_chunk_f257aad1_js__WEBPACK_IMPORTED_MODULE_0__","GestureController","gestureId","requestedStart","disabledGestures","disabledScroll","Set","config","GestureDelegate","newID","priority","opts","BlockerDelegate","disable","start","id","delete","capture","maxPriority","capturedId","clear","CustomEvent","dispatchEvent","release","disableGesture","enableGesture","size","body","BACKDROP_NO_SCROLL","enableScroll","isDisabled","isCaptured","isScrollDisabled","ctrl","captured","addEventListener","eventName","listenerOpts","node","supportsPassive","passive","MOUSE_WAIT","getDocument","Document","finalConfig","maxAngle","notCaptured","startX","startY","startTimeStamp","currentY","velocityY","deltaY","data","pointerEvents","pointerDown","pointerMove","pointerUp","options","rmTouchStart","rmTouchMove","rmTouchEnd","rmTouchCancel","rmMouseStart","rmMouseMove","rmMouseUp","lastTouchEvent","handleTouchStart","handleTouchEnd","handleMouseDown","handleMouseUp","stopTouch","stopMouse","stop","createPointerEvents","hasStartedPan","hasFiredStart","updateDetail","tryToCapturePan","pan","hasCapturedPan","isMoveQueued","calcGestureData","fireOnMove","detect","isGesture","reset","thresh","radians","PI","isDirX","maxCosine","cos","dirty","isPan","distance","hypotenuse","sqrt","cosine","getDirection","createPanRecognizer","fireOnStart","tmpHasCaptured","tmpHasFiredStart","prevX","prevY","prevT","timeDelta"],"mappings":"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","file":"static/js/89.44929636.chunk.js","sourcesContent":["import * as tslib_1 from \"tslib\";\nimport { r as registerInstance, d as getIonMode, c as createEvent, k as getConnect, h, e as getElement, H as Host } from './chunk-f257aad1.js';\nimport { b as config } from './chunk-1074393c.js';\nimport { c as createColorClasses } from './chunk-9d21e8e5.js';\nimport { i as isEndSide, b as assert } from './chunk-d102c9d1.js';\nimport { GESTURE_CONTROLLER } from './index-0303391f.js';\n\nvar Menu =\n/** @class */\nfunction () {\n function Menu(hostRef) {\n registerInstance(this, hostRef);\n this.lastOnEnd = 0;\n this.blocker = GESTURE_CONTROLLER.createBlocker({\n disableScroll: true\n });\n this.mode = getIonMode(this);\n this.isAnimating = false;\n this._isOpen = false;\n this.isPaneVisible = false;\n this.isEndSide = false;\n /**\n * If `true`, the menu is disabled.\n */\n\n this.disabled = false;\n /**\n * Which side of the view the menu should be placed.\n */\n\n this.side = 'start';\n /**\n * If `true`, swiping the menu is enabled.\n */\n\n this.swipeGesture = true;\n /**\n * The edge threshold for dragging the menu open.\n * If a drag/swipe happens over this value, the menu is not triggered.\n */\n\n this.maxEdgeStart = 50;\n this.ionWillOpen = createEvent(this, \"ionWillOpen\", 7);\n this.ionWillClose = createEvent(this, \"ionWillClose\", 7);\n this.ionDidOpen = createEvent(this, \"ionDidOpen\", 7);\n this.ionDidClose = createEvent(this, \"ionDidClose\", 7);\n this.ionMenuChange = createEvent(this, \"ionMenuChange\", 7);\n this.lazyMenuCtrl = getConnect(this, \"ion-menu-controller\");\n }\n\n Menu.prototype.typeChanged = function (type, oldType) {\n var contentEl = this.contentEl;\n\n if (contentEl) {\n if (oldType !== undefined) {\n contentEl.classList.remove(\"menu-content-\" + oldType);\n }\n\n contentEl.classList.add(\"menu-content-\" + type);\n contentEl.removeAttribute('style');\n }\n\n if (this.menuInnerEl) {\n // Remove effects of previous animations\n this.menuInnerEl.removeAttribute('style');\n }\n\n this.animation = undefined;\n };\n\n Menu.prototype.disabledChanged = function () {\n this.updateState();\n this.ionMenuChange.emit({\n disabled: this.disabled,\n open: this._isOpen\n });\n };\n\n Menu.prototype.sideChanged = function () {\n this.isEndSide = isEndSide(this.side);\n };\n\n Menu.prototype.swipeGestureChanged = function () {\n this.updateState();\n };\n\n Menu.prototype.componentWillLoad = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuCtrl, _a, el, parent, content, _b;\n\n var _this = this;\n\n return tslib_1.__generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (this.type === undefined) {\n this.type = config.get('menuType', this.mode === 'ios' ? 'reveal' : 'overlay');\n }\n\n _a = this;\n return [4\n /*yield*/\n , this.lazyMenuCtrl.componentOnReady().then(function (p) {\n return p._getInstance();\n })];\n\n case 1:\n menuCtrl = _a.menuCtrl = _c.sent();\n el = this.el;\n parent = el.parentNode;\n content = this.contentId !== undefined ? document.getElementById(this.contentId) : parent && parent.querySelector && parent.querySelector('[main]');\n\n if (!content || !content.tagName) {\n // requires content element\n console.error('Menu: must have a \"content\" element to listen for drag events on.');\n return [2\n /*return*/\n ];\n }\n\n this.contentEl = content; // add menu's content classes\n\n content.classList.add('menu-content');\n this.typeChanged(this.type, undefined);\n this.sideChanged(); // register this menu with the app's menu controller\n\n menuCtrl._register(this);\n\n _b = this;\n return [4\n /*yield*/\n , import('./index-0303391f.js')];\n\n case 2:\n _b.gesture = _c.sent().createGesture({\n el: document,\n gestureName: 'menu-swipe',\n gesturePriority: 30,\n threshold: 10,\n canStart: function canStart(ev) {\n return _this.canStart(ev);\n },\n onWillStart: function onWillStart() {\n return _this.onWillStart();\n },\n onStart: function onStart() {\n return _this.onStart();\n },\n onMove: function onMove(ev) {\n return _this.onMove(ev);\n },\n onEnd: function onEnd(ev) {\n return _this.onEnd(ev);\n }\n });\n this.updateState();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Menu.prototype.componentDidLoad = function () {\n this.ionMenuChange.emit({\n disabled: this.disabled,\n open: this._isOpen\n });\n };\n\n Menu.prototype.componentDidUnload = function () {\n this.blocker.destroy();\n\n this.menuCtrl._unregister(this);\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n\n this.animation = undefined;\n this.contentEl = this.backdropEl = this.menuInnerEl = undefined;\n };\n\n Menu.prototype.onSplitPaneChanged = function (ev) {\n this.isPaneVisible = ev.detail.isPane(this.el);\n this.updateState();\n };\n\n Menu.prototype.onBackdropClick = function (ev) {\n if (this._isOpen && this.lastOnEnd < ev.timeStamp - 100) {\n var shouldClose = ev.composedPath ? !ev.composedPath().includes(this.menuInnerEl) : false;\n\n if (shouldClose) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close();\n }\n }\n };\n /**\n * Returns `true` is the menu is open.\n */\n\n\n Menu.prototype.isOpen = function () {\n return Promise.resolve(this._isOpen);\n };\n /**\n * Returns `true` is the menu is active.\n *\n * A menu is active when it can be opened or closed, meaning it's enabled\n * and it's not part of a `ion-split-pane`.\n */\n\n\n Menu.prototype.isActive = function () {\n return Promise.resolve(this._isActive());\n };\n /**\n * Opens the menu. If the menu is already open or it can't be opened,\n * it returns `false`.\n */\n\n\n Menu.prototype.open = function (animated) {\n if (animated === void 0) {\n animated = true;\n }\n\n return this.setOpen(true, animated);\n };\n /**\n * Closes the menu. If the menu is already closed or it can't be closed,\n * it returns `false`.\n */\n\n\n Menu.prototype.close = function (animated) {\n if (animated === void 0) {\n animated = true;\n }\n\n return this.setOpen(false, animated);\n };\n /**\n * Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.\n * If the operation can't be completed successfully, it returns `false`.\n */\n\n\n Menu.prototype.toggle = function (animated) {\n if (animated === void 0) {\n animated = true;\n }\n\n return this.setOpen(!this._isOpen, animated);\n };\n /**\n * Opens or closes the button.\n * If the operation can't be completed successfully, it returns `false`.\n */\n\n\n Menu.prototype.setOpen = function (shouldOpen, animated) {\n if (animated === void 0) {\n animated = true;\n }\n\n return this.menuCtrl._setOpen(this, shouldOpen, animated);\n };\n\n Menu.prototype._setOpen = function (shouldOpen, animated) {\n if (animated === void 0) {\n animated = true;\n }\n\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // If the menu is disabled or it is currently being animated, let's do nothing\n if (!this._isActive() || this.isAnimating || shouldOpen === this._isOpen) {\n return [2\n /*return*/\n , false];\n }\n\n this.beforeAnimation(shouldOpen);\n return [4\n /*yield*/\n , this.loadAnimation()];\n\n case 1:\n _a.sent();\n\n return [4\n /*yield*/\n , this.startAnimation(shouldOpen, animated)];\n\n case 2:\n _a.sent();\n\n this.afterAnimation(shouldOpen);\n return [2\n /*return*/\n , true];\n }\n });\n });\n };\n\n Menu.prototype.loadAnimation = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var width, _a;\n\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n width = this.menuInnerEl.offsetWidth;\n\n if (width === this.width && this.animation !== undefined) {\n return [2\n /*return*/\n ];\n }\n\n this.width = width; // Destroy existing animation\n\n if (this.animation) {\n this.animation.destroy();\n this.animation = undefined;\n } // Create new animation\n\n\n _a = this;\n return [4\n /*yield*/\n , this.menuCtrl._createAnimation(this.type, this)];\n\n case 1:\n // Create new animation\n _a.animation = _b.sent();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Menu.prototype.startAnimation = function (shouldOpen, animated) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var ani;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ani = this.animation.reverse(!shouldOpen);\n if (!animated) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , ani.playAsync()];\n\n case 1:\n _a.sent();\n\n return [3\n /*break*/\n , 3];\n\n case 2:\n ani.playSync();\n _a.label = 3;\n\n case 3:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Menu.prototype._isActive = function () {\n return !this.disabled && !this.isPaneVisible;\n };\n\n Menu.prototype.canSwipe = function () {\n return this.swipeGesture && !this.isAnimating && this._isActive();\n };\n\n Menu.prototype.canStart = function (detail) {\n if (!this.canSwipe()) {\n return false;\n }\n\n if (this._isOpen) {\n return true; // TODO error\n } else if (this.menuCtrl.getOpenSync()) {\n return false;\n }\n\n return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);\n };\n\n Menu.prototype.onWillStart = function () {\n this.beforeAnimation(!this._isOpen);\n return this.loadAnimation();\n };\n\n Menu.prototype.onStart = function () {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n } // the cloned animation should not use an easing curve during seek\n\n\n this.animation.reverse(this._isOpen).progressStart();\n };\n\n Menu.prototype.onMove = function (detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n\n var delta = computeDelta(detail.deltaX, this._isOpen, this.isEndSide);\n var stepValue = delta / this.width;\n this.animation.progressStep(stepValue);\n };\n\n Menu.prototype.onEnd = function (detail) {\n var _this = this;\n\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n\n var isOpen = this._isOpen;\n var isEndSide = this.isEndSide;\n var delta = computeDelta(detail.deltaX, isOpen, isEndSide);\n var width = this.width;\n var stepValue = delta / width;\n var velocity = detail.velocityX;\n var z = width / 2.0;\n var shouldCompleteRight = velocity >= 0 && (velocity > 0.2 || detail.deltaX > z);\n var shouldCompleteLeft = velocity <= 0 && (velocity < -0.2 || detail.deltaX < -z);\n var shouldComplete = isOpen ? isEndSide ? shouldCompleteRight : shouldCompleteLeft : isEndSide ? shouldCompleteLeft : shouldCompleteRight;\n var shouldOpen = !isOpen && shouldComplete;\n\n if (isOpen && !shouldComplete) {\n shouldOpen = true;\n }\n\n var missing = shouldComplete ? 1 - stepValue : stepValue;\n var missingDistance = missing * width;\n var realDur = 0;\n\n if (missingDistance > 5) {\n var dur = missingDistance / Math.abs(velocity);\n realDur = Math.min(dur, 300);\n }\n\n this.lastOnEnd = detail.timeStamp;\n this.animation.onFinish(function () {\n return _this.afterAnimation(shouldOpen);\n }, {\n clearExistingCallbacks: true,\n oneTimeCallback: true\n }).progressEnd(shouldComplete, stepValue, realDur);\n };\n\n Menu.prototype.beforeAnimation = function (shouldOpen) {\n assert(!this.isAnimating, '_before() should not be called while animating'); // this places the menu into the correct location before it animates in\n // this css class doesn't actually kick off any animations\n\n this.el.classList.add(SHOW_MENU);\n\n if (this.backdropEl) {\n this.backdropEl.classList.add(SHOW_BACKDROP);\n }\n\n this.blocker.block();\n this.isAnimating = true;\n\n if (shouldOpen) {\n this.ionWillOpen.emit();\n } else {\n this.ionWillClose.emit();\n }\n };\n\n Menu.prototype.afterAnimation = function (isOpen) {\n assert(this.isAnimating, '_before() should be called while animating'); // keep opening/closing the menu disabled for a touch more yet\n // only add listeners/css if it's enabled and isOpen\n // and only remove listeners/css if it's not open\n // emit opened/closed events\n\n this._isOpen = isOpen;\n this.isAnimating = false;\n\n if (!this._isOpen) {\n this.blocker.unblock();\n }\n\n if (isOpen) {\n // add css class\n if (this.contentEl) {\n this.contentEl.classList.add(MENU_CONTENT_OPEN);\n } // emit open event\n\n\n this.ionDidOpen.emit();\n } else {\n // remove css classes\n this.el.classList.remove(SHOW_MENU);\n\n if (this.contentEl) {\n this.contentEl.classList.remove(MENU_CONTENT_OPEN);\n }\n\n if (this.backdropEl) {\n this.backdropEl.classList.remove(SHOW_BACKDROP);\n } // emit close event\n\n\n this.ionDidClose.emit();\n }\n };\n\n Menu.prototype.updateState = function () {\n var isActive = this._isActive();\n\n if (this.gesture) {\n this.gesture.setDisabled(!isActive || !this.swipeGesture);\n } // Close menu immediately\n\n\n if (!isActive && this._isOpen) {\n // close if this menu is open, and should not be enabled\n this.forceClosing();\n }\n\n if (!this.disabled && this.menuCtrl) {\n this.menuCtrl._setActiveMenu(this);\n }\n\n assert(!this.isAnimating, 'can not be animating');\n };\n\n Menu.prototype.forceClosing = function () {\n assert(this._isOpen, 'menu cannot be closed');\n this.isAnimating = true;\n var ani = this.animation.reverse(true);\n ani.playSync();\n this.afterAnimation(false);\n };\n\n Menu.prototype.hostData = function () {\n var _a;\n\n var _b = this,\n isEndSide = _b.isEndSide,\n type = _b.type,\n disabled = _b.disabled,\n isPaneVisible = _b.isPaneVisible;\n\n return {\n role: 'navigation',\n class: (_a = {}, _a[\"\" + this.mode] = true, _a[\"menu-type-\" + type] = true, _a['menu-enabled'] = !disabled, _a['menu-side-end'] = isEndSide, _a['menu-side-start'] = !isEndSide, _a['menu-pane-visible'] = isPaneVisible, _a)\n };\n };\n\n Menu.prototype.__stencil_render = function () {\n var _this = this;\n\n return [h(\"div\", {\n class: \"menu-inner\",\n ref: function ref(el) {\n return _this.menuInnerEl = el;\n }\n }, h(\"slot\", null)), h(\"ion-backdrop\", {\n ref: function ref(el) {\n return _this.backdropEl = el;\n },\n class: \"menu-backdrop\",\n tappable: false,\n stopPropagation: false\n })];\n };\n\n Object.defineProperty(Menu.prototype, \"el\", {\n get: function get() {\n return getElement(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Menu, \"watchers\", {\n get: function get() {\n return {\n \"type\": [\"typeChanged\"],\n \"disabled\": [\"disabledChanged\"],\n \"side\": [\"sideChanged\"],\n \"swipeGesture\": [\"swipeGestureChanged\"]\n };\n },\n enumerable: true,\n configurable: true\n });\n\n Menu.prototype.render = function () {\n return h(Host, this.hostData(), this.__stencil_render());\n };\n\n Object.defineProperty(Menu, \"style\", {\n get: function get() {\n return \":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color,#fff);left:0;right:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{left:0;right:auto;top:0;bottom:0;-webkit-transform:translate3d(-9999px,0,0);transform:translate3d(-9999px,0,0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:strict}:host-context([dir=rtl]) .menu-inner,[dir=rtl] .menu-inner{left:unset;right:unset;left:auto;right:0;-webkit-transform:translate3d(calc(-1 * -9999px),0,0);transform:translate3d(calc(-1 * -9999px),0,0)}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;right:auto;left:0}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;right:0;left:auto}ion-backdrop{display:none;opacity:.01;z-index:-1}\\@media (max-width:340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translateZ(0);transform:translateZ(0)}:host(.menu-type-overlay){z-index:80}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible) .menu-inner{left:0;right:0;width:auto;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}:host(.menu-pane-visible) ion-backdrop{display:hidden!important}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:0 2px 22px 0 rgba(0,0,0,.09),4px 0 16px 0 rgba(0,0,0,.18);box-shadow:0 2px 22px 0 rgba(0,0,0,.09),4px 0 16px 0 rgba(0,0,0,.18)}\";\n },\n enumerable: true,\n configurable: true\n });\n return Menu;\n}();\n\nfunction computeDelta(deltaX, isOpen, isEndSide) {\n return Math.max(0, isOpen !== isEndSide ? -deltaX : deltaX);\n}\n\nfunction checkEdgeSide(win, posX, isEndSide, maxEdgeStart) {\n if (isEndSide) {\n return posX >= win.innerWidth - maxEdgeStart;\n } else {\n return posX <= maxEdgeStart;\n }\n}\n\nvar SHOW_MENU = 'show-menu';\nvar SHOW_BACKDROP = 'show-backdrop';\nvar MENU_CONTENT_OPEN = 'menu-content-open';\n\nvar MenuButton =\n/** @class */\nfunction () {\n function MenuButton(hostRef) {\n registerInstance(this, hostRef);\n /**\n * If `true`, the user cannot interact with the menu button.\n */\n\n this.disabled = false;\n /**\n * Automatically hides the menu button when the corresponding menu is not active\n */\n\n this.autoHide = true;\n /**\n * The type of the button.\n */\n\n this.type = 'button';\n }\n\n MenuButton.prototype.hostData = function () {\n var _a;\n\n var mode = getIonMode(this);\n\n var _b = this,\n color = _b.color,\n disabled = _b.disabled;\n\n return {\n 'aria-disabled': disabled ? 'true' : null,\n class: Object.assign({}, createColorClasses(color), (_a = {}, _a[mode] = true, _a['button'] = true, _a['menu-button-disabled'] = disabled, _a['ion-activatable'] = true, _a['ion-focusable'] = true, _a))\n };\n };\n\n MenuButton.prototype.__stencil_render = function () {\n var mode = getIonMode(this);\n var menuIcon = config.get('menuIcon', 'menu');\n var attrs = {\n type: this.type\n };\n return h(\"ion-menu-toggle\", {\n menu: this.menu,\n autoHide: this.autoHide\n }, h(\"button\", Object.assign({}, attrs, {\n disabled: this.disabled,\n class: \"button-native\"\n }), h(\"slot\", null, h(\"ion-icon\", {\n icon: menuIcon,\n mode: mode,\n lazy: false\n })), mode === 'md' && h(\"ion-ripple-effect\", {\n type: \"unbounded\"\n })));\n };\n\n MenuButton.prototype.render = function () {\n return h(Host, this.hostData(), this.__stencil_render());\n };\n\n Object.defineProperty(MenuButton, \"style\", {\n get: function get() {\n return \":host{--background:transparent;--color-focused:var(--color);--border-radius:initial;--padding-top:0;--padding-bottom:0;color:var(--color);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-font-kerning:none;font-kerning:none}.button-native{border-radius:var(--border-radius);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}\\@supports ((-webkit-margin-start:0) or (margin-inline-start:0)) or (-webkit-margin-start:0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}ion-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;pointer-events:none}:host(.menu-button-disabled){cursor:default;opacity:.5;pointer-events:none}\\@media (any-hover:hover){:host(:hover) .button-native{background:var(--background-hover);color:var(--color-hover)}}:host(.ion-focused) .button-native{background:var(--background-focused);color:var(--color-focused)}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host-context(ion-toolbar:not(.ion-color)){color:var(--ion-toolbar-color,var(--color))}:host{--background-focused:rgba(66,66,66,0.24);--background-hover:rgba(66,66,66,0.08);--border-radius:50%;--color:initial;--padding-start:8px;--padding-end:8px;width:48px;height:48px}ion-icon{font-size:24px}\\@media (any-hover:hover){:host(.ion-color:hover) .button-native{background:rgba(var(--ion-color-base-rgb),.08)}}:host(.ion-color.ion-focused) .button-native{background:rgba(var(--ion-color-base-rgb),.24);color:var(--ion-color-base)}\";\n },\n enumerable: true,\n configurable: true\n });\n return MenuButton;\n}();\n/**\n * baseAnimation\n * Base class which is extended by the various types. Each\n * type will provide their own animations for open and close\n * and registers itself with Menu.\n */\n\n\nfunction baseAnimation(AnimationC) {\n // https://material.io/guidelines/motion/movement.html#movement-movement-in-out-of-screen-bounds\n // https://material.io/guidelines/motion/duration-easing.html#duration-easing-natural-easing-curves\n // \"Apply the sharp curve to items temporarily leaving the screen that may return\n // from the same exit point. When they return, use the deceleration curve. On mobile,\n // this transition typically occurs over 300ms\" -- MD Motion Guide\n return Promise.resolve(new AnimationC().easing('cubic-bezier(0.0, 0.0, 0.2, 1)') // Deceleration curve (Entering the screen)\n .easingReverse('cubic-bezier(0.4, 0.0, 0.6, 1)') // Sharp curve (Temporarily leaving the screen)\n .duration(300));\n}\n\nvar BOX_SHADOW_WIDTH = 8;\n/**\n * Menu Overlay Type\n * The menu slides over the content. The content\n * itself, which is under the menu, does not move.\n */\n\nfunction menuOverlayAnimation(AnimationC, _, menu) {\n var closedX;\n var openedX;\n var width = menu.width + BOX_SHADOW_WIDTH;\n\n if (menu.isEndSide) {\n // right side\n closedX = width + 'px';\n openedX = '0px';\n } else {\n // left side\n closedX = -width + 'px';\n openedX = '0px';\n }\n\n var menuAnimation = new AnimationC().addElement(menu.menuInnerEl).fromTo('translateX', closedX, openedX);\n var backdropAnimation = new AnimationC().addElement(menu.backdropEl).fromTo('opacity', 0.01, 0.32);\n return baseAnimation(AnimationC).then(function (animation) {\n return animation.add(menuAnimation).add(backdropAnimation);\n });\n}\n/**\n * Menu Push Type\n * The content slides over to reveal the menu underneath.\n * The menu itself also slides over to reveal its bad self.\n */\n\n\nfunction menuPushAnimation(AnimationC, _, menu) {\n var contentOpenedX;\n var menuClosedX;\n var width = menu.width;\n\n if (menu.isEndSide) {\n contentOpenedX = -width + 'px';\n menuClosedX = width + 'px';\n } else {\n contentOpenedX = width + 'px';\n menuClosedX = -width + 'px';\n }\n\n var menuAnimation = new AnimationC().addElement(menu.menuInnerEl).fromTo('translateX', menuClosedX, '0px');\n var contentAnimation = new AnimationC().addElement(menu.contentEl).fromTo('translateX', '0px', contentOpenedX);\n var backdropAnimation = new AnimationC().addElement(menu.backdropEl).fromTo('opacity', 0.01, 0.32);\n return baseAnimation(AnimationC).then(function (animation) {\n return animation.add(menuAnimation).add(backdropAnimation).add(contentAnimation);\n });\n}\n/**\n * Menu Reveal Type\n * The content slides over to reveal the menu underneath.\n * The menu itself, which is under the content, does not move.\n */\n\n\nfunction menuRevealAnimation(AnimationC, _, menu) {\n var openedX = menu.width * (menu.isEndSide ? -1 : 1) + 'px';\n var contentOpen = new AnimationC().addElement(menu.contentEl).fromTo('translateX', '0px', openedX);\n return baseAnimation(AnimationC).then(function (animation) {\n return animation.add(contentOpen);\n });\n}\n\nvar MenuController =\n/** @class */\nfunction () {\n function MenuController(hostRef) {\n registerInstance(this, hostRef);\n this.menus = [];\n this.menuAnimations = new Map();\n this.registerAnimation('reveal', menuRevealAnimation);\n this.registerAnimation('push', menuPushAnimation);\n this.registerAnimation('overlay', menuOverlayAnimation);\n }\n /**\n * Open the menu. If a menu is not provided then it will open the first\n * menu found. If the specified menu is `start` or `end`, then it will open\n * the enabled menu on that side. Otherwise, it will try to find the menu\n * using the menu's `id` property. If a menu is not found then it will\n * return `false`.\n *\n * @param menu The menuId or side of the menu to open.\n */\n\n\n MenuController.prototype.open = function (menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.get(menu)];\n\n case 1:\n menuEl = _a.sent();\n\n if (menuEl) {\n return [2\n /*return*/\n , menuEl.open()];\n }\n\n return [2\n /*return*/\n , false];\n }\n });\n });\n };\n /**\n * Close the menu. If a menu is specified, it will close that menu.\n * If no menu is specified, then it will close any menu that is open.\n * If it does not find any open menus, it will return `false`.\n *\n * @param menu The menuId or side of the menu to close.\n */\n\n\n MenuController.prototype.close = function (menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , menu !== undefined ? this.get(menu) : this.getOpen()];\n\n case 1:\n menuEl = _a.sent();\n\n if (menuEl !== undefined) {\n return [2\n /*return*/\n , menuEl.close()];\n }\n\n return [2\n /*return*/\n , false];\n }\n });\n });\n };\n /**\n * Toggle the menu open or closed. If the menu is already open, it will try to\n * close the menu, otherwise it will try to open it. Returns `false` if\n * a menu is not found.\n *\n * @param menu The menuId or side of the menu to toggle.\n */\n\n\n MenuController.prototype.toggle = function (menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.get(menu)];\n\n case 1:\n menuEl = _a.sent();\n\n if (menuEl) {\n return [2\n /*return*/\n , menuEl.toggle()];\n }\n\n return [2\n /*return*/\n , false];\n }\n });\n });\n };\n /**\n * Enable or disable a menu. Disabling a menu will not allow gestures\n * for that menu or any calls to open it. This is useful when there are\n * multiple menus on the same side and only one of them should be allowed\n * to open. Enabling a menu will automatically disable all other menus\n * on that side.\n *\n * @param enable If `true`, the menu should be enabled.\n * @param menu The menuId or side of the menu to enable or disable.\n */\n\n\n MenuController.prototype.enable = function (enable, menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.get(menu)];\n\n case 1:\n menuEl = _a.sent();\n\n if (menuEl) {\n menuEl.disabled = !enable;\n }\n\n return [2\n /*return*/\n , menuEl];\n }\n });\n });\n };\n /**\n * Enable or disable the ability to swipe open the menu.\n *\n * @param enable If `true`, the menu swipe gesture should be enabled.\n * @param menu The menuId or side of the menu to enable or disable the swipe gesture on.\n */\n\n\n MenuController.prototype.swipeGesture = function (enable, menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.get(menu)];\n\n case 1:\n menuEl = _a.sent();\n\n if (menuEl) {\n menuEl.swipeGesture = enable;\n }\n\n return [2\n /*return*/\n , menuEl];\n }\n });\n });\n };\n /**\n * Get whether or not the menu is open. Returns `true` if the specified\n * menu is open. If a menu is not specified, it will return `true` if\n * any menu is currently open.\n *\n * @param menu The menuId or side of the menu that is being checked.\n */\n\n\n MenuController.prototype.isOpen = function (menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuEl, menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(menu != null)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.get(menu)];\n\n case 1:\n menuEl = _a.sent();\n return [2\n /*return*/\n , menuEl !== undefined && menuEl.isOpen()];\n\n case 2:\n return [4\n /*yield*/\n , this.getOpen()];\n\n case 3:\n menuEl = _a.sent();\n return [2\n /*return*/\n , menuEl !== undefined];\n }\n });\n });\n };\n /**\n * Get whether or not the menu is enabled. Returns `true` if the\n * specified menu is enabled. Returns `false` if a menu is disabled\n * or not found.\n *\n * @param menu The menuId or side of the menu that is being checked.\n */\n\n\n MenuController.prototype.isEnabled = function (menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.get(menu)];\n\n case 1:\n menuEl = _a.sent();\n\n if (menuEl) {\n return [2\n /*return*/\n , !menuEl.disabled];\n }\n\n return [2\n /*return*/\n , false];\n }\n });\n });\n };\n /**\n * Get a menu instance. If a menu is not provided then it will return the first\n * menu found. If the specified menu is `start` or `end`, then it will return the\n * enabled menu on that side. Otherwise, it will try to find the menu using the menu's\n * `id` property. If a menu is not found then it will return `null`.\n *\n * @param menu The menuId or side of the menu.\n */\n\n\n MenuController.prototype.get = function (menu) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuRef, menuEl;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.waitUntilReady()];\n\n case 1:\n _a.sent();\n\n if (menu === 'start' || menu === 'end') {\n menuRef = this.find(function (m) {\n return m.side === menu && !m.disabled;\n });\n\n if (menuRef) {\n return [2\n /*return*/\n , menuRef];\n } // didn't find a menu side that is enabled\n // so try to get the first menu side found\n\n\n return [2\n /*return*/\n , this.find(function (m) {\n return m.side === menu;\n })];\n } else if (menu != null) {\n // the menuId was not left or right\n // so try to get the menu by its \"id\"\n return [2\n /*return*/\n , this.find(function (m) {\n return m.menuId === menu;\n })];\n }\n\n menuEl = this.find(function (m) {\n return !m.disabled;\n });\n\n if (menuEl) {\n return [2\n /*return*/\n , menuEl];\n } // get the first menu in the array, if one exists\n\n\n return [2\n /*return*/\n , this.menus.length > 0 ? this.menus[0].el : undefined];\n }\n });\n });\n };\n /**\n * Get the instance of the opened menu. Returns `null` if a menu is not found.\n */\n\n\n MenuController.prototype.getOpen = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.waitUntilReady()];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n , this.getOpenSync()];\n }\n });\n });\n };\n /**\n * Get all menu instances.\n */\n\n\n MenuController.prototype.getMenus = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.waitUntilReady()];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n , this.getMenusSync()];\n }\n });\n });\n };\n /**\n * Get whether or not a menu is animating. Returns `true` if any\n * menu is currently animating.\n */\n\n\n MenuController.prototype.isAnimating = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.waitUntilReady()];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n , this.isAnimatingSync()];\n }\n });\n });\n };\n /**\n * Registers a new animation that can be used with any `ion-menu` by\n * passing the name of the animation in its `type` property.\n *\n * @param name The name of the animation to register.\n * @param animation The animation function to register.\n */\n\n\n MenuController.prototype.registerAnimation = function (name, animation) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n this.menuAnimations.set(name, animation);\n return [2\n /*return*/\n ];\n });\n });\n };\n /**\n * @internal\n */\n\n\n MenuController.prototype._getInstance = function () {\n return Promise.resolve(this);\n };\n\n MenuController.prototype._register = function (menu) {\n var menus = this.menus;\n\n if (menus.indexOf(menu) < 0) {\n if (!menu.disabled) {\n this._setActiveMenu(menu);\n }\n\n menus.push(menu);\n }\n };\n\n MenuController.prototype._unregister = function (menu) {\n var index = this.menus.indexOf(menu);\n\n if (index > -1) {\n this.menus.splice(index, 1);\n }\n };\n\n MenuController.prototype._setActiveMenu = function (menu) {\n // if this menu should be enabled\n // then find all the other menus on this same side\n // and automatically disable other same side menus\n var side = menu.side;\n this.menus.filter(function (m) {\n return m.side === side && m !== menu;\n }).forEach(function (m) {\n return m.disabled = true;\n });\n };\n\n MenuController.prototype._setOpen = function (menu, shouldOpen, animated) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var openedMenu;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.isAnimatingSync()) {\n return [2\n /*return*/\n , false];\n }\n\n if (!shouldOpen) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , this.getOpen()];\n\n case 1:\n openedMenu = _a.sent();\n if (!(openedMenu && menu.el !== openedMenu)) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , openedMenu.setOpen(false, false)];\n\n case 2:\n _a.sent();\n\n _a.label = 3;\n\n case 3:\n return [2\n /*return*/\n , menu._setOpen(shouldOpen, animated)];\n }\n });\n });\n };\n\n MenuController.prototype._createAnimation = function (type, menuCmp) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var animationBuilder, animation;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n animationBuilder = this.menuAnimations.get(type);\n\n if (!animationBuilder) {\n throw new Error('animation not registered');\n }\n\n return [4\n /*yield*/\n , import('./index-8ec7f6e0.js').then(function (mod) {\n return mod.create(animationBuilder, null, menuCmp);\n })];\n\n case 1:\n animation = _a.sent();\n\n if (!config.getBoolean('animated', true)) {\n animation.duration(0);\n }\n\n return [2\n /*return*/\n , animation];\n }\n });\n });\n };\n\n MenuController.prototype.getOpenSync = function () {\n return this.find(function (m) {\n return m._isOpen;\n });\n };\n\n MenuController.prototype.getMenusSync = function () {\n return this.menus.map(function (menu) {\n return menu.el;\n });\n };\n\n MenuController.prototype.isAnimatingSync = function () {\n return this.menus.some(function (menu) {\n return menu.isAnimating;\n });\n };\n\n MenuController.prototype.find = function (predicate) {\n var instance = this.menus.find(predicate);\n\n if (instance !== undefined) {\n return instance.el;\n }\n\n return undefined;\n };\n\n MenuController.prototype.waitUntilReady = function () {\n return Promise.all(Array.from(document.querySelectorAll('ion-menu')).map(function (menu) {\n return menu.componentOnReady();\n }));\n };\n\n Object.defineProperty(MenuController, \"style\", {\n get: function get() {\n return \".menu-content{-webkit-transform:translateZ(0);transform:translateZ(0)}.menu-content-open{cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;pointer-events:none}.ios .menu-content-reveal{-webkit-box-shadow:-8px 0 42px rgba(0,0,0,.08);box-shadow:-8px 0 42px rgba(0,0,0,.08)}[dir=rtl].ios .menu-content-reveal{-webkit-box-shadow:8px 0 42px rgba(0,0,0,.08);box-shadow:8px 0 42px rgba(0,0,0,.08)}.md .menu-content-push,.md .menu-content-reveal{-webkit-box-shadow:0 2px 22px 0 rgba(0,0,0,.09),4px 0 16px 0 rgba(0,0,0,.18);box-shadow:0 2px 22px 0 rgba(0,0,0,.09),4px 0 16px 0 rgba(0,0,0,.18)}\";\n },\n enumerable: true,\n configurable: true\n });\n return MenuController;\n}();\n\nvar MenuToggle =\n/** @class */\nfunction () {\n function MenuToggle(hostRef) {\n var _this = this;\n\n registerInstance(this, hostRef);\n this.visible = false;\n /**\n * Automatically hides the content when the corresponding menu is not active.\n *\n * By default, it's `true`. Change it to `false` in order to\n * keep `ion-menu-toggle` always visible regardless the state of the menu.\n */\n\n this.autoHide = true;\n\n this.onClick = function () {\n return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var menuCtrl, menu;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , getMenuController(document)];\n\n case 1:\n menuCtrl = _a.sent();\n if (!menuCtrl) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , menuCtrl.get(this.menu)];\n\n case 2:\n menu = _a.sent();\n\n if (menu) {\n menuCtrl.toggle(this.menu);\n }\n\n _a.label = 3;\n\n case 3:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n }\n\n MenuToggle.prototype.componentDidLoad = function () {\n return this.updateVisibility();\n };\n\n MenuToggle.prototype.updateVisibility = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var menuCtrl, menu, _a;\n\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , getMenuController(document)];\n\n case 1:\n menuCtrl = _b.sent();\n if (!menuCtrl) return [3\n /*break*/\n , 5];\n return [4\n /*yield*/\n , menuCtrl.get(this.menu)];\n\n case 2:\n menu = _b.sent();\n _a = menu;\n if (!_a) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , menu.isActive()];\n\n case 3:\n _a = _b.sent();\n _b.label = 4;\n\n case 4:\n if (_a) {\n this.visible = true;\n return [2\n /*return*/\n ];\n }\n\n _b.label = 5;\n\n case 5:\n this.visible = false;\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n MenuToggle.prototype.render = function () {\n var _a;\n\n var mode = getIonMode(this);\n var hidden = this.autoHide && !this.visible;\n return h(Host, {\n onClick: this.onClick,\n \"aria-hidden\": hidden ? 'true' : null,\n class: (_a = {}, _a[mode] = true, _a['menu-toggle-hidden'] = hidden, _a)\n }, h(\"slot\", null));\n };\n\n Object.defineProperty(MenuToggle, \"style\", {\n get: function get() {\n return \":host(.menu-toggle-hidden){display:none}\";\n },\n enumerable: true,\n configurable: true\n });\n return MenuToggle;\n}();\n\nfunction getMenuController(doc) {\n var menuControllerElement = doc.querySelector('ion-menu-controller');\n\n if (!menuControllerElement) {\n return Promise.resolve(undefined);\n }\n\n return menuControllerElement.componentOnReady();\n}\n\nexport { Menu as ion_menu, MenuButton as ion_menu_button, MenuController as ion_menu_controller, MenuToggle as ion_menu_toggle };","import * as tslib_1 from \"tslib\";\n\nfunction hostContext(selector, el) {\n return el.closest(selector) !== null;\n}\n/**\n * Create the mode and color classes for the component based on the classes passed in\n */\n\n\nfunction createColorClasses(color) {\n var _a;\n\n return typeof color === 'string' && color.length > 0 ? (_a = {\n 'ion-color': true\n }, _a[\"ion-color-\" + color] = true, _a) : undefined;\n}\n\nfunction getClassList(classes) {\n if (classes !== undefined) {\n var array = Array.isArray(classes) ? classes : classes.split(' ');\n return array.filter(function (c) {\n return c != null;\n }).map(function (c) {\n return c.trim();\n }).filter(function (c) {\n return c !== '';\n });\n }\n\n return [];\n}\n\nfunction getClassMap(classes) {\n var map = {};\n getClassList(classes).forEach(function (c) {\n return map[c] = true;\n });\n return map;\n}\n\nvar SCHEME = /^[a-z][a-z0-9+\\-.]*:/;\n\nfunction openURL(url, ev, direction) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var router;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(url != null && url[0] !== '#' && !SCHEME.test(url))) return [3\n /*break*/\n , 2];\n router = document.querySelector('ion-router');\n if (!router) return [3\n /*break*/\n , 2];\n\n if (ev != null) {\n ev.preventDefault();\n }\n\n return [4\n /*yield*/\n , router.componentOnReady()];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n , router.push(url, direction)];\n\n case 2:\n return [2\n /*return*/\n , false];\n }\n });\n });\n}\n\nexport { createColorClasses as c, getClassMap as g, hostContext as h, openURL as o };","function rIC(callback) {\n if ('requestIdleCallback' in window) {\n window.requestIdleCallback(callback);\n } else {\n setTimeout(callback, 32);\n }\n}\n\nfunction hasShadowDom(el) {\n return !!el.shadowRoot && !!el.attachShadow;\n}\n\nfunction findItemLabel(componentEl) {\n var itemEl = componentEl.closest('ion-item');\n\n if (itemEl) {\n return itemEl.querySelector('ion-label');\n }\n\n return null;\n}\n\nfunction renderHiddenInput(always, container, name, value, disabled) {\n if (always || hasShadowDom(container)) {\n var input = container.querySelector('input.aux-input');\n\n if (!input) {\n input = container.ownerDocument.createElement('input');\n input.type = 'hidden';\n input.classList.add('aux-input');\n container.appendChild(input);\n }\n\n input.disabled = disabled;\n input.name = name;\n input.value = value || '';\n }\n}\n\nfunction clamp(min, n, max) {\n return Math.max(min, Math.min(n, max));\n}\n\nfunction assert(actual, reason) {\n if (!actual) {\n var message = 'ASSERT: ' + reason;\n console.error(message);\n debugger; // tslint:disable-line\n\n throw new Error(message);\n }\n}\n\nfunction now(ev) {\n return ev.timeStamp || Date.now();\n}\n\nfunction pointerCoord(ev) {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n if (ev) {\n var changedTouches = ev.changedTouches;\n\n if (changedTouches && changedTouches.length > 0) {\n var touch = changedTouches[0];\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n\n if (ev.pageX !== undefined) {\n return {\n x: ev.pageX,\n y: ev.pageY\n };\n }\n }\n\n return {\n x: 0,\n y: 0\n };\n}\n/**\n * @hidden\n * Given a side, return if it should be on the end\n * based on the value of dir\n * @param side the side\n * @param isRTL whether the application dir is rtl\n */\n\n\nfunction isEndSide(side) {\n var isRTL = document.dir === 'rtl';\n\n switch (side) {\n case 'start':\n return isRTL;\n\n case 'end':\n return !isRTL;\n\n default:\n throw new Error(\"\\\"\" + side + \"\\\" is not a valid value for [side]. Use \\\"start\\\" or \\\"end\\\" instead.\");\n }\n}\n\nfunction debounceEvent(event, wait) {\n var original = event._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait)\n };\n}\n\nfunction debounce(func, wait) {\n if (wait === void 0) {\n wait = 0;\n }\n\n var timer;\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n clearTimeout(timer);\n timer = setTimeout.apply(void 0, [func, wait].concat(args));\n };\n}\n\nexport { rIC as a, assert as b, clamp as c, debounceEvent as d, debounce as e, findItemLabel as f, hasShadowDom as h, isEndSide as i, now as n, pointerCoord as p, renderHiddenInput as r };","import { w as writeTask } from './chunk-f257aad1.js';\nimport './chunk-1074393c.js';\n\nvar GestureController =\n/** @class */\nfunction () {\n function GestureController() {\n this.gestureId = 0;\n this.requestedStart = new Map();\n this.disabledGestures = new Map();\n this.disabledScroll = new Set();\n }\n /**\n * Creates a gesture delegate based on the GestureConfig passed\n */\n\n\n GestureController.prototype.createGesture = function (config) {\n return new GestureDelegate(this, this.newID(), config.name, config.priority || 0, !!config.disableScroll);\n };\n /**\n * Creates a blocker that will block any other gesture events from firing. Set in the ion-gesture component.\n */\n\n\n GestureController.prototype.createBlocker = function (opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n return new BlockerDelegate(this, this.newID(), opts.disable, !!opts.disableScroll);\n };\n\n GestureController.prototype.start = function (gestureName, id, priority) {\n if (!this.canStart(gestureName)) {\n this.requestedStart.delete(id);\n return false;\n }\n\n this.requestedStart.set(id, priority);\n return true;\n };\n\n GestureController.prototype.capture = function (gestureName, id, priority) {\n if (!this.start(gestureName, id, priority)) {\n return false;\n }\n\n var requestedStart = this.requestedStart;\n var maxPriority = -10000;\n requestedStart.forEach(function (value) {\n maxPriority = Math.max(maxPriority, value);\n });\n\n if (maxPriority === priority) {\n this.capturedId = id;\n requestedStart.clear();\n var event = new CustomEvent('ionGestureCaptured', {\n detail: {\n gestureName: gestureName\n }\n });\n document.dispatchEvent(event);\n return true;\n }\n\n requestedStart.delete(id);\n return false;\n };\n\n GestureController.prototype.release = function (id) {\n this.requestedStart.delete(id);\n\n if (this.capturedId === id) {\n this.capturedId = undefined;\n }\n };\n\n GestureController.prototype.disableGesture = function (gestureName, id) {\n var set = this.disabledGestures.get(gestureName);\n\n if (set === undefined) {\n set = new Set();\n this.disabledGestures.set(gestureName, set);\n }\n\n set.add(id);\n };\n\n GestureController.prototype.enableGesture = function (gestureName, id) {\n var set = this.disabledGestures.get(gestureName);\n\n if (set !== undefined) {\n set.delete(id);\n }\n };\n\n GestureController.prototype.disableScroll = function (id) {\n this.disabledScroll.add(id);\n\n if (this.disabledScroll.size === 1) {\n document.body.classList.add(BACKDROP_NO_SCROLL);\n }\n };\n\n GestureController.prototype.enableScroll = function (id) {\n this.disabledScroll.delete(id);\n\n if (this.disabledScroll.size === 0) {\n document.body.classList.remove(BACKDROP_NO_SCROLL);\n }\n };\n\n GestureController.prototype.canStart = function (gestureName) {\n if (this.capturedId !== undefined) {\n // a gesture already captured\n return false;\n }\n\n if (this.isDisabled(gestureName)) {\n return false;\n }\n\n return true;\n };\n\n GestureController.prototype.isCaptured = function () {\n return this.capturedId !== undefined;\n };\n\n GestureController.prototype.isScrollDisabled = function () {\n return this.disabledScroll.size > 0;\n };\n\n GestureController.prototype.isDisabled = function (gestureName) {\n var disabled = this.disabledGestures.get(gestureName);\n\n if (disabled && disabled.size > 0) {\n return true;\n }\n\n return false;\n };\n\n GestureController.prototype.newID = function () {\n this.gestureId++;\n return this.gestureId;\n };\n\n return GestureController;\n}();\n\nvar GestureDelegate =\n/** @class */\nfunction () {\n function GestureDelegate(ctrl, id, name, priority, disableScroll) {\n this.id = id;\n this.name = name;\n this.disableScroll = disableScroll;\n this.priority = priority * 1000000 + id;\n this.ctrl = ctrl;\n }\n\n GestureDelegate.prototype.canStart = function () {\n if (!this.ctrl) {\n return false;\n }\n\n return this.ctrl.canStart(this.name);\n };\n\n GestureDelegate.prototype.start = function () {\n if (!this.ctrl) {\n return false;\n }\n\n return this.ctrl.start(this.name, this.id, this.priority);\n };\n\n GestureDelegate.prototype.capture = function () {\n if (!this.ctrl) {\n return false;\n }\n\n var captured = this.ctrl.capture(this.name, this.id, this.priority);\n\n if (captured && this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n\n return captured;\n };\n\n GestureDelegate.prototype.release = function () {\n if (this.ctrl) {\n this.ctrl.release(this.id);\n\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n }\n };\n\n GestureDelegate.prototype.destroy = function () {\n this.release();\n this.ctrl = undefined;\n };\n\n return GestureDelegate;\n}();\n\nvar BlockerDelegate =\n/** @class */\nfunction () {\n function BlockerDelegate(ctrl, id, disable, disableScroll) {\n this.id = id;\n this.disable = disable;\n this.disableScroll = disableScroll;\n this.ctrl = ctrl;\n }\n\n BlockerDelegate.prototype.block = function () {\n if (!this.ctrl) {\n return;\n }\n\n if (this.disable) {\n for (var _i = 0, _a = this.disable; _i < _a.length; _i++) {\n var gesture = _a[_i];\n this.ctrl.disableGesture(gesture, this.id);\n }\n }\n\n if (this.disableScroll) {\n this.ctrl.disableScroll(this.id);\n }\n };\n\n BlockerDelegate.prototype.unblock = function () {\n if (!this.ctrl) {\n return;\n }\n\n if (this.disable) {\n for (var _i = 0, _a = this.disable; _i < _a.length; _i++) {\n var gesture = _a[_i];\n this.ctrl.enableGesture(gesture, this.id);\n }\n }\n\n if (this.disableScroll) {\n this.ctrl.enableScroll(this.id);\n }\n };\n\n BlockerDelegate.prototype.destroy = function () {\n this.unblock();\n this.ctrl = undefined;\n };\n\n return BlockerDelegate;\n}();\n\nvar BACKDROP_NO_SCROLL = 'backdrop-no-scroll';\nvar GESTURE_CONTROLLER = new GestureController();\n\nfunction addEventListener(el, eventName, callback, opts) {\n // use event listener options when supported\n // otherwise it's just a boolean for the \"capture\" arg\n var listenerOpts = supportsPassive(el) ? {\n 'capture': !!opts.capture,\n 'passive': !!opts.passive\n } : !!opts.capture;\n var add;\n var remove;\n\n if (el['__zone_symbol__addEventListener']) {\n add = '__zone_symbol__addEventListener';\n remove = '__zone_symbol__removeEventListener';\n } else {\n add = 'addEventListener';\n remove = 'removeEventListener';\n }\n\n el[add](eventName, callback, listenerOpts);\n return function () {\n el[remove](eventName, callback, listenerOpts);\n };\n}\n\nvar _sPassive;\n\nfunction supportsPassive(node) {\n if (_sPassive === undefined) {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _sPassive = true;\n }\n });\n node.addEventListener('optsTest', function () {\n return;\n }, opts);\n } catch (e) {\n _sPassive = false;\n }\n }\n\n return !!_sPassive;\n}\n\nvar MOUSE_WAIT = 2000;\n\nfunction createPointerEvents(el, pointerDown, pointerMove, pointerUp, options) {\n var rmTouchStart;\n var rmTouchMove;\n var rmTouchEnd;\n var rmTouchCancel;\n var rmMouseStart;\n var rmMouseMove;\n var rmMouseUp;\n var lastTouchEvent = 0;\n\n function handleTouchStart(ev) {\n lastTouchEvent = Date.now() + MOUSE_WAIT;\n\n if (!pointerDown(ev)) {\n return;\n }\n\n if (!rmTouchMove && pointerMove) {\n rmTouchMove = addEventListener(el, 'touchmove', pointerMove, options);\n }\n\n if (!rmTouchEnd) {\n rmTouchEnd = addEventListener(el, 'touchend', handleTouchEnd, options);\n }\n\n if (!rmTouchCancel) {\n rmTouchCancel = addEventListener(el, 'touchcancel', handleTouchEnd, options);\n }\n }\n\n function handleMouseDown(ev) {\n if (lastTouchEvent > Date.now()) {\n return;\n }\n\n if (!pointerDown(ev)) {\n return;\n }\n\n if (!rmMouseMove && pointerMove) {\n rmMouseMove = addEventListener(getDocument(el), 'mousemove', pointerMove, options);\n }\n\n if (!rmMouseUp) {\n rmMouseUp = addEventListener(getDocument(el), 'mouseup', handleMouseUp, options);\n }\n }\n\n function handleTouchEnd(ev) {\n stopTouch();\n\n if (pointerUp) {\n pointerUp(ev);\n }\n }\n\n function handleMouseUp(ev) {\n stopMouse();\n\n if (pointerUp) {\n pointerUp(ev);\n }\n }\n\n function stopTouch() {\n if (rmTouchMove) {\n rmTouchMove();\n }\n\n if (rmTouchEnd) {\n rmTouchEnd();\n }\n\n if (rmTouchCancel) {\n rmTouchCancel();\n }\n\n rmTouchMove = rmTouchEnd = rmTouchCancel = undefined;\n }\n\n function stopMouse() {\n if (rmMouseMove) {\n rmMouseMove();\n }\n\n if (rmMouseUp) {\n rmMouseUp();\n }\n\n rmMouseMove = rmMouseUp = undefined;\n }\n\n function stop() {\n stopTouch();\n stopMouse();\n }\n\n function setDisabled(disabled) {\n if (disabled) {\n if (rmTouchStart) {\n rmTouchStart();\n }\n\n if (rmMouseStart) {\n rmMouseStart();\n }\n\n rmTouchStart = rmMouseStart = undefined;\n stop();\n } else {\n if (!rmTouchStart) {\n rmTouchStart = addEventListener(el, 'touchstart', handleTouchStart, options);\n }\n\n if (!rmMouseStart) {\n rmMouseStart = addEventListener(el, 'mousedown', handleMouseDown, options);\n }\n }\n }\n\n function destroy() {\n setDisabled(true);\n pointerUp = pointerMove = pointerDown = undefined;\n }\n\n return {\n setDisabled: setDisabled,\n stop: stop,\n destroy: destroy\n };\n}\n\nfunction getDocument(node) {\n return node instanceof Document ? node : node.ownerDocument;\n}\n\nfunction createPanRecognizer(direction, thresh, maxAngle) {\n var radians = maxAngle * (Math.PI / 180);\n var isDirX = direction === 'x';\n var maxCosine = Math.cos(radians);\n var threshold = thresh * thresh;\n var startX = 0;\n var startY = 0;\n var dirty = false;\n var isPan = 0;\n return {\n start: function start(x, y) {\n startX = x;\n startY = y;\n isPan = 0;\n dirty = true;\n },\n detect: function detect(x, y) {\n if (!dirty) {\n return false;\n }\n\n var deltaX = x - startX;\n var deltaY = y - startY;\n var distance = deltaX * deltaX + deltaY * deltaY;\n\n if (distance < threshold) {\n return false;\n }\n\n var hypotenuse = Math.sqrt(distance);\n var cosine = (isDirX ? deltaX : deltaY) / hypotenuse;\n\n if (cosine > maxCosine) {\n isPan = 1;\n } else if (cosine < -maxCosine) {\n isPan = -1;\n } else {\n isPan = 0;\n }\n\n dirty = false;\n return true;\n },\n isGesture: function isGesture() {\n return isPan !== 0;\n },\n getDirection: function getDirection() {\n return isPan;\n }\n };\n}\n\nfunction createGesture(config) {\n var finalConfig = Object.assign({\n disableScroll: false,\n direction: 'x',\n gesturePriority: 0,\n passive: true,\n maxAngle: 40,\n threshold: 10\n }, config);\n var canStart = finalConfig.canStart;\n var onWillStart = finalConfig.onWillStart;\n var onStart = finalConfig.onStart;\n var onEnd = finalConfig.onEnd;\n var notCaptured = finalConfig.notCaptured;\n var onMove = finalConfig.onMove;\n var threshold = finalConfig.threshold;\n var detail = {\n type: 'pan',\n startX: 0,\n startY: 0,\n startTimeStamp: 0,\n currentX: 0,\n currentY: 0,\n velocityX: 0,\n velocityY: 0,\n deltaX: 0,\n deltaY: 0,\n timeStamp: 0,\n event: undefined,\n data: undefined\n };\n var pointerEvents = createPointerEvents(finalConfig.el, pointerDown, pointerMove, pointerUp, {\n capture: false\n });\n var pan = createPanRecognizer(finalConfig.direction, finalConfig.threshold, finalConfig.maxAngle);\n var gesture = GESTURE_CONTROLLER.createGesture({\n name: config.gestureName,\n priority: config.gesturePriority,\n disableScroll: config.disableScroll\n });\n var hasCapturedPan = false;\n var hasStartedPan = false;\n var hasFiredStart = true;\n var isMoveQueued = false;\n\n function pointerDown(ev) {\n var timeStamp = now(ev);\n\n if (hasStartedPan || !hasFiredStart) {\n return false;\n }\n\n updateDetail(ev, detail);\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTimeStamp = detail.timeStamp = timeStamp;\n detail.velocityX = detail.velocityY = detail.deltaX = detail.deltaY = 0;\n detail.event = ev; // Check if gesture can start\n\n if (canStart && canStart(detail) === false) {\n return false;\n } // Release fallback\n\n\n gesture.release(); // Start gesture\n\n if (!gesture.start()) {\n return false;\n }\n\n hasStartedPan = true;\n\n if (threshold === 0) {\n return tryToCapturePan();\n }\n\n pan.start(detail.startX, detail.startY);\n return true;\n }\n\n function pointerMove(ev) {\n // fast path, if gesture is currently captured\n // do minimum job to get user-land even dispatched\n if (hasCapturedPan) {\n if (!isMoveQueued && hasFiredStart) {\n isMoveQueued = true;\n calcGestureData(detail, ev);\n writeTask(fireOnMove);\n }\n\n return;\n } // gesture is currently being detected\n\n\n calcGestureData(detail, ev);\n\n if (pan.detect(detail.currentX, detail.currentY)) {\n if (!pan.isGesture() || !tryToCapturePan()) {\n abortGesture();\n }\n }\n }\n\n function fireOnMove() {\n // Since fireOnMove is called inside a RAF, onEnd() might be called,\n // we must double check hasCapturedPan\n if (!hasCapturedPan) {\n return;\n }\n\n isMoveQueued = false;\n\n if (onMove) {\n onMove(detail);\n }\n }\n\n function tryToCapturePan() {\n if (gesture && !gesture.capture()) {\n return false;\n }\n\n hasCapturedPan = true;\n hasFiredStart = false; // reset start position since the real user-land event starts here\n // If the pan detector threshold is big, not resetting the start position\n // will cause a jump in the animation equal to the detector threshold.\n // the array of positions used to calculate the gesture velocity does not\n // need to be cleaned, more points in the positions array always results in a\n // more accurate value of the velocity.\n\n detail.startX = detail.currentX;\n detail.startY = detail.currentY;\n detail.startTimeStamp = detail.timeStamp;\n\n if (onWillStart) {\n onWillStart(detail).then(fireOnStart);\n } else {\n fireOnStart();\n }\n\n return true;\n }\n\n function fireOnStart() {\n if (onStart) {\n onStart(detail);\n }\n\n hasFiredStart = true;\n }\n\n function abortGesture() {\n reset();\n pointerEvents.stop();\n\n if (notCaptured) {\n notCaptured(detail);\n }\n }\n\n function reset() {\n hasCapturedPan = false;\n hasStartedPan = false;\n isMoveQueued = false;\n hasFiredStart = true;\n gesture.release();\n } // END *************************\n\n\n function pointerUp(ev) {\n var tmpHasCaptured = hasCapturedPan;\n var tmpHasFiredStart = hasFiredStart;\n reset();\n\n if (!tmpHasFiredStart) {\n return;\n }\n\n calcGestureData(detail, ev); // Try to capture press\n\n if (tmpHasCaptured) {\n if (onEnd) {\n onEnd(detail);\n }\n\n return;\n } // Not captured any event\n\n\n if (notCaptured) {\n notCaptured(detail);\n }\n }\n\n return {\n setDisabled: function setDisabled(disabled) {\n if (disabled && hasCapturedPan) {\n pointerUp(undefined);\n }\n\n pointerEvents.setDisabled(disabled);\n },\n destroy: function destroy() {\n gesture.destroy();\n pointerEvents.destroy();\n }\n };\n}\n\nfunction calcGestureData(detail, ev) {\n if (!ev) {\n return;\n }\n\n var prevX = detail.currentX;\n var prevY = detail.currentY;\n var prevT = detail.timeStamp;\n updateDetail(ev, detail);\n var currentX = detail.currentX;\n var currentY = detail.currentY;\n var timestamp = detail.timeStamp = now(ev);\n var timeDelta = timestamp - prevT;\n\n if (timeDelta > 0 && timeDelta < 100) {\n var velocityX = (currentX - prevX) / timeDelta;\n var velocityY = (currentY - prevY) / timeDelta;\n detail.velocityX = velocityX * 0.7 + detail.velocityX * 0.3;\n detail.velocityY = velocityY * 0.7 + detail.velocityY * 0.3;\n }\n\n detail.deltaX = currentX - detail.startX;\n detail.deltaY = currentY - detail.startY;\n detail.event = ev;\n}\n\nfunction updateDetail(ev, detail) {\n // get X coordinates for either a mouse click\n // or a touch depending on the given event\n var x = 0;\n var y = 0;\n\n if (ev) {\n var changedTouches = ev.changedTouches;\n\n if (changedTouches && changedTouches.length > 0) {\n var touch = changedTouches[0];\n x = touch.clientX;\n y = touch.clientY;\n } else if (ev.pageX !== undefined) {\n x = ev.pageX;\n y = ev.pageY;\n }\n }\n\n detail.currentX = x;\n detail.currentY = y;\n}\n\nfunction now(ev) {\n return ev.timeStamp || Date.now();\n}\n\nexport { GESTURE_CONTROLLER, createGesture };"],"sourceRoot":""}