"use strict"; (self["webpackChunkapp"] = self["webpackChunkapp"] || []).push([["common"],{ /***/ 9386: /*!********************************************!*\ !*** ./src/app/services/wpdata.service.ts ***! \********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "WpdataService": () => (/* binding */ WpdataService) /* harmony export */ }); /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ 4929); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ 3184); /* harmony import */ var _angular_common_http__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/common/http */ 8784); let WpdataService = class WpdataService { constructor(http) { this.http = http; } // getAllNews() { // return this.http.get( // "../assets/api/news-api.json" // ); // } getAllNews() { return this.http.get("https://fm99activeradio.mcot.net/wp-json/wp/v2/news?_embed"); } getNewsDetail(id) { let url = 'https://fm99activeradio.mcot.net/'; const route = url + 'wp-json/wp/v2/' + 'news/' + id + '?_embed'; return this.http.get(route); } getAllYoutube() { return this.http.get( // "../assets/api/youtube-data.json" "https://youtube.googleapis.com/youtube/v3/search?part=snippet&channelId=UCfZdHbI3pIN4uselPFzzbOg&maxResults=5&order=date&key=AIzaSyDsRrS_dUxT_3PFaMZIBBdrbl37p_fqrNY"); } }; WpdataService.ctorParameters = () => [ { type: _angular_common_http__WEBPACK_IMPORTED_MODULE_0__.HttpClient } ]; WpdataService = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([ (0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.Injectable)({ providedIn: 'root' }) ], WpdataService); /***/ }), /***/ 5479: /*!*********************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/button-active-1542e4b9.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "c": () => (/* binding */ createButtonActiveGesture) /* harmony export */ }); /* harmony import */ var _index_8e692445_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index-8e692445.js */ 1559); /* harmony import */ var _haptic_683b3b3c_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./haptic-683b3b3c.js */ 634); /* harmony import */ var _index_f8d8aa5a_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index-f8d8aa5a.js */ 9286); /*! * (C) Ionic http://ionicframework.com - MIT License */ const createButtonActiveGesture = (el, isButton) => { let currentTouchedButton; let initialTouchedButton; const activateButtonAtPoint = (x, y, hapticFeedbackFn) => { if (typeof document === 'undefined') { return; } const target = document.elementFromPoint(x, y); if (!target || !isButton(target)) { clearActiveButton(); return; } if (target !== currentTouchedButton) { clearActiveButton(); setActiveButton(target, hapticFeedbackFn); } }; const setActiveButton = (button, hapticFeedbackFn) => { currentTouchedButton = button; if (!initialTouchedButton) { initialTouchedButton = currentTouchedButton; } const buttonToModify = currentTouchedButton; (0,_index_8e692445_js__WEBPACK_IMPORTED_MODULE_0__.c)(() => buttonToModify.classList.add('ion-activated')); hapticFeedbackFn(); }; const clearActiveButton = (dispatchClick = false) => { if (!currentTouchedButton) { return; } const buttonToModify = currentTouchedButton; (0,_index_8e692445_js__WEBPACK_IMPORTED_MODULE_0__.c)(() => buttonToModify.classList.remove('ion-activated')); /** * Clicking on one button, but releasing on another button * does not dispatch a click event in browsers, so we * need to do it manually here. Some browsers will * dispatch a click if clicking on one button, dragging over * another button, and releasing on the original button. In that * case, we need to make sure we do not cause a double click there. */ if (dispatchClick && initialTouchedButton !== currentTouchedButton) { currentTouchedButton.click(); } currentTouchedButton = undefined; }; return (0,_index_f8d8aa5a_js__WEBPACK_IMPORTED_MODULE_2__.createGesture)({ el, gestureName: 'buttonActiveDrag', threshold: 0, onStart: ev => activateButtonAtPoint(ev.currentX, ev.currentY, _haptic_683b3b3c_js__WEBPACK_IMPORTED_MODULE_1__.a), onMove: ev => activateButtonAtPoint(ev.currentX, ev.currentY, _haptic_683b3b3c_js__WEBPACK_IMPORTED_MODULE_1__.b), onEnd: () => { clearActiveButton(true); (0,_haptic_683b3b3c_js__WEBPACK_IMPORTED_MODULE_1__.h)(); initialTouchedButton = undefined; } }); }; /***/ }), /***/ 7481: /*!***********************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/dir-e8b767a8.js ***! \***********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "i": () => (/* binding */ isRTL) /* harmony export */ }); /*! * (C) Ionic http://ionicframework.com - MIT License */ /** * Returns `true` if the document or host element * has a `dir` set to `rtl`. The host value will always * take priority over the root document value. */ const isRTL = hostEl => { if (hostEl) { if (hostEl.dir !== '') { return hostEl.dir.toLowerCase() === 'rtl'; } } return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl'; }; /***/ }), /***/ 5777: /*!*********************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/focus-visible-096cf6fd.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "startFocusVisible": () => (/* binding */ startFocusVisible) /* harmony export */ }); /*! * (C) Ionic http://ionicframework.com - MIT License */ const ION_FOCUSED = 'ion-focused'; const ION_FOCUSABLE = 'ion-focusable'; const FOCUS_KEYS = ['Tab', 'ArrowDown', 'Space', 'Escape', ' ', 'Shift', 'Enter', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'Home', 'End']; const startFocusVisible = rootEl => { let currentFocus = []; let keyboardMode = true; const ref = rootEl ? rootEl.shadowRoot : document; const root = rootEl ? rootEl : document.body; const setFocus = elements => { currentFocus.forEach(el => el.classList.remove(ION_FOCUSED)); elements.forEach(el => el.classList.add(ION_FOCUSED)); currentFocus = elements; }; const pointerDown = () => { keyboardMode = false; setFocus([]); }; const onKeydown = ev => { keyboardMode = FOCUS_KEYS.includes(ev.key); if (!keyboardMode) { setFocus([]); } }; const onFocusin = ev => { if (keyboardMode && ev.composedPath !== undefined) { const toFocus = ev.composedPath().filter(el => { if (el.classList) { return el.classList.contains(ION_FOCUSABLE); } return false; }); setFocus(toFocus); } }; const onFocusout = () => { if (ref.activeElement === root) { setFocus([]); } }; ref.addEventListener('keydown', onKeydown); ref.addEventListener('focusin', onFocusin); ref.addEventListener('focusout', onFocusout); ref.addEventListener('touchstart', pointerDown); ref.addEventListener('mousedown', pointerDown); const destroy = () => { ref.removeEventListener('keydown', onKeydown); ref.removeEventListener('focusin', onFocusin); ref.removeEventListener('focusout', onFocusout); ref.removeEventListener('touchstart', pointerDown); ref.removeEventListener('mousedown', pointerDown); }; return { destroy, setFocus }; }; /***/ }), /***/ 3701: /*!**************************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/framework-delegate-897f849d.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "C": () => (/* binding */ CoreDelegate), /* harmony export */ "a": () => (/* binding */ attachComponent), /* harmony export */ "d": () => (/* binding */ detachComponent) /* harmony export */ }); /* harmony import */ var _Volumes_App_fm99_app_rev_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); /* harmony import */ var _helpers_3b390e48_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers-3b390e48.js */ 9234); /*! * (C) Ionic http://ionicframework.com - MIT License */ const attachComponent = /*#__PURE__*/function () { var _ref = (0,_Volumes_App_fm99_app_rev_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* (delegate, container, component, cssClasses, componentProps, inline) { var _a; if (delegate) { return delegate.attachViewToDom(container, component, componentProps, cssClasses); } if (!inline && typeof component !== 'string' && !(component instanceof HTMLElement)) { throw new Error('framework delegate is missing'); } const el = typeof component === 'string' ? (_a = container.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(component) : component; if (cssClasses) { cssClasses.forEach(c => el.classList.add(c)); } if (componentProps) { Object.assign(el, componentProps); } container.appendChild(el); yield new Promise(resolve => (0,_helpers_3b390e48_js__WEBPACK_IMPORTED_MODULE_1__.c)(el, resolve)); return el; }); return function attachComponent(_x, _x2, _x3, _x4, _x5, _x6) { return _ref.apply(this, arguments); }; }(); const detachComponent = (delegate, element) => { if (element) { if (delegate) { const container = element.parentElement; return delegate.removeViewFromDom(container, element); } element.remove(); } return Promise.resolve(); }; const CoreDelegate = () => { let BaseComponent; let Reference; const attachViewToDom = /*#__PURE__*/function () { var _ref2 = (0,_Volumes_App_fm99_app_rev_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* (parentElement, userComponent, userComponentProps = {}, cssClasses = []) { var _a, _b; BaseComponent = parentElement; /** * If passing in a component via the `component` props * we need to append it inside of our overlay component. */ if (userComponent) { /** * If passing in the tag name, create * the element otherwise just get a reference * to the component. */ const el = typeof userComponent === 'string' ? (_a = BaseComponent.ownerDocument) === null || _a === void 0 ? void 0 : _a.createElement(userComponent) : userComponent; /** * Add any css classes passed in * via the cssClasses prop on the overlay. */ cssClasses.forEach(c => el.classList.add(c)); /** * Add any props passed in * via the componentProps prop on the overlay. */ Object.assign(el, userComponentProps); /** * Finally, append the component * inside of the overlay component. */ BaseComponent.appendChild(el); yield new Promise(resolve => (0,_helpers_3b390e48_js__WEBPACK_IMPORTED_MODULE_1__.c)(el, resolve)); } else if (BaseComponent.children.length > 0) { // If there is no component, then we need to create a new parent // element to apply the css classes to. const el = (_b = BaseComponent.ownerDocument) === null || _b === void 0 ? void 0 : _b.createElement('div'); cssClasses.forEach(c => el.classList.add(c)); // Move each child from the original template to the new parent element. el.append(...BaseComponent.children); // Append the new parent element to the original parent element. BaseComponent.appendChild(el); } /** * Get the root of the app and * add the overlay there. */ const app = document.querySelector('ion-app') || document.body; /** * Create a placeholder comment so that * we can return this component to where * it was previously. */ Reference = document.createComment('ionic teleport'); BaseComponent.parentNode.insertBefore(Reference, BaseComponent); app.appendChild(BaseComponent); return BaseComponent; }); return function attachViewToDom(_x7, _x8) { return _ref2.apply(this, arguments); }; }(); const removeViewFromDom = () => { /** * Return component to where it was previously in the DOM. */ if (BaseComponent && Reference) { Reference.parentNode.insertBefore(BaseComponent, Reference); Reference.remove(); } return Promise.resolve(); }; return { attachViewToDom, removeViewFromDom }; }; /***/ }), /***/ 634: /*!**************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/haptic-683b3b3c.js ***! \**************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "a": () => (/* binding */ hapticSelectionStart), /* harmony export */ "b": () => (/* binding */ hapticSelectionChanged), /* harmony export */ "c": () => (/* binding */ hapticSelection), /* harmony export */ "d": () => (/* binding */ hapticImpact), /* harmony export */ "h": () => (/* binding */ hapticSelectionEnd) /* harmony export */ }); /*! * (C) Ionic http://ionicframework.com - MIT License */ const HapticEngine = { getEngine() { var _a; const win = window; return win.TapticEngine || ((_a = win.Capacitor) === null || _a === void 0 ? void 0 : _a.isPluginAvailable('Haptics')) && win.Capacitor.Plugins.Haptics; }, available() { return !!this.getEngine(); }, isCordova() { return !!window.TapticEngine; }, isCapacitor() { const win = window; return !!win.Capacitor; }, impact(options) { const engine = this.getEngine(); if (!engine) { return; } const style = this.isCapacitor() ? options.style.toUpperCase() : options.style; engine.impact({ style }); }, notification(options) { const engine = this.getEngine(); if (!engine) { return; } const style = this.isCapacitor() ? options.style.toUpperCase() : options.style; engine.notification({ style }); }, selection() { this.impact({ style: 'light' }); }, selectionStart() { const engine = this.getEngine(); if (!engine) { return; } if (this.isCapacitor()) { engine.selectionStart(); } else { engine.gestureSelectionStart(); } }, selectionChanged() { const engine = this.getEngine(); if (!engine) { return; } if (this.isCapacitor()) { engine.selectionChanged(); } else { engine.gestureSelectionChanged(); } }, selectionEnd() { const engine = this.getEngine(); if (!engine) { return; } if (this.isCapacitor()) { engine.selectionEnd(); } else { engine.gestureSelectionEnd(); } } }; /** * Trigger a selection changed haptic event. Good for one-time events * (not for gestures) */ const hapticSelection = () => { HapticEngine.selection(); }; /** * Tell the haptic engine that a gesture for a selection change is starting. */ const hapticSelectionStart = () => { HapticEngine.selectionStart(); }; /** * Tell the haptic engine that a selection changed during a gesture. */ const hapticSelectionChanged = () => { HapticEngine.selectionChanged(); }; /** * Tell the haptic engine we are done with a gesture. This needs to be * called lest resources are not properly recycled. */ const hapticSelectionEnd = () => { HapticEngine.selectionEnd(); }; /** * Use this to indicate success/failure/warning to the user. * options should be of the type `{ style: 'light' }` (or `medium`/`heavy`) */ const hapticImpact = options => { HapticEngine.impact(options); }; /***/ }), /***/ 2002: /*!*************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/index-40bb69ee.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "a": () => (/* binding */ arrowBackSharp), /* harmony export */ "b": () => (/* binding */ closeCircle), /* harmony export */ "c": () => (/* binding */ chevronBack), /* harmony export */ "d": () => (/* binding */ closeSharp), /* harmony export */ "e": () => (/* binding */ searchSharp), /* harmony export */ "f": () => (/* binding */ checkmarkOutline), /* harmony export */ "g": () => (/* binding */ ellipseOutline), /* harmony export */ "h": () => (/* binding */ caretBackSharp), /* harmony export */ "i": () => (/* binding */ arrowDown), /* harmony export */ "j": () => (/* binding */ reorderThreeOutline), /* harmony export */ "k": () => (/* binding */ reorderTwoSharp), /* harmony export */ "l": () => (/* binding */ chevronDown), /* harmony export */ "m": () => (/* binding */ chevronForwardOutline), /* harmony export */ "n": () => (/* binding */ ellipsisHorizontal), /* harmony export */ "o": () => (/* binding */ chevronForward), /* harmony export */ "p": () => (/* binding */ caretUpSharp), /* harmony export */ "q": () => (/* binding */ caretDownSharp), /* harmony export */ "r": () => (/* binding */ removeOutline), /* harmony export */ "s": () => (/* binding */ searchOutline), /* harmony export */ "t": () => (/* binding */ close), /* harmony export */ "u": () => (/* binding */ menuOutline), /* harmony export */ "v": () => (/* binding */ menuSharp) /* harmony export */ }); /*! * (C) Ionic http://ionicframework.com - MIT License */ /* Ionicons v6.0.3, ES Modules */ const arrowBackSharp = "data:image/svg+xml;utf8,Arrow Back"; const arrowDown = "data:image/svg+xml;utf8,Arrow Down"; const caretBackSharp = "data:image/svg+xml;utf8,Caret Back"; const caretDownSharp = "data:image/svg+xml;utf8,Caret Down"; const caretUpSharp = "data:image/svg+xml;utf8,Caret Up"; const checkmarkOutline = "data:image/svg+xml;utf8,Checkmark"; const chevronBack = "data:image/svg+xml;utf8,Chevron Back"; const chevronDown = "data:image/svg+xml;utf8,Chevron Down"; const chevronForward = "data:image/svg+xml;utf8,Chevron Forward"; const chevronForwardOutline = "data:image/svg+xml;utf8,Chevron Forward"; const close = "data:image/svg+xml;utf8,Close"; const closeCircle = "data:image/svg+xml;utf8,Close Circle"; const closeSharp = "data:image/svg+xml;utf8,Close"; const ellipseOutline = "data:image/svg+xml;utf8,Ellipse"; const ellipsisHorizontal = "data:image/svg+xml;utf8,Ellipsis Horizontal"; const menuOutline = "data:image/svg+xml;utf8,Menu"; const menuSharp = "data:image/svg+xml;utf8,Menu"; const removeOutline = "data:image/svg+xml;utf8,Remove"; const reorderThreeOutline = "data:image/svg+xml;utf8,Reorder Three"; const reorderTwoSharp = "data:image/svg+xml;utf8,Reorder Two"; const searchOutline = "data:image/svg+xml;utf8,Search"; const searchSharp = "data:image/svg+xml;utf8,Search"; /***/ }), /***/ 3081: /*!*************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/index-5d0c8232.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "I": () => (/* binding */ ION_CONTENT_ELEMENT_SELECTOR), /* harmony export */ "a": () => (/* binding */ findIonContent), /* harmony export */ "b": () => (/* binding */ ION_CONTENT_CLASS_SELECTOR), /* harmony export */ "c": () => (/* binding */ scrollByPoint), /* harmony export */ "d": () => (/* binding */ disableContentScrollY), /* harmony export */ "f": () => (/* binding */ findClosestIonContent), /* harmony export */ "g": () => (/* binding */ getScrollElement), /* harmony export */ "i": () => (/* binding */ isIonContent), /* harmony export */ "p": () => (/* binding */ printIonContentErrorMsg), /* harmony export */ "r": () => (/* binding */ resetContentScrollY), /* harmony export */ "s": () => (/* binding */ scrollToTop) /* harmony export */ }); /* harmony import */ var _Volumes_App_fm99_app_rev_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js */ 1670); /* harmony import */ var _helpers_3b390e48_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers-3b390e48.js */ 9234); /* harmony import */ var _index_c4b11676_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index-c4b11676.js */ 9273); /*! * (C) Ionic http://ionicframework.com - MIT License */ const ION_CONTENT_TAG_NAME = 'ION-CONTENT'; const ION_CONTENT_ELEMENT_SELECTOR = 'ion-content'; const ION_CONTENT_CLASS_SELECTOR = '.ion-content-scroll-host'; /** * Selector used for implementations reliant on `` for scroll event changes. * * Developers should use the `.ion-content-scroll-host` selector to target the element emitting * scroll events. With virtual scroll implementations this will be the host element for * the scroll viewport. */ const ION_CONTENT_SELECTOR = `${ION_CONTENT_ELEMENT_SELECTOR}, ${ION_CONTENT_CLASS_SELECTOR}`; const isIonContent = el => el.tagName === ION_CONTENT_TAG_NAME; /** * Waits for the element host fully initialize before * returning the inner scroll element. * * For `ion-content` the scroll target will be the result * of the `getScrollElement` function. * * For custom implementations it will be the element host * or a selector within the host, if supplied through `scrollTarget`. */ const getScrollElement = /*#__PURE__*/function () { var _ref = (0,_Volumes_App_fm99_app_rev_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function* (el) { if (isIonContent(el)) { yield new Promise(resolve => (0,_helpers_3b390e48_js__WEBPACK_IMPORTED_MODULE_1__.c)(el, resolve)); return el.getScrollElement(); } return el; }); return function getScrollElement(_x) { return _ref.apply(this, arguments); }; }(); /** * Queries the element matching the selector for IonContent. * See ION_CONTENT_SELECTOR for the selector used. */ const findIonContent = el => { /** * First we try to query the custom scroll host selector in cases where * the implementation is using an outer `ion-content` with an inner custom * scroll container. */ const customContentHost = el.querySelector(ION_CONTENT_CLASS_SELECTOR); if (customContentHost) { return customContentHost; } return el.querySelector(ION_CONTENT_SELECTOR); }; /** * Queries the closest element matching the selector for IonContent. */ const findClosestIonContent = el => { return el.closest(ION_CONTENT_SELECTOR); }; /** * Scrolls to the top of the element. If an `ion-content` is found, it will scroll * using the public API `scrollToTop` with a duration. */ const scrollToTop = (el, durationMs) => { if (isIonContent(el)) { const content = el; return content.scrollToTop(durationMs); } return Promise.resolve(el.scrollTo({ top: 0, left: 0, behavior: durationMs > 0 ? 'smooth' : 'auto' })); }; /** * Scrolls by a specified X/Y distance in the component. If an `ion-content` is found, it will scroll * using the public API `scrollByPoint` with a duration. */ const scrollByPoint = (el, x, y, durationMs) => { if (isIonContent(el)) { const content = el; return content.scrollByPoint(x, y, durationMs); } return Promise.resolve(el.scrollBy({ top: y, left: x, behavior: durationMs > 0 ? 'smooth' : 'auto' })); }; /** * Prints an error informing developers that an implementation requires an element to be used * within either the `ion-content` selector or the `.ion-content-scroll-host` class. */ const printIonContentErrorMsg = el => { return (0,_index_c4b11676_js__WEBPACK_IMPORTED_MODULE_2__.a)(el, ION_CONTENT_ELEMENT_SELECTOR); }; /** * Several components in Ionic need to prevent scrolling * during a gesture (card modal, range, item sliding, etc). * Use this utility to account for ion-content and custom content hosts. */ const disableContentScrollY = contentEl => { if (isIonContent(contentEl)) { const ionContent = contentEl; const initialScrollY = ionContent.scrollY; ionContent.scrollY = false; /** * This should be passed into resetContentScrollY * so that we can revert ion-content's scrollY to the * correct state. For example, if scrollY = false * initially, we do not want to enable scrolling * when we call resetContentScrollY. */ return initialScrollY; } else { contentEl.style.setProperty('overflow', 'hidden'); return true; } }; const resetContentScrollY = (contentEl, initialScrollY) => { if (isIonContent(contentEl)) { contentEl.scrollY = initialScrollY; } else { contentEl.style.removeProperty('overflow'); } }; /***/ }), /***/ 6524: /*!****************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/keyboard-4d5544a0.js ***! \****************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "KEYBOARD_DID_CLOSE": () => (/* binding */ KEYBOARD_DID_CLOSE), /* harmony export */ "KEYBOARD_DID_OPEN": () => (/* binding */ KEYBOARD_DID_OPEN), /* harmony export */ "copyVisualViewport": () => (/* binding */ copyVisualViewport), /* harmony export */ "keyboardDidClose": () => (/* binding */ keyboardDidClose), /* harmony export */ "keyboardDidOpen": () => (/* binding */ keyboardDidOpen), /* harmony export */ "keyboardDidResize": () => (/* binding */ keyboardDidResize), /* harmony export */ "resetKeyboardAssist": () => (/* binding */ resetKeyboardAssist), /* harmony export */ "setKeyboardClose": () => (/* binding */ setKeyboardClose), /* harmony export */ "setKeyboardOpen": () => (/* binding */ setKeyboardOpen), /* harmony export */ "startKeyboardAssist": () => (/* binding */ startKeyboardAssist), /* harmony export */ "trackViewportChanges": () => (/* binding */ trackViewportChanges) /* harmony export */ }); /*! * (C) Ionic http://ionicframework.com - MIT License */ const KEYBOARD_DID_OPEN = 'ionKeyboardDidShow'; const KEYBOARD_DID_CLOSE = 'ionKeyboardDidHide'; const KEYBOARD_THRESHOLD = 150; let previousVisualViewport = {}; let currentVisualViewport = {}; let keyboardOpen = false; /** * This is only used for tests */ const resetKeyboardAssist = () => { previousVisualViewport = {}; currentVisualViewport = {}; keyboardOpen = false; }; const startKeyboardAssist = win => { startNativeListeners(win); if (!win.visualViewport) { return; } currentVisualViewport = copyVisualViewport(win.visualViewport); win.visualViewport.onresize = () => { trackViewportChanges(win); if (keyboardDidOpen() || keyboardDidResize(win)) { setKeyboardOpen(win); } else if (keyboardDidClose(win)) { setKeyboardClose(win); } }; }; /** * Listen for events fired by native keyboard plugin * in Capacitor/Cordova so devs only need to listen * in one place. */ const startNativeListeners = win => { win.addEventListener('keyboardDidShow', ev => setKeyboardOpen(win, ev)); win.addEventListener('keyboardDidHide', () => setKeyboardClose(win)); }; const setKeyboardOpen = (win, ev) => { fireKeyboardOpenEvent(win, ev); keyboardOpen = true; }; const setKeyboardClose = win => { fireKeyboardCloseEvent(win); keyboardOpen = false; }; /** * Returns `true` if the `keyboardOpen` flag is not * set, the previous visual viewport width equal the current * visual viewport width, and if the scaled difference * of the previous visual viewport height minus the current * visual viewport height is greater than KEYBOARD_THRESHOLD * * We need to be able to accommodate users who have zooming * enabled in their browser (or have zoomed in manually) which * is why we take into account the current visual viewport's * scale value. */ const keyboardDidOpen = () => { const scaledHeightDifference = (previousVisualViewport.height - currentVisualViewport.height) * currentVisualViewport.scale; return !keyboardOpen && previousVisualViewport.width === currentVisualViewport.width && scaledHeightDifference > KEYBOARD_THRESHOLD; }; /** * Returns `true` if the keyboard is open, * but the keyboard did not close */ const keyboardDidResize = win => { return keyboardOpen && !keyboardDidClose(win); }; /** * Determine if the keyboard was closed * Returns `true` if the `keyboardOpen` flag is set and * the current visual viewport height equals the * layout viewport height. */ const keyboardDidClose = win => { return keyboardOpen && currentVisualViewport.height === win.innerHeight; }; /** * Dispatch a keyboard open event */ const fireKeyboardOpenEvent = (win, nativeEv) => { const keyboardHeight = nativeEv ? nativeEv.keyboardHeight : win.innerHeight - currentVisualViewport.height; const ev = new CustomEvent(KEYBOARD_DID_OPEN, { detail: { keyboardHeight } }); win.dispatchEvent(ev); }; /** * Dispatch a keyboard close event */ const fireKeyboardCloseEvent = win => { const ev = new CustomEvent(KEYBOARD_DID_CLOSE); win.dispatchEvent(ev); }; /** * Given a window object, create a copy of * the current visual and layout viewport states * while also preserving the previous visual and * layout viewport states */ const trackViewportChanges = win => { previousVisualViewport = Object.assign({}, currentVisualViewport); currentVisualViewport = copyVisualViewport(win.visualViewport); }; /** * Creates a deep copy of the visual viewport * at a given state */ const copyVisualViewport = visualViewport => { return { width: Math.round(visualViewport.width), height: Math.round(visualViewport.height), offsetTop: visualViewport.offsetTop, offsetLeft: visualViewport.offsetLeft, pageTop: visualViewport.pageTop, pageLeft: visualViewport.pageLeft, scale: visualViewport.scale }; }; /***/ }), /***/ 3963: /*!***************************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/keyboard-controller-73af62b2.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "c": () => (/* binding */ createKeyboardController) /* harmony export */ }); /* harmony import */ var _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index-33ffec25.js */ 2286); /*! * (C) Ionic http://ionicframework.com - MIT License */ /** * Creates a controller that tracks and reacts to opening or closing the keyboard. * * @internal * @param keyboardChangeCallback A function to call when the keyboard opens or closes. */ const createKeyboardController = keyboardChangeCallback => { let keyboardWillShowHandler; let keyboardWillHideHandler; let keyboardVisible; const init = () => { keyboardWillShowHandler = () => { keyboardVisible = true; if (keyboardChangeCallback) keyboardChangeCallback(true); }; keyboardWillHideHandler = () => { keyboardVisible = false; if (keyboardChangeCallback) keyboardChangeCallback(false); }; _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === null || _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === void 0 ? void 0 : _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w.addEventListener('keyboardWillShow', keyboardWillShowHandler); _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === null || _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === void 0 ? void 0 : _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w.addEventListener('keyboardWillHide', keyboardWillHideHandler); }; const destroy = () => { _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === null || _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === void 0 ? void 0 : _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w.removeEventListener('keyboardWillShow', keyboardWillShowHandler); _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === null || _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w === void 0 ? void 0 : _index_33ffec25_js__WEBPACK_IMPORTED_MODULE_0__.w.removeEventListener('keyboardWillHide', keyboardWillHideHandler); keyboardWillShowHandler = keyboardWillHideHandler = undefined; }; const isKeyboardVisible = () => keyboardVisible; init(); return { init, destroy, isKeyboardVisible }; }; /***/ }), /***/ 3844: /*!***********************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/spinner-configs-5d6b6fe7.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "S": () => (/* binding */ SPINNERS) /* harmony export */ }); /*! * (C) Ionic http://ionicframework.com - MIT License */ const spinners = { bubbles: { dur: 1000, circles: 9, fn: (dur, index, total) => { const animationDelay = `${dur * index / total - dur}ms`; const angle = 2 * Math.PI * index / total; return { r: 5, style: { top: `${9 * Math.sin(angle)}px`, left: `${9 * Math.cos(angle)}px`, 'animation-delay': animationDelay } }; } }, circles: { dur: 1000, circles: 8, fn: (dur, index, total) => { const step = index / total; const animationDelay = `${dur * step - dur}ms`; const angle = 2 * Math.PI * step; return { r: 5, style: { top: `${9 * Math.sin(angle)}px`, left: `${9 * Math.cos(angle)}px`, 'animation-delay': animationDelay } }; } }, circular: { dur: 1400, elmDuration: true, circles: 1, fn: () => { return { r: 20, cx: 48, cy: 48, fill: 'none', viewBox: '24 24 48 48', transform: 'translate(0,0)', style: {} }; } }, crescent: { dur: 750, circles: 1, fn: () => { return { r: 26, style: {} }; } }, dots: { dur: 750, circles: 3, fn: (_, index) => { const animationDelay = -(110 * index) + 'ms'; return { r: 6, style: { left: `${9 - 9 * index}px`, 'animation-delay': animationDelay } }; } }, lines: { dur: 1000, lines: 8, fn: (dur, index, total) => { const transform = `rotate(${360 / total * index + (index < total / 2 ? 180 : -180)}deg)`; const animationDelay = `${dur * index / total - dur}ms`; return { y1: 14, y2: 26, style: { transform: transform, 'animation-delay': animationDelay } }; } }, 'lines-small': { dur: 1000, lines: 8, fn: (dur, index, total) => { const transform = `rotate(${360 / total * index + (index < total / 2 ? 180 : -180)}deg)`; const animationDelay = `${dur * index / total - dur}ms`; return { y1: 12, y2: 20, style: { transform: transform, 'animation-delay': animationDelay } }; } }, 'lines-sharp': { dur: 1000, lines: 12, fn: (dur, index, total) => { const transform = `rotate(${30 * index + (index < 6 ? 180 : -180)}deg)`; const animationDelay = `${dur * index / total - dur}ms`; return { y1: 17, y2: 29, style: { transform: transform, 'animation-delay': animationDelay } }; } }, 'lines-sharp-small': { dur: 1000, lines: 12, fn: (dur, index, total) => { const transform = `rotate(${30 * index + (index < 6 ? 180 : -180)}deg)`; const animationDelay = `${dur * index / total - dur}ms`; return { y1: 12, y2: 20, style: { transform: transform, 'animation-delay': animationDelay } }; } } }; const SPINNERS = spinners; /***/ }), /***/ 4114: /*!******************************************************************!*\ !*** ./node_modules/@ionic/core/dist/esm/swipe-back-5351da01.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "createSwipeBackGesture": () => (/* binding */ createSwipeBackGesture) /* harmony export */ }); /* harmony import */ var _helpers_3b390e48_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers-3b390e48.js */ 9234); /* harmony import */ var _dir_e8b767a8_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dir-e8b767a8.js */ 7481); /* harmony import */ var _index_f8d8aa5a_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./index-f8d8aa5a.js */ 9286); /* harmony import */ var _gesture_controller_17060b7c_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./gesture-controller-17060b7c.js */ 6379); /*! * (C) Ionic http://ionicframework.com - MIT License */ const createSwipeBackGesture = (el, canStartHandler, onStartHandler, onMoveHandler, onEndHandler) => { const win = el.ownerDocument.defaultView; const rtl = (0,_dir_e8b767a8_js__WEBPACK_IMPORTED_MODULE_1__.i)(el); /** * Determine if a gesture is near the edge * of the screen. If true, then the swipe * to go back gesture should proceed. */ const isAtEdge = detail => { const threshold = 50; const { startX } = detail; if (rtl) { return startX >= win.innerWidth - threshold; } return startX <= threshold; }; const getDeltaX = detail => { return rtl ? -detail.deltaX : detail.deltaX; }; const getVelocityX = detail => { return rtl ? -detail.velocityX : detail.velocityX; }; const canStart = detail => { return isAtEdge(detail) && canStartHandler(); }; const onMove = detail => { // set the transition animation's progress const delta = getDeltaX(detail); const stepValue = delta / win.innerWidth; onMoveHandler(stepValue); }; const onEnd = detail => { // the swipe back gesture has ended const delta = getDeltaX(detail); const width = win.innerWidth; const stepValue = delta / width; const velocity = getVelocityX(detail); const z = width / 2.0; const shouldComplete = velocity >= 0 && (velocity > 0.2 || delta > z); const missing = shouldComplete ? 1 - stepValue : stepValue; const missingDistance = missing * width; let realDur = 0; if (missingDistance > 5) { const dur = missingDistance / Math.abs(velocity); realDur = Math.min(dur, 540); } /** * TODO: stepValue can sometimes return negative values * or values greater than 1 which should not be possible. * Need to investigate more to find where the issue is. */ onEndHandler(shouldComplete, stepValue <= 0 ? 0.01 : (0,_helpers_3b390e48_js__WEBPACK_IMPORTED_MODULE_0__.l)(0, stepValue, 0.9999), realDur); }; return (0,_index_f8d8aa5a_js__WEBPACK_IMPORTED_MODULE_2__.createGesture)({ el, gestureName: 'goback-swipe', gesturePriority: 40, threshold: 10, canStart, onStart: onStartHandler, onMove, onEnd }); }; /***/ }) }]); //# sourceMappingURL=common.js.map