"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,";
const arrowDown = "data:image/svg+xml;utf8,";
const caretBackSharp = "data:image/svg+xml;utf8,";
const caretDownSharp = "data:image/svg+xml;utf8,";
const caretUpSharp = "data:image/svg+xml;utf8,";
const checkmarkOutline = "data:image/svg+xml;utf8,";
const chevronBack = "data:image/svg+xml;utf8,";
const chevronDown = "data:image/svg+xml;utf8,";
const chevronForward = "data:image/svg+xml;utf8,";
const chevronForwardOutline = "data:image/svg+xml;utf8,";
const close = "data:image/svg+xml;utf8,";
const closeCircle = "data:image/svg+xml;utf8,";
const closeSharp = "data:image/svg+xml;utf8,";
const ellipseOutline = "data:image/svg+xml;utf8,";
const ellipsisHorizontal = "data:image/svg+xml;utf8,";
const menuOutline = "data:image/svg+xml;utf8,";
const menuSharp = "data:image/svg+xml;utf8,";
const removeOutline = "data:image/svg+xml;utf8,";
const reorderThreeOutline = "data:image/svg+xml;utf8,";
const reorderTwoSharp = "data:image/svg+xml;utf8,";
const searchOutline = "data:image/svg+xml;utf8,";
const searchSharp = "data:image/svg+xml;utf8,";
/***/ }),
/***/ 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