mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
1 line
89 KiB
JSON
1 line
89 KiB
JSON
{"ast":null,"code":"import _asyncToGenerator from \"C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nimport { r as registerInstance, e as createEvent, h, H as Host, i as getElement } from './index-7a8b7a1c.js';\nimport { c as config, b as getIonMode } from './ionic-global-63a97a32.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier-eea9a7a9.js';\nimport { G as GESTURE_CONTROLLER } from './gesture-controller-31cb6bb9.js';\nimport { n as isEndSide, i as inheritAriaAttributes, m as assert, k as clamp } from './helpers-1457892a.js';\nimport { m as menuController } from './index-1e16c550.js';\nimport { c as createColorClasses, h as hostContext } from './theme-ff3fc52f.js';\nimport './hardware-back-button-4a6b37fb.js';\nimport './animation-822d986b.js';\nconst menuIosCss = \":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}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{left:unset;right:unset;left:auto;right:0}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{-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:0.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:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){width:var(--width);min-width:var(--min-width);max-width:var(--max-width)}: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-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}\";\nconst menuMdCss = \":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}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{left:unset;right:unset;left:auto;right:0}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{-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:0.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:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){width:var(--width);min-width:var(--min-width);max-width:var(--max-width)}: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:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}\";\nconst iosEasing = 'cubic-bezier(0.32,0.72,0,1)';\nconst mdEasing = 'cubic-bezier(0.0,0.0,0.2,1)';\nconst iosEasingReverse = 'cubic-bezier(1, 0, 0.68, 0.28)';\nconst mdEasingReverse = 'cubic-bezier(0.4, 0, 0.6, 1)';\nconst focusableQueryString = '[tabindex]:not([tabindex^=\"-\"]), input:not([type=hidden]):not([tabindex^=\"-\"]), textarea:not([tabindex^=\"-\"]), button:not([tabindex^=\"-\"]), select:not([tabindex^=\"-\"]), .ion-focusable:not([tabindex^=\"-\"])';\nconst Menu = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\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.lastOnEnd = 0;\n this.blocker = GESTURE_CONTROLLER.createBlocker({\n disableScroll: true\n });\n this.isAnimating = false;\n this._isOpen = false;\n this.inheritedAttributes = {};\n this.handleFocus = ev => this.trapKeyboardFocus(ev, document);\n this.isPaneVisible = false;\n this.isEndSide = false;\n /**\n * If `true`, the menu is disabled.\n */\n this.disabled = false;\n /**\n * Which side of the view the menu should be placed.\n */\n this.side = 'start';\n /**\n * If `true`, swiping the menu is enabled.\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 this.maxEdgeStart = 50;\n }\n typeChanged(type, oldType) {\n const contentEl = this.contentEl;\n if (contentEl) {\n if (oldType !== undefined) {\n contentEl.classList.remove(`menu-content-${oldType}`);\n }\n contentEl.classList.add(`menu-content-${type}`);\n contentEl.removeAttribute('style');\n }\n if (this.menuInnerEl) {\n // Remove effects of previous animations\n this.menuInnerEl.removeAttribute('style');\n }\n this.animation = undefined;\n }\n disabledChanged() {\n this.updateState();\n this.ionMenuChange.emit({\n disabled: this.disabled,\n open: this._isOpen\n });\n }\n sideChanged() {\n this.isEndSide = isEndSide(this.side);\n }\n swipeGestureChanged() {\n this.updateState();\n }\n connectedCallback() {\n var _this = this;\n return _asyncToGenerator(function* () {\n if (_this.type === undefined) {\n _this.type = config.get('menuType', 'overlay');\n }\n const el = _this.el;\n const parent = el.parentNode;\n if (_this.contentId === undefined) {\n console.warn(`[DEPRECATED][ion-menu] Using the [main] attribute is deprecated, please use the \"contentId\" property instead:\nBEFORE:\n <ion-menu>...</ion-menu>\n <div main>...</div>\n\nAFTER:\n <ion-menu contentId=\"main-content\"></ion-menu>\n <div id=\"main-content\">...</div>\n`);\n }\n const content = _this.contentId !== undefined ? document.getElementById(_this.contentId) : parent && parent.querySelector && parent.querySelector('[main]');\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;\n }\n _this.contentEl = content;\n // add menu's content classes\n content.classList.add('menu-content');\n _this.typeChanged(_this.type, undefined);\n _this.sideChanged();\n // register this menu with the app's menu controller\n menuController._register(_this);\n _this.gesture = (yield import('./index-34cb2743.js')).createGesture({\n el: document,\n gestureName: 'menu-swipe',\n gesturePriority: 30,\n threshold: 10,\n blurOnStart: true,\n canStart: ev => _this.canStart(ev),\n onWillStart: () => _this.onWillStart(),\n onStart: () => _this.onStart(),\n onMove: ev => _this.onMove(ev),\n onEnd: ev => _this.onEnd(ev)\n });\n _this.updateState();\n })();\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n componentDidLoad() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n _this2.ionMenuChange.emit({\n disabled: _this2.disabled,\n open: _this2._isOpen\n });\n _this2.updateState();\n })();\n }\n disconnectedCallback() {\n this.blocker.destroy();\n menuController._unregister(this);\n if (this.animation) {\n this.animation.destroy();\n }\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n this.animation = undefined;\n this.contentEl = this.backdropEl = this.menuInnerEl = undefined;\n }\n onSplitPaneChanged(ev) {\n this.isPaneVisible = ev.detail.isPane(this.el);\n this.updateState();\n }\n onBackdropClick(ev) {\n if (this._isOpen && this.lastOnEnd < ev.timeStamp - 100) {\n const shouldClose = ev.composedPath ? !ev.composedPath().includes(this.menuInnerEl) : false;\n if (shouldClose) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close();\n }\n }\n }\n onKeydown(ev) {\n if (ev.key === 'Escape') {\n this.close();\n }\n }\n /**\n * Returns `true` is the menu is open.\n */\n isOpen() {\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 isActive() {\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 open(animated = true) {\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 close(animated = true) {\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 toggle(animated = true) {\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 setOpen(shouldOpen, animated = true) {\n return menuController._setOpen(this, shouldOpen, animated);\n }\n focusFirstDescendant() {\n const {\n el\n } = this;\n const firstInput = el.querySelector(focusableQueryString);\n if (firstInput) {\n firstInput.focus();\n } else {\n el.focus();\n }\n }\n focusLastDescendant() {\n const {\n el\n } = this;\n const inputs = Array.from(el.querySelectorAll(focusableQueryString));\n const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;\n if (lastInput) {\n lastInput.focus();\n } else {\n el.focus();\n }\n }\n trapKeyboardFocus(ev, doc) {\n const target = ev.target;\n if (!target) {\n return;\n }\n /**\n * If the target is inside the menu contents, let the browser\n * focus as normal and keep a log of the last focused element.\n */\n if (this.el.contains(target)) {\n this.lastFocus = target;\n } else {\n /**\n * Otherwise, we are about to have focus go out of the menu.\n * Wrap the focus to either the first or last element.\n */\n /**\n * Once we call `focusFirstDescendant`, another focus event\n * will fire, which will cause `lastFocus` to be updated\n * before we can run the code after that. We cache the value\n * here to avoid that.\n */\n this.focusFirstDescendant();\n /**\n * If the cached last focused element is the same as the now-\n * active element, that means the user was on the first element\n * already and pressed Shift + Tab, so we need to wrap to the\n * last descendant.\n */\n if (this.lastFocus === doc.activeElement) {\n this.focusLastDescendant();\n }\n }\n }\n _setOpen(shouldOpen, animated = true) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n // If the menu is disabled or it is currently being animated, let's do nothing\n if (!_this3._isActive() || _this3.isAnimating || shouldOpen === _this3._isOpen) {\n return false;\n }\n _this3.beforeAnimation(shouldOpen);\n yield _this3.loadAnimation();\n yield _this3.startAnimation(shouldOpen, animated);\n _this3.afterAnimation(shouldOpen);\n return true;\n })();\n }\n loadAnimation() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n // Menu swipe animation takes the menu's inner width as parameter,\n // If `offsetWidth` changes, we need to create a new animation.\n const width = _this4.menuInnerEl.offsetWidth;\n if (width === _this4.width && _this4.animation !== undefined) {\n return;\n }\n _this4.width = width;\n // Destroy existing animation\n if (_this4.animation) {\n _this4.animation.destroy();\n _this4.animation = undefined;\n }\n // Create new animation\n _this4.animation = yield menuController._createAnimation(_this4.type, _this4);\n if (!config.getBoolean('animated', true)) {\n _this4.animation.duration(0);\n }\n _this4.animation.fill('both');\n })();\n }\n startAnimation(shouldOpen, animated) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n const isReversed = !shouldOpen;\n const mode = getIonMode(_this5);\n const easing = mode === 'ios' ? iosEasing : mdEasing;\n const easingReverse = mode === 'ios' ? iosEasingReverse : mdEasingReverse;\n const ani = _this5.animation.direction(isReversed ? 'reverse' : 'normal').easing(isReversed ? easingReverse : easing).onFinish(() => {\n if (ani.getDirection() === 'reverse') {\n ani.direction('normal');\n }\n });\n if (animated) {\n yield ani.play();\n } else {\n ani.play({\n sync: true\n });\n }\n })();\n }\n _isActive() {\n return !this.disabled && !this.isPaneVisible;\n }\n canSwipe() {\n return this.swipeGesture && !this.isAnimating && this._isActive();\n }\n canStart(detail) {\n // Do not allow swipe gesture if a modal is open\n const isModalPresented = !!document.querySelector('ion-modal.show-modal');\n if (isModalPresented || !this.canSwipe()) {\n return false;\n }\n if (this._isOpen) {\n return true;\n // TODO error\n } else if (menuController._getOpenSync()) {\n return false;\n }\n return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);\n }\n onWillStart() {\n this.beforeAnimation(!this._isOpen);\n return this.loadAnimation();\n }\n onStart() {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n // the cloned animation should not use an easing curve during seek\n this.animation.progressStart(true, this._isOpen ? 1 : 0);\n }\n onMove(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const delta = computeDelta(detail.deltaX, this._isOpen, this.isEndSide);\n const stepValue = delta / this.width;\n this.animation.progressStep(this._isOpen ? 1 - stepValue : stepValue);\n }\n onEnd(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const isOpen = this._isOpen;\n const isEndSide = this.isEndSide;\n const delta = computeDelta(detail.deltaX, isOpen, isEndSide);\n const width = this.width;\n const stepValue = delta / width;\n const velocity = detail.velocityX;\n const z = width / 2.0;\n const shouldCompleteRight = velocity >= 0 && (velocity > 0.2 || detail.deltaX > z);\n const shouldCompleteLeft = velocity <= 0 && (velocity < -0.2 || detail.deltaX < -z);\n const shouldComplete = isOpen ? isEndSide ? shouldCompleteRight : shouldCompleteLeft : isEndSide ? shouldCompleteLeft : shouldCompleteRight;\n let shouldOpen = !isOpen && shouldComplete;\n if (isOpen && !shouldComplete) {\n shouldOpen = true;\n }\n this.lastOnEnd = detail.currentTime;\n // Account for rounding errors in JS\n let newStepValue = shouldComplete ? 0.001 : -0.001;\n /**\n * TODO: stepValue can sometimes return a negative\n * value, but you can't have a negative time value\n * for the cubic bezier curve (at least with web animations)\n * Not sure if the negative step value is an error or not\n */\n const adjustedStepValue = stepValue < 0 ? 0.01 : stepValue;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n newStepValue += getTimeGivenProgression([0, 0], [0.4, 0], [0.6, 1], [1, 1], clamp(0, adjustedStepValue, 0.9999))[0] || 0;\n const playTo = this._isOpen ? !shouldComplete : shouldComplete;\n this.animation.easing('cubic-bezier(0.4, 0.0, 0.6, 1)').onFinish(() => this.afterAnimation(shouldOpen), {\n oneTimeCallback: true\n }).progressEnd(playTo ? 1 : 0, this._isOpen ? 1 - newStepValue : newStepValue, 300);\n }\n beforeAnimation(shouldOpen) {\n assert(!this.isAnimating, '_before() should not be called while animating');\n // this places the menu into the correct location before it animates in\n // this css class doesn't actually kick off any animations\n this.el.classList.add(SHOW_MENU);\n /**\n * We add a tabindex here so that focus trapping\n * still works even if the menu does not have\n * any focusable elements slotted inside. The\n * focus trapping utility will fallback to focusing\n * the menu so focus does not leave when the menu\n * is open.\n */\n this.el.setAttribute('tabindex', '0');\n if (this.backdropEl) {\n this.backdropEl.classList.add(SHOW_BACKDROP);\n }\n this.blocker.block();\n this.isAnimating = true;\n if (shouldOpen) {\n this.ionWillOpen.emit();\n } else {\n this.ionWillClose.emit();\n }\n }\n afterAnimation(isOpen) {\n assert(this.isAnimating, '_before() should be called while animating');\n // 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 this._isOpen = isOpen;\n this.isAnimating = false;\n if (!this._isOpen) {\n this.blocker.unblock();\n }\n if (isOpen) {\n // add css class and hide content behind menu from screen readers\n if (this.contentEl) {\n this.contentEl.classList.add(MENU_CONTENT_OPEN);\n /**\n * When the menu is open and overlaying the main\n * content, the main content should not be announced\n * by the screenreader as the menu is the main\n * focus. This is useful with screenreaders that have\n * \"read from top\" gestures that read the entire\n * page from top to bottom when activated.\n */\n this.contentEl.setAttribute('aria-hidden', 'true');\n }\n // emit open event\n this.ionDidOpen.emit();\n // focus menu content for screen readers\n if (this.menuInnerEl) {\n this.focusFirstDescendant();\n }\n // setup focus trapping\n document.addEventListener('focus', this.handleFocus, true);\n } else {\n // remove css classes and unhide content from screen readers\n this.el.classList.remove(SHOW_MENU);\n /**\n * Remove tabindex from the menu component\n * so that is cannot be tabbed to.\n */\n this.el.removeAttribute('tabindex');\n if (this.contentEl) {\n this.contentEl.classList.remove(MENU_CONTENT_OPEN);\n /**\n * Remove aria-hidden so screen readers\n * can announce the main content again\n * now that the menu is not the main focus.\n */\n this.contentEl.removeAttribute('aria-hidden');\n }\n if (this.backdropEl) {\n this.backdropEl.classList.remove(SHOW_BACKDROP);\n }\n if (this.animation) {\n this.animation.stop();\n }\n // emit close event\n this.ionDidClose.emit();\n // undo focus trapping so multiple menus don't collide\n document.removeEventListener('focus', this.handleFocus, true);\n }\n }\n updateState() {\n const isActive = this._isActive();\n if (this.gesture) {\n this.gesture.enable(isActive && this.swipeGesture);\n }\n // Close menu immediately\n if (!isActive && this._isOpen) {\n // close if this menu is open, and should not be enabled\n this.forceClosing();\n }\n if (!this.disabled) {\n menuController._setActiveMenu(this);\n }\n assert(!this.isAnimating, 'can not be animating');\n }\n forceClosing() {\n assert(this._isOpen, 'menu cannot be closed');\n this.isAnimating = true;\n const ani = this.animation.direction('reverse');\n ani.play({\n sync: true\n });\n this.afterAnimation(false);\n }\n render() {\n const {\n isEndSide,\n type,\n disabled,\n isPaneVisible,\n inheritedAttributes\n } = this;\n const mode = getIonMode(this);\n return h(Host, {\n role: \"navigation\",\n \"aria-label\": inheritedAttributes['aria-label'] || 'menu',\n class: {\n [mode]: true,\n [`menu-type-${type}`]: true,\n 'menu-enabled': !disabled,\n 'menu-side-end': isEndSide,\n 'menu-side-start': !isEndSide,\n 'menu-pane-visible': isPaneVisible\n }\n }, h(\"div\", {\n class: \"menu-inner\",\n part: \"container\",\n ref: el => this.menuInnerEl = el\n }, h(\"slot\", null)), h(\"ion-backdrop\", {\n ref: el => this.backdropEl = el,\n class: \"menu-backdrop\",\n tappable: false,\n stopPropagation: false,\n part: \"backdrop\"\n }));\n }\n get el() {\n return getElement(this);\n }\n static get watchers() {\n return {\n \"type\": [\"typeChanged\"],\n \"disabled\": [\"disabledChanged\"],\n \"side\": [\"sideChanged\"],\n \"swipeGesture\": [\"swipeGestureChanged\"]\n };\n }\n};\nconst computeDelta = (deltaX, isOpen, isEndSide) => {\n return Math.max(0, isOpen !== isEndSide ? -deltaX : deltaX);\n};\nconst checkEdgeSide = (win, posX, isEndSide, maxEdgeStart) => {\n if (isEndSide) {\n return posX >= win.innerWidth - maxEdgeStart;\n } else {\n return posX <= maxEdgeStart;\n }\n};\nconst SHOW_MENU = 'show-menu';\nconst SHOW_BACKDROP = 'show-backdrop';\nconst MENU_CONTENT_OPEN = 'menu-content-open';\nMenu.style = {\n ios: menuIosCss,\n md: menuMdCss\n};\n\n// Given a menu, return whether or not the menu toggle should be visible\nconst updateVisibility = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (menu) {\n const menuEl = yield menuController.get(menu);\n return !!(menuEl && (yield menuEl.isActive()));\n });\n return function updateVisibility(_x) {\n return _ref.apply(this, arguments);\n };\n}();\nconst menuButtonIosCss = \":host{--background:transparent;--color-focused:currentColor;--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-indent: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;overflow:hidden;-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)}}.button-inner{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%;z-index:1}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-hidden){display:none}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-focused:currentColor;--background-focused-opacity:.1;--border-radius:4px;--color:var(--ion-color-primary, #3880ff);--padding-start:5px;--padding-end:5px;height:32px;font-size:31px}:host(.ion-activated){opacity:0.4}@media (any-hover: hover){:host(:hover){opacity:0.6}}\";\nconst menuButtonMdCss = \":host{--background:transparent;--color-focused:currentColor;--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-indent: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;overflow:hidden;-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)}}.button-inner{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%;z-index:1}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-hidden){display:none}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-focused:currentColor;--background-focused-opacity:.12;--background-hover:currentColor;--background-hover-opacity:.04;--border-radius:50%;--color:initial;--padding-start:8px;--padding-end:8px;width:48px;height:48px;font-size:24px}:host(.ion-color.ion-focused)::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}\";\nconst MenuButton = class {\n constructor(hostRef) {\n var _this6 = this;\n registerInstance(this, hostRef);\n this.inheritedAttributes = {};\n this.visible = false;\n /**\n * If `true`, the user cannot interact with the menu button.\n */\n this.disabled = false;\n /**\n * Automatically hides the menu button when the corresponding menu is not active\n */\n this.autoHide = true;\n /**\n * The type of the button.\n */\n this.type = 'button';\n this.onClick = /*#__PURE__*/_asyncToGenerator(function* () {\n return menuController.toggle(_this6.menu);\n });\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n componentDidLoad() {\n this.visibilityChanged();\n }\n visibilityChanged() {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n _this7.visible = yield updateVisibility(_this7.menu);\n })();\n }\n render() {\n const {\n color,\n disabled,\n inheritedAttributes\n } = this;\n const mode = getIonMode(this);\n const menuIcon = config.get('menuIcon', mode === 'ios' ? 'menu-outline' : 'menu-sharp');\n const hidden = this.autoHide && !this.visible;\n const attrs = {\n type: this.type\n };\n const ariaLabel = inheritedAttributes['aria-label'] || 'menu';\n return h(Host, {\n onClick: this.onClick,\n \"aria-disabled\": disabled ? 'true' : null,\n \"aria-hidden\": hidden ? 'true' : null,\n class: createColorClasses(color, {\n [mode]: true,\n 'button': true,\n 'menu-button-hidden': hidden,\n 'menu-button-disabled': disabled,\n 'in-toolbar': hostContext('ion-toolbar', this.el),\n 'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),\n 'ion-activatable': true,\n 'ion-focusable': true\n })\n }, h(\"button\", Object.assign({}, attrs, {\n disabled: disabled,\n class: \"button-native\",\n part: \"native\",\n \"aria-label\": ariaLabel\n }), h(\"span\", {\n class: \"button-inner\"\n }, h(\"slot\", null, h(\"ion-icon\", {\n part: \"icon\",\n icon: menuIcon,\n mode: mode,\n lazy: false,\n \"aria-hidden\": \"true\"\n }))), mode === 'md' && h(\"ion-ripple-effect\", {\n type: \"unbounded\"\n })));\n }\n get el() {\n return getElement(this);\n }\n};\nMenuButton.style = {\n ios: menuButtonIosCss,\n md: menuButtonMdCss\n};\nconst menuToggleCss = \":host(.menu-toggle-hidden){display:none}\";\nconst MenuToggle = class {\n constructor(hostRef) {\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 this.autoHide = true;\n this.onClick = () => {\n return menuController.toggle(this.menu);\n };\n }\n connectedCallback() {\n this.visibilityChanged();\n }\n visibilityChanged() {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n _this8.visible = yield updateVisibility(_this8.menu);\n })();\n }\n render() {\n const mode = getIonMode(this);\n const hidden = this.autoHide && !this.visible;\n return h(Host, {\n onClick: this.onClick,\n \"aria-hidden\": hidden ? 'true' : null,\n class: {\n [mode]: true,\n 'menu-toggle-hidden': hidden\n }\n }, h(\"slot\", null));\n }\n};\nMenuToggle.style = menuToggleCss;\nexport { Menu as ion_menu, MenuButton as ion_menu_button, MenuToggle as ion_menu_toggle };","map":{"version":3,"names":["r","registerInstance","e","createEvent","h","H","Host","i","getElement","c","config","b","getIonMode","g","getTimeGivenProgression","G","GESTURE_CONTROLLER","n","isEndSide","inheritAriaAttributes","m","assert","k","clamp","menuController","createColorClasses","hostContext","menuIosCss","menuMdCss","iosEasing","mdEasing","iosEasingReverse","mdEasingReverse","focusableQueryString","Menu","constructor","hostRef","ionWillOpen","ionWillClose","ionDidOpen","ionDidClose","ionMenuChange","lastOnEnd","blocker","createBlocker","disableScroll","isAnimating","_isOpen","inheritedAttributes","handleFocus","ev","trapKeyboardFocus","document","isPaneVisible","disabled","side","swipeGesture","maxEdgeStart","typeChanged","type","oldType","contentEl","undefined","classList","remove","add","removeAttribute","menuInnerEl","animation","disabledChanged","updateState","emit","open","sideChanged","swipeGestureChanged","connectedCallback","_this","_asyncToGenerator","get","el","parent","parentNode","contentId","console","warn","content","getElementById","querySelector","tagName","error","_register","gesture","createGesture","gestureName","gesturePriority","threshold","blurOnStart","canStart","onWillStart","onStart","onMove","onEnd","componentWillLoad","componentDidLoad","_this2","disconnectedCallback","destroy","_unregister","backdropEl","onSplitPaneChanged","detail","isPane","onBackdropClick","timeStamp","shouldClose","composedPath","includes","preventDefault","stopPropagation","close","onKeydown","key","isOpen","Promise","resolve","isActive","_isActive","animated","setOpen","toggle","shouldOpen","_setOpen","focusFirstDescendant","firstInput","focus","focusLastDescendant","inputs","Array","from","querySelectorAll","lastInput","length","doc","target","contains","lastFocus","activeElement","_this3","beforeAnimation","loadAnimation","startAnimation","afterAnimation","_this4","width","offsetWidth","_createAnimation","getBoolean","duration","fill","_this5","isReversed","mode","easing","easingReverse","ani","direction","onFinish","getDirection","play","sync","canSwipe","isModalPresented","_getOpenSync","checkEdgeSide","window","currentX","progressStart","delta","computeDelta","deltaX","stepValue","progressStep","velocity","velocityX","z","shouldCompleteRight","shouldCompleteLeft","shouldComplete","currentTime","newStepValue","adjustedStepValue","playTo","oneTimeCallback","progressEnd","SHOW_MENU","setAttribute","SHOW_BACKDROP","block","unblock","MENU_CONTENT_OPEN","addEventListener","stop","removeEventListener","enable","forceClosing","_setActiveMenu","render","role","class","part","ref","tappable","watchers","Math","max","win","posX","innerWidth","style","ios","md","updateVisibility","_ref","menu","menuEl","_x","apply","arguments","menuButtonIosCss","menuButtonMdCss","MenuButton","_this6","visible","autoHide","onClick","visibilityChanged","_this7","color","menuIcon","hidden","attrs","ariaLabel","Object","assign","icon","lazy","menuToggleCss","MenuToggle","_this8","ion_menu","ion_menu_button","ion_menu_toggle"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@ionic/core/dist/esm/ion-menu_3.entry.js"],"sourcesContent":["import { r as registerInstance, e as createEvent, h, H as Host, i as getElement } from './index-7a8b7a1c.js';\nimport { c as config, b as getIonMode } from './ionic-global-63a97a32.js';\nimport { g as getTimeGivenProgression } from './cubic-bezier-eea9a7a9.js';\nimport { G as GESTURE_CONTROLLER } from './gesture-controller-31cb6bb9.js';\nimport { n as isEndSide, i as inheritAriaAttributes, m as assert, k as clamp } from './helpers-1457892a.js';\nimport { m as menuController } from './index-1e16c550.js';\nimport { c as createColorClasses, h as hostContext } from './theme-ff3fc52f.js';\nimport './hardware-back-button-4a6b37fb.js';\nimport './animation-822d986b.js';\n\nconst menuIosCss = \":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}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{left:unset;right:unset;left:auto;right:0}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{-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:0.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:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){width:var(--width);min-width:var(--min-width);max-width:var(--max-width)}: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-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}\";\n\nconst menuMdCss = \":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}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{left:unset;right:unset;left:auto;right:0}[dir=rtl] .menu-inner,:host-context([dir=rtl]) .menu-inner{-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:0.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:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){width:var(--width);min-width:var(--min-width);max-width:var(--max-width)}: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:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}\";\n\nconst iosEasing = 'cubic-bezier(0.32,0.72,0,1)';\nconst mdEasing = 'cubic-bezier(0.0,0.0,0.2,1)';\nconst iosEasingReverse = 'cubic-bezier(1, 0, 0.68, 0.28)';\nconst mdEasingReverse = 'cubic-bezier(0.4, 0, 0.6, 1)';\nconst focusableQueryString = '[tabindex]:not([tabindex^=\"-\"]), input:not([type=hidden]):not([tabindex^=\"-\"]), textarea:not([tabindex^=\"-\"]), button:not([tabindex^=\"-\"]), select:not([tabindex^=\"-\"]), .ion-focusable:not([tabindex^=\"-\"])';\nconst Menu = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\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.lastOnEnd = 0;\n this.blocker = GESTURE_CONTROLLER.createBlocker({ disableScroll: true });\n this.isAnimating = false;\n this._isOpen = false;\n this.inheritedAttributes = {};\n this.handleFocus = (ev) => this.trapKeyboardFocus(ev, document);\n this.isPaneVisible = false;\n this.isEndSide = false;\n /**\n * If `true`, the menu is disabled.\n */\n this.disabled = false;\n /**\n * Which side of the view the menu should be placed.\n */\n this.side = 'start';\n /**\n * If `true`, swiping the menu is enabled.\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 this.maxEdgeStart = 50;\n }\n typeChanged(type, oldType) {\n const contentEl = this.contentEl;\n if (contentEl) {\n if (oldType !== undefined) {\n contentEl.classList.remove(`menu-content-${oldType}`);\n }\n contentEl.classList.add(`menu-content-${type}`);\n contentEl.removeAttribute('style');\n }\n if (this.menuInnerEl) {\n // Remove effects of previous animations\n this.menuInnerEl.removeAttribute('style');\n }\n this.animation = undefined;\n }\n disabledChanged() {\n this.updateState();\n this.ionMenuChange.emit({\n disabled: this.disabled,\n open: this._isOpen\n });\n }\n sideChanged() {\n this.isEndSide = isEndSide(this.side);\n }\n swipeGestureChanged() {\n this.updateState();\n }\n async connectedCallback() {\n if (this.type === undefined) {\n this.type = config.get('menuType', 'overlay');\n }\n const el = this.el;\n const parent = el.parentNode;\n if (this.contentId === undefined) {\n console.warn(`[DEPRECATED][ion-menu] Using the [main] attribute is deprecated, please use the \"contentId\" property instead:\nBEFORE:\n <ion-menu>...</ion-menu>\n <div main>...</div>\n\nAFTER:\n <ion-menu contentId=\"main-content\"></ion-menu>\n <div id=\"main-content\">...</div>\n`);\n }\n const content = this.contentId !== undefined\n ? document.getElementById(this.contentId)\n : parent && parent.querySelector && parent.querySelector('[main]');\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;\n }\n this.contentEl = content;\n // add menu's content classes\n content.classList.add('menu-content');\n this.typeChanged(this.type, undefined);\n this.sideChanged();\n // register this menu with the app's menu controller\n menuController._register(this);\n this.gesture = (await import('./index-34cb2743.js')).createGesture({\n el: document,\n gestureName: 'menu-swipe',\n gesturePriority: 30,\n threshold: 10,\n blurOnStart: true,\n canStart: ev => this.canStart(ev),\n onWillStart: () => this.onWillStart(),\n onStart: () => this.onStart(),\n onMove: ev => this.onMove(ev),\n onEnd: ev => this.onEnd(ev),\n });\n this.updateState();\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n async componentDidLoad() {\n this.ionMenuChange.emit({ disabled: this.disabled, open: this._isOpen });\n this.updateState();\n }\n disconnectedCallback() {\n this.blocker.destroy();\n menuController._unregister(this);\n if (this.animation) {\n this.animation.destroy();\n }\n if (this.gesture) {\n this.gesture.destroy();\n this.gesture = undefined;\n }\n this.animation = undefined;\n this.contentEl = this.backdropEl = this.menuInnerEl = undefined;\n }\n onSplitPaneChanged(ev) {\n this.isPaneVisible = ev.detail.isPane(this.el);\n this.updateState();\n }\n onBackdropClick(ev) {\n if (this._isOpen && this.lastOnEnd < ev.timeStamp - 100) {\n const shouldClose = (ev.composedPath)\n ? !ev.composedPath().includes(this.menuInnerEl)\n : false;\n if (shouldClose) {\n ev.preventDefault();\n ev.stopPropagation();\n this.close();\n }\n }\n }\n onKeydown(ev) {\n if (ev.key === 'Escape') {\n this.close();\n }\n }\n /**\n * Returns `true` is the menu is open.\n */\n isOpen() {\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 isActive() {\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 open(animated = true) {\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 close(animated = true) {\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 toggle(animated = true) {\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 setOpen(shouldOpen, animated = true) {\n return menuController._setOpen(this, shouldOpen, animated);\n }\n focusFirstDescendant() {\n const { el } = this;\n const firstInput = el.querySelector(focusableQueryString);\n if (firstInput) {\n firstInput.focus();\n }\n else {\n el.focus();\n }\n }\n focusLastDescendant() {\n const { el } = this;\n const inputs = Array.from(el.querySelectorAll(focusableQueryString));\n const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;\n if (lastInput) {\n lastInput.focus();\n }\n else {\n el.focus();\n }\n }\n trapKeyboardFocus(ev, doc) {\n const target = ev.target;\n if (!target) {\n return;\n }\n /**\n * If the target is inside the menu contents, let the browser\n * focus as normal and keep a log of the last focused element.\n */\n if (this.el.contains(target)) {\n this.lastFocus = target;\n }\n else {\n /**\n * Otherwise, we are about to have focus go out of the menu.\n * Wrap the focus to either the first or last element.\n */\n /**\n * Once we call `focusFirstDescendant`, another focus event\n * will fire, which will cause `lastFocus` to be updated\n * before we can run the code after that. We cache the value\n * here to avoid that.\n */\n this.focusFirstDescendant();\n /**\n * If the cached last focused element is the same as the now-\n * active element, that means the user was on the first element\n * already and pressed Shift + Tab, so we need to wrap to the\n * last descendant.\n */\n if (this.lastFocus === doc.activeElement) {\n this.focusLastDescendant();\n }\n }\n }\n async _setOpen(shouldOpen, animated = true) {\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 false;\n }\n this.beforeAnimation(shouldOpen);\n await this.loadAnimation();\n await this.startAnimation(shouldOpen, animated);\n this.afterAnimation(shouldOpen);\n return true;\n }\n async loadAnimation() {\n // Menu swipe animation takes the menu's inner width as parameter,\n // If `offsetWidth` changes, we need to create a new animation.\n const width = this.menuInnerEl.offsetWidth;\n if (width === this.width && this.animation !== undefined) {\n return;\n }\n this.width = width;\n // Destroy existing animation\n if (this.animation) {\n this.animation.destroy();\n this.animation = undefined;\n }\n // Create new animation\n this.animation = await menuController._createAnimation(this.type, this);\n if (!config.getBoolean('animated', true)) {\n this.animation.duration(0);\n }\n this.animation.fill('both');\n }\n async startAnimation(shouldOpen, animated) {\n const isReversed = !shouldOpen;\n const mode = getIonMode(this);\n const easing = mode === 'ios' ? iosEasing : mdEasing;\n const easingReverse = mode === 'ios' ? iosEasingReverse : mdEasingReverse;\n const ani = this.animation\n .direction((isReversed) ? 'reverse' : 'normal')\n .easing((isReversed) ? easingReverse : easing)\n .onFinish(() => {\n if (ani.getDirection() === 'reverse') {\n ani.direction('normal');\n }\n });\n if (animated) {\n await ani.play();\n }\n else {\n ani.play({ sync: true });\n }\n }\n _isActive() {\n return !this.disabled && !this.isPaneVisible;\n }\n canSwipe() {\n return this.swipeGesture && !this.isAnimating && this._isActive();\n }\n canStart(detail) {\n // Do not allow swipe gesture if a modal is open\n const isModalPresented = !!document.querySelector('ion-modal.show-modal');\n if (isModalPresented || !this.canSwipe()) {\n return false;\n }\n if (this._isOpen) {\n return true;\n // TODO error\n }\n else if (menuController._getOpenSync()) {\n return false;\n }\n return checkEdgeSide(window, detail.currentX, this.isEndSide, this.maxEdgeStart);\n }\n onWillStart() {\n this.beforeAnimation(!this._isOpen);\n return this.loadAnimation();\n }\n onStart() {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n // the cloned animation should not use an easing curve during seek\n this.animation.progressStart(true, (this._isOpen) ? 1 : 0);\n }\n onMove(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const delta = computeDelta(detail.deltaX, this._isOpen, this.isEndSide);\n const stepValue = delta / this.width;\n this.animation.progressStep((this._isOpen) ? 1 - stepValue : stepValue);\n }\n onEnd(detail) {\n if (!this.isAnimating || !this.animation) {\n assert(false, 'isAnimating has to be true');\n return;\n }\n const isOpen = this._isOpen;\n const isEndSide = this.isEndSide;\n const delta = computeDelta(detail.deltaX, isOpen, isEndSide);\n const width = this.width;\n const stepValue = delta / width;\n const velocity = detail.velocityX;\n const z = width / 2.0;\n const shouldCompleteRight = velocity >= 0 && (velocity > 0.2 || detail.deltaX > z);\n const shouldCompleteLeft = velocity <= 0 && (velocity < -0.2 || detail.deltaX < -z);\n const shouldComplete = isOpen\n ? isEndSide ? shouldCompleteRight : shouldCompleteLeft\n : isEndSide ? shouldCompleteLeft : shouldCompleteRight;\n let shouldOpen = !isOpen && shouldComplete;\n if (isOpen && !shouldComplete) {\n shouldOpen = true;\n }\n this.lastOnEnd = detail.currentTime;\n // Account for rounding errors in JS\n let newStepValue = (shouldComplete) ? 0.001 : -0.001;\n /**\n * TODO: stepValue can sometimes return a negative\n * value, but you can't have a negative time value\n * for the cubic bezier curve (at least with web animations)\n * Not sure if the negative step value is an error or not\n */\n const adjustedStepValue = (stepValue < 0) ? 0.01 : stepValue;\n /**\n * Animation will be reversed here, so need to\n * reverse the easing curve as well\n *\n * Additionally, we need to account for the time relative\n * to the new easing curve, as `stepValue` is going to be given\n * in terms of a linear curve.\n */\n newStepValue += getTimeGivenProgression([0, 0], [0.4, 0], [0.6, 1], [1, 1], clamp(0, adjustedStepValue, 0.9999))[0] || 0;\n const playTo = (this._isOpen) ? !shouldComplete : shouldComplete;\n this.animation\n .easing('cubic-bezier(0.4, 0.0, 0.6, 1)')\n .onFinish(() => this.afterAnimation(shouldOpen), { oneTimeCallback: true })\n .progressEnd((playTo) ? 1 : 0, (this._isOpen) ? 1 - newStepValue : newStepValue, 300);\n }\n beforeAnimation(shouldOpen) {\n assert(!this.isAnimating, '_before() should not be called while animating');\n // this places the menu into the correct location before it animates in\n // this css class doesn't actually kick off any animations\n this.el.classList.add(SHOW_MENU);\n /**\n * We add a tabindex here so that focus trapping\n * still works even if the menu does not have\n * any focusable elements slotted inside. The\n * focus trapping utility will fallback to focusing\n * the menu so focus does not leave when the menu\n * is open.\n */\n this.el.setAttribute('tabindex', '0');\n if (this.backdropEl) {\n this.backdropEl.classList.add(SHOW_BACKDROP);\n }\n this.blocker.block();\n this.isAnimating = true;\n if (shouldOpen) {\n this.ionWillOpen.emit();\n }\n else {\n this.ionWillClose.emit();\n }\n }\n afterAnimation(isOpen) {\n assert(this.isAnimating, '_before() should be called while animating');\n // 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 this._isOpen = isOpen;\n this.isAnimating = false;\n if (!this._isOpen) {\n this.blocker.unblock();\n }\n if (isOpen) {\n // add css class and hide content behind menu from screen readers\n if (this.contentEl) {\n this.contentEl.classList.add(MENU_CONTENT_OPEN);\n /**\n * When the menu is open and overlaying the main\n * content, the main content should not be announced\n * by the screenreader as the menu is the main\n * focus. This is useful with screenreaders that have\n * \"read from top\" gestures that read the entire\n * page from top to bottom when activated.\n */\n this.contentEl.setAttribute('aria-hidden', 'true');\n }\n // emit open event\n this.ionDidOpen.emit();\n // focus menu content for screen readers\n if (this.menuInnerEl) {\n this.focusFirstDescendant();\n }\n // setup focus trapping\n document.addEventListener('focus', this.handleFocus, true);\n }\n else {\n // remove css classes and unhide content from screen readers\n this.el.classList.remove(SHOW_MENU);\n /**\n * Remove tabindex from the menu component\n * so that is cannot be tabbed to.\n */\n this.el.removeAttribute('tabindex');\n if (this.contentEl) {\n this.contentEl.classList.remove(MENU_CONTENT_OPEN);\n /**\n * Remove aria-hidden so screen readers\n * can announce the main content again\n * now that the menu is not the main focus.\n */\n this.contentEl.removeAttribute('aria-hidden');\n }\n if (this.backdropEl) {\n this.backdropEl.classList.remove(SHOW_BACKDROP);\n }\n if (this.animation) {\n this.animation.stop();\n }\n // emit close event\n this.ionDidClose.emit();\n // undo focus trapping so multiple menus don't collide\n document.removeEventListener('focus', this.handleFocus, true);\n }\n }\n updateState() {\n const isActive = this._isActive();\n if (this.gesture) {\n this.gesture.enable(isActive && this.swipeGesture);\n }\n // Close menu immediately\n if (!isActive && this._isOpen) {\n // close if this menu is open, and should not be enabled\n this.forceClosing();\n }\n if (!this.disabled) {\n menuController._setActiveMenu(this);\n }\n assert(!this.isAnimating, 'can not be animating');\n }\n forceClosing() {\n assert(this._isOpen, 'menu cannot be closed');\n this.isAnimating = true;\n const ani = this.animation.direction('reverse');\n ani.play({ sync: true });\n this.afterAnimation(false);\n }\n render() {\n const { isEndSide, type, disabled, isPaneVisible, inheritedAttributes } = this;\n const mode = getIonMode(this);\n return (h(Host, { role: \"navigation\", \"aria-label\": inheritedAttributes['aria-label'] || 'menu', class: {\n [mode]: true,\n [`menu-type-${type}`]: true,\n 'menu-enabled': !disabled,\n 'menu-side-end': isEndSide,\n 'menu-side-start': !isEndSide,\n 'menu-pane-visible': isPaneVisible\n } }, h(\"div\", { class: \"menu-inner\", part: \"container\", ref: el => this.menuInnerEl = el }, h(\"slot\", null)), h(\"ion-backdrop\", { ref: el => this.backdropEl = el, class: \"menu-backdrop\", tappable: false, stopPropagation: false, part: \"backdrop\" })));\n }\n get el() { return getElement(this); }\n static get watchers() { return {\n \"type\": [\"typeChanged\"],\n \"disabled\": [\"disabledChanged\"],\n \"side\": [\"sideChanged\"],\n \"swipeGesture\": [\"swipeGestureChanged\"]\n }; }\n};\nconst computeDelta = (deltaX, isOpen, isEndSide) => {\n return Math.max(0, isOpen !== isEndSide ? -deltaX : deltaX);\n};\nconst checkEdgeSide = (win, posX, isEndSide, maxEdgeStart) => {\n if (isEndSide) {\n return posX >= win.innerWidth - maxEdgeStart;\n }\n else {\n return posX <= maxEdgeStart;\n }\n};\nconst SHOW_MENU = 'show-menu';\nconst SHOW_BACKDROP = 'show-backdrop';\nconst MENU_CONTENT_OPEN = 'menu-content-open';\nMenu.style = {\n ios: menuIosCss,\n md: menuMdCss\n};\n\n// Given a menu, return whether or not the menu toggle should be visible\nconst updateVisibility = async (menu) => {\n const menuEl = await menuController.get(menu);\n return !!(menuEl && await menuEl.isActive());\n};\n\nconst menuButtonIosCss = \":host{--background:transparent;--color-focused:currentColor;--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-indent: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;overflow:hidden;-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)}}.button-inner{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%;z-index:1}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-hidden){display:none}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-focused:currentColor;--background-focused-opacity:.1;--border-radius:4px;--color:var(--ion-color-primary, #3880ff);--padding-start:5px;--padding-end:5px;height:32px;font-size:31px}:host(.ion-activated){opacity:0.4}@media (any-hover: hover){:host(:hover){opacity:0.6}}\";\n\nconst menuButtonMdCss = \":host{--background:transparent;--color-focused:currentColor;--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-indent: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;overflow:hidden;-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)}}.button-inner{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%;z-index:1}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-hidden){display:none}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\\\"\\\";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-focused:currentColor;--background-focused-opacity:.12;--background-hover:currentColor;--background-hover-opacity:.04;--border-radius:50%;--color:initial;--padding-start:8px;--padding-end:8px;width:48px;height:48px;font-size:24px}:host(.ion-color.ion-focused)::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}\";\n\nconst MenuButton = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.inheritedAttributes = {};\n this.visible = false;\n /**\n * If `true`, the user cannot interact with the menu button.\n */\n this.disabled = false;\n /**\n * Automatically hides the menu button when the corresponding menu is not active\n */\n this.autoHide = true;\n /**\n * The type of the button.\n */\n this.type = 'button';\n this.onClick = async () => {\n return menuController.toggle(this.menu);\n };\n }\n componentWillLoad() {\n this.inheritedAttributes = inheritAriaAttributes(this.el);\n }\n componentDidLoad() {\n this.visibilityChanged();\n }\n async visibilityChanged() {\n this.visible = await updateVisibility(this.menu);\n }\n render() {\n const { color, disabled, inheritedAttributes } = this;\n const mode = getIonMode(this);\n const menuIcon = config.get('menuIcon', mode === 'ios' ? 'menu-outline' : 'menu-sharp');\n const hidden = this.autoHide && !this.visible;\n const attrs = {\n type: this.type\n };\n const ariaLabel = inheritedAttributes['aria-label'] || 'menu';\n return (h(Host, { onClick: this.onClick, \"aria-disabled\": disabled ? 'true' : null, \"aria-hidden\": hidden ? 'true' : null, class: createColorClasses(color, {\n [mode]: true,\n 'button': true,\n 'menu-button-hidden': hidden,\n 'menu-button-disabled': disabled,\n 'in-toolbar': hostContext('ion-toolbar', this.el),\n 'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),\n 'ion-activatable': true,\n 'ion-focusable': true\n }) }, h(\"button\", Object.assign({}, attrs, { disabled: disabled, class: \"button-native\", part: \"native\", \"aria-label\": ariaLabel }), h(\"span\", { class: \"button-inner\" }, h(\"slot\", null, h(\"ion-icon\", { part: \"icon\", icon: menuIcon, mode: mode, lazy: false, \"aria-hidden\": \"true\" }))), mode === 'md' && h(\"ion-ripple-effect\", { type: \"unbounded\" }))));\n }\n get el() { return getElement(this); }\n};\nMenuButton.style = {\n ios: menuButtonIosCss,\n md: menuButtonMdCss\n};\n\nconst menuToggleCss = \":host(.menu-toggle-hidden){display:none}\";\n\nconst MenuToggle = class {\n constructor(hostRef) {\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 this.autoHide = true;\n this.onClick = () => {\n return menuController.toggle(this.menu);\n };\n }\n connectedCallback() {\n this.visibilityChanged();\n }\n async visibilityChanged() {\n this.visible = await updateVisibility(this.menu);\n }\n render() {\n const mode = getIonMode(this);\n const hidden = this.autoHide && !this.visible;\n return (h(Host, { onClick: this.onClick, \"aria-hidden\": hidden ? 'true' : null, class: {\n [mode]: true,\n 'menu-toggle-hidden': hidden,\n } }, h(\"slot\", null)));\n }\n};\nMenuToggle.style = menuToggleCss;\n\nexport { Menu as ion_menu, MenuButton as ion_menu_button, MenuToggle as ion_menu_toggle };\n"],"mappings":"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"},"metadata":{},"sourceType":"module"} |