\n */\nfunction renderSlot(name, fallbackRender, props, bindObject) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) {\n // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn$2('slot v-bind without argument expects an Object', this);\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes =\n scopedSlotFn(props) ||\n (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\n }\n else {\n nodes =\n this.$slots[name] ||\n (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\n }\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes);\n }\n else {\n return nodes;\n }\n}\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter(id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity;\n}\n\nfunction isKeyNotMatch(expect, actual) {\n if (isArray(expect)) {\n return expect.indexOf(actual) === -1;\n }\n else {\n return expect !== actual;\n }\n}\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName);\n }\n else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n }\n else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key;\n }\n return eventKeyCode === undefined;\n}\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps(data, tag, value, asProp, isSync) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' &&\n warn$2('v-bind without argument expects an Object or Array value', this);\n }\n else {\n if (isArray(value)) {\n value = toObject(value);\n }\n var hash = void 0;\n var _loop_1 = function (key) {\n if (key === 'class' || key === 'style' || isReservedAttribute(key)) {\n hash = data;\n }\n else {\n var type = data.attrs && data.attrs.type;\n hash =\n asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n if (isSync) {\n var on = data.on || (data.on = {});\n on[\"update:\".concat(key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n for (var key in value) {\n _loop_1(key);\n }\n }\n }\n return data;\n}\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic(index, isInFor) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree;\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates\n );\n markStatic$1(tree, \"__static__\".concat(index), false);\n return tree;\n}\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce(tree, index, key) {\n markStatic$1(tree, \"__once__\".concat(index).concat(key ? \"_\".concat(key) : \"\"), true);\n return tree;\n}\nfunction markStatic$1(tree, key, isOnce) {\n if (isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], \"\".concat(key, \"_\").concat(i), isOnce);\n }\n }\n }\n else {\n markStaticNode(tree, key, isOnce);\n }\n}\nfunction markStaticNode(node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\nfunction bindObjectListeners(data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn$2('v-on without argument expects an Object value', this);\n }\n else {\n var on = (data.on = data.on ? extend({}, data.on) : {});\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data;\n}\n\nfunction resolveScopedSlots(fns, res, \n// the following are added in 2.6\nhasDynamicKeys, contentHashKey) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n }\n else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n // @ts-expect-error\n if (slot.proxy) {\n // @ts-expect-error\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n res.$key = contentHashKey;\n }\n return res;\n}\n\n// helper to process dynamic keys for dynamic arguments in v-bind and v-on.\nfunction bindDynamicKeys(baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n }\n else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn$2(\"Invalid value for dynamic directive argument (expected string or null): \".concat(key), this);\n }\n }\n return baseObj;\n}\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier(value, symbol) {\n return typeof value === 'string' ? symbol + value : value;\n}\n\nfunction installRenderHelpers(target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots(children, context) {\n if (!children || !children.length) {\n return {};\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data &&\n data.slot != null) {\n var name_1 = data.slot;\n var slot = slots[name_1] || (slots[name_1] = []);\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n }\n else {\n slot.push(child);\n }\n }\n else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name_2 in slots) {\n if (slots[name_2].every(isWhitespace)) {\n delete slots[name_2];\n }\n }\n return slots;\n}\nfunction isWhitespace(node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' ';\n}\n\nfunction isAsyncPlaceholder(node) {\n // @ts-expect-error not really boolean type\n return node.isComment && node.asyncFactory;\n}\n\nfunction normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;\n var key = scopedSlots && scopedSlots.$key;\n if (!scopedSlots) {\n res = {};\n }\n else if (scopedSlots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return scopedSlots._normalized;\n }\n else if (isStable &&\n prevScopedSlots &&\n prevScopedSlots !== emptyObject &&\n key === prevScopedSlots.$key &&\n !hasNormalSlots &&\n !prevScopedSlots.$hasNormal) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevScopedSlots;\n }\n else {\n res = {};\n for (var key_1 in scopedSlots) {\n if (scopedSlots[key_1] && key_1[0] !== '$') {\n res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key_2 in normalSlots) {\n if (!(key_2 in res)) {\n res[key_2] = proxyNormalSlot(normalSlots, key_2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (scopedSlots && Object.isExtensible(scopedSlots)) {\n scopedSlots._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res;\n}\nfunction normalizeScopedSlot(vm, normalSlots, key, fn) {\n var normalized = function () {\n var cur = currentInstance;\n setCurrentInstance(vm);\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res =\n res && typeof res === 'object' && !isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n var vnode = res && res[0];\n setCurrentInstance(cur);\n return res &&\n (!vnode ||\n (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391\n ? undefined\n : res;\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized;\n}\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; };\n}\n\nfunction initSetup(vm) {\n var options = vm.$options;\n var setup = options.setup;\n if (setup) {\n var ctx = (vm._setupContext = createSetupContext(vm));\n setCurrentInstance(vm);\n pushTarget();\n var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, \"setup\");\n popTarget();\n setCurrentInstance();\n if (isFunction(setupResult)) {\n // render function\n // @ts-ignore\n options.render = setupResult;\n }\n else if (isObject(setupResult)) {\n // bindings\n if (process.env.NODE_ENV !== 'production' && setupResult instanceof VNode) {\n warn$2(\"setup() should not return VNodes directly - \" +\n \"return a render function instead.\");\n }\n vm._setupState = setupResult;\n // __sfc indicates compiled bindings from ')[0].trim();\n } else {\n scriptContent = 'return {}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return {}';\n\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n const isClassComponent = typeof component === 'function';\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Template\n if (!component.template && !component.render) {\n component.template = template;\n component.templateType = templateType;\n }\n if (component.template) {\n if (component.templateType === 't7') {\n if (isClassComponent) {\n const templateFunction = Template7.compile(component.template);\n component.prototype.render = function render() {\n return templateFunction(this);\n };\n } else {\n component.template = Template7.compile(component.template);\n }\n }\n if (component.templateType === 'es') {\n const renderContent = `window.${callbackRenderName} = function () {\n return function render() {\n return \\`${component.template}\\`;\n }\n }`;\n scriptEl = document.createElement('script');\n scriptEl.innerHTML = renderContent;\n $('head').append(scriptEl);\n\n if (isClassComponent) {\n component.prototype.render = component.template;\n } else {\n component.render = window[callbackRenderName]();\n }\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackRenderName] = null;\n delete window[callbackRenderName];\n }\n }\n\n if (isClassComponent) {\n delete component.template;\n delete component.templateType;\n }\n\n // Assign Style\n if (style) {\n component.style = style;\n component.styleScoped = styleScoped;\n }\n\n // Component ID\n component.id = id;\n return component;\n}\n\nexport default parseComponent;\n","import History from '../../utils/history';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container.register(path, (scope ? { scope } : {}))\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n }).catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(registrations.map(reg => new Promise((resolve, reject) => {\n reg.unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n })));\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n serviceWorker: {\n container: ('serviceWorker' in window.navigator) ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\n\nconst Statusbar = {\n hide() {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n },\n show() {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else {\n pageContent = app.root.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n if (Device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n },\n setBackgroundColor(color) {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n },\n isVisible() {\n if (Device.cordova && window.StatusBar) {\n return window.StatusBar.isVisible;\n }\n return false;\n },\n overlaysWebView(overlays = true) {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n },\n init() {\n const app = this;\n const params = app.params.statusbar;\n if (!params.enabled) return;\n\n if (Device.cordova && window.StatusBar) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (Device.ios) {\n if (params.iosOverlaysWebView) {\n window.StatusBar.overlaysWebView(true);\n } else {\n window.StatusBar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (Device.android) {\n if (params.androidOverlaysWebView) {\n window.StatusBar.overlaysWebView(true);\n } else {\n window.StatusBar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n }\n if (params.iosBackgroundColor && Device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && Device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n statusbar: {\n hide: Statusbar.hide,\n show: Statusbar.show,\n overlaysWebView: Statusbar.overlaysWebView,\n setTextColor: Statusbar.setTextColor,\n setBackgroundColor: Statusbar.setBackgroundColor,\n isVisible: Statusbar.isVisible,\n init: Statusbar.init.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport View from './view-class';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.root;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view');\n }\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n if ($viewEl.length === 0) {\n $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');\n }\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n auroraSwipeBack: false,\n auroraSwipeBackAnimateShadow: false,\n auroraSwipeBackAnimateOpacity: true,\n auroraSwipeBackActiveArea: 30,\n auroraSwipeBackThreshold: 0,\n // Push State\n pushState: false,\n pushStateRoot: undefined,\n pushStateAnimate: true,\n pushStateAnimateOnLoad: false,\n pushStateSeparator: '#!',\n pushStateOnLoad: true,\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n auroraPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n Utils.extend(app, {\n views: Utils.extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((index, viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalOpen panelOpen': function onOpen(instance) {\n const app = this;\n instance.$el.find('.view-init').each((index, viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {\n if (!instance || !instance.$el) return;\n instance.$el.find('.view-init').each((index, viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle = (\n $innerEl.hasClass('navbar-inner-centered-title')\n || app.params.navbar[`${app.theme}CenterTitle`]\n );\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.hasClass('stacked')\n || $el.parents('.stacked').length > 0\n || $el.parents('.tab:not(.tab-active)').length > 0\n || $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = ((navbarInnerWidth - rightWidth - titleWidth) + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = ((navbarInnerWidth - left[0].offsetWidth) / 2);\n if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((index, subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((index, subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl.parents('.view').find('.page').each((index, el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else { // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!Support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse() {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent')\n || (\n $navbarEl.hasClass('navbar-large')\n && $navbarEl.hasClass('navbar-transparent')\n );\n previousCollapseProgress = collapseProgress;\n collapseProgress = Math.min(Math.max((currentScrollTop / navbarTitleLargeHeight), 0), 1);\n const previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed)\n || (collapseProgress === 0 && previousCollapseWasInMiddle)\n || (collapseProgress === 1 && !navbarCollapsed)\n || (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', '');\n } else {\n $navbarEl.find('.navbar-bg').css('transform', '');\n }\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', collapseProgress);\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);\n } else {\n $navbarEl.find('.navbar-bg').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n }\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!Support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse();\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n if (Support.touch && ((needCollapse && snapPageScrollToLargeTitle) || (needTransparent && snapPageScrollToTransparentNavbar))) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n if (needCollapse) {\n $pageEl.find('.page-content').each((pageContentIndex, pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n } else if (needTransparent) {\n $pageEl.find('.page-content').each((pageContentIndex, pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (Support.touch && ((needCollapse && snapPageScrollToLargeTitle) || (needTransparent && snapPageScrollToTransparentNavbar))) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n Utils.extend(app, {\n navbar: {\n size: Navbar.size.bind(app),\n hide: Navbar.hide.bind(app),\n show: Navbar.show.bind(app),\n getElByPage: Navbar.getElByPage.bind(app),\n getPageByEl: Navbar.getPageByEl.bind(app),\n collapseLargeTitle: Navbar.collapseLargeTitle.bind(app),\n expandLargeTitle: Navbar.expandLargeTitle.bind(app),\n toggleLargeTitle: Navbar.toggleLargeTitle.bind(app),\n initNavbarOnScroll: Navbar.initNavbarOnScroll.bind(app),\n },\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n auroraCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {\n const app = this;\n $('.navbar').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll\n || page.$el.find('.hide-navbar-on-scroll').length\n || page.$el.hasClass('hide-navbar-on-scroll')\n || page.$el.find('.hide-bars-on-scroll').length\n || page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length\n || page.$el.hasClass('keep-navbar-on-scroll')\n || page.$el.find('.keep-bars-on-scroll').length\n || page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('.navbar:not(.navbar-previous):not(.stacked)').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($clickedEl.closest('a').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarsEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n if (app.theme !== 'md') return;\n\n const $tabbarEl = $(tabbarEl);\n\n if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))) return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append(' ');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n Utils.nextFrame(() => {\n $highlightEl\n .css('width', highlightWidth)\n .transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n Utils.extend(app, {\n toolbar: {\n hide: Toolbar.hide.bind(app),\n show: Toolbar.show.bind(app),\n setHighlight: Toolbar.setHighlight.bind(app),\n initToolbarOnScroll: Toolbar.initToolbarOnScroll.bind(app),\n init: Toolbar.init.bind(app),\n },\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-labels').each((index, tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll\n || page.$el.find('.hide-toolbar-on-scroll').length\n || page.$el.hasClass('hide-toolbar-on-scroll')\n || page.$el.find('.hide-bars-on-scroll').length\n || page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length\n || page.$el.hasClass('keep-toolbar-on-scroll')\n || page.$el.find('.keep-bars-on-scroll').length\n || page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.root.find('.tabbar, .tabbar-labels').each((index, tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nexport default class TouchRipple {\n constructor($el, x, y) {\n const ripple = this;\n if (!$el) return undefined;\n const box = $el[0].getBoundingClientRect();\n const center = {\n x: x - box.left,\n y: y - box.top,\n };\n const width = box.width;\n const height = box.height;\n const diameter = Math.max((((height ** 2) + (width ** 2)) ** 0.5), 48);\n\n ripple.$rippleWaveEl = $(`
`);\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.rippleTransform = `translate3d(${-center.x + (width / 2)}px, ${-center.y + (height / 2)}px, 0) scale(1)`;\n\n Utils.nextFrame(() => {\n if (!ripple || !ripple.$rippleWaveEl) return;\n ripple.$rippleWaveEl.transform(ripple.rippleTransform);\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n remove() {\n const ripple = this;\n if (ripple.removing) return;\n const $rippleWaveEl = this.$rippleWaveEl;\n const rippleTransform = this.rippleTransform;\n let removeTimeout = Utils.nextTick(() => {\n ripple.destroy();\n }, 400);\n ripple.removing = true;\n $rippleWaveEl\n .addClass('ripple-wave-fill')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'))\n .transitionEnd(() => {\n clearTimeout(removeTimeout);\n Utils.nextFrame(() => {\n $rippleWaveEl\n .addClass('ripple-wave-out')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'));\n\n removeTimeout = Utils.nextTick(() => {\n ripple.destroy();\n }, 700);\n\n $rippleWaveEl.transitionEnd(() => {\n clearTimeout(removeTimeout);\n ripple.destroy();\n });\n });\n });\n }\n}\n","import TouchRipple from './touch-ripple-class';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = Utils.extend(defaults, params);\n modal.opened = false;\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal) {\n const modal = this;\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (app.params.modal.moveToRoot && !$modalParentEl.is(app.root)) {\n app.root.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el\n .animationEnd(() => {\n transitionEnd();\n });\n $el\n .transitionEnd(() => {\n transitionEnd();\n });\n $el\n .removeClass('modal-out not-animated')\n .addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el.prevAll('.popup.modal-in').each((index, popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick\n && popupInstance.params.backdrop\n && popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el\n .animationEnd(() => {\n transitionEnd();\n });\n $el\n .transitionEnd(() => {\n transitionEnd();\n });\n $el\n .removeClass('modal-in')\n .addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el\n .addClass('not-animated')\n .removeClass('modal-in')\n .addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n Utils.deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Modal from './modal-class';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.root.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n app.root.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n Utils.extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class';\nimport CustomModal from './custom-modal-class';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n moveToRoot: true,\n queueDialogs: true,\n },\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Dialog extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {},\n }, params);\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n if (typeof extendedParams.backdrop === 'undefined') {\n extendedParams.backdrop = app.params.dialog.backdrop;\n }\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const dialog = this;\n\n const { title, text, content, buttons, verticalButtons, cssClass, backdrop } = extendedParams;\n\n dialog.params = extendedParams;\n\n // Find Element\n let $el;\n if (!dialog.params.el) {\n const dialogClasses = ['dialog'];\n if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n if (cssClass) dialogClasses.push(cssClass);\n\n let buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = `\n \n ${buttons.map(button => `\n ${button.text} \n `).join('')}\n
\n `;\n }\n\n const dialogHtml = `\n \n
\n ${title ? `
${title}
` : ''}\n ${text ? `
${text}
` : ''}\n ${content}\n
\n ${buttonsHTML}\n
\n `;\n $el = $(dialogHtml);\n } else {\n $el = $(dialog.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return dialog.destroy();\n }\n\n let $backdropEl;\n if (backdrop) {\n $backdropEl = app.root.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n app.root.append($backdropEl);\n }\n }\n\n // Assign events\n function buttonOnClick(e) {\n const buttonEl = this;\n const index = $(buttonEl).index();\n const button = buttons[index];\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n let addKeyboardHander;\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n buttons.forEach((button, index) => {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (document.activeElement) document.activeElement.blur();\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', () => {\n $el.find('.dialog-button').each((index, buttonEl) => {\n const button = buttons[index];\n if (button.keyCodes) addKeyboardHander = true;\n $(buttonEl).on('click', buttonOnClick);\n });\n if (\n addKeyboardHander\n && !app.device.ios\n && !app.device.android\n && !app.device.cordova\n ) {\n $(document).on('keydown', onKeyDown);\n }\n });\n dialog.on('close', () => {\n $el.find('.dialog-button').each((index, buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n if (\n addKeyboardHander\n && !app.device.ios\n && !app.device.android\n && !app.device.cordova\n ) {\n $(document).off('keydown', onKeyDown);\n }\n addKeyboardHander = false;\n });\n }\n Utils.extend(dialog, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'dialog',\n setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText(newText) {\n let $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $('
');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle(newTitle) {\n let $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $('
');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n },\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n if ($target.closest(dialog.el).length === 0) {\n if (\n dialog.params.closeByBackdropClick\n && dialog.backdropEl\n && dialog.backdropEl === target\n ) {\n dialog.close();\n }\n }\n }\n\n dialog.on('opened', () => {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', () => {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = dialog;\n\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', () => {\n setTimeout(() => {\n dialog.destroy();\n }, 0);\n });\n }\n\n return dialog;\n }\n}\nexport default Dialog;\n","import Utils from '../../utils/utils';\nimport Dialog from './dialog-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n backdrop: true,\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n autoFocus: true,\n },\n },\n static: {\n Dialog,\n },\n create() {\n const app = this;\n function defaultDialogTitle() {\n return app.params.dialog.title || app.name;\n }\n const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n const keyboardActions = app.params.dialog.keyboardActions;\n const autoFocus = app.params.dialog.autoFocus;\n const autoFocusHandler = (autoFocus ? {\n on: {\n opened(dialog) {\n dialog.$el.find('input').eq(0).focus();\n },\n },\n } : {});\n\n app.dialog = Utils.extend(\n ModalMethods({\n app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in',\n }),\n {\n // Shortcuts\n alert(...args) {\n let [text, title, callbackOk] = args;\n if (args.length === 2 && typeof args[1] === 'function') {\n [text, callbackOk, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonOk,\n bold: true,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null,\n }],\n destroyOnClose,\n }).open();\n },\n prompt(...args) {\n let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, defaultValue, title] = args;\n }\n defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `
`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) callbackCancel(inputValue);\n if (index === 1 && callbackOk) callbackOk(inputValue);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n confirm(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n destroyOnClose,\n }).open();\n },\n login(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `\n \n \n
\n \n \n
`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(username, password);\n if (index === 1 && callbackOk) callbackOk(username, password);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n password(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `\n \n \n
`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(password);\n if (index === 1 && callbackOk) callbackOk(password);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n preloader(title, color) {\n const preloaderInner = Utils[`${app.theme}PreloaderContent`] || '';\n return new Dialog(app, {\n title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n content: `${preloaderInner}
`,\n cssClass: 'dialog-preloader',\n destroyOnClose,\n }).open();\n },\n progress(...args) {\n let [title, progress, color] = args;\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n [progress, color, title] = args;\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n [title, color, progress] = args;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n [progress, title, color] = args;\n }\n }\n const infinite = typeof progress === 'undefined';\n const dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n content: `\n \n ${!infinite ? ' ' : ''}\n
\n `,\n destroyOnClose,\n });\n if (!infinite) dialog.setProgress(progress);\n return dialog.open();\n },\n }\n );\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\nimport Modal from '../modal/modal-class';\n\nclass Popup extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.popup,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const popup = this;\n\n popup.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popup.params.el) {\n $el = $(popup.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(popup.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return popup.destroy();\n }\n\n let $backdropEl;\n if (popup.params.backdrop && popup.params.backdropEl) {\n $backdropEl = $(popup.params.backdropEl);\n } else if (popup.params.backdrop) {\n $backdropEl = app.root.children('.popup-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('');\n app.root.append($backdropEl);\n }\n }\n\n Utils.extend(popup, {\n app,\n push: $el.hasClass('popup-push') || popup.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n $htmlEl: $('html'),\n });\n\n if (popup.params.push) {\n $el.addClass('popup-push');\n }\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(popup.el).length === 0) {\n if (\n popup.params\n && popup.params.closeByBackdropClick\n && popup.params.backdrop\n && popup.backdropEl\n && popup.backdropEl === target\n ) {\n let needToClose = true;\n popup.$el.nextAll('.popup.modal-in').each((index, popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick\n && popupInstance.params.backdrop\n && popupInstance.backdropEl === popup.backdropEl\n ) {\n needToClose = false;\n }\n });\n if (needToClose) {\n popup.close();\n }\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popup.params.closeOnEscape) {\n popup.close();\n }\n }\n\n let pushOffset;\n let isPush;\n\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n\n let allowSwipeToClose = true;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let pageContentEl;\n let pageContentScrollTop;\n let pageContentOffsetHeight;\n let pageContentScrollHeight;\n let popupHeight;\n let $pushEl;\n\n function handleTouchStart(e) {\n if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose) return;\n if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {\n return;\n }\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n };\n touchStartTime = Utils.now();\n isScrolling = undefined;\n if (!popup.params.swipeHandler && e.type === 'touchstart') {\n pageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n touchesDiff = startTouch.y - currentTouch.y;\n if (isPush && pushOffset && touchesDiff > 0) {\n touchesDiff = 0;\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n $el.transition(0);\n\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n $el.transition('');\n return;\n }\n\n if (!isMoved) {\n if (isPush && pushOffset) {\n popupHeight = $el[0].offsetHeight;\n $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n if ($pushEl.length === 0) {\n $pushEl = app.root.children('.view, .views');\n }\n }\n if (pageContentEl) {\n pageContentScrollTop = pageContentEl.scrollTop;\n pageContentScrollHeight = pageContentEl.scrollHeight;\n pageContentOffsetHeight = pageContentEl.offsetHeight;\n if (\n !(pageContentScrollHeight === pageContentOffsetHeight)\n && !(direction === 'to-bottom' && pageContentScrollTop === 0)\n && !(direction === 'to-top' && pageContentScrollTop === (pageContentScrollHeight - pageContentOffsetHeight))\n ) {\n $el.transform('');\n $el.transition('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n isMoved = true;\n popup.emit('local::swipeStart popupSwipeStart', popup);\n popup.$el.trigger('popup:swipestart');\n } else {\n popup.emit('local::swipeMove popupSwipeMove', popup);\n popup.$el.trigger('popup:swipemove');\n }\n\n e.preventDefault();\n if (isPush && pushOffset) {\n const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n if ($pushEl.hasClass('popup')) {\n if ($pushEl.hasClass('popup-push')) {\n $pushEl.transition(0).transform(\n `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`\n );\n } else {\n $pushEl.transition(0).transform(\n `translate3d(0, 0px , 0px) scale(${scale})`\n );\n }\n } else {\n $pushEl.transition(0).transform(`translate3d(0,0,0) scale(${scale})`);\n }\n }\n $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n popup.emit('local::swipeEnd popupSwipeEnd', popup);\n popup.$el.trigger('popup:swipeend');\n isMoved = false;\n allowSwipeToClose = false;\n $el.transition('');\n if (isPush && pushOffset) {\n $pushEl.transition('').transform('');\n }\n const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n if ((typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose)) {\n $el.transform('');\n allowSwipeToClose = true;\n return;\n }\n const diff = Math.abs(touchesDiff);\n const timeDiff = (new Date()).getTime() - touchStartTime;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n Utils.nextTick(() => {\n if (direction === 'to-bottom') {\n $el.addClass('swipe-close-to-bottom');\n } else {\n $el.addClass('swipe-close-to-top');\n }\n $el.transform('');\n popup.emit('local::swipeclose popupSwipeClose', popup);\n popup.$el.trigger('popup:swipeclose');\n popup.close();\n allowSwipeToClose = true;\n });\n return;\n }\n allowSwipeToClose = true;\n $el.transform('');\n }\n\n const passive = Support.passiveListener ? { passive: true } : false;\n if (popup.params.swipeToClose) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n popup.once('popupDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n\n let hasPreviousPushPopup;\n\n popup.on('open', () => {\n hasPreviousPushPopup = false;\n if (popup.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n if (popup.push) {\n isPush = popup.push && (\n (app.width < 630 || app.height < 630)\n || $el.hasClass('popup-tablet-fullscreen')\n );\n }\n if (isPush) {\n pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (pushOffset) {\n $el.addClass('popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push');\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n }\n }\n });\n popup.on('opened', () => {\n $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('close', () => {\n hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n if (popup.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push-closing');\n }\n });\n popup.on('closed', () => {\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n }\n });\n\n $el[0].f7Modal = popup;\n\n return popup;\n }\n}\nexport default Popup;\n","import Popup from './popup-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n backdropEl: undefined,\n closeByBackdropClick: true,\n closeOnEscape: false,\n swipeToClose: false,\n swipeHandler: null,\n push: false,\n },\n },\n static: {\n Popup,\n },\n create() {\n const app = this;\n app.popup = ModalMethods({\n app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n parentSelector: '.popup',\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data = {}) {\n const app = this;\n app.popup.open(data.popup, data.animate, $clickedEl);\n },\n '.popup-close': function closePopup($clickedEl, data = {}) {\n const app = this;\n app.popup.close(data.popup, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass LoginScreen extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n on: {},\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const loginScreen = this;\n\n loginScreen.params = extendedParams;\n\n // Find Element\n let $el;\n if (!loginScreen.params.el) {\n $el = $(loginScreen.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(loginScreen.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n\n Utils.extend(loginScreen, {\n app,\n $el,\n el: $el[0],\n type: 'loginScreen',\n });\n\n $el[0].f7Modal = loginScreen;\n\n return loginScreen;\n }\n}\nexport default LoginScreen;\n","import LoginScreen from './login-screen-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'loginScreen',\n static: {\n LoginScreen,\n },\n create() {\n const app = this;\n app.loginScreen = ModalMethods({\n app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in',\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data = {}) {\n const app = this;\n app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data = {}) {\n const app = this;\n app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Popover extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.popover,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const popover = this;\n\n popover.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popover.params.el) {\n $el = $(popover.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(popover.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n const $targetEl = $(popover.params.targetEl).eq(0);\n\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (popover.params.backdrop && popover.params.backdropEl) {\n $backdropEl = $(popover.params.backdropEl);\n } else if (popover.params.backdrop) {\n $backdropEl = app.root.children('.popover-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n app.root.append($backdropEl);\n }\n }\n\n // Find Angle\n let $angleEl;\n if ($el.find('.popover-angle').length === 0) {\n $angleEl = $('
');\n $el.prepend($angleEl);\n } else {\n $angleEl = $el.find('.popover-angle');\n }\n\n // Open\n const originalOpen = popover.open;\n\n Utils.extend(popover, {\n app,\n $el,\n el: $el[0],\n $targetEl,\n targetEl: $targetEl[0],\n $angleEl,\n angleEl: $angleEl[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n open(...args) {\n let [targetEl, animate] = args;\n if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n if (targetEl) {\n popover.$targetEl = $(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n return originalOpen.call(popover, animate);\n },\n });\n\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', () => {\n popover.resize();\n app.on('resize', handleResize);\n $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', () => {\n app.off('resize', handleResize);\n $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n });\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(popover.el).length === 0) {\n if (\n popover.params.closeByBackdropClick\n && popover.params.backdrop\n && popover.backdropEl\n && popover.backdropEl === target\n ) {\n popover.close();\n } else if (popover.params.closeByOutsideClick) {\n popover.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popover.params.closeOnEscape) {\n popover.close();\n }\n }\n\n if (popover.params.closeOnEscape) {\n popover.on('popoverOpen', () => {\n $(document).on('keydown', onKeyDown);\n });\n popover.on('popoverClose', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n\n popover.on('popoverOpened', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = popover;\n\n return popover;\n }\n\n resize() {\n const popover = this;\n const { app, $el, $targetEl, $angleEl } = popover;\n const { targetX, targetY } = popover.params;\n $el.css({ left: '', top: '' });\n const [width, height] = [$el.width(), $el.height()];\n let angleSize = 0;\n let angleLeft;\n let angleTop;\n if (app.theme === 'ios' || app.theme === 'aurora') {\n $angleEl.removeClass('on-left on-right on-top on-bottom').css({ left: '', top: '' });\n angleSize = $angleEl.width() / 2;\n } else {\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({ left: '', top: '' });\n }\n\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n\n let [left, top, diff] = [0, 0, 0];\n // Top Position\n let position = app.theme === 'md' ? 'bottom' : 'top';\n if (app.theme === 'md') {\n if (height < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight;\n } else if (height < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height;\n position = 'top';\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n }\n top = Math.max(8, Math.min(top, app.height - height - 8));\n\n // Horizontal Position\n let hPosition;\n if (targetOffsetLeft < app.width / 2) {\n hPosition = 'right';\n left = position === 'middle'\n ? targetOffsetLeft + targetWidth\n : targetOffsetLeft;\n } else {\n hPosition = 'left';\n left = position === 'middle'\n ? targetOffsetLeft - width\n : (targetOffsetLeft + targetWidth) - width;\n }\n left = Math.max(8, Math.min(left, app.width - width - 8));\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n } else {\n // ios and aurora\n if ((height + angleSize) < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height - angleSize;\n } else if ((height + angleSize) < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + angleSize;\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n diff = top;\n top = Math.max(5, Math.min(top, app.height - height - 5));\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n diff = left;\n left = Math.max(5, Math.min(left, app.width - width - 5));\n if (position === 'top') {\n $angleEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $angleEl.addClass('on-top');\n }\n diff -= left;\n angleLeft = ((width / 2) - angleSize) + diff;\n angleLeft = Math.max(Math.min(angleLeft, width - (angleSize * 2) - 13), 13);\n $angleEl.css({ left: `${angleLeft}px` });\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - angleSize;\n $angleEl.addClass('on-right');\n if (left < 5 || (left + width > app.width)) {\n if (left < 5) left = targetOffsetLeft + targetWidth + angleSize;\n if (left + width > app.width) left = app.width - width - 5;\n $angleEl.removeClass('on-right').addClass('on-left');\n }\n angleTop = ((height / 2) - angleSize) + diff;\n angleTop = Math.max(Math.min(angleTop, height - (angleSize * 2) - 13), 13);\n $angleEl.css({ top: `${angleTop}px` });\n }\n }\n\n // Apply Styles\n $el.css({ top: `${top}px`, left: `${left}px` });\n }\n}\n\nexport default Popover;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Popover from './popover-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'popover',\n params: {\n popover: {\n backdrop: true,\n backdropEl: undefined,\n closeByBackdropClick: true,\n closeByOutsideClick: true,\n closeOnEscape: false,\n },\n },\n static: {\n Popover,\n },\n create() {\n const app = this;\n app.popover = Utils.extend(\n ModalMethods({\n app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in',\n }),\n {\n open(popoverEl, targetEl, animate) {\n let $popoverEl = $(popoverEl);\n if ($popoverEl.length > 1) {\n // check if same popover in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $popoverEl.each((index, el) => {\n const $el = $(el);\n if ($el.parents($targetPage)[0] === $targetPage[0]) {\n $popoverEl = $el;\n }\n });\n }\n }\n if ($popoverEl.length > 1) {\n $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n }\n let popover = $popoverEl[0].f7Modal;\n const data = $popoverEl.dataset();\n if (!popover) {\n popover = new Popover(app, Object.assign(\n {\n el: $popoverEl,\n targetEl,\n },\n data\n ));\n }\n return popover.open(targetEl, animate);\n },\n }\n );\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data = {}) {\n const app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data = {}) {\n const app = this;\n app.popover.close(data.popover, data.animate, $clickedEl);\n },\n },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Actions extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.actions,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const actions = this;\n\n actions.params = extendedParams;\n\n // Buttons\n let groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) groups = [groups];\n }\n actions.groups = groups;\n\n // Find Element\n let $el;\n if (actions.params.el) {\n $el = $(actions.params.el).eq(0);\n } else if (actions.params.content) {\n $el = $(actions.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (actions.params.backdrop && actions.params.backdropEl) {\n $backdropEl = $(actions.params.backdropEl);\n } else if (actions.params.backdrop) {\n $backdropEl = app.root.children('.actions-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n app.root.append($backdropEl);\n }\n }\n\n const originalOpen = actions.open;\n const originalClose = actions.close;\n\n let popover;\n function buttonOnClick(e) {\n const $buttonEl = $(this);\n let buttonIndex;\n let groupIndex;\n if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n buttonIndex = $buttonEl.parents('li').index();\n groupIndex = $buttonEl.parents('.list').index();\n } else {\n buttonIndex = $buttonEl.index();\n groupIndex = $buttonEl.parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n const button = groups[groupIndex][buttonIndex];\n if (button.onClick) button.onClick(actions, e);\n if (actions.params.onClick) actions.params.onClick(actions, e);\n if (button.close !== false) actions.close();\n }\n }\n actions.open = function open(animate) {\n let convertToPopover = false;\n const { targetEl, targetX, targetY, targetWidth, targetHeight } = actions.params;\n if (actions.params.convertToPopover && (targetEl || (targetX !== undefined && targetY !== undefined))) {\n // Popover\n if (\n actions.params.forceToPopover\n || (app.device.ios && app.device.ipad)\n || app.width >= 768\n || (app.device.desktop && app.theme === 'aurora')\n ) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n on: {\n open() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n },\n opened() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n },\n close() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n },\n closed() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n },\n },\n });\n popover.open(animate);\n popover.once('popoverOpened', () => {\n popover.$el.find('.list-button, .item-link').each((groupIndex, buttonEl) => {\n $(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', () => {\n popover.$el.find('.list-button, .item-link').each((groupIndex, buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n Utils.nextTick(() => {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each((groupIndex, buttonEl) => {\n $(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', () => {\n actions.$el.find('.actions-button').each((groupIndex, buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n\n Utils.extend(actions, {\n app,\n $el,\n el: $el ? $el[0] : undefined,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions',\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(actions.el).length === 0) {\n if (\n actions.params.closeByBackdropClick\n && actions.params.backdrop\n && actions.backdropEl\n && actions.backdropEl === target\n ) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && actions.params.closeOnEscape) {\n actions.close();\n }\n }\n\n if (actions.params.closeOnEscape) {\n actions.on('open', () => {\n $(document).on('keydown', onKeyDown);\n });\n actions.on('close', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n\n actions.on('opened', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n\n if ($el) {\n $el[0].f7Modal = actions;\n }\n\n return actions;\n }\n\n render() {\n const actions = this;\n if (actions.params.render) return actions.params.render.call(actions, actions);\n const { groups } = actions;\n const cssClass = actions.params.cssClass;\n return `\n \n ${groups.map(group => `
\n ${group.map((button) => {\n const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n const { color, bg, bold, disabled, label, text, icon } = button;\n if (color) buttonClasses.push(`color-${color}`);\n if (bg) buttonClasses.push(`bg-color-${bg}`);\n if (bold) buttonClasses.push('actions-button-bold');\n if (disabled) buttonClasses.push('disabled');\n if (label) {\n return `
${text}
`;\n }\n return `\n
`.trim();\n }).join('')}\n
`).join('')}\n
\n `.trim();\n }\n\n renderPopover() {\n const actions = this;\n if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n const { groups } = actions;\n const cssClass = actions.params.cssClass;\n return `\n \n
\n ${groups.map(group => `\n
\n
\n ${group.map((button) => {\n const itemClasses = [];\n const { color, bg, bold, disabled, label, text, icon } = button;\n if (color) itemClasses.push(`color-${color}`);\n if (bg) itemClasses.push(`bg-color-${bg}`);\n if (bold) itemClasses.push('popover-from-actions-bold');\n if (disabled) itemClasses.push('disabled');\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return `${text} `;\n }\n if (icon) {\n itemClasses.push('item-link item-content');\n return `\n \n \n \n ${icon}\n
\n \n \n \n `;\n }\n itemClasses.push('list-button');\n return `\n \n ${text} \n \n `;\n }).join('')}\n \n
\n `).join('')}\n
\n
\n `.trim();\n }\n}\n\nexport default Actions;\n","import Actions from './actions-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n backdrop: true,\n backdropEl: undefined,\n cssClass: null,\n closeByBackdropClick: true,\n closeOnEscape: false,\n render: null,\n renderPopover: null,\n },\n },\n static: {\n Actions,\n },\n create() {\n const app = this;\n app.actions = ModalMethods({\n app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in',\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data = {}) {\n const app = this;\n app.actions.open(data.actions, data.animate, $clickedEl);\n },\n '.actions-close': function closeActions($clickedEl, data = {}) {\n const app = this;\n app.actions.close(data.actions, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\nimport Modal from '../modal/modal-class';\n\nclass Sheet extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.sheet,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const sheet = this;\n\n sheet.params = extendedParams;\n if (typeof sheet.params.backdrop === 'undefined') {\n sheet.params.backdrop = app.theme !== 'ios';\n }\n\n // Find Element\n let $el;\n if (!sheet.params.el) {\n $el = $(sheet.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(sheet.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return sheet.destroy();\n }\n let $backdropEl;\n\n if (sheet.params.backdrop && sheet.params.backdropEl) {\n $backdropEl = $(sheet.params.backdropEl);\n } else if (sheet.params.backdrop) {\n $backdropEl = app.root.children('.sheet-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n app.root.append($backdropEl);\n }\n }\n\n Utils.extend(sheet, {\n app,\n push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n $htmlEl: $('html'),\n });\n\n if (sheet.params.push) {\n $el.addClass('sheet-modal-push');\n }\n\n let $pageContentEl;\n function scrollToElementOnOpen() {\n const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) return;\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n const pageScroll = $pageContentEl.scrollTop();\n\n let newPaddingBottom;\n\n const scrollElTop = ($scrollEl.offset().top - paddingTop) + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n const scrollTop = (pageScroll + scrollElTop) - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = ((scrollTop + pageHeight) - pageScrollHeight) + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': `${newPaddingBottom}px`,\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n\n function scrollToElementOnClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': '',\n });\n }\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(sheet.el).length === 0) {\n if (\n sheet.params.closeByBackdropClick\n && sheet.params.backdrop\n && sheet.backdropEl\n && sheet.backdropEl === target\n ) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && sheet.params.closeOnEscape) {\n sheet.close();\n }\n }\n\n let pushOffset;\n\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n\n\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let isTopSheetModal;\n let swipeStepTranslate;\n let startTranslate;\n let currentTranslate;\n let sheetElOffsetHeight;\n let minTranslate;\n let maxTranslate;\n let $pushViewEl;\n let pushBorderRadius;\n let sheetPageContentEl;\n let sheetPageContentScrollTop;\n let sheetPageContentScrollHeight;\n let sheetPageContentOffsetHeight;\n\n function handleTouchStart(e) {\n if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep)) return;\n if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {\n return;\n }\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n };\n touchStartTime = Utils.now();\n isScrolling = undefined;\n isTopSheetModal = $el.hasClass('sheet-modal-top');\n if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n sheetPageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n touchesDiff = startTouch.y - currentTouch.y;\n\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n if (!isMoved) {\n if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n if (\n !(sheetPageContentScrollHeight === sheetPageContentOffsetHeight)\n && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0)\n && !(direction === 'to-top' && sheetPageContentScrollTop === (sheetPageContentScrollHeight - sheetPageContentOffsetHeight))\n ) {\n $el.transform('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n if (sheet.push && pushOffset) {\n $pushViewEl = app.root.children('.view, .views');\n }\n sheetElOffsetHeight = $el[0].offsetHeight;\n startTranslate = Utils.getTranslate($el[0], 'y');\n if (isTopSheetModal) {\n minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n maxTranslate = 0;\n } else {\n minTranslate = 0;\n maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : swipeStepTranslate;\n }\n isMoved = true;\n }\n currentTranslate = startTranslate - touchesDiff;\n currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n e.preventDefault();\n if (sheet.push && pushOffset) {\n let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n if (sheet.params.swipeToStep) {\n if (isTopSheetModal) {\n progress = (currentTranslate / swipeStepTranslate);\n } else {\n progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n }\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n const pushProgress = 1 - progress;\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n $pushViewEl.transition(0).transform(`translate3d(0,0,0) scale(${scale})`);\n if (sheet.params.swipeToStep) {\n $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n }\n }\n $el\n .transition(0)\n .transform(`translate3d(0,${currentTranslate}px,0)`);\n if (sheet.params.swipeToStep) {\n let progress;\n if (isTopSheetModal) {\n progress = 1 - (currentTranslate / swipeStepTranslate);\n } else {\n progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n progress = Math.min(Math.max(progress, 0), 1);\n $el.trigger('sheet:stepprogress', progress);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n }\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n isMoved = false;\n $el.transform('').transition('');\n if (sheet.push && pushOffset) {\n $pushViewEl.transition('').transform('');\n $pushViewEl.css('border-radius', '');\n }\n\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n const diff = Math.abs(touchesDiff);\n if (diff === 0 || currentTranslate === startTranslate) return;\n\n const timeDiff = (new Date()).getTime() - touchStartTime;\n\n if (!sheet.params.swipeToStep) {\n if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n return;\n }\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > (sheetElOffsetHeight / 2))) {\n sheet.close();\n }\n return;\n }\n\n const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n const absCurrentTranslate = Math.abs(currentTranslate);\n const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n\n if (timeDiff < 300 && diff > 10) {\n if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n }\n if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n // close sheet\n if (sheet.params.swipeToClose) {\n sheet.close();\n } else {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n return;\n }\n if (timeDiff >= 300) {\n const stepOpened = !$el.hasClass('modal-in-swipe-step');\n if (!stepOpened) {\n if (absCurrentTranslate < (absSwipeStepTranslate / 2)) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n } else if ((absCurrentTranslate - absSwipeStepTranslate) > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n }\n } else if (stepOpened) {\n if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n }\n }\n\n sheet.setSwipeStep = function setSwipeStep(byResize = true) {\n const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n if (!$swipeStepEl.length) return;\n if ($el.hasClass('sheet-modal-top')) {\n swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n } else {\n swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n }\n $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n if (!byResize) {\n $el.addClass('modal-in-swipe-step');\n }\n };\n\n function onResize() {\n sheet.setSwipeStep(true);\n }\n\n const passive = Support.passiveListener ? { passive: true } : false;\n if (sheet.params.swipeToClose || sheet.params.swipeToStep) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n sheet.once('sheetDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n\n sheet.on('open', () => {\n if (sheet.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n if (sheet.params.swipeToStep) {\n sheet.setSwipeStep(false);\n app.on('resize', onResize);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnOpen();\n }\n\n if (sheet.push) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (pushOffset) {\n $el.addClass('sheet-modal-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push');\n if (!sheet.params.swipeToStep) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n } else {\n $pushViewEl = app.root.children('.view, .views');\n pushBorderRadius = parseFloat($el.css(`border-${isTopSheetModal ? 'bottom' : 'top'}-left-radius`));\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n });\n sheet.on('opened', () => {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('close', () => {\n if (sheet.params.swipeToStep) {\n $el.removeClass('modal-in-swipe-step');\n app.off('resize', onResize);\n }\n if (sheet.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n }\n });\n sheet.on('closed', () => {\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n });\n\n sheet.stepOpen = function stepOpen() {\n $el.removeClass('modal-in-swipe-step');\n if (sheet.push) {\n if (!pushOffset) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n }\n if (pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n }\n }\n };\n sheet.stepClose = function stepClose() {\n $el.addClass('modal-in-swipe-step');\n if (sheet.push) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n };\n sheet.stepToggle = function stepToggle() {\n $el.toggleClass('modal-in-swipe-step');\n };\n\n $el[0].f7Modal = sheet;\n\n return sheet;\n }\n}\nexport default Sheet;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Sheet from './sheet-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'sheet',\n params: {\n sheet: {\n push: false,\n backdrop: undefined,\n backdropEl: undefined,\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n closeOnEscape: false,\n swipeToClose: false,\n swipeToStep: false,\n swipeHandler: null,\n },\n },\n static: {\n Sheet,\n },\n create() {\n const app = this;\n app.sheet = Utils.extend(\n {},\n ModalMethods({\n app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in',\n }),\n {\n stepOpen(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n return undefined;\n },\n stepClose(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n return undefined;\n },\n stepToggle(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n return undefined;\n },\n },\n );\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data = {}) {\n const app = this;\n if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate, $clickedEl);\n },\n '.sheet-close': function closeSheet($clickedEl, data = {}) {\n const app = this;\n app.sheet.close(data.sheet, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Toast extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n on: {},\n }, app.params.toast, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const toast = this;\n\n toast.app = app;\n\n toast.params = extendedParams;\n\n const { closeButton, closeTimeout } = toast.params;\n\n let $el;\n if (!toast.params.el) {\n // Find Element\n const toastHtml = toast.render();\n\n $el = $(toastHtml);\n } else {\n $el = $(toast.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return toast.destroy();\n }\n\n Utils.extend(toast, {\n $el,\n el: $el[0],\n type: 'toast',\n });\n\n $el[0].f7Modal = toast;\n\n if (closeButton) {\n $el.find('.toast-button').on('click', () => {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n\n toast.on('beforeDestroy', () => {\n $el.find('.toast-button').off('click');\n });\n }\n\n let timeoutId;\n toast.on('open', () => {\n $('.toast.modal-in').each((index, openedEl) => {\n const toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = Utils.nextTick(() => {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', () => {\n window.clearTimeout(timeoutId);\n });\n\n if (toast.params.destroyOnClose) {\n toast.once('closed', () => {\n setTimeout(() => {\n toast.destroy();\n }, 0);\n });\n }\n\n return toast;\n }\n\n render() {\n const toast = this;\n if (toast.params.render) return toast.params.render.call(toast, toast);\n const { position, horizontalPosition, cssClass, icon, text, closeButton, closeButtonColor, closeButtonText } = toast.params;\n const horizontalClass = position === 'top' || position === 'bottom'\n ? `toast-horizontal-${horizontalPosition}`\n : '';\n return `\n \n
\n ${icon ? `
${icon}
` : ''}\n
${text}
\n ${closeButton && !icon ? `\n
${closeButtonText} \n `.trim() : ''}\n
\n
\n `.trim();\n }\n}\nexport default Toast;\n","import Utils from '../../utils/utils';\nimport Toast from './toast-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'toast',\n static: {\n Toast,\n },\n create() {\n const app = this;\n app.toast = Utils.extend(\n {},\n ModalMethods({\n app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in',\n }),\n {\n // Shortcuts\n show(params) {\n Utils.extend(params, {\n destroyOnClose: true,\n });\n return new Toast(app, params).open();\n },\n }\n );\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n horizontalPosition: 'left',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Preloader = {\n init(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;\n $el.append(Utils[`${app.theme}PreloaderContent`]);\n },\n // Modal\n visible: false,\n show(color = 'white') {\n const app = this;\n if (Preloader.visible) return;\n const preloaderInner = Utils[`${app.theme}PreloaderContent`] || '';\n $('html').addClass('with-modal-preloader');\n app.root.append(`\n
\n \n `);\n Preloader.visible = true;\n },\n showIn(el, color = 'white') {\n const app = this;\n const preloaderInner = Utils[`${app.theme}PreloaderContent`] || '';\n $(el || 'html').addClass('with-modal-preloader');\n $(el || app.root).append(`\n
\n \n `);\n },\n hide() {\n const app = this;\n if (!Preloader.visible) return;\n $('html').removeClass('with-modal-preloader');\n app.root.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n hideIn(el) {\n const app = this;\n $(el || 'html').removeClass('with-modal-preloader');\n $(el || app.root).find('.preloader-backdrop, .preloader-modal').remove();\n },\n};\nexport default {\n name: 'preloader',\n create() {\n const app = this;\n Utils.extend(app, {\n preloader: {\n init: Preloader.init.bind(app),\n show: Preloader.show.bind(app),\n hide: Preloader.hide.bind(app),\n showIn: Preloader.showIn.bind(app),\n hideIn: Preloader.hideIn.bind(app),\n },\n });\n },\n on: {\n photoBrowserOpen(pb) {\n const app = this;\n pb.$el.find('.preloader').each((index, preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.preloader').each((index, preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.preloader').each((index, preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n },\n vnode: {\n preloader: {\n insert(vnode) {\n const app = this;\n const preloaderEl = vnode.elm;\n app.preloader.init(preloaderEl);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Progressbar = {\n set(...args) {\n const app = this;\n let [el, progress, duration] = args;\n if (typeof args[0] === 'number') {\n [progress, duration] = args;\n el = app.root;\n }\n if (typeof progress === 'undefined' || progress === null) return el;\n if (!progress) progress = 0;\n\n const $el = $(el || app.root);\n if ($el.length === 0) {\n return el;\n }\n const progressNormalized = Math.min(Math.max(progress, 0), 100);\n let $progressbarEl;\n if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);\n else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n let $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $(' ');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine\n .transition(typeof duration !== 'undefined' ? duration : '')\n .transform(`translate3d(${(-100 + progressNormalized)}%,0,0)`);\n\n return $progressbarEl[0];\n },\n show(...args) {\n const app = this;\n\n // '.page', 50, 'multi'\n let [el, progress, color] = args;\n let type = 'determined';\n\n if (args.length === 2) {\n if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n // '.page', 'multi'\n [el, color, progress] = args;\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n [progress, color] = args;\n el = app.root;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.root;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.root;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.root;\n }\n\n const $el = $(el);\n if ($el.length === 0) return undefined;\n\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n if ($progressbarEl.length === 0) {\n $progressbarEl = $(`\n \n ${type === 'infinite' ? '' : ' '}\n `);\n $el.append($progressbarEl);\n }\n }\n\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n\n return $progressbarEl[0];\n },\n hide(el, removeAfterHide = true) {\n const app = this;\n const $el = $(el || app.root);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n return $progressbarEl;\n }\n $progressbarEl\n .removeClass('progressbar-in')\n .addClass('progressbar-out')\n .animationEnd(() => {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n },\n};\n\nexport default {\n name: 'progressbar',\n create() {\n const app = this;\n Utils.extend(app, {\n progressbar: {\n set: Progressbar.set.bind(app),\n show: Progressbar.show.bind(app),\n hide: Progressbar.hide.bind(app),\n },\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.progressbar').each((index, progressbarEl) => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.progressbar').each((index, progressbarEl) => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n },\n vnode: {\n progressbar: {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n update(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n },\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst Sortable = {\n init() {\n const app = this;\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchesDiff;\n let $sortingEl;\n let $sortingItems;\n let $sortableContainer;\n let sortingElHeight;\n let minTop;\n let maxTop;\n let $insertAfterEl;\n let $insertBeforeEl;\n let indexFrom;\n let $pageEl;\n let $pageContentEl;\n let pageHeight;\n let pageOffset;\n let sortingElOffsetLocal;\n let sortingElOffsetTop;\n let initialScrollTop;\n let wasTapHold;\n\n function handleTouchStart(e, isTapHold) {\n isMoved = false;\n isTouched = true;\n wasTapHold = false;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $(e.target).closest('li').eq(0);\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n const $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');\n if (app.panel) app.panel.allowOpen = false;\n if (app.swipeout) app.swipeout.allow = false;\n if (isTapHold) {\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n wasTapHold = true;\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) return;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n\n touchesDiff = pageY - touchStartY;\n\n const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n\n const scrollAddition = 44;\n let allowScroll = true;\n if ((touchesDiff + translateScrollOffset) + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if ((touchesDiff + translateScrollOffset) - scrollAddition > maxTop) {\n allowScroll = false;\n }\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n\n let scrollDiff;\n if (allowScroll) {\n if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n // To Bottom\n scrollDiff = (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition) - (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = (sortingElOffsetTop + touchesDiff) - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n\n $sortingItems.each((index, el) => {\n const $currentEl = $(el);\n if ($currentEl[0] === $sortingEl[0]) return;\n const currentElOffset = $currentEl[0].offsetTop;\n const currentElHeight = $currentEl.height();\n const sortingElOffset = sortingElOffsetLocal + translate;\n\n if ((sortingElOffset >= currentElOffset - (currentElHeight / 2)) && $sortingEl.index() < $currentEl.index()) {\n $currentEl.transform(`translate3d(0, ${-sortingElHeight}px,0)`);\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if ((sortingElOffset <= currentElOffset + (currentElHeight / 2)) && $sortingEl.index() > $currentEl.index()) {\n $currentEl.transform(`translate3d(0, ${sortingElHeight}px,0)`);\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n } else {\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n if (isTouched && !isMoved) {\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n if (wasTapHold) {\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n\n let indexTo;\n if ($insertAfterEl) indexTo = $insertAfterEl.index();\n else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n\n let moveElements = $sortableContainer.dataset().sortableMoveElements;\n if (typeof moveElements === 'undefined') {\n moveElements = app.params.sortable.moveElements;\n }\n\n if (moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n\n if (($insertAfterEl || $insertBeforeEl)\n && $sortableContainer.hasClass('virtual-list')\n ) {\n indexFrom = $sortingEl[0].f7VirtualListIndex;\n if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');\n if ($insertBeforeEl) {\n indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n } else {\n indexTo = $insertAfterEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');\n }\n if (indexTo !== null) indexTo = parseInt(indexTo, 10);\n else indexTo = undefined;\n\n const virtualList = $sortableContainer[0].f7VirtualList;\n\n if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n if (indexTo) indexTo = parseInt(indexTo, 10);\n if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n }\n if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n $sortingEl.trigger('sortable:sort', { from: indexFrom, to: indexTo });\n app.emit('sortableSort', $sortingEl[0], { from: indexFrom, to: indexTo, el: $sortingEl[0] }, $sortableContainer[0]);\n }\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n\n const activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n\n $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n\n $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n handleTouchStart(pointerEvent, true);\n });\n },\n enable(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n },\n};\nexport default {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n sortable: {\n init: Sortable.init.bind(app),\n enable: Sortable.enable.bind(app),\n disable: Sortable.disable.bind(app),\n toggle: Sortable.toggle.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n if (!app.params.sortable) return;\n app.sortable.init();\n },\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data = {}) {\n const app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data = {}) {\n const app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data = {}) {\n const app = this;\n app.sortable.toggle(data.sortable);\n },\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst Swipeout = {\n init() {\n const app = this;\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let $swipeoutEl;\n let $swipeoutContent;\n let $actionsRight;\n let $actionsLeft;\n let actionsLeftWidth;\n let actionsRightWidth;\n let translate;\n let opened;\n let openedActionsSide;\n let $leftButtons;\n let $rightButtons;\n let direction;\n let $overswipeLeftButton;\n let $overswipeRightButton;\n let overswipeLeft;\n let overswipeRight;\n\n function handleTouchStart(e) {\n if (!Swipeout.allow) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = (new Date()).getTime();\n $swipeoutEl = $(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n\n if (!isMoved) {\n if ($('.list.sortable-opened').length > 0) return;\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n\n if (opened) {\n if (openedActionsSide === 'right') translate -= actionsRightWidth;\n else translate += actionsLeftWidth;\n }\n\n if (\n (translate > 0 && $actionsLeft.length === 0)\n || (translate < 0 && $actionsRight.length === 0)\n ) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n\n if (translate < 0) direction = 'to-left';\n else if (translate > 0) direction = 'to-right';\n else if (!direction) direction = 'to-left';\n\n let buttonOffset;\n let progress;\n\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n buttonTranslate = -actionsRightWidth - ((-buttonTranslate - actionsRightWidth) ** 0.8);\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n $buttonEl.css({ left: `${overswipeRight ? -buttonOffset : 0}px` });\n if (overswipeRight) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform(`translate3d(${buttonTranslate - (buttonOffset * (1 + Math.max(progress, -1)))}px,0,0)`);\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsLeftWidth;\n if (buttonTranslate > actionsLeftWidth) {\n buttonTranslate = actionsLeftWidth + ((buttonTranslate - actionsLeftWidth) ** 0.8);\n translate = buttonTranslate;\n if ($overswipeLeftButton.length > 0) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate = 0;\n progress = 0;\n }\n $leftButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n $buttonEl.css({ left: `${overswipeLeft ? buttonOffset : 0}px` });\n if (overswipeLeft) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform(`translate3d(${buttonTranslate + (buttonOffset * (1 - Math.min(progress, 1)))}px,0,0)`);\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n isTouched = false;\n isMoved = false;\n const timeDiff = (new Date()).getTime() - touchStartTime;\n const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n let action;\n let $buttons;\n let i;\n\n if (\n (\n timeDiff < 300\n && (\n (touchesDiff < -10 && direction === 'to-left')\n || (touchesDiff > 10 && direction === 'to-right')\n )\n )\n || (\n timeDiff >= 300\n && (Math.abs(translate) > actionsWidth / 2)\n )\n ) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) action = 'close';\n if (Math.abs(translate) === actionsWidth) action = 'open';\n }\n\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n\n let buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n });\n }\n $swipeoutContent.transitionEnd(() => {\n if ((opened && action === 'open') || (!opened && action === 'close')) return;\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n\n const passiveListener = app.support.passiveListener ? { passive: true } : false;\n\n app.on('touchstart', (e) => {\n if (Swipeout.el) {\n const $targetEl = $(e.target);\n if (!(\n $(Swipeout.el).is($targetEl[0])\n || $targetEl.parents('.swipeout').is(Swipeout.el)\n || $targetEl.hasClass('modal-in')\n || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0\n || $targetEl.hasClass('actions-modal')\n || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0\n )) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open(...args) {\n const app = this;\n let [el, side, callback] = args;\n if (typeof args[1] === 'function') {\n [el, callback, side] = args;\n }\n const $el = $(el).eq(0);\n\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) side = 'right';\n else side = 'left';\n }\n const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n const $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) return;\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each((buttonIndex, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(() => {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) callback.call($el[0]);\n });\n Utils.nextFrame(() => {\n $buttons.transform(`translate3d(${translate}px,0,0)`);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n });\n Swipeout.el = $el[0];\n },\n close(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout-opened')) return;\n const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n const $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n Swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n\n let closeTimeout;\n function onSwipeoutClose() {\n Swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) return;\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) callback.call($el[0]);\n if (closeTimeout) clearTimeout(closeTimeout);\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n\n $buttons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n $buttonEl.css({ left: '0px' }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n },\n delete(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({ height: `${$el.outerHeight()}px` });\n $el.transitionEnd(() => {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) callback.call($el[0]);\n if ($el.parents('.virtual-list').length > 0) {\n const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n const virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n // $el[0]._clientLeft = $el[0].clientLeft;\n Utils.nextFrame(() => {\n $el\n .addClass('swipeout-deleting swipeout-transitioning')\n .css({ height: '0px' })\n .find('.swipeout-content')\n .transform('translate3d(-100%,0,0)');\n });\n },\n};\nexport default {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n swipeout: {\n init: Swipeout.init.bind(app),\n open: Swipeout.open.bind(app),\n close: Swipeout.close.bind(app),\n delete: Swipeout.delete.bind(app),\n },\n });\n Object.defineProperty(app.swipeout, 'el', {\n enumerable: true,\n configurable: true,\n get: () => Swipeout.el,\n set(el) {\n Swipeout.el = el;\n },\n });\n Object.defineProperty(app.swipeout, 'allow', {\n enumerable: true,\n configurable: true,\n get: () => Swipeout.allow,\n set(allow) {\n Swipeout.allow = allow;\n },\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data = {}) {\n const app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data = {}) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n const { confirm, confirmTitle } = data;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, () => {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n },\n },\n on: {\n init() {\n const app = this;\n if (!app.params.swipeout) return;\n app.swipeout.init();\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Accordion = {\n toggleClicked($clickedEl) {\n const app = this;\n let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n\n const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n if ($accordionContent.length) {\n if ($accordionContent.parents($accordionItemEl).length) return;\n }\n\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;\n app.accordion.toggle($accordionItemEl);\n },\n open(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeopen', { prevent }, prevent);\n app.emit('accordionBeforeOpen', $el[0], prevent);\n if (prevented) return;\n const $list = $el.parents('.accordion-list').eq(0);\n let $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n if ($contentEl.length === 0) return;\n const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n Utils.nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeclose', { prevent }, prevent);\n app.emit('accordionBeforeClose', $el[0], prevent);\n if (prevented) return;\n let $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n // Close\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n Utils.nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n Utils.nextFrame(() => {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose', $el[0]);\n });\n },\n toggle(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);\n else app.accordion.open(el);\n },\n};\n\nexport default {\n name: 'accordion',\n create() {\n const app = this;\n Utils.extend(app, {\n accordion: {\n open: Accordion.open.bind(app),\n close: Accordion.close.bind(app),\n toggle: Accordion.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n const app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Device from '../../utils/device';\n\nclass VirtualList extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const vl = this;\n\n let defaultHeight;\n if (app.theme === 'md') {\n defaultHeight = 48;\n } else if (app.theme === 'ios') {\n defaultHeight = 44;\n } else if (app.theme === 'aurora') {\n defaultHeight = 38;\n }\n\n const defaults = {\n cols: 1,\n height: defaultHeight,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n itemTemplate: undefined,\n ul: null,\n createUl: true,\n scrollableParentEl: undefined,\n renderItem(item) {\n return `\n \n \n \n `.trim();\n },\n on: {},\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n\n vl.params = Utils.extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = defaultHeight;\n }\n\n vl.$el = $(params.el);\n vl.el = vl.$el[0];\n\n if (vl.$el.length === 0) return undefined;\n vl.$el[0].f7VirtualList = vl;\n\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.itemTemplate) {\n if (typeof vl.params.itemTemplate === 'string') vl.renderItem = app.t7.compile(vl.params.itemTemplate);\n else if (typeof vl.params.itemTemplate === 'function') vl.renderItem = vl.params.itemTemplate;\n } else if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n\n vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;\n if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n vl.$scrollableParentEl = vl.$pageContentEl;\n }\n vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (Device.ios && Device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append \n const ul = vl.params.ul;\n vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n if (vl.$ul.length === 0 && vl.params.createUl) {\n vl.$el.append('');\n vl.$ul = vl.$el.children('ul');\n }\n vl.ul = vl.$ul[0];\n\n let $itemsWrapEl;\n if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;\n else $itemsWrapEl = vl.$ul;\n\n Utils.extend(vl, {\n $itemsWrapEl,\n itemsWrapEl: $itemsWrapEl[0],\n // DOM cached items\n domCache: {},\n displayDomCache: {},\n // Temporary DOM Element\n tempDomElement: document.createElement('ul'),\n // Last repain position\n lastRepaintY: null,\n // Fragment\n fragment: document.createDocumentFragment(),\n // Props\n pageHeight: undefined,\n rowsPerScreen: undefined,\n rowsBefore: undefined,\n rowsAfter: undefined,\n rowsToRender: undefined,\n maxBufferHeight: 0,\n listHeight: undefined,\n dynamicHeight: typeof vl.params.height === 'function',\n });\n\n // Install Modules\n vl.useModules();\n\n // Attach events\n const handleScrollBound = vl.handleScroll.bind(vl);\n const handleResizeBound = vl.handleResize.bind(vl);\n let $pageEl;\n let $tabEl;\n let $panelEl;\n let $popupEl;\n vl.attachEvents = function attachEvents() {\n $pageEl = vl.$el.parents('.page').eq(0);\n $tabEl = vl.$el.parents('.tab').filter((tabElIndex, tabEl) => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, .tabs-swipeable-wrap').length === 0;\n }).eq(0);\n $panelEl = vl.$el.parents('.panel').eq(0);\n $popupEl = vl.$el.parents('.popup').eq(0);\n\n vl.$scrollableParentEl.on('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);\n app.on('resize', handleResizeBound);\n };\n vl.detachEvents = function attachEvents() {\n vl.$scrollableParentEl.off('scroll', handleScrollBound);\n if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);\n if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);\n if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);\n if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);\n app.off('resize', handleResizeBound);\n };\n // Init\n vl.init();\n\n return vl;\n }\n\n setListSize() {\n const vl = this;\n const items = vl.filteredItems || vl.items;\n vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n if (vl.dynamicHeight) {\n vl.listHeight = 0;\n vl.heights = [];\n for (let i = 0; i < items.length; i += 1) {\n const itemHeight = vl.params.height(items[i]);\n vl.listHeight += itemHeight;\n vl.heights.push(itemHeight);\n }\n } else {\n vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n vl.rowsToRender = (vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter);\n vl.maxBufferHeight = (vl.rowsBefore / 2) * vl.params.height;\n }\n\n if (vl.updatableScroll || vl.params.setListHeight) {\n vl.$itemsWrapEl.css({ height: `${vl.listHeight}px` });\n }\n }\n\n render(force, forceScrollTop) {\n const vl = this;\n if (force) vl.lastRepaintY = null;\n\n let scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);\n\n if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || (!vl.updatableScroll && (vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight))) {\n vl.lastRepaintY = scrollTop;\n } else {\n return;\n }\n\n const items = vl.filteredItems || vl.items;\n let fromIndex;\n let toIndex;\n let heightBeforeFirstItem = 0;\n let heightBeforeLastItem = 0;\n if (vl.dynamicHeight) {\n let itemTop = 0;\n let itemHeight;\n vl.maxBufferHeight = vl.pageHeight;\n\n for (let j = 0; j < vl.heights.length; j += 1) {\n itemHeight = vl.heights[j];\n if (typeof fromIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop - (vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize)) fromIndex = j;\n else heightBeforeFirstItem += itemHeight;\n }\n\n if (typeof toIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop + (vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) || j === vl.heights.length - 1) toIndex = j + 1;\n heightBeforeLastItem += itemHeight;\n }\n itemTop += itemHeight;\n }\n toIndex = Math.min(toIndex, items.length);\n } else {\n fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n toIndex = Math.min(fromIndex + (vl.rowsToRender * vl.params.cols), items.length);\n }\n\n let topPosition;\n const renderExternalItems = [];\n vl.reachEnd = false;\n let i;\n for (i = fromIndex; i < toIndex; i += 1) {\n let itemEl;\n // Define real item index\n const index = vl.items.indexOf(items[i]);\n\n if (i === fromIndex) vl.currentFromIndex = index;\n if (i === toIndex - 1) vl.currentToIndex = index;\n if (vl.filteredItems) {\n if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n // Find items\n if (vl.params.renderExternal) {\n renderExternalItems.push(items[i]);\n } else if (vl.domCache[index]) {\n itemEl = vl.domCache[index];\n itemEl.f7VirtualListIndex = index;\n } else {\n if (vl.renderItem) {\n vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n } else {\n vl.tempDomElement.innerHTML = items[i].toString().trim();\n }\n itemEl = vl.tempDomElement.childNodes[0];\n if (vl.params.cache) vl.domCache[index] = itemEl;\n itemEl.f7VirtualListIndex = index;\n }\n\n // Set item top position\n if (i === fromIndex) {\n if (vl.dynamicHeight) {\n topPosition = heightBeforeFirstItem;\n } else {\n topPosition = ((i * vl.params.height) / vl.params.cols);\n }\n }\n if (!vl.params.renderExternal) {\n itemEl.style.top = `${topPosition}px`;\n\n // Before item insert\n vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n // Append item to fragment\n vl.fragment.appendChild(itemEl);\n }\n }\n\n // Update list height with not updatable scroll\n if (!vl.updatableScroll) {\n if (vl.dynamicHeight) {\n vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n } else {\n vl.itemsWrapEl.style.height = `${(i * vl.params.height) / vl.params.cols}px`;\n }\n }\n\n // Update list html\n if (vl.params.renderExternal) {\n if (items && items.length === 0) {\n vl.reachEnd = true;\n }\n } else {\n vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n vl.itemsWrapEl.innerHTML = '';\n\n vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n\n if (items && items.length === 0) {\n vl.reachEnd = true;\n if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n } else {\n vl.itemsWrapEl.appendChild(vl.fragment);\n }\n\n vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n }\n\n if (typeof forceScrollTop !== 'undefined' && force) {\n vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n }\n if (vl.params.renderExternal) {\n vl.params.renderExternal(vl, {\n fromIndex,\n toIndex,\n listHeight: vl.listHeight,\n topPosition,\n items: renderExternalItems,\n });\n }\n }\n\n // Filter\n filterItems(indexes, resetScrollTop = true) {\n const vl = this;\n vl.filteredItems = [];\n for (let i = 0; i < indexes.length; i += 1) {\n vl.filteredItems.push(vl.items[indexes[i]]);\n }\n if (resetScrollTop) {\n vl.$scrollableParentEl[0].scrollTop = 0;\n }\n vl.update();\n }\n\n resetFilter() {\n const vl = this;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n } else {\n vl.filteredItems = null;\n delete vl.filteredItems;\n }\n vl.update();\n }\n\n scrollToItem(index) {\n const vl = this;\n if (index > vl.items.length) return false;\n let itemTop = 0;\n if (vl.dynamicHeight) {\n for (let i = 0; i < index; i += 1) {\n itemTop += vl.heights[i];\n }\n } else {\n itemTop = index * vl.params.height;\n }\n const listTop = vl.$el[0].offsetTop;\n vl.render(true, (listTop + itemTop) - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n return true;\n }\n\n handleScroll() {\n const vl = this;\n vl.render();\n }\n\n // Handle resize event\n isVisible() {\n const vl = this;\n return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n }\n\n handleResize() {\n const vl = this;\n if (vl.isVisible()) {\n vl.setListSize();\n vl.render(true);\n }\n }\n\n // Append\n appendItems(items) {\n const vl = this;\n for (let i = 0; i < items.length; i += 1) {\n vl.items.push(items[i]);\n }\n vl.update();\n }\n\n appendItem(item) {\n const vl = this;\n vl.appendItems([item]);\n }\n\n // Replace\n replaceAllItems(items) {\n const vl = this;\n vl.items = items;\n delete vl.filteredItems;\n vl.domCache = {};\n vl.update();\n }\n\n replaceItem(index, item) {\n const vl = this;\n vl.items[index] = item;\n if (vl.params.cache) delete vl.domCache[index];\n vl.update();\n }\n\n // Prepend\n prependItems(items) {\n const vl = this;\n for (let i = items.length - 1; i >= 0; i -= 1) {\n vl.items.unshift(items[i]);\n }\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n prependItem(item) {\n const vl = this;\n vl.prependItems([item]);\n }\n\n // Move\n moveItem(from, to) {\n const vl = this;\n const fromIndex = from;\n let toIndex = to;\n if (fromIndex === toIndex) return;\n // remove item from array\n const item = vl.items.splice(fromIndex, 1)[0];\n if (toIndex >= vl.items.length) {\n // Add item to the end\n vl.items.push(item);\n toIndex = vl.items.length - 1;\n } else {\n // Add item to new index\n vl.items.splice(toIndex, 0, item);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n const indexShift = fromIndex < toIndex ? -1 : 1;\n if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];\n if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Insert before\n insertItemBefore(index, item) {\n const vl = this;\n if (index === 0) {\n vl.prependItem(item);\n return;\n }\n if (index >= vl.items.length) {\n vl.appendItem(item);\n return;\n }\n vl.items.splice(index, 0, item);\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex >= index) {\n newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n }\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Delete\n deleteItems(indexes) {\n const vl = this;\n let prevIndex;\n let indexShift = 0;\n for (let i = 0; i < indexes.length; i += 1) {\n let index = indexes[i];\n if (typeof prevIndex !== 'undefined') {\n if (index > prevIndex) {\n indexShift = -i;\n }\n }\n index += indexShift;\n prevIndex = indexes[i];\n // Delete item\n const deletedItem = vl.items.splice(index, 1)[0];\n\n // Delete from filtered\n if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex === index) {\n delete vl.domCache[index];\n } else if (parseInt(cached, 10) > index) {\n newCache[cachedIndex - 1] = vl.domCache[cached];\n } else {\n newCache[cachedIndex] = vl.domCache[cached];\n }\n });\n vl.domCache = newCache;\n }\n }\n vl.update();\n }\n\n deleteAllItems() {\n const vl = this;\n vl.items = [];\n delete vl.filteredItems;\n if (vl.params.cache) vl.domCache = {};\n vl.update();\n }\n\n deleteItem(index) {\n const vl = this;\n vl.deleteItems([index]);\n }\n\n // Clear cache\n clearCache() {\n const vl = this;\n vl.domCache = {};\n }\n\n // Update Virtual List\n update(deleteCache) {\n const vl = this;\n if (deleteCache && vl.params.cache) {\n vl.domCache = {};\n }\n vl.setListSize();\n vl.render(true);\n }\n\n init() {\n const vl = this;\n vl.attachEvents();\n vl.setListSize();\n vl.render();\n }\n\n destroy() {\n let vl = this;\n vl.detachEvents();\n vl.$el[0].f7VirtualList = null;\n delete vl.$el[0].f7VirtualList;\n Utils.deleteProps(vl);\n vl = null;\n }\n}\n\nexport default VirtualList;\n","import VirtualList from './virtual-list-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'virtualList',\n static: {\n VirtualList,\n },\n create() {\n const app = this;\n app.virtualList = ConstructorMethods({\n defaultSelector: '.virtual-list',\n constructor: VirtualList,\n app,\n domProp: 'f7VirtualList',\n });\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass ListIndex extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const index = this;\n\n const defaults = {\n el: null, // where to render indexes\n listEl: null, // list el to generate indexes\n indexes: 'auto', // or array of indexes\n iosItemHeight: 14,\n mdItemHeight: 14,\n auroraItemHeight: 14,\n scrollList: true,\n label: false,\n // eslint-disable-next-line\n renderItem(itemContent, itemIndex) {\n return `\n ${itemContent} \n `.trim();\n },\n renderSkipPlaceholder() {\n return ' ';\n },\n on: {},\n };\n\n // Extend defaults with modules params\n index.useModulesParams(defaults);\n\n index.params = Utils.extend(defaults, params);\n\n let $el;\n let $listEl;\n let $pageContentEl;\n let $ul;\n\n if (index.params.el) {\n $el = $(index.params.el);\n } else {\n return index;\n }\n\n if ($el[0].f7ListIndex) {\n return $el[0].f7ListIndex;\n }\n\n $ul = $el.find('ul');\n if ($ul.length === 0) {\n $ul = $('');\n $el.append($ul);\n }\n\n if (index.params.listEl) {\n $listEl = $(index.params.listEl);\n }\n\n if (index.params.indexes === 'auto' && !$listEl) {\n return index;\n }\n\n if ($listEl) {\n $pageContentEl = $listEl.parents('.page-content').eq(0);\n } else {\n $pageContentEl = $el.siblings('.page-content').eq(0);\n if ($pageContentEl.length === 0) {\n $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n }\n }\n\n $el[0].f7ListIndex = index;\n\n Utils.extend(index, {\n app,\n $el,\n el: $el && $el[0],\n $ul,\n ul: $ul && $ul[0],\n $listEl,\n listEl: $listEl && $listEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl && $pageContentEl[0],\n indexes: params.indexes,\n height: 0,\n skipRate: 0,\n });\n\n // Install Modules\n index.useModules();\n\n // Attach events\n function handleResize() {\n const height = { index };\n index.calcSize();\n if (height !== index.height) {\n index.render();\n }\n }\n\n function handleClick(e) {\n const $clickedLi = $(e.target).closest('li');\n if (!$clickedLi.length) return;\n\n let itemIndex = $clickedLi.index();\n if (index.skipRate > 0) {\n const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n itemIndex = Math.round((index.indexes.length - 1) * percentage);\n }\n const itemContent = index.indexes[itemIndex];\n\n index.$el.trigger('listindex:click', { content: itemContent, index: itemIndex });\n index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n index.$el.trigger('listindex:select', { content: itemContent, index: itemIndex });\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let topPoint;\n let bottomPoint;\n let $labelEl;\n let previousIndex = null;\n function handleTouchStart(e) {\n const $children = $ul.children();\n if (!$children.length) return;\n topPoint = $children[0].getBoundingClientRect().top;\n bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isMoved = false;\n previousIndex = null;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n if (!isMoved && index.params.label) {\n $labelEl = $(' ');\n $el.append($labelEl);\n }\n isMoved = true;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n\n let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n const itemContent = index.indexes[itemIndex];\n\n\n const ulHeight = bottomPoint - topPoint;\n const bubbleBottom = ((index.height - ulHeight) / 2) + ((1 - percentage) * ulHeight);\n\n if (itemIndex !== previousIndex) {\n if (index.params.label) {\n $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n }\n\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n\n previousIndex = itemIndex;\n\n index.$el.trigger('listindex:select');\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n isMoved = false;\n if (index.params.label) {\n if ($labelEl) $labelEl.remove();\n $labelEl = undefined;\n }\n }\n const passiveListener = app.support.passiveListener ? { passive: true } : false;\n index.attachEvents = function attachEvents() {\n $el.parents('.tab').on('tab:show', handleResize);\n $el.parents('.page').on('page:reinit', handleResize);\n $el.parents('.panel').on('panel:open', handleResize);\n $el\n .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n .on('modal:open', handleResize);\n app.on('resize', handleResize);\n\n $el.on('click', handleClick);\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n index.detachEvents = function attachEvents() {\n $el.parents('.tab').off('tab:show', handleResize);\n $el.parents('.page').off('page:reinit', handleResize);\n $el.parents('.panel').off('panel:open', handleResize);\n $el\n .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n .off('modal:open', handleResize);\n app.off('resize', handleResize);\n\n $el.off('click', handleClick);\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n // Init\n index.init();\n\n return index;\n }\n // eslint-disable-next-line\n scrollListToIndex(itemContent, itemIndex) {\n const index = this;\n const { $listEl, $pageContentEl, app } = index;\n if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n\n let $scrollToEl;\n $listEl.find('.list-group-title, .item-divider').each((elIndex, el) => {\n if ($scrollToEl) return;\n const $el = $(el);\n if ($el.text() === itemContent) {\n $scrollToEl = $el;\n }\n });\n if (!$scrollToEl || $scrollToEl.length === 0) return index;\n\n const parentTop = $scrollToEl.parent().offset().top;\n let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const scrollTop = $pageContentEl[0].scrollTop;\n const scrollToElTop = $scrollToEl.offset().top;\n if ($pageContentEl.parents('.page-with-navbar-large').length) {\n const navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));\n const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n if ($titleLargeEl.length) {\n paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n }\n }\n\n if (parentTop <= paddingTop) {\n $pageContentEl.scrollTop((parentTop + scrollTop) - paddingTop);\n } else {\n $pageContentEl.scrollTop((scrollToElTop + scrollTop) - paddingTop);\n }\n return index;\n }\n\n renderSkipPlaceholder() {\n const index = this;\n return index.params.renderSkipPlaceholder.call(index);\n }\n\n renderItem(itemContent, itemIndex) {\n const index = this;\n return index.params.renderItem.call(index, itemContent, itemIndex);\n }\n\n render() {\n const index = this;\n const { $ul, indexes, skipRate } = index;\n let wasSkipped;\n\n const html = indexes.map((itemContent, itemIndex) => {\n if (itemIndex % skipRate !== 0 && skipRate > 0) {\n wasSkipped = true;\n return '';\n }\n let itemHtml = index.renderItem(itemContent, itemIndex);\n if (wasSkipped) {\n itemHtml = index.renderSkipPlaceholder() + itemHtml;\n }\n wasSkipped = false;\n return itemHtml;\n }).join('');\n\n $ul.html(html);\n\n return index;\n }\n\n calcSize() {\n const index = this;\n const { app, params, el, indexes } = index;\n const height = el.offsetHeight;\n const itemHeight = params[`${app.theme}ItemHeight`];\n const maxItems = Math.floor(height / itemHeight);\n const items = indexes.length;\n let skipRate = 0;\n if (items > maxItems) {\n skipRate = Math.ceil(((items * 2) - 1) / maxItems);\n }\n\n index.height = height;\n index.skipRate = skipRate;\n\n return index;\n }\n\n calcIndexes() {\n const index = this;\n if (index.params.indexes === 'auto') {\n index.indexes = [];\n\n index.$listEl.find('.list-group-title, .item-divider').each((elIndex, el) => {\n const elContent = $(el).text();\n if (index.indexes.indexOf(elContent) < 0) {\n index.indexes.push(elContent);\n }\n });\n } else {\n index.indexes = index.params.indexes;\n }\n return index;\n }\n\n update() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n\n return index;\n }\n\n init() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n index.attachEvents();\n }\n\n destroy() {\n let index = this;\n index.$el.trigger('listindex:beforedestroy', index);\n index.emit('local::beforeDestroy listIndexBeforeDestroy');\n index.detachEvents();\n if (index.$el[0]) {\n index.$el[0].f7ListIndex = null;\n delete index.$el[0].f7ListIndex;\n }\n Utils.deleteProps(index);\n index = null;\n }\n}\n\nexport default ListIndex;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport ListIndex from './list-index-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'listIndex',\n static: {\n ListIndex,\n },\n create() {\n const app = this;\n app.listIndex = ConstructorMethods({\n defaultSelector: '.list-index',\n constructor: ListIndex,\n app,\n domProp: 'f7ListIndex',\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.list-index-init').each((index, listIndexEl) => {\n const params = Utils.extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.list-index-init').each((index, listIndexEl) => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.list-index-init').each((index, listIndexEl) => {\n const params = Utils.extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.list-index-init').each((index, listIndexEl) => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n },\n vnode: {\n 'list-index-init': {\n insert(vnode) {\n const app = this;\n const listIndexEl = vnode.elm;\n const params = Utils.extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n },\n destroy(vnode) {\n const listIndexEl = vnode.elm;\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Tab = {\n show(...args) {\n const app = this;\n\n let tabEl;\n let tabLinkEl;\n let animate;\n let tabRoute;\n let animatedInit;\n if (args.length === 1 && args[0] && args[0].constructor === Object) {\n tabEl = args[0].tabEl;\n tabLinkEl = args[0].tabLinkEl;\n animate = args[0].animate;\n tabRoute = args[0].tabRoute;\n animatedInit = args[0].animatedInit;\n } else {\n [tabEl, tabLinkEl, animate, tabRoute] = args;\n if (typeof args[1] === 'boolean') {\n [tabEl, animate, tabLinkEl, tabRoute] = args;\n if (args.length > 2 && tabLinkEl.constructor === Object) {\n [tabEl, animate, tabRoute, tabLinkEl] = args;\n }\n }\n }\n if (typeof animate === 'undefined') animate = true;\n\n const $newTabEl = $(tabEl);\n if (tabRoute && $newTabEl[0]) {\n $newTabEl[0].f7TabRoute = tabRoute;\n }\n\n if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n };\n }\n\n let $tabLinkEl;\n if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n\n const $tabsEl = $newTabEl.parent('.tabs');\n if ($tabsEl.length === 0) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n };\n }\n\n // Release swipeouts in hidden tabs\n if (app.swipeout) app.swipeout.allowOpen = true;\n\n // Animated tabs\n const tabsChangedCallbacks = [];\n\n function onTabsChanged(callback) {\n tabsChangedCallbacks.push(callback);\n }\n function tabsChanged() {\n tabsChangedCallbacks.forEach((callback) => {\n callback();\n });\n }\n\n let animated = false;\n\n if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n\n const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n if (animate && transitionDuration) {\n $tabsEl.transitionEnd(tabsChanged);\n animated = true;\n }\n\n const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n }\n\n // Swipeable tabs\n let swiper;\n if ($tabsEl.parent().hasClass('tabs-swipeable-wrap') && app.swiper) {\n swiper = $tabsEl.parent()[0].swiper;\n if (swiper && swiper.activeIndex !== $newTabEl.index()) {\n animated = true;\n swiper\n .once('slideChangeTransitionEnd', () => {\n tabsChanged();\n })\n .slideTo($newTabEl.index(), animate ? undefined : 0);\n } else if (swiper && swiper.animating) {\n animated = true;\n swiper\n .once('slideChangeTransitionEnd', () => {\n tabsChanged();\n });\n }\n }\n\n // Remove active class from old tabs\n const $oldTabEl = $tabsEl.children('.tab-active');\n $oldTabEl.removeClass('tab-active');\n if (!animatedInit && (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute))) {\n if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n $oldTabEl.children('.page').each((pageIndex, pageEl) => {\n $(pageEl).trigger('page:tabhide');\n app.emit('pageTabHide', pageEl);\n });\n }\n $oldTabEl.trigger('tab:hide');\n app.emit('tabHide', $oldTabEl[0]);\n }\n\n // Trigger 'show' event on new tab\n $newTabEl.addClass('tab-active');\n if (!animatedInit && (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute))) {\n if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n $newTabEl.children('.page').each((pageIndex, pageEl) => {\n $(pageEl).trigger('page:tabshow');\n app.emit('pageTabShow', pageEl);\n });\n }\n $newTabEl.trigger('tab:show');\n app.emit('tabShow', $newTabEl[0]);\n }\n\n // Find related link for new tab\n if (!$tabLinkEl) {\n // Search by id\n if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);\n else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n // Search by data-tab\n if (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0)) {\n $('[data-tab]').each((index, el) => {\n if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n });\n }\n if (tabRoute && (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0))) {\n $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $tabLinkEl = $tabLinkEl.filter((index, tabLinkElement) => {\n return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n });\n if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n const $pageEl = $newTabEl.parents('.page');\n const $navbarEl = $(app.navbar.getElByPage($pageEl));\n $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n }\n }\n if ($tabLinkEl.length > 0) {\n // Find related link for old tab\n let $oldTabLinkEl;\n if ($oldTabEl && $oldTabEl.length > 0) {\n // Search by id\n const oldTabId = $oldTabEl.attr('id');\n if (oldTabId) {\n $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n // Search by data-route-tab-id\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n }\n }\n // Search by data-tab\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $('[data-tab]').each((index, tabLinkElement) => {\n if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n });\n }\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n } else if (tabRoute) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n\n if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $oldTabLinkEl = $oldTabLinkEl.filter((index, tabLinkElement) => {\n return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n });\n }\n\n if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n // Update links' classes\n if ($tabLinkEl && $tabLinkEl.length > 0) {\n $tabLinkEl.addClass('tab-link-active');\n // Material Highlight\n if (app.theme === 'md' && app.toolbar) {\n const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-labels');\n if ($tabbarEl.length > 0) {\n app.toolbar.setHighlight($tabbarEl);\n }\n }\n }\n }\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n $oldTabEl,\n oldTabEl: $oldTabEl[0],\n onTabsChanged,\n animated,\n };\n },\n};\nexport default {\n name: 'tabs',\n create() {\n const app = this;\n Utils.extend(app, {\n tab: {\n show: Tab.show.bind(app),\n },\n });\n },\n on: {\n 'pageInit tabMounted': function onInit(pageOrTabEl) {\n const $el = $(pageOrTabEl.el || pageOrTabEl);\n const animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];\n if (!animatedTabEl) return;\n const app = this;\n app.tab.show({ tabEl: animatedTabEl, animatedInit: true, animate: false });\n },\n },\n clicks: {\n '.tab-link': function tabLinkClick($clickedEl, data = {}) {\n if (($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0) || $clickedEl.attr('data-tab')) {\n const app = this;\n app.tab.show({\n tabEl: data.tab || $clickedEl.attr('href'),\n tabLinkEl: $clickedEl,\n animate: data.animate,\n });\n }\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport swipePanel from './swipe-panel';\nimport resizablePanel from './resizable-panel';\n\nclass Panel extends Framework7Class {\n constructor(app, params = {}) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.panel,\n params\n );\n super(extendedParams, [app]);\n\n const panel = this;\n\n panel.params = extendedParams;\n panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.root;\n panel.containerEl = panel.$containerEl[0];\n\n let $el;\n if (panel.params.el) {\n $el = $(panel.params.el).eq(0);\n } else if (panel.params.content) {\n $el = $(panel.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n }\n\n if ($el.length === 0) return panel;\n if ($el[0].f7Panel) return $el[0].f7Panel;\n\n $el[0].f7Panel = panel;\n\n let { side, effect, resizable } = panel.params;\n if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n if (typeof effect === 'undefined') effect = $el.hasClass('panel-cover') ? 'cover' : 'reveal';\n if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n\n let $backdropEl;\n if (panel.params.backdrop && panel.params.backdropEl) {\n $backdropEl = $(panel.params.backdropEl);\n } else if (panel.params.backdrop) {\n $backdropEl = panel.$containerEl.children('.panel-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n panel.$containerEl.prepend($backdropEl);\n }\n }\n\n Utils.extend(panel, {\n app,\n side,\n effect,\n resizable,\n $el,\n el: $el[0],\n opened: false,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n });\n\n // Install Modules\n panel.useModules();\n\n // Init\n panel.init();\n\n return panel;\n }\n\n getViewEl() {\n const panel = this;\n let viewEl;\n if (panel.$containerEl.children('.views').length > 0) {\n viewEl = panel.$containerEl.children('.views')[0];\n } else {\n viewEl = panel.$containerEl.children('.view')[0];\n }\n return viewEl;\n }\n\n enableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = false;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n disableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = true;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n toggleVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n setVisibleBreakpoint(emitEvents = true) {\n const panel = this;\n const app = panel.app;\n if (!panel.visibleBreakpointResizeHandler) {\n panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n panel.setVisibleBreakpoint();\n };\n app.on('resize', panel.visibleBreakpointResizeHandler);\n }\n const { side, $el, params, visibleBreakpointDisabled } = panel;\n const breakpoint = params.visibleBreakpoint;\n const $viewEl = $(panel.getViewEl());\n const wasVisible = $el.hasClass('panel-in-breakpoint');\n\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {\n if (!wasVisible) {\n $('html').removeClass(`with-panel-${side}-reveal with-panel-${side}-cover with-panel`);\n $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n panel.onOpen(false);\n panel.onOpened();\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`,\n });\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n } else {\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`,\n });\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-breakpoint panel-in');\n panel.onClose();\n panel.onClosed();\n $viewEl.css({\n [`margin-${side}`]: '',\n });\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n }\n }\n\n enableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = false;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n disableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = true;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n toggleCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n setCollapsedBreakpoint(emitEvents) {\n const panel = this;\n const app = panel.app;\n if (!panel.collapsedBreakpointResizeHandler) {\n panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n panel.setCollapsedBreakpoint();\n };\n app.on('resize', panel.collapsedBreakpointResizeHandler);\n }\n const { side, $el, params, collapsedBreakpointDisabled } = panel;\n if ($el.hasClass('panel-in-breakpoint')) return;\n const breakpoint = params.collapsedBreakpoint;\n const wasVisible = $el.hasClass('panel-in-collapsed');\n\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {\n if (!wasVisible) {\n $('html').removeClass(`with-panel-${side}-reveal with-panel-${side}-cover with-panel`);\n $el.addClass('panel-in-collapsed').removeClass('panel-in');\n panel.collapsed = true;\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-collapsed panel-in');\n panel.collapsed = false;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n }\n\n enableResizable() {\n const panel = this;\n if (panel.resizableInitialized) {\n panel.resizable = true;\n panel.$el.addClass('panel-resizable');\n } else {\n resizablePanel(panel);\n }\n return panel;\n }\n\n disableResizable() {\n const panel = this;\n panel.resizable = false;\n panel.$el.removeClass('panel-resizable');\n return panel;\n }\n\n enableSwipe() {\n const panel = this;\n if (panel.swipeInitialized) {\n panel.swipeable = true;\n } else {\n swipePanel(panel);\n }\n return panel;\n }\n\n disableSwipe() {\n const panel = this;\n panel.swipeable = false;\n return panel;\n }\n\n onOpen(modifyHtmlClasses = true) {\n const panel = this;\n const app = panel.app;\n\n panel.opened = true;\n app.panel.allowOpen = false;\n\n panel.$el.trigger('panel:beforeopen');\n panel.emit('local::beforeOpen panelBeforeOpen', panel);\n\n if (modifyHtmlClasses) {\n $('html').addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n\n panel.$el.trigger('panel:open');\n panel.emit('local::open panelOpen', panel);\n }\n\n onOpened() {\n const panel = this;\n const app = panel.app;\n\n app.panel.allowOpen = true;\n\n panel.$el.trigger('panel:opened');\n panel.emit('local::opened panelOpened', panel);\n }\n\n onClose() {\n const panel = this;\n const app = panel.app;\n\n panel.opened = false;\n app.panel.allowOpen = false;\n\n panel.$el.trigger('panel:beforeclose');\n panel.emit('local::beforeClose panelBeforeClose', panel);\n\n $('html').addClass('with-panel-closing');\n $('html').removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n\n panel.$el.trigger('panel:close');\n panel.emit('local::close panelClose', panel);\n }\n\n onClosed() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n $('html').removeClass('with-panel-closing');\n panel.$el.removeClass('panel-out');\n if (panel.$backdropEl) {\n const otherPanel = app.panel.get('.panel-in');\n const shouldHideBackdrop = !otherPanel || (otherPanel && !otherPanel.$backdropEl);\n if (shouldHideBackdrop) {\n panel.$backdropEl.removeClass('panel-backdrop-in');\n }\n }\n panel.$el.trigger('panel:closed');\n panel.emit('local::closed panelClosed', panel);\n }\n\n toggle(animate = true) {\n const panel = this;\n const breakpoint = panel.params.visibleBreakpoint;\n const app = panel.app;\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n return panel.toggleVisibleBreakpoint();\n }\n if (panel.opened) panel.close(animate);\n else panel.open(animate);\n return panel;\n }\n\n insertToRoot() {\n const panel = this;\n const { $el, $backdropEl, $containerEl } = panel;\n const $panelParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n\n if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {\n const $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);\n const $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);\n\n if ($insertBeforeEl.length) {\n $el.insertBefore($insertBeforeEl);\n } else if ($insertAfterEl) {\n $el.insertBefore($insertAfterEl);\n } else {\n $containerEl.prepend($el);\n }\n\n if ($backdropEl\n && $backdropEl.length\n && (\n (\n !$backdropEl.parent().is($containerEl)\n && $backdropEl.nextAll('.panel').length === 0\n )\n || (\n $backdropEl.parent().is($containerEl)\n && $backdropEl.nextAll('.panel').length === 0\n )\n )\n ) {\n $backdropEl.insertBefore($el);\n }\n\n panel.once('panelClosed', () => {\n if (wasInDom) {\n $panelParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n }\n\n open(animate = true) {\n const panel = this;\n const app = panel.app;\n\n if (!app.panel.allowOpen) return false;\n\n const { effect, $el, $backdropEl, opened } = panel;\n\n if (!$el || $el.hasClass('panel-in')) {\n return panel;\n }\n\n panel.insertToRoot();\n\n // Ignore if opened\n if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n // Close if some panel is opened\n const otherOpenedPanel = app.panel.get('.panel-in');\n if (otherOpenedPanel && otherOpenedPanel !== panel) {\n otherOpenedPanel.close(animate);\n }\n\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $el.addClass('panel-in');\n\n if ($backdropEl) {\n $backdropEl.addClass('panel-backdrop-in');\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n\n if (panel.effect === 'cover') {\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n panel._clientLeft = $el[0].clientLeft;\n }\n\n // Transitionend\n const transitionEndTarget = effect === 'reveal' ? $el.nextAll('.view, .views').eq(0) : $el;\n\n function panelTransitionEnd() {\n transitionEndTarget.transitionEnd((e) => {\n if ($(e.target).is(transitionEndTarget)) {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else {\n panel.onOpened();\n }\n } else panelTransitionEnd();\n });\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n }\n panelTransitionEnd();\n $el\n .removeClass('panel-out not-animated')\n .addClass('panel-in');\n panel.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('not-animated');\n }\n $el.removeClass('panel-out').addClass('panel-in not-animated');\n panel.onOpen();\n panel.onOpened();\n }\n\n return true;\n }\n\n close(animate = true) {\n const panel = this;\n\n const { effect, $el, $backdropEl, opened } = panel;\n if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n if ($backdropEl) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n }\n\n const transitionEndTarget = effect === 'reveal' ? $el.nextAll('.view, .views').eq(0) : $el;\n\n function transitionEnd() {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else if ($el.hasClass('panel-in')) {\n panel.onOpened();\n }\n $('html').removeClass('with-panel-closing');\n }\n if (animate) {\n transitionEndTarget\n .transitionEnd(() => {\n transitionEnd();\n });\n $el\n .removeClass('panel-in')\n .addClass('panel-out');\n // Emit close\n panel.onClose();\n } else {\n $el\n .addClass('not-animated')\n .removeClass('panel-in')\n .addClass('panel-out');\n // Emit close\n panel.onClose();\n panel.onClosed();\n }\n\n return panel;\n }\n\n init() {\n const panel = this;\n // const app = panel.app;\n if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n panel.setVisibleBreakpoint();\n }\n if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n panel.setCollapsedBreakpoint();\n }\n if (panel.params.swipe) {\n panel.enableSwipe();\n }\n if (panel.resizable) {\n panel.enableResizable();\n }\n }\n\n destroy() {\n let panel = this;\n const app = panel.app;\n\n if (!panel.$el) {\n // Panel already destroyed\n return;\n }\n\n panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n panel.$el.trigger('panel:beforedestroy');\n\n if (panel.visibleBreakpointResizeHandler) {\n app.off('resize', panel.visibleBreakpointResizeHandler);\n }\n if (panel.collapsedBreakpointResizeHandler) {\n app.off('resize', panel.collapsedBreakpointResizeHandler);\n }\n if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n const $viewEl = $(panel.getViewEl());\n panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n $viewEl.css({\n [`margin-${panel.side}`]: '',\n });\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n\n panel.$el.trigger('panel:destroy');\n panel.emit('local::destroy panelDestroy', panel);\n if (panel.el) {\n panel.el.f7Panel = null;\n delete panel.el.f7Panel;\n }\n Utils.deleteProps(panel);\n\n panel = null;\n }\n}\n\nexport default Panel;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nfunction resizablePanel(panel) {\n const app = panel.app;\n if (panel.resizableInitialized) return;\n Utils.extend(panel, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el, $backdropEl, side, effect } = panel;\n if (!$el) return;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let panelWidth;\n\n let $viewEl;\n\n let panelMinWidth;\n let panelMaxWidth;\n let visibleByBreakpoint;\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return panel.resizable && $el.hasClass('panel-resizable');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n panelWidth = $el[0].offsetWidth;\n $el.transition(0);\n $el.addClass('panel-resizing');\n $htmlEl.css('cursor', 'col-resize');\n if (effect === 'reveal' || visibleByBreakpoint) {\n $viewEl = $(panel.getViewEl());\n }\n if (effect === 'reveal' && !visibleByBreakpoint) {\n $backdropEl.transition(0);\n $viewEl.transition(0);\n }\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = (pageX - touchesStart.x);\n\n let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n }\n newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n\n panel.resizableWidth = newPanelWidth;\n $el[0].style.width = `${newPanelWidth}px`;\n if (effect === 'reveal' && !visibleByBreakpoint) {\n if ($viewEl) {\n $viewEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n } else if (visibleByBreakpoint && $viewEl) {\n $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n }\n\n $el.trigger('panel:resize', newPanelWidth);\n panel.emit('local::resize panelResize', panel, newPanelWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n $el[0].style.width = '';\n if (effect === 'reveal' && !visibleByBreakpoint) {\n $viewEl.transform('');\n $backdropEl.transform('');\n }\n $el.removeClass('panel-resizing');\n Utils.nextFrame(() => {\n $el.transition('');\n if (effect === 'reveal') {\n $backdropEl.transition('');\n if ($viewEl) $viewEl.transition('');\n }\n });\n }\n\n function handleResize() {\n if (!panel.opened || !panel.resizableWidth) return;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n\n if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n }\n panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n }\n\n if (panel.$el.find('.panel-resize-handler').length === 0) {\n panel.$el.append('
');\n }\n panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n\n $el.addClass('panel-resizable');\n\n // Add Events\n const passive = Support.passiveListener ? { passive: true } : false;\n\n panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n panel.on('beforeOpen', handleResize);\n\n panel.once('panelDestroy', () => {\n $el.removeClass('panel-resizable');\n panel.$resizeHandlerEl.remove();\n panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n panel.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizablePanel;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nfunction swipePanel(panel) {\n const app = panel.app;\n if (panel.swipeInitialized) {\n return;\n }\n Utils.extend(panel, {\n swipeable: true,\n swipeInitialized: true,\n });\n const params = panel.params;\n const { $el, $backdropEl, side, effect } = panel;\n let otherPanel;\n\n let isTouched;\n let isGestureStarted;\n let isMoved;\n let isScrolling;\n let isInterrupted;\n const touchesStart = {};\n let touchStartTime;\n let touchesDiff;\n let translate;\n let backdropOpacity;\n let panelWidth;\n let direction;\n\n let $viewEl;\n\n let touchMoves = 0;\n function handleTouchStart(e) {\n if (!panel.swipeable || isGestureStarted) return;\n if (!app.panel.allowOpen || (!params.swipe && !params.swipeOnlyClose) || isTouched) return;\n if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n const otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n if (!panel.opened && otherPanelOpened) {\n return;\n }\n if (!params.swipeOnlyClose) {\n if (otherPanelOpened) return;\n }\n if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;\n if ($(e.target).closest('.range-slider, .tabs-swipeable-wrap, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (params.swipeOnlyClose && !panel.opened) {\n return;\n }\n if (params.swipeActiveArea && !panel.opened) {\n if (side === 'left') {\n if (touchesStart.x > params.swipeActiveArea) return;\n }\n if (side === 'right') {\n if (touchesStart.x < app.width - params.swipeActiveArea) return;\n }\n }\n touchMoves = 0;\n $viewEl = $(panel.getViewEl());\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n isInterrupted = false;\n\n touchStartTime = Utils.now();\n direction = undefined;\n }\n function handleTouchMove(e) {\n if (!isTouched || isGestureStarted || isInterrupted) return;\n touchMoves += 1;\n if (touchMoves < 2) return;\n if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n isTouched = false;\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!direction) {\n if (pageX > touchesStart.x) {\n direction = 'to-right';\n } else {\n direction = 'to-left';\n }\n\n if (params.swipeActiveArea > 0 && !panel.opened) {\n if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n }\n if ($el.hasClass('panel-in-breakpoint')) {\n isTouched = false;\n return;\n }\n\n if (\n (side === 'left'\n && (\n direction === 'to-left' && !$el.hasClass('panel-in')\n )\n )\n || (side === 'right'\n && (\n direction === 'to-right' && !$el.hasClass('panel-in')\n )\n )\n ) {\n isTouched = false;\n return;\n }\n }\n\n let threshold = panel.opened ? 0 : -params.swipeThreshold;\n if (side === 'right') threshold = -threshold;\n\n if (!isMoved) {\n if (!panel.opened) {\n panel.insertToRoot();\n $el.addClass('panel-in-swipe');\n $backdropEl.css('visibility', 'visible');\n $el.trigger('panel:swipeopen');\n panel.emit('local::swipeOpen panelSwipeOpen', panel);\n }\n panelWidth = $el[0].offsetWidth;\n if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n }\n $el.transition(0);\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = (pageX - touchesStart.x) + threshold;\n\n if (side === 'right') {\n if (effect === 'cover') {\n translate = touchesDiff + (panel.opened ? 0 : panelWidth);\n if (translate < 0) translate = 0;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n } else {\n translate = touchesDiff - (panel.opened ? panelWidth : 0);\n if (translate > 0) translate = 0;\n if (translate < -panelWidth) {\n translate = -panelWidth;\n }\n }\n } else {\n translate = touchesDiff + (panel.opened ? panelWidth : 0);\n if (translate < 0) translate = 0;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n }\n const noFollowProgress = Math.abs(translate / panelWidth);\n if (effect === 'reveal') {\n if (!params.swipeNoFollow) {\n $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n }\n\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n } else {\n if (side === 'left') translate -= panelWidth;\n if (!params.swipeNoFollow) {\n $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n\n $backdropEl.transition(0);\n backdropOpacity = 1 - Math.abs(translate / panelWidth);\n $backdropEl.css({ opacity: backdropOpacity });\n }\n\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n }\n\n if (params.swipeNoFollow) {\n const stateChanged = (panel.opened && noFollowProgress === 0) || (!panel.opened && noFollowProgress === 1);\n if (stateChanged) {\n isInterrupted = true;\n // eslint-disable-next-line\n handleTouchEnd(e);\n }\n }\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n const isGesture = e.type === 'gesturestart' || isGestureStarted;\n isTouched = false;\n isMoved = false;\n const timeDiff = (new Date()).getTime() - touchStartTime;\n let action;\n const edge = (translate === 0 || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n\n const threshold = params.swipeThreshold || 0;\n\n if (isGesture) {\n action = 'reset';\n } else if (!panel.opened) {\n if (Math.abs(touchesDiff) < threshold) {\n action = 'reset';\n } else if (effect === 'cover') {\n if (translate === 0) {\n action = 'swap'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'swap'; // open\n } else {\n action = 'reset'; // close\n }\n } else if (translate === 0) {\n action = 'reset';\n } else if (\n (timeDiff < 300 && Math.abs(translate) > 0)\n || (timeDiff >= 300 && (Math.abs(translate) >= panelWidth / 2))\n ) {\n action = 'swap';\n } else {\n action = 'reset';\n }\n } else if (effect === 'cover') {\n if (translate === 0) {\n action = 'reset'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'reset'; // open\n } else {\n action = 'swap'; // close\n }\n } else if (translate === -panelWidth) {\n action = 'reset';\n } else if (\n (timeDiff < 300 && Math.abs(translate) >= 0)\n || (timeDiff >= 300 && (Math.abs(translate) <= panelWidth / 2))\n ) {\n if (side === 'left' && translate === panelWidth) action = 'reset';\n else action = 'swap';\n } else {\n action = 'reset';\n }\n if (action === 'swap') {\n if (panel.opened) {\n panel.close(!edge);\n } else {\n panel.open(!edge);\n }\n }\n let removePanelInClass = true;\n if (action === 'reset') {\n if (!panel.opened) {\n if (edge) {\n // edge position\n $el.removeClass('panel-in-swipe');\n } else {\n removePanelInClass = false;\n const target = effect === 'reveal' ? $viewEl : $el;\n $('html').addClass('with-panel-closing');\n target.transitionEnd(() => {\n if ($el.hasClass('panel-in')) return;\n $el.removeClass('panel-in-swipe');\n $('html').removeClass('with-panel-closing');\n });\n }\n }\n }\n if (effect === 'reveal') {\n Utils.nextFrame(() => {\n $viewEl.transition('');\n $viewEl.transform('');\n });\n }\n if (removePanelInClass) {\n $el.removeClass('panel-in-swipe');\n }\n $el.transition('').transform('');\n $backdropEl.transform('').transition('').css({ opacity: '', visibility: '' });\n }\n function handleGestureStart(e) {\n isGestureStarted = true;\n handleTouchEnd(e);\n }\n function handleGestureEnd() {\n isGestureStarted = false;\n }\n\n // Add Events\n app.on('touchstart:passive', handleTouchStart);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('gesturestart', handleGestureStart);\n app.on('gestureend', handleGestureEnd);\n panel.on('panelDestroy', () => {\n app.off('touchstart:passive', handleTouchStart);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('gesturestart', handleGestureStart);\n app.off('gestureend', handleGestureEnd);\n });\n}\n\nexport default swipePanel;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Panel from './panel-class';\n\nexport default {\n name: 'panel',\n params: {\n panel: {\n opened: undefined, // default based on panel-in class\n side: undefined, // default based on panel class\n effect: undefined, // default based on panel class\n resizable: undefined, // default based on panel-resizable class\n backdrop: true,\n backdropEl: undefined,\n visibleBreakpoint: undefined,\n collapsedBreakpoint: undefined,\n swipe: false, // or true\n swipeNoFollow: false, // or true\n swipeOnlyClose: false,\n swipeActiveArea: 0,\n swipeThreshold: 0,\n closeByBackdropClick: true,\n containerEl: undefined,\n },\n },\n static: {\n Panel,\n },\n instance: {\n panel: {\n allowOpen: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app.panel, {\n create(params) {\n return new Panel(app, params);\n },\n get(el = '.panel') {\n if (el instanceof Panel) return el;\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n const $el = $(el);\n if ($el.length === 0 || $el.length > 1) return undefined;\n return $el[0].f7Panel;\n },\n destroy(el = '.panel') {\n const panel = app.panel.get(el);\n if (panel && panel.destroy) return panel.destroy();\n return undefined;\n },\n open(el = '.panel', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.open(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.open(animate);\n }\n return undefined;\n },\n close(el = '.panel-in', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.close(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.close(animate);\n }\n return undefined;\n },\n toggle(el = '.panel', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.toggle) return panel.toggle(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.toggle(animate);\n }\n return undefined;\n },\n });\n },\n on: {\n init() {\n const app = this;\n $('.panel-init').each((index, panelEl) => {\n const params = Object.assign(\n { el: panelEl },\n $(panelEl).dataset() || {}\n );\n app.panel.create(params);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.panel-init').each((index, panelEl) => {\n const params = Object.assign(\n { el: panelEl },\n $(panelEl).dataset() || {}\n );\n app.panel.create(params);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.panel-init').each((index, panelEl) => {\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n });\n },\n },\n vnode: {\n 'panel-init': {\n insert(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const params = Object.assign(\n { el: panelEl },\n $(panelEl).dataset() || {}\n );\n app.panel.create(params);\n },\n destroy(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n },\n },\n },\n clicks: {\n '.panel-open': function open(clickedEl, data = {}) {\n const app = this;\n app.panel.open(data.panel, data.animate);\n },\n '.panel-close': function close(clickedEl, data = {}) {\n const app = this;\n app.panel.close(data.panel, data.animate);\n },\n '.panel-toggle': function close(clickedEl, data = {}) {\n const app = this;\n app.panel.toggle(data.panel, data.animate);\n },\n '.panel-backdrop': function close() {\n const app = this;\n const $panelEl = $('.panel-in:not(.panel-out)');\n if (!$panelEl.length) return;\n const instance = $panelEl[0] && $panelEl[0].f7Panel;\n $panelEl.trigger('panel:backdrop-click');\n if (instance) {\n instance.emit('backdropClick', instance);\n }\n app.emit('panelBackdropClick', instance || $panelEl[0]);\n if (app.params.panel.closeByBackdropClick) app.panel.close();\n },\n },\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst CardExpandable = {\n open(cardEl = '.card-expandable', animate = true) {\n const app = this;\n\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n\n if ($pageEl.find('.card-opened').length) {\n return;\n }\n\n let prevented;\n\n function prevent() {\n prevented = true;\n }\n\n $cardEl.trigger('card:beforeopen', { prevent });\n app.emit('cardBeforeOpen', $cardEl[0], prevent);\n\n if (prevented) return;\n\n const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n\n const $pageContentEl = $cardEl.parents('.page-content');\n\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (!$backdropEl && cardParams.backdrop) {\n $backdropEl = $pageContentEl.find('.card-backdrop');\n if (!$backdropEl.length) {\n $backdropEl = $('
');\n $pageContentEl.append($backdropEl);\n }\n }\n\n let $navbarEl;\n let $toolbarEl;\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n }\n\n const currTransform = $cardEl.css('transform');\n let hasTransform;\n if (currTransform && currTransform.match(/[2-9]/)) {\n hasTransform = true;\n }\n const $cardContentEl = $cardEl.children('.card-content');\n\n const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n $cardEl.append($cardSizeEl);\n\n let cardWidth = $cardEl[0].offsetWidth;\n let cardHeight = $cardEl[0].offsetHeight;\n let pageWidth = $pageEl[0].offsetWidth;\n let pageHeight = $pageEl[0].offsetHeight;\n\n let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n let statusbarHeight;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n\n let scaleX = maxWidth / cardWidth;\n let scaleY = maxHeight / cardHeight;\n\n let offset = $cardEl.offset();\n let pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n\n let cardLeftOffset;\n let cardTopOffset;\n\n if (hasTransform) {\n const transformValues = currTransform\n .replace(/matrix\\(|\\)/g, '')\n .split(',')\n .map(el => el.trim());\n if (transformValues && transformValues.length > 1) {\n const scale = parseFloat(transformValues[0]);\n cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;\n cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n } else {\n cardLeftOffset = $cardEl[0].offsetLeft;\n cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n }\n } else {\n cardLeftOffset = offset.left;\n cardTopOffset = offset.top - pageOffset.top;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n }\n\n cardLeftOffset -= (pageWidth - maxWidth) / 2;\n cardTopOffset -= (pageHeight - maxHeight) / 2;\n\n let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n let translateX = (cardRightOffset - cardLeftOffset) / 2;\n let translateY = (cardBottomOffset - cardTopOffset) / 2;\n if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n if ($navbarEl.closest('.navbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepNavbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepNavbarOnClose;\n app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen);\n }\n }\n if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n if ($toolbarEl.closest('.toolbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepToolbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepToolbarOnClose;\n app.toolbar.hide($toolbarEl, cardParams.animate);\n }\n }\n if ($backdropEl) {\n $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n }\n $cardEl.removeClass('card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-opening');\n }\n $cardEl.trigger('card:open');\n app.emit('cardOpen', $cardEl[0]);\n function transitionEnd() {\n $pageEl.addClass('page-with-card-opened');\n if (app.device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n $cardEl.addClass('card-opened');\n $cardEl.removeClass('card-opening');\n $cardEl.trigger('card:opened');\n app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n }\n $cardContentEl\n .css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`,\n })\n .transform(`translate3d(${app.rtl ? (cardLeftOffset + translateX) : (-cardLeftOffset - translateX)}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n\n $cardEl\n .transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n if (cardParams.animate) {\n $cardEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n\n function onResize() {\n $cardEl.removeClass('card-transitioning');\n cardWidth = $cardEl[0].offsetWidth;\n cardHeight = $cardEl[0].offsetHeight;\n pageWidth = $pageEl[0].offsetWidth;\n pageHeight = $pageEl[0].offsetHeight;\n maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n statusbarHeight = 0;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n\n\n scaleX = maxWidth / cardWidth;\n scaleY = maxHeight / cardHeight;\n\n $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n offset = $cardEl.offset();\n pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n offset.top -= pageOffset.top;\n\n cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n\n cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n translateX = (cardRightOffset - cardLeftOffset) / 2;\n translateY = (cardBottomOffset - cardTopOffset) / 2;\n\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n $cardContentEl\n .css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`,\n })\n .transform(`translate3d(${app.rtl ? (cardLeftOffset + translateX) : (-cardLeftOffset - translateX)}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n }\n\n let cardScrollTop;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchEndX;\n let touchEndY;\n let isScrolling;\n let progress;\n let isV;\n let isH;\n let $cardScrollableEl;\n function onTouchStart(e) {\n if (!$(e.target).closest($cardEl).length) return;\n if (!$cardEl.hasClass('card-opened')) return;\n $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n if ($cardScrollableEl[0]\n && $cardScrollableEl[0] !== $cardContentEl[0]\n && !$cardScrollableEl[0].contains(e.target)\n ) {\n cardScrollTop = 0;\n } else {\n cardScrollTop = $cardScrollableEl.scrollTop();\n }\n isTouched = true;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isScrolling = undefined;\n isV = false;\n isH = false;\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n touchEndX = e.targetTouches[0].pageX;\n touchEndY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));\n }\n if (!isH && !isV) {\n if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n isH = true;\n } else {\n isV = true;\n }\n }\n\n if (!(isH || isV) || (isV && cardScrollTop !== 0)) {\n isTouched = true;\n isMoved = true;\n return;\n }\n if (!isMoved) {\n $cardEl.removeClass('card-transitioning');\n }\n\n isMoved = true;\n progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n if ((progress > 0 && isV) || isH) {\n if (isV && app.device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n $cardScrollableEl.scrollTop(0);\n }\n e.preventDefault();\n }\n\n if (progress > 1) progress **= 0.3;\n if (progress > (isV ? 1.3 : 1.1)) {\n isTouched = false;\n isMoved = false;\n app.card.close($cardEl);\n } else {\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);\n }\n }\n function onTouchEnd() {\n if (!isTouched || !isMoved) return;\n isTouched = false;\n isMoved = false;\n if (app.device.ios) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n }\n if (progress >= 0.8) {\n app.card.close($cardEl);\n } else {\n $cardEl\n .addClass('card-transitioning')\n .transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n }\n }\n\n $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n app.off('resize', onResize);\n if (Support.touch && cardParams.swipeToClose) {\n app.off('touchstart:passive', onTouchStart);\n app.off('touchmove:active', onTouchMove);\n app.off('touchend:passive', onTouchEnd);\n }\n };\n\n app.on('resize', onResize);\n if (Support.touch && cardParams.swipeToClose) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n },\n close(cardEl = '.card-expandable.card-opened', animate = true) {\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n\n const $cardContentEl = $cardEl.children('.card-content');\n const $pageContentEl = $cardEl.parents('.page-content');\n\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n\n const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n let $navbarEl;\n let $toolbarEl;\n\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (cardParams.backdrop) {\n $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n }\n\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n app.navbar.show($navbarEl, cardParams.animate);\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n app.toolbar.show($toolbarEl, cardParams.animate);\n }\n }\n\n $pageEl.removeClass('page-with-card-opened');\n\n if (app.device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n }\n\n $cardEl.removeClass('card-opened card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-closing');\n } else {\n $cardEl.addClass('card-no-transition');\n }\n $cardEl.transform('');\n $cardEl.trigger('card:close');\n app.emit('cardClose', $cardEl[0], $pageEl[0]);\n\n const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n\n function transitionEnd() {\n if (!animateWidth) {\n $cardContentEl\n .css({\n width: '',\n height: '',\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n }\n $cardEl.removeClass('card-closing card-no-transition');\n $cardEl.trigger('card:closed');\n $cardEl.find('.card-expandable-size').remove();\n app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n }\n if (animateWidth) {\n $cardContentEl\n .css({\n width: '',\n height: '',\n });\n }\n\n $cardContentEl\n .transform('')\n .scrollTop(0, animate ? 300 : 0);\n if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n }\n if (animate) {\n $cardContentEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n\n if ($cardEl[0].detachEventHandlers) {\n $cardEl[0].detachEventHandlers();\n delete $cardEl[0].detachEventHandlers;\n }\n },\n toggle(cardEl = '.card-expandable', animate) {\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl.length) return;\n if ($cardEl.hasClass('card-opened')) {\n app.card.close($cardEl, animate);\n } else {\n app.card.open($cardEl, animate);\n }\n },\n};\n\nexport default {\n name: 'card',\n params: {\n card: {\n hideNavbarOnOpen: true,\n hideStatusbarOnOpen: true,\n hideToolbarOnOpen: true,\n scrollableEl: '.card-content',\n swipeToClose: true,\n closeByBackdropClick: true,\n backdrop: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n card: {\n open: CardExpandable.open.bind(app),\n close: CardExpandable.close.bind(app),\n toggle: CardExpandable.toggle.bind(app),\n },\n });\n },\n on: {\n pageBeforeIn(page) {\n const app = this;\n if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {\n app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen);\n }\n\n if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {\n let $toolbarEl = page.$el.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length) {\n app.toolbar.hide($toolbarEl);\n }\n }\n },\n },\n clicks: {\n '.card-close': function closeCard($clickedEl, data) {\n const app = this;\n app.card.close(data.card, data.animate);\n },\n '.card-open': function closeCard($clickedEl, data) {\n const app = this;\n app.card.open(data.card, data.animate);\n },\n '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n const app = this;\n if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;\n if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n app.card.open($clickedEl);\n },\n '.card-backdrop-in': function onBackdropClick() {\n const app = this;\n let needToClose = false;\n if (app.params.card.closeByBackdropClick) needToClose = true;\n const $openedCardEl = $('.card-opened');\n if (!$openedCardEl.length) return;\n if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n needToClose = true;\n } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n needToClose = false;\n }\n if (needToClose) app.card.close($openedCardEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\n// Form Data\nconst FormData = {\n store(form, data) {\n const app = this;\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n // Store form data in app.formsData\n app.form.data[`form-${formId}`] = data;\n\n // Store form data in local storage also\n window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n },\n get(form) {\n const app = this;\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n if (window.localStorage[`f7form-${formId}`]) {\n return JSON.parse(window.localStorage[`f7form-${formId}`]);\n }\n if (app.form.data[`form-${formId}`]) {\n return app.form.data[`form-${formId}`];\n }\n return undefined;\n },\n remove(form) {\n const app = this;\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n // Delete form data from app.formsData\n if (app.form.data[`form-${formId}`]) {\n app.form.data[`form-${formId}`] = '';\n delete app.form.data[`form-${formId}`];\n }\n\n // Delete form data from local storage also\n if (window.localStorage[`f7form-${formId}`]) {\n window.localStorage[`f7form-${formId}`] = '';\n window.localStorage.removeItem(`f7form-${formId}`);\n }\n },\n};\n\n// Form Storage\nconst FormStorage = {\n init(formEl) {\n const app = this;\n const $formEl = $(formEl);\n const formId = $formEl.attr('id');\n if (!formId) return;\n const initialData = app.form.getFormData(formId);\n if (initialData) {\n app.form.fillFromData($formEl, initialData);\n }\n function store() {\n const data = app.form.convertToData($formEl);\n if (!data) return;\n app.form.storeFormData(formId, data);\n $formEl.trigger('form:storedata', data);\n app.emit('formStoreData', $formEl[0], data);\n }\n $formEl.on('change submit', store);\n },\n destroy(formEl) {\n const $formEl = $(formEl);\n $formEl.off('change submit');\n },\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if ($formEl.length === 0) return undefined;\n\n // Form data\n const data = {};\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`select[name=\"${name}\"] option`).each((index, el) => {\n if (el.selected) data[name].push(el.value);\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n if (el.checked) data[name].push(el.value);\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n if (el.checked) data[name] = el.value;\n });\n break;\n default:\n data[name] = $inputEl.val();\n break;\n }\n }\n });\n $formEl.trigger('form:todata', data);\n app.emit('formToData', $formEl[0], data);\n\n return data;\n}\nfunction formFromData(formEl, formData) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if (!$formEl.length) return;\n\n let data = formData;\n const formId = $formEl.attr('id');\n\n if (!data && formId) {\n data = app.form.getFormData(formId);\n }\n\n if (!data) return;\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n\n $formEl.find('input, select, textarea').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (typeof data[name] === 'undefined' || data[name] === null) return;\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n $formEl.find(`select[name=\"${name}\"] option`).each((index, el) => {\n const selectEl = el;\n if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;\n else selectEl.selected = false;\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n const checkboxEl = el;\n if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;\n else checkboxEl.checked = false;\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n const radioEl = el;\n if (data[name] === el.value) radioEl.checked = true;\n else radioEl.checked = false;\n });\n break;\n default:\n $inputEl.val(data[name]);\n break;\n }\n }\n if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n $inputEl.trigger('change', 'fromdata');\n }\n });\n $formEl.trigger('form:fromdata', data);\n app.emit('formFromData', $formEl[0], data);\n}\n\nfunction initAjaxForm() {\n const app = this;\n\n function onSubmitChange(e, fromData) {\n const $formEl = $(this);\n if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n if (e.type === 'submit') e.preventDefault();\n\n if (e.type === 'change' && fromData === 'fromdata') return;\n\n const method = ($formEl.attr('method') || 'GET').toUpperCase();\n const contentType = $formEl.prop('enctype') || $formEl.attr('enctype');\n\n const url = $formEl.attr('action');\n if (!url) return;\n\n let data;\n if (method === 'POST') {\n if (contentType === 'application/x-www-form-urlencoded') {\n data = app.form.convertToData($formEl[0]);\n } else {\n data = new window.FormData($formEl[0]);\n }\n } else {\n data = Utils.serializeObject(app.form.convertToData($formEl[0]));\n }\n\n app.request({\n method,\n url,\n contentType,\n data,\n beforeSend(xhr) {\n $formEl.trigger('formajax:beforesend', { data, xhr });\n app.emit('formAjaxBeforeSend', $formEl[0], data, xhr);\n },\n error(xhr) {\n $formEl.trigger('formajax:error', { data, xhr });\n app.emit('formAjaxError', $formEl[0], data, xhr);\n },\n complete(xhr) {\n $formEl.trigger('formajax:complete', { data, xhr });\n app.emit('formAjaxComplete', $formEl[0], data, xhr);\n },\n success(response, status, xhr) {\n $formEl.trigger('formajax:success', { data, xhr });\n app.emit('formAjaxSuccess', $formEl[0], data, xhr);\n },\n });\n }\n $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\n\nexport default {\n name: 'form',\n create() {\n const app = this;\n Utils.extend(app, {\n form: {\n data: {},\n storeFormData: FormData.store.bind(app),\n getFormData: FormData.get.bind(app),\n removeFormData: FormData.remove.bind(app),\n convertToData: formToData.bind(app),\n fillFromData: formFromData.bind(app),\n storage: {\n init: FormStorage.init.bind(app),\n destroy: FormStorage.destroy.bind(app),\n },\n },\n });\n },\n on: {\n init() {\n const app = this;\n initAjaxForm.call(app);\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each((index, formEl) => {\n app.form.storage.destroy(formEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each((index, formEl) => {\n app.form.storage.init(formEl);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.form-store-data').each((index, formEl) => {\n app.form.storage.destroy(formEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.form-store-data').each((index, formEl) => {\n app.form.storage.init(formEl);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\n\nconst Input = {\n ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n createTextareaResizableShadow() {\n const $shadowEl = $(document.createElement('textarea'));\n $shadowEl.addClass('textarea-resizable-shadow');\n $shadowEl.prop({\n disabled: true,\n readonly: true,\n });\n Input.textareaResizableShadow = $shadowEl;\n },\n textareaResizableShadow: undefined,\n resizeTextarea(textareaEl) {\n const app = this;\n const $textareaEl = $(textareaEl);\n if (!Input.textareaResizableShadow) {\n Input.createTextareaResizableShadow();\n }\n const $shadowEl = Input.textareaResizableShadow;\n if (!$textareaEl.length) return;\n if (!$textareaEl.hasClass('resizable')) return;\n if (Input.textareaResizableShadow.parents().length === 0) {\n app.root.append($shadowEl);\n }\n\n const styles = window.getComputedStyle($textareaEl[0]);\n ('padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display').split(' ').forEach((style) => {\n let styleValue = styles[style];\n if (('font-size line-height letter-spacing width').split(' ').indexOf(style) >= 0) {\n styleValue = styleValue.replace(',', '.');\n }\n $shadowEl.css(style, styleValue);\n });\n const currentHeight = $textareaEl[0].clientHeight;\n\n $shadowEl.val('');\n const initialHeight = $shadowEl[0].scrollHeight;\n\n $shadowEl.val($textareaEl.val());\n $shadowEl.css('height', 0);\n const scrollHeight = $shadowEl[0].scrollHeight;\n\n if (currentHeight !== scrollHeight) {\n if (scrollHeight > initialHeight) {\n $textareaEl.css('height', `${scrollHeight}px`);\n } else if (scrollHeight < currentHeight) {\n $textareaEl.css('height', '');\n }\n if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n $textareaEl.trigger('textarea:resize', { initialHeight, currentHeight, scrollHeight });\n app.emit('textareaResize', { initialHeight, currentHeight, scrollHeight });\n }\n }\n },\n validate(inputEl) {\n const $inputEl = $(inputEl);\n if (!$inputEl.length) return true;\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n function unsetReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = false;\n }\n }\n function setReadonly() {\n if ($inputEl[0].f7ValidateReadonly) {\n $inputEl[0].readOnly = true;\n }\n }\n unsetReadonly();\n const validity = $inputEl[0].validity;\n const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n if (!validity) {\n setReadonly();\n return true;\n }\n if (!validity.valid) {\n let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n if (validationMessage) {\n if ($errorEl.length === 0) {\n $errorEl = $(`
`);\n $errorEl.insertAfter($inputEl);\n }\n $errorEl.text(validationMessage);\n }\n if ($errorEl.length > 0) {\n $itemInputEl.addClass('item-input-with-error-message');\n $inputWrapEl.addClass('input-with-error-message');\n }\n $itemInputEl.addClass('item-input-invalid');\n $inputWrapEl.addClass('input-invalid');\n $inputEl.addClass('input-invalid');\n setReadonly();\n return false;\n }\n $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n $inputWrapEl.removeClass('input-invalid input-with-error-message');\n $inputEl.removeClass('input-invalid');\n setReadonly();\n return true;\n },\n validateInputs(el) {\n const app = this;\n const validates = $(el)\n .find('input, textarea, select')\n .toArray()\n .map((inputEl) => app.input.validate(inputEl));\n return validates.indexOf(false) < 0;\n },\n focus(inputEl) {\n const $inputEl = $(inputEl);\n const type = $inputEl.attr('type');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n $inputEl.parents('.item-input').addClass('item-input-focused');\n $inputEl.parents('.input').addClass('input-focused');\n $inputEl.addClass('input-focused');\n },\n blur(inputEl) {\n const $inputEl = $(inputEl);\n $inputEl.parents('.item-input').removeClass('item-input-focused');\n $inputEl.parents('.input').removeClass('input-focused');\n $inputEl.removeClass('input-focused');\n },\n checkEmptyState(inputEl) {\n const app = this;\n let $inputEl = $(inputEl);\n if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n }\n if (!$inputEl.length) return;\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n let value;\n if (isContentEditable) {\n if ($inputEl.find('.text-editor-placeholder').length) value = '';\n else value = $inputEl.html();\n } else {\n value = $inputEl.val();\n }\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n if ((value && (typeof value === 'string' && value.trim() !== '')) || (Array.isArray(value) && value.length > 0)) {\n $itemInputEl.addClass('item-input-with-value');\n $inputWrapEl.addClass('input-with-value');\n $inputEl.addClass('input-with-value');\n $inputEl.trigger('input:notempty');\n app.emit('inputNotEmpty', $inputEl[0]);\n } else {\n $itemInputEl.removeClass('item-input-with-value');\n $inputWrapEl.removeClass('input-with-value');\n $inputEl.removeClass('input-with-value');\n $inputEl.trigger('input:empty');\n app.emit('inputEmpty', $inputEl[0]);\n }\n },\n scrollIntoView(inputEl, duration = 0, centered, force) {\n const $inputEl = $(inputEl);\n const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);\n if (!$scrollableEl.length) {\n return false;\n }\n const contentHeight = $scrollableEl[0].offsetHeight;\n const contentScrollTop = $scrollableEl[0].scrollTop;\n const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n\n const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n const inputHeight = $inputEl[0].offsetHeight;\n\n const min = (inputOffsetTop + contentScrollTop) - contentPaddingTop;\n const max = ((inputOffsetTop + contentScrollTop) - contentHeight) + contentPaddingBottom + inputHeight;\n const centeredPosition = min + ((max - min) / 2);\n\n if (contentScrollTop > min) {\n $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n return true;\n }\n if (contentScrollTop < max) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n return true;\n }\n if (force) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n }\n return false;\n },\n init() {\n const app = this;\n Input.createTextareaResizableShadow();\n function onFocus() {\n const inputEl = this;\n if (app.params.input.scrollIntoViewOnFocus) {\n if (Device.android) {\n $(window).once('resize', () => {\n if (document && document.activeElement === inputEl) {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n });\n } else {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n }\n app.input.focus(inputEl);\n }\n function onBlur() {\n const $inputEl = $(this);\n const tag = $inputEl[0].nodeName.toLowerCase();\n app.input.blur($inputEl);\n if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {\n app.input.validate($inputEl);\n }\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n }\n }\n function onChange() {\n const $inputEl = $(this);\n const type = $inputEl.attr('type');\n const tag = $inputEl[0].nodeName.toLowerCase();\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n // Check Empty State\n app.input.checkEmptyState($inputEl);\n if (isContentEditable) return;\n\n // Check validation\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n app.input.validate($inputEl);\n }\n\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n app.input.resizeTextarea($inputEl);\n }\n }\n function onInvalid(e) {\n const $inputEl = $(this);\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n e.preventDefault();\n app.input.validate($inputEl);\n }\n }\n function clearInput() {\n const $clicked = $(this);\n const $inputEl = $clicked.siblings('input, textarea').eq(0);\n const previousValue = $inputEl.val();\n $inputEl\n .val('')\n .trigger('input change')\n .focus()\n .trigger('input:clear', previousValue);\n app.emit('inputClear', previousValue);\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n $(document).on('click', '.input-clear-button', clearInput);\n $(document).on('mousedown', '.input-clear-button', preventDefault);\n $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);\n $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);\n $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n },\n};\n\nexport default {\n name: 'input',\n params: {\n input: {\n scrollIntoViewOnFocus: Device.android,\n scrollIntoViewCentered: false,\n scrollIntoViewDuration: 0,\n scrollIntoViewAlways: false,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n input: {\n scrollIntoView: Input.scrollIntoView.bind(app),\n focus: Input.focus.bind(app),\n blur: Input.blur.bind(app),\n validate: Input.validate.bind(app),\n validateInputs: Input.validateInputs.bind(app),\n checkEmptyState: Input.checkEmptyState.bind(app),\n resizeTextarea: Input.resizeTextarea.bind(app),\n init: Input.init.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n app.input.init();\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n $tabEl.find('.item-input, .input').each((itemInputIndex, itemInputEl) => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $tabEl.find('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n pageInit(page) {\n const app = this;\n const $pageEl = page.$el;\n $pageEl.find('.item-input, .input').each((itemInputIndex, itemInputEl) => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $pageEl.find('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {\n const app = this;\n if (instance && instance.$el) {\n instance.$el.find('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n } else {\n $('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n }\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Support from '../../utils/support';\n\nclass Toggle extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const toggle = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n toggle.useModulesParams(defaults);\n\n toggle.params = Utils.extend(defaults, params);\n\n const el = toggle.params.el;\n if (!el) return toggle;\n\n const $el = $(el);\n if ($el.length === 0) return toggle;\n\n if ($el[0].f7Toggle) return $el[0].f7Toggle;\n\n const $inputEl = $el.children('input[type=\"checkbox\"]');\n\n Utils.extend(toggle, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl[0],\n disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled,\n });\n\n Object.defineProperty(toggle, 'checked', {\n enumerable: true,\n configurable: true,\n set(checked) {\n if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n if (toggle.checked === checked) return;\n $inputEl[0].checked = checked;\n toggle.$inputEl.trigger('change');\n },\n get() {\n return $inputEl[0].checked;\n },\n });\n\n $el[0].f7Toggle = toggle;\n\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let toggleWidth;\n let touchStartTime;\n let touchStartChecked;\n function handleTouchStart(e) {\n if (isTouched || toggle.disabled) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchesDiff = 0;\n\n isTouched = true;\n isScrolling = undefined;\n touchStartTime = Utils.now();\n touchStartChecked = toggle.checked;\n\n toggleWidth = $el[0].offsetWidth;\n Utils.nextTick(() => {\n if (isTouched) {\n $el.addClass('toggle-active-state');\n }\n });\n }\n function handleTouchMove(e) {\n if (!isTouched || toggle.disabled) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const inverter = app.rtl ? -1 : 1;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n\n let changed;\n if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n touchesStart.x = pageX;\n toggle.checked = !touchStartChecked;\n touchStartChecked = !touchStartChecked;\n }\n }\n function handleTouchEnd() {\n if (!isTouched || toggle.disabled) {\n if (isScrolling) $el.removeClass('toggle-active-state');\n isTouched = false;\n return;\n }\n const inverter = app.rtl ? -1 : 1;\n isTouched = false;\n\n $el.removeClass('toggle-active-state');\n\n let changed;\n if ((Utils.now() - touchStartTime) < 300) {\n if (touchesDiff * inverter < 0 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n toggle.checked = !touchStartChecked;\n }\n }\n }\n function handleInputChange() {\n toggle.$el.trigger('toggle:change');\n toggle.emit('local::change toggleChange', toggle);\n }\n toggle.attachEvents = function attachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n toggle.$inputEl.on('change', handleInputChange);\n };\n toggle.detachEvents = function detachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n toggle.$inputEl.off('change', handleInputChange);\n };\n\n // Install Modules\n toggle.useModules();\n\n // Init\n toggle.init();\n }\n\n toggle() {\n const toggle = this;\n toggle.checked = !toggle.checked;\n }\n\n init() {\n const toggle = this;\n toggle.attachEvents();\n }\n\n destroy() {\n let toggle = this;\n toggle.$el.trigger('toggle:beforedestroy');\n toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n delete toggle.$el[0].f7Toggle;\n toggle.detachEvents();\n Utils.deleteProps(toggle);\n toggle = null;\n }\n}\n\nexport default Toggle;\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Toggle from './toggle-class';\n\nexport default {\n name: 'toggle',\n create() {\n const app = this;\n app.toggle = ConstructorMethods({\n defaultSelector: '.toggle',\n constructor: Toggle,\n app,\n domProp: 'f7Toggle',\n });\n },\n static: {\n Toggle,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.toggle-init').each((index, toggleEl) => app.toggle.create({ el: toggleEl }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.toggle-init').each((index, toggleEl) => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.toggle-init').each((index, toggleEl) => app.toggle.create({ el: toggleEl }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.toggle-init').each((index, toggleEl) => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n },\n vnode: {\n 'toggle-init': {\n insert(vnode) {\n const app = this;\n const toggleEl = vnode.elm;\n app.toggle.create({ el: toggleEl });\n },\n destroy(vnode) {\n const toggleEl = vnode.elm;\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Support from '../../utils/support';\n\nclass Range extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const range = this;\n\n const defaults = {\n el: null,\n inputEl: null,\n dual: false,\n step: 1,\n label: false,\n min: 0,\n max: 100,\n value: 0,\n draggableBar: true,\n vertical: false,\n verticalReversed: false,\n formatLabel: null,\n scale: false,\n scaleSteps: 5,\n scaleSubSteps: 0,\n formatScaleLabel: null,\n limitKnobPosition: app.theme === 'ios',\n };\n\n // Extend defaults with modules params\n range.useModulesParams(defaults);\n\n range.params = Utils.extend(defaults, params);\n\n const el = range.params.el;\n if (!el) return range;\n\n const $el = $(el);\n if ($el.length === 0) return range;\n\n if ($el[0].f7Range) return $el[0].f7Range;\n\n const dataset = $el.dataset();\n\n ('step min max value scaleSteps scaleSubSteps').split(' ').forEach((paramName) => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = parseFloat(dataset[paramName]);\n }\n });\n ('dual label vertical verticalReversed scale').split(' ').forEach((paramName) => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = dataset[paramName];\n }\n });\n\n if (!range.params.value) {\n if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n }\n }\n\n let $inputEl;\n if (!range.params.dual) {\n if (range.params.inputEl) {\n $inputEl = $(range.params.inputEl);\n } else if ($el.find('input[type=\"range\"]').length) {\n $inputEl = $el.find('input[type=\"range\"]').eq(0);\n }\n }\n\n const {\n dual, step, label, min, max, value, vertical, verticalReversed, scale, scaleSteps, scaleSubSteps, limitKnobPosition,\n } = range.params;\n\n Utils.extend(range, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n dual,\n step,\n label,\n min,\n max,\n value,\n previousValue: value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition,\n });\n\n if ($inputEl) {\n ('step min max').split(' ').forEach((paramName) => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n range.params[paramName] = parseFloat($inputEl.attr(paramName));\n range[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n if (typeof $inputEl.val() !== 'undefined') {\n range.params.value = parseFloat($inputEl.val());\n range.value = parseFloat($inputEl.val());\n }\n }\n\n // Dual\n if (range.dual) {\n $el.addClass('range-slider-dual');\n }\n if (range.label) {\n $el.addClass('range-slider-label');\n }\n\n // Vertical\n if (range.vertical) {\n $el.addClass('range-slider-vertical');\n if (range.verticalReversed) {\n $el.addClass('range-slider-vertical-reversed');\n }\n } else {\n $el.addClass('range-slider-horizontal');\n }\n\n // Check for layout\n const $barEl = $('
');\n const $barActiveEl = $('
');\n $barEl.append($barActiveEl);\n\n // Create Knobs\n const knobHTML = `\n \n
\n ${range.label ? '
' : ''}\n
\n `;\n const knobs = [$(knobHTML)];\n\n if (range.dual) {\n knobs.push($(knobHTML));\n }\n\n $el.append($barEl);\n knobs.forEach(($knobEl) => {\n $el.append($knobEl);\n });\n\n // Labels\n const labels = [];\n if (range.label) {\n labels.push(knobs[0].find('.range-knob-label'));\n if (range.dual) {\n labels.push(knobs[1].find('.range-knob-label'));\n }\n }\n\n // Scale\n let $scaleEl;\n if (range.scale && range.scaleSteps >= 1) {\n $scaleEl = $(`\n \n ${range.renderScale()}\n
\n `);\n $el.append($scaleEl);\n }\n\n Utils.extend(range, {\n knobs,\n labels,\n $barEl,\n $barActiveEl,\n $scaleEl,\n });\n\n $el[0].f7Range = range;\n\n // Touch Events\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let rangeOffset;\n let rangeOffsetLeft;\n let rangeOffsetTop;\n let $touchedKnobEl;\n let dualValueIndex;\n let valueChangedByTouch;\n let targetTouchIdentifier;\n function onTouchChange() {\n valueChangedByTouch = true;\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n if (!range.params.draggableBar) {\n if ($(e.target).closest('.range-knob').length === 0) {\n return;\n }\n }\n valueChangedByTouch = false;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (e.type === 'touchstart') {\n targetTouchIdentifier = e.targetTouches[0].identifier;\n }\n\n isTouched = true;\n isScrolling = undefined;\n rangeOffset = $el.offset();\n rangeOffsetLeft = rangeOffset.left;\n rangeOffsetTop = rangeOffset.top;\n\n let progress;\n if (range.vertical) {\n progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = ((rangeOffsetLeft + range.rangeWidth) - touchesStart.x) / range.rangeWidth;\n } else {\n progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n }\n\n let newValue = (progress * (range.max - range.min)) + range.min;\n if (range.dual) {\n if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n dualValueIndex = 0;\n $touchedKnobEl = range.knobs[0];\n newValue = [newValue, range.value[1]];\n } else {\n dualValueIndex = 1;\n $touchedKnobEl = range.knobs[1];\n newValue = [range.value[0], newValue];\n }\n } else {\n $touchedKnobEl = range.knobs[0];\n newValue = (progress * (range.max - range.min)) + range.min;\n }\n Utils.nextTick(() => {\n if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n }, 70);\n range.on('change', onTouchChange);\n range.setValue(newValue, true);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n if (e.type === 'touchmove') {\n for (let i = 0; i < e.targetTouches.length; i += 1) {\n if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n pageX = e.targetTouches[i].pageX;\n pageY = e.targetTouches[i].pageY;\n }\n }\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n\n if (typeof isScrolling === 'undefined' && !range.vertical) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n\n let progress;\n if (range.vertical) {\n progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = ((rangeOffsetLeft + range.rangeWidth) - pageX) / range.rangeWidth;\n } else {\n progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n }\n\n let newValue = (progress * (range.max - range.min)) + range.min;\n if (range.dual) {\n let leftValue;\n let rightValue;\n if (dualValueIndex === 0) {\n leftValue = newValue;\n rightValue = range.value[1];\n if (leftValue > rightValue) {\n rightValue = leftValue;\n }\n } else {\n leftValue = range.value[0];\n rightValue = newValue;\n if (rightValue < leftValue) {\n leftValue = rightValue;\n }\n }\n newValue = [leftValue, rightValue];\n }\n range.setValue(newValue, true);\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend') {\n let touchEnded;\n for (let i = 0; i < e.changedTouches.length; i += 1) {\n if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n }\n if (!touchEnded) return;\n }\n if (!isTouched) {\n if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n isTouched = false;\n return;\n }\n range.off('change', onTouchChange);\n isTouched = false;\n $touchedKnobEl.removeClass('range-knob-active-state');\n if (valueChangedByTouch && range.$inputEl && !range.dual) {\n range.$inputEl.trigger('change');\n }\n valueChangedByTouch = false;\n if (typeof range.previousValue !== 'undefined') {\n if (\n (\n range.dual\n && (\n range.previousValue[0] !== range.value[0]\n || range.previousValue[1] !== range.value[1]\n )\n )\n || (\n !range.dual\n && range.previousValue !== range.value\n )\n ) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n }\n }\n\n function handleResize() {\n range.calcSize();\n range.layout();\n }\n let parentModals;\n let parentPanel;\n let parentPage;\n range.attachEvents = function attachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('tabShow', handleResize);\n app.on('resize', handleResize);\n parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');\n parentModals.on('modal:open', handleResize);\n parentPanel = range.$el.parents('.panel');\n parentPanel.on('panel:open panel:resize', handleResize);\n parentPage = range.$el.parents('.page').eq(0);\n parentPage.on('page:reinit', handleResize);\n };\n range.detachEvents = function detachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('tabShow', handleResize);\n app.off('resize', handleResize);\n if (parentModals) {\n parentModals.off('modal:open', handleResize);\n }\n if (parentPanel) {\n parentPanel.off('panel:open panel:resize', handleResize);\n }\n if (parentPage) {\n parentPage.off('page:reinit', handleResize);\n }\n parentModals = null;\n parentPanel = null;\n parentPage = null;\n };\n\n // Install Modules\n range.useModules();\n\n // Init\n range.init();\n\n return range;\n }\n\n calcSize() {\n const range = this;\n if (range.vertical) {\n const height = range.$el.outerHeight();\n if (height === 0) return;\n range.rangeHeight = height;\n range.knobHeight = range.knobs[0].outerHeight();\n } else {\n const width = range.$el.outerWidth();\n if (width === 0) return;\n range.rangeWidth = width;\n range.knobWidth = range.knobs[0].outerWidth();\n }\n }\n\n layout() {\n const range = this;\n const {\n app,\n knobWidth,\n knobHeight,\n rangeWidth,\n rangeHeight,\n min,\n max,\n knobs,\n $barActiveEl,\n value,\n label,\n labels,\n vertical,\n verticalReversed,\n limitKnobPosition,\n } = range;\n const knobSize = vertical ? knobHeight : knobWidth;\n const rangeSize = vertical ? rangeHeight : rangeWidth;\n // eslint-disable-next-line\n const positionProperty = vertical\n ? (verticalReversed ? 'top' : 'bottom')\n : (app.rtl ? 'right' : 'left');\n if (range.dual) {\n const progress = [((value[0] - min) / (max - min)), ((value[1] - min) / (max - min))];\n $barActiveEl.css({\n [positionProperty]: `${progress[0] * 100}%`,\n [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`,\n });\n knobs.forEach(($knobEl, knobIndex) => {\n let startPos = rangeSize * progress[knobIndex];\n if (limitKnobPosition) {\n const realStartPos = (rangeSize * progress[knobIndex]) - (knobSize / 2);\n if (realStartPos < 0) startPos = knobSize / 2;\n if ((realStartPos + knobSize) > rangeSize) startPos = rangeSize - (knobSize / 2);\n }\n $knobEl.css(positionProperty, `${startPos}px`);\n if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n });\n } else {\n const progress = ((value - min) / (max - min));\n $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n\n let startPos = rangeSize * progress;\n if (limitKnobPosition) {\n const realStartPos = (rangeSize * progress) - (knobSize / 2);\n if (realStartPos < 0) startPos = knobSize / 2;\n if ((realStartPos + knobSize) > rangeSize) startPos = rangeSize - (knobSize / 2);\n }\n knobs[0].css(positionProperty, `${startPos}px`);\n if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n }\n if ((range.dual && value.indexOf(min) >= 0) || (!range.dual && value === min)) {\n range.$el.addClass('range-slider-min');\n } else {\n range.$el.removeClass('range-slider-min');\n }\n if ((range.dual && value.indexOf(max) >= 0) || (!range.dual && value === max)) {\n range.$el.addClass('range-slider-max');\n } else {\n range.$el.removeClass('range-slider-max');\n }\n }\n\n setValue(newValue, byTouchMove) {\n const range = this;\n const { step, min, max } = range;\n let valueChanged;\n let oldValue;\n if (range.dual) {\n oldValue = [range.value[0], range.value[1]];\n let newValues = newValue;\n if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n if (newValue[0] > newValue[1]) {\n newValues = [newValues[0], newValues[0]];\n }\n newValues = newValues.map(value => Math.max(Math.min(Math.round(value / step) * step, max), min));\n if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n return range;\n }\n newValues.forEach((value, valueIndex) => {\n range.value[valueIndex] = value;\n });\n valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n range.layout();\n } else {\n oldValue = range.value;\n const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n range.value = value;\n range.layout();\n valueChanged = oldValue !== value;\n }\n\n if (valueChanged) {\n range.previousValue = oldValue;\n }\n // Events\n if (!valueChanged) return range;\n range.$el.trigger('range:change', range.value);\n if (range.$inputEl && !range.dual) {\n range.$inputEl.val(range.value);\n if (!byTouchMove) {\n range.$inputEl.trigger('input change');\n } else {\n range.$inputEl.trigger('input');\n }\n }\n if (!byTouchMove) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n range.emit('local::change rangeChange', range, range.value);\n return range;\n }\n\n getValue() {\n return this.value;\n }\n\n formatLabel(value, labelEl) {\n const range = this;\n if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n return value;\n }\n\n formatScaleLabel(value) {\n const range = this;\n if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n return value;\n }\n\n renderScale() {\n const range = this;\n const { app, verticalReversed, vertical } = range;\n\n // eslint-disable-next-line\n const positionProperty = vertical\n ? (verticalReversed ? 'top' : 'bottom')\n : (app.rtl ? 'right' : 'left');\n\n let html = '';\n Array\n .from({ length: range.scaleSteps + 1 })\n .forEach((scaleEl, index) => {\n const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n const scaleValue = range.min + scaleStepValue * index;\n const progress = ((scaleValue - range.min) / (range.max - range.min));\n html += `${range.formatScaleLabel(scaleValue)}
`;\n\n if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n Array\n .from({ length: range.scaleSubSteps - 1 })\n .forEach((subStepEl, subIndex) => {\n const subStep = scaleStepValue / range.scaleSubSteps;\n const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n const subProgress = ((scaleSubValue - range.min) / (range.max - range.min));\n html += `
`;\n });\n }\n });\n\n return html;\n }\n\n updateScale() {\n const range = this;\n if (!range.scale || range.scaleSteps < 1) {\n if (range.$scaleEl) range.$scaleEl.remove();\n delete range.$scaleEl;\n return;\n }\n if (!range.$scaleEl) {\n range.$scaleEl = $('
');\n range.$el.append(range.$scaleEl);\n }\n\n range.$scaleEl.html(range.renderScale());\n }\n\n init() {\n const range = this;\n range.calcSize();\n range.layout();\n range.attachEvents();\n return range;\n }\n\n destroy() {\n let range = this;\n range.$el.trigger('range:beforedestroy');\n range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n delete range.$el[0].f7Range;\n range.detachEvents();\n Utils.deleteProps(range);\n range = null;\n }\n}\n\nexport default Range;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Range from './range-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'range',\n create() {\n const app = this;\n app.range = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.range-slider',\n constructor: Range,\n app,\n domProp: 'f7Range',\n }),\n {\n getValue(el = '.range-slider') {\n const range = app.range.get(el);\n if (range) return range.getValue();\n return undefined;\n },\n setValue(el = '.range-slider', value) {\n const range = app.range.get(el);\n if (range) return range.setValue(value);\n return undefined;\n },\n }\n );\n },\n static: {\n Range,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.range-slider-init').each((index, rangeEl) => new Range(app, {\n el: rangeEl,\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.range-slider-init').each((index, rangeEl) => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.range-slider-init').each((index, rangeEl) => new Range(app, {\n el: rangeEl,\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.range-slider-init').each((index, rangeEl) => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n },\n vnode: {\n 'range-slider-init': {\n insert(vnode) {\n const rangeEl = vnode.elm;\n const app = this;\n app.range.create({ el: rangeEl });\n },\n destroy(vnode) {\n const rangeEl = vnode.elm;\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Stepper extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const stepper = this;\n\n const defaults = {\n el: null,\n inputEl: null,\n valueEl: null,\n value: 0,\n formatValue: null,\n step: 1,\n min: 0,\n max: 100,\n watchInput: true,\n autorepeat: false,\n autorepeatDynamic: false,\n wraps: false,\n manualInputMode: false,\n decimalPoint: 4,\n buttonsEndInputMode: true,\n };\n\n // Extend defaults with modules params\n stepper.useModulesParams(defaults);\n\n stepper.params = Utils.extend(defaults, params);\n if (stepper.params.value < stepper.params.min) {\n stepper.params.value = stepper.params.min;\n }\n if (stepper.params.value > stepper.params.max) {\n stepper.params.value = stepper.params.max;\n }\n\n const el = stepper.params.el;\n if (!el) return stepper;\n\n const $el = $(el);\n if ($el.length === 0) return stepper;\n\n if ($el[0].f7Stepper) return $el[0].f7Stepper;\n\n let $inputEl;\n if (stepper.params.inputEl) {\n $inputEl = $(stepper.params.inputEl);\n } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n }\n\n if ($inputEl && $inputEl.length) {\n ('step min max').split(' ').forEach((paramName) => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n\n const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n if (Number.isNaN(decimalPoint)) {\n stepper.params.decimalPoint = 0;\n } else {\n stepper.params.decimalPoint = decimalPoint;\n }\n\n const inputValue = parseFloat($inputEl.val());\n if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {\n stepper.params.value = inputValue;\n }\n }\n\n let $valueEl;\n if (stepper.params.valueEl) {\n $valueEl = $(stepper.params.valueEl);\n } else if ($el.find('.stepper-value').length) {\n $valueEl = $el.find('.stepper-value').eq(0);\n }\n\n const $buttonPlusEl = $el.find('.stepper-button-plus');\n const $buttonMinusEl = $el.find('.stepper-button-minus');\n\n const { step, min, max, value, decimalPoint } = stepper.params;\n\n Utils.extend(stepper, {\n app,\n $el,\n el: $el[0],\n $buttonPlusEl,\n buttonPlusEl: $buttonPlusEl[0],\n $buttonMinusEl,\n buttonMinusEl: $buttonMinusEl[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n $valueEl,\n valueEl: $valueEl ? $valueEl[0] : undefined,\n step,\n min,\n max,\n value,\n decimalPoint,\n typeModeChanged: false,\n });\n\n $el[0].f7Stepper = stepper;\n\n // Handle Events\n const touchesStart = {};\n let isTouched;\n let isScrolling;\n let preventButtonClick;\n let intervalId;\n let timeoutId;\n let autorepeatAction = null;\n let autorepeatInAction = false;\n let manualInput = false;\n\n function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n if (current === 1) {\n preventButtonClick = true;\n autorepeatInAction = true;\n }\n clearInterval(intervalId);\n action();\n intervalId = setInterval(() => {\n action();\n }, repeatEvery);\n if (current < progressions) {\n dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);\n }\n }, current === 1 ? startsIn : progressionStep);\n }\n\n function onTouchStart(e) {\n if (isTouched) return;\n if (manualInput) { return; }\n if ($(e.target).closest($buttonPlusEl).length) {\n autorepeatAction = 'increment';\n } else if ($(e.target).closest($buttonMinusEl).length) {\n autorepeatAction = 'decrement';\n }\n if (!autorepeatAction) return;\n\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isScrolling = undefined;\n\n const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n stepper[autorepeatAction]();\n });\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n if (manualInput) { return; }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n const distance = (((pageX - touchesStart.x) ** 2) + ((pageY - touchesStart.y) ** 2)) ** 0.5;\n\n if (isScrolling || distance > 20) {\n isTouched = false;\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n }\n }\n function onTouchEnd() {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n autorepeatAction = null;\n autorepeatInAction = false;\n isTouched = false;\n }\n\n function onMinusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.decrement(true);\n }\n function onPlusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.increment(true);\n }\n function onInputClick(e) {\n if (!e.target.readOnly && stepper.params.manualInputMode) {\n manualInput = true;\n if (typeof e.target.selectionStart === 'number') {\n e.target.selectionStart = e.target.value.length;\n e.target.selectionEnd = e.target.value.length;\n }\n }\n }\n function onInputKey(e) {\n if (e.keyCode === 13 || e.which === 13) {\n e.preventDefault();\n manualInput = false;\n stepper.endTypeMode();\n }\n }\n function onInputBlur() {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n function onInput(e) {\n if (manualInput) {\n stepper.typeValue(e.target.value);\n return;\n }\n if (e.detail && e.detail.sentByF7Stepper) return;\n stepper.setValue(e.target.value, true);\n }\n stepper.attachEvents = function attachEvents() {\n $buttonMinusEl.on('click', onMinusClick);\n $buttonPlusEl.on('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.on('input', onInput);\n $inputEl.on('click', onInputClick);\n $inputEl.on('blur', onInputBlur);\n $inputEl.on('keyup', onInputKey);\n }\n if (stepper.params.autorepeat) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n };\n stepper.detachEvents = function detachEvents() {\n $buttonMinusEl.off('click', onMinusClick);\n $buttonPlusEl.off('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.off('input', onInput);\n $inputEl.off('click', onInputClick);\n $inputEl.off('blur', onInputBlur);\n $inputEl.off('keyup', onInputKey);\n }\n };\n\n // Install Modules\n stepper.useModules();\n\n // Init\n stepper.init();\n\n return stepper;\n }\n\n minus() {\n return this.decrement();\n }\n\n plus() {\n return this.increment();\n }\n\n decrement() {\n const stepper = this;\n return stepper.setValue(stepper.value - stepper.step, false, true);\n }\n\n increment() {\n const stepper = this;\n return stepper.setValue(stepper.value + stepper.step, false, true);\n }\n\n setValue(newValue, forceUpdate, withWraps) {\n const stepper = this;\n const { step, min, max } = stepper;\n\n const oldValue = stepper.value;\n\n let value = Math.round(newValue / step) * step;\n if (stepper.params.wraps && withWraps) {\n if (value > max) value = min;\n if (value < min) value = max;\n } else {\n value = Math.max(Math.min(value, max), min);\n }\n\n if (Number.isNaN(value)) {\n value = oldValue;\n }\n stepper.value = value;\n\n const valueChanged = oldValue !== value;\n\n // Events\n if (!valueChanged && !forceUpdate) return stepper;\n\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n\n endTypeMode(noBlur) {\n const stepper = this;\n const { min, max } = stepper;\n let value = parseFloat(stepper.value);\n\n if (Number.isNaN(value)) value = 0;\n\n value = Math.max(Math.min(value, max), min);\n\n stepper.value = value;\n if (!stepper.typeModeChanged) {\n if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n stepper.$inputEl.blur();\n }\n return stepper;\n }\n stepper.typeModeChanged = false;\n\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n if (!noBlur) stepper.$inputEl.blur();\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n\n typeValue(value) {\n const stepper = this;\n stepper.typeModeChanged = true;\n let inputTxt = String(value);\n if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {\n if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {\n inputTxt = inputTxt.slice(0, -1);\n stepper.value = inputTxt;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n } else {\n let newValue = parseFloat(inputTxt.replace(',', '.'));\n if (newValue === 0) {\n stepper.value = inputTxt.replace(',', '.');\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n if (Number.isNaN(newValue)) {\n stepper.value = 0;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n const powVal = 10 ** stepper.params.decimalPoint;\n newValue = (Math.round((newValue) * powVal)).toFixed(stepper.params.decimalPoint + 1) / powVal;\n stepper.value = parseFloat(String(newValue).replace(',', '.'));\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n stepper.value = inputTxt;\n stepper.$inputEl.val(inputTxt);\n return stepper;\n }\n\n getValue() {\n return this.value;\n }\n\n formatValue(value) {\n const stepper = this;\n if (!stepper.params.formatValue) return value;\n return stepper.params.formatValue.call(stepper, value);\n }\n\n init() {\n const stepper = this;\n stepper.attachEvents();\n if (stepper.$valueEl && stepper.$valueEl.length) {\n const formattedValue = stepper.formatValue(stepper.value);\n stepper.$valueEl.html(formattedValue);\n }\n return stepper;\n }\n\n destroy() {\n let stepper = this;\n stepper.$el.trigger('stepper:beforedestroy');\n stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n delete stepper.$el[0].f7Stepper;\n stepper.detachEvents();\n Utils.deleteProps(stepper);\n stepper = null;\n }\n}\n\nexport default Stepper;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Stepper from './stepper-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'stepper',\n create() {\n const app = this;\n app.stepper = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.stepper',\n constructor: Stepper,\n app,\n domProp: 'f7Stepper',\n }),\n {\n getValue(el = '.stepper') {\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.getValue();\n return undefined;\n },\n setValue(el = '.stepper', value) {\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.setValue(value);\n return undefined;\n },\n }\n );\n },\n static: {\n Stepper,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.stepper-init').each((index, stepperEl) => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(Utils.extend({ el: stepperEl }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.stepper-init').each((index, stepperEl) => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.stepper-init').each((index, stepperEl) => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(Utils.extend({ el: stepperEl }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.stepper-init').each((index, stepperEl) => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n },\n vnode: {\n 'stepper-init': {\n insert(vnode) {\n const app = this;\n const stepperEl = vnode.elm;\n const dataset = $(stepperEl).dataset();\n app.stepper.create(Utils.extend({ el: stepperEl }, dataset || {}));\n },\n destroy(vnode) {\n const stepperEl = vnode.elm;\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass SmartSelect extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const ss = this;\n\n const defaults = Utils.extend({\n on: {},\n }, app.params.smartSelect);\n\n if (typeof defaults.searchbarDisableButton === 'undefined') {\n defaults.searchbarDisableButton = app.theme !== 'aurora';\n }\n\n // Extend defaults with modules params\n ss.useModulesParams(defaults);\n\n ss.params = Utils.extend({}, defaults, params);\n\n ss.app = app;\n\n const $el = $(ss.params.el).eq(0);\n if ($el.length === 0) return ss;\n\n if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n\n const $selectEl = $el.find('select').eq(0);\n if ($selectEl.length === 0) return ss;\n\n let $valueEl;\n if (ss.params.setValueText) {\n $valueEl = $(ss.params.valueEl);\n if ($valueEl.length === 0) {\n $valueEl = $el.find('.item-after');\n }\n if ($valueEl.length === 0) {\n $valueEl = $('
');\n $valueEl.insertAfter($el.find('.item-title'));\n }\n }\n\n // Url\n let url = params.url;\n if (!url) {\n if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');\n else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n }\n if (!url) url = ss.params.url;\n\n const multiple = $selectEl[0].multiple;\n const inputType = multiple ? 'checkbox' : 'radio';\n const id = Utils.id();\n\n Utils.extend(ss, {\n $el,\n el: $el[0],\n $selectEl,\n selectEl: $selectEl[0],\n $valueEl,\n valueEl: $valueEl && $valueEl[0],\n url,\n multiple,\n inputType,\n id,\n inputName: `${inputType}-${id}`,\n selectName: $selectEl.attr('name'),\n maxLength: $selectEl.attr('maxlength') || params.maxLength,\n });\n\n $el[0].f7SmartSelect = ss;\n\n // Events\n function onClick() {\n ss.open();\n }\n function onChange() {\n const value = ss.$selectEl.val();\n ss.$el.trigger('smartselect:change', value);\n ss.emit('local::change smartSelectChange', ss, value);\n if (ss.vl) {\n ss.vl.clearCache();\n }\n ss.setValueText();\n }\n ss.attachEvents = function attachEvents() {\n $el.on('click', onClick);\n $el.on('change', 'select', onChange);\n };\n ss.detachEvents = function detachEvents() {\n $el.off('click', onClick);\n $el.off('change', 'select', onChange);\n };\n\n function handleInputChange() {\n let optionEl;\n let text;\n const inputEl = this;\n const value = inputEl.value;\n let optionText = [];\n let displayAs;\n if (inputEl.type === 'checkbox') {\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (optionEl.value === value) {\n optionEl.selected = inputEl.checked;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n if (!optionEl) {\n optionEl = ss.$selectEl.find('option').filter((index, optEl) => optEl.value === value)[0];\n }\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n ss.selectEl.value = value;\n }\n\n ss.$selectEl.trigger('change');\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText(optionText));\n }\n if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n ss.close();\n }\n }\n\n ss.attachInputsEvents = function attachInputsEvents() {\n ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n ss.detachInputsEvents = function detachInputsEvents() {\n ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n\n // Install Modules\n ss.useModules();\n\n // Init\n ss.init();\n\n return ss;\n }\n\n setValue(value) {\n const ss = this;\n let newValue = value;\n let optionText = [];\n let optionEl;\n let displayAs;\n let text;\n if (ss.multiple) {\n if (!Array.isArray(newValue)) newValue = [newValue];\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (newValue.indexOf(optionEl.value) >= 0) {\n optionEl.selected = true;\n } else {\n optionEl.selected = false;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n if (optionEl) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n }\n ss.selectEl.value = newValue;\n }\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText(optionText));\n }\n ss.$selectEl.trigger('change');\n return ss;\n }\n\n unsetValue() {\n const ss = this;\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText([]));\n }\n ss.$selectEl.find('option').each((optionIndex, optionEl) => {\n optionEl.selected = false;\n optionEl.checked = false;\n });\n ss.$selectEl[0].value = null;\n\n if (ss.$containerEl) {\n ss.$containerEl.find(`input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`).prop('checked', false);\n }\n ss.$selectEl.trigger('change');\n }\n\n getValue() {\n const ss = this;\n return ss.$selectEl.val();\n }\n\n get view() {\n const { params, $el } = this;\n let view;\n if (params.view) {\n view = params.view;\n }\n if (!view) {\n view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n }\n if (!view && params.openIn === 'page') {\n throw Error('Smart Select requires initialized View');\n }\n return view;\n }\n\n checkMaxLength() {\n const ss = this;\n const $containerEl = ss.$containerEl;\n if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n $containerEl.find('input[type=\"checkbox\"]').each((index, inputEl) => {\n if (!inputEl.checked) {\n $(inputEl).parents('li').addClass('disabled');\n } else {\n $(inputEl).parents('li').removeClass('disabled');\n }\n });\n } else {\n $containerEl.find('.disabled').removeClass('disabled');\n }\n }\n\n formatValueText(values) {\n const ss = this;\n let textValue;\n if (ss.params.formatValueText) {\n textValue = ss.params.formatValueText.call(ss, values, ss);\n } else {\n textValue = values.join(', ');\n }\n return textValue;\n }\n\n setValueText(value) {\n const ss = this;\n let valueArray = [];\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n valueArray = value;\n } else {\n valueArray = [value];\n }\n } else {\n ss.$selectEl.find('option').each((optionIndex, optionEl) => {\n const $optionEl = $(optionEl);\n if (optionEl.selected) {\n const displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n if (displayAs && typeof displayAs !== 'undefined') {\n valueArray.push(displayAs);\n } else {\n valueArray.push(optionEl.textContent.trim());\n }\n }\n });\n }\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText(valueArray));\n }\n }\n\n getItemsData() {\n const ss = this;\n const theme = ss.app.theme;\n const items = [];\n let previousGroupEl;\n ss.$selectEl.find('option').each((index, optionEl) => {\n const $optionEl = $(optionEl);\n const optionData = $optionEl.dataset();\n const optionImage = optionData.optionImage || ss.params.optionImage;\n const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n const optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n const optionIconAurora = theme === 'aurora' && (optionData.optionIconAurora || ss.params.optionIconAurora);\n const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd || optionIconAurora;\n const optionColor = optionData.optionColor;\n\n let optionClassName = optionData.optionClass || '';\n if ($optionEl[0].disabled) optionClassName += ' disabled';\n\n const optionGroupEl = $optionEl.parent('optgroup')[0];\n const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n let optionIsLabel = false;\n if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n optionIsLabel = true;\n previousGroupEl = optionGroupEl;\n items.push({\n groupLabel: optionGroupLabel,\n isLabel: optionIsLabel,\n });\n }\n items.push({\n value: $optionEl[0].value,\n text: $optionEl[0].textContent.trim(),\n selected: $optionEl[0].selected,\n groupEl: optionGroupEl,\n groupLabel: optionGroupLabel,\n image: optionImage,\n icon: optionIcon,\n iconIos: optionIconIos,\n iconMd: optionIconMd,\n iconAurora: optionIconAurora,\n color: optionColor,\n className: optionClassName,\n disabled: $optionEl[0].disabled,\n id: ss.id,\n hasMedia: optionHasMedia,\n checkbox: ss.inputType === 'checkbox',\n radio: ss.inputType === 'radio',\n inputName: ss.inputName,\n inputType: ss.inputType,\n });\n });\n ss.items = items;\n return items;\n }\n\n renderSearchbar() {\n const ss = this;\n if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n const searchbarHTML = `\n \n `;\n return searchbarHTML;\n }\n\n renderItem(item, index) {\n const ss = this;\n if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n\n function getIconContent(iconValue = '') {\n if (iconValue.indexOf(':') >= 0) {\n return iconValue.split(':')[1];\n }\n return '';\n }\n function getIconClass(iconValue = '') {\n if (iconValue.indexOf(':') >= 0) {\n let className = iconValue.split(':')[0];\n if (className === 'f7') className = 'f7-icons';\n if (className === 'material') className = 'material-icons';\n return className;\n }\n return iconValue;\n }\n\n let itemHtml;\n if (item.isLabel) {\n itemHtml = `${item.groupLabel} `;\n } else {\n let selected = item.selected;\n let disabled;\n if (ss.params.virtualList) {\n const ssValue = ss.getValue();\n selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n if (ss.multiple) {\n disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n }\n }\n\n const { icon, iconIos, iconMd, iconAurora } = item;\n const hasIcon = icon || iconIos || iconMd || iconAurora;\n const iconContent = getIconContent(icon || iconIos || iconMd || iconAurora || '');\n const iconClass = getIconClass(icon || iconIos || iconMd || iconAurora || '');\n\n itemHtml = `\n \n \n \n \n ${item.hasMedia ? `\n \n ` : ''}\n \n \n \n `;\n }\n return itemHtml;\n }\n\n renderItems() {\n const ss = this;\n if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n const itemsHtml = `\n ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n `;\n return itemsHtml;\n }\n\n renderPage() {\n const ss = this;\n if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass;\n const pageHtml = `\n \n
\n
\n
\n
\n ${pageTitle ? `
${pageTitle}
` : ''}\n ${ss.params.searchbar ? `
${ss.renderSearchbar()}
` : ''}\n
\n
\n ${ss.params.searchbar ? '
' : ''}\n
\n
\n
${!ss.params.virtualList && ss.renderItems(ss.items)} \n
\n
\n
\n `;\n return pageHtml;\n }\n\n renderPopup() {\n const ss = this;\n if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass || '';\n const popupHtml = `\n \n `;\n return popupHtml;\n }\n\n renderSheet() {\n const ss = this;\n if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n const sheetHtml = `\n \n
\n
\n
\n
\n
${!ss.params.virtualList && ss.renderItems(ss.items)} \n
\n
\n
\n
\n `;\n return sheetHtml;\n }\n\n renderPopover() {\n const ss = this;\n if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n const popoverHtml = `\n \n
\n
\n
${!ss.params.virtualList && ss.renderItems(ss.items)} \n
\n
\n
\n `;\n return popoverHtml;\n }\n\n scrollToSelectedItem() {\n const ss = this;\n const { params, $containerEl } = ss;\n if (!ss.opened) return ss;\n if (params.virtualList) {\n let selectedIndex;\n ss.vl.items.forEach((item, index) => {\n if (typeof selectedIndex === 'undefined' && item.selected) {\n selectedIndex = index;\n }\n });\n if (typeof selectedIndex !== 'undefined') {\n ss.vl.scrollToItem(selectedIndex);\n }\n } else {\n const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n if (!$selectedItemEl.length) return ss;\n const $pageContentEl = $containerEl.find('.page-content');\n $pageContentEl.scrollTop($selectedItemEl.offset().top - $pageContentEl.offset().top - parseInt($pageContentEl.css('padding-top'), 10));\n }\n return ss;\n }\n\n onOpen(type, containerEl) {\n const ss = this;\n const app = ss.app;\n const $containerEl = $(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem(query, item) {\n if (item.text && item.text.toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;\n return false;\n },\n });\n }\n if (ss.params.scrollToSelectedItem) {\n ss.scrollToSelectedItem();\n }\n\n // Init SB\n if (ss.params.searchbar) {\n let $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n\n if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n let $notFoundEl = null;\n\n if (typeof ss.params.appendSearchbarNotFound === 'string') {\n $notFoundEl = $(`${ss.params.appendSearchbarNotFound}
`);\n } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n $notFoundEl = $('Nothing found
');\n } else {\n $notFoundEl = ss.params.appendSearchbarNotFound;\n }\n\n if ($notFoundEl) {\n $containerEl.find('.page-content').append($notFoundEl[0]);\n }\n }\n\n const searchbarParams = Utils.extend({\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: `.smart-select-list-${ss.id}`,\n searchIn: '.item-title',\n }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});\n\n ss.searchbar = app.searchbar.create(searchbarParams);\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl.find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`).parents('label').once('click', () => {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n\n ss.$el.trigger('smartselect:open');\n ss.emit('local::open smartSelectOpen', ss);\n }\n\n onOpened() {\n const ss = this;\n\n ss.$el.trigger('smartselect:opened');\n ss.emit('local::opened smartSelectOpened', ss);\n }\n\n onClose() {\n const ss = this;\n if (ss.destroyed) return;\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n\n ss.$el.trigger('smartselect:close');\n ss.emit('local::close smartSelectClose', ss);\n }\n\n onClosed() {\n const ss = this;\n if (ss.destroyed) return;\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n\n ss.$el.trigger('smartselect:closed');\n ss.emit('local::closed smartSelectClosed', ss);\n }\n\n openPage() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const pageHtml = ss.renderPage(ss.items);\n\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n },\n },\n },\n });\n return ss;\n }\n\n openPopup() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popupHtml = ss.renderPopup(ss.items);\n\n const popupParams = {\n content: popupHtml,\n push: ss.params.popupPush,\n swipeToClose: ss.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams,\n },\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n }\n\n openSheet() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const sheetHtml = ss.renderSheet(ss.items);\n\n const sheetParams = {\n content: sheetHtml,\n backdrop: false,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n push: ss.params.sheetPush,\n swipeToClose: ss.params.sheetSwipeToClose,\n on: {\n sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n },\n },\n };\n\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams,\n },\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n }\n\n openPopover() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popoverHtml = ss.renderPopover(ss.items);\n const popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n on: {\n popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n },\n },\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams,\n },\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n }\n\n open(type) {\n const ss = this;\n if (ss.opened) return ss;\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n if (ss.$el) {\n ss.$el.trigger('smartselect:beforeopen', { prevent });\n }\n ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n if (prevented) return ss;\n const openIn = type || ss.params.openIn;\n ss[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ss;\n }\n\n close() {\n const ss = this;\n if (!ss.opened) return ss;\n if ((ss.params.routableModals && ss.view) || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', () => {\n Utils.nextTick(() => {\n if (ss.destroyed) return;\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n }\n\n init() {\n const ss = this;\n ss.attachEvents();\n ss.setValueText();\n }\n\n destroy() {\n const ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy');\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n Utils.deleteProps(ss);\n ss.destroyed = true;\n }\n}\n\nexport default SmartSelect;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport SmartSelect from './smart-select-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n setValueText: true,\n formatValueText: null,\n openIn: 'page', // or 'popup' or 'sheet' or 'popover'\n popupPush: false,\n popupSwipeToClose: undefined, // defaults to app\n sheetPush: false,\n sheetSwipeToClose: undefined, // defaults to app\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n popupTabletFullscreen: false,\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: undefined,\n searchbarSpellcheck: false,\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n scrollToSelectedItem: false,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: true,\n url: 'select/',\n cssClass: '',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n },\n },\n static: {\n SmartSelect,\n },\n create() {\n const app = this;\n app.smartSelect = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app,\n domProp: 'f7SmartSelect',\n }),\n {\n open(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) return ss.open();\n return undefined;\n },\n close(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) return ss.close();\n return undefined;\n },\n }\n );\n },\n\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.smart-select-init').each((index, smartSelectEl) => {\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.smart-select-init').each((index, smartSelectEl) => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.smart-select-init').each((index, smartSelectEl) => {\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each((index, smartSelectEl) => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n const app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n const ss = app.smartSelect.create(Utils.extend({ el: $clickedEl }, data));\n ss.open();\n }\n },\n },\n vnode: {\n 'smart-select-init': {\n insert(vnode) {\n const app = this;\n const smartSelectEl = vnode.elm;\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n },\n destroy(vnode) {\n const smartSelectEl = vnode.elm;\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nfunction getElMinSize(dimension, $el) {\n let minSize = $el.css(`min-${dimension}`);\n if (minSize === 'auto' || minSize === 'none') {\n minSize = 0;\n } else if (minSize.indexOf('px') >= 0) {\n minSize = parseFloat(minSize);\n } else if (minSize.indexOf('%') >= 0) {\n minSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(minSize) / 100;\n }\n return minSize;\n}\nfunction getElMaxSize(dimension, $el) {\n let maxSize = $el.css(`max-${dimension}`);\n if (maxSize === 'auto' || maxSize === 'none') {\n maxSize = null;\n } else if (maxSize.indexOf('px') >= 0) {\n maxSize = parseFloat(maxSize);\n } else if (maxSize.indexOf('%') >= 0) {\n maxSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(maxSize) / 100;\n }\n return maxSize;\n}\n\nconst Grid = {\n init() {\n const app = this;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let $resizeHandlerEl;\n let $prevResizableEl;\n let $nextResizableEl;\n let prevElSize;\n let prevElMinSize;\n let prevElMaxSize;\n let nextElSize;\n let nextElMinSize;\n let nextElMaxSize;\n let parentSize;\n let itemsInFlow;\n let gapSize;\n let isScrolling;\n\n function handleTouchStart(e) {\n if (isTouched || isMoved) return;\n $resizeHandlerEl = $(e.target).closest('.resize-handler');\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n $prevResizableEl = undefined;\n $nextResizableEl = undefined;\n isScrolling = undefined;\n }\n\n function handleTouchMove(e) {\n if (!isTouched) return;\n const isRow = $resizeHandlerEl.parent('.row').length === 1;\n const sizeProp = isRow ? 'height' : 'width';\n const getSizeProp = isRow ? 'offsetHeight' : 'offsetWidth';\n if (!isMoved) {\n $prevResizableEl = $resizeHandlerEl.parent(isRow ? '.row' : '.col');\n if ($prevResizableEl.length && (!$prevResizableEl.hasClass('resizable') || $prevResizableEl.hasClass('resizable-fixed'))) {\n $prevResizableEl = $prevResizableEl.prevAll('.resizable:not(.resizable-fixed)').eq(0);\n }\n $nextResizableEl = $prevResizableEl.next(isRow ? '.row' : '.col');\n if ($nextResizableEl.length && (!$nextResizableEl.hasClass('resizable') || $nextResizableEl.hasClass('resizable-fixed'))) {\n $nextResizableEl = $nextResizableEl.nextAll('.resizable:not(.resizable-fixed)').eq(0);\n }\n\n if ($prevResizableEl.length) {\n prevElSize = $prevResizableEl[0][getSizeProp];\n prevElMinSize = getElMinSize(sizeProp, $prevResizableEl);\n prevElMaxSize = getElMaxSize(sizeProp, $prevResizableEl);\n parentSize = $prevResizableEl.parent()[0][getSizeProp];\n itemsInFlow = $prevResizableEl.parent().children(isRow ? '.row' : '[class*=\"col-\"], .col').length;\n gapSize = parseFloat($prevResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));\n }\n if ($nextResizableEl.length) {\n nextElSize = $nextResizableEl[0][getSizeProp];\n nextElMinSize = getElMinSize(sizeProp, $nextResizableEl);\n nextElMaxSize = getElMaxSize(sizeProp, $nextResizableEl);\n if (!$prevResizableEl.length) {\n parentSize = $nextResizableEl.parent()[0][getSizeProp];\n itemsInFlow = $nextResizableEl.parent().children(isRow ? '.row' : '[class*=\"col-\"], .col').length;\n gapSize = parseFloat($nextResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));\n }\n }\n }\n\n isMoved = true;\n const touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined' && !isRow) {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n const isAbsolute = $prevResizableEl.hasClass('resizable-absolute') || $nextResizableEl.hasClass('resizable-absolute');\n const resizeNextEl = !isRow || (isRow && !isAbsolute);\n\n if ((resizeNextEl && !$nextResizableEl.length) || !$prevResizableEl.length) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n e.preventDefault();\n\n let diff = isRow\n ? touchCurrentY - touchStartY\n : touchCurrentX - touchStartX;\n\n let prevElNewSize;\n let nextElNewSize;\n if ($prevResizableEl.length) {\n prevElNewSize = prevElSize + diff;\n if (prevElNewSize < prevElMinSize) {\n prevElNewSize = prevElMinSize;\n diff = prevElNewSize - prevElSize;\n }\n if (prevElMaxSize && prevElNewSize > prevElMaxSize) {\n prevElNewSize = prevElMaxSize;\n diff = prevElNewSize - prevElSize;\n }\n }\n if ($nextResizableEl.length && resizeNextEl) {\n nextElNewSize = nextElSize - diff;\n if (nextElNewSize < nextElMinSize) {\n nextElNewSize = nextElMinSize;\n diff = nextElSize - nextElNewSize;\n prevElNewSize = prevElSize + diff;\n }\n if (nextElMaxSize && nextElNewSize > nextElMaxSize) {\n nextElNewSize = nextElMaxSize;\n diff = nextElSize - nextElNewSize;\n prevElNewSize = prevElSize + diff;\n }\n }\n\n if (isAbsolute) {\n $prevResizableEl[0].style[sizeProp] = `${prevElNewSize}px`;\n if (resizeNextEl) {\n $nextResizableEl[0].style[sizeProp] = `${nextElNewSize}px`;\n }\n $prevResizableEl.trigger('grid:resize');\n $nextResizableEl.trigger('grid:resize');\n app.emit('gridResize', $prevResizableEl[0]);\n app.emit('gridResize', $nextResizableEl[0]);\n return;\n }\n\n const gapAddSize = (itemsInFlow - 1) * gapSize / itemsInFlow;\n const gapAddSizeCSS = isRow\n ? `${itemsInFlow - 1} * var(--f7-grid-row-gap) / ${itemsInFlow}`\n : '(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)';\n const prevElNewSizeNormalized = prevElNewSize + gapAddSize;\n const nextElNewSizeNormalized = nextElNewSize + gapAddSize;\n $prevResizableEl[0].style[sizeProp] = `calc(${prevElNewSizeNormalized / parentSize * 100}% - ${gapAddSizeCSS})`;\n $nextResizableEl[0].style[sizeProp] = `calc(${nextElNewSizeNormalized / parentSize * 100}% - ${gapAddSizeCSS})`;\n $prevResizableEl.trigger('grid:resize');\n $nextResizableEl.trigger('grid:resize');\n app.emit('gridResize', $prevResizableEl[0]);\n app.emit('gridResize', $nextResizableEl[0]);\n }\n\n function handleTouchEnd() {\n if (!isTouched) return;\n if (!isMoved) {\n isTouched = false;\n }\n isTouched = false;\n isMoved = false;\n }\n\n $(document).on(app.touchEvents.start, '.col > .resize-handler, .row > .resize-handler', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n },\n};\n\nexport default {\n name: 'grid',\n create() {\n const app = this;\n Utils.extend(app, {\n grid: {\n init: Grid.init.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n app.grid.init();\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Calendar extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const calendar = this;\n\n calendar.params = Utils.extend({}, app.params.calendar, params);\n\n let $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $(calendar.params.containerEl);\n if ($containerEl.length === 0) return calendar;\n }\n\n let $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $(calendar.params.inputEl);\n }\n\n const isHorizontal = calendar.params.direction === 'horizontal';\n\n let inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n\n Utils.extend(calendar, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal,\n inverter,\n animating: false,\n hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple,\n });\n calendar.dayFormatter = new Intl.DateTimeFormat(calendar.params.locale, { day: 'numeric' });\n calendar.monthFormatter = new Intl.DateTimeFormat(calendar.params.locale, { month: 'long' });\n calendar.yearFormatter = new Intl.DateTimeFormat(calendar.params.locale, { year: 'numeric' });\n calendar.timeSelectorFormatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);\n\n // Auto names\n let { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar.params;\n const { monthNamesIntl, monthNamesShortIntl, dayNamesIntl, dayNamesShortIntl } = calendar.getIntlNames();\n if (monthNames === 'auto') monthNames = monthNamesIntl;\n if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n if (dayNames === 'auto') dayNames = dayNamesIntl;\n if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n\n Utils.extend(calendar, {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort,\n });\n\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onInputClear() {\n calendar.setValue([]);\n if (calendar.opened) {\n calendar.update();\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (calendar.destroyed || !calendar.params) return;\n if (calendar.isPopover()) return;\n if (!calendar.opened || calendar.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n Utils.extend(calendar, {\n attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n calendar.$inputEl.on('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n calendar.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n calendar.$inputEl.off('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n if (calendar.$inputEl[0]) {\n delete calendar.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let currentTranslate;\n let wrapperWidth;\n let wrapperHeight;\n let percentage;\n let touchesDiff;\n let isScrolling;\n\n const { $el, $wrapperEl } = calendar;\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = (new Date()).getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const { isHorizontal: isH } = calendar;\n\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isH && isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = ((calendar.monthsTranslate * calendar.inverter) + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform(`translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n touchEndTime = new Date().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) calendar.nextMonth();\n else calendar.prevMonth();\n } else if (app.rtl) calendar.prevMonth();\n else calendar.nextMonth();\n } else if (percentage <= -0.5) {\n if (app.rtl) calendar.prevMonth();\n else calendar.nextMonth();\n } else if (percentage >= 0.5) {\n if (app.rtl) calendar.nextMonth();\n else calendar.prevMonth();\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n\n function handleDayClick(e) {\n if (!allowItemClick) return;\n let $dayEl = $(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n $dayEl = $(e.target);\n }\n if ($dayEl.length === 0) return;\n if ($dayEl.hasClass('calendar-day-disabled')) return;\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n }\n const dateYear = parseInt($dayEl.attr('data-year'), 10);\n const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n const dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit(\n 'local::dayClick calendarDayClick',\n calendar,\n $dayEl[0],\n dateYear,\n dateMonth,\n dateDay\n );\n if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n if (calendar.hasTimePicker) {\n if (calendar.value && calendar.value[0]) {\n valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n } else {\n valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n }\n }\n calendar.addValue(valueToAdd);\n }\n if (calendar.params.closeOnSelect) {\n if (\n (calendar.params.rangePicker && calendar.value.length === 2)\n || !calendar.params.rangePicker\n ) {\n calendar.close();\n }\n }\n }\n\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n\n function onNextYearClick() {\n calendar.nextYear();\n }\n\n function onPrevYearClick() {\n calendar.prevYear();\n }\n\n function onMonthSelectorClick() {\n $el.append(calendar.renderMonthPicker());\n }\n function onMonthSelectorItemClick() {\n const $clickedEl = $(this);\n if ($clickedEl.hasClass('calendar-month-picker-item-current')) {\n $el.find('.calendar-month-picker').remove();\n return;\n }\n $el.find('.calendar-month-picker-item-current').add($clickedEl).toggleClass('calendar-month-picker-item-current');\n const index = $clickedEl.index();\n const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const monthIndex = calendar.currentMonth;\n const diff = localeMonthIndex - monthIndex;\n const diffIndex = index - diff;\n calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n setTimeout(() => {\n $el.find('.calendar-month-picker').remove();\n }, 200);\n }\n\n function onYearSelectorClick() {\n $el.append(calendar.renderYearPicker());\n const $currentEl = $el.find('.calendar-year-picker-item-current');\n const $yearPickerEl = $el.find('.calendar-year-picker');\n if (!$currentEl || !$currentEl.length) return;\n $yearPickerEl.scrollTop(\n $currentEl[0].offsetTop\n - $yearPickerEl[0].offsetHeight / 2\n + $currentEl[0].offsetHeight / 2\n );\n }\n\n function onYearSelectorItemClick() {\n const $clickedEl = $(this);\n if ($clickedEl.hasClass('calendar-year-picker-item-current')) {\n $el.find('.calendar-year-picker').remove();\n return;\n }\n $el.find('.calendar-year-picker-item-current').add($clickedEl).toggleClass('calendar-year-picker-item-current');\n const year = parseInt($clickedEl.attr('data-year'), 10);\n calendar.setYearMonth(year, undefined, 0);\n setTimeout(() => {\n $el.find('.calendar-year-picker').remove();\n }, 200);\n }\n\n function onTimeSelectorClick() {\n calendar.openTimePicker();\n }\n function onTimePickerCloseClick() {\n calendar.closeTimePicker();\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').on('click', onMonthSelectorClick);\n $el.on('click', '.calendar-month-picker-item', onMonthSelectorItemClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').on('click', onYearSelectorClick);\n $el.on('click', '.calendar-year-picker-item', onYearSelectorItemClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n $el.on('click', '.calendar-time-picker-close', onTimePickerCloseClick);\n }\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').off('click', onMonthSelectorClick);\n $el.off('click', '.calendar-month-picker-item', onMonthSelectorItemClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').off('click', onYearSelectorClick);\n $el.off('click', '.calendar-year-picker-item', onYearSelectorItemClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n $el.off('click', '.calendar-time-picker-close', onTimePickerCloseClick);\n }\n $wrapperEl.off('click', handleDayClick);\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n };\n\n calendar.init();\n\n return calendar;\n }\n\n get view() {\n const { $inputEl, app, params } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n getIntlNames() {\n const calendar = this;\n const locale = calendar.params.locale;\n\n const monthNamesIntl = [];\n const monthNamesShortIntl = [];\n const dayNamesIntl = [];\n const dayNamesShortIntl = [];\n const formatterMonthNames = new Intl.DateTimeFormat(locale, { month: 'long' });\n const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, { month: 'short' });\n const formatterDayNames = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n const formatterDayNamesShort = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n let year;\n let yearStarted;\n let yearEnded;\n for (let i = 0; i < 24; i += 1) {\n const date = new Date().setMonth(i, 1);\n const currentYear = calendar.yearFormatter.format(date);\n\n if (year && currentYear !== year) {\n if (yearStarted) yearEnded = true;\n yearStarted = true;\n year = currentYear;\n }\n if (!year) {\n year = currentYear;\n }\n if (yearStarted && year === currentYear && !yearEnded) {\n monthNamesIntl.push(formatterMonthNames.format(date));\n monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n }\n }\n const weekDay = new Date().getDay();\n for (let i = 0; i < 7; i += 1) {\n const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n dayNamesIntl.push(formatterDayNames.format(date));\n dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n }\n\n return {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl,\n };\n }\n\n normalizeDate(date) {\n const calendar = this;\n const d = new Date(date);\n if (calendar.hasTimePicker) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n }\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n\n normalizeValues(values) {\n const calendar = this;\n let newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map(val => calendar.normalizeDate(val));\n }\n return newValues;\n }\n\n initInput() {\n const calendar = this;\n if (!calendar.$inputEl) return;\n if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n }\n\n isPopover() {\n const calendar = this;\n const { app, modal, params } = calendar;\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') return true;\n if (app.device.ios) {\n return !!app.device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n if (app.device.desktop && app.theme === 'aurora') {\n return true;\n }\n }\n return false;\n }\n\n formatDate(d) {\n const calendar = this;\n const date = new Date(d);\n const year = date.getFullYear();\n const month = date.getMonth();\n const month1 = month + 1;\n const day = date.getDate();\n const weekDay = date.getDay();\n const { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar;\n const { dateFormat, locale } = calendar.params;\n\n function twoDigits(number) {\n return (number < 10) ? `0${number}` : number;\n }\n if (typeof dateFormat === 'string') {\n const tokens = {\n yyyy: year,\n yy: String(year).substring(2),\n mm: twoDigits(month1),\n m: month1,\n MM: monthNames[month],\n M: monthNamesShort[month],\n dd: twoDigits(day),\n d: day,\n DD: dayNames[weekDay],\n D: dayNamesShort[weekDay],\n };\n if (calendar.params.timePicker) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n let hours12 = hours;\n if (hours > 12) hours12 = hours - 12;\n if (hours === 0) hours12 = 12;\n const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n\n Object.assign(tokens, {\n HH: twoDigits(hours),\n H: hours,\n hh: twoDigits(hours12),\n h: hours12,\n ss: twoDigits(seconds),\n s: seconds,\n ':mm': twoDigits(minutes),\n ':m': minutes,\n a,\n A: a.toUpperCase(),\n });\n }\n const regexp = new RegExp(\n Object.keys(tokens).map(t => `(${t})`).join('|'),\n 'g',\n );\n return dateFormat.replace(regexp, (token) => {\n if (token in tokens) return tokens[token];\n return token;\n });\n }\n if (typeof dateFormat === 'function') {\n return dateFormat(date);\n }\n // Intl Object\n const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n return formatter.format(date);\n }\n\n formatValue() {\n const calendar = this;\n const { value } = calendar;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value\n .map(v => calendar.formatDate(v))\n .join(calendar.params.rangePicker ? ' - ' : ', ');\n }\n\n addValue(newValue) {\n const calendar = this;\n const { multiple, rangePicker, rangePickerMinDays, rangePickerMaxDays } = calendar.params;\n if (multiple) {\n if (!calendar.value) calendar.value = [];\n let inValuesIndex;\n for (let i = 0; i < calendar.value.length; i += 1) {\n if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) calendar.value = [];\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n\n if ((calendar.value.length === 0\n || ((Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000) && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)))) calendar.value.push(newValue);\n else calendar.value = [];\n\n calendar.value.sort((a, b) => a - b);\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n }\n\n setValue(values) {\n const calendar = this;\n const currentValue = calendar.value;\n if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {\n let equal = true;\n currentValue.forEach((v, index) => {\n if (v !== values[index]) equal = false;\n });\n if (equal) return;\n }\n calendar.value = values;\n calendar.updateValue();\n }\n\n getValue() {\n const calendar = this;\n return calendar.value;\n }\n\n updateValue(onlyHeader) {\n const calendar = this;\n const {\n $el,\n $wrapperEl,\n $inputEl,\n value,\n params,\n } = calendar;\n let i;\n if ($el && $el.length > 0) {\n $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected');\n let valueDate;\n if (params.rangePicker && value.length === 2) {\n for (i = new Date(value[0]).getTime(); i <= new Date(value[1]).getTime(); i += 24 * 60 * 60 * 1000) {\n valueDate = new Date(i);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n valueDate = new Date(new Date(value[1]).getTime());\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new Date(value[i]);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n\n if ($el && $el.length > 0 && calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter.format(value[0]) : calendar.params.timePickerPlaceholder);\n }\n\n if (($inputEl && $inputEl.length) || params.header) {\n const inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n }\n\n updateCurrentMonthYear(dir) {\n const calendar = this;\n const { $months, $el, monthNames } = calendar;\n let currentLocaleMonth;\n let currentLocaleYear;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n currentLocaleYear = $months.eq(1).attr('data-locale-year');\n } else {\n calendar.currentMonth = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-locale-month');\n currentLocaleYear = $months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-locale-year');\n }\n $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n $el.find('.current-year-value').text(currentLocaleYear);\n }\n\n update() {\n const calendar = this;\n const { currentYear, currentMonth, $wrapperEl } = calendar;\n const currentDate = new Date(currentYear, currentMonth);\n const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n const currentMonthHtml = calendar.renderMonth(currentDate);\n const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n\n $wrapperEl\n .transition(0)\n .html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`)\n .transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each((index, monthEl) => {\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n monthEl\n );\n });\n }\n\n onMonthChangeStart(dir) {\n const calendar = this;\n const { $months, currentYear, currentMonth } = calendar;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n\n calendar.emit(\n 'local::monthYearChangeStart calendarMonthYearChangeStart',\n calendar,\n currentYear,\n currentMonth\n );\n }\n\n onMonthChangeEnd(dir, rebuildBoth) {\n const calendar = this;\n const { currentYear, currentMonth, $wrapperEl, monthsTranslate } = calendar;\n calendar.animating = false;\n let nextMonthHtml;\n let prevMonthHtml;\n let currentMonthHtml;\n $wrapperEl\n .find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)')\n .remove();\n\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n const $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar,\n dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]\n );\n calendar.emit(\n 'local::monthYearChangeEnd calendarMonthYearChangeEnd',\n calendar,\n currentYear,\n currentMonth\n );\n }\n\n setMonthsTranslate(translate) {\n const calendar = this;\n const { $months, isHorizontal: isH, inverter } = calendar;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n const currentMonthTranslate = -translate * 100 * inverter;\n const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months.eq(0)\n .transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`)\n .addClass('calendar-month-prev');\n $months.eq(1)\n .transform(`translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`)\n .addClass('calendar-month-current');\n $months.eq(2)\n .transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`)\n .addClass('calendar-month-next');\n }\n\n nextMonth(transition) {\n const calendar = this;\n const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n const nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n const nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n const nextDate = new Date(nextYear, nextMonth);\n const nextDateTime = nextDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new Date(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n const nextMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next'))\n .transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`)\n .addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar.$months.eq(calendar.$months.length - 1)[0]\n );\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n const translate = (calendar.monthsTranslate * 100) * inverter;\n\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n }\n\n prevMonth(transition) {\n const calendar = this;\n const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n const prevDate = new Date(prevYear, prevMonth + 1, -1);\n const prevDateTime = prevDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n const prevMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev'))\n .transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`)\n .addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar.$months.eq(0)[0]\n );\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n const translate = (calendar.monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n }\n\n resetMonth(transition = '') {\n const calendar = this;\n const { $wrapperEl, inverter, isHorizontal: isH, monthsTranslate } = calendar;\n const translate = (monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n }\n // eslint-disable-next-line\n setYearMonth(year, month, transition) {\n const calendar = this;\n const { params, isHorizontal: isH, $wrapperEl, inverter } = calendar;\n // eslint-disable-next-line\n if (typeof year === 'undefined') year = calendar.currentYear;\n // eslint-disable-next-line\n if (typeof month === 'undefined') month = calendar.currentMonth;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) transition = 0;\n }\n let targetDate;\n if (year < calendar.currentYear) {\n targetDate = new Date(year, month + 1, -1).getTime();\n } else {\n targetDate = new Date(year, month).getTime();\n }\n if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n const dir = targetDate > currentDate ? 'next' : 'prev';\n const newMonthHTML = calendar.renderMonth(new Date(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n const prevTranslate = calendar.monthsTranslate;\n let monthTranslate;\n const transitionEndCallback = !calendar.animating && transition !== 0;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months\n .eq(calendar.$months.length - 1)\n .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n .addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) calendar.$months.eq(0).remove();\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months\n .eq(0)\n .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n .addClass('calendar-month-prev');\n }\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n dir === 'next'\n ? calendar.$months.eq(calendar.$months.length - 1)[0]\n : calendar.$months.eq(0)[0]\n );\n\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n const wrapperTranslate = (calendar.monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate || transition === 0) {\n calendar.onMonthChangeEnd(dir, true);\n }\n }\n\n nextYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n }\n\n prevYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n }\n // eslint-disable-next-line\n dateInRange(dayDate, range) {\n let match = false;\n let i;\n if (!range) return false;\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if ((dayDate <= new Date(range[i].to).getTime()) && (dayDate >= new Date(range[i].from).getTime())) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (range[i].date) {\n if (dayDate === new Date(range[i].date).getTime()) {\n match = true;\n }\n } else if (dayDate === new Date(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if ((dayDate <= new Date(range.to).getTime()) && (dayDate >= new Date(range.from).getTime())) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new Date(range.to).getTime()) {\n match = true;\n }\n }\n } else if (range.date) {\n match = dayDate === new Date(range.date).getTime();\n } else if (typeof range === 'function') {\n match = range(new Date(dayDate));\n }\n return match;\n }\n // eslint-disable-next-line\n daysInMonth(date) {\n const d = new Date(date);\n return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n }\n\n renderMonths(date) {\n const calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return `\n \n ${calendar.renderMonth(date, 'prev')}\n ${calendar.renderMonth(date)}\n ${calendar.renderMonth(date, 'next')}\n
\n `.trim();\n }\n\n renderMonth(d, offset) {\n const calendar = this;\n const { params, value } = calendar;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n let date = new Date(d);\n let year = date.getFullYear();\n let month = date.getMonth();\n let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));\n if (localeMonth < 0) localeMonth = month;\n let localeYear = calendar.yearFormatter.format(date);\n\n if (offset === 'next') {\n if (month === 11) date = new Date(year + 1, 0);\n else date = new Date(year, month + 1, 1);\n }\n if (offset === 'prev') {\n if (month === 0) date = new Date(year - 1, 11);\n else date = new Date(year, month - 1, 1);\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));\n if (localeMonth < 0) localeMonth = month;\n localeYear = calendar.yearFormatter.format(date);\n }\n\n const currentValues = [];\n const today = new Date().setHours(0, 0, 0, 0);\n const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n const rows = 6;\n const cols = 7;\n const daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - (10 * 24 * 60 * 60 * 1000));\n const daysInMonth = calendar.daysInMonth(date);\n const minDayNumber = params.firstDay === 6 ? 0 : 1;\n\n let monthHtml = '';\n let dayIndex = 0 + (params.firstDay - 1);\n let disabled;\n let hasEvents;\n let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n\n if (value && value.length) {\n for (let i = 0; i < value.length; i += 1) {\n currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n }\n }\n\n for (let row = 1; row <= rows; row += 1) {\n let rowHtml = '';\n for (let col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n let dayDate;\n let dayNumber = dayIndex - firstDayOfMonthIndex;\n let addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n\n const weekDayIndex = ((col - 1) + params.firstDay > 6)\n ? ((col - 1 - 7) + params.firstDay)\n : ((col - 1) + params.firstDay);\n\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n } else {\n dayDate = new Date(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) addClass += ' calendar-day-today';\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) addClass += ' calendar-day-selected';\n } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Events\n let eventsHtml = '';\n hasEvents = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvents = true;\n }\n }\n if (hasEvents) {\n addClass += ' calendar-day-has-events';\n eventsHtml = `\n \n \n \n `;\n if (Array.isArray(params.events)) {\n const eventDots = [];\n params.events.forEach((ev) => {\n const color = ev.color || '';\n if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n eventDots.push(color);\n }\n });\n eventsHtml = `\n \n ${eventDots.map(color => `\n \n `.trim()).join('')}\n \n `;\n }\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (let k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += ` ${params.rangesClasses[k].cssClass}`;\n }\n }\n }\n // Disabled\n disabled = false;\n if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n\n dayDate = new Date(dayDate);\n const dayYear = dayDate.getFullYear();\n const dayMonth = dayDate.getMonth();\n const dayNumberDisplay = calendar.dayFormatter.format(dayDate);\n rowHtml += `\n \n ${dayNumberDisplay}${eventsHtml} \n
`.trim();\n }\n monthHtml += `${rowHtml}
`;\n }\n monthHtml = `${monthHtml}
`;\n return monthHtml;\n }\n\n renderWeekHeader() {\n const calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n const { params } = calendar;\n let weekDaysHtml = '';\n for (let i = 0; i < 7; i += 1) {\n const dayIndex = (i + params.firstDay > 6)\n ? ((i - 7) + params.firstDay)\n : (i + params.firstDay);\n const dayName = calendar.dayNamesShort[dayIndex];\n weekDaysHtml += `${dayName}
`;\n }\n return `\n \n `.trim();\n }\n\n renderMonthSelector() {\n const calendar = this;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n\n return `\n \n
\n \n \n ${calendar.params.monthPicker ? `\n
\n ` : `\n
\n `}\n
\n \n \n
\n `.trim();\n }\n\n renderMonthPicker() {\n const calendar = this;\n const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n return `\n \n ${calendar.monthNames.map((m, index) => `\n
\n ${m} \n
\n `).join('')}\n
\n `;\n }\n\n renderYearSelector() {\n const calendar = this;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n return `\n \n
\n \n \n ${calendar.params.yearPicker ? `\n
\n ` : `\n
\n `}\n
\n \n \n
\n `.trim();\n }\n\n renderYearPicker() {\n const calendar = this;\n const currentYear = calendar.currentYear;\n let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n if (calendar.params.minDate) {\n yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n }\n let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n if (calendar.params.maxDate) {\n yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n }\n const years = [];\n for (let i = yearMin; i <= yearMax; i += 1) {\n years.push(i);\n }\n return `\n \n ${years.map(year => `\n
\n ${calendar.yearFormatter.format(new Date().setFullYear(year))} \n
\n `).join('')}\n
\n `;\n }\n\n // eslint-disable-next-line\n renderTimeSelector() {\n const calendar = this;\n const value = calendar.value && calendar.value[0];\n let timeString;\n if (value) timeString = calendar.timeSelectorFormatter.format(value);\n return `\n \n `;\n }\n\n renderHeader() {\n const calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return `\n \n `.trim();\n }\n\n renderFooter() {\n const calendar = this;\n const app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return `\n \n `.trim();\n }\n\n renderToolbar() {\n const calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n return `\n \n `.trim();\n }\n // eslint-disable-next-line\n renderInline() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const inlineHtml = `\n \n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n
\n ${calendar.renderMonths(date)}\n
\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n
\n `.trim();\n\n return inlineHtml;\n }\n\n renderCustomModal() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const sheetHtml = `\n \n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n
\n ${calendar.renderMonths(date)}\n
\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n
\n `.trim();\n\n return sheetHtml;\n }\n\n renderSheet() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const sheetHtml = `\n \n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n
\n ${calendar.renderMonths(date)}\n
\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n
\n `.trim();\n\n return sheetHtml;\n }\n\n renderPopover() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const popoverHtml = `\n \n
\n
\n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n
\n ${calendar.renderMonths(date)}\n
\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n
\n
\n
\n `.trim();\n\n return popoverHtml;\n }\n\n render() {\n const calendar = this;\n const { params } = calendar;\n if (params.render) return params.render.call(calendar);\n if (!calendar.inline) {\n let modalType = params.openIn;\n if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n\n if (modalType === 'popover') return calendar.renderPopover();\n if (modalType === 'sheet') return calendar.renderSheet();\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n }\n\n openTimePicker() {\n const calendar = this;\n const { $el, app } = calendar;\n if (!$el || !$el.length) return;\n $el.append('
');\n const hoursArr = [];\n const minutesArr = [];\n for (let i = 0; i <= 23; i += 1) { hoursArr.push(i); }\n for (let i = 0; i <= 59; i += 1) { minutesArr.push(i); }\n let value;\n if (calendar.value && calendar.value.length) {\n value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n } else {\n value = [new Date().getHours(), new Date().getMinutes()];\n }\n calendar.timePickerInstance = app.picker.create({\n containerEl: $el.find('.calendar-time-picker'),\n value,\n toolbar: true,\n rotateEffect: false,\n toolbarCloseText: calendar.params.toolbarCloseText,\n cols: [\n {\n values: hoursArr,\n },\n {\n divider: true,\n content: ':',\n },\n {\n values: minutesArr,\n displayValues: minutesArr.map(m => (m < 10 ? `0${m}` : m)),\n },\n ],\n });\n calendar.timePickerInstance.$el.find('.toolbar a').removeClass('sheet-close popover-close').addClass('calendar-time-picker-close');\n }\n\n closeTimePicker() {\n const calendar = this;\n if (calendar.timePickerInstance) {\n const [hours, minutes] = calendar.timePickerInstance.value.map(v => parseInt(v, 10));\n let value = calendar.value && calendar.value.length && calendar.value[0];\n if (!value) {\n value = new Date();\n value.setHours(hours, minutes, 0, 0);\n } else {\n value = new Date(value);\n value.setHours(hours, minutes);\n }\n calendar.setValue([value]);\n calendar.timePickerInstance.close();\n calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el && calendar.$el.length) {\n calendar.$el.find('.calendar-time-picker').remove();\n }\n }\n\n onOpen() {\n const calendar = this;\n const { initialized, $el, app, $inputEl, inline, value, params } = calendar;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) calendar.setValue(value, 0);\n else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) calendar.updateValue();\n else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n calendar.initialized = true;\n\n calendar.$months.each((index, monthEl) => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open');\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open');\n }\n calendar.emit('local::open calendarOpen', calendar);\n }\n\n onOpened() {\n const calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened');\n }\n calendar.emit('local::opened calendarOpened', calendar);\n }\n\n onClose() {\n const calendar = this;\n const app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n\n if (calendar.$inputEl) {\n if (app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n } else {\n const validate = calendar.$inputEl.attr('validate');\n const required = calendar.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(calendar.$inputEl);\n }\n }\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close');\n }\n calendar.emit('local::close calendarClose', calendar);\n }\n\n onClosed() {\n const calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n\n if (!calendar.inline) {\n Utils.nextTick(() => {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed');\n }\n calendar.emit('local::closed calendarClosed', calendar);\n }\n\n open() {\n const calendar = this;\n const { app, opened, inline, $inputEl, params } = calendar;\n if (opened) return;\n\n if (inline) {\n calendar.$el = $(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n let modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n const modalContent = calendar.render();\n\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop: params.backdrop === true || (modalType === 'popover' && app.params.popover.backdrop !== false && params.backdrop !== false),\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $(calendar.$el).find('.calendar-close').once('click', () => {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened() { calendar.onOpened(); },\n close() { calendar.onClose(); },\n closed() { calendar.onClosed(); },\n },\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && calendar.view) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: {\n path: calendar.url,\n [modalType]: modalParams,\n },\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n }\n\n close() {\n const calendar = this;\n const { opened, inline } = calendar;\n if (!opened) return;\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals && calendar.view) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n }\n\n init() {\n const calendar = this;\n\n calendar.initInput();\n\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n }\n\n destroy() {\n const calendar = this;\n if (calendar.destroyed) return;\n const { $el } = calendar;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) $el.trigger('calendar:beforedestroy');\n\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n\n if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n Utils.deleteProps(calendar);\n calendar.destroyed = true;\n }\n}\n\nexport default Calendar;\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Calendar from './calendar-class';\n\nexport default {\n name: 'calendar',\n static: {\n Calendar,\n },\n create() {\n const app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app,\n domProp: 'f7Calendar',\n });\n app.calendar.close = function close(el = '.calendar') {\n const $el = $(el);\n if ($el.length === 0) return;\n const calendar = $el[0].f7Calendar;\n if (!calendar || (calendar && !calendar.opened)) return;\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n dateFormat: undefined,\n monthNames: 'auto',\n monthNamesShort: 'auto',\n dayNames: 'auto',\n dayNamesShort: 'auto',\n locale: undefined,\n firstDay: 1, // First day of the week, Monday\n weekendDays: [0, 6], // Sunday and Saturday\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1, // when calendar is used as rangePicker\n rangePickerMaxDays: 0, // when calendar is used as rangePicker, 0 means unlimited\n direction: 'horizontal', // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null, // dates range of disabled days\n events: null, // dates range of days with events\n rangesClasses: null, // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n monthPicker: true,\n yearSelector: true,\n yearPicker: true,\n yearPickerMin: undefined,\n yearPickerMax: undefined,\n timePicker: false,\n timePickerFormat: { hour: 'numeric', minute: 'numeric' },\n timePickerPlaceholder: 'Select time',\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet' or 'customModal'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n toolbar: true,\n toolbarCloseText: 'Done',\n footer: false,\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'date/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport pickerColumn from './picker-column';\n\nclass Picker extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const picker = this;\n picker.params = Utils.extend({}, app.params.picker, params);\n\n let $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $(picker.params.containerEl);\n if ($containerEl.length === 0) return picker;\n }\n\n let $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $(picker.params.inputEl);\n }\n\n\n let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n if (picker.params.scrollToEl) {\n const scrollToEl = $(picker.params.scrollToEl);\n if (scrollToEl.length > 0) {\n $scrollToEl = scrollToEl;\n }\n }\n\n Utils.extend(picker, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix: app.device.ios || ((window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0) && !app.device.android),\n cols: [],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $scrollToEl,\n initialized: false,\n opened: false,\n url: picker.params.url,\n });\n\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onHtmlClick(e) {\n if (picker.destroyed || !picker.params) return;\n const $targetEl = $(e.target);\n if (picker.isPopover()) return;\n if (!picker.opened || picker.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n picker.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n Utils.extend(picker, {\n attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n picker.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n if (picker.$inputEl[0]) {\n delete picker.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n\n picker.init();\n\n return picker;\n }\n\n get view() {\n const { app, params, $inputEl } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n initInput() {\n const picker = this;\n if (!picker.$inputEl) return;\n if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n }\n\n resizeCols() {\n const picker = this;\n if (!picker.opened) return;\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, 0, false);\n }\n }\n }\n\n isPopover() {\n const picker = this;\n const { app, modal, params } = picker;\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') return true;\n if (app.device.ios) {\n return !!app.device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n if (app.device.desktop && app.theme === 'aurora') {\n return true;\n }\n }\n return false;\n }\n\n formatValue() {\n const picker = this;\n const { value, displayValue } = picker;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n }\n\n setValue(values, transition) {\n const picker = this;\n let valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex], transition);\n valueIndex += 1;\n }\n }\n }\n\n getValue() {\n const picker = this;\n return picker.value;\n }\n\n updateValue(forceValues) {\n const picker = this;\n const newValue = forceValues || [];\n const newDisplayValue = [];\n let column;\n if (picker.cols.length === 0) {\n const noDividerColumns = picker.params.cols.filter(c => !c.divider);\n for (let i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n newValue.push(picker.cols[i].value);\n newDisplayValue.push(picker.cols[i].displayValue);\n }\n }\n }\n\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n }\n\n initColumn(colEl, updateItems) {\n const picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n }\n // eslint-disable-next-line\n destroyColumn(colEl) {\n const picker = this;\n const $colEl = $(colEl);\n const index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n }\n\n renderToolbar() {\n const picker = this;\n if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n return `\n \n `.trim();\n }\n // eslint-disable-next-line\n renderColumn(col, onlyItems) {\n const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${col.cssClass || ''}`;\n let columnHtml;\n let columnItemsHtml;\n\n if (col.divider) {\n columnHtml = `\n ${col.content}
\n `;\n } else {\n columnItemsHtml = col.values.map((value, index) => `\n \n ${col.displayValues ? col.displayValues[index] : value} \n
\n `).join('');\n columnHtml = `\n \n `;\n }\n\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n }\n\n renderInline() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const inlineHtml = `\n \n ${toolbar ? picker.renderToolbar() : ''}\n
\n ${picker.cols.map(col => picker.renderColumn(col)).join('')}\n
\n
\n
\n `.trim();\n\n return inlineHtml;\n }\n\n renderSheet() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const sheetHtml = `\n \n ${toolbar ? picker.renderToolbar() : ''}\n
\n ${picker.cols.map(col => picker.renderColumn(col)).join('')}\n
\n
\n
\n `.trim();\n\n return sheetHtml;\n }\n\n renderPopover() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const popoverHtml = `\n \n
\n
\n ${toolbar ? picker.renderToolbar() : ''}\n
\n ${picker.cols.map(col => picker.renderColumn(col)).join('')}\n
\n
\n
\n
\n
\n `.trim();\n\n return popoverHtml;\n }\n\n render() {\n const picker = this;\n if (picker.params.render) return picker.params.render.call(picker);\n if (!picker.inline) {\n if (picker.isPopover()) return picker.renderPopover();\n return picker.renderSheet();\n }\n return picker.renderInline();\n }\n\n onOpen() {\n const picker = this;\n const { initialized, $el, app, $inputEl, inline, value, params } = picker;\n picker.opened = true;\n picker.closing = false;\n picker.opening = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each((index, colEl) => {\n let updateItems = true;\n if (\n (!initialized && params.value)\n || (initialized && value)\n ) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) picker.setValue(value, 0);\n else if (params.value) {\n picker.setValue(params.value, 0);\n }\n } else if (value) {\n picker.setValue(value, 0);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open');\n }\n picker.emit('local::open pickerOpen', picker);\n }\n\n onOpened() {\n const picker = this;\n picker.opening = false;\n\n if (picker.$el) {\n picker.$el.trigger('picker:opened');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened');\n }\n picker.emit('local::opened pickerOpened', picker);\n }\n\n onClose() {\n const picker = this;\n const app = picker.app;\n picker.opening = false;\n picker.closing = true;\n\n // Detach events\n picker.detachResizeEvent();\n\n picker.cols.forEach((col) => {\n if (col.destroy) col.destroy();\n });\n\n if (picker.$inputEl) {\n if (app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n } else {\n const validate = picker.$inputEl.attr('validate');\n const required = picker.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(picker.$inputEl);\n }\n }\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:close');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close');\n }\n picker.emit('local::close pickerClose', picker);\n }\n\n onClosed() {\n const picker = this;\n picker.opened = false;\n picker.closing = false;\n\n if (!picker.inline) {\n Utils.nextTick(() => {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:closed');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed');\n }\n picker.emit('local::closed pickerClosed', picker);\n }\n\n open() {\n const picker = this;\n const { app, opened, inline, $inputEl, $scrollToEl, params } = picker;\n if (opened) return;\n if (picker.cols.length === 0 && params.cols.length) {\n params.cols.forEach((col) => {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n const isPopover = picker.isPopover();\n const modalType = isPopover ? 'popover' : 'sheet';\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: $scrollToEl,\n content: picker.render(),\n backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n on: {\n open() {\n const modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened() { picker.onOpened(); },\n close() { picker.onClose(); },\n closed() { picker.onClosed(); },\n },\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && picker.view) {\n picker.view.router.navigate({\n url: picker.url,\n route: {\n path: picker.url,\n [modalType]: modalParams,\n },\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n }\n\n close() {\n const picker = this;\n const { opened, inline } = picker;\n if (!opened) return;\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals && picker.view) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n }\n\n init() {\n const picker = this;\n\n picker.initInput();\n\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n }\n\n destroy() {\n const picker = this;\n if (picker.destroyed) return;\n const { $el } = picker;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) $el.trigger('picker:beforedestroy');\n\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n\n if ($el && $el.length) delete picker.$el[0].f7Picker;\n Utils.deleteProps(picker);\n picker.destroyed = true;\n }\n}\n\nexport default Picker;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nexport default function (colEl, updateItems) {\n const picker = this;\n const app = picker.app;\n const $colEl = $(colEl);\n const colIndex = $colEl.index();\n const col = picker.cols[colIndex];\n if (col.divider) return;\n\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n\n let itemHeight;\n let itemsHeight;\n let minTranslate;\n let maxTranslate;\n let animationFrameId;\n\n function updateDuringScroll() {\n animationFrameId = Utils.requestAnimationFrame(() => {\n col.updateItems(undefined, undefined, 0);\n updateDuringScroll();\n });\n }\n\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], 0, true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n if (picker.params.rotateEffect) {\n col.$el.removeClass('picker-column-absolute');\n if (!col.width) col.$el.css({ width: '' });\n }\n let colWidth = 0;\n const colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n itemsHeight = itemHeight * col.items.length;\n minTranslate = ((colHeight / 2) - itemsHeight) + (itemHeight / 2);\n maxTranslate = (colHeight / 2) - (itemHeight / 2);\n if (col.width) {\n colWidth = col.width;\n if (parseInt(colWidth, 10) === colWidth) colWidth += 'px';\n col.$el.css({ width: colWidth });\n }\n if (picker.params.rotateEffect) {\n if (!col.width) {\n col.items.each((index, itemEl) => {\n const item = $(itemEl).children('span');\n colWidth = Math.max(colWidth, item[0].offsetWidth);\n });\n col.$el.css({ width: `${colWidth + 2}px` });\n }\n col.$el.addClass('picker-column-absolute');\n }\n };\n\n col.setValue = function setColValue(newValue, transition = '', valueCallbacks) {\n const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value=\"${newValue}\"]`).index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n const newTranslate = (-newActiveIndex * itemHeight) + maxTranslate;\n // Update wrapper\n col.$itemsEl.transition(transition);\n col.$itemsEl.transform(`translate3d(0,${newTranslate}px,0)`);\n\n // Watch items\n if (picker.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex) {\n Utils.cancelAnimationFrame(animationFrameId);\n col.$itemsEl.transitionEnd(() => {\n Utils.cancelAnimationFrame(animationFrameId);\n });\n updateDuringScroll();\n }\n\n // Update items\n col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);\n };\n\n col.updateItems = function updateColItems(activeIndex, translate, transition, valueCallbacks) {\n if (typeof translate === 'undefined') {\n // eslint-disable-next-line\n translate = Utils.getTranslate(col.$itemsEl[0], 'y');\n }\n // eslint-disable-next-line\n if (typeof activeIndex === 'undefined') activeIndex = -Math.round((translate - maxTranslate) / itemHeight);\n // eslint-disable-next-line\n if (activeIndex < 0) activeIndex = 0;\n // eslint-disable-next-line\n if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n const previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n\n col.items.transition(transition);\n\n const selectedItem = col.items.eq(activeIndex).addClass('picker-item-selected').transform('');\n\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each((index, itemEl) => {\n const $itemEl = $(itemEl);\n const itemOffsetTop = $itemEl.index() * itemHeight;\n const translateOffset = maxTranslate - translate;\n const itemOffset = itemOffsetTop - translateOffset;\n const percentage = itemOffset / itemHeight;\n const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n\n let angle = (-18 * percentage);\n if (angle > 180) angle = 180;\n if (angle < -180) angle = -180;\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl.transform(`translate3d(0, ${-translate + maxTranslate}px, ${picker.needsOriginFix ? -110 : 0}px) rotateX(${angle}deg)`);\n });\n }\n\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let startTranslate;\n let returnTo;\n let currentTranslate;\n let prevTranslate;\n let velocityTranslate;\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n e.preventDefault();\n isTouched = true;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = (new Date()).getTime();\n\n allowItemClick = true;\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n currentTranslate = startTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.preventDefault();\n allowItemClick = false;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n // First move\n Utils.cancelAnimationFrame(animationFrameId);\n isMoved = true;\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n currentTranslate = startTranslate;\n col.$itemsEl.transition(0);\n }\n\n const diff = touchCurrentY - touchStartY;\n currentTranslate = startTranslate + diff;\n returnTo = undefined;\n\n // Normalize translate\n if (currentTranslate < minTranslate) {\n currentTranslate = minTranslate - ((minTranslate - currentTranslate) ** 0.8);\n returnTo = 'min';\n }\n if (currentTranslate > maxTranslate) {\n currentTranslate = maxTranslate + ((currentTranslate - maxTranslate) ** 0.8);\n returnTo = 'max';\n }\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${currentTranslate}px,0)`);\n\n // Update items\n col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnTouchmove);\n\n // Calc velocity\n velocityTranslate = currentTranslate - prevTranslate || currentTranslate;\n prevTranslate = currentTranslate;\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n col.$itemsEl.transition('');\n if (returnTo) {\n if (returnTo === 'min') {\n col.$itemsEl.transform(`translate3d(0,${minTranslate}px,0)`);\n } else {\n col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`);\n }\n }\n touchEndTime = new Date().getTime();\n let newTranslate;\n if (touchEndTime - touchStartTime > 300) {\n newTranslate = currentTranslate;\n } else {\n newTranslate = currentTranslate + (velocityTranslate * picker.params.momentumRatio);\n }\n\n newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);\n\n // Active Index\n const activeIndex = Math.round(Math.abs(((newTranslate - maxTranslate) / itemHeight)));\n\n // Normalize translate\n if (!picker.params.freeMode) newTranslate = (-activeIndex * itemHeight) + maxTranslate;\n\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${parseInt(newTranslate, 10)}px,0)`);\n\n // Update items\n col.updateItems(activeIndex, newTranslate, '', true);\n\n // Watch items\n if (picker.params.updateValuesOnMomentum) {\n updateDuringScroll();\n col.$itemsEl.transitionEnd(() => {\n Utils.cancelAnimationFrame(animationFrameId);\n });\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n\n let mousewheelTimeout;\n function handleMouseWheel(e) {\n const { deltaX, deltaY } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n clearTimeout(mousewheelTimeout);\n\n e.preventDefault();\n\n Utils.cancelAnimationFrame(animationFrameId);\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n col.$itemsEl.transition(0);\n\n currentTranslate = startTranslate - deltaY;\n returnTo = undefined;\n\n // Normalize translate\n if (currentTranslate < minTranslate) {\n currentTranslate = minTranslate;\n returnTo = 'min';\n }\n if (currentTranslate > maxTranslate) {\n currentTranslate = maxTranslate;\n returnTo = 'max';\n }\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${currentTranslate}px,0)`);\n\n // Update items\n col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnMousewheel);\n\n // On end\n mousewheelTimeout = setTimeout(() => {\n col.$itemsEl.transition('');\n if (returnTo) {\n if (returnTo === 'min') {\n col.$itemsEl.transform(`translate3d(0,${minTranslate}px,0)`);\n } else {\n col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`);\n }\n }\n touchEndTime = new Date().getTime();\n let newTranslate = currentTranslate;\n newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);\n\n // Active Index\n const activeIndex = Math.round(Math.abs(((newTranslate - maxTranslate) / itemHeight)));\n\n // Normalize translate\n if (!picker.params.freeMode) newTranslate = (-activeIndex * itemHeight) + maxTranslate;\n\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${parseInt(newTranslate, 10)}px,0)`);\n\n // Update items\n col.updateItems(activeIndex, newTranslate, '', true);\n }, 200);\n }\n\n function handleClick() {\n if (!allowItemClick) return;\n Utils.cancelAnimationFrame(animationFrameId);\n const value = $(this).attr('data-picker-value');\n col.setValue(value);\n }\n\n const activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n col.attachEvents = function attachColEvents() {\n col.$el.on(app.touchEvents.start, handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (picker.params.mousewheel) {\n col.$el.on('wheel', handleMouseWheel);\n }\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.$el.off(app.touchEvents.start, handleTouchStart, activeListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (picker.params.mousewheel) {\n col.$el.off('wheel', handleMouseWheel);\n }\n col.items.off('click', handleClick);\n };\n\n col.init = function initCol() {\n col.calcSize();\n col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`).transition(0);\n if (colIndex === 0) col.$el.addClass('picker-column-first');\n if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n // Update items on init\n if (updateItems) col.updateItems(0, maxTranslate, 0);\n\n col.attachEvents();\n };\n\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n\n col.init();\n}\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Picker from './picker-class';\n\nexport default {\n name: 'picker',\n static: {\n Picker,\n },\n create() {\n const app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app,\n domProp: 'f7Picker',\n });\n app.picker.close = function close(el = '.picker') {\n const $el = $(el);\n if ($el.length === 0) return;\n const picker = $el[0].f7Picker;\n if (!picker || (picker && !picker.opened)) return;\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n updateValuesOnMomentum: false,\n updateValuesOnTouchmove: true,\n updateValuesOnMousewheel: true,\n mousewheel: true,\n rotateEffect: false,\n momentumRatio: 7,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n backdrop: undefined, // uses Popover or Sheet defaults\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n scrollToEl: undefined,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst InfiniteScroll = {\n handleScroll(el, e) {\n const app = this;\n const $el = $(el);\n const scrollTop = $el[0].scrollTop;\n const scrollHeight = $el[0].scrollHeight;\n const height = $el[0].offsetHeight;\n let distance = $el[0].getAttribute('data-infinite-distance');\n\n const virtualListContainer = $el.find('.virtual-list');\n let virtualList;\n\n const onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) distance = 50;\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = (parseInt(distance, 10) / 100) * height;\n }\n if (distance > height) distance = height;\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create(el) {\n const $el = $(el);\n const app = this;\n function scrollHandler(e) {\n app.infiniteScroll.handle(this, e);\n }\n $el.each((index, element) => {\n element.f7InfiniteScrollHandler = scrollHandler;\n element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n });\n },\n destroy(el) {\n const $el = $(el);\n $el.each((index, element) => {\n element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n delete element.f7InfiniteScrollHandler;\n });\n },\n};\nexport default {\n name: 'infiniteScroll',\n create() {\n const app = this;\n Utils.extend(app, {\n infiniteScroll: {\n handle: InfiniteScroll.handleScroll.bind(app),\n create: InfiniteScroll.create.bind(app),\n destroy: InfiniteScroll.destroy.bind(app),\n },\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each((index, el) => {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each((index, el) => {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each((index, el) => {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each((index, el) => {\n app.infiniteScroll.destroy(el);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Support from '../../utils/support';\nimport Device from '../../utils/device';\n\nclass PullToRefresh extends Framework7Class {\n constructor(app, el) {\n super({}, [app]);\n const ptr = this;\n const $el = $(el);\n const $preloaderEl = $el.find('.ptr-preloader');\n\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n\n ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n\n const isMaterial = app.theme === 'md';\n const isIos = app.theme === 'ios';\n const isAurora = app.theme === 'aurora';\n\n // Done\n ptr.done = function done() {\n const $transitionTarget = isMaterial ? $preloaderEl : $el;\n $transitionTarget.transitionEnd(() => {\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n });\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n return ptr;\n };\n\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) return ptr;\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Mousewheel\n ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n // Events handling\n let touchId;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let refresh = false;\n let useTranslate = false;\n let forceUseTranslate = false;\n let startTranslate = 0;\n let translate;\n let scrollTop;\n let wasScrolled;\n let triggerDistance;\n let dynamicTriggerDistance;\n let pullStarted;\n let hasNavbar = false;\n let scrollHeight;\n let offsetHeight;\n let maxScrollTop;\n const $pageEl = $el.parents('.page');\n\n if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;\n if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n if (!ptr.bottom) {\n const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n if (pageNavbarEl) {\n const $pageNavbarEl = $(pageNavbarEl);\n const isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent')\n || (\n $pageNavbarEl.hasClass('navbar-large')\n && $pageNavbarEl.hasClass('navbar-transparent')\n );\n const isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n if (isLargeTransparent) {\n $el.addClass('ptr-with-navbar-large-transparent');\n } else if (isTransparent) {\n $el.addClass('ptr-with-navbar-transparent');\n }\n }\n }\n if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else if (isMaterial) {\n triggerDistance = 66;\n } else if (isIos) {\n triggerDistance = 44;\n } else if (isAurora) {\n triggerDistance = 38;\n }\n\n function handleTouchStart(e) {\n if (isTouched) {\n if (Device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) return;\n } else return;\n }\n\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n let touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (let i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) return;\n\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n\n scrollTop = $el[0].scrollTop;\n\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n isTouched = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each((ptrScrollableIndex, ptrScrollableEl) => {\n if (ptrScrollableEl === el) return;\n if (\n (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight)\n && $(ptrScrollableEl).css('overflow') === 'auto'\n && (\n (!ptr.bottom && ptrScrollableEl.scrollTop > 0)\n || (ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)\n )\n ) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if (scrollHeight === offsetHeight || Device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n forceUseTranslate = false;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n\n const ptrStarted = ptr.bottom\n ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n if (ptrStarted) {\n // iOS 8 fix\n if (Device.os === 'ios' && parseInt(Device.osVersion.split('.')[0], 10) > 7) {\n if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n }\n\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', 'auto');\n $el.scrollTop(maxScrollTop);\n forceUseTranslate = true;\n }\n\n if (useTranslate || forceUseTranslate) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = (ptr.bottom ? -1 * (Math.abs(touchesDiff) ** 0.85) : touchesDiff ** 0.85) + startTranslate;\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`)\n .find('.ptr-arrow').transform(`rotate(${(180 * (Math.abs(touchesDiff) / 66)) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n }\n }\n\n if (((useTranslate || forceUseTranslate) && (Math.abs(touchesDiff) ** 0.85) > triggerDistance) || (!useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2)) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('')\n .find('.ptr-arrow').transform('');\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', '');\n }\n\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n\n let mousewheelTimeout;\n let mousewheelMoved;\n let mousewheelAllow = true;\n let mousewheelTranslate = 0;\n\n function handleMouseWheelRelease() {\n mousewheelAllow = true;\n mousewheelMoved = false;\n mousewheelTranslate = 0;\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('')\n .find('.ptr-arrow').transform('');\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n function handleMouseWheel(e) {\n if (!mousewheelAllow) return;\n const { deltaX, deltaY } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n\n clearTimeout(mousewheelTimeout);\n\n scrollTop = $el[0].scrollTop;\n\n if (!mousewheelMoved) {\n $el.removeClass('ptr-transitioning');\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n mousewheelAllow = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each((ptrScrollableIndex, ptrScrollableEl) => {\n if (ptrScrollableEl === el) return;\n if (\n (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight)\n && $(ptrScrollableEl).css('overflow') === 'auto'\n && (\n (!ptr.bottom && ptrScrollableEl.scrollTop > 0)\n || (ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)\n )\n ) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n mousewheelAllow = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n }\n }\n isMoved = true;\n mousewheelTranslate -= deltaY;\n touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n\n const ptrStarted = ptr.bottom\n ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n if (ptrStarted) {\n if (e.cancelable) {\n e.preventDefault();\n }\n\n translate = touchesDiff;\n if (Math.abs(translate) > triggerDistance) {\n translate = triggerDistance + ((Math.abs(translate) - triggerDistance) ** 0.7);\n if (ptr.bottom) translate = -translate;\n }\n\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`)\n .find('.ptr-arrow').transform(`rotate(${(180 * (Math.abs(touchesDiff) / 66)) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n }\n\n if (Math.abs(translate) > triggerDistance) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n\n mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n }\n\n if (!$pageEl.length || !$el.length) return ptr;\n\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.on('wheel', handleMouseWheel);\n }\n };\n ptr.detachEvents = function detachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.off('wheel', handleMouseWheel);\n }\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n\n return ptr;\n }\n\n init() {\n const ptr = this;\n ptr.attachEvents();\n }\n\n destroy() {\n let ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy');\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n Utils.deleteProps(ptr);\n ptr = null;\n }\n}\n\nexport default PullToRefresh;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport PullToRefresh from './pull-to-refresh-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'pullToRefresh',\n create() {\n const app = this;\n app.ptr = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app,\n domProp: 'f7PullToRefresh',\n }),\n {\n done(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.done();\n return undefined;\n },\n refresh(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.refresh();\n return undefined;\n },\n }\n );\n },\n static: {\n PullToRefresh,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each((index, el) => {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each((index, el) => {\n app.ptr.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.ptr-content').each((index, el) => {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.ptr-content').each((index, el) => {\n app.ptr.destroy(el);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Lazy = {\n destroy(pageEl) {\n const $pageEl = $(pageEl).closest('.page');\n if (!$pageEl.length) return;\n if ($pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy();\n }\n },\n create(pageEl) {\n const app = this;\n const $pageEl = $(pageEl).closest('.page').eq(0);\n\n // Lazy images\n const $lazyLoadImages = $pageEl.find('.lazy');\n if ($lazyLoadImages.length === 0 && !$pageEl.hasClass('lazy')) return;\n\n // Placeholder\n const placeholderSrc = app.params.lazy.placeholder;\n\n if (placeholderSrc !== false) {\n $lazyLoadImages.each((index, lazyEl) => {\n if ($(lazyEl).attr('data-src') && !$(lazyEl).attr('src')) $(lazyEl).attr('src', placeholderSrc);\n });\n }\n\n // load image\n const imagesSequence = [];\n let imageIsLoading = false;\n\n function onImageComplete(lazyEl) {\n if (imagesSequence.indexOf(lazyEl) >= 0) {\n imagesSequence.splice(imagesSequence.indexOf(lazyEl), 1);\n }\n imageIsLoading = false;\n if (app.params.lazy.sequential && imagesSequence.length > 0) {\n imageIsLoading = true;\n app.lazy.loadImage(imagesSequence[0], onImageComplete);\n }\n }\n\n function observerCallback(entries, observer) {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (app.params.lazy.sequential && imageIsLoading) {\n if (imagesSequence.indexOf(entry.target) < 0) imagesSequence.push(entry.target);\n return;\n }\n // Load image\n imageIsLoading = true;\n app.lazy.loadImage(entry.target, onImageComplete);\n // Detach\n observer.unobserve(entry.target);\n }\n });\n }\n if (app.params.lazy.observer && Support.intersectionObserver) {\n let observer = $pageEl[0].f7LazyObserver;\n if (!observer) {\n observer = new window.IntersectionObserver(observerCallback, {\n root: $pageEl[0],\n });\n }\n $lazyLoadImages.each((index, el) => {\n if (el.f7LazyObserverAdded) return;\n el.f7LazyObserverAdded = true;\n observer.observe(el);\n });\n if (!$pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy = () => {\n observer.disconnect();\n delete $pageEl[0].f7LazyDestroy;\n delete $pageEl[0].f7LazyObserver;\n };\n }\n return;\n }\n\n function lazyHandler() {\n app.lazy.load($pageEl, (lazyEl) => {\n if (app.params.lazy.sequential && imageIsLoading) {\n if (imagesSequence.indexOf(lazyEl) < 0) imagesSequence.push(lazyEl);\n return;\n }\n imageIsLoading = true;\n app.lazy.loadImage(lazyEl, onImageComplete);\n });\n }\n\n function attachEvents() {\n $pageEl[0].f7LazyAttached = true;\n $pageEl.on('lazy', lazyHandler);\n $pageEl.on('scroll', lazyHandler, true);\n $pageEl.find('.tab').on('tab:mounted tab:show', lazyHandler);\n app.on('resize', lazyHandler);\n }\n function detachEvents() {\n $pageEl[0].f7LazyAttached = false;\n delete $pageEl[0].f7LazyAttached;\n $pageEl.off('lazy', lazyHandler);\n $pageEl.off('scroll', lazyHandler, true);\n $pageEl.find('.tab').off('tab:mounted tab:show', lazyHandler);\n app.off('resize', lazyHandler);\n }\n\n // Store detach function\n if (!$pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy = detachEvents;\n }\n\n // Attach events\n if (!$pageEl[0].f7LazyAttached) {\n attachEvents();\n }\n\n // Run loader on page load/init\n lazyHandler();\n },\n isInViewport(lazyEl) {\n const app = this;\n const rect = lazyEl.getBoundingClientRect();\n const threshold = app.params.lazy.threshold || 0;\n\n return (\n rect.top >= (0 - threshold)\n && rect.left >= (0 - threshold)\n && rect.top <= (app.height + threshold)\n && rect.left <= (app.width + threshold)\n );\n },\n loadImage(imageEl, callback) {\n const app = this;\n const $imageEl = $(imageEl);\n\n const bg = $imageEl.attr('data-background');\n const src = bg || $imageEl.attr('data-src');\n\n function onLoad() {\n $imageEl.removeClass('lazy').addClass('lazy-loaded');\n if (bg) {\n $imageEl.css('background-image', `url(${src})`);\n } else if (src) {\n $imageEl.attr('src', src);\n }\n if (callback) callback(imageEl);\n $imageEl.trigger('lazy:loaded');\n app.emit('lazyLoaded', $imageEl[0]);\n }\n\n if (!src) {\n $imageEl.trigger('lazy:load');\n app.emit('lazyLoad', $imageEl[0]);\n onLoad();\n return;\n }\n function onError() {\n $imageEl.removeClass('lazy').addClass('lazy-loaded');\n if (bg) {\n $imageEl.css('background-image', `url(${app.params.lazy.placeholder || ''})`);\n } else {\n $imageEl.attr('src', app.params.lazy.placeholder || '');\n }\n if (callback) callback(imageEl);\n $imageEl.trigger('lazy:error');\n app.emit('lazyError', $imageEl[0]);\n }\n const image = new window.Image();\n image.onload = onLoad;\n image.onerror = onError;\n image.src = src;\n\n $imageEl.removeAttr('data-src').removeAttr('data-background');\n\n // Add loaded callback and events\n $imageEl.trigger('lazy:load');\n app.emit('lazyLoad', $imageEl[0]);\n },\n load(pageEl, callback) {\n const app = this;\n let $pageEl = $(pageEl);\n if (!$pageEl.hasClass('page')) $pageEl = $pageEl.parents('.page').eq(0);\n if ($pageEl.length === 0) {\n return;\n }\n $pageEl.find('.lazy').each((index, lazyEl) => {\n const $lazyEl = $(lazyEl);\n if ($lazyEl.parents('.tab:not(.tab-active)').length > 0) {\n return;\n }\n if (app.lazy.isInViewport(lazyEl)) {\n if (callback) callback(lazyEl);\n else app.lazy.loadImage(lazyEl);\n }\n });\n },\n\n};\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==',\n threshold: 0,\n sequential: true,\n observer: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n lazy: {\n create: Lazy.create.bind(app),\n destroy: Lazy.destroy.bind(app),\n loadImage: Lazy.loadImage.bind(app),\n load: Lazy.load.bind(app),\n isInViewport: Lazy.isInViewport.bind(app),\n },\n });\n },\n on: {\n pageInit(page) {\n const app = this;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.create(page.$el);\n }\n },\n pageAfterIn(page) {\n const app = this;\n if (app.params.lazy.observer && Support.intersectionObserver) return;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.create(page.$el);\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.destroy(page.$el);\n }\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n app.lazy.create($tabEl);\n }\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n if (app.params.lazy.observer && Support.intersectionObserver) return;\n const $tabEl = $(tabEl);\n if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n app.lazy.destroy($tabEl);\n }\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass DataTable extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const table = this;\n\n const defaults = {\n\n };\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n\n table.params = Utils.extend(defaults, params);\n\n // El\n const $el = $(table.params.el);\n if ($el.length === 0) return undefined;\n\n table.$el = $el;\n table.el = $el[0];\n\n if (table.$el[0].f7DataTable) {\n const instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n\n table.$el[0].f7DataTable = table;\n\n Utils.extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected'),\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n const $inputEl = $(this);\n const checked = $inputEl[0].checked;\n const columnIndex = $inputEl.parents('td,th').index();\n\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el\n .find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el\n .find(`tbody tr td:nth-child(${columnIndex + 1}) input`)\n .prop('checked', checked)\n .trigger('change', { sentByF7DataTable: true });\n $inputEl.prop('indeterminate', false);\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n const checkedRows = $el.find(`tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`).length;\n const totalRows = $el.find('tbody tr').length;\n const $headCheckboxEl = $el.find(`thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`);\n if (!checked) {\n $headCheckboxEl.prop('checked', false);\n } else if (checkedRows === totalRows) {\n $headCheckboxEl.prop('checked', true).trigger('change', { sentByF7DataTable: true });\n }\n $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n const $cellEl = $(this);\n const isActive = $cellEl.hasClass('sortable-cell-active');\n const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n let newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n\n return table;\n }\n\n setCollapsibleLabels() {\n const table = this;\n if (!table.collapsible) return;\n table.$el.find('tbody td:not(.checkbox-cell)').each((index, el) => {\n const $el = $(el);\n const elIndex = $el.index();\n const collpsibleTitle = $el.attr('data-collapsible-title');\n if (!collpsibleTitle && collpsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n }\n\n checkSelectedHeader() {\n const table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n }\n\n init() {\n const table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n }\n\n destroy() {\n let table = this;\n\n table.$el.trigger('datatable:beforedestroy');\n table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n\n table.attachEvents();\n\n if (table.$el[0]) {\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n }\n Utils.deleteProps(table);\n table = null;\n }\n}\n\nexport default DataTable;\n","import $ from 'dom7';\nimport DataTable from './data-table-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'dataTable',\n static: {\n DataTable,\n },\n create() {\n const app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app,\n domProp: 'f7DataTable',\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each((index, tableEl) => {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each((index, tableEl) => {\n app.dataTable.create({ el: tableEl });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.data-table-init').each((index, tableEl) => {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.data-table-init').each((index, tableEl) => {\n app.dataTable.create({ el: tableEl });\n });\n },\n },\n vnode: {\n 'data-table-init': {\n insert(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.create({ el: tableEl });\n },\n destroy(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.destroy(tableEl);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Fab = {\n morphOpen(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return;\n\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n const target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index'),\n };\n const fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: Utils.getTranslate($fabEl[0], 'x'),\n translateY: Utils.getTranslate($fabEl[0], 'y'),\n };\n\n $fabEl[0].f7FabMorphData = {\n $targetEl,\n target,\n fab,\n };\n\n const diffX = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n const diffY = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n\n let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) borderRadius += 2;\n\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n\n const diffXNew = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n const diffYNew = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n const scaleXNew = target.width / fab.width;\n const scaleYNew = target.height / fab.height;\n\n $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);\n };\n\n $targetEl\n .css('opacity', 0)\n .transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl\n .addClass('fab-opened')\n .css('z-index', target.zIndex - 1)\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $targetEl.transition('');\n Utils.nextFrame(() => {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n $fabEl\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`)\n .css('border-radius', `${borderRadius}px`)\n .css('box-shadow', 'none')\n .css('opacity', '0');\n });\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) return;\n const { $targetEl, target, fab } = morphData;\n if ($targetEl.length === 0) return;\n\n const diffX = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n const diffY = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n\n $targetEl\n .css('opacity', 0)\n .transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl\n .transition('')\n .css('box-shadow', '')\n .css('border-radius', '')\n .css('opacity', '1')\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $fabEl\n .css('z-index', '')\n .removeClass('fab-opened')\n .transform('');\n Utils.nextFrame(() => {\n $fabEl.transitionEnd(() => {\n $targetEl\n .removeClass('fab-morph-target-visible')\n .css('opacity', '')\n .transform('')\n .transition('');\n });\n });\n });\n },\n open(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if ($fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) return;\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n $fabEl.trigger('fab:open');\n },\n close(fabEl = '.fab-opened') {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if (!$fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n $fabEl.trigger('fab:close');\n },\n toggle(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);\n else app.fab.close(fabEl);\n },\n};\n\nexport default {\n name: 'fab',\n create() {\n const app = this;\n Utils.extend(app, {\n fab: {\n openedEl: null,\n morphOpen: Fab.morphOpen.bind(app),\n morphClose: Fab.morphClose.bind(app),\n open: Fab.open.bind(app),\n close: Fab.close.bind(app),\n toggle: Fab.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n const app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data = {}) {\n const app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data = {}) {\n const app = this;\n app.fab.close(data.fab);\n },\n '.fab-backdrop': function close() {\n const app = this;\n app.fab.close();\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport FrameworkClass from '../../utils/class';\n\nclass Searchbar extends FrameworkClass {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const sb = this;\n\n const defaults = {\n el: undefined,\n inputEl: undefined,\n inputEvents: 'change input compositionend',\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined, // container to search, HTMLElement or CSS selector\n searchItem: 'li', // single item selector, CSS selector\n searchIn: undefined, // where to search in item, CSS selector\n searchGroup: '.list-group',\n searchGroupTitle: '.item-divider, .list-group-title',\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: undefined,\n removeDiacritics: true,\n customSearch: false,\n hideDividers: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n inline: false,\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n\n sb.params = Utils.extend(defaults, params);\n\n const $el = $(sb.params.el);\n if ($el.length === 0) return sb;\n\n if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n\n $el[0].f7Searchbar = sb;\n\n let $pageEl;\n const $navbarEl = $el.parents('.navbar');\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else if ($navbarEl.length > 0) {\n $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n if (!$pageEl.length) {\n const $currentPageEl = $el.parents('.view').find('.page-current');\n if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n $pageEl = $currentPageEl;\n }\n }\n }\n\n let $foundEl;\n if (params.foundEl) {\n $foundEl = $(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n\n let $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n\n let $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n\n let $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n\n\n const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n\n if (typeof sb.params.backdrop === 'undefined') {\n if (!inline) sb.params.backdrop = app.theme !== 'aurora';\n else sb.params.backdrop = false;\n }\n\n let $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('
');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n\n let $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $(sb.params.searchContainer);\n }\n\n let $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n\n let $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n\n Utils.extend(sb, {\n app,\n view: app.views.get($el.parents('.view')),\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable,\n inline,\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n if (app.theme === 'aurora' && (!$disableButtonEl || !$disableButtonEl.length || !sb.params.disableButton) && !sb.query) {\n sb.disable();\n }\n }\n function onInputChange() {\n const value = sb.$inputEl.val().trim();\n if (\n (\n (sb.$searchContainer && sb.$searchContainer.length > 0)\n && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem)\n )\n || sb.params.customSearch\n ) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || (sb && !sb.$el)) return;\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n function onPageBeforeIn() {\n if (!sb || (sb && !sb.$el)) return;\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n\n return sb;\n }\n\n clear(e) {\n const sb = this;\n if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n const previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n }\n\n setDisableButtonMargin() {\n const sb = this;\n if (sb.expandable) return;\n const app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n }\n\n enable(setFocus) {\n const sb = this;\n if (sb.enabled) return sb;\n const app = sb.app;\n sb.enabled = true;\n function enable() {\n if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.$disableButtonEl || (sb.$disableButtonEl && sb.$disableButtonEl.length === 0)) {\n sb.$el.addClass('searchbar-enabled-no-disable-button');\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n }\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {\n const $pageContentEl = sb.$pageEl.find('.page-content');\n const $titleLargeEl = $navbarEl.find('.title-large');\n $pageContentEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n } else {\n $navbarEl.addClass('with-searchbar-expandable-enabled');\n if ($navbarEl.hasClass('navbar-large')) {\n $navbarEl.addClass('navbar-large-collapsed');\n }\n }\n }\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n let needsFocus = false;\n if (setFocus === true) {\n if (document.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n const isIos = app.device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) sb.$inputEl.focus();\n enable();\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n Utils.nextTick(() => {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n }\n enable();\n }\n return sb;\n }\n\n disable() {\n const sb = this;\n if (!sb.enabled) return sb;\n const app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n if (sb.expandable) {\n const $navbarEl = sb.$el.parents('.navbar');\n const $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');\n\n if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {\n const $titleLargeEl = $navbarEl.find('.title-large');\n sb.$el.transitionEnd(() => {\n $pageContentEl.removeClass('with-searchbar-expandable-closing');\n });\n if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {\n const scrollTop = $pageContentEl[0].scrollTop;\n const titleLargeHeight = $titleLargeEl[0].offsetHeight;\n if (scrollTop > titleLargeHeight) {\n $pageContentEl.transition(0);\n $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;\n setTimeout(() => {\n $pageContentEl.transition('');\n }, 200);\n }\n }\n $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');\n }\n if (app.theme === 'md' && $navbarEl.length) {\n $navbarEl\n .removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition')\n .addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n } else {\n $navbarEl\n .removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition')\n .addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n $navbarEl.removeClass('with-searchbar-expandable-closing');\n });\n if (sb.$pageEl) {\n sb.$pageEl.find('.page-content').trigger('scroll');\n }\n }\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n }\n if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch)) {\n sb.backdropHide();\n }\n\n sb.enabled = false;\n\n sb.$inputEl.blur();\n\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n }\n\n toggle() {\n const sb = this;\n if (sb.enabled) sb.disable();\n else sb.enable(true);\n return sb;\n }\n\n backdropShow() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n }\n\n backdropHide() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n }\n\n search(query, internal) {\n const sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) return sb;\n\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n sb.$inputEl.trigger('input');\n }\n sb.query = query;\n sb.value = query;\n\n const { $searchContainer, $el, $foundEl, $notFoundEl, $hideOnSearchEl, isVirtualList } = sb;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if (\n ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled'))\n || (sb.params.customSearch && $el.hasClass('searchbar-enabled'))\n ) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n\n let foundItems = [];\n let vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? Utils.removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.params.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n let values;\n if (sb.params.removeDiacritics) values = Utils.removeDiacritics(query.trim().toLowerCase()).split(' ');\n else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each((itemIndex, itemEl) => {\n const $itemEl = $(itemEl);\n let compareWithText = [];\n let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each((searchInIndex, searchInEl) => {\n let itemText = $(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) itemText = Utils.removeDiacritics(itemText);\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n let wordsMatch = 0;\n for (let i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n\n if (sb.params.hideDividers) {\n $searchContainer.find(sb.params.searchGroupTitle).each((titleIndex, titleEl) => {\n const $titleEl = $(titleEl);\n const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n let hide = true;\n for (let i = 0; i < $nextElements.length; i += 1) {\n const $nextEl = $nextElements.eq(i);\n if ($nextEl.is(sb.params.searchGroupTitle)) break;\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');\n else $titleEl.removeClass('hidden-by-searchbar');\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find(sb.params.searchGroup).each((groupIndex, groupEl) => {\n const $groupEl = $(groupEl);\n const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n // eslint-disable-next-line\n const notHidden = $groupEl.find(sb.params.searchItem).filter((index, el) => {\n return !$(el).hasClass('hidden-by-searchbar');\n });\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n\n if (foundItems.length === 0) {\n if ($notFoundEl) $notFoundEl.show();\n if ($foundEl) $foundEl.hide();\n } else {\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery, foundItems });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n\n return sb;\n }\n\n init() {\n const sb = this;\n if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n sb.attachEvents();\n }\n\n destroy() {\n const sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy');\n sb.detachEvents();\n if (sb.$el[0]) {\n sb.$el[0].f7Searchbar = null;\n delete sb.$el[0].f7Searchbar;\n }\n Utils.deleteProps(sb);\n }\n}\n\nexport default Searchbar;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Searchbar from './searchbar-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'searchbar',\n static: {\n Searchbar,\n },\n create() {\n const app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' '),\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.searchbar-init').each((index, searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.searchbar-init').each((index, searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.searchbar-init').each((index, searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each((index, searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.searchbar-init').each((index, searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each((index, searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n },\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.clear();\n },\n '.searchbar-enable': function enable($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.enable(true);\n },\n '.searchbar-disable': function disable($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.disable();\n },\n '.searchbar-toggle': function toggle($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.toggle();\n },\n },\n vnode: {\n 'searchbar-init': {\n insert(vnode) {\n const app = this;\n const searchbarEl = vnode.elm;\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n },\n destroy(vnode) {\n const searchbarEl = vnode.elm;\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Messages extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const m = this;\n\n const defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined,\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n\n m.params = Utils.extend(defaults, params);\n\n const $el = $(params.el).eq(0);\n if ($el.length === 0) return m;\n\n if ($el[0].f7Messages) return $el[0].f7Messages;\n\n $el[0].f7Messages = m;\n\n const $pageContentEl = $el.closest('.page-content').eq(0);\n\n Utils.extend(m, {\n messages: m.params.messages,\n $el,\n el: $el[0],\n $pageContentEl,\n pageContentEl: $pageContentEl[0],\n\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n\n return m;\n }\n // eslint-disable-next-line\n getMessageData(messageEl) {\n const $messageEl = $(messageEl);\n const data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing'),\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace(``, '');\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace(``, '');\n }\n let avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') avatar = undefined;\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n\n return data;\n }\n\n getMessagesData() {\n const m = this;\n const data = [];\n m.$el.find('.message, .messages-title').each((index, messageEl) => {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n }\n\n renderMessage(messageToRender) {\n const m = this;\n const message = Utils.extend({\n type: 'sent',\n attrs: {},\n }, messageToRender);\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return `${message.text}
`;\n }\n const attrs = Object.keys(message.attrs).map(attr => `${attr}=\"${message.attrs[attr]}\"`).join(' ');\n return `\n \n ${message.avatar ? `\n
\n ` : ''}\n
\n ${message.name ? `
${message.name}
` : ''}\n ${message.header ? `` : ''}\n
\n ${message.textHeader ? `` : ''}\n ${message.image ? `
${message.image}
` : ''}\n ${message.imageSrc && !message.image ? `
` : ''}\n ${message.text || message.isTyping ? `
${message.text || ''}${message.isTyping ? '
' : ''}
` : ''}\n ${message.textFooter ? `` : ''}\n
\n ${message.footer ? `` : ''}\n
\n
\n `;\n }\n\n renderMessages(messagesToRender = this.messages, method = this.params.newMessagesFirst ? 'prepend' : 'append') {\n const m = this;\n const html = messagesToRender.map(message => m.renderMessage(message)).join('');\n m.$el[method](html);\n }\n\n isFirstMessage(...args) {\n const m = this;\n if (m.params.firstMessageRule) return m.params.firstMessageRule(...args);\n return false;\n }\n\n isLastMessage(...args) {\n const m = this;\n if (m.params.lastMessageRule) return m.params.lastMessageRule(...args);\n return false;\n }\n\n isTailMessage(...args) {\n const m = this;\n if (m.params.tailMessageRule) return m.params.tailMessageRule(...args);\n return false;\n }\n\n isSameNameMessage(...args) {\n const m = this;\n if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...args);\n return false;\n }\n\n isSameHeaderMessage(...args) {\n const m = this;\n if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...args);\n return false;\n }\n\n isSameFooterMessage(...args) {\n const m = this;\n if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...args);\n return false;\n }\n\n isSameAvatarMessage(...args) {\n const m = this;\n if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...args);\n return false;\n }\n\n isCustomClassMessage(...args) {\n const m = this;\n if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...args);\n return undefined;\n }\n\n layout() {\n const m = this;\n m.$el.find('.message, .messages-title').each((index, messageEl) => {\n const $messageEl = $(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n const classes = [];\n const message = m.messages[index];\n const previousMessage = m.messages[index - 1];\n const nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach((customClass) => {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n classes.forEach((className) => {\n $messageEl.addClass(className);\n });\n });\n }\n\n clear() {\n const m = this;\n m.messages = [];\n m.$el.html('');\n }\n\n removeMessage(messageToRemove, layout = true) {\n const m = this;\n // Index or El\n let index;\n let $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n\n removeMessages(messagesToRemove, layout = true) {\n const m = this;\n if (Array.isArray(messagesToRemove)) {\n const messagesToRemoveEls = [];\n messagesToRemove.forEach((messageToRemoveIndex) => {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach((messageToRemove) => {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $(messagesToRemove).each((index, messageToRemove) => {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n\n addMessage(...args) {\n const m = this;\n let messageToAdd;\n let animate;\n let method;\n if (typeof args[1] === 'boolean') {\n [messageToAdd, animate, method] = args;\n } else {\n [messageToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n return m.addMessages([messageToAdd], animate, method);\n }\n\n addMessages(...args) {\n const m = this;\n let messagesToAdd;\n let animate;\n let method;\n if (typeof args[1] === 'boolean') {\n [messagesToAdd, animate, method] = args;\n } else {\n [messagesToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n // Define scroll positions before new messages added\n const scrollHeightBefore = m.pageContentEl.scrollHeight;\n const heightBefore = m.pageContentEl.offsetHeight;\n const scrollBefore = m.pageContentEl.scrollTop;\n\n // Add message to DOM and data\n let messagesHTML = '';\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n messagesToAdd.forEach((messageToAdd) => {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n const $messagesEls = $(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) m.layout();\n\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n\n if (m.params.scrollMessages && ((method === 'append' && !m.params.newMessagesFirst) || (method === 'prepend' && m.params.newMessagesFirst && !typingMessage))) {\n if (m.params.scrollMessagesOnEdge) {\n let onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && (scrollBefore - (scrollHeightBefore - heightBefore) >= -10)) {\n onEdge = true;\n }\n if (onEdge) m.scroll(animate ? undefined : 0);\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n\n return m;\n }\n\n showTyping(message = {}) {\n const m = this;\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(Utils.extend({\n type: 'received',\n isTyping: true,\n }, message));\n return m;\n }\n\n hideTyping() {\n const m = this;\n let typingMessageIndex;\n let typingFound;\n m.messages.forEach((message, index) => {\n if (message.isTyping) typingMessageIndex = index;\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n const $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n }\n\n scroll(duration = 300, scrollTop) {\n const m = this;\n const currentScroll = m.pageContentEl.scrollTop;\n let newScrollTop;\n if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;\n else {\n newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) return m;\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n }\n\n init() {\n const m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) m.layout();\n if (m.params.scrollMessages) m.scroll(0);\n }\n\n destroy() {\n const m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy');\n if (m.$el[0]) {\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n }\n Utils.deleteProps(m);\n }\n}\n\nexport default Messages;\n","import $ from 'dom7';\nimport Messages from './messages-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'messages',\n static: {\n Messages,\n },\n create() {\n const app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app,\n domProp: 'f7Messages',\n addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' '),\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each((index, messagesEl) => {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each((index, messagesEl) => {\n app.messages.create({ el: messagesEl });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messages-init').each((index, messagesEl) => {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messages-init').each((index, messagesEl) => {\n app.messages.create({ el: messagesEl });\n });\n },\n },\n vnode: {\n 'messages-init': {\n insert(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.create({ el: messagesEl });\n },\n destroy(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.destroy(messagesEl);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Messagebar extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const messagebar = this;\n\n const defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true,\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n\n messagebar.params = Utils.extend(defaults, params);\n\n // El\n const $el = $(messagebar.params.el);\n if ($el.length === 0) return messagebar;\n\n if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n const $pageEl = $el.parents('.page').eq(0);\n const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n const $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n let $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n const $attachmentsEl = $el.find('.messagebar-attachments');\n const $sheetEl = $el.find('.messagebar-sheet');\n\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n\n Utils.extend(messagebar, {\n $el,\n el: $el[0],\n $areaEl,\n areaEl: $areaEl[0],\n $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: [],\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n const index = $(this).index();\n if ($(e.target).closest('.messagebar-attachment-delete').length) {\n $(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n } else {\n $(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n\n return messagebar;\n }\n\n focus() {\n const messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n }\n\n blur() {\n const messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n }\n\n clear() {\n const messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n }\n\n getValue() {\n const messagebar = this;\n return messagebar.$textareaEl.val().trim();\n }\n\n setValue(value) {\n const messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n }\n\n setPlaceholder(placeholder) {\n const messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n }\n\n resizePage() {\n const messagebar = this;\n const {\n params,\n $el,\n top,\n $pageEl,\n $pageContentEl,\n $areaEl,\n $textareaEl,\n $sheetEl,\n $attachmentsEl,\n } = messagebar;\n const elHeight = $el[0].offsetHeight;\n let maxHeight = params.maxHeight;\n if (top) {\n /*\n Disable at the moment\n const requiredPaddingTop = elHeight + params.topOffset;\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n if (requiredPaddingTop !== currentPaddingTop) {\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n $el.trigger('messagebar:resizePage');\n messagebar.emit('local::resizepage messagebarResizePage');\n }\n */\n } else {\n const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const pageScrollHeight = $pageContentEl[0].scrollHeight;\n const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n const pageScrollTop = $pageContentEl[0].scrollTop;\n const scrollOnBottom = (pageScrollTop === pageScrollHeight - pageOffsetHeight);\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n }\n\n checkEmptyState() {\n const messagebar = this;\n const { $el, $textareaEl } = messagebar;\n const value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n }\n\n attachmentsCreate(innerHTML = '') {\n const messagebar = this;\n const $attachmentsEl = $(`${innerHTML}
`);\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n Utils.extend(messagebar, {\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n });\n return messagebar;\n }\n\n attachmentsShow(innerHTML = '') {\n const messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n attachmentsHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n attachmentsToggle() {\n const messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n }\n\n renderAttachment(attachment) {\n const messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return `\n \n
\n
\n
\n `;\n }\n\n renderAttachments() {\n const messagebar = this;\n let html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = `${messagebar.attachments.map(attachment => messagebar.renderAttachment(attachment)).join('')}`;\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n }\n\n sheetCreate(innerHTML = '') {\n const messagebar = this;\n const $sheetEl = $(`${innerHTML}
`);\n messagebar.$el.append($sheetEl);\n Utils.extend(messagebar, {\n $sheetEl,\n sheetEl: $sheetEl[0],\n });\n return messagebar;\n }\n\n sheetShow(innerHTML = '') {\n const messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n sheetHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n sheetToggle() {\n const messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n }\n\n init() {\n const messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n }\n\n destroy() {\n const messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy');\n messagebar.detachEvents();\n if (messagebar.$el[0]) {\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n }\n Utils.deleteProps(messagebar);\n }\n}\n\nexport default Messagebar;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Messagebar from './messagebar-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'messagebar',\n static: {\n Messagebar,\n },\n create() {\n const app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app,\n domProp: 'f7Messagebar',\n addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' '),\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n });\n },\n },\n vnode: {\n 'messagebar-init': {\n insert(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n },\n destroy(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.destroy(messagebarEl);\n },\n },\n },\n};\n","import $ from 'dom7';\n\nexport default $;\n","import Utils from '../../../../utils/utils';\n\nexport default Utils;\n","import Support from '../../../../utils/support';\n\nexport default Support;\n","import Framework7Class from '../../../../utils/class';\n\nexport default Framework7Class;\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Device from '../../../../utils/device';\n\nexport default Device;\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">${params.bulletElement}>`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ` `\n + ' / '\n + ` `;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ` `;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n swiper.emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n swiper.emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(` `),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './swiper-src/components/core/core-class';\n\n// Core Modules\nimport Device from './swiper-src/modules/device/device';\nimport Support from './swiper-src/modules/support/support';\nimport Browser from './swiper-src/modules/browser/browser';\nimport Resize from './swiper-src/modules/resize/resize';\nimport Observer from './swiper-src/modules/observer/observer';\n\n// Components\nimport Virtual from './swiper-src/components/virtual/virtual';\nimport Keyboard from './swiper-src/components/keyboard/keyboard';\nimport Mousewheel from './swiper-src/components/mousewheel/mousewheel';\nimport Navigation from './swiper-src/components/navigation/navigation';\nimport Pagination from './swiper-src/components/pagination/pagination';\nimport Scrollbar from './swiper-src/components/scrollbar/scrollbar';\nimport Parallax from './swiper-src/components/parallax/parallax';\nimport Zoom from './swiper-src/components/zoom/zoom';\nimport Lazy from './swiper-src/components/lazy/lazy';\nimport Controller from './swiper-src/components/controller/controller';\nimport History from './swiper-src/components/history/history';\nimport HashNavigation from './swiper-src/components/hash-navigation/hash-navigation';\nimport A11y from './swiper-src/components/a11y/a11y';\nimport Autoplay from './swiper-src/components/autoplay/autoplay';\nimport EffectFade from './swiper-src/components/effect-fade/effect-fade';\nimport EffectCube from './swiper-src/components/effect-cube/effect-cube';\nimport EffectFlip from './swiper-src/components/effect-flip/effect-flip';\nimport EffectCoverflow from './swiper-src/components/effect-coverflow/effect-coverflow';\nimport Thumbs from './swiper-src/components/thumbs/thumbs';\n\nSwiper.use([\n Device,\n Browser,\n Support,\n Resize,\n Observer,\n Virtual,\n Keyboard,\n Mousewheel,\n Navigation,\n Pagination,\n Scrollbar,\n Parallax,\n Zoom,\n Lazy,\n Controller,\n History,\n HashNavigation,\n A11y,\n Autoplay,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs,\n]);\n\nexport default Swiper;\n","import $ from 'dom7';\nimport Swiper from './swiper-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nif (\"es\" !== 'es') {\n if (!window.Swiper) {\n window.Swiper = Swiper;\n }\n}\n\nfunction initSwiper(swiperEl) {\n const app = this;\n const $swiperEl = $(swiperEl);\n if ($swiperEl.length === 0) return;\n if ($swiperEl[0].swiper) return;\n let initialSlide;\n let params = {};\n let isTabs;\n let isRoutableTabs;\n if ($swiperEl.hasClass('tabs-swipeable-wrap')) {\n $swiperEl\n .addClass('swiper-container')\n .children('.tabs')\n .addClass('swiper-wrapper')\n .children('.tab')\n .addClass('swiper-slide');\n initialSlide = $swiperEl.children('.tabs').children('.tab-active').index();\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else if ($swiperEl[0].f7SwiperParams) {\n params = $swiperEl[0].f7SwiperParams;\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach((key) => {\n const value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n\n const swiper = app.swiper.create($swiperEl[0], params);\n function updateSwiper() {\n swiper.update();\n }\n const $tabEl = $swiperEl.parents('.tab').filter((tabElIndex, tabEl) => {\n return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, .tabs-swipeable-wrap').length === 0;\n }).eq(0);\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.on('tab:show', updateSwiper);\n }\n\n swiper.on('beforeDestroy', () => {\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);\n $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n if ($tabEl && $tabEl.length) {\n $tabEl.off('tab:show', updateSwiper);\n }\n });\n if (isTabs) {\n swiper.on('slideChange', () => {\n if (isRoutableTabs) {\n let view = app.views.get($swiperEl.parents('.view'));\n if (!view) view = app.views.main;\n const router = view.router;\n const tabRoute = router.findTabRoute(swiper.slides.eq(swiper.activeIndex)[0]);\n if (tabRoute) {\n setTimeout(() => {\n router.navigate(tabRoute.path);\n }, 0);\n }\n } else {\n app.tab.show({\n tabEl: swiper.slides.eq(swiper.activeIndex),\n });\n }\n });\n }\n}\n\nexport default {\n name: 'swiper',\n static: {\n Swiper,\n },\n create() {\n const app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper-container',\n constructor: Swiper,\n domProp: 'swiper',\n });\n },\n on: {\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n app.swiper.destroy(swiperEl);\n });\n },\n pageMounted(page) {\n const app = this;\n page.$el.find('.tabs-swipeable-wrap').each((index, swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageReinit(page) {\n const app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n app.swiper.destroy(swiperEl);\n });\n },\n },\n vnode: {\n 'swiper-init': {\n insert(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n initSwiper.call(app, swiperEl);\n },\n destroy(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n app.swiper.destroy(swiperEl);\n },\n },\n 'tabs-swipeable-wrap': {\n insert(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n initSwiper.call(app, swiperEl);\n },\n destroy(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n app.swiper.destroy(swiperEl);\n },\n },\n },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass PhotoBrowser extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const pb = this;\n pb.app = app;\n\n const defaults = Utils.extend({\n on: {},\n }, app.params.photoBrowser);\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n\n pb.params = Utils.extend(defaults, params);\n\n Utils.extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined,\n },\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n\n get view() {\n const { params, app } = this;\n return params.view || app.views.main;\n }\n\n onSlideChange(swiper) {\n const pb = this;\n pb.activeIndex = swiper.activeIndex;\n\n let current = swiper.activeIndex + 1;\n let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current -= total;\n }\n\n const $activeSlideEl = pb.params.virtualSlides\n ? swiper.$wrapperEl.find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`)\n : swiper.slides.eq(swiper.activeIndex);\n const $previousSlideEl = pb.params.virtualSlides\n ? swiper.$wrapperEl.find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`)\n : swiper.slides.eq(swiper.previousIndex);\n\n let $currentEl = pb.$el.find('.photo-browser-current');\n let $totalEl = pb.$el.find('.photo-browser-total');\n let navbarEl;\n if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $(navbarEl).find('.photo-browser-current');\n $totalEl = $(navbarEl).find('.photo-browser-total');\n }\n }\n if ($currentEl.length && $totalEl.length) {\n $currentEl.text(current);\n $totalEl.text(total);\n if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n if (navbarEl) {\n pb.app.navbar.size(navbarEl);\n }\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n const captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl.find(`[data-caption-index=\"${captionIndex}\"]`).addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n const previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n }\n\n onTouchStart() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) return;\n swipeToClose.isTouched = true;\n }\n\n onTouchMove(e) {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n\n if (!swipeToClose.isTouched) return;\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = pb.swiper.$wrapperEl.children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = Utils.now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n }\n\n onTouchEnd() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n const diff = Math.abs(swipeToClose.diff);\n const timeDiff = (new Date()).getTime() - swipeToClose.timeStart;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n Utils.nextTick(() => {\n if (pb.$el) {\n if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');\n else pb.$el.addClass('swipe-close-to-top');\n }\n pb.emit('local::swipeToClose', pb);\n pb.$el.transform('').transition('');\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n swipeToClose.allow = true;\n pb.$el.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n Utils.nextTick(() => {\n pb.$el.transform('').transition('');\n });\n }\n\n // Render Functions\n renderNavbar() {\n const pb = this;\n if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n\n let iconsColor = pb.params.iconsColor;\n if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';\n\n const pageBackLinkText = (pb.app.theme === 'ios' || pb.app.theme === 'aurora') && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n\n const renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;\n\n const isPopup = pb.params.type !== 'page';\n const navbarHtml = `\n \n
\n
\n ${!isPopup ? `\n
\n ` : ''}\n ${renderNavbarCount ? `\n
\n \n ${pb.params.navbarOfText} \n \n
\n ` : ''}\n ${isPopup ? `\n
\n ` : ''}\n
\n
\n `.trim();\n return navbarHtml;\n }\n\n renderToolbar() {\n const pb = this;\n if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n\n let iconsColor = pb.params.iconsColor;\n if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';\n\n const toolbarHtml = `\n \n `.trim();\n return toolbarHtml;\n }\n\n renderCaption(caption, index) {\n const pb = this;\n if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n const captionHtml = `\n \n ${caption}\n
\n `.trim();\n return captionHtml;\n }\n\n renderObject(photo, index) {\n const pb = this;\n if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n const objHtml = `\n ${photo.html ? photo.html : photo}
\n `;\n return objHtml;\n }\n\n renderLazyPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n const photoHtml = `\n \n
\n
\n \n \n
\n `.trim();\n return photoHtml;\n }\n\n renderPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n const photoHtml = `\n \n
\n \n \n
\n `.trim();\n return photoHtml;\n }\n\n render() {\n const pb = this;\n if (pb.params.render) return pb.params.render.call(pb, pb.params);\n const html = `\n \n
\n
\n ${pb.params.navbar ? pb.renderNavbar() : ''}\n ${pb.params.toolbar ? pb.renderToolbar() : ''}\n
\n ${pb.params.photos.map((photo, index) => {\n if (photo.caption) return pb.renderCaption(photo.caption, index);\n return '';\n }).join(' ')}\n
\n
\n
\n ${pb.params.virtualSlides ? '' : pb.params.photos.map((photo, index) => {\n if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }).join(' ')}\n
\n
\n
\n
\n
\n `.trim();\n return html;\n }\n\n renderStandalone() {\n const pb = this;\n if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n const standaloneHtml = ``;\n return standaloneHtml;\n }\n\n renderPage() {\n const pb = this;\n if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n const pageHtml = pb.render();\n\n return pageHtml;\n }\n\n renderPopup() {\n const pb = this;\n if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n const popupHtml = ``;\n\n return popupHtml;\n }\n\n // Callbacks\n onOpen(type, el) {\n const pb = this;\n const app = pb.app;\n const $el = $(el);\n\n $el[0].f7PhotoBrowser = pb;\n\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n\n // Init Swiper\n let clickTimeout;\n\n const swiperParams = Utils.extend({}, pb.params.swiper, {\n initialSlide: pb.activeIndex,\n on: {\n click(e) {\n clearTimeout(clickTimeout);\n\n if (pb.params.exposition) {\n clickTimeout = setTimeout(() => {\n pb.expositionToggle();\n }, 350);\n }\n pb.emit('local::tap', e);\n pb.emit('local::click', e);\n },\n doubleClick(e) {\n clearTimeout(clickTimeout);\n pb.emit('local::doubleTap', e);\n pb.emit('local::doubleClick', e);\n },\n slideChange(...args) {\n const swiper = this;\n pb.onSlideChange(swiper);\n pb.emit('local::slideChange', ...args);\n },\n transitionStart(...args) {\n pb.emit('local::transitionStart', ...args);\n },\n transitionEnd(...args) {\n pb.emit('local::transitionEnd', ...args);\n },\n slideChangeTransitionStart(...args) {\n const swiper = this;\n pb.onSlideChange(swiper);\n pb.emit('local::slideChangeTransitionStart', ...args);\n },\n slideChangeTransitionEnd(...args) {\n pb.emit('local::slideChangeTransitionEnd', ...args);\n },\n lazyImageLoad(...args) {\n pb.emit('local::lazyImageLoad', ...args);\n },\n lazyImageReady(...args) {\n const slideEl = args[0];\n $(slideEl).removeClass('photo-browser-slide-lazy');\n pb.emit('local::lazyImageReady', ...args);\n },\n },\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n Utils.extend(swiperParams.on, {\n touchStart(e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite(e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd(e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n },\n });\n }\n if (pb.params.virtualSlides) {\n Utils.extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide(photo, index) {\n if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n },\n },\n });\n }\n\n pb.swiper = app.swiper.create(pb.$swiperContainerEl, swiperParams);\n\n if (pb.activeIndex === 0) {\n pb.onSlideChange(pb.swiper);\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n }\n\n onOpened() {\n const pb = this;\n if (pb.$el && pb.params.type === 'standalone') {\n pb.$el.css('animation', 'none');\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n }\n\n onClose() {\n const pb = this;\n if (pb.destroyed) return;\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n }\n\n onClosed() {\n const pb = this;\n if (pb.destroyed) return;\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n }\n\n // Open\n openPage() {\n const pb = this;\n if (pb.opened) return pb;\n\n const pageHtml = pb.renderPage();\n\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn(e, page) {\n pb.view.$el.addClass(`with-photo-browser-page with-photo-browser-page-${pb.params.theme}`);\n pb.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n pb.view.$el.removeClass(`with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`);\n pb.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n },\n },\n },\n });\n return pb;\n }\n\n openStandalone() {\n const pb = this;\n if (pb.opened) return pb;\n\n const standaloneHtml = pb.renderStandalone();\n\n const popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n openPopup() {\n const pb = this;\n if (pb.opened) return pb;\n\n const popupHtml = pb.renderPopup();\n\n const popupParams = {\n content: popupHtml,\n push: pb.params.popupPush,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n // Exposition\n expositionEnable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n return pb;\n }\n\n expositionDisable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n return pb;\n }\n\n expositionToggle() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n return pb;\n }\n\n open(index) {\n const pb = this;\n const type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n }\n\n close() {\n const pb = this;\n if (!pb.opened) return pb;\n if ((pb.params.routableModals && pb.view) || pb.openedIn === 'page') {\n pb.view.router.back();\n } else {\n pb.modal.once('modalClosed', () => {\n Utils.nextTick(() => {\n if (pb.destroyed) return;\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n }\n // eslint-disable-next-line\n init() {}\n\n destroy() {\n let pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n pb.$el[0].f7PhotoBrowser = null;\n delete pb.$el[0].f7PhotoBrowser;\n }\n Utils.deleteProps(pb);\n pb.destroyed = true;\n pb = null;\n }\n}\n\nexport default PhotoBrowser;\n","import PhotoBrowser from './photo-browser-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n popupPush: false,\n swipeToClose: true,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n navbarOfText: 'of',\n navbarShowCount: undefined,\n view: undefined,\n url: 'photos/',\n routableModals: true,\n virtualSlides: true,\n\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n\n swiper: {\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n preloadImages: true,\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev',\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1,\n },\n lazy: {\n enabled: true,\n },\n },\n },\n },\n create() {\n const app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser-popup, .photo-browser-page',\n constructor: PhotoBrowser,\n app,\n domProp: 'f7PhotoBrowser',\n });\n },\n static: {\n PhotoBrowser,\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Notification extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n on: {},\n }, app.params.notification, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const notification = this;\n\n notification.app = app;\n\n notification.params = extendedParams;\n\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n closeTimeout,\n cssClass,\n closeOnClick,\n } = notification.params;\n\n let $el;\n if (!notification.params.el) {\n // Find Element\n const notificationHtml = notification.render({\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass,\n });\n\n $el = $(notificationHtml);\n } else {\n $el = $(notification.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return notification.destroy();\n }\n\n Utils.extend(notification, {\n $el,\n el: $el[0],\n type: 'notification',\n });\n\n $el[0].f7Modal = notification;\n\n if (closeButton) {\n $el.find('.notification-close-button').on('click', () => {\n notification.close();\n });\n }\n $el.on('click', (e) => {\n if (closeButton && $(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) notification.close();\n });\n\n notification.on('beforeDestroy', () => {\n $el.off('click');\n });\n\n /* Touch Events */\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchesDiff;\n let touchStartTime;\n let notificationHeight;\n const touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = Utils.now();\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = (pageY - touchesStart.y);\n let newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = touchesDiff ** 0.8;\n }\n notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n\n const timeDiff = Utils.now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n\n if (\n (touchesDiff < -10 && timeDiff < 300)\n || (-touchesDiff >= notificationHeight / 1)\n ) {\n notification.close();\n }\n }\n\n function attachTouchEvents() {\n notification.$el.on(app.touchEvents.start, handleTouchStart, { passive: true });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachTouchEvents() {\n notification.$el.off(app.touchEvents.start, handleTouchStart, { passive: true });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n let timeoutId;\n function closeOnTimeout() {\n timeoutId = Utils.nextTick(() => {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', () => {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $('.notification.modal-in').each((index, openedEl) => {\n const notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', () => {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n window.clearTimeout(timeoutId);\n });\n\n return notification;\n }\n\n render() {\n const notification = this;\n if (notification.params.render) return notification.params.render.call(notification, notification);\n const { icon, title, titleRightText, subtitle, text, closeButton, cssClass } = notification.params;\n return `\n \n \n
\n ${subtitle ? `
${subtitle}
` : ''}\n ${text ? `
${text}
` : ''}\n
\n
\n `.trim();\n }\n}\nexport default Notification;\n","import Utils from '../../utils/utils';\nimport Notification from './notification-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'notification',\n static: {\n Notification,\n },\n create() {\n const app = this;\n app.notification = Utils.extend(\n {},\n ModalMethods({\n app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in',\n })\n );\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n },\n },\n};\n","/* eslint \"no-useless-escape\": \"off\" */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Autocomplete extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const ac = this;\n ac.app = app;\n\n const defaults = Utils.extend({\n on: {},\n }, app.params.autocomplete);\n\n if (typeof defaults.searchbarDisableButton === 'undefined') {\n defaults.searchbarDisableButton = app.theme !== 'aurora';\n }\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n\n ac.params = Utils.extend(defaults, params);\n\n let $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $(ac.params.openerEl);\n if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n }\n\n let $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $(ac.params.inputEl);\n if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n }\n\n const id = Utils.id();\n\n let url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) url = $openerEl.attr('href');\n else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') url = ac.params.url;\n\n const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n\n Utils.extend(ac, {\n $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id,\n url,\n value: ac.params.value || [],\n inputType,\n inputName: `${inputType}-${id}`,\n $modalEl: undefined,\n $dropdownEl: undefined,\n });\n\n let previousQuery = '';\n function onInputChange() {\n let query = ac.$inputEl.val().trim();\n\n if (!ac.params.source) return;\n ac.params.source.call(ac, query, (items) => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n let regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp(`(${query})`, 'i');\n }\n\n let firstValue;\n let firstItem;\n for (let i = 0; i < limit; i += 1) {\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n const itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '$1 ') : itemText,\n }, i);\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText,\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n\n const previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n const input = this;\n const value = input.value;\n const isValues = $(input).parents('.autocomplete-values').length > 0;\n let item;\n let itemValue;\n let aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !input.checked) {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (let i = 0; i < ac.items.length; i += 1) {\n itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (input.checked) {\n ac.value.push(item);\n } else {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if (((ac.inputType === 'radio' && input.checked) || ac.inputType === 'checkbox')) {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if ($targetEl.is(ac.$inputEl[0]) || (ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length)) return;\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n setTimeout(() => {\n ac.close();\n }, 0);\n }\n function onResize() {\n ac.positionDropdown();\n }\n\n function onKeyDown(e) {\n if (!ac.opened) return;\n if (e.keyCode === 27) {\n // ESC\n e.preventDefault();\n ac.$inputEl.blur();\n return;\n }\n if (e.keyCode === 13) {\n // Enter\n const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n if ($selectedItemLabel.length) {\n e.preventDefault();\n $selectedItemLabel.trigger('click');\n ac.$inputEl.blur();\n return;\n }\n if (ac.params.typeahead) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n return;\n }\n if (e.keyCode !== 40 && e.keyCode !== 38) return;\n e.preventDefault();\n const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n let $newItem;\n if ($selectedItem.length) {\n $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n if (!$newItem.length) {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n } else {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n $selectedItem.removeClass('autocomplete-dropdown-selected');\n $newItem.addClass('autocomplete-dropdown-selected');\n }\n function onDropdownClick() {\n const $clickedEl = $(this);\n let clickedItem;\n for (let i = 0; i < ac.items.length; i += 1) {\n const itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n const value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n ac.close();\n }\n\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (app.device.android) {\n $('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n ac.$inputEl.on('keydown', onKeyDown);\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (app.device.android) {\n $('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n ac.$inputEl.off('keydown', onKeyDown);\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownClick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownClick);\n app.off('resize', onResize);\n };\n\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', () => {\n Utils.nextTick(() => {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n\n return ac;\n }\n\n get view() {\n const ac = this;\n const { $openerEl, $inputEl, app } = ac;\n let view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n const $el = $openerEl || $inputEl;\n view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n positionDropdown() {\n const ac = this;\n const { $inputEl, app, $dropdownEl } = ac;\n\n const $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const inputOffset = $inputEl.offset();\n const inputOffsetWidth = $inputEl[0].offsetWidth;\n const inputOffsetHeight = $inputEl[0].offsetHeight;\n const $listEl = $inputEl.parents('.list');\n\n let $listParent;\n $listEl.parents().each((index, parentEl) => {\n if ($listParent) return;\n const $parentEl = $(parentEl);\n if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n });\n\n const listOffset = $listEl.offset();\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n const inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n const inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n\n const maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n\n const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n let paddingValue;\n if ($listEl.length && !ac.params.expandInput) {\n paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n }\n\n $dropdownEl.css({\n left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`,\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css({\n maxHeight: `${maxHeight}px`,\n [paddingProp]: $listEl.length > 0 && !ac.params.expandInput ? `${paddingValue}px` : '',\n });\n }\n\n focus() {\n const ac = this;\n ac.$el.find('input[type=search]').focus();\n }\n\n source(query) {\n const ac = this;\n if (!ac.params.source) return;\n\n const { $el } = ac;\n\n ac.params.source.call(ac, query, (items) => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (let i = 0; i < limit; i += 1) {\n let selected = false;\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (let j = 0; j < ac.value.length; j += 1) {\n const aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected,\n }, i);\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n }\n\n updateValues() {\n const ac = this;\n let valuesHTML = '';\n for (let i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem({\n value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: `${ac.inputName}-checked}`,\n selected: true,\n }, i);\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n }\n\n preloaderHide() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n }\n\n preloaderShow() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n }\n\n renderPreloader() {\n const ac = this;\n return `\n ${Utils[`${ac.app.theme}PreloaderContent`] || ''}
\n `.trim();\n }\n\n renderSearchbar() {\n const ac = this;\n if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n const searchbarHTML = `\n \n `.trim();\n return searchbarHTML;\n }\n\n renderItem(item, index) {\n const ac = this;\n if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n let itemHtml;\n const itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '"') : item.value;\n if (ac.params.openIn !== 'dropdown') {\n itemHtml = `\n \n \n \n \n \n \n \n `;\n } else if (!item.placeholder) {\n // Dropdown\n itemHtml = `\n \n \n \n \n \n `;\n } else {\n // Dropwdown placeholder\n itemHtml = `\n \n \n \n \n \n `;\n }\n return itemHtml.trim();\n }\n\n renderNavbar() {\n const ac = this;\n if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n let pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n const inPopup = ac.params.openIn === 'popup';\n const navbarLeft = inPopup\n ? `\n ${ac.params.preloader ? `\n \n ${ac.renderPreloader()}\n
\n ` : ''}\n `\n : `\n \n `;\n const navbarRight = inPopup\n ? `\n \n `\n : `\n ${ac.params.preloader ? `\n \n ${ac.renderPreloader()}\n
\n ` : ''}\n `;\n const navbarHtml = `\n \n
\n
\n ${navbarLeft}\n ${pageTitle ? `
${pageTitle}
` : ''}\n ${navbarRight}\n
${ac.renderSearchbar()}
\n
\n
\n `.trim();\n return navbarHtml;\n }\n\n renderDropdown() {\n const ac = this;\n if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n const dropdownHtml = `\n \n
\n ${ac.params.preloader ? ac.renderPreloader() : ''}\n
\n `.trim();\n return dropdownHtml;\n }\n\n renderPage(inPopup) {\n const ac = this;\n if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n\n const pageHtml = `\n \n ${ac.renderNavbar(inPopup)}\n
\n
\n
\n
\n
\n ${ac.params.notFoundText}
\n \n
\n
\n
\n
\n `.trim();\n return pageHtml;\n }\n\n renderPopup() {\n const ac = this;\n if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n const popupHtml = `\n \n `.trim();\n return popupHtml;\n }\n\n onOpen(type, el) {\n const ac = this;\n const app = ac.app;\n const $el = $(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n let $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n },\n },\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) ac.source('');\n }\n\n ac.emit('local::open autocompleteOpen', ac);\n }\n\n autoFocus() {\n const ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n }\n\n onOpened() {\n const ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n }\n\n onClose() {\n const ac = this;\n if (ac.destroyed) return;\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n ac.$inputEl.parents('.item-content-dropdown-expanded').removeClass('item-content-dropdown-expanded');\n } else {\n ac.detachPageEvents();\n }\n\n ac.emit('local::close autocompleteClose', ac);\n }\n\n onClosed() {\n const ac = this;\n if (ac.destroyed) return;\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n\n ac.emit('local::closed autocompleteClosed', ac);\n }\n\n openPage() {\n const ac = this;\n if (ac.opened) return ac;\n const pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n },\n },\n options: {\n animate: ac.params.animate,\n },\n },\n });\n return ac;\n }\n\n openPopup() {\n const ac = this;\n if (ac.opened) return ac;\n const popupHtml = ac.renderPopup();\n\n const popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n push: ac.params.popupPush,\n swipeToClose: ac.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ac.params.routableModals && ac.view) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams,\n },\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n }\n\n openDropdown() {\n const ac = this;\n\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $(ac.renderDropdown());\n }\n const $listEl = ac.$inputEl.parents('.list');\n if ($listEl.length && ac.$inputEl.parents('.item-content').length > 0 && ac.params.expandInput) {\n ac.$inputEl.parents('.item-content').addClass('item-content-dropdown-expanded');\n }\n\n const $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n }\n\n open() {\n const ac = this;\n if (ac.opened) return ac;\n const openIn = ac.params.openIn;\n ac[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ac;\n }\n\n close() {\n const ac = this;\n if (!ac.opened) return ac;\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if ((ac.params.routableModals && ac.view) || ac.openedIn === 'page') {\n ac.view.router.back({ animate: ac.params.animate });\n } else {\n ac.modal.once('modalClosed', () => {\n Utils.nextTick(() => {\n if (ac.destroyed) return;\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n }\n\n init() {\n const ac = this;\n ac.attachEvents();\n }\n\n destroy() {\n const ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n Utils.deleteProps(ac);\n ac.destroyed = true;\n }\n}\n\nexport default Autocomplete;\n","import Utils from '../../utils/utils';\nimport Autocomplete from './autocomplete-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n expandInput: false,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n\n value: undefined,\n multiple: false,\n\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n\n openIn: 'page', // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: undefined,\n searchbarSpellcheck: false,\n\n popupPush: false,\n popupSwipeToClose: undefined,\n\n animate: true,\n\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n\n // Routing\n routableModals: true,\n url: 'select/',\n\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined,\n\n },\n },\n static: {\n Autocomplete,\n },\n create() {\n const app = this;\n app.autocomplete = Utils.extend(\n ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app,\n domProp: 'f7Autocomplete',\n }),\n {\n open(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) return ac.open();\n return undefined;\n },\n close(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) return ac.close();\n return undefined;\n },\n }\n );\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\nimport Framework7Class from '../../utils/class';\n\nclass Tooltip extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const tooltip = this;\n\n const defaults = Utils.extend({}, app.params.tooltip);\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n\n tooltip.params = Utils.extend(defaults, params);\n if (typeof params.offset === 'undefined' && Support.touch && tooltip.params.trigger === 'hover') {\n tooltip.params.offset = 10;\n }\n\n const { targetEl } = tooltip.params;\n if (!targetEl) return tooltip;\n\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return tooltip;\n\n if ($targetEl[0].f7Tooltip) return $targetEl[0].f7Tooltip;\n\n const $el = $(tooltip.render()).eq(0);\n\n Utils.extend(tooltip, {\n app,\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false,\n });\n\n $targetEl[0].f7Tooltip = tooltip;\n\n const touchesStart = {};\n let isTouched;\n function handleClick() {\n if (tooltip.opened) tooltip.hide();\n else tooltip.show(this);\n }\n function handleClickOut(e) {\n if (tooltip.opened && (\n $(e.target).closest($targetEl).length\n || $(e.target).closest(tooltip.$el).length\n )) return;\n tooltip.hide();\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const distance = (\n ((x - touchesStart.x) ** 2)\n + ((y - touchesStart.y) ** 2)\n ) ** 0.5;\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n $targetEl.on('click', handleClick);\n $('html').on('click', handleClickOut);\n return;\n }\n if (Support.touch) {\n const passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.on((Support.pointerEvents ? 'pointerenter' : 'mouseenter'), handleMouseEnter);\n $targetEl.on((Support.pointerEvents ? 'pointerleave' : 'mouseleave'), handleMouseLeave);\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n $targetEl.off('click', handleClick);\n $('html').off('click', handleClickOut);\n return;\n }\n if (Support.touch) {\n const passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.off((Support.pointerEvents ? 'pointerenter' : 'mouseenter'), handleMouseEnter);\n $targetEl.off((Support.pointerEvents ? 'pointerleave' : 'mouseleave'), handleMouseLeave);\n }\n };\n\n // Install Modules\n tooltip.useModules();\n\n tooltip.init();\n\n return tooltip;\n }\n\n position(targetEl) {\n const tooltip = this;\n const { $el, app } = tooltip;\n const tooltipOffset = tooltip.params.offset || 0;\n $el.css({ left: '', top: '' });\n const $targetEl = $(targetEl || tooltip.targetEl);\n const [width, height] = [$el.width(), $el.height()];\n\n $el.css({ left: '', top: '' });\n\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {\n const clientRect = $targetEl[0].getBoundingClientRect();\n targetWidth = clientRect.width;\n targetHeight = clientRect.height;\n }\n\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n let [left, top] = [0, 0, 0];\n\n // Top Position\n let position = 'top';\n\n if (height + tooltipOffset < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - tooltipOffset;\n } else if (height < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + tooltipOffset;\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n if (top <= 0) {\n top = 8;\n } else if (top + height >= app.height) {\n top = app.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n if (left < 8) left = 8;\n if (left + width > app.width) left = app.width - width - 8;\n if (left < 0) left = 0;\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || (left + width > app.width)) {\n if (left < 8) left = targetOffsetLeft + targetWidth;\n if (left + width > app.width) left = app.width - width - 8;\n }\n }\n\n // Apply Styles\n $el.css({ top: `${top}px`, left: `${left}px` });\n }\n\n show(aroundEl) {\n const tooltip = this;\n const { app, $el, $targetEl } = tooltip;\n app.root.append($el);\n tooltip.position(aroundEl);\n const $aroundEl = $(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show');\n $el.trigger('tooltip:show');\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show');\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n }\n\n hide() {\n const tooltip = this;\n const { $el, $targetEl } = tooltip;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide');\n $el.trigger('tooltip:hide');\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n }\n\n render() {\n const tooltip = this;\n if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n const { cssClass, text } = tooltip.params;\n return `\n \n `.trim();\n }\n\n setText(newText) {\n const tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n }\n\n init() {\n const tooltip = this;\n tooltip.attachEvents();\n }\n\n destroy() {\n const tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) return;\n tooltip.$targetEl.trigger('tooltip:beforedestroy');\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n Utils.deleteProps(tooltip);\n tooltip.destroyed = true;\n }\n}\nexport default Tooltip;\n","import $ from 'dom7';\nimport Tooltip from './tooltip-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'tooltip',\n static: {\n Tooltip,\n },\n create() {\n const app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app,\n domProp: 'f7Tooltip',\n });\n app.tooltip.show = function show(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n text: null,\n cssClass: null,\n render: null,\n offset: 0,\n trigger: 'hover',\n },\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.tooltip-init').each((index, el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.tooltip-init').each((index, el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tooltip-init').each((index, el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each((index, el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.tooltip-init').each((index, el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each((index, el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n }\n },\n },\n vnode: {\n 'tooltip-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n },\n update(vnode) {\n const el = vnode.elm;\n if (!el.f7Tooltip) return;\n if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n }\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n },\n },\n },\n};\n","/* eslint no-nested-ternary: off */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Gauge extends Framework7Class {\n constructor(app, params = {}) {\n // Extends with open/close Modal methods;\n super(params, [app]);\n\n const gauge = this;\n\n const defaults = Utils.extend({}, app.params.gauge);\n\n // Extend defaults with modules params\n gauge.useModulesParams(defaults);\n\n gauge.params = Utils.extend(defaults, params);\n\n const { el } = gauge.params;\n if (!el) return gauge;\n\n const $el = $(el);\n if ($el.length === 0) return gauge;\n\n if ($el[0].f7Gauge) return $el[0].f7Gauge;\n\n Utils.extend(gauge, {\n app,\n $el,\n el: $el && $el[0],\n });\n\n $el[0].f7Gauge = gauge;\n\n // Install Modules\n gauge.useModules();\n\n gauge.init();\n\n return gauge;\n }\n\n calcRadius() {\n const gauge = this;\n const { size, borderWidth } = gauge.params;\n return (size / 2) - (borderWidth / 2);\n }\n\n calcBorderLength() {\n const gauge = this;\n const radius = gauge.calcRadius();\n return 2 * Math.PI * radius;\n }\n\n render() {\n const gauge = this;\n if (gauge.params.render) return gauge.params.render.call(gauge, gauge);\n\n const {\n type,\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight,\n } = gauge.params;\n\n const semiCircle = type === 'semicircle';\n const radius = gauge.calcRadius();\n const length = gauge.calcBorderLength();\n const progress = Math.max(Math.min(value, 1), 0);\n\n return `\n \n ${semiCircle ? `\n \n \n ` : `\n ${borderBgColor ? `\n \n ` : ''}\n \n `}\n ${valueText ? `\n ${valueText} \n ` : ''}\n ${labelText ? `\n ${labelText} \n ` : ''}\n \n `.trim();\n }\n\n update(newParams = {}) {\n const gauge = this;\n const { params, $gaugeSvgEl } = gauge;\n\n Object.keys(newParams).forEach((param) => {\n if (typeof newParams[param] !== 'undefined') {\n params[param] = newParams[param];\n }\n });\n if ($gaugeSvgEl.length === 0) return gauge;\n\n const {\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight,\n } = params;\n\n const length = gauge.calcBorderLength();\n const progress = Math.max(Math.min(value, 1), 0);\n const radius = gauge.calcRadius();\n const semiCircle = params.type === 'semicircle';\n\n const svgAttrs = {\n width: `${size}px`,\n height: `${semiCircle ? size / 2 : size}px`,\n viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`,\n };\n Object.keys(svgAttrs).forEach((attr) => {\n $gaugeSvgEl.attr(attr, svgAttrs[attr]);\n });\n if (semiCircle) {\n const backAttrs = {\n d: `M${size - (borderWidth / 2)},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n };\n const frontAttrs = {\n d: `M${size - (borderWidth / 2)},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length / 2,\n 'stroke-dashoffset': (length / 2) * (1 + progress),\n fill: borderBgColor ? 'none' : (bgColor || 'none'),\n };\n Object.keys(backAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);\n });\n } else {\n const backAttrs = {\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n const frontAttrs = {\n transform: `rotate(-90 ${size / 2} ${size / 2})`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length,\n 'stroke-dashoffset': length * (1 - progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n Object.keys(backAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-back-circle').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-front-circle').attr(attr, frontAttrs[attr]);\n });\n }\n if (valueText) {\n if (!$gaugeSvgEl.find('.gauge-value-text').length) {\n const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n textEl.classList.add('gauge-value-text');\n $gaugeSvgEl.append(textEl);\n }\n const textAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': valueFontWeight,\n 'font-size': valueFontSize,\n fill: valueTextColor,\n dy: semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(textAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-value-text').text(valueText);\n } else {\n $gaugeSvgEl.find('.gauge-value-text').remove();\n }\n if (labelText) {\n if (!$gaugeSvgEl.find('.gauge-label-text').length) {\n const textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n textEl.classList.add('gauge-label-text');\n $gaugeSvgEl.append(textEl);\n }\n const labelAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': labelFontWeight,\n 'font-size': labelFontSize,\n fill: labelTextColor,\n dy: semiCircle ? -5 : (valueText ? ((valueFontSize / 2) + 10) : 0),\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(labelAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-label-text').text(labelText);\n } else {\n $gaugeSvgEl.find('.gauge-label-text').remove();\n }\n return gauge;\n }\n\n init() {\n const gauge = this;\n const $gaugeSvgEl = $(gauge.render()).eq(0);\n $gaugeSvgEl.f7Gauge = gauge;\n Utils.extend(gauge, {\n $gaugeSvgEl,\n gaugeSvgEl: $gaugeSvgEl && $gaugeSvgEl[0],\n });\n gauge.$el.append($gaugeSvgEl);\n return gauge;\n }\n\n destroy() {\n const gauge = this;\n if (!gauge.$el || gauge.destroyed) return;\n gauge.$el.trigger('gauge:beforedestroy');\n gauge.emit('local::beforeDestroy gaugeBeforeDestroy', gauge);\n gauge.$gaugeSvgEl.remove();\n delete gauge.$el[0].f7Gauge;\n Utils.deleteProps(gauge);\n gauge.destroyed = true;\n }\n}\nexport default Gauge;\n","import $ from 'dom7';\n\nconst Menu = {\n open(el = '.menu-item-dropdown') {\n const app = this;\n if (!el) return;\n const $el = $(el).closest('.menu-item-dropdown');\n if (!$el.length) return;\n const $menuEl = $el.closest('.menu').eq(0);\n if ($menuEl.length) {\n const zIndex = $menuEl.css('z-index');\n const originalZIndex = $menuEl[0].style.zIndex;\n $menuEl.css('z-index', parseInt(zIndex || 0, 0) + 1);\n $menuEl[0].f7MenuZIndex = originalZIndex;\n }\n $el.eq(0).addClass('menu-item-dropdown-opened').trigger('menu:opened');\n app.emit('menuOpened', $el.eq(0)[0]);\n },\n close(el = '.menu-item-dropdown-opened') {\n const app = this;\n if (!el) return;\n const $el = $(el).closest('.menu-item-dropdown-opened');\n if (!$el.length) return;\n const $menuEl = $el.closest('.menu').eq(0);\n if ($menuEl.length) {\n const zIndex = $menuEl[0].f7MenuZIndex;\n $menuEl.css('z-index', zIndex);\n delete $menuEl[0].f7MenuZIndex;\n }\n $el.eq(0).removeClass('menu-item-dropdown-opened').trigger('menu:closed');\n app.emit('menuClosed', $el.eq(0)[0]);\n },\n};\n\nexport default {\n name: 'menu',\n create() {\n const app = this;\n app.menu = {\n open: Menu.open.bind(app),\n close: Menu.close.bind(app),\n };\n },\n on: {\n click(e) {\n const app = this;\n const openedMenus = $('.menu-item-dropdown-opened');\n if (!openedMenus.length) return;\n openedMenus.each((index, el) => {\n if (!$(e.target).closest('.menu-item-dropdown-opened').length) {\n app.menu.close(el);\n }\n });\n },\n },\n clicks: {\n '.menu-item-dropdown': function onClick($clickedEl, dataset, e) {\n const app = this;\n if ($clickedEl.hasClass('menu-item-dropdown-opened')) {\n if ($(e.target).closest('.menu-dropdown').length) return;\n app.menu.close($clickedEl);\n } else {\n app.menu.open($clickedEl);\n }\n },\n '.menu-close': function onClick() {\n const app = this;\n app.menu.close();\n },\n },\n};\n","import $ from 'dom7';\nimport Gauge from './gauge-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'gauge',\n static: {\n Gauge,\n },\n create() {\n const app = this;\n app.gauge = ConstructorMethods({\n defaultSelector: '.gauge',\n constructor: Gauge,\n app,\n domProp: 'f7Gauge',\n });\n app.gauge.update = function update(el, newParams) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const gauge = app.gauge.get(el);\n if (!gauge) return undefined;\n gauge.update(newParams);\n return gauge;\n };\n },\n params: {\n gauge: {\n el: null,\n type: 'circle',\n value: 0,\n size: 200,\n bgColor: 'transparent',\n borderBgColor: '#eeeeee',\n borderColor: '#000000',\n borderWidth: 10,\n valueText: null,\n valueTextColor: '#000000',\n valueFontSize: 31,\n valueFontWeight: 500,\n labelText: null,\n labelTextColor: '#888888',\n labelFontSize: 14,\n labelFontWeight: 400,\n },\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.gauge-init').each((index, el) => {\n app.gauge.create(Utils.extend({ el }, $(el).dataset() || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.gauge-init').each((index, el) => {\n if (el.f7Gauge) el.f7Gauge.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.gauge-init').each((index, el) => {\n app.gauge.create(Utils.extend({ el }, $(el).dataset() || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.gauge-init').each((index, el) => {\n if (el.f7Gauge) el.f7Gauge.destroy();\n });\n },\n },\n vnode: {\n 'gauge-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.gauge.create(Utils.extend({ el }, $(el).dataset() || {}));\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Gauge) el.f7Gauge.destroy();\n },\n },\n },\n};\n","export default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, alphaLabelText } = self.params;\n return `\n \n
\n ${sliderLabel ? `\n
${alphaLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n `;\n },\n init(self) {\n self.alphaRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n value: 1,\n on: {\n change(range, value) {\n const alpha = Math.floor(value * 100) / 100;\n self.setValue({ alpha });\n },\n },\n });\n function handleInputChange(e) {\n const alpha = self.value.alpha;\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = alpha;\n return;\n }\n value = Math.max(0, Math.min(1, value));\n self.setValue({ alpha: value });\n }\n\n self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n\n self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { alpha } = value;\n self.alphaRangeSlider.value = alpha;\n self.alphaRangeSlider.layout();\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-alpha').val(alpha);\n } else {\n self.$el.find('span.color-picker-value-alpha').text(alpha);\n }\n },\n destroy(self) {\n if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n self.alphaRangeSlider.destroy();\n }\n delete self.alphaRangeSlider;\n\n if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n delete self.destroyAlphaSliderEvents;\n },\n};\n","export default {\n render() {\n return `\n \n `;\n },\n update(self) {\n self.$el.find('.color-picker-module-current-color .color-picker-current-color').css(\n 'background-color',\n self.value.hex,\n );\n },\n};\n","export default {\n render(self) {\n const { hexLabel, hexLabelText, hexValueEditable } = self.params;\n return `\n \n
\n ${hexLabel ? `\n
${hexLabelText}
\n ` : ''}\n
\n ${hexValueEditable ? `\n \n ` : `\n \n `}\n
\n
\n
\n `;\n },\n init(self) {\n function handleInputChange(e) {\n const hex = self.value.hex;\n let value = e.target.value.replace(/#/g, '');\n if (Number.isNaN(value) || !value || (value.length !== 3 && value.length !== 6)) {\n e.target.value = hex;\n return;\n }\n const min = 0;\n const current = parseInt(value, 16);\n const max = parseInt('ffffff', 16); // eslint-disable-line\n if (current > max) {\n value = 'fff';\n }\n if (current < min) {\n value = '000';\n }\n self.setValue({ hex: value });\n }\n\n self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n\n self.destroyHexEvents = function destroyHexEvents() {\n self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hexValueEditable } = self.params;\n\n const { hex } = value;\n if (hexValueEditable) {\n self.$el.find('input.color-picker-value-hex').val(hex);\n } else {\n self.$el.find('span.color-picker-value-hex').text(hex);\n }\n },\n destroy(self) {\n if (self.destroyHexEvents) self.destroyHexEvents();\n delete self.destroyHexEvents;\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../../utils/utils';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, hueLabelText, saturationLabelText, brightnessLabelText } = self.params;\n return `\n \n
\n ${sliderLabel ? `\n
${hueLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n ${sliderLabel ? `\n
${saturationLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n ${sliderLabel ? `\n
${brightnessLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n `;\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ hue: value });\n },\n },\n });\n self.saturationRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-saturation'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const s = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], s, self.value.hsb[2]] });\n },\n },\n });\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n },\n },\n });\n\n function handleInputChange(e) {\n const hsb = [...self.value.hsb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = hsb[index];\n return;\n }\n if (index === 0) {\n value = Math.max(0, Math.min(360, value));\n } else {\n value = Math.max(0, Math.min(100, value)) / 100;\n }\n\n hsb[index] = value;\n self.setValue({ hsb });\n }\n\n self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n\n self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hsb, hue } = value;\n\n self.hueRangeSlider.value = hue;\n self.saturationRangeSlider.value = hsb[1];\n self.brightnessRangeSlider.value = hsb[2];\n\n self.hueRangeSlider.layout();\n self.saturationRangeSlider.layout();\n self.brightnessRangeSlider.layout();\n\n const hslCurrent = Utils.colorHsbToHsl(hsb[0], hsb[1], 1);\n const hslLeft = Utils.colorHsbToHsl(hsb[0], 0, 1);\n const hslRight = Utils.colorHsbToHsl(hsb[0], 1, 1);\n const brightness = hsb[2];\n\n self.hueRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hue}, 100%, 50%)`\n );\n self.saturationRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`\n );\n self.brightnessRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`\n );\n self.saturationRangeSlider.$el.find('.range-bar').css(\n 'background-image',\n `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`\n );\n\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n self.$el.find('input.color-picker-value-saturation').val(`${hsb[1] * 1000 / 10}`);\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n self.$el.find('span.color-picker-value-saturation').text(`${hsb[1] * 1000 / 10}`);\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n self.saturationRangeSlider.destroy();\n }\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n\n delete self.hueRangeSlider;\n delete self.saturationRangeSlider;\n delete self.brightnessRangeSlider;\n\n if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n delete self.destroyHsbSlidersEvents;\n },\n};\n","export default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, hueLabelText } = self.params;\n return `\n \n
\n ${sliderLabel ? `\n
${hueLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n `;\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ hue: value });\n },\n },\n });\n },\n update(self) {\n const {\n value,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hue } = value;\n\n self.hueRangeSlider.value = hue;\n self.hueRangeSlider.layout();\n self.hueRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hue}, 100%, 50%)`\n );\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n },\n};\n","import Utils from '../../../utils/utils';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, brightnessLabelText } = self.params;\n return `\n \n
\n ${sliderLabel ? `\n
${brightnessLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n `;\n },\n init(self) {\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n },\n },\n });\n },\n update(self) {\n const {\n value,\n app,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hsb } = value;\n\n self.brightnessRangeSlider.value = hsb[2];\n self.brightnessRangeSlider.layout();\n\n const hslCurrent = Utils.colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n const hslLeft = Utils.colorHsbToHsl(hsb[0], hsb[1], 0);\n const hslRight = Utils.colorHsbToHsl(hsb[0], hsb[1], 1);\n\n self.brightnessRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`\n );\n self.brightnessRangeSlider.$el.find('.range-bar').css(\n 'background-image',\n `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`\n );\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.brightnessRangeSlider;\n },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from 'dom7';\n\nexport default {\n render(self) {\n return `\n \n
\n ${self.params.palette.map((p) => {\n if (Array.isArray(p)) {\n let row = '
';\n row += p.map(c => `\n
\n `).join('');\n row += '
';\n return row;\n }\n return `\n
\n `;\n }).join('')}\n
\n
\n `;\n },\n init(self) {\n function handlePaletteClick(e) {\n const hex = $(e.target).attr('data-palette-color');\n self.setValue({\n hex,\n });\n }\n\n self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);\n\n self.destroyPaletteEvents = function destroyPaletteEvents() {\n self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n };\n },\n destroy(self) {\n if (self.destroyPaletteEvents) {\n self.destroyPaletteEvents();\n }\n delete self.destroyPaletteEvents;\n },\n};\n","export default {\n render() {\n return `\n \n `;\n },\n init(self) {\n function handleInitialColorClick() {\n if (self.initialValue) {\n const { hex, alpha } = self.initialValue;\n self.setValue({\n hex,\n alpha,\n });\n }\n }\n self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n };\n },\n update(self) {\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css(\n 'background-color',\n self.initialValue.hex,\n );\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css(\n 'background-color',\n self.value.hex,\n );\n },\n destroy(self) {\n if (self.destroyInitialCurrentEvents) {\n self.destroyInitialCurrentEvents();\n }\n delete self.destroyInitialCurrentEvents;\n },\n};\n","import $ from 'dom7';\n\nexport default {\n render(self) {\n const { barLabel, barValue, barValueEditable, redLabelText, greenLabelText, blueLabelText } = self.params;\n return `\n \n
\n ${barLabel ? `\n
${redLabelText}
\n ` : ''}\n
\n ${barValue ? `\n
\n ${barValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n ${barLabel ? `\n
${greenLabelText}
\n ` : ''}\n
\n ${barValue ? `\n
\n ${barValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n ${barLabel ? `\n
${blueLabelText}
\n ` : ''}\n
\n ${barValue ? `\n
\n ${barValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n `;\n },\n init(self) {\n self.redBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n },\n },\n });\n self.greenBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n },\n },\n });\n self.blueBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n },\n },\n });\n\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({ rgb });\n }\n\n self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n\n self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n redBar,\n greenBar,\n blueBar,\n } = self;\n\n const { barValue, barValueEditable } = self.params;\n\n const { rgb } = value;\n\n redBar.value = rgb[0];\n greenBar.value = rgb[1];\n blueBar.value = rgb[2];\n\n redBar.layout();\n greenBar.layout();\n blueBar.layout();\n\n redBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n\n if (barValue && barValueEditable) {\n self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n } else if (barValue) {\n self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redBar && self.redBar.destroy) {\n self.redBar.destroy();\n }\n if (self.greenBar && self.greenBar.destroy) {\n self.greenBar.destroy();\n }\n if (self.blueBar && self.blueBar.destroy) {\n self.blueBar.destroy();\n }\n\n delete self.redBar;\n delete self.greenBar;\n delete self.blueBar;\n\n if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n delete self.destroyRgbBarsEvents;\n },\n};\n","import $ from 'dom7';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, redLabelText, greenLabelText, blueLabelText } = self.params;\n return `\n \n
\n ${sliderLabel ? `\n
${redLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n ${sliderLabel ? `\n
${greenLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n ${sliderLabel ? `\n
${blueLabelText}
\n ` : ''}\n
\n ${sliderValue ? `\n
\n ${sliderValueEditable ? `\n \n ` : `\n \n `}\n
\n ` : ''}\n
\n
\n `;\n },\n init(self) {\n self.redRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n },\n },\n });\n self.greenRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n },\n },\n });\n self.blueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n },\n },\n });\n\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({ rgb });\n }\n\n self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n\n self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n redRangeSlider,\n greenRangeSlider,\n blueRangeSlider,\n } = self;\n\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { rgb } = value;\n\n redRangeSlider.value = rgb[0];\n greenRangeSlider.value = rgb[1];\n blueRangeSlider.value = rgb[2];\n\n redRangeSlider.layout();\n greenRangeSlider.layout();\n blueRangeSlider.layout();\n\n redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n\n const direction = app.rtl ? 'to left' : 'to right';\n\n redRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redRangeSlider && self.redRangeSlider.destroy) {\n self.redRangeSlider.destroy();\n }\n if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n self.greenRangeSlider.destroy();\n }\n if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n self.blueRangeSlider.destroy();\n }\n\n delete self.redRangeSlider;\n delete self.greenRangeSlider;\n delete self.blueRangeSlider;\n\n if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n delete self.destroyRgbSlidersEvents;\n },\n};\n","import $ from 'dom7';\n\nexport default {\n render() {\n return `\n \n `;\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n\n self.setValue({ hsb: [self.value.hue, s, b] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules['sb-spectrum'].update(self);\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hsl, hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n\n self.$el.find('.color-picker-sb-spectrum')\n .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n self.$el.find('.color-picker-sb-spectrum-handle')\n .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../../utils/utils';\n\nexport default {\n render() {\n return `\n \n `;\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setHSFromSpecterCoords(x, y) {\n let h = (x - specterRect.left) / specterRect.width * 360;\n let s = (y - specterRect.top) / specterRect.height;\n h = Math.max(0, Math.min(360, h));\n s = 1 - Math.max(0, Math.min(1, s));\n\n self.setValue({ hsb: [h, s, self.value.hsb[2]] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n setHSFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules['hs-spectrum'].update(self);\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n\n const hslBright = Utils.colorHsbToHsl(hsb[0], hsb[1], 1);\n\n self.$el.find('.color-picker-hs-spectrum-handle')\n .css('background-color', `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`)\n .transform(`translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n },\n};\n","import $ from 'dom7';\n\nfunction svgWheelCircles() {\n const total = 256;\n let circles = '';\n for (let i = total; i > 0; i -= 1) {\n const angle = i * Math.PI / (total / 2);\n const hue = 360 / total * i;\n circles += ` `;\n }\n return circles;\n}\nexport default {\n render() {\n return `\n \n
\n
${svgWheelCircles()} \n
\n
\n
\n
\n `;\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let wheelRect;\n let wheelIsTouched;\n let wheelHandleIsTouched;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setHueFromWheelCoords(x, y) {\n const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n let angleDeg = angleRad * 180 / Math.PI + 90;\n if (angleDeg < 0) angleDeg += 360;\n angleDeg = 360 - angleDeg;\n self.setValue({ hue: angleDeg });\n }\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n\n self.setValue({ hsb: [self.value.hue, s, b] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n wheelIsTouched = $targetEl.closest('circle').length > 0;\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (wheelIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n setHueFromWheelCoords(touchStartX, touchStartY);\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (wheelHandleIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n }\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (wheelIsTouched || wheelHandleIsTouched) {\n setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n wheelIsTouched = false;\n wheelHandleIsTouched = false;\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules.wheel.update(self);\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroyWheelEvents = function destroyWheelEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hsl, hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n const wheelHalfSize = wheelSize / 2;\n const angleRad = value.hue * Math.PI / 180;\n const handleSize = wheelSize / 6;\n const handleHalfSize = handleSize / 2;\n const tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n const tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n self.$el.find('.color-picker-wheel-handle')\n .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`)\n .transform(`translate(${tX}px, ${tY}px)`);\n\n self.$el.find('.color-picker-sb-spectrum')\n .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n self.$el.find('.color-picker-sb-spectrum-handle')\n .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroyWheelEvents) self.destroyWheelEvents();\n delete self.destroyWheelEvents;\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nimport moduleAlphaSlider from './modules/alpha-slider';\nimport moduleCurrentColor from './modules/current-color';\nimport moduleHex from './modules/hex';\nimport moduleHsbSliders from './modules/hsb-sliders';\nimport moduleHueSlider from './modules/hue-slider';\nimport moduleBrightnessSlider from './modules/brightness-slider';\nimport modulePalette from './modules/palette';\nimport moduleInitialCurrentColors from './modules/initial-current-colors';\nimport moduleRgbBars from './modules/rgb-bars';\nimport moduleRgbSliders from './modules/rgb-sliders';\nimport moduleSbSpectrum from './modules/sb-spectrum';\nimport moduleHsSpectrum from './modules/hs-spectrum';\nimport moduleWheel from './modules/wheel';\n\nclass ColorPicker extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const self = this;\n\n self.params = Utils.extend({}, app.params.colorPicker, params);\n\n let $containerEl;\n if (self.params.containerEl) {\n $containerEl = $(self.params.containerEl);\n if ($containerEl.length === 0) return self;\n }\n\n let $inputEl;\n if (self.params.inputEl) {\n $inputEl = $(self.params.inputEl);\n }\n\n let $targetEl;\n if (self.params.targetEl) {\n $targetEl = $(self.params.targetEl);\n }\n\n Utils.extend(self, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n initialized: false,\n opened: false,\n url: self.params.url,\n modules: {\n 'alpha-slider': moduleAlphaSlider,\n 'current-color': moduleCurrentColor,\n 'hex': moduleHex, // eslint-disable-line\n 'hsb-sliders': moduleHsbSliders,\n 'hue-slider': moduleHueSlider,\n 'brightness-slider': moduleBrightnessSlider,\n 'palette': modulePalette, // eslint-disable-line\n 'initial-current-colors': moduleInitialCurrentColors,\n 'rgb-bars': moduleRgbBars,\n 'rgb-sliders': moduleRgbSliders,\n 'sb-spectrum': moduleSbSpectrum,\n 'hs-spectrum': moduleHsSpectrum,\n 'wheel': moduleWheel, // eslint-disable-line\n },\n });\n\n function onInputClick() {\n self.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onTargetClick() {\n self.open();\n }\n function onHtmlClick(e) {\n if (self.destroyed || !self.params) return;\n if (self.params.openIn === 'page') return;\n const $clickTargetEl = $(e.target);\n if (!self.opened || self.closing) return;\n if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {\n self.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n self.close();\n }\n }\n\n // Events\n Utils.extend(self, {\n attachInputEvents() {\n self.$inputEl.on('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.on('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n self.$inputEl[0].f7ValidateReadonly = true;\n }\n }\n },\n detachInputEvents() {\n self.$inputEl.off('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.off('focus mousedown', onInputFocus);\n if (self.$inputEl[0]) {\n delete self.$inputEl[0].f7ValidateReadonly;\n }\n }\n },\n attachTargetEvents() {\n self.$targetEl.on('click', onTargetClick);\n },\n detachTargetEvents() {\n self.$targetEl.off('click', onTargetClick);\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n\n self.init();\n\n return self;\n }\n\n get view() {\n const { $inputEl, $targetEl, app, params } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else {\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view && $targetEl) {\n view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n }\n }\n if (!view) view = app.views.main;\n\n return view;\n }\n\n attachEvents() {\n const self = this;\n self.centerModules = self.centerModules.bind(self);\n if (self.params.centerModules) {\n self.app.on('resize', self.centerModules);\n }\n }\n\n detachEvents() {\n const self = this;\n if (self.params.centerModules) {\n self.app.off('resize', self.centerModules);\n }\n }\n\n centerModules() {\n const self = this;\n if (!self.opened || !self.$el || self.inline) return;\n const $pageContentEl = self.$el.find('.page-content');\n if (!$pageContentEl.length) return;\n const { scrollHeight, offsetHeight } = $pageContentEl[0];\n if (scrollHeight <= offsetHeight) {\n $pageContentEl.addClass('justify-content-center');\n } else {\n $pageContentEl.removeClass('justify-content-center');\n }\n }\n\n initInput() {\n const self = this;\n if (!self.$inputEl) return;\n if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n }\n\n getModalType() {\n const self = this;\n const { app, modal, params } = self;\n const { openIn, openInPhone } = params;\n if (modal && modal.type) return modal.type;\n if (openIn !== 'auto') return openIn;\n if (self.inline) return null;\n if (app.device.ios) {\n return app.device.ipad ? 'popover' : openInPhone;\n }\n if (app.width >= 768 || (app.device.desktop && app.theme === 'aurora')) {\n return 'popover';\n }\n\n return openInPhone;\n }\n\n formatValue() {\n const self = this;\n const { value } = self;\n if (self.params.formatValue) {\n return self.params.formatValue.call(self, value);\n }\n return value.hex;\n }\n\n // eslint-disable-next-line\n normalizeHsValues(arr) {\n return [\n Math.floor(arr[0] * 10) / 10,\n Math.floor(arr[1] * 1000) / 1000,\n Math.floor(arr[2] * 1000) / 1000,\n ];\n }\n\n setValue(value = {}, updateModules = true) {\n const self = this;\n if (typeof value === 'undefined') return;\n\n let {\n hex,\n rgb,\n hsl,\n hsb,\n alpha = 1,\n hue,\n rgba,\n hsla,\n } = (self.value || {});\n\n const needChangeEvent = self.value || (!self.value && !self.params.value);\n let valueChanged;\n Object.keys(value).forEach((k) => {\n if (!self.value || typeof self.value[k] === 'undefined') {\n valueChanged = true;\n return;\n }\n const v = value[k];\n if (Array.isArray(v)) {\n v.forEach((subV, subIndex) => {\n if (subV !== self.value[k][subIndex]) {\n valueChanged = true;\n }\n });\n } else if (v !== self.value[k]) {\n valueChanged = true;\n }\n });\n if (!valueChanged) return;\n\n if (value.rgb || value.rgba) {\n const [r, g, b, a = alpha] = (value.rgb || value.rgba);\n rgb = [r, g, b];\n hex = Utils.colorRgbToHex(...rgb);\n hsl = Utils.colorRgbToHsl(...rgb);\n hsb = Utils.colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hsl || value.hsla) {\n const [h, s, l, a = alpha] = (value.hsl || value.hsla);\n hsl = [h, s, l];\n rgb = Utils.colorHslToRgb(...hsl);\n hex = Utils.colorRgbToHex(...rgb);\n hsb = Utils.colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hsb) {\n const [h, s, b, a = alpha] = value.hsb;\n hsb = [h, s, b];\n hsl = Utils.colorHsbToHsl(...hsb);\n rgb = Utils.colorHslToRgb(...hsl);\n hex = Utils.colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hex) {\n rgb = Utils.colorHexToRgb(value.hex);\n hex = Utils.colorRgbToHex(...rgb);\n hsl = Utils.colorRgbToHsl(...rgb);\n hsb = Utils.colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n\n if (typeof value.alpha !== 'undefined') {\n alpha = value.alpha;\n if (typeof rgb !== 'undefined') {\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n }\n if (typeof hsl !== 'undefined') {\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n }\n\n if (typeof value.hue !== 'undefined') {\n const [h, s, l] = hsl; // eslint-disable-line\n hsl = [value.hue, s, l];\n hsb = Utils.colorHslToHsb(...hsl);\n rgb = Utils.colorHslToRgb(...hsl);\n hex = Utils.colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n self.value = {\n hex,\n alpha,\n hue,\n rgb,\n hsl,\n hsb,\n rgba,\n hsla,\n };\n if (!self.initialValue) self.initialValue = Utils.extend({}, self.value);\n self.updateValue(needChangeEvent);\n if (self.opened && updateModules) {\n self.updateModules();\n }\n }\n\n getValue() {\n const self = this;\n return self.value;\n }\n\n updateValue(fireEvents = true) {\n const self = this;\n const { $inputEl, value, $targetEl } = self;\n if ($targetEl && self.params.targetElSetBackgroundColor) {\n const { rgba } = value;\n $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n }\n if (fireEvents) {\n self.emit('local::change colorPickerChange', self, value);\n }\n\n if ($inputEl && $inputEl.length) {\n const inputValue = self.formatValue(value);\n if ($inputEl && $inputEl.length) {\n $inputEl.val(inputValue);\n if (fireEvents) {\n $inputEl.trigger('change');\n }\n }\n }\n }\n\n updateModules() {\n const self = this;\n const { modules } = self;\n self.params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].update) {\n modules[m].update(self);\n } else if (m && m.update) {\n m.update(self);\n }\n });\n }\n\n update() {\n const self = this;\n self.updateModules();\n }\n\n renderPicker() {\n const self = this;\n const { params, modules } = self;\n let html = '';\n\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].render) {\n html += modules[m].render(self);\n } else if (m && m.render) {\n html += m.render(self);\n }\n });\n\n return html;\n }\n\n renderNavbar() {\n const self = this;\n if (self.params.renderNavbar) {\n return self.params.renderNavbar.call(self, self);\n }\n const { openIn, navbarTitleText, navbarBackLinkText, navbarCloseText } = self.params;\n return `\n \n
\n
\n ${openIn === 'page' ? `\n
\n ` : ''}\n
${navbarTitleText}
\n ${openIn !== 'page' ? `\n
\n ` : ''}\n
\n
\n `.trim();\n }\n\n renderToolbar() {\n const self = this;\n if (self.params.renderToolbar) {\n return self.params.renderToolbar.call(self, self);\n }\n return `\n \n `.trim();\n }\n\n renderInline() {\n const self = this;\n const { cssClass, groupedModules } = self.params;\n const inlineHtml = `\n \n ${self.renderPicker()}\n
\n `.trim();\n\n return inlineHtml;\n }\n\n renderSheet() {\n const self = this;\n const { cssClass, toolbarSheet, groupedModules } = self.params;\n const sheetHtml = `\n \n ${toolbarSheet ? self.renderToolbar() : ''}\n
\n
\n ${self.renderPicker()}\n
\n
\n
\n `.trim();\n\n return sheetHtml;\n }\n\n renderPopover() {\n const self = this;\n const { cssClass, toolbarPopover, groupedModules } = self.params;\n const popoverHtml = `\n \n
\n
\n ${toolbarPopover ? self.renderToolbar() : ''}\n
\n ${self.renderPicker()}\n
\n
\n
\n
\n `.trim();\n\n return popoverHtml;\n }\n\n renderPopup() {\n const self = this;\n const { cssClass, navbarPopup, groupedModules } = self.params;\n const popupHtml = `\n \n `.trim();\n\n return popupHtml;\n }\n\n renderPage() {\n const self = this;\n const { cssClass, groupedModules } = self.params;\n const pageHtml = `\n \n ${self.renderNavbar()}\n
\n
\n ${self.renderPicker()}\n
\n
\n
\n `.trim();\n return pageHtml;\n }\n\n // eslint-disable-next-line\n render() {\n const self = this;\n const { params } = self;\n if (params.render) return params.render.call(self);\n if (self.inline) return self.renderInline();\n if (params.openIn === 'page') {\n return self.renderPage();\n }\n\n const modalType = self.getModalType();\n if (modalType === 'popover') return self.renderPopover();\n if (modalType === 'sheet') return self.renderSheet();\n if (modalType === 'popup') return self.renderPopup();\n }\n\n onOpen() {\n const self = this;\n const { initialized, $el, app, $inputEl, inline, value, params, modules } = self;\n self.closing = false;\n self.opened = true;\n self.opening = true;\n\n // Init main events\n self.attachEvents();\n\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].init) {\n modules[m].init(self);\n } else if (m && m.init) {\n m.init(self);\n }\n });\n\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) self.setValue(value);\n else if (params.value) {\n self.setValue(params.value, false);\n } else if (!params.value) {\n self.setValue({ hex: '#ff0000' }, false);\n }\n } else if (value) {\n self.initialValue = Utils.extend({}, value);\n self.setValue(value, false);\n }\n\n // Update input value\n if (updateValue) self.updateValue();\n self.updateModules();\n\n // Center modules\n if (params.centerModules) {\n self.centerModules();\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n self.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('colorpicker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('colorpicker:open');\n }\n self.emit('local::open colorPickerOpen', self);\n }\n\n onOpened() {\n const self = this;\n self.opening = false;\n if (self.$el) {\n self.$el.trigger('colorpicker:opened');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:opened');\n }\n self.emit('local::opened colorPickerOpened', self);\n }\n\n onClose() {\n const self = this;\n const { app, params, modules } = self;\n self.opening = false;\n self.closing = true;\n\n // Detach events\n self.detachEvents();\n\n if (self.$inputEl) {\n if (app.theme === 'md') {\n self.$inputEl.trigger('blur');\n } else {\n const validate = self.$inputEl.attr('validate');\n const required = self.$inputEl.attr('required');\n if (validate && required) {\n app.input.validate(self.$inputEl);\n }\n }\n }\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n modules[m].destroy(self);\n } else if (m && m.destroy) {\n m.destroy(self);\n }\n });\n\n if (self.$el) {\n self.$el.trigger('colorpicker:close');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:close');\n }\n self.emit('local::close colorPickerClose', self);\n }\n\n onClosed() {\n const self = this;\n self.opened = false;\n self.closing = false;\n\n if (!self.inline) {\n Utils.nextTick(() => {\n if (self.modal && self.modal.el && self.modal.destroy) {\n if (!self.params.routableModals) {\n self.modal.destroy();\n }\n }\n delete self.modal;\n });\n }\n if (self.$el) {\n self.$el.trigger('colorpicker:closed');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:closed');\n }\n self.emit('local::closed colorPickerClosed', self);\n }\n\n open() {\n const self = this;\n const { app, opened, inline, $inputEl, $targetEl, params } = self;\n if (opened) return;\n\n if (inline) {\n self.$el = $(self.render());\n self.$el[0].f7ColorPicker = self;\n self.$containerEl.append(self.$el);\n self.onOpen();\n self.onOpened();\n return;\n }\n\n const colorPickerContent = self.render();\n\n if (params.openIn === 'page') {\n self.view.router.navigate({\n url: self.url,\n route: {\n content: colorPickerContent,\n path: self.url,\n on: {\n pageBeforeIn(e, page) {\n self.$el = page.$el.find('.color-picker');\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n pageAfterIn() {\n self.onOpened();\n },\n pageBeforeOut() {\n self.onClose();\n },\n pageAfterOut() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n },\n },\n },\n });\n } else {\n const modalType = self.getModalType();\n let backdrop = params.backdrop;\n if (backdrop === null || typeof backdrop === 'undefined') {\n if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n if (modalType === 'popup') backdrop = true;\n }\n const modalParams = {\n targetEl: ($targetEl || $inputEl),\n scrollToEl: params.scrollToInput ? ($targetEl || $inputEl) : undefined,\n content: colorPickerContent,\n backdrop,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n self.modal = modal;\n self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n opened() { self.onOpened(); },\n close() { self.onClose(); },\n closed() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n },\n },\n };\n if (modalType === 'popup') {\n modalParams.push = params.popupPush;\n modalParams.swipeToClose = params.popupSwipeToClose;\n }\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && self.view) {\n self.view.router.navigate({\n url: self.url,\n route: {\n path: self.url,\n [modalType]: modalParams,\n },\n });\n } else {\n self.modal = app[modalType].create(modalParams);\n self.modal.open();\n }\n }\n }\n\n close() {\n const self = this;\n const { opened, inline } = self;\n if (!opened) return;\n if (inline) {\n self.onClose();\n self.onClosed();\n return;\n }\n if ((self.params.routableModals && self.view) || self.params.openIn === 'page') {\n self.view.router.back();\n } else {\n self.modal.close();\n }\n }\n\n init() {\n const self = this;\n\n self.initInput();\n\n if (self.inline) {\n self.open();\n self.emit('local::init colorPickerInit', self);\n return;\n }\n\n if (!self.initialized && self.params.value) {\n self.setValue(self.params.value);\n }\n\n // Attach input Events\n if (self.$inputEl) {\n self.attachInputEvents();\n }\n if (self.$targetEl) {\n self.attachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.attachHtmlEvents();\n }\n self.emit('local::init colorPickerInit', self);\n }\n\n destroy() {\n const self = this;\n if (self.destroyed) return;\n const { $el } = self;\n self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n if ($el) $el.trigger('colorpicker:beforedestroy');\n\n self.close();\n\n // Detach Events\n self.detachEvents();\n if (self.$inputEl) {\n self.detachInputEvents();\n }\n if (self.$targetEl) {\n self.detachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.detachHtmlEvents();\n }\n\n if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n Utils.deleteProps(self);\n self.destroyed = true;\n }\n}\n\nexport default ColorPicker;\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport ColorPicker from './color-picker-class';\n\nexport default {\n name: 'colorPicker',\n static: {\n ColorPicker,\n },\n create() {\n const app = this;\n app.colorPicker = ConstructorMethods({\n defaultSelector: '.color-picker',\n constructor: ColorPicker,\n app,\n domProp: 'f7ColorPicker',\n });\n app.colorPicker.close = function close(el = '.color-picker') {\n const $el = $(el);\n if ($el.length === 0) return;\n const colorPicker = $el[0].f7ColorPicker;\n if (!colorPicker || (colorPicker && !colorPicker.opened)) return;\n colorPicker.close();\n };\n },\n params: {\n colorPicker: {\n // Color picker settings\n value: null,\n modules: [\n 'wheel',\n ],\n palette: [\n ['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'],\n ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'],\n ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'],\n ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'],\n ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'],\n ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'],\n ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'],\n ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100'],\n ],\n groupedModules: false,\n centerModules: true,\n\n sliderLabel: false,\n sliderValue: false,\n sliderValueEdiable: false,\n\n barLabel: false,\n barValue: false,\n barValueEdiable: false,\n\n hexLabel: false,\n hexValueEditable: false,\n\n redLabelText: 'R',\n greenLabelText: 'G',\n blueLabelText: 'B',\n hueLabelText: 'H',\n saturationLabelText: 'S',\n brightnessLabelText: 'B',\n hexLabelText: 'HEX',\n alphaLabelText: 'A',\n\n // Common opener settings\n containerEl: null,\n openIn: 'popover', // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n openInPhone: 'popup', // or 'popover' or 'sheet' or 'popup' or 'page'\n popupPush: false,\n popupSwipeToClose: undefined,\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n targetEl: null,\n targetElSetBackgroundColor: false,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbarSheet: true,\n toolbarPopover: false,\n toolbarCloseText: 'Done',\n navbarPopup: true,\n navbarCloseText: 'Done',\n navbarTitleText: 'Color',\n navbarBackLinkText: 'Back',\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'color/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderToolbar: null,\n renderNavbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n renderPopup: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Treeview = {\n open(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.addClass('treeview-item-opened');\n $itemEl.trigger('treeview:open');\n app.emit('treeviewOpen', $itemEl[0]);\n function done(cancel) {\n if (cancel) {\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n } else {\n $itemEl[0].f7TreeviewChildrenLoaded = true;\n }\n $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-preloader').remove();\n }\n\n if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n $itemEl.trigger('treeview:loadchildren', done);\n app.emit('treeviewLoadChildren', $itemEl[0], done);\n $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-item-root').prepend(`${Utils[`${app.theme}PreloaderContent`]}
`);\n }\n },\n close(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n },\n toggle(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n const wasOpened = $itemEl.hasClass('treeview-item-opened');\n app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n },\n};\n\nexport default {\n name: 'treeview',\n create() {\n const app = this;\n Utils.extend(app, {\n treeview: {\n open: Treeview.open.bind(app),\n close: Treeview.close.bind(app),\n toggle: Treeview.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n if ($clickedEl.parents('.treeview-item-toggle').length) return;\n const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nconst textEditorButtonsMap = {\n // f7-icon, material-icon, command\n bold: ['bold', 'format_bold', 'bold'],\n italic: ['italic', 'format_italic', 'italic'],\n underline: ['underline', 'format_underlined', 'underline'],\n strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n link: ['link', 'link', 'createLink'],\n image: ['photo', 'image', 'insertImage'],\n paragraph: ['paragraph', '¶ ', 'formatBlock.P'],\n h1: ['H1 ', 'H1 ', 'formatBlock.H1'],\n h2: ['H2 ', 'H2 ', 'formatBlock.H2'],\n h3: ['H3 ', 'H3 ', 'formatBlock.H3'],\n alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n subscript: ['textformat_subscript', 'A1 ', 'subscript'],\n superscript: ['textformat_superscript', 'A1 ', 'superscript'],\n indent: ['increase_indent', 'format_indent_increase', 'indent'],\n outdent: ['decrease_indent', 'format_indent_decrease', 'outdent'],\n};\n\nclass TextEditor extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const self = this;\n\n const defaults = Utils.extend({}, app.params.textEditor);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n\n self.params = Utils.extend(defaults, params);\n\n const el = self.params.el;\n if (!el) return self;\n\n const $el = $(el);\n if ($el.length === 0) return self;\n\n if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n\n let $contentEl = $el.children('.text-editor-content');\n if (!$contentEl.length) {\n $el.append('
');\n $contentEl = $el.children('.text-editor-content');\n }\n\n Utils.extend(self, {\n app,\n $el,\n el: $el[0],\n $contentEl,\n contentEl: $contentEl[0],\n });\n if ('value' in params) {\n self.value = self.params.value;\n }\n\n if (self.params.mode === 'keyboard-toolbar') {\n if (!app.device.cordova && !app.device.android) {\n self.params.mode = 'popover';\n }\n }\n\n if (typeof self.params.buttons === 'string') {\n try {\n self.params.buttons = JSON.parse(self.params.buttons);\n } catch (err) {\n throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n }\n }\n\n $el[0].f7TextEditor = self;\n\n // Bind\n self.onButtonClick = self.onButtonClick.bind(self);\n self.onFocus = self.onFocus.bind(self);\n self.onBlur = self.onBlur.bind(self);\n self.onInput = self.onInput.bind(self);\n self.onPaste = self.onPaste.bind(self);\n self.onSelectionChange = self.onSelectionChange.bind(self);\n self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n // Handle Events\n self.attachEvents = function attachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.on('click', 'button', self.onButtonClick);\n }\n self.$contentEl.on('paste', self.onPaste);\n self.$contentEl.on('focus', self.onFocus);\n self.$contentEl.on('blur', self.onBlur);\n self.$contentEl.on('input', self.onInput, true);\n $(document).on('selectionchange', self.onSelectionChange);\n };\n self.detachEvents = function detachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.off('click', 'button', self.onButtonClick);\n }\n self.$contentEl.off('paste', self.onPaste);\n self.$contentEl.off('focus', self.onFocus);\n self.$contentEl.off('blur', self.onBlur);\n self.$contentEl.off('input', self.onInput, true);\n $(document).off('selectionchange', self.onSelectionChange);\n };\n\n // Install Modules\n self.useModules();\n\n // Init\n self.init();\n\n return self;\n }\n\n setValue(newValue) {\n const self = this;\n const currentValue = self.value;\n if (currentValue === newValue) return self;\n self.value = newValue;\n self.$contentEl.html(newValue);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n return self;\n }\n\n getValue() {\n const self = this;\n return self.value;\n }\n\n createLink() {\n const self = this;\n const currentSelection = window.getSelection();\n const selectedNodes = [];\n let $selectedLinks;\n if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {\n let anchorNode = currentSelection.anchorNode;\n while (anchorNode) {\n selectedNodes.push(anchorNode);\n if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n anchorNode = null;\n }\n if (anchorNode) {\n anchorNode = anchorNode.nextSibling;\n }\n }\n $selectedLinks = $(selectedNodes).closest('a').add($(selectedNodes).children('a'));\n }\n if ($selectedLinks && $selectedLinks.length) {\n $selectedLinks.each((linkIndex, linkNode) => {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(linkNode);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('unlink', false);\n selection.removeAllRanges();\n });\n return self;\n }\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt(self.params.linkUrlText, '', (link) => {\n if (link && link.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('createLink', false, link.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n\n insertImage() {\n const self = this;\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt(self.params.imageUrlText, '', (imageUrl) => {\n if (imageUrl && imageUrl.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('insertImage', false, imageUrl.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n\n removePlaceholder() {\n const self = this;\n self.$contentEl.find('.text-editor-placeholder').remove();\n }\n\n insertPlaceholder() {\n const self = this;\n self.$contentEl.append(`${self.params.placeholder}
`);\n }\n\n onSelectionChange() {\n const self = this;\n if (self.params.mode === 'toolbar') return;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (self.params.mode === 'keyboard-toolbar') {\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n } else {\n self.openKeyboardToolbar();\n }\n return;\n }\n if (self.params.mode === 'popover') {\n const selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;\n if (!selectionIsInContent && !selectionIsInPopover) {\n self.closePopover();\n return;\n }\n if (!selection.isCollapsed && selection.rangeCount) {\n const range = selection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n const rootEl = self.app.root[0] || document.body;\n self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);\n } else if (selection.isCollapsed) {\n self.closePopover();\n }\n }\n }\n\n onPaste(e) {\n const self = this;\n if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n const text = e.clipboardData.getData('text/plain');\n e.preventDefault();\n document.execCommand('insertText', false, text);\n }\n }\n\n onInput() {\n const self = this;\n const value = self.$contentEl.html();\n\n self.$el.trigger('texteditor:input');\n self.emit('local:input textEditorInput', self);\n\n self.value = value;\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n }\n\n onFocus() {\n const self = this;\n self.removePlaceholder();\n self.$contentEl.focus();\n self.$el.trigger('texteditor:focus');\n self.emit('local::focus textEditorFocus', self);\n }\n\n onBlur() {\n const self = this;\n if (self.params.placeholder && self.$contentEl.html() === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'popover') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n const inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;\n if (!inPopover && !selectionIsInContent) {\n self.closePopover();\n }\n }\n if (self.params.mode === 'keyboard-toolbar') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n }\n }\n self.$el.trigger('texteditor:blur');\n self.emit('local::blur textEditorBlur', self);\n }\n\n onButtonClick(e) {\n const self = this;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) return;\n const $buttonEl = $(e.target).closest('button');\n if ($buttonEl.parents('form').length) {\n e.preventDefault();\n }\n const button = $buttonEl.attr('data-button');\n const buttonData = self.params.customButtons && self.params.customButtons[button];\n if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n $buttonEl.trigger('texteditor:buttonclick', button);\n self.emit('local::buttonClick textEditorButtonClick', self, button);\n if (buttonData) {\n if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n return;\n }\n const command = textEditorButtonsMap[button][2];\n if (command === 'createLink') {\n self.createLink();\n return;\n }\n if (command === 'insertImage') {\n self.insertImage();\n return;\n }\n if (command.indexOf('formatBlock') === 0) {\n const tagName = command.split('.')[1];\n const $anchorNode = $(selection.anchorNode);\n if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n document.execCommand('formatBlock', false, 'div');\n } else {\n document.execCommand('formatBlock', false, tagName);\n }\n return;\n }\n document.execCommand(command, false);\n }\n\n // eslint-disable-next-line\n getSelectionRange() {\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.selection && document.selection.createRange) {\n return document.selection.createRange();\n }\n return null;\n }\n\n // eslint-disable-next-line\n setSelectionRange(range) {\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.selection && range.select) {\n range.select();\n }\n }\n }\n\n renderButtons() {\n const self = this;\n let html = '';\n function renderButton(button) {\n const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n if (self.params.customButtons && self.params.customButtons[button]) {\n const buttonData = self.params.customButtons[button];\n return `${buttonData.content || ''} `;\n }\n if (!textEditorButtonsMap[button]) return '';\n const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n return `${iconContent.indexOf('<') >= 0 ? iconContent : `${iconContent} `} `.trim();\n }\n self.params.buttons.forEach((button, buttonIndex) => {\n if (Array.isArray(button)) {\n button.forEach((b) => {\n html += renderButton(b);\n });\n if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n html += '
';\n }\n } else {\n html += renderButton(button);\n }\n });\n return html;\n }\n\n createToolbar() {\n const self = this;\n self.$el.prepend(`${self.renderButtons()}
`);\n }\n\n createKeyboardToolbar() {\n const self = this;\n const isDark = self.$el.closest('.theme-dark').length > 0 || self.app.device.prefersColorScheme() === 'dark';\n self.$keyboardToolbarEl = $(``);\n }\n\n createPopover() {\n const self = this;\n const isDark = self.$el.closest('.theme-dark').length > 0;\n self.popover = self.app.popover.create({\n content: `\n \n
${self.renderButtons()}
\n
\n `,\n closeByOutsideClick: false,\n backdrop: false,\n });\n }\n\n openKeyboardToolbar() {\n const self = this;\n if (self.$keyboardToolbarEl.parent(self.app.root).length) return;\n self.$el.trigger('texteditor:keyboardopen');\n self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n self.app.root.append(self.$keyboardToolbarEl);\n }\n\n closeKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl.remove();\n self.$el.trigger('texteditor:keyboardclose');\n self.emit('local::keyboardClose textEditorKeyboardClose', self);\n }\n\n openPopover(targetX, targetY, targetWidth, targetHeight) {\n const self = this;\n\n if (!self.popover) return;\n Object.assign(self.popover.params, {\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n });\n clearTimeout(self.popoverTimeout);\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n if (self.popover.opened) {\n self.popover.resize();\n } else {\n self.$el.trigger('texteditor:popoveropen');\n self.emit('local::popoverOpen textEditorPopoverOpen', self);\n self.popover.open();\n }\n }, 400);\n }\n\n closePopover() {\n const self = this;\n clearTimeout(self.popoverTimeout);\n if (!self.popover || !self.popover.opened) return;\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n self.$el.trigger('texteditor:popoverclose');\n self.emit('local::popoverClose textEditorPopoverClose', self);\n self.popover.close();\n }, 400);\n }\n\n init() {\n const self = this;\n if (self.value) {\n self.$contentEl.html(self.value);\n } else {\n self.value = self.$contentEl.html();\n }\n if (self.params.placeholder && self.value === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'toolbar') {\n self.createToolbar();\n } else if (self.params.mode === 'popover') {\n self.createPopover();\n } else if (self.params.mode === 'keyboard-toolbar') {\n self.createKeyboardToolbar();\n }\n\n self.attachEvents();\n self.$el.trigger('texteditor:init');\n self.emit('local::init textEditorInit', self);\n return self;\n }\n\n destroy() {\n let self = this;\n self.$el.trigger('texteditor:beforedestroy');\n self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n self.detachEvents();\n if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n self.$keyboardToolbarEl.remove();\n }\n if (self.popover) {\n self.popover.close(false);\n self.popover.destroy();\n }\n delete self.$el[0].f7TextEditor;\n Utils.deleteProps(self);\n self = null;\n }\n}\n\nexport default TextEditor;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport TextEditor from './text-editor-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'textEditor',\n params: {\n textEditor: {\n el: null,\n mode: 'toolbar', // or 'popover'\n value: undefined, // will use html content\n customButtons: null,\n buttons: [\n ['bold', 'italic', 'underline', 'strikeThrough'],\n ['orderedList', 'unorderedList'],\n ['link', 'image'],\n ['paragraph', 'h1', 'h2', 'h3'],\n ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'],\n ['subscript', 'superscript'],\n ['indent', 'outdent'],\n ],\n dividers: true,\n imageUrlText: 'Insert image URL',\n linkUrlText: 'Insert link URL',\n placeholder: null,\n clearFormattingOnPaste: true,\n },\n },\n create() {\n const app = this;\n app.textEditor = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.text-editor',\n constructor: TextEditor,\n app,\n domProp: 'f7TextEditor',\n }),\n );\n },\n static: {\n TextEditor,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.text-editor-init').each((index, editorEl) => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(Utils.extend({ el: editorEl }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.text-editor-init').each((index, editorEl) => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.text-editor-init').each((index, editorEl) => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(Utils.extend({ el: editorEl }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.text-editor-init').each((index, editorEl) => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n },\n vnode: {\n 'text-editor-init': {\n insert(vnode) {\n const app = this;\n const editorEl = vnode.elm;\n const dataset = $(editorEl).dataset();\n app.textEditor.create(Utils.extend({ el: editorEl }, dataset || {}));\n },\n destroy(vnode) {\n const editorEl = vnode.elm;\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Framework7Class from '../../utils/class';\n\nclass ViAd extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const vi = this;\n if (!window.vi) {\n throw new Error('Framework7: vi SDK not found.');\n }\n\n let orientation;\n if (typeof window.orientation !== 'undefined') {\n orientation = window.orientation === -90 || window.orientation === 90 ? 'horizontal' : 'vertical';\n }\n const defaults = Utils.extend(\n {},\n app.params.vi,\n {\n appId: app.id,\n appVer: app.version,\n language: app.language,\n width: app.width,\n height: app.height,\n os: Device.os,\n osVersion: Device.osVersion,\n orientation,\n }\n );\n\n // Extend defaults with modules params\n vi.useModulesParams(defaults);\n\n vi.params = Utils.extend(defaults, params);\n\n const adParams = {};\n const skipParams = ('on autoplay fallbackOverlay fallbackOverlayText enabled').split(' ');\n Object.keys(vi.params).forEach((paramName) => {\n if (skipParams.indexOf(paramName) >= 0) return;\n const paramValue = vi.params[paramName];\n if ([null, undefined].indexOf(paramValue) >= 0) return;\n adParams[paramName] = paramValue;\n });\n\n if (!vi.params.appId) {\n throw new Error('Framework7: \"app.id\" is required to display an ad. Make sure you have specified it on app initialization.');\n }\n if (!vi.params.placementId) {\n throw new Error('Framework7: \"placementId\" is required to display an ad.');\n }\n\n function onResize() {\n const $viFrame = $('iframe#viAd');\n if ($viFrame.length === 0) return;\n $viFrame\n .css({\n width: `${app.width}px`,\n height: `${app.height}px`,\n });\n }\n\n function removeOverlay() {\n if (!vi.$overlayEl) return;\n vi.$overlayEl.off('click touchstart');\n vi.$overlayEl.remove();\n }\n function createOverlay(videoEl) {\n if (!videoEl) return;\n vi.$overlayEl = $(`\n \n ${vi.params.fallbackOverlayText ? `
${vi.params.fallbackOverlayText}
` : ''}\n
\n
\n `.trim());\n\n let touchStartTime;\n vi.$overlayEl.on('touchstart', () => {\n touchStartTime = Utils.now();\n });\n vi.$overlayEl.on('click', () => {\n const timeDiff = Utils.now() - touchStartTime;\n if (timeDiff > 300) return;\n if (videoEl) {\n videoEl.play();\n removeOverlay();\n return;\n }\n vi.start();\n removeOverlay();\n });\n app.root.append(vi.$overlayEl);\n }\n\n // Create ad\n vi.ad = new window.vi.Ad(adParams);\n\n Utils.extend(vi.ad, {\n onAdReady() {\n app.on('resize', onResize);\n vi.emit('local::ready');\n if (vi.params.autoplay) {\n vi.start();\n }\n },\n onAdStarted() {\n vi.emit('local::started');\n },\n onAdClick(targetUrl) {\n vi.emit('local::click', targetUrl);\n },\n onAdImpression() {\n vi.emit('local::impression');\n },\n onAdStopped(reason) {\n app.off('resize', onResize);\n removeOverlay();\n\n vi.emit('local::stopped', reason);\n if (reason === 'complete') {\n vi.emit('local::complete');\n vi.emit('local::completed');\n }\n if (reason === 'userexit') {\n vi.emit('local::userexit');\n }\n vi.destroyed = true;\n },\n onAutoPlayFailed(reason, videoEl) {\n vi.emit('local::autoplayFailed', reason, videoEl);\n if (reason && reason.name && reason.name.indexOf('NotAllowedError') !== -1 && vi.params.fallbackOverlay) {\n createOverlay(videoEl);\n }\n },\n onAdError(msg) {\n removeOverlay();\n app.off('resize', onResize);\n vi.emit('local::error', msg);\n vi.destroyed = true;\n },\n });\n\n vi.init();\n\n Utils.extend(vi, {\n app,\n });\n }\n\n start() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.startAd();\n }\n\n pause() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.pauseAd();\n }\n\n resume() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.resumeAd();\n }\n\n stop() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.stopAd();\n }\n\n init() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.initAd();\n }\n\n destroy() {\n const vi = this;\n vi.destroyed = true;\n vi.emit('local::beforeDestroy');\n Utils.deleteProps(vi);\n }\n}\n\nexport default ViAd;\n","import { document } from 'ssr-window';\nimport $ from 'dom7';\nimport Device from '../../utils/device';\nimport ViAd from './vi-class';\n\nexport default {\n name: 'vi',\n params: {\n vi: {\n enabled: false,\n autoplay: true,\n fallbackOverlay: true,\n fallbackOverlayText: 'Please watch this ad',\n showMute: true,\n startMuted: (Device.ios || Device.android) && !Device.cordova,\n appId: null,\n appVer: null,\n language: null,\n width: null,\n height: null,\n placementId: 'pltd4o7ibb9rc653x14',\n placementType: 'interstitial',\n videoSlot: null,\n showProgress: true,\n showBranding: true,\n os: null,\n osVersion: null,\n orientation: null,\n age: null,\n gender: null,\n advertiserId: null,\n latitude: null,\n longitude: null,\n accuracy: null,\n storeId: null,\n ip: null,\n manufacturer: null,\n model: null,\n connectionType: null,\n connectionProvider: null,\n },\n },\n create() {\n const app = this;\n app.vi = {\n sdkReady: false,\n createAd(adParams) {\n return new ViAd(app, adParams);\n },\n loadSdk() {\n if (app.vi.sdkReady) return;\n const script = document.createElement('script');\n script.onload = function onload() {\n app.emit('viSdkReady');\n app.vi.sdkReady = true;\n };\n script.src = 'https://c.vi-serve.com/viadshtml/vi.min.js';\n $('head').append(script);\n },\n };\n },\n on: {\n init() {\n const app = this;\n if (app.params.vi.enabled || (app.passedParams.vi && app.passedParams.vi.enabled !== false)) app.vi.loadSdk();\n },\n },\n};\n","/**\n * Framework7 5.7.14\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: November 9, 2020\n */\n\nimport Template7 from 'template7';\nimport $ from 'dom7';\n\n// F7 Class\nimport Framework7 from './components/app/app-class';\n\n// Import Helpers\nimport Request from './utils/request';\nimport Utils from './utils/utils';\nimport Support from './utils/support';\nimport Device from './utils/device';\n\n// Core Modules\nimport DeviceModule from './modules/device/device';\nimport SupportModule from './modules/support/support';\nimport UtilsModule from './modules/utils/utils';\nimport ResizeModule from './modules/resize/resize';\nimport RequestModule from './modules/request/request';\nimport TouchModule from './modules/touch/touch';\nimport ClicksModule from './modules/clicks/clicks';\nimport RouterModule from './modules/router/router';\nimport RouterTemplateLoaderModule from './modules/router/template-loader'; //NO_LITE\nimport RouterComponentLoaderModule from './modules/router/component-loader'; //NO_LITE\nimport ComponentModule, { Component } from './modules/component/component'; //NO_LITE\nimport HistoryModule from './modules/history/history';\nimport ServiceWorkerModule from './modules/service-worker/service-worker';\n\n// Core Components\nimport Statusbar from './components/statusbar/statusbar';\nimport View from './components/view/view';\nimport Navbar from './components/navbar/navbar';\nimport Toolbar from './components/toolbar/toolbar';\nimport Subnavbar from './components/subnavbar/subnavbar';\nimport TouchRipple from './components/touch-ripple/touch-ripple';\nimport Modal from './components/modal/modal';\nimport Router from './modules/router/router-class';//NO_LITE\n\nimport Appbar from './components/appbar/appbar';\nimport Dialog from './components/dialog/dialog';\nimport Popup from './components/popup/popup';\nimport LoginScreen from './components/login-screen/login-screen';\nimport Popover from './components/popover/popover';\nimport Actions from './components/actions/actions';\nimport Sheet from './components/sheet/sheet';\nimport Toast from './components/toast/toast';\nimport Preloader from './components/preloader/preloader';\nimport Progressbar from './components/progressbar/progressbar';\nimport Sortable from './components/sortable/sortable';\nimport Swipeout from './components/swipeout/swipeout';\nimport Accordion from './components/accordion/accordion';\nimport ContactsList from './components/contacts-list/contacts-list';\nimport VirtualList from './components/virtual-list/virtual-list';\nimport ListIndex from './components/list-index/list-index';\nimport Timeline from './components/timeline/timeline';\nimport Tabs from './components/tabs/tabs';\nimport Panel from './components/panel/panel';\nimport Card from './components/card/card';\nimport Chip from './components/chip/chip';\nimport Form from './components/form/form';\nimport Input from './components/input/input';\nimport Checkbox from './components/checkbox/checkbox';\nimport Radio from './components/radio/radio';\nimport Toggle from './components/toggle/toggle';\nimport Range from './components/range/range';\nimport Stepper from './components/stepper/stepper';\nimport SmartSelect from './components/smart-select/smart-select';\nimport Grid from './components/grid/grid';\nimport Calendar from './components/calendar/calendar';\nimport Picker from './components/picker/picker';\nimport InfiniteScroll from './components/infinite-scroll/infinite-scroll';\nimport PullToRefresh from './components/pull-to-refresh/pull-to-refresh';\nimport Lazy from './components/lazy/lazy';\nimport DataTable from './components/data-table/data-table';\nimport Fab from './components/fab/fab';\nimport Searchbar from './components/searchbar/searchbar';\nimport Messages from './components/messages/messages';\nimport Messagebar from './components/messagebar/messagebar';\nimport Swiper from './components/swiper/swiper';\nimport PhotoBrowser from './components/photo-browser/photo-browser';\nimport Notification from './components/notification/notification';\nimport Autocomplete from './components/autocomplete/autocomplete';\nimport Tooltip from './components/tooltip/tooltip';\nimport Gauge from './components/gauge/gauge';\nimport Skeleton from './components/skeleton/skeleton';\nimport Menu from './components/menu/menu';\nimport ColorPicker from './components/color-picker/color-picker';\nimport Treeview from './components/treeview/treeview';\nimport TextEditor from './components/text-editor/text-editor';\nimport Elevation from './components/elevation/elevation';\nimport Typography from './components/typography/typography';\nimport Vi from './components/vi/vi';\n\nif (\"es\" !== 'es') {\n if (typeof window !== 'undefined') {\n // Template7\n if (!window.Template7) window.Template7 = Template7;\n\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n }\n}\n\n// Install Core Modules & Components\nRouter.use([ //NO_LITE\n RouterTemplateLoaderModule, //NO_LITE\n RouterComponentLoaderModule, //NO_LITE\n]); //NO_LITE\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule, //NO_LITE\n ServiceWorkerModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n Appbar,\n Dialog,\n Popup,\n LoginScreen,\n Popover,\n Actions,\n Sheet,\n Toast,\n Preloader,\n Progressbar,\n Sortable,\n Swipeout,\n Accordion,\n ContactsList,\n VirtualList,\n ListIndex,\n Timeline,\n Tabs,\n Panel,\n Card,\n Chip,\n Form,\n Input,\n Checkbox,\n Radio,\n Toggle,\n Range,\n Stepper,\n SmartSelect,\n Grid,\n Calendar,\n Picker,\n InfiniteScroll,\n PullToRefresh,\n Lazy,\n DataTable,\n Fab,\n Searchbar,\n Messages,\n Messagebar,\n Swiper,\n PhotoBrowser,\n Notification,\n Autocomplete,\n Tooltip,\n Gauge,\n Skeleton,\n Menu,\n ColorPicker,\n Treeview,\n TextEditor,\n Elevation,\n Typography,\n Vi\n]);\n\nexport { Template7, $ as Dom7, Request, Utils, Device, Support, Component };\nexport default Framework7;\n","export default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n if (page.$el.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","export default {\n name: 'appbar',\n};\n","export default {\n name: 'contactsList',\n};\n","export default {\n name: 'timeline',\n};\n","export default {\n name: 'chip',\n};\n","export default {\n name: 'checkbox',\n};\n","export default {\n name: 'radio',\n};\n","export default {\n name: 'skeleton',\n};\n","export default {\n name: 'elevation',\n};\n","export default {\n name: 'typography',\n};\n","const Utils = {\n text(text) {\n if (typeof text === 'undefined' || text === null) return '';\n return text;\n },\n noUndefinedProps(obj) {\n const o = {};\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] !== 'undefined') o[key] = obj[key];\n });\n return o;\n },\n isTrueProp(val) {\n return val === true || val === '';\n },\n isStringProp(val) {\n return typeof val === 'string' && val !== '';\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n now() {\n return Date.now();\n },\n extend(...args) {\n let deep = true;\n let to;\n let from;\n if (typeof args[0] === 'boolean') {\n [deep, to] = args;\n args.splice(0, 2);\n from = args;\n } else {\n [to] = args;\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n flattenArray(...args) {\n const arr = [];\n args.forEach((arg) => {\n if (Array.isArray(arg)) arr.push(...Utils.flattenArray(...arg));\n else arr.push(arg);\n });\n return arr;\n },\n classNames(...args) {\n const classes = [];\n args.forEach((arg) => {\n if (typeof arg === 'object' && arg.constructor === Object) {\n Object.keys(arg).forEach((key) => {\n if (arg[key]) classes.push(key);\n });\n } else if (arg) classes.push(arg);\n });\n const uniqueClasses = [];\n classes.forEach((c) => {\n if (uniqueClasses.indexOf(c) < 0) uniqueClasses.push(c);\n });\n return uniqueClasses.join(' ');\n },\n bindMethods(context, methods = []) {\n for (let i = 0; i < methods.length; i += 1) {\n if (context[methods[i]]) context[methods[i]] = context[methods[i]].bind(context);\n }\n },\n};\nexport default Utils;\n","import Utils from './utils';\n\nconst Mixins = {\n colorProps: {\n color: String,\n colorTheme: String,\n textColor: String,\n bgColor: String,\n borderColor: String,\n rippleColor: String,\n themeDark: Boolean,\n },\n colorClasses(props) {\n const {\n color,\n colorTheme,\n textColor,\n bgColor,\n borderColor,\n rippleColor,\n themeDark,\n } = props;\n\n return {\n 'theme-dark': themeDark,\n [`color-${color}`]: color,\n [`color-theme-${colorTheme}`]: colorTheme,\n [`text-color-${textColor}`]: textColor,\n [`bg-color-${bgColor}`]: bgColor,\n [`border-color-${borderColor}`]: borderColor,\n [`ripple-color-${rippleColor}`]: rippleColor,\n };\n },\n linkIconProps: {\n icon: String,\n iconMaterial: String,\n iconF7: String,\n iconIos: String,\n iconMd: String,\n iconAurora: String,\n iconColor: String,\n iconSize: [String, Number],\n },\n linkRouterProps: {\n back: Boolean,\n external: Boolean,\n force: Boolean,\n animate: {\n type: Boolean,\n default: undefined,\n },\n ignoreCache: Boolean,\n reloadCurrent: Boolean,\n reloadAll: Boolean,\n reloadPrevious: Boolean,\n reloadDetail: {\n type: Boolean,\n default: undefined,\n },\n routeTabId: String,\n view: String,\n routeProps: Object,\n preventRouter: Boolean,\n transition: String,\n },\n linkRouterAttrs(props) {\n const {\n force,\n reloadCurrent,\n reloadPrevious,\n reloadAll,\n reloadDetail,\n animate,\n ignoreCache,\n routeTabId,\n view,\n transition,\n } = props;\n\n let dataAnimate;\n if ('animate' in props && typeof animate !== 'undefined') {\n dataAnimate = animate.toString();\n }\n\n let dataReloadDetail;\n if ('reloadDetail' in props && typeof reloadDetail !== 'undefined') {\n dataReloadDetail = reloadDetail.toString();\n }\n\n return {\n 'data-force': force || undefined,\n 'data-reload-current': reloadCurrent || undefined,\n 'data-reload-all': reloadAll || undefined,\n 'data-reload-previous': reloadPrevious || undefined,\n 'data-reload-detail': dataReloadDetail,\n 'data-animate': dataAnimate,\n 'data-ignore-cache': ignoreCache || undefined,\n 'data-route-tab-id': routeTabId || undefined,\n 'data-view': Utils.isStringProp(view) ? view : undefined,\n 'data-transition': Utils.isStringProp(transition) ? transition : undefined,\n };\n },\n linkRouterClasses(props) {\n const { back, linkBack, external, preventRouter } = props;\n\n return {\n back: back || linkBack,\n external,\n 'prevent-router': preventRouter,\n };\n },\n linkActionsProps: {\n searchbarEnable: [Boolean, String],\n searchbarDisable: [Boolean, String],\n\n searchbarClear: [Boolean, String],\n searchbarToggle: [Boolean, String],\n\n // Panel\n panelOpen: [Boolean, String],\n panelClose: [Boolean, String],\n panelToggle: [Boolean, String],\n\n // Popup\n popupOpen: [Boolean, String],\n popupClose: [Boolean, String],\n\n // Actions\n actionsOpen: [Boolean, String],\n actionsClose: [Boolean, String],\n\n // Popover\n popoverOpen: [Boolean, String],\n popoverClose: [Boolean, String],\n\n // Login Screen\n loginScreenOpen: [Boolean, String],\n loginScreenClose: [Boolean, String],\n\n // Picker\n sheetOpen: [Boolean, String],\n sheetClose: [Boolean, String],\n\n // Sortable\n sortableEnable: [Boolean, String],\n sortableDisable: [Boolean, String],\n sortableToggle: [Boolean, String],\n\n // Card\n cardOpen: [Boolean, String],\n cardPreventOpen: [Boolean, String],\n cardClose: [Boolean, String],\n\n // Menu\n menuClose: {\n type: [Boolean, String],\n default: undefined,\n },\n },\n linkActionsAttrs(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsOpen,\n actionsClose,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardClose,\n } = props;\n\n return {\n 'data-searchbar': (Utils.isStringProp(searchbarEnable) && searchbarEnable)\n || (Utils.isStringProp(searchbarDisable) && searchbarDisable)\n || (Utils.isStringProp(searchbarClear) && searchbarClear)\n || (Utils.isStringProp(searchbarToggle) && searchbarToggle) || undefined,\n 'data-panel': (Utils.isStringProp(panelOpen) && panelOpen)\n || (Utils.isStringProp(panelClose) && panelClose)\n || (Utils.isStringProp(panelToggle) && panelToggle) || undefined,\n 'data-popup': (Utils.isStringProp(popupOpen) && popupOpen)\n || (Utils.isStringProp(popupClose) && popupClose) || undefined,\n 'data-actions': (Utils.isStringProp(actionsOpen) && actionsOpen)\n || (Utils.isStringProp(actionsClose) && actionsClose) || undefined,\n 'data-popover': (Utils.isStringProp(popoverOpen) && popoverOpen)\n || (Utils.isStringProp(popoverClose) && popoverClose) || undefined,\n 'data-sheet': (Utils.isStringProp(sheetOpen) && sheetOpen)\n || (Utils.isStringProp(sheetClose) && sheetClose) || undefined,\n 'data-login-screen': (Utils.isStringProp(loginScreenOpen) && loginScreenOpen)\n || (Utils.isStringProp(loginScreenClose) && loginScreenClose) || undefined,\n 'data-sortable': (Utils.isStringProp(sortableEnable) && sortableEnable)\n || (Utils.isStringProp(sortableDisable) && sortableDisable)\n || (Utils.isStringProp(sortableToggle) && sortableToggle) || undefined,\n 'data-card': (Utils.isStringProp(cardOpen) && cardOpen)\n || (Utils.isStringProp(cardClose) && cardClose) || undefined,\n };\n },\n linkActionsClasses(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsClose,\n actionsOpen,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardPreventOpen,\n cardClose,\n menuClose,\n } = props;\n\n return {\n 'searchbar-enable': searchbarEnable || searchbarEnable === '',\n 'searchbar-disable': searchbarDisable || searchbarDisable === '',\n 'searchbar-clear': searchbarClear || searchbarClear === '',\n 'searchbar-toggle': searchbarToggle || searchbarToggle === '',\n 'panel-close': panelClose || panelClose === '',\n 'panel-open': panelOpen || panelOpen === '',\n 'panel-toggle': panelToggle || panelToggle === '',\n 'popup-close': popupClose || popupClose === '',\n 'popup-open': popupOpen || popupOpen === '',\n 'actions-close': actionsClose || actionsClose === '',\n 'actions-open': actionsOpen || actionsOpen === '',\n 'popover-close': popoverClose || popoverClose === '',\n 'popover-open': popoverOpen || popoverOpen === '',\n 'sheet-close': sheetClose || sheetClose === '',\n 'sheet-open': sheetOpen || sheetOpen === '',\n 'login-screen-close': loginScreenClose || loginScreenClose === '',\n 'login-screen-open': loginScreenOpen || loginScreenOpen === '',\n 'sortable-enable': sortableEnable || sortableEnable === '',\n 'sortable-disable': sortableDisable || sortableDisable === '',\n 'sortable-toggle': sortableToggle || sortableToggle === '',\n 'card-close': cardClose || cardClose === '',\n 'card-open': cardOpen || cardOpen === '',\n 'card-prevent-open': cardPreventOpen || cardPreventOpen === '',\n 'menu-close': menuClose || menuClose === '',\n };\n },\n};\nexport default Mixins;\n","export default function (component) {\n const props = {};\n const $props = component.$props;\n Object.keys($props).forEach((propKey) => {\n if (typeof $props[propKey] !== 'undefined') props[propKey] = $props[propKey];\n });\n\n const children = [];\n Object.keys(component.$slots).forEach((slotName) => {\n children.push(...component.$slots[slotName]);\n });\n props.children = children;\n\n return props;\n}\n","export default function (component, events, ...args) {\n const self = component;\n events.split(' ').forEach((event) => {\n self.$emit(event, ...args);\n });\n}\n","export default function (component, updater, callback) {\n const self = component;\n let newState;\n if (typeof updater === 'function') {\n newState = updater(self.state, self.props);\n } else {\n newState = updater;\n }\n Object.keys(newState).forEach((key) => {\n self.$set(self.state, key, newState[key]);\n });\n if (typeof callback === 'function') callback();\n}\n","export default (props) => {\n if (!props) return props;\n const nestedPropsKeys = ('style class domProps slot key ref attrs on props').split(' ');\n Object.keys(props).forEach((key) => {\n if (key === 'className') {\n props.class = props.className;\n delete props.className;\n return;\n } else if (key === 'dangerouslySetInnerHTML') {\n if (!props.domProps) props.domProps = {};\n props.domProps.innerHTML = props[key];\n if (props.domProps.innerHTML && props.domProps.innerHTML.__html) {\n props.domProps.innerHTML = props.domProps.innerHTML.__html;\n }\n delete props.dangerouslySetInnerHTML;\n return;\n } else if (key.match(/^on?([A-Z])/)) {\n if (!props.on) props.on = {};\n const newKey = key.replace(/(^on?)([A-Z])/, (found, first, second) => second.toLowerCase());\n props.on[newKey] = props[key];\n delete props[key];\n return;\n }\n if (nestedPropsKeys.indexOf(key) >= 0) {\n return;\n }\n if (!props.attrs) {\n props.attrs = {};\n }\n if (!props.attrs[key]) {\n props.attrs[key] = props[key];\n delete props[key];\n }\n });\n\n return props;\n};\n","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n name: 'f7-accordion-content',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'accordion-item-content', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-accordion-item',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean\n }, Mixins.colorProps),\n\n created() {\n Utils.bindMethods(this, 'onBeforeOpen onOpen onOpened onBeforeClose onClose onClosed'.split(' '));\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('accordionBeforeOpen', self.onBeforeOpen);\n f7.on('accordionOpen', self.onOpen);\n f7.on('accordionOpened', self.onOpened);\n f7.on('accordionBeforeClose', self.onBeforeClose);\n f7.on('accordionClose', self.onClose);\n f7.on('accordionClosed', self.onClosed);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n const f7 = self.$f7;\n f7.off('accordionBeforeOpen', self.onBeforeOpen);\n f7.off('accordionOpen', self.onOpen);\n f7.off('accordionOpened', self.onOpened);\n f7.off('accordionBeforeClose', self.onBeforeClose);\n f7.off('accordionClose', self.onClose);\n f7.off('accordionClosed', self.onClosed);\n delete this.eventTargetEl;\n },\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n opened\n } = props;\n const classes = Utils.classNames(className, 'accordion-item', {\n 'accordion-item-opened': opened\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n methods: {\n onBeforeOpen(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionBeforeOpen accordion:beforeopen', prevent);\n },\n\n onOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionOpen accordion:open');\n },\n\n onOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionOpened accordion:opened');\n },\n\n onBeforeClose(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionBeforeClose accordion:beforeclose', prevent);\n },\n\n onClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionClose accordion:close');\n },\n\n onClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionClosed accordion:closed');\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n name: 'f7-accordion-toggle',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'accordion-item-toggle', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number],\n accordionOpposite: Boolean\n }, Mixins.colorProps),\n name: 'f7-accordion',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n accordionOpposite\n } = props;\n const classes = Utils.classNames(className, 'accordion-list', accordionOpposite && 'accordion-opposite', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions-button',\n props: Object.assign({\n id: [String, Number],\n bold: Boolean,\n close: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n bold\n } = props;\n let mediaEl;\n\n if (self.$slots.media && self.$slots.media.length) {\n mediaEl = _h('div', {\n class: 'actions-button-media'\n }, [this.$slots['media']]);\n }\n\n const classes = Utils.classNames(className, {\n 'actions-button': true,\n 'actions-button-bold': bold\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [mediaEl, _h('div', {\n class: 'actions-button-text'\n }, [this.$slots['default']])]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n },\n\n methods: {\n onClick(event) {\n const self = this;\n const $$ = self.$$;\n const el = self.$refs.el;\n\n if (self.props.close && self.$f7 && el) {\n self.$f7.actions.close($$(el).parents('.actions-modal'));\n }\n\n self.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions-group',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'actions-group', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions-label',\n props: Object.assign({\n id: [String, Number],\n bold: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n bold\n } = props;\n const classes = Utils.classNames(className, 'actions-label', {\n 'actions-button-bold': bold\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean,\n grid: Boolean,\n convertToPopover: Boolean,\n forceToPopover: Boolean,\n target: [String, Object],\n backdrop: Boolean,\n backdropEl: [String, Object],\n closeByBackdropClick: Boolean,\n closeByOutsideClick: Boolean,\n closeOnEscape: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n grid\n } = props;\n const classes = Utils.classNames(className, 'actions-modal', {\n 'actions-grid': grid\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Actions) return;\n\n if (opened) {\n self.f7Actions.open();\n } else {\n self.f7Actions.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n grid,\n target,\n convertToPopover,\n forceToPopover,\n opened,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n backdrop,\n backdropEl\n } = props;\n const actionsParams = {\n el,\n grid,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n };\n if (target) actionsParams.targetEl = target;\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.convertToPopover !== 'undefined') actionsParams.convertToPopover = convertToPopover;\n if (typeof propsData.forceToPopover !== 'undefined') actionsParams.forceToPopover = forceToPopover;\n if (typeof propsData.backdrop !== 'undefined') actionsParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') actionsParams.backdropEl = backdropEl;\n if (typeof propsData.closeByBackdropClick !== 'undefined') actionsParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeByOutsideClick !== 'undefined') actionsParams.closeByOutsideClick = closeByOutsideClick;\n if (typeof propsData.closeOnEscape !== 'undefined') actionsParams.closeOnEscape = closeOnEscape;\n }\n self.$f7ready(() => {\n self.f7Actions = self.$f7.actions.create(actionsParams);\n\n if (opened) {\n self.f7Actions.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Actions) self.f7Actions.destroy();\n delete self.f7Actions;\n },\n\n methods: {\n onOpen(instance) {\n this.dispatchEvent('actions:open actionsOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('actions:opened actionsOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('actions:close actionsClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('actions:closed actionsClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Actions) return undefined;\n return self.f7Actions.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Actions) return undefined;\n return self.f7Actions.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from './utils';\n\n// eslint-disable-next-line\nlet f7Instance;\n\nconst f7 = {\n instance: null,\n Framework7: null,\n events: null,\n init(rootEl, params = {}, routes) {\n const { events, Framework7 } = f7;\n const f7Params = Utils.extend({}, params, {\n root: rootEl,\n });\n if (routes && routes.length && !f7Params.routes) f7Params.routes = routes;\n\n const instance = new Framework7(f7Params);\n f7Instance = instance;\n if (instance.initialized) {\n f7.instance = instance;\n f7Instance = instance;\n events.emit('ready', f7.instance);\n } else {\n instance.on('init', () => {\n f7.instance = instance;\n f7Instance = instance;\n events.emit('ready', f7.instance);\n });\n }\n },\n ready(callback) {\n if (!callback) return;\n if (f7.instance) callback(f7.instance);\n else {\n f7.events.once('ready', callback);\n }\n },\n routers: {\n views: [],\n tabs: [],\n modals: null,\n },\n};\nexport { f7Instance };\nexport default f7;\n","import f7 from '../utils/f7';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nexport default {\n name: 'f7-routable-modals',\n\n data() {\n const state = (() => {\n return {\n modals: []\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n return _h('div', {\n ref: 'el',\n class: 'framework7-modals'\n }, [this.state.modals.map(modal => {\n const ModalComponent = modal.component;\n {\n return _h(ModalComponent, {\n key: modal.id,\n props: modal.props\n });\n }\n })]);\n },\n\n updated() {\n const self = this;\n if (!self.routerData) return;\n f7.events.emit('modalsRouterDidUpdate', self.routerData);\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.routerData) return;\n f7.routers.modals = null;\n self.routerData = null;\n delete self.routerData;\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.routerData = {\n modals: self.state.modals,\n el,\n component: self,\n\n setModals(modals) {\n self.setState({\n modals\n });\n }\n\n };\n f7.routers.modals = self.routerData;\n },\n\n methods: {\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport f7 from '../utils/f7';\nimport RoutableModals from './routable-modals';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-app',\n props: Object.assign({\n id: [String, Number],\n params: Object,\n routes: Array\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n const classes = Utils.classNames(className, 'framework7-root', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id || 'framework7-root'\n }\n }, [this.$slots['default'], _h(RoutableModals)]);\n },\n\n mounted() {\n const self = this;\n const {\n params = {},\n routes\n } = self.props;\n const el = self.$refs.el;\n const parentEl = el.parentNode;\n\n if (parentEl && parentEl !== document.body && parentEl.parentNode === document.body) {\n parentEl.style.height = '100%';\n }\n\n if (f7.instance) return;\n f7.init(el, params, routes);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-appbar',\n props: Object.assign({\n id: [String, Number],\n noShadow: Boolean,\n noHairline: Boolean,\n inner: {\n type: Boolean,\n default: true\n },\n innerClass: String,\n innerClassName: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n inner,\n innerClass,\n innerClassName,\n className,\n id,\n style,\n noShadow,\n noHairline\n } = props;\n let innerEl;\n\n if (inner) {\n innerEl = _h('div', {\n class: Utils.classNames('appbar-inner', innerClass, innerClassName)\n }, [this.$slots['default']]);\n }\n\n const classes = Utils.classNames(className, 'appbar', {\n 'no-shadow': noShadow,\n 'no-hairline': noHairline\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-inner'], innerEl || self.$slots.default, this.$slots['after-inner']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-badge',\n props: Object.assign({\n id: [String, Number],\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'badge', Mixins.colorClasses(props));\n return _h('span', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block-footer',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'block-footer', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block-header',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'block-header', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block-title',\n props: Object.assign({\n id: [String, Number],\n large: Boolean,\n medium: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n large,\n medium\n } = props;\n const classes = Utils.classNames(className, 'block-title', {\n 'block-title-large': large,\n 'block-title-medium': medium\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block',\n props: Object.assign({\n id: [String, Number],\n inset: Boolean,\n xsmallInset: Boolean,\n smallInset: Boolean,\n mediumInset: Boolean,\n largeInset: Boolean,\n xlargeInset: Boolean,\n strong: Boolean,\n tabs: Boolean,\n tab: Boolean,\n tabActive: Boolean,\n accordionList: Boolean,\n accordionOpposite: Boolean,\n noHairlines: Boolean,\n noHairlinesMd: Boolean,\n noHairlinesIos: Boolean,\n noHairlinesAurora: Boolean\n }, Mixins.colorProps),\n\n created() {\n Utils.bindMethods(this, ['onTabShow', 'onTabHide']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('tabShow', self.onTabShow);\n f7.on('tabHide', self.onTabHide);\n });\n },\n\n beforeDestroy() {\n const el = this.$refs.el;\n if (!el || !this.$f7) return;\n this.$f7.off('tabShow', this.onTabShow);\n this.$f7.off('tabHide', this.onTabHide);\n delete this.eventTargetEl;\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n inset,\n xsmallInset,\n smallInset,\n mediumInset,\n largeInset,\n xlargeInset,\n strong,\n accordionList,\n accordionOpposite,\n tabs,\n tab,\n tabActive,\n noHairlines,\n noHairlinesIos,\n noHairlinesMd,\n noHairlinesAurora,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'block', {\n inset,\n 'xsmall-inset': xsmallInset,\n 'small-inset': smallInset,\n 'medium-inset': mediumInset,\n 'large-inset': largeInset,\n 'xlarge-inset': xlargeInset,\n 'block-strong': strong,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n tabs,\n tab,\n 'tab-active': tabActive,\n 'no-hairlines': noHairlines,\n 'no-hairlines-md': noHairlinesMd,\n 'no-hairlines-ios': noHairlinesIos,\n 'no-hairlines-aurora': noHairlinesAurora\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n methods: {\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tabShow tab:show', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tabHide tab:hide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-icon',\n props: Object.assign({\n id: [String, Number],\n material: String,\n f7: String,\n icon: String,\n ios: String,\n aurora: String,\n md: String,\n tooltip: String,\n tooltipTrigger: String,\n size: [String, Number]\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style\n } = props;\n let size = props.size;\n\n if (typeof size === 'number' || parseFloat(size) === size * 1) {\n size = `${size}px`;\n }\n\n return _h('i', {\n ref: 'el',\n style: Utils.extend({\n fontSize: size,\n width: size,\n height: size\n }, style),\n class: self.classes,\n attrs: {\n id: id\n }\n }, [self.iconTextComputed, this.$slots['default']]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n computed: {\n iconTextComputed() {\n const self = this;\n const {\n material,\n f7,\n md,\n ios,\n aurora\n } = self.props;\n const theme = self.state._theme;\n let text = material || f7;\n\n if (md && theme && theme.md && (md.indexOf('material:') >= 0 || md.indexOf('f7:') >= 0)) {\n text = md.split(':')[1];\n } else if (ios && theme && theme.ios && (ios.indexOf('material:') >= 0 || ios.indexOf('f7:') >= 0)) {\n text = ios.split(':')[1];\n } else if (aurora && theme && theme.aurora && (aurora.indexOf('material:') >= 0 || aurora.indexOf('f7:') >= 0)) {\n text = aurora.split(':')[1];\n }\n\n return text;\n },\n\n classes() {\n let classes = {\n icon: true\n };\n const self = this;\n const props = self.props;\n const theme = self.state._theme;\n const {\n material,\n f7,\n icon,\n md,\n ios,\n aurora,\n className\n } = props;\n let themeIcon;\n if (theme && theme.ios) themeIcon = ios;else if (theme && theme.md) themeIcon = md;else if (theme && theme.aurora) themeIcon = aurora;\n\n if (themeIcon) {\n const parts = themeIcon.split(':');\n const prop = parts[0];\n const value = parts[1];\n\n if (prop === 'material' || prop === 'f7') {\n classes['material-icons'] = prop === 'material';\n classes['f7-icons'] = prop === 'f7';\n }\n\n if (prop === 'icon') {\n classes[value] = true;\n }\n } else {\n classes = {\n icon: true,\n 'material-icons': material,\n 'f7-icons': f7\n };\n if (icon) classes[icon] = true;\n }\n\n return Utils.classNames(className, classes, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-button',\n props: Object.assign({\n id: [String, Number],\n text: String,\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n type: String,\n href: {\n type: [String, Boolean],\n default: '#'\n },\n target: String,\n round: Boolean,\n roundMd: Boolean,\n roundIos: Boolean,\n roundAurora: Boolean,\n fill: Boolean,\n fillMd: Boolean,\n fillIos: Boolean,\n fillAurora: Boolean,\n large: Boolean,\n largeMd: Boolean,\n largeIos: Boolean,\n largeAurora: Boolean,\n small: Boolean,\n smallMd: Boolean,\n smallIos: Boolean,\n smallAurora: Boolean,\n raised: Boolean,\n raisedMd: Boolean,\n raisedIos: Boolean,\n raisedAurora: Boolean,\n outline: Boolean,\n outlineMd: Boolean,\n outlineIos: Boolean,\n outlineAurora: Boolean,\n active: Boolean,\n disabled: Boolean,\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps, {}, Mixins.linkIconProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n let iconEl;\n let textEl;\n const props = self.props;\n const {\n text,\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n iconColor,\n iconSize,\n id,\n style,\n type\n } = props;\n\n if (text) {\n textEl = _h('span', [text]);\n }\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n const ButtonTag = type === 'submit' || type === 'reset' || type === 'button' ? 'button' : 'a';\n return _h(ButtonTag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n style: style,\n class: self.classes\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [iconEl, textEl, this.$slots['default']]);\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n href,\n target,\n tabLink,\n type\n } = props;\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false) hrefComputed = undefined;\n return Utils.extend({\n href: hrefComputed,\n target,\n type,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink || undefined\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n tabLink,\n tabLinkActive,\n round,\n roundIos,\n roundAurora,\n roundMd,\n fill,\n fillIos,\n fillAurora,\n fillMd,\n large,\n largeIos,\n largeAurora,\n largeMd,\n small,\n smallIos,\n smallAurora,\n smallMd,\n raised,\n raisedIos,\n raisedAurora,\n raisedMd,\n active,\n outline,\n outlineIos,\n outlineAurora,\n outlineMd,\n disabled,\n className\n } = props;\n return Utils.classNames(className, 'button', {\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'button-round': round,\n 'button-round-ios': roundIos,\n 'button-round-aurora': roundAurora,\n 'button-round-md': roundMd,\n 'button-fill': fill,\n 'button-fill-ios': fillIos,\n 'button-fill-aurora': fillAurora,\n 'button-fill-md': fillMd,\n 'button-large': large,\n 'button-large-ios': largeIos,\n 'button-large-aurora': largeAurora,\n 'button-large-md': largeMd,\n 'button-small': small,\n 'button-small-ios': smallIos,\n 'button-small-aurora': smallAurora,\n 'button-small-md': smallMd,\n 'button-raised': raised,\n 'button-raised-ios': raisedIos,\n 'button-raised-aurora': raisedAurora,\n 'button-raised-md': raisedMd,\n 'button-active': active,\n 'button-outline': outline,\n 'button-outline-ios': outlineIos,\n 'button-outline-aurora': outlineAurora,\n 'button-outline-md': outlineMd,\n disabled\n }, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n el.addEventListener('click', self.onClick);\n const {\n tooltip,\n tooltipTrigger,\n routeProps\n } = self.props;\n\n if (routeProps) {\n el.f7RouteProps = routeProps;\n }\n\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n const {\n routeProps\n } = self.props;\n\n if (routeProps) {\n el.f7RouteProps = routeProps;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n el.removeEventListener('click', self.onClick);\n delete el.f7RouteProps;\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n }\n\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card-content',\n props: Object.assign({\n id: [String, Number],\n padding: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n id,\n className,\n style,\n padding\n } = props;\n const classes = Utils.classNames(className, 'card-content', {\n 'card-content-padding': padding\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card-footer',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'card-footer', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card-header',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'card-header', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7CardHeader from './card-header';\nimport F7CardContent from './card-content';\nimport F7CardFooter from './card-footer';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n content: [String, Number],\n footer: [String, Number],\n outline: Boolean,\n expandable: Boolean,\n expandableAnimateWidth: Boolean,\n expandableOpened: Boolean,\n animate: {\n type: Boolean,\n default: undefined\n },\n hideNavbarOnOpen: {\n type: Boolean,\n default: undefined\n },\n hideToolbarOnOpen: {\n type: Boolean,\n default: undefined\n },\n hideStatusbarOnOpen: {\n type: Boolean,\n default: undefined\n },\n scrollableEl: {\n type: String,\n default: undefined\n },\n swipeToClose: {\n type: Boolean,\n default: undefined\n },\n closeByBackdropClick: {\n type: Boolean,\n default: undefined\n },\n backdrop: {\n type: Boolean,\n default: undefined\n },\n backdropEl: {\n type: String,\n default: undefined\n },\n noShadow: Boolean,\n noBorder: Boolean,\n padding: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n watch: {\n 'props.expandableOpened': function watchOpened(expandableOpened) {\n const self = this;\n\n if (expandableOpened) {\n self.open();\n } else {\n self.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, 'onBeforeOpen onOpen onOpened onClose onClosed'.split(' '));\n },\n\n mounted() {\n const self = this;\n if (!self.props.expandable) return;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('cardBeforeOpen', self.onBeforeOpen);\n f7.on('cardOpen', self.onOpen);\n f7.on('cardOpened', self.onOpened);\n f7.on('cardClose', self.onClose);\n f7.on('cardClosed', self.onClosed);\n\n if (self.props.expandable && self.props.expandableOpened) {\n self.$f7.card.open(el, false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.props.expandable) return;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n self.$f7.off('cardBeforeOpen', self.onBeforeOpen);\n self.$f7.off('cardOpen', self.onOpen);\n self.$f7.off('cardOpened', self.onOpened);\n self.$f7.off('cardClose', self.onClose);\n self.$f7.off('cardClosed', self.onClosed);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n title,\n content,\n footer,\n padding,\n outline,\n expandable,\n expandableAnimateWidth,\n animate,\n hideNavbarOnOpen,\n hideToolbarOnOpen,\n hideStatusbarOnOpen,\n scrollableEl,\n swipeToClose,\n closeByBackdropClick,\n backdrop,\n backdropEl,\n noShadow,\n noBorder\n } = props;\n let headerEl;\n let contentEl;\n let footerEl;\n const classes = Utils.classNames(className, 'card', {\n 'card-outline': outline,\n 'card-expandable': expandable,\n 'card-expandable-animate-width': expandableAnimateWidth,\n 'no-shadow': noShadow,\n 'no-border': noBorder\n }, Mixins.colorClasses(props));\n\n if (title || self.$slots && self.$slots.header) {\n headerEl = _h(F7CardHeader, [title, this.$slots['header']]);\n }\n\n if (content || self.$slots && self.$slots.content) {\n contentEl = _h(F7CardContent, {\n attrs: {\n padding: padding\n }\n }, [content, this.$slots['content']]);\n }\n\n if (footer || self.$slots && self.$slots.footer) {\n footerEl = _h(F7CardFooter, [footer, this.$slots['footer']]);\n }\n\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id,\n 'data-animate': typeof animate === 'undefined' ? animate : animate.toString(),\n 'data-hide-navbar-on-open': typeof hideNavbarOnOpen === 'undefined' ? hideNavbarOnOpen : hideNavbarOnOpen.toString(),\n 'data-hide-toolbar-on-open': typeof hideToolbarOnOpen === 'undefined' ? hideToolbarOnOpen : hideToolbarOnOpen.toString(),\n 'data-hide-statusbar-on-open': typeof hideStatusbarOnOpen === 'undefined' ? hideStatusbarOnOpen : hideStatusbarOnOpen.toString(),\n 'data-scrollable-el': scrollableEl,\n 'data-swipe-to-close': typeof swipeToClose === 'undefined' ? swipeToClose : swipeToClose.toString(),\n 'data-close-by-backdrop-click': typeof closeByBackdropClick === 'undefined' ? closeByBackdropClick : closeByBackdropClick.toString(),\n 'data-backdrop': typeof backdrop === 'undefined' ? backdrop : backdrop.toString(),\n 'data-backdrop-el': backdropEl\n }\n }, [headerEl, contentEl, footerEl, this.$slots['default']]);\n },\n\n methods: {\n open() {\n const self = this;\n if (!self.$refs.el) return;\n self.$f7.card.open(self.$refs.el);\n },\n\n close() {\n const self = this;\n if (!self.$refs.el) return;\n self.$f7.card.close(self.$refs.el);\n },\n\n onBeforeOpen(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardBeforeOpen card:beforeopen', el, prevent);\n },\n\n onOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardOpen card:open', el);\n },\n\n onOpened(el, pageEl) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardOpened card:opened', el, pageEl);\n },\n\n onClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardClose card:close', el);\n },\n\n onClosed(el, pageEl) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardClosed card:closed', el, pageEl);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-checkbox',\n props: Object.assign({\n id: [String, Number],\n checked: Boolean,\n indeterminate: Boolean,\n name: [Number, String],\n value: [Number, String, Boolean],\n disabled: Boolean,\n readonly: Boolean,\n defaultChecked: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n name,\n value,\n disabled,\n readonly,\n checked,\n defaultChecked,\n id,\n style\n } = props;\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n value,\n disabled,\n readonly,\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'checkbox',\n name: name\n }\n });\n }\n\n const iconEl = _h('i', {\n class: 'icon-checkbox'\n });\n\n return _h('label', {\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [inputEl, iconEl, this.$slots['default']]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n disabled\n } = props;\n return Utils.classNames(className, {\n checkbox: true,\n disabled\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n mounted() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (indeterminate && inputEl) {\n inputEl.indeterminate = true;\n }\n },\n\n updated() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (inputEl) {\n inputEl.indeterminate = indeterminate;\n }\n },\n\n methods: {\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-chip',\n props: Object.assign({\n id: [String, Number],\n media: String,\n text: [String, Number],\n deleteable: Boolean,\n mediaBgColor: String,\n mediaTextColor: String,\n outline: Boolean,\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps, {}, Mixins.linkIconProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n media,\n text,\n deleteable,\n className,\n id,\n style,\n mediaTextColor,\n mediaBgColor,\n outline,\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n iconColor,\n iconSize\n } = props;\n let iconEl;\n let mediaEl;\n let labelEl;\n let deleteEl;\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n if (media || iconEl || self.$slots && self.$slots.media) {\n const mediaClasses = Utils.classNames('chip-media', mediaTextColor && `text-color-${mediaTextColor}`, mediaBgColor && `bg-color-${mediaBgColor}`);\n mediaEl = _h('div', {\n class: mediaClasses\n }, [iconEl, media, this.$slots['media']]);\n }\n\n if (text || self.$slots && (self.$slots.text || self.$slots.default && self.$slots.default.length)) {\n labelEl = _h('div', {\n class: 'chip-label'\n }, [text, this.$slots['text'], this.$slots['default']]);\n }\n\n if (deleteable) {\n deleteEl = _h('a', {\n ref: 'deleteEl',\n class: 'chip-delete'\n });\n }\n\n const classes = Utils.classNames(className, 'chip', {\n 'chip-outline': outline\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [mediaEl, labelEl, deleteEl]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onDeleteClick']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n el.addEventListener('click', self.onClick);\n\n if (self.$refs.deleteEl) {\n self.$refs.deleteEl.addEventListener('click', self.onDeleteClick);\n }\n\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n self.$refs.el.removeEventListener('click', self.onClick);\n\n if (self.$refs.deleteEl) {\n self.$refs.deleteEl.removeEventListener('click', self.onDeleteClick);\n }\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onDeleteClick(event) {\n this.dispatchEvent('delete', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-col',\n props: Object.assign({\n id: [String, Number],\n tag: {\n type: String,\n default: 'div'\n },\n width: {\n type: [Number, String],\n default: 'auto'\n },\n xsmall: {\n type: [Number, String]\n },\n small: {\n type: [Number, String]\n },\n medium: {\n type: [Number, String]\n },\n large: {\n type: [Number, String]\n },\n xlarge: {\n type: [Number, String]\n },\n resizable: Boolean,\n resizableFixed: Boolean,\n resizableAbsolute: Boolean,\n resizableHandler: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tag,\n width,\n xsmall,\n small,\n medium,\n large,\n xlarge,\n resizable,\n resizableFixed,\n resizableAbsolute,\n resizableHandler\n } = props;\n const ColTag = tag;\n const classes = Utils.classNames(className, {\n col: width === 'auto',\n [`col-${width}`]: width !== 'auto',\n [`xsmall-${xsmall}`]: xsmall,\n [`small-${small}`]: small,\n [`medium-${medium}`]: medium,\n [`large-${large}`]: large,\n [`xlarge-${xlarge}`]: xlarge,\n resizable,\n 'resizable-fixed': resizableFixed,\n 'resizable-absolute': resizableAbsolute\n }, Mixins.colorClasses(props));\n return _h(ColTag, {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default'], resizable && resizableHandler && _h('span', {\n class: 'resize-handler'\n })]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onResize']);\n },\n\n mounted() {\n const self = this;\n self.eventTargetEl = self.$refs.el;\n self.eventTargetEl.addEventListener('click', self.onClick);\n self.$f7ready(f7 => {\n f7.on('gridResize', self.onResize);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n el.removeEventListener('click', self.onClick);\n self.$f7.off('gridResize', self.onResize);\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onResize(el) {\n if (el === this.eventTargetEl) {\n this.dispatchEvent('grid:resize gridResize');\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab-backdrop',\n props: {\n id: [String, Number]\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'fab-backdrop');\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n });\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab-button',\n props: Object.assign({\n id: [String, Number],\n fabClose: Boolean,\n label: String,\n target: String,\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n fabClose,\n label,\n target\n } = props;\n const classes = Utils.classNames(className, {\n 'fab-close': fabClose,\n 'fab-label-button': label\n }, Mixins.colorClasses(props));\n let labelEl;\n\n if (label) {\n labelEl = _h('span', {\n class: 'fab-label'\n }, [label]);\n }\n\n return _h('a', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n target: target\n }\n }, [this.$slots['default'], labelEl]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n self.$refs.el.addEventListener('click', self.onClick);\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: self.$refs.el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n self.$refs.el.removeEventListener('click', self.onClick);\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab-buttons',\n props: Object.assign({\n id: [String, Number],\n position: {\n type: String,\n default: 'top'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n position\n } = props;\n const classes = Utils.classNames(className, 'fab-buttons', `fab-buttons-${position}`, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab',\n props: Object.assign({\n id: [String, Number],\n morphTo: String,\n href: [Boolean, String],\n target: String,\n text: String,\n position: {\n type: String,\n default: 'right-bottom'\n },\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n morphTo,\n href: initialHref,\n position,\n text,\n target\n } = props;\n let href = initialHref;\n if (href === true) href = '#';\n if (href === false) href = undefined;\n const linkChildren = [];\n const rootChildren = [];\n const {\n link: linkSlots,\n default: defaultSlots,\n root: rootSlots,\n text: textSlots\n } = self.$slots;\n\n if (defaultSlots) {\n for (let i = 0; i < defaultSlots.length; i += 1) {\n const child = defaultSlots[i];\n let isRoot;\n {\n if (child.tag && child.tag.indexOf('fab-buttons') >= 0) isRoot = true;\n }\n if (isRoot) rootChildren.push(child);else linkChildren.push(child);\n }\n }\n\n let textEl;\n\n if (text || textSlots && textSlots.length) {\n textEl = _h('div', {\n class: 'fab-text'\n }, [text || textSlots]);\n }\n\n let linkEl;\n\n if (linkChildren.length || linkSlots && linkSlots.length || textEl) {\n linkEl = _h('a', {\n ref: 'linkEl',\n attrs: {\n target: target,\n href: href\n }\n }, [linkChildren, textEl, linkSlots]);\n }\n\n const classes = Utils.classNames(className, 'fab', `fab-${position}`, {\n 'fab-morph': morphTo,\n 'fab-extended': typeof textEl !== 'undefined'\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-morph-to': morphTo\n }\n }, [linkEl, rootChildren, rootSlots]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n\n if (self.$refs.linkEl) {\n self.$refs.linkEl.addEventListener('click', self.onClick);\n }\n\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: self.$refs.el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.$refs.linkEl) {\n self.$refs.linkEl.removeEventListener('click', self.onClick);\n }\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n methods: {\n onClick(event) {\n const self = this;\n self.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: {\n id: [String, Number],\n type: {\n type: String,\n default: 'circle'\n },\n value: {\n type: [Number, String],\n default: 0\n },\n size: {\n type: [Number, String],\n default: 200\n },\n bgColor: {\n type: String,\n default: 'transparent'\n },\n borderBgColor: {\n type: String,\n default: '#eeeeee'\n },\n borderColor: {\n type: String,\n default: '#000000'\n },\n borderWidth: {\n type: [Number, String],\n default: 10\n },\n valueText: [Number, String],\n valueTextColor: {\n type: String,\n default: '#000000'\n },\n valueFontSize: {\n type: [Number, String],\n default: 31\n },\n valueFontWeight: {\n type: [Number, String],\n default: 500\n },\n labelText: String,\n labelTextColor: {\n type: String,\n default: '#888888'\n },\n labelFontSize: {\n type: [Number, String],\n default: 14\n },\n labelFontWeight: {\n type: [Number, String],\n default: 400\n }\n },\n name: 'f7-gauge',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n type,\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight\n } = props;\n const classes = Utils.classNames(className, 'gauge');\n const semiCircle = type === 'semicircle';\n const radius = size / 2 - borderWidth / 2;\n const length = 2 * Math.PI * radius;\n const progress = Math.max(Math.min(value, 1), 0);\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('svg', {\n class: 'gauge-svg',\n attrs: {\n width: `${size}px`,\n height: `${semiCircle ? size / 2 : size}px`,\n viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`\n }\n }, [semiCircle && _h('path', {\n class: 'gauge-back-semi',\n attrs: {\n d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none'\n }\n }), semiCircle && _h('path', {\n class: 'gauge-front-semi',\n attrs: {\n d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length / 2,\n 'stroke-dashoffset': length / 2 * (1 + progress),\n fill: borderBgColor ? 'none' : bgColor || 'none'\n }\n }), !semiCircle && borderBgColor && _h('circle', {\n class: 'gauge-back-circle',\n attrs: {\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius\n }\n }), !semiCircle && _h('circle', {\n class: 'gauge-front-circle',\n attrs: {\n transform: `rotate(-90 ${size / 2} ${size / 2})`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length,\n 'stroke-dashoffset': length * (1 - progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius\n }\n }), valueText && _h('text', {\n class: 'gauge-value-text',\n attrs: {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': valueFontWeight,\n 'font-size': valueFontSize,\n fill: valueTextColor,\n dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle ? 'middle' : null\n }\n }, [valueText]), labelText && _h('text', {\n class: 'gauge-label-text',\n attrs: {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': labelFontWeight,\n 'font-size': labelFontSize,\n fill: labelTextColor,\n dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle ? 'middle' : null\n }\n }, [labelText])])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-toggle',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n checked: Boolean,\n defaultChecked: Boolean,\n disabled: Boolean,\n readonly: Boolean,\n name: String,\n value: [String, Number, Array]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n disabled,\n id,\n style,\n name,\n readonly,\n checked,\n defaultChecked,\n value\n } = props;\n const labelClasses = Utils.classNames('toggle', className, {\n disabled\n }, Mixins.colorClasses(props));\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n disabled,\n readOnly: readonly,\n value,\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'checkbox',\n name: name\n }\n });\n }\n return _h('label', {\n ref: 'el',\n style: style,\n class: labelClasses,\n attrs: {\n id: id\n }\n }, [inputEl, _h('span', {\n class: 'toggle-icon'\n })]);\n },\n\n watch: {\n 'props.checked': function watchChecked(newValue) {\n const self = this;\n if (!self.f7Toggle) return;\n self.f7Toggle.checked = newValue;\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n self.f7Toggle = f7.toggle.create({\n el: self.$refs.el,\n on: {\n change(toggle) {\n self.dispatchEvent('toggle:change toggleChange', toggle.checked);\n }\n\n }\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Toggle && self.f7Toggle.destroy && self.f7Toggle.$el) self.f7Toggle.destroy();\n },\n\n methods: {\n toggle() {\n const self = this;\n if (self.f7Toggle && self.f7Toggle.toggle) self.f7Toggle.toggle();\n },\n\n onChange(event) {\n const self = this;\n self.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-range',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n value: {\n type: [Number, Array, String],\n default: 0\n },\n min: {\n type: [Number, String],\n default: 0\n },\n max: {\n type: [Number, String],\n default: 100\n },\n step: {\n type: [Number, String],\n default: 1\n },\n label: {\n type: Boolean,\n default: false\n },\n dual: {\n type: Boolean,\n default: false\n },\n vertical: {\n type: Boolean,\n default: false\n },\n verticalReversed: {\n type: Boolean,\n default: false\n },\n draggableBar: {\n type: Boolean,\n default: true\n },\n formatLabel: Function,\n scale: {\n type: Boolean,\n default: false\n },\n scaleSteps: {\n type: Number,\n default: 5\n },\n scaleSubSteps: {\n type: Number,\n default: 0\n },\n formatScaleLabel: Function,\n limitKnobPosition: {\n type: Boolean,\n default: undefined\n },\n name: String,\n input: Boolean,\n inputId: String,\n disabled: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n disabled,\n className,\n style,\n input,\n inputId,\n name,\n vertical,\n verticalReversed\n } = self.props;\n const classes = Utils.classNames(className, 'range-slider', {\n 'range-slider-horizontal': !vertical,\n 'range-slider-vertical': vertical,\n 'range-slider-vertical-reversed': vertical && verticalReversed,\n disabled\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [input && _h('input', {\n attrs: {\n type: 'range',\n name: name,\n id: inputId\n }\n }), this.$slots['default']]);\n },\n\n watch: {\n 'props.value': function watchValue(newValue) {\n const self = this;\n if (!self.f7Range) return;\n self.f7Range.setValue(newValue);\n }\n },\n\n mounted() {\n const self = this;\n self.$f7ready(f7 => {\n if (!self.props.init) return;\n const props = self.props;\n const {\n value,\n min,\n max,\n step,\n label,\n dual,\n draggableBar,\n vertical,\n verticalReversed,\n formatLabel,\n scale,\n scaleSteps,\n scaleSubSteps,\n formatScaleLabel,\n limitKnobPosition\n } = props;\n self.f7Range = f7.range.create(Utils.noUndefinedProps({\n el: self.$refs.el,\n value,\n min,\n max,\n step,\n label,\n dual,\n draggableBar,\n vertical,\n verticalReversed,\n formatLabel,\n scale,\n scaleSteps,\n scaleSubSteps,\n formatScaleLabel,\n limitKnobPosition,\n on: {\n change(range, val) {\n self.dispatchEvent('range:change rangeChange', val);\n },\n\n changed(range, val) {\n self.dispatchEvent('range:changed rangeChanged', val);\n }\n\n }\n }));\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Range && self.f7Range.destroy) self.f7Range.destroy();\n },\n\n methods: {\n setValue(newValue) {\n const self = this;\n if (self.f7Range && self.f7Range.setValue) self.f7Range.setValue(newValue);\n },\n\n getValue() {\n const self = this;\n\n if (self.f7Range && self.f7Range.getValue) {\n return self.f7Range.getValue();\n }\n\n return undefined;\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-text-editor',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps, {\n mode: {\n type: String,\n default: undefined\n },\n value: {\n type: String,\n default: undefined\n },\n buttons: Array,\n customButtons: Object,\n dividers: {\n type: Boolean,\n default: undefined\n },\n imageUrlText: {\n type: String,\n default: undefined\n },\n linkUrlText: {\n type: String,\n default: undefined\n },\n placeholder: {\n type: String,\n default: undefined\n },\n clearFormattingOnPaste: {\n type: Boolean,\n default: undefined\n },\n resizable: {\n type: Boolean,\n default: false\n }\n }),\n\n created() {\n Utils.bindMethods(this, 'onChange onInput onFocus onBlur onButtonClick onKeyboardOpen onKeyboardClose onPopoverOpen onPopoverClose'.split(' '));\n },\n\n mounted() {\n const props = this.props;\n const {\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste\n } = props;\n const params = Utils.noUndefinedProps({\n el: this.$refs.el,\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste,\n on: {\n change: this.onChange,\n input: this.onInput,\n focus: this.onFocus,\n blur: this.onBlur,\n buttonClick: this.onButtonClick,\n keyboardOpen: this.onKeyboardOpen,\n keyboardClose: this.onKeyboardClose,\n popoverOpen: this.onPopoverOpen,\n popoverClose: this.onPopoverClose\n }\n });\n this.$f7ready(f7 => {\n this.f7TextEditor = f7.textEditor.create(params);\n });\n },\n\n beforeDestroy() {\n if (this.f7TextEditor && this.f7TextEditor.destroy) {\n this.f7TextEditor.destroy();\n }\n },\n\n watch: {\n 'props.value': function watchValue() {\n if (this.f7TextEditor) {\n this.f7TextEditor.setValue(this.props.value);\n }\n }\n },\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n resizable\n } = props;\n const classes = Utils.classNames(className, 'text-editor', resizable && 'text-editor-resizable', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['root-start'], _h('div', {\n class: 'text-editor-content',\n attrs: {\n contenteditable: true\n }\n }, [this.$slots['default']]), this.$slots['root-end'], this.$slots['root']]);\n },\n\n methods: {\n onChange(editor, value) {\n this.dispatchEvent('texteditor:change textEditorChange', value);\n },\n\n onInput() {\n this.dispatchEvent('texteditor:change textEditorChange');\n },\n\n onFocus() {\n this.dispatchEvent('texteditor:focus textEditorFocus');\n },\n\n onBlur() {\n this.dispatchEvent('texteditor:blur textEditorBlur');\n },\n\n onButtonClick(editor, button) {\n this.dispatchEvent('texteditor:buttonclick textEditorButtonClick', button);\n },\n\n onKeyboardOpen() {\n this.dispatchEvent('texteditor:keyboardopen textEditorKeyboardOpen');\n },\n\n onKeyboardClose() {\n this.dispatchEvent('texteditor:keyboardclose textEditorKeyboardClose');\n },\n\n onPopoverOpen() {\n this.dispatchEvent('texteditor:popoveropen textEditorPopoverOpen');\n },\n\n onPopoverClose() {\n this.dispatchEvent('texteditor:popoverclose textEditorPopoverClose');\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Toggle from './toggle';\nimport F7Range from './range';\nimport F7TextEditor from './text-editor';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-input',\n props: Object.assign({\n type: String,\n name: String,\n value: [String, Number, Array, Date, Object],\n defaultValue: [String, Number, Array],\n inputmode: String,\n placeholder: String,\n id: [String, Number],\n inputId: [String, Number],\n size: [String, Number],\n accept: [String, Number],\n autocomplete: [String],\n autocorrect: [String],\n autocapitalize: [String],\n spellcheck: [String],\n autofocus: Boolean,\n autosave: String,\n checked: Boolean,\n disabled: Boolean,\n max: [String, Number],\n min: [String, Number],\n step: [String, Number],\n maxlength: [String, Number],\n minlength: [String, Number],\n multiple: Boolean,\n readonly: Boolean,\n required: Boolean,\n inputStyle: [String, Object],\n pattern: String,\n validate: [Boolean, String],\n validateOnBlur: Boolean,\n onValidate: Function,\n tabindex: [String, Number],\n resizable: Boolean,\n clearButton: Boolean,\n noFormStoreData: Boolean,\n noStoreData: Boolean,\n ignoreStoreData: Boolean,\n errorMessage: String,\n errorMessageForce: Boolean,\n info: String,\n outline: Boolean,\n wrap: {\n type: Boolean,\n default: true\n },\n dropdown: {\n type: [String, Boolean],\n default: 'auto'\n },\n calendarParams: Object,\n colorPickerParams: Object,\n textEditorParams: Object\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n inputFocused: false,\n inputInvalid: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n type,\n name,\n value,\n defaultValue,\n inputmode,\n placeholder,\n id,\n inputId,\n size,\n accept,\n autocomplete,\n autocorrect,\n autocapitalize,\n spellcheck,\n autofocus,\n autosave,\n checked,\n disabled,\n max,\n min,\n step,\n maxlength,\n minlength,\n multiple,\n readonly,\n required,\n inputStyle,\n pattern,\n validate,\n validateOnBlur,\n tabindex,\n resizable,\n clearButton,\n errorMessage,\n errorMessageForce,\n info,\n wrap,\n dropdown,\n style,\n className,\n noStoreData,\n noFormStoreData,\n ignoreStoreData,\n outline,\n textEditorParams\n } = props;\n const domValue = self.domValue();\n const inputHasValue = self.inputHasValue();\n let inputEl;\n\n const createInput = (InputTag, children) => {\n const needsValue = type !== 'file' && type !== 'datepicker' && type !== 'colorpicker';\n const needsType = InputTag === 'input';\n let inputType = type;\n\n if (inputType === 'datepicker' || inputType === 'colorpicker') {\n inputType = 'text';\n }\n\n const inputClassName = Utils.classNames(!wrap && className, {\n resizable: inputType === 'textarea' && resizable,\n 'no-store-data': noFormStoreData || noStoreData || ignoreStoreData,\n 'input-invalid': errorMessage && errorMessageForce || self.state.inputInvalid,\n 'input-with-value': inputHasValue,\n 'input-focused': self.state.inputFocused\n });\n let input;\n let inputValue;\n\n if (needsValue) {\n if (typeof value !== 'undefined') inputValue = value;else inputValue = domValue;\n }\n\n const valueProps = {};\n\n if (type !== 'datepicker' && type !== 'colorpicker') {\n if ('value' in props) valueProps.value = inputValue;\n if ('defaultValue' in props) valueProps.defaultValue = defaultValue;\n }\n\n {\n input = _h(InputTag, {\n ref: 'inputEl',\n style: inputStyle,\n class: inputClassName,\n domProps: Object.assign({\n checked,\n disabled,\n readOnly: readonly,\n multiple,\n required\n }, valueProps),\n on: {\n focus: self.onFocus,\n blur: self.onBlur,\n input: self.onInput,\n change: self.onChange\n },\n attrs: {\n name: name,\n type: needsType ? inputType : undefined,\n placeholder: placeholder,\n inputmode: inputmode,\n id: inputId,\n size: size,\n accept: accept,\n autocomplete: autocomplete,\n autocorrect: autocorrect,\n autocapitalize: autocapitalize,\n spellcheck: spellcheck,\n autofocus: autofocus,\n autoSave: autosave,\n max: max,\n maxlength: maxlength,\n min: min,\n minlength: minlength,\n step: step,\n pattern: pattern,\n validate: typeof validate === 'string' && validate.length ? validate : undefined,\n 'data-validate': validate === true || validate === '' || validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n 'data-validate-on-blur': validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n tabindex: tabindex,\n 'data-error-message': errorMessageForce ? undefined : errorMessage\n }\n }, [children]);\n }\n return input;\n };\n\n const {\n default: slotsDefault,\n info: slotsInfo\n } = self.$slots;\n\n if (type === 'select' || type === 'textarea' || type === 'file') {\n if (type === 'select') {\n inputEl = createInput('select', slotsDefault);\n } else if (type === 'file') {\n inputEl = createInput('input');\n } else {\n inputEl = createInput('textarea');\n }\n } else if (slotsDefault && slotsDefault.length > 0 || !type) {\n inputEl = slotsDefault;\n } else if (type === 'toggle') {\n inputEl = _h(F7Toggle, {\n on: {\n change: self.onChange\n },\n attrs: {\n checked: checked,\n readonly: readonly,\n name: name,\n value: value,\n disabled: disabled,\n id: inputId\n }\n });\n } else if (type === 'range') {\n inputEl = _h(F7Range, {\n on: {\n rangeChange: self.onChange\n },\n attrs: {\n value: value,\n disabled: disabled,\n min: min,\n max: max,\n step: step,\n name: name,\n id: inputId,\n input: true\n }\n });\n } else if (type === 'texteditor') {\n inputEl = _h(F7TextEditor, __vueComponentTransformJSXProps(Object.assign({}, textEditorParams, {\n on: {\n textEditorFocus: self.onFocus,\n textEditorBlur: self.onBlur,\n textEditorInput: self.onInput,\n textEditorChange: self.onChange\n },\n attrs: {\n value: value,\n resizable: resizable,\n placeholder: placeholder\n }\n })));\n } else {\n inputEl = createInput('input');\n }\n\n if (wrap) {\n const wrapClasses = Utils.classNames(className, 'input', {\n 'input-outline': outline,\n 'input-dropdown': dropdown === 'auto' ? type === 'select' : dropdown\n }, Mixins.colorClasses(props));\n return _h('div', {\n class: wrapClasses,\n style: style,\n attrs: {\n id: id\n }\n }, [inputEl, errorMessage && errorMessageForce && _h('div', {\n class: 'input-error-message'\n }, [errorMessage]), clearButton && _h('span', {\n class: 'input-clear-button'\n }), (info || slotsInfo && slotsInfo.length) && _h('div', {\n class: 'input-info'\n }, [info, this.$slots['info']])]);\n }\n\n return inputEl;\n },\n\n watch: {\n 'props.colorPickerParams': function watchValue() {\n const self = this;\n if (!self.$f7 || !self.f7ColorPicker) return;\n Utils.extend(self.f7ColorPicker.params, self.colorPickerParams || {});\n },\n 'props.calendarParams': function watchValue() {\n const self = this;\n if (!self.$f7 || !self.f7Calendar) return;\n Utils.extend(self.f7Calendar.params, self.calendarParams || {});\n },\n 'props.value': function watchValue() {\n const self = this;\n const {\n type\n } = self.props;\n if (type === 'range' || type === 'toggle') return;\n if (!self.$f7) return;\n self.updateInputOnDidUpdate = true;\n\n if (self.f7Calendar) {\n self.f7Calendar.setValue(self.props.value);\n }\n\n if (self.f7ColorPicker) {\n self.f7ColorPicker.setValue(self.props.value);\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, 'onFocus onBlur onInput onChange onTextareaResize onInputNotEmpty onInputEmpty onInputClear'.split(' '));\n },\n\n mounted() {\n const self = this;\n self.$f7ready(f7 => {\n const {\n validate,\n validateOnBlur,\n resizable,\n type,\n clearButton,\n value,\n defaultValue,\n calendarParams,\n colorPickerParams\n } = self.props;\n if (type === 'range' || type === 'toggle') return;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.addEventListener('input:notempty', self.onInputNotEmpty, false);\n\n if (type === 'textarea' && resizable) {\n inputEl.addEventListener('textarea:resize', self.onTextareaResize, false);\n }\n\n if (clearButton) {\n inputEl.addEventListener('input:empty', self.onInputEmpty, false);\n inputEl.addEventListener('input:clear', self.onInputClear, false);\n }\n\n if (type === 'datepicker') {\n self.f7Calendar = f7.calendar.create(Object.assign({\n inputEl,\n value,\n on: {\n change(calendar, calendarValue) {\n self.dispatchEvent('calendar:change calendarChange', calendarValue);\n }\n\n }\n }, calendarParams || {}));\n }\n\n if (type === 'colorpicker') {\n self.f7ColorPicker = f7.colorPicker.create(Object.assign({\n inputEl,\n value,\n on: {\n change(colorPicker, colorPickerValue) {\n self.dispatchEvent('colorpicker:change colorPickerChange', colorPickerValue);\n }\n\n }\n }, colorPickerParams || {}));\n }\n\n f7.input.checkEmptyState(inputEl);\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && (typeof value !== 'undefined' && value !== null && value !== '' || typeof defaultValue !== 'undefined' && defaultValue !== null && defaultValue !== '')) {\n setTimeout(() => {\n self.validateInput(inputEl);\n }, 0);\n }\n\n if (resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n });\n },\n\n updated() {\n const self = this;\n const {\n validate,\n validateOnBlur,\n resizable\n } = self.props;\n const f7 = self.$f7;\n if (!f7) return;\n\n if (self.updateInputOnDidUpdate) {\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n self.updateInputOnDidUpdate = false;\n f7.input.checkEmptyState(inputEl);\n\n if (validate && !validateOnBlur) {\n self.validateInput(inputEl);\n }\n\n if (resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n const {\n type,\n resizable,\n clearButton\n } = self.props;\n if (type === 'range' || type === 'toggle') return;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.removeEventListener('input:notempty', self.onInputNotEmpty, false);\n\n if (type === 'textarea' && resizable) {\n inputEl.removeEventListener('textarea:resize', self.onTextareaResize, false);\n }\n\n if (clearButton) {\n inputEl.removeEventListener('input:empty', self.onInputEmpty, false);\n inputEl.removeEventListener('input:clear', self.onInputClear, false);\n }\n\n if (self.f7Calendar && self.f7Calendar.destroy) {\n self.f7Calendar.destroy();\n }\n\n if (self.f7ColorPicker && self.f7ColorPicker.destroy) {\n self.f7ColorPicker.destroy();\n }\n\n delete self.f7Calendar;\n delete self.f7ColorPicker;\n },\n\n methods: {\n domValue() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n if (!inputEl) return undefined;\n return inputEl.value;\n },\n\n inputHasValue() {\n const self = this;\n const {\n value,\n type\n } = self.props;\n\n if (type === 'datepicker' && Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n const domValue = self.domValue();\n return typeof value === 'undefined' ? domValue || domValue === 0 : value || value === 0;\n },\n\n validateInput(inputEl) {\n const self = this;\n const f7 = self.$f7;\n if (!f7 || !inputEl) return;\n const validity = inputEl.validity;\n if (!validity) return;\n const {\n onValidate\n } = self.props;\n\n if (!validity.valid) {\n if (onValidate) onValidate(false);\n\n if (self.state.inputInvalid !== true) {\n self.setState({\n inputInvalid: true\n });\n }\n } else if (self.state.inputInvalid !== false) {\n if (onValidate) onValidate(true);\n self.setState({\n inputInvalid: false\n });\n }\n },\n\n onTextareaResize(event) {\n this.dispatchEvent('textarea:resize textareaResize', event);\n },\n\n onInputNotEmpty(event) {\n this.dispatchEvent('input:notempty inputNotEmpty', event);\n },\n\n onInputEmpty(event) {\n this.dispatchEvent('input:empty inputEmpty', event);\n },\n\n onInputClear(event) {\n this.dispatchEvent('input:clear inputClear', event);\n },\n\n onInput(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('input', ...args);\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n },\n\n onFocus(...args) {\n this.dispatchEvent('focus', ...args);\n this.setState({\n inputFocused: true\n });\n },\n\n onBlur(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('blur', ...args);\n\n if ((validate || validate === '' || validateOnBlur || validateOnBlur === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n\n self.setState({\n inputFocused: false\n });\n },\n\n onChange(...args) {\n this.dispatchEvent('change', ...args);\n\n if (this.props.type === 'texteditor') {\n this.dispatchEvent('texteditor:change textEditorChange', args[1]);\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Badge from './badge';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-link',\n props: Object.assign({\n id: [String, Number],\n noLinkClass: Boolean,\n text: String,\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n tabbarLabel: Boolean,\n iconOnly: Boolean,\n badge: [String, Number],\n badgeColor: [String],\n iconBadge: [String, Number],\n href: {\n type: [String, Boolean],\n default: '#'\n },\n target: String,\n tooltip: String,\n tooltipTrigger: String,\n smartSelect: Boolean,\n smartSelectParams: Object\n }, Mixins.colorProps, {}, Mixins.linkIconProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n isTabbarLabel: props.tabbarLabel\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n text,\n badge,\n badgeColor,\n iconOnly,\n iconBadge,\n icon,\n iconColor,\n iconSize,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n id,\n style\n } = props;\n const defaultSlots = self.$slots.default || [];\n Object.keys(self.$slots).forEach(key => {\n if (typeof self.$slots[key] === 'undefined' || key === 'default') return;\n self.$slots[key].forEach(child => defaultSlots.push(child));\n });\n let iconEl;\n let textEl;\n let badgeEl;\n let iconBadgeEl;\n\n if (text) {\n if (badge) badgeEl = _h(F7Badge, {\n attrs: {\n color: badgeColor\n }\n }, [badge]);\n textEl = _h('span', {\n class: self.state.isTabbarLabel ? 'tabbar-label' : ''\n }, [text, badgeEl]);\n }\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n if (iconBadge) {\n iconBadgeEl = _h(F7Badge, {\n attrs: {\n color: badgeColor\n }\n }, [iconBadge]);\n }\n\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n }, [iconBadgeEl]);\n }\n\n if (iconOnly || !text && defaultSlots && defaultSlots.length === 0 || !text && !defaultSlots) {\n self.iconOnlyComputed = true;\n } else {\n self.iconOnlyComputed = false;\n }\n\n return _h('a', __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n style: style,\n class: self.classes\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [iconEl, textEl, defaultSlots]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n el.addEventListener('click', self.onClick);\n const {\n tabbarLabel,\n tabLink,\n tooltip,\n tooltipTrigger,\n smartSelect,\n smartSelectParams,\n routeProps\n } = self.props;\n let isTabbarLabel = false;\n\n if (tabbarLabel || (tabLink || tabLink === '') && self.$$(el).parents('.tabbar-labels').length) {\n isTabbarLabel = true;\n }\n\n self.setState({\n isTabbarLabel\n });\n if (routeProps) el.f7RouteProps = routeProps;\n self.$f7ready(f7 => {\n if (smartSelect) {\n const ssParams = Utils.extend({\n el\n }, smartSelectParams || {});\n self.f7SmartSelect = f7.smartSelect.create(ssParams);\n }\n\n if (tooltip) {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n }\n });\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n const {\n routeProps\n } = self.props;\n\n if (routeProps) {\n el.f7RouteProps = routeProps;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n el.removeEventListener('click', self.onClick);\n delete el.f7RouteProps;\n\n if (self.f7SmartSelect && self.f7SmartSelect.destroy) {\n self.f7SmartSelect.destroy();\n }\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n href,\n target,\n tabLink\n } = props;\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false) hrefComputed = undefined;\n return Utils.extend({\n href: hrefComputed,\n target,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink || undefined\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n tabLink,\n tabLinkActive,\n noLinkClass,\n smartSelect,\n className\n } = props;\n return Utils.classNames(className, {\n link: !(noLinkClass || self.state.isTabbarLabel),\n 'icon-only': self.iconOnlyComputed,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'smart-select': smartSelect\n }, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-button',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n text: [String, Number],\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n link: [Boolean, String],\n href: [Boolean, String],\n target: String,\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = this.props;\n const {\n className,\n id,\n style,\n title,\n text\n } = props;\n return _h('li', {\n style: style,\n class: className,\n attrs: {\n id: id\n }\n }, [_h('a', __vueComponentTransformJSXProps(Object.assign({\n class: self.classes\n }, self.attrs, {\n ref: 'linkEl'\n })), [this.$slots['default'] || [title || text]])]);\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n link,\n href,\n target,\n tabLink\n } = props;\n return Utils.extend({\n href: typeof link === 'boolean' && typeof href === 'boolean' ? '#' : link || href,\n target,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n tabLink,\n tabLinkActive\n } = props;\n return Utils.classNames({\n 'list-button': true,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive\n }, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const linkEl = self.$refs.linkEl;\n const {\n routeProps,\n tooltip,\n tooltipTrigger\n } = self.props;\n\n if (routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n\n linkEl.addEventListener('click', self.onClick);\n self.$f7ready(f7 => {\n if (tooltip) {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: linkEl,\n text: tooltip,\n trigger: tooltipTrigger\n });\n }\n });\n },\n\n updated() {\n const self = this;\n const linkEl = self.$refs.linkEl;\n const {\n routeProps\n } = self.props;\n\n if (routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const linkEl = self.$refs.linkEl;\n linkEl.removeEventListener('click', this.onClick);\n delete linkEl.f7RouteProps;\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-group',\n props: Object.assign({\n id: [String, Number],\n mediaList: Boolean,\n sortable: Boolean,\n sortableOpposite: Boolean,\n sortableTapHold: Boolean,\n sortableMoveElements: {\n type: Boolean,\n default: undefined\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n mediaList,\n sortable,\n sortableOpposite,\n sortableTapHold,\n sortableMoveElements\n } = props;\n const classes = Utils.classNames(className, 'list-group', {\n 'media-list': mediaList,\n sortable,\n 'sortable-tap-hold': sortableTapHold,\n 'sortable-opposite': sortableOpposite\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-sortable-move-elements': typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined\n }\n }, [_h('ul', [this.$slots['default']])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-index',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n listEl: [String, Object],\n indexes: {\n type: [String, Array],\n default: 'auto'\n },\n scrollList: {\n type: Boolean,\n default: true\n },\n label: {\n type: Boolean,\n default: false\n },\n iosItemHeight: {\n type: Number,\n default: 14\n },\n mdItemHeight: {\n type: Number,\n default: 14\n },\n auroraItemHeight: {\n type: Number,\n default: 14\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'list-index', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n beforeDestroy() {\n if (!this.props.init) return;\n\n if (this.f7ListIndex && this.f7ListIndex.destroy) {\n this.f7ListIndex.destroy();\n }\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n const el = self.$refs.el;\n const {\n listEl,\n indexes,\n iosItemHeight,\n mdItemHeight,\n auroraItemHeight,\n scrollList,\n label\n } = self.props;\n self.f7ListIndex = f7.listIndex.create({\n el,\n listEl,\n indexes,\n iosItemHeight,\n mdItemHeight,\n auroraItemHeight,\n scrollList,\n label,\n on: {\n select(index, itemContent, itemIndex) {\n self.dispatchEvent('listindex:select listIndexSelect', itemContent, itemIndex);\n }\n\n }\n });\n });\n },\n\n watch: {\n 'props.indexes': function watchIndexes() {\n if (!this.f7ListIndex) return;\n this.f7ListIndex.params.indexes = this.props.indexes;\n this.update();\n }\n },\n methods: {\n update() {\n if (!this.f7ListIndex) return;\n this.f7ListIndex.update();\n },\n\n scrollListToIndex(indexContent) {\n if (!this.f7ListIndex) return;\n this.f7ListIndex.scrollListToIndex(indexContent);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7TextEditor from './text-editor';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-input',\n props: Object.assign({\n id: [String, Number],\n sortable: {\n type: Boolean,\n default: undefined\n },\n media: String,\n dropdown: {\n type: [String, Boolean],\n default: 'auto'\n },\n wrap: {\n type: Boolean,\n default: true\n },\n input: {\n type: Boolean,\n default: true\n },\n type: {\n type: String,\n default: 'text'\n },\n name: String,\n value: [String, Number, Array, Date, Object],\n defaultValue: [String, Number, Array],\n inputmode: String,\n readonly: Boolean,\n required: Boolean,\n disabled: Boolean,\n placeholder: String,\n inputId: [String, Number],\n size: [String, Number],\n accept: [String, Number],\n autocomplete: [String],\n autocorrect: [String],\n autocapitalize: [String],\n spellcheck: [String],\n autofocus: Boolean,\n autosave: String,\n max: [String, Number],\n min: [String, Number],\n step: [String, Number],\n maxlength: [String, Number],\n minlength: [String, Number],\n multiple: Boolean,\n inputStyle: [String, Object],\n pattern: String,\n validate: [Boolean, String],\n validateOnBlur: Boolean,\n onValidate: Function,\n tabindex: [String, Number],\n resizable: Boolean,\n clearButton: Boolean,\n noFormStoreData: Boolean,\n noStoreData: Boolean,\n ignoreStoreData: Boolean,\n errorMessage: String,\n errorMessageForce: Boolean,\n info: String,\n outline: Boolean,\n label: [String, Number],\n inlineLabel: Boolean,\n floatingLabel: Boolean,\n calendarParams: Object,\n colorPickerParams: Object,\n textEditorParams: Object\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n isSortable: props.sortable,\n inputFocused: false,\n inputInvalid: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const {\n inputFocused,\n inputInvalid\n } = self.state;\n const props = self.props;\n const {\n id,\n style,\n className,\n sortable,\n media,\n dropdown,\n input: renderInput,\n wrap,\n type,\n name,\n value,\n defaultValue,\n readonly,\n required,\n disabled,\n inputmode,\n placeholder,\n inputId,\n size,\n accept,\n autocomplete,\n autocorrect,\n autocapitalize,\n spellcheck,\n autofocus,\n autosave,\n max,\n min,\n step,\n maxlength,\n minlength,\n multiple,\n inputStyle,\n pattern,\n validate,\n validateOnBlur,\n tabindex,\n resizable,\n clearButton,\n noFormStoreData,\n noStoreData,\n ignoreStoreData,\n errorMessage,\n errorMessageForce,\n info,\n outline,\n label,\n inlineLabel,\n floatingLabel,\n textEditorParams\n } = props;\n const domValue = self.domValue();\n const inputHasValue = self.inputHasValue();\n const isSortable = sortable || self.state.isSortable;\n\n const createInput = (InputTag, children) => {\n const needsValue = type !== 'file' && type !== 'datepicker' && type !== 'colorpicker';\n const needsType = InputTag === 'input';\n let inputType = type;\n\n if (inputType === 'datepicker' || inputType === 'colorpicker') {\n inputType = 'text';\n }\n\n const inputClassName = Utils.classNames({\n resizable: inputType === 'textarea' && resizable,\n 'no-store-data': noFormStoreData || noStoreData || ignoreStoreData,\n 'input-invalid': errorMessage && errorMessageForce || inputInvalid,\n 'input-with-value': inputHasValue,\n 'input-focused': inputFocused\n });\n let input;\n let inputValue;\n\n if (needsValue) {\n if (typeof value !== 'undefined') inputValue = value;else inputValue = domValue;\n }\n\n const valueProps = {};\n\n if (type !== 'datepicker' && type !== 'colorpicker') {\n if ('value' in props) valueProps.value = inputValue;\n if ('defaultValue' in props) valueProps.defaultValue = defaultValue;\n }\n\n {\n input = _h(InputTag, {\n ref: 'inputEl',\n style: inputStyle,\n class: inputClassName,\n domProps: Object.assign({\n disabled,\n readOnly: readonly,\n multiple,\n required\n }, valueProps),\n on: {\n focus: self.onFocus,\n blur: self.onBlur,\n input: self.onInput,\n change: self.onChange\n },\n attrs: {\n name: name,\n type: needsType ? inputType : undefined,\n placeholder: placeholder,\n inputmode: inputmode,\n id: inputId,\n size: size,\n accept: accept,\n autocomplete: autocomplete,\n autocorrect: autocorrect,\n autocapitalize: autocapitalize,\n spellcheck: spellcheck,\n autofocus: autofocus,\n autoSave: autosave,\n max: max,\n maxlength: maxlength,\n min: min,\n minlength: minlength,\n step: step,\n pattern: pattern,\n validate: typeof validate === 'string' && validate.length ? validate : undefined,\n 'data-validate': validate === true || validate === '' || validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n 'data-validate-on-blur': validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n tabindex: tabindex,\n 'data-error-message': errorMessageForce ? undefined : errorMessage\n }\n }, [children]);\n }\n return input;\n };\n\n let inputEl;\n\n if (renderInput) {\n if (type === 'select' || type === 'textarea' || type === 'file') {\n if (type === 'select') {\n inputEl = createInput('select', self.$slots.default);\n } else if (type === 'file') {\n inputEl = createInput('input');\n } else {\n inputEl = createInput('textarea');\n }\n } else if (type === 'texteditor') {\n inputEl = _h(F7TextEditor, __vueComponentTransformJSXProps(Object.assign({}, textEditorParams, {\n on: {\n textEditorFocus: self.onFocus,\n textEditorBlur: self.onBlur,\n textEditorInput: self.onInput,\n textEditorChange: self.onChange\n },\n attrs: {\n value: value,\n resizable: resizable,\n placeholder: placeholder\n }\n })));\n } else {\n inputEl = createInput('input');\n }\n }\n\n const hasErrorMessage = !!errorMessage || self.$slots['error-message'] && self.$slots['error-message'].length;\n\n const ItemContent = _h('div', {\n ref: 'itemContentEl',\n class: Utils.classNames('item-content item-input', !wrap && className, !wrap && {\n disabled\n }, !wrap && Mixins.colorClasses(props), {\n 'inline-label': inlineLabel,\n 'item-input-outline': outline,\n 'item-input-focused': inputFocused,\n 'item-input-with-info': !!info || self.$slots.info && self.$slots.info.length,\n 'item-input-with-value': inputHasValue,\n 'item-input-with-error-message': hasErrorMessage && errorMessageForce || inputInvalid,\n 'item-input-invalid': hasErrorMessage && errorMessageForce || inputInvalid\n })\n }, [this.$slots['content-start'], (media || self.$slots.media) && _h('div', {\n class: 'item-media'\n }, [media && _h('img', {\n attrs: {\n src: media\n }\n }), this.$slots['media']]), _h('div', {\n class: 'item-inner'\n }, [this.$slots['inner-start'], (label || self.$slots.label) && _h('div', {\n class: Utils.classNames('item-title item-label', {\n 'item-floating-label': floatingLabel\n })\n }, [label, this.$slots['label']]), _h('div', {\n class: Utils.classNames('item-input-wrap', {\n 'input-dropdown': dropdown === 'auto' ? type === 'select' : dropdown\n })\n }, [inputEl, this.$slots['input'], hasErrorMessage && errorMessageForce && _h('div', {\n class: 'item-input-error-message'\n }, [errorMessage, this.$slots['error-message']]), clearButton && _h('span', {\n class: 'input-clear-button'\n }), (info || self.$slots.info) && _h('div', {\n class: 'item-input-info'\n }, [info, this.$slots['info']])]), this.$slots['inner'], this.$slots['inner-end']]), this.$slots['content'], this.$slots['content-end']]);\n\n if (!wrap) {\n return ItemContent;\n }\n\n return _h('li', {\n ref: 'el',\n style: style,\n class: Utils.classNames(className, {\n disabled\n }, Mixins.colorClasses(props)),\n attrs: {\n id: id\n }\n }, [this.$slots['root-start'], ItemContent, isSortable && _h('div', {\n class: 'sortable-handler'\n }), this.$slots['root'], this.$slots['root-end']]);\n },\n\n watch: {\n 'props.colorPickerParams': function watchValue() {\n const self = this;\n if (!self.$f7 || !self.f7ColorPicker) return;\n Utils.extend(self.f7ColorPicker.params, self.colorPickerParams || {});\n },\n 'props.calendarParams': function watchValue() {\n const self = this;\n if (!self.$f7 || !self.f7Calendar) return;\n Utils.extend(self.f7Calendar.params, self.calendarParams || {});\n },\n 'props.value': function watchValue() {\n const self = this;\n if (!self.$f7) return;\n self.updateInputOnDidUpdate = true;\n\n if (self.f7Calendar) {\n self.f7Calendar.setValue(self.props.value);\n }\n\n if (self.f7ColorPicker) {\n self.f7ColorPicker.setValue(self.props.value);\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, 'onChange onInput onFocus onBlur onTextareaResize onInputNotEmpty onInputEmpty onInputClear'.split(' '));\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const itemContentEl = self.$refs.itemContentEl;\n if (!el && !itemContentEl) return;\n self.$f7ready(f7 => {\n const {\n validate,\n validateOnBlur,\n resizable,\n value,\n defaultValue,\n type,\n calendarParams,\n colorPickerParams\n } = self.props;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.addEventListener('input:notempty', self.onInputNotEmpty, false);\n inputEl.addEventListener('textarea:resize', self.onTextareaResize, false);\n inputEl.addEventListener('input:empty', self.onInputEmpty, false);\n inputEl.addEventListener('input:clear', self.onInputClear, false);\n\n if (type === 'datepicker') {\n self.f7Calendar = f7.calendar.create(Object.assign({\n inputEl,\n value,\n on: {\n change(calendar, calendarValue) {\n self.dispatchEvent('calendar:change calendarChange', calendarValue);\n }\n\n }\n }, calendarParams || {}));\n }\n\n if (type === 'colorpicker') {\n self.f7ColorPicker = f7.colorPicker.create(Object.assign({\n inputEl,\n value,\n on: {\n change(colorPicker, colorPickerValue) {\n self.dispatchEvent('colorpicker:change colorPickerChange', colorPickerValue);\n }\n\n }\n }, colorPickerParams || {}));\n }\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && (typeof value !== 'undefined' && value !== null && value !== '' || typeof defaultValue !== 'undefined' && defaultValue !== null && defaultValue !== '')) {\n setTimeout(() => {\n self.validateInput(inputEl);\n }, 0);\n }\n\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n });\n self.$listEl = self.$$(el || itemContentEl).parents('.list, .list-group').eq(0);\n\n if (self.$listEl.length) {\n self.setState({\n isSortable: self.$listEl.hasClass('sortable')\n });\n }\n },\n\n updated() {\n const self = this;\n const {\n $listEl\n } = self;\n if (!$listEl || $listEl && $listEl.length === 0) return;\n const isSortable = $listEl.hasClass('sortable');\n\n if (isSortable !== self.state.isSortable) {\n self.setState({\n isSortable\n });\n }\n\n const {\n validate,\n validateOnBlur,\n resizable,\n type\n } = self.props;\n const f7 = self.$f7;\n if (!f7) return;\n\n if (self.updateInputOnDidUpdate) {\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n self.updateInputOnDidUpdate = false;\n\n if (validate && !validateOnBlur) {\n self.validateInput(inputEl);\n }\n\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.removeEventListener('input:notempty', self.onInputNotEmpty, false);\n inputEl.removeEventListener('textarea:resize', self.onTextareaResize, false);\n inputEl.removeEventListener('input:empty', self.onInputEmpty, false);\n inputEl.removeEventListener('input:clear', self.onInputClear, false);\n\n if (self.f7Calendar && self.f7Calendar.destroy) {\n self.f7Calendar.destroy();\n }\n\n if (self.f7ColorPicker && self.f7ColorPicker.destroy) {\n self.f7ColorPicker.destroy();\n }\n\n delete self.f7Calendar;\n delete self.f7ColorPicker;\n },\n\n methods: {\n domValue() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n if (!inputEl) return undefined;\n return inputEl.value;\n },\n\n inputHasValue() {\n const self = this;\n const {\n value,\n type\n } = self.props;\n\n if (type === 'datepicker' && Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n const domValue = self.domValue();\n return typeof value === 'undefined' ? domValue || domValue === 0 : value || value === 0;\n },\n\n validateInput(inputEl) {\n const self = this;\n const f7 = self.$f7;\n if (!f7 || !inputEl) return;\n const validity = inputEl.validity;\n if (!validity) return;\n const {\n onValidate\n } = self.props;\n\n if (!validity.valid) {\n if (onValidate) onValidate(false);\n\n if (self.state.inputInvalid !== true) {\n self.setState({\n inputInvalid: true\n });\n }\n } else if (self.state.inputInvalid !== false) {\n if (onValidate) onValidate(true);\n self.setState({\n inputInvalid: false\n });\n }\n },\n\n onTextareaResize(event) {\n this.dispatchEvent('textarea:resize textareaResize', event);\n },\n\n onInputNotEmpty(event) {\n this.dispatchEvent('input:notempty inputNotEmpty', event);\n },\n\n onInputEmpty(event) {\n this.dispatchEvent('input:empty inputEmpty', event);\n },\n\n onInputClear(event) {\n this.dispatchEvent('input:clear inputClear', event);\n },\n\n onInput(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('input', ...args);\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n },\n\n onFocus(...args) {\n this.dispatchEvent('focus', ...args);\n this.setState({\n inputFocused: true\n });\n },\n\n onBlur(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('blur', ...args);\n\n if ((validate || validate === '' || validateOnBlur || validateOnBlur === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n\n self.setState({\n inputFocused: false\n });\n },\n\n onChange(...args) {\n this.dispatchEvent('change', ...args);\n\n if (this.props.type === 'texteditor') {\n this.dispatchEvent('texteditor:change textEditorChange', args[0]);\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item-cell',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'item-cell', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Badge from './badge';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item-content',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n text: [String, Number],\n media: String,\n subtitle: [String, Number],\n header: [String, Number],\n footer: [String, Number],\n after: [String, Number],\n badge: [String, Number],\n badgeColor: String,\n mediaList: Boolean,\n mediaItem: Boolean,\n checkbox: Boolean,\n checked: Boolean,\n defaultChecked: Boolean,\n indeterminate: Boolean,\n radio: Boolean,\n radioIcon: String,\n name: String,\n value: [String, Number, Array],\n readonly: Boolean,\n required: Boolean,\n disabled: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n radio,\n radioIcon,\n checkbox,\n value,\n name,\n checked,\n defaultChecked,\n readonly,\n disabled,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n mediaList,\n mediaItem,\n badgeColor\n } = props;\n const slotsContentStart = [];\n const slotsContent = [];\n const slotsContentEnd = [];\n const slotsInnerStart = [];\n const slotsInner = [];\n const slotsInnerEnd = [];\n const slotsAfterStart = [];\n const slotsAfter = [];\n const slotsAfterEnd = [];\n const slotsMedia = [];\n const slotsBeforeTitle = [];\n const slotsTitle = [];\n const slotsAfterTitle = [];\n const slotsSubtitle = [];\n const slotsText = [];\n const slotsHeader = [];\n const slotsFooter = [];\n let titleEl;\n let afterWrapEl;\n let afterEl;\n let badgeEl;\n let innerEl;\n let titleRowEl;\n let subtitleEl;\n let textEl;\n let mediaEl;\n let inputEl;\n let inputIconEl;\n let headerEl;\n let footerEl;\n const slotsDefault = self.$slots.default;\n const flattenSlots = [];\n\n if (slotsDefault && slotsDefault.length) {\n slotsDefault.forEach(slot => {\n if (Array.isArray(slot)) flattenSlots.push(...slot);else flattenSlots.push(slot);\n });\n }\n\n const passedSlotsContentStart = self.$slots['content-start'];\n\n if (passedSlotsContentStart && passedSlotsContentStart.length) {\n slotsContentStart.push(...passedSlotsContentStart);\n }\n\n flattenSlots.forEach(child => {\n if (typeof child === 'undefined') return;\n let slotName;\n slotName = child.data ? child.data.slot : undefined;\n if (!slotName || slotName === 'inner') slotsInner.push(child);\n if (slotName === 'content-start') slotsContentStart.push(child);\n if (slotName === 'content') slotsContent.push(child);\n if (slotName === 'content-end') slotsContentEnd.push(child);\n if (slotName === 'after-start') slotsAfterStart.push(child);\n if (slotName === 'after') slotsAfter.push(child);\n if (slotName === 'after-end') slotsAfterEnd.push(child);\n if (slotName === 'media') slotsMedia.push(child);\n if (slotName === 'inner-start') slotsInnerStart.push(child);\n if (slotName === 'inner-end') slotsInnerEnd.push(child);\n if (slotName === 'before-title') slotsBeforeTitle.push(child);\n if (slotName === 'title') slotsTitle.push(child);\n if (slotName === 'after-title') slotsAfterTitle.push(child);\n if (slotName === 'subtitle') slotsSubtitle.push(child);\n if (slotName === 'text') slotsText.push(child);\n if (slotName === 'header') slotsHeader.push(child);\n if (slotName === 'footer') slotsFooter.push(child);\n });\n\n if (radio || checkbox) {\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n checked,\n readonly,\n disabled,\n required,\n value\n },\n on: {\n change: this.onChange\n },\n attrs: {\n name: name,\n type: radio ? 'radio' : 'checkbox'\n }\n });\n }\n inputIconEl = _h('i', {\n class: `icon icon-${radio ? 'radio' : 'checkbox'}`\n });\n }\n\n if (media || slotsMedia.length) {\n let mediaImgEl;\n\n if (media) {\n mediaImgEl = _h('img', {\n attrs: {\n src: media\n }\n });\n }\n\n mediaEl = _h('div', {\n class: 'item-media'\n }, [mediaImgEl, slotsMedia]);\n }\n\n const isMedia = mediaItem || mediaList;\n\n if (header || slotsHeader.length) {\n headerEl = _h('div', {\n class: 'item-header'\n }, [header, slotsHeader]);\n }\n\n if (footer || slotsFooter.length) {\n footerEl = _h('div', {\n class: 'item-footer'\n }, [footer, slotsFooter]);\n }\n\n if (title || slotsTitle.length || !isMedia && headerEl || !isMedia && footerEl) {\n titleEl = _h('div', {\n class: 'item-title'\n }, [!isMedia && headerEl, title, slotsTitle, !isMedia && footerEl]);\n }\n\n if (subtitle || slotsSubtitle.length) {\n subtitleEl = _h('div', {\n class: 'item-subtitle'\n }, [subtitle, slotsSubtitle]);\n }\n\n if (text || slotsText.length) {\n textEl = _h('div', {\n class: 'item-text'\n }, [text, slotsText]);\n }\n\n if (after || badge || slotsAfter.length) {\n if (after) {\n afterEl = _h('span', [after]);\n }\n\n if (badge) {\n badgeEl = _h(F7Badge, {\n attrs: {\n color: badgeColor\n }\n }, [badge]);\n }\n\n afterWrapEl = _h('div', {\n class: 'item-after'\n }, [slotsAfterStart, afterEl, badgeEl, slotsAfter, slotsAfterEnd]);\n }\n\n if (isMedia) {\n titleRowEl = _h('div', {\n class: 'item-title-row'\n }, [slotsBeforeTitle, titleEl, slotsAfterTitle, afterWrapEl]);\n innerEl = _h('div', {\n ref: 'innerEl',\n class: 'item-inner'\n }, [slotsInnerStart, headerEl, titleRowEl, subtitleEl, textEl, slotsInner, footerEl, slotsInnerEnd]);\n } else {\n innerEl = _h('div', {\n ref: 'innerEl',\n class: 'item-inner'\n }, [slotsInnerStart, slotsBeforeTitle, titleEl, slotsAfterTitle, afterWrapEl, slotsInner, slotsInnerEnd]);\n }\n\n const ItemContentTag = checkbox || radio ? 'label' : 'div';\n const classes = Utils.classNames(className, 'item-content', {\n 'item-checkbox': checkbox,\n 'item-radio': radio,\n 'item-radio-icon-start': radio && radioIcon === 'start',\n 'item-radio-icon-end': radio && radioIcon === 'end'\n }, Mixins.colorClasses(props));\n return _h(ItemContentTag, {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [slotsContentStart, inputEl, inputIconEl, mediaEl, innerEl, slotsContent, slotsContentEnd]);\n },\n\n created() {\n Utils.bindMethods(this, 'onClick onChange'.split(' '));\n },\n\n mounted() {\n const self = this;\n const {\n el,\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (indeterminate && inputEl) {\n inputEl.indeterminate = true;\n }\n\n el.addEventListener('click', self.onClick);\n },\n\n updated() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (inputEl) {\n inputEl.indeterminate = indeterminate;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el\n } = self.$refs;\n el.removeEventListener('click', self.onClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item-row',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'item-row', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport F7ListItemContent from './list-item-content';\nimport Mixins from '../utils/mixins';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n text: [String, Number],\n media: String,\n subtitle: [String, Number],\n header: [String, Number],\n footer: [String, Number],\n tooltip: String,\n tooltipTrigger: String,\n link: [Boolean, String],\n target: String,\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n after: [String, Number],\n badge: [String, Number],\n badgeColor: String,\n mediaItem: Boolean,\n mediaList: Boolean,\n divider: Boolean,\n groupTitle: Boolean,\n swipeout: Boolean,\n swipeoutOpened: Boolean,\n sortable: {\n type: Boolean,\n default: undefined\n },\n sortableOpposite: {\n type: Boolean,\n default: undefined\n },\n accordionItem: Boolean,\n accordionItemOpened: Boolean,\n smartSelect: Boolean,\n smartSelectParams: Object,\n noChevron: Boolean,\n chevronCenter: Boolean,\n checkbox: Boolean,\n radio: Boolean,\n radioIcon: String,\n checked: Boolean,\n defaultChecked: Boolean,\n indeterminate: Boolean,\n name: String,\n value: [String, Number, Array],\n readonly: Boolean,\n required: Boolean,\n disabled: Boolean,\n virtualListIndex: Number\n }, Mixins.colorProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n isMedia: props.mediaItem || props.mediaList,\n isSortable: props.sortable,\n isSortableOpposite: props.sortableOpposite,\n isSimple: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n let linkEl;\n let itemContentEl;\n const props = self.props;\n const {\n id,\n style,\n className,\n title,\n text,\n media,\n subtitle,\n header,\n footer,\n link,\n tabLink,\n tabLinkActive,\n href,\n target,\n after,\n badge,\n badgeColor,\n mediaItem,\n mediaList,\n divider,\n groupTitle,\n swipeout,\n accordionItem,\n accordionItemOpened,\n smartSelect,\n checkbox,\n radio,\n radioIcon,\n checked,\n defaultChecked,\n indeterminate,\n name,\n value,\n readonly,\n required,\n disabled,\n sortable,\n sortableOpposite,\n noChevron,\n chevronCenter,\n virtualListIndex\n } = props;\n const isMedia = mediaItem || mediaList || self.state.isMedia;\n const isSortable = sortable || self.state.isSortable;\n const isSortableOpposite = isSortable && (sortableOpposite || self.state.isSortableOpposite);\n const isSimple = self.state.isSimple;\n\n if (!isSimple) {\n const needsEvents = !(link || href || accordionItem || smartSelect);\n itemContentEl = _h(F7ListItemContent, {\n on: needsEvents ? {\n click: self.onClick,\n change: self.onChange\n } : undefined,\n attrs: {\n title: title,\n text: text,\n media: media,\n subtitle: subtitle,\n after: after,\n header: header,\n footer: footer,\n badge: badge,\n badgeColor: badgeColor,\n mediaList: isMedia,\n accordionItem: accordionItem,\n checkbox: checkbox,\n checked: checked,\n defaultChecked: defaultChecked,\n indeterminate: indeterminate,\n radio: radio,\n radioIcon: radioIcon,\n name: name,\n value: value,\n readonly: readonly,\n required: required,\n disabled: disabled\n }\n }, [this.$slots['content-start'], this.$slots['content'], this.$slots['content-end'], this.$slots['media'], this.$slots['inner-start'], this.$slots['inner'], this.$slots['inner-end'], this.$slots['after-start'], this.$slots['after'], this.$slots['after-end'], this.$slots['header'], this.$slots['footer'], this.$slots['before-title'], this.$slots['title'], this.$slots['after-title'], this.$slots['subtitle'], this.$slots['text'], swipeout || accordionItem ? null : self.$slots.default, isSortable && sortable !== false && isSortableOpposite && _h('div', {\n class: 'sortable-handler',\n slot: 'content-start'\n })]);\n\n if (link || href || accordionItem || smartSelect) {\n const linkAttrs = Object.assign({\n href: link === true ? '' : link || href,\n target,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink || undefined\n }, Mixins.linkRouterAttrs(props), {}, Mixins.linkActionsAttrs(props));\n const linkClasses = Utils.classNames({\n 'item-link': true,\n 'smart-select': smartSelect,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive\n }, Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n linkEl = _h('a', __vueComponentTransformJSXProps(Object.assign({\n ref: 'linkEl',\n class: linkClasses\n }, linkAttrs)), [itemContentEl]);\n }\n }\n\n const liClasses = Utils.classNames(className, {\n 'item-divider': divider,\n 'list-group-title': groupTitle,\n 'media-item': isMedia,\n swipeout,\n 'accordion-item': accordionItem,\n 'accordion-item-opened': accordionItemOpened,\n disabled: disabled && !(radio || checkbox),\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter,\n 'disallow-sorting': sortable === false\n }, Mixins.colorClasses(props));\n\n if (divider || groupTitle) {\n return _h('li', {\n ref: 'el',\n style: style,\n class: liClasses,\n attrs: {\n id: id,\n 'data-virtual-list-index': virtualListIndex\n }\n }, [_h('span', [this.$slots['default'] || [title]])]);\n }\n\n if (isSimple) {\n return _h('li', {\n ref: 'el',\n style: style,\n class: liClasses,\n attrs: {\n id: id,\n 'data-virtual-list-index': virtualListIndex\n }\n }, [title, this.$slots['default']]);\n }\n\n const linkItemEl = link || href || smartSelect || accordionItem ? linkEl : itemContentEl;\n return _h('li', {\n ref: 'el',\n style: style,\n class: liClasses,\n attrs: {\n id: id,\n 'data-virtual-list-index': virtualListIndex\n }\n }, [this.$slots['root-start'], swipeout ? _h('div', {\n class: 'swipeout-content'\n }, [linkItemEl]) : linkItemEl, isSortable && sortable !== false && !isSortableOpposite && _h('div', {\n class: 'sortable-handler'\n }), (swipeout || accordionItem) && self.$slots.default, this.$slots['root'], this.$slots['root-end']]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n },\n 'props.swipeoutOpened': function watchSwipeoutOpened(opened) {\n const self = this;\n if (!self.props.swipeout) return;\n const el = self.$refs.el;\n\n if (opened) {\n self.$f7.swipeout.open(el);\n } else {\n self.$f7.swipeout.close(el);\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onChange', 'onSwipeoutOpen', 'onSwipeoutOpened', 'onSwipeoutClose', 'onSwipeoutClosed', 'onSwipeoutDelete', 'onSwipeoutDeleted', 'onSwipeoutOverswipeEnter', 'onSwipeoutOverswipeExit', 'onSwipeout', 'onAccBeforeOpen', 'onAccOpen', 'onAccOpened', 'onAccBeforeClose', 'onAccClose', 'onAccClosed']);\n },\n\n mounted() {\n const self = this;\n const {\n el,\n linkEl\n } = self.$refs;\n if (!el) return;\n const {\n link,\n href,\n smartSelect,\n swipeout,\n swipeoutOpened,\n accordionItem,\n smartSelectParams,\n routeProps,\n tooltip,\n tooltipTrigger\n } = self.props;\n const needsEvents = !(link || href || accordionItem || smartSelect);\n\n if (!needsEvents && linkEl) {\n linkEl.addEventListener('click', self.onClick);\n }\n\n if (linkEl && routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n\n self.$listEl = self.$$(el).parents('.list, .list-group').eq(0);\n\n if (self.$listEl.length) {\n self.setState({\n isMedia: self.$listEl.hasClass('media-list'),\n isSimple: self.$listEl.hasClass('simple-list'),\n isSortable: self.$listEl.hasClass('sortable'),\n isSortableOpposite: self.$listEl.hasClass('sortable-opposite')\n });\n }\n\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n\n if (swipeout) {\n f7.on('swipeoutOpen', self.onSwipeoutOpen);\n f7.on('swipeoutOpened', self.onSwipeoutOpened);\n f7.on('swipeoutClose', self.onSwipeoutClose);\n f7.on('swipeoutClosed', self.onSwipeoutClosed);\n f7.on('swipeoutDelete', self.onSwipeoutDelete);\n f7.on('swipeoutDeleted', self.onSwipeoutDeleted);\n f7.on('swipeoutOverswipeEnter', self.onSwipeoutOverswipeEnter);\n f7.on('swipeoutOverswipeExit', self.onSwipeoutOverswipeExit);\n f7.on('swipeout', self.onSwipeout);\n }\n\n if (accordionItem) {\n f7.on('accordionBeforeOpen', self.onAccBeforeOpen);\n f7.on('accordionOpen', self.onAccOpen);\n f7.on('accordionOpened', self.onAccOpened);\n f7.on('accordionBeforeClose', self.onAccBeforeClose);\n f7.on('accordionClose', self.onAccClose);\n f7.on('accordionClosed', self.onAccClosed);\n }\n\n if (smartSelect) {\n const ssParams = Utils.extend({\n el: el.querySelector('a.smart-select')\n }, smartSelectParams || {});\n self.f7SmartSelect = f7.smartSelect.create(ssParams);\n }\n\n if (swipeoutOpened) {\n f7.swipeout.open(el);\n }\n\n if (tooltip) {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n }\n });\n },\n\n updated() {\n const self = this;\n const {\n $listEl\n } = self;\n const {\n linkEl\n } = self.$refs;\n const {\n routeProps\n } = self.props;\n\n if (linkEl && routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n\n if (!$listEl || $listEl && $listEl.length === 0) return;\n const isMedia = $listEl.hasClass('media-list');\n const isSimple = $listEl.hasClass('simple-list');\n const isSortable = $listEl.hasClass('sortable');\n const isSortableOpposite = $listEl.hasClass('sortable-opposite');\n\n if (isMedia !== self.state.isMedia) {\n self.setState({\n isMedia\n });\n }\n\n if (isSimple !== self.state.isSimple) {\n self.setState({\n isSimple\n });\n }\n\n if (isSortable !== self.state.isSortable) {\n self.setState({\n isSortable\n });\n\n if (isSortableOpposite !== self.state.isSortableOpposite) {\n self.setState({\n isSortableOpposite\n });\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n const {\n linkEl\n } = self.$refs;\n const {\n link,\n href,\n smartSelect,\n swipeout,\n accordionItem\n } = self.props;\n const needsEvents = !(link || href || accordionItem || smartSelect);\n\n if (linkEl) {\n if (!needsEvents) {\n linkEl.removeEventListener('click', self.onClick);\n }\n\n delete linkEl.f7RouteProps;\n }\n\n if (self.$f7) {\n const f7 = self.$f7;\n\n if (swipeout) {\n f7.off('swipeoutOpen', self.onSwipeoutOpen);\n f7.off('swipeoutOpened', self.onSwipeoutOpened);\n f7.off('swipeoutClose', self.onSwipeoutClose);\n f7.off('swipeoutClosed', self.onSwipeoutClosed);\n f7.off('swipeoutDelete', self.onSwipeoutDelete);\n f7.off('swipeoutDeleted', self.onSwipeoutDeleted);\n f7.off('swipeoutOverswipeEnter', self.onSwipeoutOverswipeEnter);\n f7.off('swipeoutOverswipeExit', self.onSwipeoutOverswipeExit);\n f7.off('swipeout', self.onSwipeout);\n }\n\n if (accordionItem) {\n f7.off('accordionBeforeOpen', self.onAccBeforeOpen);\n f7.off('accordionOpen', self.onAccOpen);\n f7.off('accordionOpened', self.onAccOpened);\n f7.off('accordionBeforeClose', self.onAccBeforeClose);\n f7.off('accordionClose', self.onAccClose);\n f7.off('accordionClosed', self.onAccClosed);\n }\n }\n\n if (smartSelect && self.f7SmartSelect) {\n self.f7SmartSelect.destroy();\n }\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n const self = this;\n\n if (event.target.tagName.toLowerCase() !== 'input') {\n self.dispatchEvent('click', event);\n }\n },\n\n onSwipeoutOverswipeEnter(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:overswipeenter swipeoutOverswipeEnter');\n },\n\n onSwipeoutOverswipeExit(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:overswipeexit swipeoutOverswipeExit');\n },\n\n onSwipeoutDeleted(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:deleted swipeoutDeleted');\n },\n\n onSwipeoutDelete(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:delete swipeoutDelete');\n },\n\n onSwipeoutClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:close swipeoutClose');\n },\n\n onSwipeoutClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:closed swipeoutClosed');\n },\n\n onSwipeoutOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:open swipeoutOpen');\n },\n\n onSwipeoutOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:opened swipeoutOpened');\n },\n\n onSwipeout(el, progress) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout', progress);\n },\n\n onAccBeforeClose(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:beforeclose accordionBeforeClose', prevent);\n },\n\n onAccClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:close accordionClose');\n },\n\n onAccClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:closed accordionClosed');\n },\n\n onAccBeforeOpen(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:beforeopen accordionBeforeOpen', prevent);\n },\n\n onAccOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:open accordionOpen');\n },\n\n onAccOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:opened accordionOpened');\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n onInput(event) {\n this.dispatchEvent('input', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list',\n props: Object.assign({\n id: [String, Number],\n inset: Boolean,\n xsmallInset: Boolean,\n smallInset: Boolean,\n mediumInset: Boolean,\n largeInset: Boolean,\n xlargeInset: Boolean,\n mediaList: Boolean,\n sortable: Boolean,\n sortableTapHold: Boolean,\n sortableEnabled: Boolean,\n sortableMoveElements: {\n type: Boolean,\n default: undefined\n },\n sortableOpposite: Boolean,\n accordionList: Boolean,\n accordionOpposite: Boolean,\n contactsList: Boolean,\n simpleList: Boolean,\n linksList: Boolean,\n noHairlines: Boolean,\n noHairlinesBetween: Boolean,\n noHairlinesMd: Boolean,\n noHairlinesBetweenMd: Boolean,\n noHairlinesIos: Boolean,\n noHairlinesBetweenIos: Boolean,\n noHairlinesAurora: Boolean,\n noHairlinesBetweenAurora: Boolean,\n noChevron: Boolean,\n chevronCenter: Boolean,\n tab: Boolean,\n tabActive: Boolean,\n form: Boolean,\n formStoreData: Boolean,\n inlineLabels: Boolean,\n virtualList: Boolean,\n virtualListParams: Object\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n form,\n sortableMoveElements\n } = props;\n const {\n list: slotsList,\n default: slotsDefault\n } = self.$slots;\n const rootChildrenBeforeList = [];\n const rootChildrenAfterList = [];\n const ulChildren = slotsList || [];\n const flattenSlots = Utils.flattenArray(slotsDefault);\n let wasUlChild = false;\n flattenSlots.forEach(child => {\n if (typeof child === 'undefined') return;\n let tag;\n {\n tag = child.tag;\n }\n\n if (!tag && 'vue' === 'react' || tag && !(tag === 'li' || tag === 'F7ListItem' || tag === 'F7ListButton' || tag === 'F7ListInput' || tag.indexOf('list-item') >= 0 || tag.indexOf('list-button') >= 0 || tag.indexOf('list-input') >= 0 || tag.indexOf('f7-list-item') >= 0 || tag.indexOf('f7-list-button') >= 0 || tag.indexOf('f7-list-input') >= 0)) {\n if (wasUlChild) rootChildrenAfterList.push(child);else rootChildrenBeforeList.push(child);\n } else if (tag) {\n wasUlChild = true;\n ulChildren.push(child);\n }\n });\n const ListTag = form ? 'form' : 'div';\n\n if (ulChildren.length > 0) {\n return _h(ListTag, {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id,\n 'data-sortable-move-elements': typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined\n }\n }, [self.$slots['before-list'], rootChildrenBeforeList, _h('ul', [ulChildren]), self.$slots['after-list'], rootChildrenAfterList]);\n } else {\n return _h(ListTag, {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id,\n 'data-sortable-move-elements': typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined\n }\n }, [self.$slots['before-list'], rootChildrenBeforeList, self.$slots['after-list'], rootChildrenAfterList]);\n }\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n inset,\n xsmallInset,\n smallInset,\n mediumInset,\n largeInset,\n xlargeInset,\n mediaList,\n simpleList,\n linksList,\n sortable,\n sortableTapHold,\n sortableEnabled,\n sortableOpposite,\n accordionList,\n accordionOpposite,\n contactsList,\n virtualList,\n tab,\n tabActive,\n noHairlines,\n noHairlinesIos,\n noHairlinesMd,\n noHairlinesAurora,\n noHairlinesBetween,\n noHairlinesBetweenIos,\n noHairlinesBetweenMd,\n noHairlinesBetweenAurora,\n formStoreData,\n inlineLabels,\n className,\n noChevron,\n chevronCenter\n } = props;\n return Utils.classNames(className, 'list', {\n inset,\n 'xsmall-inset': xsmallInset,\n 'small-inset': smallInset,\n 'medium-inset': mediumInset,\n 'large-inset': largeInset,\n 'xlarge-inset': xlargeInset,\n 'media-list': mediaList,\n 'simple-list': simpleList,\n 'links-list': linksList,\n sortable,\n 'sortable-tap-hold': sortableTapHold,\n 'sortable-enabled': sortableEnabled,\n 'sortable-opposite': sortableOpposite,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n 'contacts-list': contactsList,\n 'virtual-list': virtualList,\n tab,\n 'tab-active': tabActive,\n 'no-hairlines': noHairlines,\n 'no-hairlines-md': noHairlinesMd,\n 'no-hairlines-ios': noHairlinesIos,\n 'no-hairlines-aurora': noHairlinesAurora,\n 'no-hairlines-between': noHairlinesBetween,\n 'no-hairlines-between-md': noHairlinesBetweenMd,\n 'no-hairlines-between-ios': noHairlinesBetweenIos,\n 'no-hairlines-between-aurora': noHairlinesBetweenAurora,\n 'form-store-data': formStoreData,\n 'inline-labels': inlineLabels,\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onSortableEnable', 'onSortableDisable', 'onSortableSort', 'onTabShow', 'onTabHide', 'onSubmit']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const {\n virtualList,\n virtualListParams,\n form\n } = self.props;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n f7.on('sortableEnable', self.onSortableEnable);\n f7.on('sortableDisable', self.onSortableDisable);\n f7.on('sortableSort', self.onSortableSort);\n f7.on('tabShow', self.onTabShow);\n f7.on('tabHide', self.onTabHide);\n\n if (form) {\n el.addEventListener('submit', self.onSubmit);\n }\n\n if (!virtualList) return;\n const vlParams = virtualListParams || {};\n if (!vlParams.renderItem && !vlParams.itemTemplate && !vlParams.renderExternal) return;\n self.f7VirtualList = f7.virtualList.create(Utils.extend({\n el,\n on: {\n itemBeforeInsert(itemEl, item) {\n const vl = this;\n self.dispatchEvent('virtual:itembeforeinsert virtualItemBeforeInsert', vl, itemEl, item);\n },\n\n beforeClear(fragment) {\n const vl = this;\n self.dispatchEvent('virtual:beforeclear virtualBeforeClear', vl, fragment);\n },\n\n itemsBeforeInsert(fragment) {\n const vl = this;\n self.dispatchEvent('virtual:itemsbeforeinsert virtualItemsBeforeInsert', vl, fragment);\n },\n\n itemsAfterInsert(fragment) {\n const vl = this;\n self.dispatchEvent('virtual:itemsafterinsert virtualItemsAfterInsert', vl, fragment);\n }\n\n }\n }, vlParams));\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n const f7 = self.$f7;\n if (!el || !f7) return;\n f7.off('sortableEnable', self.onSortableEnable);\n f7.off('sortableDisable', self.onSortableDisable);\n f7.off('sortableSort', self.onSortableSort);\n f7.off('tabShow', self.onTabShow);\n f7.off('tabHide', self.onTabHide);\n el.removeEventListener('submit', self.onSubmit);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n if (!(self.virtualList && self.f7VirtualList)) return;\n if (self.f7VirtualList.destroy) self.f7VirtualList.destroy();\n },\n\n methods: {\n onSubmit(event) {\n this.dispatchEvent('submit', event);\n },\n\n onSortableEnable(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('sortable:enable sortableEnable');\n },\n\n onSortableDisable(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('sortable:disable sortableDisable');\n },\n\n onSortableSort(el, sortData, listEl) {\n if (this.eventTargetEl !== listEl) return;\n this.dispatchEvent('sortable:sort sortableSort', sortData);\n },\n\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:show tabShow', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:hide tabHide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-login-screen-title',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'login-screen-title', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-login-screen',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'login-screen', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7LoginScreen) return;\n\n if (opened) {\n self.f7LoginScreen.open();\n } else {\n self.f7LoginScreen.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.$f7ready(() => {\n self.f7LoginScreen = self.$f7.loginScreen.create({\n el,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n });\n\n if (self.props.opened) {\n self.f7LoginScreen.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7LoginScreen) self.f7LoginScreen.destroy();\n },\n\n methods: {\n onOpen(instance) {\n this.dispatchEvent('loginscreen:open loginScreenOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('loginscreen:opened loginScreenOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('loginscreen:close loginScreenClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('loginscreen:closed loginScreenClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7LoginScreen) return undefined;\n return self.f7LoginScreen.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7LoginScreen) return undefined;\n return self.f7LoginScreen.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu-dropdown-item',\n props: Object.assign({\n id: [String, Number],\n text: String,\n link: Boolean,\n href: String,\n target: String,\n divider: Boolean\n }, Mixins.colorProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n link,\n href,\n text,\n divider,\n menuClose\n } = props;\n const isLink = link || href || href === '';\n const Tag = isLink ? 'a' : 'div';\n const classes = Utils.classNames({\n 'menu-dropdown-link': isLink && !divider,\n 'menu-dropdown-item': !isLink && !divider,\n 'menu-dropdown-divider': divider\n }, className, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props), {\n 'menu-close': typeof menuClose === 'undefined'\n });\n return _h(Tag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n class: classes,\n style: style\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [text, this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n el.addEventListener('click', self.onClick);\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n el.removeEventListener('click', self.onClick);\n delete el.f7RouteProps;\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n link,\n href,\n target\n } = props;\n let hrefComputed = href;\n if (typeof hrefComputed === 'undefined' && link) hrefComputed = '#';\n return Utils.extend({\n href: hrefComputed,\n target\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu-dropdown',\n props: Object.assign({\n id: [String, Number],\n contentHeight: String,\n position: String,\n left: Boolean,\n center: Boolean,\n right: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n contentHeight,\n position,\n left,\n center,\n right\n } = props;\n let positionComputed = position || 'left';\n if (left) positionComputed = 'left';\n if (center) positionComputed = 'center';\n if (right) positionComputed = 'right';\n const classes = Utils.classNames('menu-dropdown', `menu-dropdown-${positionComputed}`, Mixins.colorClasses(props), className);\n return _h('div', {\n class: classes,\n style: style,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'menu-dropdown-content',\n style: {\n height: contentHeight\n }\n }, [this.$slots['default']])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu-item',\n props: Object.assign({\n id: [String, Number],\n text: String,\n iconOnly: Boolean,\n href: String,\n link: Boolean,\n target: String,\n dropdown: Boolean\n }, Mixins.colorProps, {}, Mixins.linkIconProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n link,\n href,\n text,\n dropdown,\n iconOnly,\n icon,\n iconColor,\n iconSize,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora\n } = props;\n const slots = self.$slots;\n let iconEl;\n let iconOnlyComputed;\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n if (iconOnly || !text && slots.text && slots.text.length === 0 || !text && !slots.text) {\n iconOnlyComputed = true;\n } else {\n iconOnlyComputed = false;\n }\n\n const isLink = link || href || href === '';\n const Tag = isLink ? 'a' : 'div';\n const isDropdown = dropdown || dropdown === '';\n const classes = Utils.classNames({\n 'menu-item': true,\n 'menu-item-dropdown': isDropdown,\n 'icon-only': iconOnlyComputed\n }, className, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n return _h(Tag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n class: classes,\n style: style\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [(text || slots.text && slots.text.length || iconEl) && _h('div', {\n class: 'menu-item-content'\n }, [text, iconEl, this.$slots['text']]), this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onOpened', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n el.addEventListener('click', self.onClick);\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n self.$f7ready(f7 => {\n f7.on('menuOpened', self.onOpened);\n f7.on('menuClosed', self.onClosed);\n });\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n el.removeEventListener('click', self.onClick);\n self.$f7.off('menuOpened', self.onOpened);\n self.$f7.off('menuClosed', self.onOpened);\n self.eventTargetEl = null;\n delete el.f7RouteProps;\n delete self.eventTargetEl;\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n href,\n link,\n target\n } = props;\n let hrefComputed = href;\n if (typeof hrefComputed === 'undefined' && link) hrefComputed = '#';\n return Utils.extend({\n href: hrefComputed,\n target\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(e) {\n this.dispatchEvent('click', e);\n },\n\n onOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('menuOpened menu:opened', el);\n },\n\n onClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('menuClosed menu:closed', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style\n } = props;\n return _h('div', {\n class: Utils.classNames('menu', Mixins.colorClasses(props), className),\n style: style,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'menu-inner'\n }, [this.$slots['default']])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-message',\n props: Object.assign({\n id: [String, Number],\n text: String,\n name: String,\n avatar: String,\n type: {\n type: String,\n default: 'sent'\n },\n image: String,\n header: String,\n footer: String,\n textHeader: String,\n textFooter: String,\n first: Boolean,\n last: Boolean,\n tail: Boolean,\n sameName: Boolean,\n sameHeader: Boolean,\n sameFooter: Boolean,\n sameAvatar: Boolean,\n typing: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n text,\n name,\n avatar,\n image,\n header,\n footer,\n textHeader,\n textFooter,\n typing,\n id,\n style\n } = props;\n const {\n start: slotsStart,\n end: slotsEnd,\n default: slotsDefault,\n 'content-start': slotsContentStart,\n 'content-end': slotsContentEnd,\n avatar: slotsAvatar,\n name: slotsName,\n header: slotsHeader,\n footer: slotsFooter,\n image: slotsImage,\n text: slotsText,\n 'text-header': slotsTextHeader,\n 'text-footer': slotsTextFooter,\n 'bubble-start': slotsBubbleStart,\n 'bubble-end': slotsBubbleEnd\n } = self.$slots;\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [slotsStart, (avatar || slotsAvatar) && _h('div', {\n ref: 'avatarEl',\n class: 'message-avatar',\n style: {\n backgroundImage: avatar && `url(${avatar})`\n }\n }, [slotsAvatar]), _h('div', {\n class: 'message-content'\n }, [slotsContentStart, (slotsName || name) && _h('div', {\n ref: 'nameEl',\n class: 'message-name'\n }, [slotsName || name]), (slotsHeader || header) && _h('div', {\n ref: 'headerEl',\n class: 'message-header'\n }, [slotsHeader || header]), _h('div', {\n ref: 'bubbleEl',\n class: 'message-bubble'\n }, [slotsBubbleStart, (slotsImage || image) && _h('div', {\n class: 'message-image'\n }, [slotsImage || _h('img', {\n attrs: {\n src: image\n }\n })]), (slotsTextHeader || textHeader) && _h('div', {\n class: 'message-text-header'\n }, [slotsTextHeader || textHeader]), (slotsText || text || typing) && _h('div', {\n ref: 'textEl',\n class: 'message-text'\n }, [slotsText || text, typing && _h('div', {\n class: 'message-typing-indicator'\n }, [_h('div'), _h('div'), _h('div')])]), (slotsTextFooter || textFooter) && _h('div', {\n class: 'message-text-footer'\n }, [slotsTextFooter || textFooter]), slotsBubbleEnd, slotsDefault]), (slotsFooter || footer) && _h('div', {\n ref: 'footerEl',\n class: 'message-footer'\n }, [slotsFooter || footer]), slotsContentEnd]), slotsEnd]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n type,\n typing,\n first,\n last,\n tail,\n sameName,\n sameHeader,\n sameFooter,\n sameAvatar,\n className\n } = props;\n return Utils.classNames(className, 'message', {\n 'message-sent': type === 'sent',\n 'message-received': type === 'received',\n 'message-typing': typing,\n 'message-first': first,\n 'message-last': last,\n 'message-tail': tail,\n 'message-same-name': sameName,\n 'message-same-header': sameHeader,\n 'message-same-footer': sameFooter,\n 'message-same-avatar': sameAvatar\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onNameClick', 'onTextClick', 'onAvatarClick', 'onHeaderClick', 'onFooterClick', 'onBubbleClick']);\n },\n\n mounted() {\n const {\n el,\n nameEl,\n textEl,\n avatarEl,\n headerEl,\n footerEl,\n bubbleEl\n } = this.$refs;\n el.addEventListener('click', this.onClick);\n if (nameEl) nameEl.addEventListener('click', this.onNameClick);\n if (textEl) textEl.addEventListener('click', this.onTextClick);\n if (avatarEl) avatarEl.addEventListener('click', this.onAvatarClick);\n if (headerEl) headerEl.addEventListener('click', this.onHeaderClick);\n if (footerEl) footerEl.addEventListener('click', this.onFooterClick);\n if (bubbleEl) bubbleEl.addEventListener('click', this.onBubbleClick);\n },\n\n beforeDestroy() {\n const {\n el,\n nameEl,\n textEl,\n avatarEl,\n headerEl,\n footerEl,\n bubbleEl\n } = this.$refs;\n el.removeEventListener('click', this.onClick);\n if (nameEl) nameEl.removeEventListener('click', this.onNameClick);\n if (textEl) textEl.removeEventListener('click', this.onTextClick);\n if (avatarEl) avatarEl.removeEventListener('click', this.onAvatarClick);\n if (headerEl) headerEl.removeEventListener('click', this.onHeaderClick);\n if (footerEl) footerEl.removeEventListener('click', this.onFooterClick);\n if (bubbleEl) bubbleEl.removeEventListener('click', this.onBubbleClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onNameClick(event) {\n this.dispatchEvent('click:name clickName', event);\n },\n\n onTextClick(event) {\n this.dispatchEvent('click:text clickText', event);\n },\n\n onAvatarClick(event) {\n this.dispatchEvent('click:avatar clickAvatar', event);\n },\n\n onHeaderClick(event) {\n this.dispatchEvent('click:header clickHeader', event);\n },\n\n onFooterClick(event) {\n this.dispatchEvent('click:footer clickFooter', event);\n },\n\n onBubbleClick(event) {\n this.dispatchEvent('click:bubble clickBubble', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-attachment',\n props: Object.assign({\n id: [String, Number],\n image: String,\n deletable: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n deletable,\n image,\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-attachment', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [image && _h('img', {\n attrs: {\n src: image\n }\n }), deletable && _h('span', {\n ref: 'deleteEl',\n class: 'messagebar-attachment-delete'\n }), this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onDeleteClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n\n if (this.$refs.deleteEl) {\n this.$refs.deleteEl.addEventListener('click', this.onDeleteClick);\n }\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n\n if (this.$refs.deleteEl) {\n this.$refs.deleteEl.removeEventListener('click', this.onDeleteClick);\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('attachment:click attachmentClick', event);\n },\n\n onDeleteClick(event) {\n this.dispatchEvent('attachment:delete attachmentDelete', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-attachments',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-attachments', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-sheet-image',\n props: Object.assign({\n id: [String, Number],\n image: String,\n checked: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n image,\n checked,\n id,\n className,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-sheet-image', 'checkbox', Mixins.colorClasses(props));\n const styles = Utils.extend({\n backgroundImage: image && `url(${image})`\n }, style || {});\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'checkbox'\n }\n });\n }\n return _h('label', {\n class: classes,\n style: styles,\n attrs: {\n id: id\n }\n }, [inputEl, _h('i', {\n class: 'icon icon-checkbox'\n }), this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n methods: {\n onChange(event) {\n if (this.props.checked) this.dispatchEvent('checked', event);else this.dispatchEvent('unchecked', event);\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-sheet-item',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-sheet-item', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-sheet',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-sheet', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Input from './input';\nimport F7Link from './link';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar',\n props: Object.assign({\n id: [String, Number],\n sheetVisible: Boolean,\n attachmentsVisible: Boolean,\n top: Boolean,\n resizable: {\n type: Boolean,\n default: true\n },\n bottomOffset: {\n type: Number,\n default: 0\n },\n topOffset: {\n type: Number,\n default: 0\n },\n maxHeight: Number,\n resizePage: {\n type: Boolean,\n default: true\n },\n sendLink: String,\n value: [String, Number, Array],\n disabled: Boolean,\n readonly: Boolean,\n textareaId: [Number, String],\n name: String,\n placeholder: {\n type: String,\n default: 'Message'\n },\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n created() {\n Utils.bindMethods(this, ['onChange', 'onInput', 'onFocus', 'onBlur', 'onClick', 'onAttachmentDelete', 'onAttachmentClick,', 'onResizePage']);\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const {\n placeholder,\n disabled,\n name,\n readonly,\n resizable,\n value,\n sendLink,\n id,\n style\n } = self.props;\n const {\n default: slotsDefault,\n 'before-inner': slotsBeforeInner,\n 'after-inner': slotsAfterInner,\n 'send-link': slotsSendLink,\n 'inner-start': slotsInnerStart,\n 'inner-end': slotsInnerEnd,\n 'before-area': slotsBeforeArea,\n 'after-area': slotsAfterArea\n } = self.$slots;\n const innerEndEls = [];\n let messagebarAttachmentsEl;\n let messagebarSheetEl;\n\n if (slotsDefault) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let tag;\n tag = child.tag;\n\n if (tag && (tag.indexOf('messagebar-attachments') >= 0 || tag === 'F7MessagebarAttachments' || tag === 'f7-messagebar-attachments')) {\n messagebarAttachmentsEl = child;\n } else if (tag && (tag.indexOf('messagebar-sheet') >= 0 || tag === 'F7MessagebarSheet' || tag === 'f7-messagebar-sheet')) {\n messagebarSheetEl = child;\n } else {\n innerEndEls.push(child);\n }\n });\n }\n\n const valueProps = {};\n if ('value' in self.props) valueProps.value = value;\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [slotsBeforeInner, _h('div', {\n class: 'toolbar-inner'\n }, [slotsInnerStart, _h('div', {\n class: 'messagebar-area'\n }, [slotsBeforeArea, messagebarAttachmentsEl, _h(F7Input, __vueComponentTransformJSXProps(Object.assign({\n ref: 'area'\n }, valueProps, {\n on: {\n input: self.onInput,\n change: self.onChange,\n focus: self.onFocus,\n blur: self.onBlur\n },\n attrs: {\n type: 'textarea',\n wrap: false,\n placeholder: placeholder,\n disabled: disabled,\n name: name,\n readonly: readonly,\n resizable: resizable\n }\n }))), slotsAfterArea]), (sendLink && sendLink.length > 0 || slotsSendLink) && _h(F7Link, {\n on: {\n click: self.onClick\n }\n }, [slotsSendLink || sendLink]), slotsInnerEnd, innerEndEls]), slotsAfterInner, messagebarSheetEl]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n attachmentsVisible,\n sheetVisible\n } = props;\n return Utils.classNames(className, 'toolbar', 'messagebar', {\n 'messagebar-attachments-visible': attachmentsVisible,\n 'messagebar-sheet-visible': sheetVisible\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n watch: {\n 'props.sheetVisible': function watchSheetVisible() {\n const self = this;\n if (!self.props.resizable || !self.f7Messagebar) return;\n self.updateSheetVisible = true;\n },\n 'props.attachmentsVisible': function watchAttachmentsVisible() {\n const self = this;\n if (!self.props.resizable || !self.f7Messagebar) return;\n self.updateAttachmentsVisible = true;\n }\n },\n\n mounted() {\n const self = this;\n const {\n init,\n top,\n resizePage,\n bottomOffset,\n topOffset,\n maxHeight\n } = self.props;\n if (!init) return;\n const el = self.$refs.el;\n if (!el) return;\n const params = Utils.noUndefinedProps({\n el,\n top,\n resizePage,\n bottomOffset,\n topOffset,\n maxHeight,\n on: {\n attachmentDelete: self.onAttachmentDelete,\n attachmentClick: self.onAttachmentClick,\n resizePage: self.onResizePage\n }\n });\n self.$f7ready(() => {\n self.f7Messagebar = self.$f7.messagebar.create(params);\n });\n },\n\n updated() {\n const self = this;\n if (!self.f7Messagebar) return;\n const {\n sheetVisible,\n attachmentsVisible\n } = self.props;\n\n if (self.updateSheetVisible) {\n self.updateSheetVisible = false;\n self.f7Messagebar.sheetVisible = sheetVisible;\n self.f7Messagebar.resizePage();\n }\n\n if (self.updateAttachmentsVisible) {\n self.updateAttachmentsVisible = false;\n self.f7Messagebar.attachmentsVisible = attachmentsVisible;\n self.f7Messagebar.resizePage();\n }\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Messagebar && self.f7Messagebar.destroy) self.f7Messagebar.destroy();\n },\n\n methods: {\n clear(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.clear(...args);\n },\n\n getValue(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.getValue(...args);\n },\n\n setValue(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.setValue(...args);\n },\n\n setPlaceholder(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.setPlaceholder(...args);\n },\n\n resize(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.resizePage(...args);\n },\n\n focus(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.focus(...args);\n },\n\n blur(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.blur(...args);\n },\n\n attachmentsShow(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.attachmentsShow(...args);\n },\n\n attachmentsHide(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.attachmentsHide(...args);\n },\n\n attachmentsToggle(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.attachmentsToggle(...args);\n },\n\n sheetShow(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.sheetShow(...args);\n },\n\n sheetHide(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.sheetHide(...args);\n },\n\n sheetToggle(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.sheetToggle(...args);\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n onInput(event) {\n this.dispatchEvent('input', event);\n },\n\n onFocus(event) {\n this.dispatchEvent('focus', event);\n },\n\n onBlur(event) {\n this.dispatchEvent('blur', event);\n },\n\n onClick(event) {\n const self = this;\n let value;\n {\n value = self.$refs.area.$refs.inputEl.value;\n }\n const clear = self.f7Messagebar ? () => {\n self.f7Messagebar.clear();\n } : () => {};\n this.dispatchEvent('submit', value, clear);\n this.dispatchEvent('send', value, clear);\n this.dispatchEvent('click', event);\n },\n\n onAttachmentDelete(instance, attachmentEl, attachmentElIndex) {\n this.dispatchEvent('messagebar:attachmentdelete messagebarAttachmentDelete', instance, attachmentEl, attachmentElIndex);\n },\n\n onAttachmentClick(instance, attachmentEl, attachmentElIndex) {\n this.dispatchEvent('messagebar:attachmentclick messagebarAttachmentClick', instance, attachmentEl, attachmentElIndex);\n },\n\n onResizePage(instance) {\n this.dispatchEvent('messagebar:resizepage messagebarResizePage', instance);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messages-title',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messages-title', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messages',\n props: Object.assign({\n id: [String, Number],\n autoLayout: {\n type: Boolean,\n default: false\n },\n messages: {\n type: Array,\n\n default() {\n return [];\n }\n\n },\n newMessagesFirst: {\n type: Boolean,\n default: false\n },\n scrollMessages: {\n type: Boolean,\n default: true\n },\n scrollMessagesOnEdge: {\n type: Boolean,\n default: true\n },\n firstMessageRule: Function,\n lastMessageRule: Function,\n tailMessageRule: Function,\n sameNameMessageRule: Function,\n sameHeaderMessageRule: Function,\n sameFooterMessageRule: Function,\n sameAvatarMessageRule: Function,\n customClassMessageRule: Function,\n renderMessage: Function,\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n const classes = Utils.classNames(className, 'messages', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n beforeUpdate() {\n const self = this;\n if (!self.props.init) return;\n const el = self.$refs.el;\n if (!el) return;\n const children = el.children;\n if (!children) return;\n\n for (let i = 0; i < children.length; i += 1) {\n children[i].classList.add('message-appeared');\n }\n },\n\n updated() {\n const self = this;\n const {\n init,\n autoLayout,\n scrollMessages\n } = self.props;\n if (!init) return;\n const el = self.$refs.el;\n if (!el) return;\n const children = el.children;\n if (!children) return;\n\n for (let i = 0; i < children.length; i += 1) {\n if (!children[i].classList.contains('message-appeared')) {\n children[i].classList.add('message-appear-from-bottom');\n }\n }\n\n if (self.f7Messages && self.f7Messages.layout && autoLayout) {\n self.f7Messages.layout();\n }\n\n if (self.f7Messages && self.f7Messages.scroll && scrollMessages) {\n self.f7Messages.scroll();\n }\n },\n\n mounted() {\n const self = this;\n const {\n init,\n autoLayout,\n messages,\n newMessagesFirst,\n scrollMessages,\n scrollMessagesOnEdge,\n firstMessageRule,\n lastMessageRule,\n tailMessageRule,\n sameNameMessageRule,\n sameHeaderMessageRule,\n sameFooterMessageRule,\n sameAvatarMessageRule,\n customClassMessageRule,\n renderMessage\n } = self.props;\n if (!init) return;\n self.$f7ready(f7 => {\n self.f7Messages = f7.messages.create(Utils.noUndefinedProps({\n el: self.$refs.el,\n autoLayout,\n messages,\n newMessagesFirst,\n scrollMessages,\n scrollMessagesOnEdge,\n firstMessageRule,\n lastMessageRule,\n tailMessageRule,\n sameNameMessageRule,\n sameHeaderMessageRule,\n sameFooterMessageRule,\n sameAvatarMessageRule,\n customClassMessageRule,\n renderMessage\n }));\n });\n },\n\n beforeDestroy() {\n if (this.f7Messages && this.f7Messages.destroy) this.f7Messages.destroy();\n },\n\n methods: {\n renderMessages(messagesToRender, method) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.renderMessages(messagesToRender, method);\n },\n\n layout() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.layout();\n },\n\n scroll(duration, scrollTop) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.scroll(duration, scrollTop);\n },\n\n clear() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.clear();\n },\n\n removeMessage(messageToRemove, layout) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.removeMessage(messageToRemove, layout);\n },\n\n removeMessages(messagesToRemove, layout) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.removeMessages(messagesToRemove, layout);\n },\n\n addMessage(...args) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.addMessage(...args);\n },\n\n addMessages(...args) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.addMessages(...args);\n },\n\n showTyping(message) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.showTyping(message);\n },\n\n hideTyping() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.hideTyping();\n },\n\n destroy() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.destroy();\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Link from './link';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-left',\n props: Object.assign({\n id: [String, Number],\n backLink: [Boolean, String],\n backLinkUrl: String,\n backLinkForce: Boolean,\n backLinkShowText: {\n type: Boolean,\n default: undefined\n },\n sliding: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n backLink,\n backLinkUrl,\n backLinkForce,\n backLinkShowText,\n sliding,\n className,\n style,\n id\n } = props;\n let linkEl;\n let needBackLinkText = backLinkShowText;\n if (typeof needBackLinkText === 'undefined') needBackLinkText = !this.$theme.md;\n\n if (backLink) {\n const text = backLink !== true && needBackLinkText ? backLink : undefined;\n linkEl = _h(F7Link, {\n class: !text ? 'icon-only' : undefined,\n on: {\n click: this.onBackClick\n },\n attrs: {\n href: backLinkUrl || '#',\n back: true,\n icon: 'icon-back',\n force: backLinkForce || undefined,\n text: text\n }\n });\n }\n\n const classes = Utils.classNames(className, 'left', {\n sliding\n }, Mixins.colorClasses(props));\n const children = [];\n const slots = this.$slots;\n\n if (slots && Object.keys(slots).length) {\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [linkEl, children]);\n },\n\n created() {\n Utils.bindMethods(this, ['onBackClick']);\n },\n\n methods: {\n onBackClick(event) {\n this.dispatchEvent('back-click backClick click:back clickBack', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-right',\n props: Object.assign({\n id: [String, Number],\n sliding: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n sliding\n } = props;\n const classes = Utils.classNames(className, 'right', {\n sliding\n }, Mixins.colorClasses(props));\n const children = [];\n const slots = this.$slots;\n\n if (slots && Object.keys(slots).length) {\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [children]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-title',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n const classes = Utils.classNames(className, 'title-large', Mixins.colorClasses(props));\n const children = [];\n const slots = self.$slots;\n\n if (slots && Object.keys(slots).length) {\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'title-large-text'\n }, [children])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-title',\n props: Object.assign({\n id: [String, Number],\n title: String,\n subtitle: String,\n sliding: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n title,\n subtitle,\n id,\n style,\n sliding,\n className\n } = props;\n let subtitleEl;\n\n if (subtitle) {\n subtitleEl = _h('span', {\n class: 'subtitle'\n }, [subtitle]);\n }\n\n const classes = Utils.classNames(className, 'title', {\n sliding\n }, Mixins.colorClasses(props));\n let children;\n const slots = self.$slots;\n\n if (slots && Object.keys(slots).length) {\n children = [];\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [children, !children && title, !children && subtitleEl]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7NavLeft from './nav-left';\nimport F7NavTitle from './nav-title';\nimport F7NavRight from './nav-right';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-navbar',\n props: Object.assign({\n id: [String, Number],\n backLink: [Boolean, String],\n backLinkUrl: String,\n backLinkForce: Boolean,\n backLinkShowText: {\n type: Boolean,\n default: undefined\n },\n sliding: {\n type: Boolean,\n default: true\n },\n title: String,\n subtitle: String,\n hidden: Boolean,\n noShadow: Boolean,\n noHairline: Boolean,\n innerClass: String,\n innerClassName: String,\n large: Boolean,\n largeTransparent: Boolean,\n transparent: Boolean,\n titleLarge: String\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null,\n routerPositionClass: '',\n largeCollapsed: false,\n routerNavbarRole: null,\n routerNavbarRoleDetailRoot: false,\n routerNavbarMasterStack: false,\n transparentVisible: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n backLink,\n backLinkUrl,\n backLinkForce,\n backLinkShowText,\n sliding,\n title,\n subtitle,\n innerClass,\n innerClassName,\n className,\n id,\n style,\n hidden,\n noShadow,\n noHairline,\n large,\n largeTransparent,\n transparent,\n titleLarge\n } = props;\n const {\n _theme: theme,\n routerPositionClass,\n largeCollapsed,\n transparentVisible\n } = self.state;\n let leftEl;\n let titleEl;\n let rightEl;\n let titleLargeEl;\n const addLeftTitleClass = theme && theme.ios && self.$f7 && !self.$f7.params.navbar.iosCenterTitle;\n const addCenterTitleClass = theme && theme.md && self.$f7 && self.$f7.params.navbar.mdCenterTitle || theme && theme.aurora && self.$f7 && self.$f7.params.navbar.auroraCenterTitle;\n const slots = self.$slots;\n const isLarge = large || largeTransparent;\n const isTransparent = transparent || isLarge && largeTransparent;\n const isTransparentVisible = isTransparent && transparentVisible;\n const classes = Utils.classNames(className, 'navbar', routerPositionClass && routerPositionClass, {\n 'navbar-hidden': hidden,\n 'navbar-large': isLarge,\n 'navbar-large-collapsed': isLarge && largeCollapsed,\n 'navbar-transparent': isTransparent,\n 'navbar-transparent-visible': isTransparentVisible,\n 'navbar-master': this.state.routerNavbarRole === 'master',\n 'navbar-master-detail': this.state.routerNavbarRole === 'detail',\n 'navbar-master-detail-root': this.state.routerNavbarRoleDetailRoot === true,\n 'navbar-master-stacked': this.state.routerNavbarMasterStack === true,\n 'no-shadow': noShadow,\n 'no-hairline': noHairline\n }, Mixins.colorClasses(props));\n\n if (backLink || slots['nav-left'] || slots.left) {\n leftEl = _h(F7NavLeft, {\n on: {\n backClick: self.onBackClick\n },\n attrs: {\n backLink: backLink,\n backLinkUrl: backLinkUrl,\n backLinkForce: backLinkForce,\n backLinkShowText: backLinkShowText\n }\n }, [slots['nav-left'], slots.left]);\n }\n\n if (title || subtitle || slots.title) {\n titleEl = _h(F7NavTitle, {\n attrs: {\n title: title,\n subtitle: subtitle\n }\n }, [slots.title]);\n }\n\n if (slots['nav-right'] || slots.right) {\n rightEl = _h(F7NavRight, [slots['nav-right'], slots.right]);\n }\n\n let largeTitle = titleLarge;\n if (!largeTitle && large && title) largeTitle = title;\n\n if (largeTitle || slots['title-large']) {\n titleLargeEl = _h('div', {\n class: 'title-large'\n }, [_h('div', {\n class: 'title-large-text'\n }, [largeTitle || '', this.$slots['title-large']])]);\n }\n\n const innerEl = _h('div', {\n class: Utils.classNames('navbar-inner', innerClass, innerClassName, {\n sliding,\n 'navbar-inner-left-title': addLeftTitleClass,\n 'navbar-inner-centered-title': addCenterTitleClass\n })\n }, [leftEl, titleEl, rightEl, titleLargeEl, this.$slots['default']]);\n\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'navbar-bg'\n }), this.$slots['before-inner'], innerEl, this.$slots['after-inner']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onBackClick', 'onHide', 'onShow', 'onExpand', 'onCollapse', 'onNavbarPosition', 'onNavbarRole', 'onNavbarMasterStack', 'onNavbarMasterUnstack', 'onTransparentHide', 'onTransparentShow']);\n },\n\n mounted() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el) return;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n f7.on('navbarShow', self.onShow);\n f7.on('navbarHide', self.onHide);\n f7.on('navbarCollapse', self.onCollapse);\n f7.on('navbarExpand', self.onExpand);\n f7.on('navbarPosition', self.onNavbarPosition);\n f7.on('navbarRole', self.onNavbarRole);\n f7.on('navbarMasterStack', self.onNavbarMasterStack);\n f7.on('navbarMasterUnstack', self.onNavbarMasterUnstack);\n f7.on('navbarTransparentShow', self.onNavbarTransparentShow);\n f7.on('navbarTransparentHide', self.onNavbarTransparentHide);\n });\n },\n\n updated() {\n const self = this;\n if (!self.$f7) return;\n const el = self.$refs.el;\n self.$f7.navbar.size(el);\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el || !self.$f7) return;\n const f7 = self.$f7;\n f7.off('navbarShow', self.onShow);\n f7.off('navbarHide', self.onHide);\n f7.off('navbarCollapse', self.onCollapse);\n f7.off('navbarExpand', self.onExpand);\n f7.off('navbarPosition', self.onNavbarPosition);\n f7.off('navbarRole', self.onNavbarRole);\n f7.off('navbarMasterStack', self.onNavbarMasterStack);\n f7.off('navbarMasterUnstack', self.onNavbarMasterUnstack);\n f7.off('navbarTransparentShow', self.onNavbarTransparentShow);\n f7.off('navbarTransparentHide', self.onNavbarTransparentHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onHide(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('navbar:hide navbarHide');\n },\n\n onShow(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('navbar:show navbarShow');\n },\n\n onExpand(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n largeCollapsed: false\n });\n this.dispatchEvent('navbar:expand navbarExpand');\n },\n\n onCollapse(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n largeCollapsed: true\n });\n this.dispatchEvent('navbar:collapse navbarCollapse');\n },\n\n onNavbarTransparentShow(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n transparentVisible: true\n });\n this.dispatchEvent('navbar:transparentshow navbarTransparentShow');\n },\n\n onNavbarTransparentHide(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n transparentVisible: false\n });\n this.dispatchEvent('navbar:transparenthide navbarTransparentHide');\n },\n\n onNavbarPosition(navbarEl, position) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerPositionClass: position ? `navbar-${position}` : ''\n });\n },\n\n onNavbarRole(navbarEl, rolesData) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerNavbarRole: rolesData.role,\n routerNavbarRoleDetailRoot: rolesData.detailRoot\n });\n },\n\n onNavbarMasterStack(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerNavbarMasterStack: true\n });\n },\n\n onNavbarMasterUnstack(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerNavbarMasterStack: false\n });\n },\n\n hide(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.navbar.hide(self.$refs.el, animate);\n },\n\n show(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.navbar.show(self.$refs.el, animate);\n },\n\n size() {\n const self = this;\n if (!self.$f7) return;\n self.$f7.navbar.size(self.$refs.el);\n },\n\n onBackClick(event) {\n this.dispatchEvent('back-click backClick click:back clickBack', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-preloader',\n props: Object.assign({\n id: [String, Number],\n size: [Number, String]\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const {\n sizeComputed,\n props\n } = self;\n const {\n id,\n style,\n className\n } = props;\n const theme = self.state._theme;\n const preloaderStyle = {};\n\n if (sizeComputed) {\n preloaderStyle.width = `${sizeComputed}px`;\n preloaderStyle.height = `${sizeComputed}px`;\n preloaderStyle['--f7-preloader-size'] = `${sizeComputed}px`;\n }\n\n if (style) Utils.extend(preloaderStyle, style || {});\n let innerEl;\n\n if (theme && theme.md) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n }, [_h('span', {\n class: 'preloader-inner-gap'\n }), _h('span', {\n class: 'preloader-inner-left'\n }, [_h('span', {\n class: 'preloader-inner-half-circle'\n })]), _h('span', {\n class: 'preloader-inner-right'\n }, [_h('span', {\n class: 'preloader-inner-half-circle'\n })])]);\n } else if (theme && theme.ios) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n }, [_h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n })]);\n } else if (theme && theme.aurora) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n }, [_h('span', {\n class: 'preloader-inner-circle'\n })]);\n } else if (!theme) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n });\n }\n\n const classes = Utils.classNames(className, 'preloader', Mixins.colorClasses(props));\n return _h('span', {\n style: preloaderStyle,\n class: classes,\n attrs: {\n id: id\n }\n }, [innerEl]);\n },\n\n computed: {\n sizeComputed() {\n let s = this.props.size;\n\n if (s && typeof s === 'string' && s.indexOf('px') >= 0) {\n s = s.replace('px', '');\n }\n\n return s;\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport Preloader from './preloader';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-page-content',\n props: Object.assign({\n id: [String, Number],\n tab: Boolean,\n tabActive: Boolean,\n ptr: Boolean,\n ptrDistance: Number,\n ptrPreloader: {\n type: Boolean,\n default: true\n },\n ptrBottom: Boolean,\n ptrMousewheel: Boolean,\n infinite: Boolean,\n infiniteTop: Boolean,\n infiniteDistance: Number,\n infinitePreloader: {\n type: Boolean,\n default: true\n },\n hideBarsOnScroll: Boolean,\n hideNavbarOnScroll: Boolean,\n hideToolbarOnScroll: Boolean,\n messagesContent: Boolean,\n loginScreen: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n ptr,\n ptrPreloader,\n ptrDistance,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infinitePreloader,\n id,\n style,\n infiniteDistance,\n infiniteTop\n } = props;\n let ptrEl;\n let infiniteEl;\n\n if (ptr && ptrPreloader) {\n ptrEl = _h('div', {\n class: 'ptr-preloader'\n }, [_h(Preloader), _h('div', {\n class: 'ptr-arrow'\n })]);\n }\n\n if (infinite && infinitePreloader) {\n infiniteEl = _h(Preloader, {\n class: 'infinite-scroll-preloader'\n });\n }\n\n return _h('div', {\n style: style,\n class: self.classes,\n ref: 'el',\n attrs: {\n id: id,\n 'data-ptr-distance': ptrDistance || undefined,\n 'data-ptr-mousewheel': ptrMousewheel || undefined,\n 'data-infinite-distance': infiniteDistance || undefined\n }\n }, [ptrBottom ? null : ptrEl, infiniteTop ? infiniteEl : null, self.$slots.default, infiniteTop ? null : infiniteEl, ptrBottom ? ptrEl : null]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n tab,\n tabActive,\n ptr,\n ptrBottom,\n infinite,\n infiniteTop,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen\n } = props;\n return Utils.classNames(className, 'page-content', {\n tab,\n 'tab-active': tabActive,\n 'ptr-content': ptr,\n 'ptr-bottom': ptrBottom,\n 'infinite-scroll-content': infinite,\n 'infinite-scroll-top': infiniteTop,\n 'hide-bars-on-scroll': hideBarsOnScroll,\n 'hide-navbar-on-scroll': hideNavbarOnScroll,\n 'hide-toolbar-on-scroll': hideToolbarOnScroll,\n 'messages-content': messagesContent,\n 'login-screen-content': loginScreen\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onPtrPullStart', 'onPtrPullMove', 'onPtrPullEnd', 'onPtrRefresh', 'onPtrDone', 'onInfinite', 'onTabShow', 'onTabHide']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const {\n ptr,\n infinite,\n tab\n } = self.props;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n\n if (ptr) {\n f7.on('ptrPullStart', self.onPtrPullStart);\n f7.on('ptrPullMove', self.onPtrPullMove);\n f7.on('ptrPullEnd', self.onPtrPullEnd);\n f7.on('ptrRefresh', self.onPtrRefresh);\n f7.on('ptrDone', self.onPtrDone);\n }\n\n if (infinite) {\n f7.on('infinite', self.onInfinite);\n }\n\n if (tab) {\n f7.on('tabShow', self.onTabShow);\n f7.on('tabHide', self.onTabHide);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.$f7) return;\n self.$f7.off('ptrPullStart', self.onPtrPullStart);\n self.$f7.off('ptrPullMove', self.onPtrPullMove);\n self.$f7.off('ptrPullEnd', self.onPtrPullEnd);\n self.$f7.off('ptrRefresh', self.onPtrRefresh);\n self.$f7.off('ptrDone', self.onPtrDone);\n self.$f7.off('infinite', self.onInfinite);\n self.$f7.off('tabShow', self.onTabShow);\n self.$f7.off('tabHide', self.onTabHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onPtrPullStart(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:pullstart ptrPullStart');\n },\n\n onPtrPullMove(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:pullmove ptrPullMove');\n },\n\n onPtrPullEnd(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:pullend ptrPullEnd');\n },\n\n onPtrRefresh(el, done) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:refresh ptrRefresh', done);\n },\n\n onPtrDone(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:done ptrDone');\n },\n\n onInfinite(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('infinite');\n },\n\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:show tabShow', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:hide tabHide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7PageContent from './page-content';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-page',\n props: Object.assign({\n id: [String, Number],\n name: String,\n stacked: Boolean,\n withSubnavbar: {\n type: Boolean,\n default: undefined\n },\n subnavbar: {\n type: Boolean,\n default: undefined\n },\n withNavbarLarge: {\n type: Boolean,\n default: undefined\n },\n navbarLarge: {\n type: Boolean,\n default: undefined\n },\n noNavbar: Boolean,\n noToolbar: Boolean,\n tabs: Boolean,\n pageContent: {\n type: Boolean,\n default: true\n },\n noSwipeback: Boolean,\n ptr: Boolean,\n ptrDistance: Number,\n ptrPreloader: {\n type: Boolean,\n default: true\n },\n ptrBottom: Boolean,\n ptrMousewheel: Boolean,\n infinite: Boolean,\n infiniteTop: Boolean,\n infiniteDistance: Number,\n infinitePreloader: {\n type: Boolean,\n default: true\n },\n hideBarsOnScroll: Boolean,\n hideNavbarOnScroll: Boolean,\n hideToolbarOnScroll: Boolean,\n messagesContent: Boolean,\n loginScreen: Boolean\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n hasSubnavbar: false,\n hasNavbarLarge: false,\n hasNavbarLargeCollapsed: false,\n hasCardExpandableOpened: false,\n routerPositionClass: '',\n routerForceUnstack: false,\n routerPageRole: null,\n routerPageRoleDetailRoot: false,\n routerPageMasterStack: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n name,\n pageContent,\n messagesContent,\n ptr,\n ptrDistance,\n ptrPreloader,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteDistance,\n infinitePreloader,\n infiniteTop,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n loginScreen,\n className,\n stacked,\n tabs,\n subnavbar,\n withSubnavbar,\n navbarLarge,\n withNavbarLarge,\n noNavbar,\n noToolbar,\n noSwipeback\n } = props;\n const fixedList = [];\n const staticList = [];\n const {\n static: slotsStatic,\n fixed: slotsFixed,\n default: slotsDefault\n } = self.$slots;\n let fixedTags;\n fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index'.split(' ');\n let hasSubnavbar;\n let hasMessages;\n let hasNavbarLarge;\n hasMessages = self.$options.propsData.messagesContent;\n\n if (slotsDefault) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n {\n const tag = child.tag;\n\n if (!tag) {\n if (pageContent) staticList.push(child);\n return;\n }\n\n if (tag.indexOf('subnavbar') >= 0) hasSubnavbar = true;\n\n if (tag.indexOf('navbar') >= 0) {\n if (child.componentOptions && child.componentOptions.propsData && 'large' in child.componentOptions.propsData && (child.componentOptions.propsData.large || child.componentOptions.propsData.large === '')) {\n hasNavbarLarge = true;\n }\n }\n\n if (typeof hasMessages === 'undefined' && tag.indexOf('messages') >= 0) hasMessages = true;\n\n for (let j = 0; j < fixedTags.length; j += 1) {\n if (tag.indexOf(fixedTags[j]) >= 0) {\n isFixedTag = true;\n }\n }\n }\n\n if (pageContent) {\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n }\n });\n }\n\n const forceSubnavbar = typeof subnavbar === 'undefined' && typeof withSubnavbar === 'undefined' ? hasSubnavbar || this.state.hasSubnavbar : false;\n const forceNavbarLarge = typeof navbarLarge === 'undefined' && typeof withNavbarLarge === 'undefined' ? hasNavbarLarge || this.state.hasNavbarLarge : false;\n const classes = Utils.classNames(className, 'page', this.state.routerPositionClass, {\n stacked: stacked && !this.state.routerForceUnstack,\n tabs,\n 'page-with-subnavbar': subnavbar || withSubnavbar || forceSubnavbar,\n 'page-with-navbar-large': navbarLarge || withNavbarLarge || forceNavbarLarge,\n 'no-navbar': noNavbar,\n 'no-toolbar': noToolbar,\n 'no-swipeback': noSwipeback,\n 'page-master': this.state.routerPageRole === 'master',\n 'page-master-detail': this.state.routerPageRole === 'detail',\n 'page-master-detail-root': this.state.routerPageRoleDetailRoot === true,\n 'page-master-stacked': this.state.routerPageMasterStack === true,\n 'page-with-navbar-large-collapsed': this.state.hasNavbarLargeCollapsed === true,\n 'page-with-card-opened': this.state.hasCardExpandableOpened === true,\n 'login-screen-page': loginScreen\n }, Mixins.colorClasses(props));\n\n if (!pageContent) {\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-name': name\n }\n }, [slotsFixed, slotsStatic, slotsDefault]);\n }\n\n const pageContentEl = _h(F7PageContent, {\n on: {\n ptrPullStart: self.onPtrPullStart,\n ptrPullMove: self.onPtrPullMove,\n ptrPullEnd: self.onPtrPullEnd,\n ptrRefresh: self.onPtrRefresh,\n ptrDone: self.onPtrDone,\n infinite: self.onInfinite\n },\n attrs: {\n ptr: ptr,\n ptrDistance: ptrDistance,\n ptrPreloader: ptrPreloader,\n ptrBottom: ptrBottom,\n ptrMousewheel: ptrMousewheel,\n infinite: infinite,\n infiniteTop: infiniteTop,\n infiniteDistance: infiniteDistance,\n infinitePreloader: infinitePreloader,\n hideBarsOnScroll: hideBarsOnScroll,\n hideNavbarOnScroll: hideNavbarOnScroll,\n hideToolbarOnScroll: hideToolbarOnScroll,\n messagesContent: messagesContent || hasMessages,\n loginScreen: loginScreen\n }\n }, [slotsStatic, staticList]);\n\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-name': name\n }\n }, [fixedList, slotsFixed, pageContentEl]);\n },\n\n created() {\n Utils.bindMethods(this, ['onPtrPullStart', 'onPtrPullMove', 'onPtrPullEnd', 'onPtrRefresh', 'onPtrDone', 'onInfinite', 'onPageMounted', 'onPageInit', 'onPageReinit', 'onPageBeforeIn', 'onPageBeforeOut', 'onPageAfterOut', 'onPageAfterIn', 'onPageBeforeRemove', 'onPageBeforeUnmount', 'onPageStack', 'onPageUnstack', 'onPagePosition', 'onPageRole', 'onPageMasterStack', 'onPageMasterUnstack', 'onPageNavbarLargeCollapsed', 'onPageNavbarLargeExpanded', 'onCardOpened', 'onCardClose', 'onPageTabShow', 'onPageTabHide']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n f7.on('pageMounted', self.onPageMounted);\n f7.on('pageInit', self.onPageInit);\n f7.on('pageReinit', self.onPageReinit);\n f7.on('pageBeforeIn', self.onPageBeforeIn);\n f7.on('pageBeforeOut', self.onPageBeforeOut);\n f7.on('pageAfterOut', self.onPageAfterOut);\n f7.on('pageAfterIn', self.onPageAfterIn);\n f7.on('pageBeforeRemove', self.onPageBeforeRemove);\n f7.on('pageBeforeUnmount', self.onPageBeforeUnmount);\n f7.on('pageStack', self.onPageStack);\n f7.on('pageUnstack', self.onPageUnstack);\n f7.on('pagePosition', self.onPagePosition);\n f7.on('pageRole', self.onPageRole);\n f7.on('pageMasterStack', self.onPageMasterStack);\n f7.on('pageMasterUnstack', self.onPageMasterUnstack);\n f7.on('pageNavbarLargeCollapsed', self.onPageNavbarLargeCollapsed);\n f7.on('pageNavbarLargeExpanded', self.onPageNavbarLargeExpanded);\n f7.on('cardOpened', self.onCardOpened);\n f7.on('cardClose', self.onCardClose);\n f7.on('pageTabShow', self.onPageTabShow);\n f7.on('pageTabHide', self.onPageTabHide);\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.$f7) return;\n const f7 = self.$f7;\n f7.off('pageMounted', self.onPageMounted);\n f7.off('pageInit', self.onPageInit);\n f7.off('pageReinit', self.onPageReinit);\n f7.off('pageBeforeIn', self.onPageBeforeIn);\n f7.off('pageBeforeOut', self.onPageBeforeOut);\n f7.off('pageAfterOut', self.onPageAfterOut);\n f7.off('pageAfterIn', self.onPageAfterIn);\n f7.off('pageBeforeRemove', self.onPageBeforeRemove);\n f7.off('pageBeforeUnmount', self.onPageBeforeUnmount);\n f7.off('pageStack', self.onPageStack);\n f7.off('pageUnstack', self.onPageUnstack);\n f7.off('pagePosition', self.onPagePosition);\n f7.off('pageRole', self.onPageRole);\n f7.off('pageMasterStack', self.onPageMasterStack);\n f7.off('pageMasterUnstack', self.onPageMasterUnstack);\n f7.off('pageNavbarLargeCollapsed', self.onPageNavbarLargeCollapsed);\n f7.off('pageNavbarLargeExpanded', self.onPageNavbarLargeExpanded);\n f7.off('cardOpened', self.onCardOpened);\n f7.off('cardClose', self.onCardClose);\n f7.off('pageTabShow', self.onPageTabShow);\n f7.off('pageTabHide', self.onPageTabHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onPtrPullStart(...args) {\n this.dispatchEvent('ptr:pullstart ptrPullStart', ...args);\n },\n\n onPtrPullMove(...args) {\n this.dispatchEvent('ptr:pullmove ptrPullMove', ...args);\n },\n\n onPtrPullEnd(...args) {\n this.dispatchEvent('ptr:pullend ptrPullEnd', ...args);\n },\n\n onPtrRefresh(...args) {\n this.dispatchEvent('ptr:refresh ptrRefresh', ...args);\n },\n\n onPtrDone(...args) {\n this.dispatchEvent('ptr:done ptrDone', ...args);\n },\n\n onInfinite(...args) {\n this.dispatchEvent('infinite', ...args);\n },\n\n onPageMounted(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:mounted pageMounted', page);\n },\n\n onPageInit(page) {\n if (this.eventTargetEl !== page.el) return;\n const {\n withSubnavbar,\n subnavbar,\n withNavbarLarge,\n navbarLarge\n } = this.props;\n\n if (typeof withSubnavbar === 'undefined' && typeof subnavbar === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length || page.$el.children('.navbar').find('.subnavbar').length) {\n this.setState({\n hasSubnavbar: true\n });\n }\n }\n\n if (typeof withNavbarLarge === 'undefined' && typeof navbarLarge === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.hasClass('navbar-large')) {\n this.setState({\n hasNavbarLarge: true\n });\n }\n }\n\n this.dispatchEvent('page:init pageInit', page);\n },\n\n onPageReinit(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:reinit pageReinit', page);\n },\n\n onPageBeforeIn(page) {\n if (this.eventTargetEl !== page.el) return;\n\n if (!page.swipeBack) {\n if (page.from === 'next') {\n this.setState({\n routerPositionClass: 'page-next'\n });\n }\n\n if (page.from === 'previous') {\n this.setState({\n routerPositionClass: 'page-previous'\n });\n }\n }\n\n this.dispatchEvent('page:beforein pageBeforeIn', page);\n },\n\n onPageBeforeOut(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:beforeout pageBeforeOut', page);\n },\n\n onPageAfterOut(page) {\n if (this.eventTargetEl !== page.el) return;\n\n if (page.to === 'next') {\n this.setState({\n routerPositionClass: 'page-next'\n });\n }\n\n if (page.to === 'previous') {\n this.setState({\n routerPositionClass: 'page-previous'\n });\n }\n\n this.dispatchEvent('page:afterout pageAfterOut', page);\n },\n\n onPageAfterIn(page) {\n if (this.eventTargetEl !== page.el) return;\n this.setState({\n routerPositionClass: 'page-current'\n });\n this.dispatchEvent('page:afterin pageAfterIn', page);\n },\n\n onPageBeforeRemove(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:beforeremove pageBeforeRemove', page);\n },\n\n onPageBeforeUnmount(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:beforeunmount pageBeforeUnmount', page);\n },\n\n onPageStack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerForceUnstack: false\n });\n },\n\n onPageUnstack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerForceUnstack: true\n });\n },\n\n onPagePosition(pageEl, position) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPositionClass: `page-${position}`\n });\n },\n\n onPageRole(pageEl, rolesData) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPageRole: rolesData.role,\n routerPageRoleDetailRoot: rolesData.detailRoot\n });\n },\n\n onPageMasterStack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPageMasterStack: true\n });\n },\n\n onPageMasterUnstack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPageMasterStack: false\n });\n },\n\n onPageNavbarLargeCollapsed(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasNavbarLargeCollapsed: true\n });\n },\n\n onPageNavbarLargeExpanded(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasNavbarLargeCollapsed: false\n });\n },\n\n onCardOpened(cardEl, pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasCardExpandableOpened: true\n });\n },\n\n onCardClose(cardEl, pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasCardExpandableOpened: false\n });\n },\n\n onPageTabShow(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.dispatchEvent('page:tabshow pageTabShow');\n },\n\n onPageTabHide(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.dispatchEvent('page:tabhide pageTabHide');\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-panel',\n props: Object.assign({\n id: [String, Number],\n side: String,\n effect: String,\n cover: Boolean,\n reveal: Boolean,\n left: Boolean,\n right: Boolean,\n opened: Boolean,\n resizable: Boolean,\n backdrop: {\n type: Boolean,\n default: true\n },\n backdropEl: {\n type: String,\n default: undefined\n },\n visibleBreakpoint: {\n type: Number,\n default: undefined\n },\n collapsedBreakpoint: {\n type: Number,\n default: undefined\n },\n swipe: Boolean,\n swipeNoFollow: Boolean,\n swipeOnlyClose: Boolean,\n swipeActiveArea: {\n type: Number,\n default: 0\n },\n swipeThreshold: {\n type: Number,\n default: 0\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n id,\n style,\n resizable\n } = props;\n return _h('div', {\n ref: 'el',\n style: style,\n class: this.classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default'], resizable && _h('div', {\n class: 'panel-resize-handler'\n })]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n left,\n reveal,\n className,\n resizable\n } = props;\n let {\n side,\n effect\n } = props;\n side = side || (left ? 'left' : 'right');\n effect = effect || (reveal ? 'reveal' : 'cover');\n return Utils.classNames(className, 'panel', {\n 'panel-resizable': resizable,\n [`panel-${side}`]: side,\n [`panel-${effect}`]: effect\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n watch: {\n 'props.resizable': function watchResizable(resizable) {\n const self = this;\n if (!self.f7Panel) return;\n if (resizable) self.f7Panel.enableResizable();else self.f7Panel.disableResizable();\n },\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Panel) return;\n\n if (opened) {\n self.f7Panel.open();\n } else {\n self.f7Panel.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed', 'onBackdropClick', 'onSwipe', 'onSwipeOpen', 'onBreakpoint', 'onCollapsedBreakpoint', 'onResize']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const {\n opened,\n resizable,\n backdrop,\n backdropEl,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea,\n swipeThreshold\n } = self.props;\n self.$f7ready(() => {\n const $ = self.$$;\n if (!$) return;\n\n if ($('.panel-backdrop').length === 0) {\n $('
').insertBefore(el);\n }\n\n const params = Utils.noUndefinedProps({\n el,\n resizable,\n backdrop,\n backdropEl,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea,\n swipeThreshold,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed,\n backdropClick: self.onBackdropClick,\n swipe: self.onSwipe,\n swipeOpen: self.onSwipeOpen,\n collapsedBreakpoint: self.onCollapsedBreakpoint,\n breakpoint: self.onBreakpoint,\n resize: self.onResize\n }\n });\n self.f7Panel = self.$f7.panel.create(params);\n\n if (opened) {\n self.f7Panel.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.f7Panel && self.f7Panel.destroy) {\n self.f7Panel.destroy();\n }\n },\n\n methods: {\n onOpen(event) {\n this.dispatchEvent('panel:open panelOpen', event);\n },\n\n onOpened(event) {\n this.dispatchEvent('panel:opened panelOpened', event);\n },\n\n onClose(event) {\n this.dispatchEvent('panel:close panelClose', event);\n },\n\n onClosed(event) {\n this.dispatchEvent('panel:closed panelClosed', event);\n },\n\n onBackdropClick(event) {\n this.dispatchEvent('panel:backdrop-click panelBackdropClick', event);\n },\n\n onSwipe(event) {\n this.dispatchEvent('panel:swipe panelSwipe', event);\n },\n\n onSwipeOpen(event) {\n this.dispatchEvent('panel:swipeopen panelSwipeOpen', event);\n },\n\n onBreakpoint(event) {\n this.dispatchEvent('panel:breakpoint panelBreakpoint', event);\n },\n\n onCollapsedBreakpoint(event) {\n this.dispatchEvent('panel:collapsedbreakpoint panelCollapsedBreakpoint', event);\n },\n\n onResize(...args) {\n this.dispatchEvent('panel:resize panelResize', ...args);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Panel) return;\n self.f7Panel.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Panel) return;\n self.f7Panel.close(animate);\n },\n\n toggle(animate) {\n const self = this;\n if (!self.f7Panel) return;\n self.f7Panel.toggle(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-photo-browser',\n props: {\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n params: Object,\n photos: Array,\n exposition: {\n type: Boolean,\n default: true\n },\n expositionHideCaptions: {\n type: Boolean,\n default: false\n },\n type: {\n type: String\n },\n navbar: {\n type: Boolean,\n default: true\n },\n toolbar: {\n type: Boolean,\n default: true\n },\n theme: {\n type: String\n },\n captionsTheme: {\n type: String\n },\n iconsColor: {\n type: String\n },\n swipeToClose: {\n type: Boolean,\n default: true\n },\n pageBackLinkText: {\n type: String,\n default: undefined\n },\n popupCloseLinkText: {\n type: String,\n default: undefined\n },\n navbarOfText: {\n type: String,\n default: undefined\n },\n navbarShowCount: {\n type: Boolean,\n default: undefined\n },\n swiper: {\n type: Object\n },\n url: {\n type: String\n },\n routableModals: {\n type: Boolean,\n default: true\n },\n virtualSlides: {\n type: Boolean,\n default: true\n },\n view: [String, Object],\n renderNavbar: Function,\n renderToolbar: Function,\n renderCaption: Function,\n renderObject: Function,\n renderLazyPhoto: Function,\n renderPhoto: Function,\n renderPage: Function,\n renderPopup: Function,\n renderStandalone: Function\n },\n\n render() {\n const _h = this.$createElement;\n return null;\n },\n\n watch: {\n 'props.photos': function watchPhotos(newValue) {\n const self = this;\n const pb = self.f7PhotoBrowser;\n if (!pb) return;\n self.f7PhotoBrowser.params.photos = newValue;\n\n if (pb.opened && pb.swiper) {\n pb.swiper.update();\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7PhotoBrowser && self.f7PhotoBrowser.destroy) self.f7PhotoBrowser.destroy();\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n let params;\n if (typeof self.props.params !== 'undefined') params = self.props.params;else params = Object.assign({}, self.props);\n Object.keys(params).forEach(param => {\n if (typeof params[param] === 'undefined' || params[param] === '') delete params[param];\n });\n params = Utils.extend({}, params, {\n on: {\n open() {\n self.dispatchEvent('photobrowser:open photoBrowserOpen');\n },\n\n close() {\n self.dispatchEvent('photobrowser:close photoBrowserClose');\n },\n\n opened() {\n self.dispatchEvent('photobrowser:opened photoBrowserOpened');\n },\n\n closed() {\n self.dispatchEvent('photobrowser:closed photoBrowserClosed');\n },\n\n swipeToClose() {\n self.dispatchEvent('photobrowser:swipetoclose photoBrowserSwipeToClose');\n }\n\n }\n });\n self.f7PhotoBrowser = f7.photoBrowser.create(params);\n });\n },\n\n methods: {\n open(index) {\n return this.f7PhotoBrowser.open(index);\n },\n\n close() {\n return this.f7PhotoBrowser.close();\n },\n\n expositionToggle() {\n return this.f7PhotoBrowser.expositionToggle();\n },\n\n expositionEnable() {\n return this.f7PhotoBrowser.expositionEnable();\n },\n\n expositionDisable() {\n return this.f7PhotoBrowser.expositionDisable();\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-popover',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean,\n target: [String, Object],\n backdrop: Boolean,\n backdropEl: [String, Object],\n closeByBackdropClick: Boolean,\n closeByOutsideClick: Boolean,\n closeOnEscape: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'popover', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'popover-angle'\n }), _h('div', {\n class: 'popover-inner'\n }, [this.$slots['default']])]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Popover) return;\n\n if (opened) {\n self.f7Popover.open();\n } else {\n self.f7Popover.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n target,\n opened,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape\n } = props;\n const popoverParams = {\n el,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n };\n if (target) popoverParams.targetEl = target;\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.closeByBackdropClick !== 'undefined') popoverParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeByOutsideClick !== 'undefined') popoverParams.closeByOutsideClick = closeByOutsideClick;\n if (typeof propsData.closeOnEscape !== 'undefined') popoverParams.closeOnEscape = closeOnEscape;\n if (typeof propsData.backdrop !== 'undefined') popoverParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') popoverParams.backdropEl = backdropEl;\n }\n self.$f7ready(() => {\n self.f7Popover = self.$f7.popover.create(popoverParams);\n\n if (opened && target) {\n self.f7Popover.open(target, false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Popover) self.f7Popover.destroy();\n },\n\n methods: {\n onOpen(instance) {\n this.dispatchEvent('popover:open popoverOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('popover:opened popoverOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('popover:close popoverClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('popover:closed popoverClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Popover) return undefined;\n return self.f7Popover.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Popover) return undefined;\n return self.f7Popover.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-popup',\n props: Object.assign({\n id: [String, Number],\n tabletFullscreen: Boolean,\n opened: Boolean,\n animate: Boolean,\n backdrop: Boolean,\n backdropEl: [String, Object],\n closeByBackdropClick: Boolean,\n closeOnEscape: Boolean,\n swipeToClose: {\n type: [Boolean, String],\n default: false\n },\n swipeHandler: [String, Object],\n push: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tabletFullscreen,\n push\n } = props;\n const classes = Utils.classNames(className, 'popup', {\n 'popup-tablet-fullscreen': tabletFullscreen,\n 'popup-push': push\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Popup) return;\n\n if (opened) {\n self.f7Popup.open();\n } else {\n self.f7Popup.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed', 'onSwipeStart', 'onSwipeMove', 'onSwipeEnd', 'onSwipeClose']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n closeByBackdropClick,\n backdrop,\n backdropEl,\n animate,\n closeOnEscape,\n swipeToClose,\n swipeHandler\n } = props;\n const popupParams = {\n el,\n on: {\n swipeStart: self.onSwipeStart,\n swipeMove: self.onSwipeMove,\n swipeEnd: self.onSwipeEnd,\n swipeClose: self.onSwipeClose,\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n };\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.closeByBackdropClick !== 'undefined') popupParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeOnEscape !== 'undefined') popupParams.closeOnEscape = closeOnEscape;\n if (typeof propsData.animate !== 'undefined') popupParams.animate = animate;\n if (typeof propsData.backdrop !== 'undefined') popupParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') popupParams.backdropEl = backdropEl;\n if (typeof propsData.swipeToClose !== 'undefined') popupParams.swipeToClose = swipeToClose;\n if (typeof propsData.swipeHandler !== 'undefined') popupParams.swipeHandler = swipeHandler;\n }\n self.$f7ready(() => {\n self.f7Popup = self.$f7.popup.create(popupParams);\n\n if (self.props.opened) {\n self.f7Popup.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Popup) self.f7Popup.destroy();\n },\n\n methods: {\n onSwipeStart(instance) {\n this.dispatchEvent('popup:swipestart popupSwipeStart', instance);\n },\n\n onSwipeMove(instance) {\n this.dispatchEvent('popup:swipemove popupSwipeMove', instance);\n },\n\n onSwipeEnd(instance) {\n this.dispatchEvent('popup:swipeend popupSwipeEnd', instance);\n },\n\n onSwipeClose(instance) {\n this.dispatchEvent('popup:swipeclose popupSwipeClose', instance);\n },\n\n onOpen(instance) {\n this.dispatchEvent('popup:open popupOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('popup:opened popupOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('popup:close popupClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('popup:closed popupClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Popup) return undefined;\n return self.f7Popup.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Popup) return undefined;\n return self.f7Popup.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-progressbar',\n props: Object.assign({\n id: [String, Number],\n progress: Number,\n infinite: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n progress,\n id,\n style,\n infinite,\n className\n } = props;\n const transformStyle = {\n transform: progress ? `translate3d(${-100 + progress}%, 0, 0)` : '',\n WebkitTransform: progress ? `translate3d(${-100 + progress}%, 0, 0)` : ''\n };\n const classes = Utils.classNames(className, 'progressbar', {\n 'progressbar-infinite': infinite\n }, Mixins.colorClasses(props));\n return _h('span', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-progress': progress\n }\n }, [_h('span', {\n style: transformStyle\n })]);\n },\n\n methods: {\n set(progress, speed) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.progressbar.set(self.$refs.el, progress, speed);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-radio',\n props: Object.assign({\n id: [String, Number],\n checked: Boolean,\n name: [Number, String],\n value: [Number, String, Boolean],\n disabled: Boolean,\n readonly: Boolean,\n defaultChecked: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n name,\n value,\n disabled,\n readonly,\n checked,\n defaultChecked,\n id,\n style,\n className\n } = props;\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n value,\n disabled,\n readonly,\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'radio',\n name: name\n }\n });\n }\n\n const iconEl = _h('i', {\n class: 'icon-radio'\n });\n\n const classes = Utils.classNames(className, 'radio', {\n disabled\n }, Mixins.colorClasses(props));\n return _h('label', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [inputEl, iconEl, this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n methods: {\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-row',\n props: Object.assign({\n id: [String, Number],\n noGap: Boolean,\n tag: {\n type: String,\n default: 'div'\n },\n resizable: Boolean,\n resizableFixed: Boolean,\n resizableAbsolute: Boolean,\n resizableHandler: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tag,\n noGap,\n resizable,\n resizableFixed,\n resizableAbsolute,\n resizableHandler\n } = props;\n const RowTag = tag;\n const classes = Utils.classNames(className, 'row', {\n 'no-gap': noGap,\n resizable,\n 'resizable-fixed': resizableFixed,\n 'resizable-absolute': resizableAbsolute\n }, Mixins.colorClasses(props));\n return _h(RowTag, {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default'], resizable && resizableHandler && _h('span', {\n class: 'resize-handler'\n })]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onResize']);\n },\n\n mounted() {\n const self = this;\n self.eventTargetEl = self.$refs.el;\n self.eventTargetEl.addEventListener('click', self.onClick);\n self.$f7ready(f7 => {\n f7.on('gridResize', self.onResize);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n el.removeEventListener('click', self.onClick);\n self.$f7.off('gridResize', self.onResize);\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onResize(el) {\n if (el === this.eventTargetEl) {\n this.dispatchEvent('grid:resize gridResize');\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-searchbar',\n props: Object.assign({\n id: [String, Number],\n noShadow: Boolean,\n noHairline: Boolean,\n form: {\n type: Boolean,\n default: true\n },\n placeholder: {\n type: String,\n default: 'Search'\n },\n spellcheck: {\n type: Boolean,\n default: undefined\n },\n disableButton: {\n type: Boolean,\n default: true\n },\n disableButtonText: {\n type: String,\n default: 'Cancel'\n },\n clearButton: {\n type: Boolean,\n default: true\n },\n value: [String, Number, Array],\n inputEvents: {\n type: String,\n default: 'change input compositionend'\n },\n expandable: Boolean,\n inline: Boolean,\n searchContainer: [String, Object],\n searchIn: {\n type: String,\n default: '.item-title'\n },\n searchItem: {\n type: String,\n default: 'li'\n },\n searchGroup: {\n type: String,\n default: '.list-group'\n },\n searchGroupTitle: {\n type: String,\n default: '.item-divider, .list-group-title'\n },\n foundEl: {\n type: [String, Object],\n default: '.searchbar-found'\n },\n notFoundEl: {\n type: [String, Object],\n default: '.searchbar-not-found'\n },\n backdrop: {\n type: Boolean,\n default: undefined\n },\n backdropEl: [String, Object],\n hideOnEnableEl: {\n type: [String, Object],\n default: '.searchbar-hide-on-enable'\n },\n hideOnSearchEl: {\n type: [String, Object],\n default: '.searchbar-hide-on-search'\n },\n ignore: {\n type: String,\n default: '.searchbar-ignore'\n },\n customSearch: {\n type: Boolean,\n default: false\n },\n removeDiacritics: {\n type: Boolean,\n default: false\n },\n hideDividers: {\n type: Boolean,\n default: true\n },\n hideGroups: {\n type: Boolean,\n default: true\n },\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n let clearEl;\n let disableEl;\n const props = self.props;\n const {\n placeholder,\n spellcheck,\n clearButton,\n disableButton,\n disableButtonText,\n form,\n noShadow,\n noHairline,\n expandable,\n className,\n style,\n id,\n value,\n inline\n } = props;\n\n if (clearButton) {\n clearEl = _h('span', {\n ref: 'clearEl',\n class: 'input-clear-button'\n });\n }\n\n if (disableButton) {\n disableEl = _h('span', {\n ref: 'disableEl',\n class: 'searchbar-disable-button'\n }, [disableButtonText]);\n }\n\n const SearchbarTag = form ? 'form' : 'div';\n const classes = Utils.classNames(className, 'searchbar', {\n 'searchbar-inline': inline,\n 'no-shadow': noShadow,\n 'no-hairline': noHairline,\n 'searchbar-expandable': expandable\n }, Mixins.colorClasses(props));\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n value\n },\n on: {\n input: self.onInput,\n change: self.onChange,\n focus: self.onFocus,\n blur: self.onBlur\n },\n attrs: {\n placeholder: placeholder,\n type: 'search',\n spellcheck: spellcheck\n }\n });\n }\n return _h(SearchbarTag, {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-inner'], _h('div', {\n class: 'searchbar-inner'\n }, [this.$slots['inner-start'], _h('div', {\n class: 'searchbar-input-wrap'\n }, [this.$slots['input-wrap-start'], inputEl, _h('i', {\n class: 'searchbar-icon'\n }), clearEl, this.$slots['input-wrap-end']]), disableEl, this.$slots['inner-end'], this.$slots['default']]), this.$slots['after-inner']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onSubmit', 'onClearButtonClick', 'onDisableButtonClick', 'onInput', 'onChange', 'onFocus', 'onBlur']);\n },\n\n mounted() {\n const self = this;\n const {\n init,\n inputEvents,\n searchContainer,\n searchIn,\n searchItem,\n searchGroup,\n searchGroupTitle,\n hideOnEnableEl,\n hideOnSearchEl,\n foundEl,\n notFoundEl,\n backdrop,\n backdropEl,\n disableButton,\n ignore,\n customSearch,\n removeDiacritics,\n hideDividers,\n hideGroups,\n form,\n expandable,\n inline\n } = self.props;\n const {\n el,\n clearEl,\n disableEl\n } = self.$refs;\n\n if (form && el) {\n el.addEventListener('submit', self.onSubmit, false);\n }\n\n if (clearEl) {\n clearEl.addEventListener('click', self.onClearButtonClick);\n }\n\n if (disableEl) {\n disableEl.addEventListener('click', self.onDisableButtonClick);\n }\n\n if (!init) return;\n self.$f7ready(() => {\n const params = Utils.noUndefinedProps({\n el: self.$refs.el,\n inputEvents,\n searchContainer,\n searchIn,\n searchItem,\n searchGroup,\n searchGroupTitle,\n hideOnEnableEl,\n hideOnSearchEl,\n foundEl,\n notFoundEl,\n backdrop,\n backdropEl,\n disableButton,\n ignore,\n customSearch,\n removeDiacritics,\n hideDividers,\n hideGroups,\n expandable,\n inline,\n on: {\n search(searchbar, query, previousQuery) {\n self.dispatchEvent('searchbar:search searchbarSearch', searchbar, query, previousQuery);\n },\n\n clear(searchbar, previousQuery) {\n self.dispatchEvent('searchbar:clear searchbarClear', searchbar, previousQuery);\n },\n\n enable(searchbar) {\n self.dispatchEvent('searchbar:enable searchbarEnable', searchbar);\n },\n\n disable(searchbar) {\n self.dispatchEvent('searchbar:disable searchbarDisable', searchbar);\n }\n\n }\n });\n Object.keys(params).forEach(key => {\n if (params[key] === '') {\n delete params[key];\n }\n });\n self.f7Searchbar = self.$f7.searchbar.create(params);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el,\n clearEl,\n disableEl\n } = self.$refs;\n\n if (self.props.form && el) {\n el.removeEventListener('submit', self.onSubmit, false);\n }\n\n if (clearEl) {\n clearEl.removeEventListener('click', self.onClearButtonClick);\n }\n\n if (disableEl) {\n disableEl.removeEventListener('click', self.onDisableButtonClick);\n }\n\n if (self.f7Searchbar && self.f7Searchbar.destroy) self.f7Searchbar.destroy();\n },\n\n methods: {\n search(query) {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.search(query);\n },\n\n enable() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.enable();\n },\n\n disable() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.disable();\n },\n\n toggle() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.toggle();\n },\n\n clear() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.clear();\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n onInput(event) {\n this.dispatchEvent('input', event);\n },\n\n onFocus(event) {\n this.dispatchEvent('focus', event);\n },\n\n onBlur(event) {\n this.dispatchEvent('blur', event);\n },\n\n onSubmit(event) {\n this.dispatchEvent('submit', event);\n },\n\n onClearButtonClick(event) {\n this.dispatchEvent('click:clear clickClear', event);\n },\n\n onDisableButtonClick(event) {\n this.dispatchEvent('click:disable clickDisable', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-segmented',\n props: Object.assign({\n id: [String, Number],\n raised: Boolean,\n raisedIos: Boolean,\n raisedMd: Boolean,\n raisedAurora: Boolean,\n round: Boolean,\n roundIos: Boolean,\n roundMd: Boolean,\n roundAurora: Boolean,\n strong: Boolean,\n strongIos: Boolean,\n strongMd: Boolean,\n strongAurora: Boolean,\n tag: {\n type: String,\n default: 'div'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n raised,\n raisedIos,\n raisedAurora,\n raisedMd,\n round,\n roundIos,\n roundAurora,\n roundMd,\n strong,\n strongIos,\n strongMd,\n strongAurora,\n id,\n style,\n tag\n } = props;\n const classNames = Utils.classNames(className, {\n segmented: true,\n 'segmented-raised': raised,\n 'segmented-raised-ios': raisedIos,\n 'segmented-raised-aurora': raisedAurora,\n 'segmented-raised-md': raisedMd,\n 'segmented-round': round,\n 'segmented-round-ios': roundIos,\n 'segmented-round-aurora': roundAurora,\n 'segmented-round-md': roundMd,\n 'segmented-strong': strong,\n 'segmented-strong-ios': strongIos,\n 'segmented-strong-md': strongMd,\n 'segmented-strong-aurora': strongAurora\n }, Mixins.colorClasses(props));\n const SegmentedTag = tag;\n return _h(SegmentedTag, {\n style: style,\n class: classNames,\n attrs: {\n id: id\n }\n }, [this.$slots['default'], (strong || strongIos || strongMd || strongAurora) && _h('span', {\n class: 'segmented-highlight'\n })]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-sheet',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean,\n top: Boolean,\n bottom: Boolean,\n position: String,\n backdrop: Boolean,\n backdropEl: [String, Object],\n closeByBackdropClick: Boolean,\n closeByOutsideClick: Boolean,\n closeOnEscape: Boolean,\n push: Boolean,\n swipeToClose: Boolean,\n swipeToStep: Boolean,\n swipeHandler: [String, Object]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const fixedList = [];\n const staticList = [];\n const props = self.props;\n const {\n id,\n style,\n className,\n top,\n bottom,\n position,\n push\n } = props;\n let fixedTags;\n fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index'.split(' ');\n const slotsDefault = self.$slots.default;\n\n if (slotsDefault && slotsDefault.length) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n {\n const tag = child.tag;\n\n if (!tag) {\n return;\n }\n\n for (let j = 0; j < fixedTags.length; j += 1) {\n if (tag.indexOf(fixedTags[j]) >= 0) {\n isFixedTag = true;\n }\n }\n }\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n });\n }\n\n const innerEl = _h('div', {\n class: 'sheet-modal-inner'\n }, [staticList]);\n\n let positionComputed = 'bottom';\n if (position) positionComputed = position;else if (top) positionComputed = 'top';else if (bottom) positionComputed = 'bottom';\n const classes = Utils.classNames(className, 'sheet-modal', `sheet-modal-${positionComputed}`, {\n 'sheet-modal-push': push\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [fixedList, innerEl]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Sheet) return;\n\n if (opened) {\n self.f7Sheet.open();\n } else {\n self.f7Sheet.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed', 'onStepOpen', 'onStepClose', 'onStepProgress']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n opened,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n swipeToClose,\n swipeToStep,\n swipeHandler\n } = props;\n const sheetParams = {\n el: self.$refs.el,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed,\n stepOpen: self.onStepOpen,\n stepClose: self.onStepClose,\n stepProgress: self.onStepProgress\n }\n };\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.backdrop !== 'undefined') sheetParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') sheetParams.backdropEl = backdropEl;\n if (typeof propsData.closeByBackdropClick !== 'undefined') sheetParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeByOutsideClick !== 'undefined') sheetParams.closeByOutsideClick = closeByOutsideClick;\n if (typeof propsData.closeOnEscape !== 'undefined') sheetParams.closeOnEscape = closeOnEscape;\n if (typeof propsData.swipeToClose !== 'undefined') sheetParams.swipeToClose = swipeToClose;\n if (typeof propsData.swipeToStep !== 'undefined') sheetParams.swipeToStep = swipeToStep;\n if (typeof propsData.swipeHandler !== 'undefined') sheetParams.swipeHandler = swipeHandler;\n }\n self.$f7ready(() => {\n self.f7Sheet = self.$f7.sheet.create(sheetParams);\n\n if (opened) {\n self.f7Sheet.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Sheet) self.f7Sheet.destroy();\n },\n\n methods: {\n onStepProgress(instance, progress) {\n this.dispatchEvent('sheet:stepprogress sheetStepProgress', instance, progress);\n },\n\n onStepOpen(instance) {\n this.dispatchEvent('sheet:stepopen sheetStepOpen', instance);\n },\n\n onStepClose(instance) {\n this.dispatchEvent('sheet:stepclose sheetStepClose', instance);\n },\n\n onOpen(instance) {\n this.dispatchEvent('sheet:open sheetOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('sheet:opened sheetOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('sheet:close sheetClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('sheet:closed sheetClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Sheet) return undefined;\n return self.f7Sheet.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Sheet) return undefined;\n return self.f7Sheet.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-skeleton-block',\n props: Object.assign({\n id: [String, Number],\n width: [Number, String],\n height: [Number, String],\n tag: {\n type: String,\n default: 'div'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n width,\n height,\n tag\n } = props;\n const classes = Utils.classNames('skeleton-block', className, Mixins.colorClasses(props));\n let styleAttribute = style;\n\n if (width) {\n const widthValue = typeof width === 'number' ? `${width}px` : width;\n\n if (!styleAttribute) {\n styleAttribute = {\n width: widthValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n width: widthValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `width: ${widthValue}; ${styleAttribute}`;\n }\n }\n\n if (height) {\n const heightValue = typeof height === 'number' ? `${height}px` : height;\n\n if (!styleAttribute) {\n styleAttribute = {\n height: heightValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n height: heightValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `height: ${heightValue}; ${styleAttribute}`;\n }\n }\n\n const Tag = tag;\n return _h(Tag, {\n style: styleAttribute,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-skeleton-text',\n props: Object.assign({\n id: [String, Number],\n width: [Number, String],\n height: [Number, String],\n tag: {\n type: String,\n default: 'span'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n width,\n height,\n tag\n } = props;\n const classes = Utils.classNames('skeleton-text', className, Mixins.colorClasses(props));\n let styleAttribute = style;\n\n if (width) {\n const widthValue = typeof width === 'number' ? `${width}px` : width;\n\n if (!styleAttribute) {\n styleAttribute = {\n width: widthValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n width: widthValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `width: ${widthValue}; ${styleAttribute}`;\n }\n }\n\n if (height) {\n const heightValue = typeof height === 'number' ? `${height}px` : height;\n\n if (!styleAttribute) {\n styleAttribute = {\n height: heightValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n height: heightValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `height: ${heightValue}; ${styleAttribute}`;\n }\n }\n\n const Tag = tag;\n return _h(Tag, {\n style: styleAttribute,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-stepper',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n value: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n step: {\n type: Number,\n default: 1\n },\n formatValue: Function,\n name: String,\n inputId: String,\n input: {\n type: Boolean,\n default: true\n },\n inputType: {\n type: String,\n default: 'text'\n },\n inputReadonly: {\n type: Boolean,\n default: false\n },\n autorepeat: {\n type: Boolean,\n default: false\n },\n autorepeatDynamic: {\n type: Boolean,\n default: false\n },\n wraps: {\n type: Boolean,\n default: false\n },\n manualInputMode: {\n type: Boolean,\n default: false\n },\n decimalPoint: {\n type: Number,\n default: 4\n },\n buttonsEndInputMode: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n buttonsOnly: Boolean,\n round: Boolean,\n roundMd: Boolean,\n roundIos: Boolean,\n roundAurora: Boolean,\n fill: Boolean,\n fillMd: Boolean,\n fillIos: Boolean,\n fillAurora: Boolean,\n large: Boolean,\n largeMd: Boolean,\n largeIos: Boolean,\n largeAurora: Boolean,\n small: Boolean,\n smallMd: Boolean,\n smallIos: Boolean,\n smallAurora: Boolean,\n raised: Boolean,\n raisedMd: Boolean,\n raisedIos: Boolean,\n raisedAurora: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n input,\n buttonsOnly,\n inputType,\n value,\n inputReadonly,\n min,\n max,\n step,\n id,\n style,\n name,\n inputId\n } = props;\n let inputWrapEl;\n let valueEl;\n\n if (input && !buttonsOnly) {\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n readOnly: inputReadonly,\n value\n },\n on: {\n input: self.onInput,\n change: self.onChange\n },\n attrs: {\n name: name,\n id: inputId,\n type: inputType,\n min: inputType === 'number' ? min : undefined,\n max: inputType === 'number' ? max : undefined,\n step: inputType === 'number' ? step : undefined\n }\n });\n }\n inputWrapEl = _h('div', {\n class: 'stepper-input-wrap'\n }, [inputEl]);\n }\n\n if (!input && !buttonsOnly) {\n valueEl = _h('div', {\n class: 'stepper-value'\n }, [value]);\n }\n\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n ref: 'minusEl',\n class: 'stepper-button-minus'\n }), inputWrapEl, valueEl, _h('div', {\n ref: 'plusEl',\n class: 'stepper-button-plus'\n })]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n round,\n roundIos,\n roundMd,\n roundAurora,\n fill,\n fillIos,\n fillMd,\n fillAurora,\n large,\n largeIos,\n largeMd,\n largeAurora,\n small,\n smallIos,\n smallMd,\n smallAurora,\n raised,\n raisedMd,\n raisedIos,\n raisedAurora,\n disabled\n } = props;\n return Utils.classNames(self.props.className, 'stepper', {\n disabled,\n 'stepper-round': round,\n 'stepper-round-ios': roundIos,\n 'stepper-round-md': roundMd,\n 'stepper-round-aurora': roundAurora,\n 'stepper-fill': fill,\n 'stepper-fill-ios': fillIos,\n 'stepper-fill-md': fillMd,\n 'stepper-fill-aurora': fillAurora,\n 'stepper-large': large,\n 'stepper-large-ios': largeIos,\n 'stepper-large-md': largeMd,\n 'stepper-large-aurora': largeAurora,\n 'stepper-small': small,\n 'stepper-small-ios': smallIos,\n 'stepper-small-md': smallMd,\n 'stepper-small-aurora': smallAurora,\n 'stepper-raised': raised,\n 'stepper-raised-ios': raisedIos,\n 'stepper-raised-md': raisedMd,\n 'stepper-raised-aurora': raisedAurora\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n watch: {\n 'props.value': function watchValue(newValue) {\n const self = this;\n if (!self.f7Stepper) return;\n self.f7Stepper.setValue(newValue);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onInput', 'onMinusClick', 'onPlusClick']);\n },\n\n mounted() {\n const self = this;\n const {\n minusEl,\n plusEl\n } = self.$refs;\n\n if (minusEl) {\n minusEl.addEventListener('click', self.onMinusClick);\n }\n\n if (plusEl) {\n plusEl.addEventListener('click', self.onPlusClick);\n }\n\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n const {\n min,\n max,\n value,\n step,\n formatValue,\n autorepeat,\n autorepeatDynamic,\n wraps,\n manualInputMode,\n decimalPoint,\n buttonsEndInputMode\n } = self.props;\n const el = self.$refs.el;\n if (!el) return;\n self.f7Stepper = f7.stepper.create(Utils.noUndefinedProps({\n el,\n min,\n max,\n value,\n step,\n formatValue,\n autorepeat,\n autorepeatDynamic,\n wraps,\n manualInputMode,\n decimalPoint,\n buttonsEndInputMode,\n on: {\n change(stepper, newValue) {\n self.dispatchEvent('stepper:change stepperChange', newValue);\n }\n\n }\n }));\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n minusEl,\n plusEl\n } = self.$refs;\n\n if (minusEl) {\n minusEl.removeEventListener('click', self.onMinusClick);\n }\n\n if (plusEl) {\n plusEl.removeEventListener('click', self.onPlusClick);\n }\n\n if (!self.props.init) return;\n\n if (self.f7Stepper && self.f7Stepper.destroy) {\n self.f7Stepper.destroy();\n }\n },\n\n methods: {\n increment() {\n if (!this.f7Stepper) return;\n this.f7Stepper.increment();\n },\n\n decrement() {\n if (!this.f7Stepper) return;\n this.f7Stepper.decrement();\n },\n\n setValue(newValue) {\n const self = this;\n if (self.f7Stepper && self.f7Stepper.setValue) self.f7Stepper.setValue(newValue);\n },\n\n getValue() {\n const self = this;\n\n if (self.f7Stepper && self.f7Stepper.getValue) {\n return self.f7Stepper.getValue();\n }\n\n return undefined;\n },\n\n onInput(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('input', event, stepper);\n },\n\n onChange(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('change', event, stepper);\n },\n\n onMinusClick(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('stepper:minusclick stepperMinusClick', event, stepper);\n },\n\n onPlusClick(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('stepper:plusclick stepperPlusClick', event, stepper);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-subnavbar',\n props: Object.assign({\n id: [String, Number],\n sliding: Boolean,\n title: String,\n inner: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n inner,\n title,\n style,\n id,\n className,\n sliding\n } = props;\n const classes = Utils.classNames(className, 'subnavbar', {\n sliding\n }, Mixins.colorClasses(props));\n return _h('div', {\n class: classes,\n style: style,\n attrs: {\n id: id\n }\n }, [inner ? _h('div', {\n class: 'subnavbar-inner'\n }, [title && _h('div', {\n class: 'subnavbar-title'\n }, [title]), this.$slots['default']]) : this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swipeout-actions',\n props: Object.assign({\n id: [String, Number],\n left: Boolean,\n right: Boolean,\n side: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n left,\n right,\n side,\n className,\n id,\n style\n } = props;\n let sideComputed = side;\n\n if (!sideComputed) {\n if (left) sideComputed = 'left';\n if (right) sideComputed = 'right';\n }\n\n const classes = Utils.classNames(className, `swipeout-actions-${sideComputed}`, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swipeout-button',\n props: Object.assign({\n id: [String, Number],\n text: String,\n confirmTitle: String,\n confirmText: String,\n overswipe: Boolean,\n close: Boolean,\n delete: Boolean,\n href: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n overswipe,\n delete: deleteProp,\n close,\n href,\n confirmTitle,\n confirmText,\n text\n } = props;\n const classes = Utils.classNames(className, {\n 'swipeout-overswipe': overswipe,\n 'swipeout-delete': deleteProp,\n 'swipeout-close': close\n }, Mixins.colorClasses(props));\n return _h('a', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n href: href || '#',\n id: id,\n 'data-confirm': confirmText || undefined,\n 'data-confirm-title': confirmTitle || undefined\n }\n }, [this.$slots['default'] || [text]]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swiper-slide',\n props: {\n id: [String, Number],\n zoom: Boolean\n },\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n zoom\n } = props;\n const classes = Utils.classNames(className, 'swiper-slide');\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [zoom ? _h('div', {\n class: 'swiper-zoom-container'\n }, [this.$slots['default']]) : this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swiper',\n props: Object.assign({\n id: [String, Number],\n params: Object,\n pagination: Boolean,\n scrollbar: Boolean,\n navigation: Boolean,\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n let paginationEl;\n let scrollbarEl;\n let buttonNextEl;\n let buttonPrevEl;\n\n if (self.paginationComputed) {\n paginationEl = _h('div', {\n ref: 'paginationEl',\n class: 'swiper-pagination'\n });\n }\n\n if (self.scrollbarComputed) {\n scrollbarEl = _h('div', {\n ref: 'scrollbarEl',\n class: 'swiper-scrollbar'\n });\n }\n\n if (self.navigationComputed) {\n buttonNextEl = _h('div', {\n ref: 'nextEl',\n class: 'swiper-button-next'\n });\n buttonPrevEl = _h('div', {\n ref: 'prevEl',\n class: 'swiper-button-prev'\n });\n }\n\n const classes = Utils.classNames(className, 'swiper-container', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-wrapper'], _h('div', {\n class: 'swiper-wrapper'\n }, [this.$slots['default']]), paginationEl, scrollbarEl, buttonPrevEl, buttonNextEl, this.$slots['after-wrapper']]);\n },\n\n computed: {\n paginationComputed() {\n const self = this;\n const {\n pagination,\n params\n } = self.props;\n\n if (pagination === true || params && params.pagination && !params.pagination.el) {\n return true;\n }\n\n return false;\n },\n\n scrollbarComputed() {\n const self = this;\n const {\n scrollbar,\n params\n } = self.props;\n\n if (scrollbar === true || params && params.scrollbar && !params.scrollbar.el) {\n return true;\n }\n\n return false;\n },\n\n navigationComputed() {\n const self = this;\n const {\n navigation,\n params\n } = self.props;\n\n if (navigation === true || params && params.navigation && !params.navigation.nextEl && !params.navigation.prevEl) {\n return true;\n }\n\n return false;\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n updated() {\n const self = this;\n\n if (!self.initialUpdate) {\n self.initialUpdate = true;\n return;\n }\n\n if (self.swiper && self.swiper.update) self.swiper.update();\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n const newParams = {\n pagination: {},\n navigation: {},\n scrollbar: {}\n };\n const {\n params,\n pagination,\n navigation,\n scrollbar\n } = self.props;\n if (params) Utils.extend(newParams, params);\n if (pagination && !newParams.pagination.el) newParams.pagination.el = self.$refs.paginationEl;\n\n if (navigation && !newParams.navigation.nextEl && !newParams.navigation.prevEl) {\n newParams.navigation.nextEl = self.$refs.nextEl;\n newParams.navigation.prevEl = self.$refs.prevEl;\n }\n\n if (scrollbar && !newParams.scrollbar.el) newParams.scrollbar.el = self.$refs.scrollbarEl;\n self.swiper = f7.swiper.create(self.$refs.el, newParams);\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.props.init) return;\n if (self.swiper && self.swiper.destroy) self.swiper.destroy();\n }\n\n};","import f7 from '../utils/f7';\nimport Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-tab',\n props: Object.assign({\n id: [String, Number],\n tabActive: Boolean\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n tabContent: null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n tabActive,\n id,\n className,\n style\n } = props;\n const tabContent = self.state.tabContent;\n const classes = Utils.classNames(className, 'tab', {\n 'tab-active': tabActive\n }, Mixins.colorClasses(props));\n let TabContent;\n if (tabContent) TabContent = tabContent.component;\n {\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [tabContent ? _h(TabContent, {\n key: tabContent.id,\n props: tabContent.props\n }) : this.$slots['default']]);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onTabShow', 'onTabHide']);\n },\n\n updated() {\n const self = this;\n if (!self.routerData) return;\n f7.events.emit('tabRouterDidUpdate', self.routerData);\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.$f7) {\n self.$f7.off('tabShow', self.onTabShow);\n self.$f7.off('tabHide', self.onTabHide);\n }\n\n if (!self.routerData) return;\n f7.routers.tabs.splice(f7.routers.tabs.indexOf(self.routerData), 1);\n self.routerData = null;\n self.eventTargetEl = null;\n delete self.routerData;\n delete self.eventTargetEl;\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.setState({\n tabContent: null\n });\n self.$f7ready(() => {\n self.$f7.on('tabShow', self.onTabShow);\n self.$f7.on('tabHide', self.onTabHide);\n self.eventTargetEl = el;\n self.routerData = {\n el,\n component: self,\n\n setTabContent(tabContent) {\n self.setState({\n tabContent\n });\n }\n\n };\n f7.routers.tabs.push(self.routerData);\n });\n },\n\n methods: {\n show(animate) {\n if (!this.$f7) return;\n this.$f7.tab.show(this.$refs.el, animate);\n },\n\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:show tabShow', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:hide tabHide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-tabs',\n props: Object.assign({\n id: [String, Number],\n animated: Boolean,\n swipeable: Boolean,\n routable: Boolean,\n swiperParams: {\n type: Object,\n default: undefined\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n animated,\n swipeable,\n id,\n style,\n className,\n routable\n } = props;\n const classes = Utils.classNames(className, Mixins.colorClasses(props));\n const wrapClasses = Utils.classNames({\n 'tabs-animated-wrap': animated,\n 'tabs-swipeable-wrap': swipeable\n });\n const tabsClasses = Utils.classNames({\n tabs: true,\n 'tabs-routable': routable\n });\n\n if (animated || swipeable) {\n return _h('div', {\n style: style,\n class: Utils.classNames(wrapClasses, classes),\n ref: 'wrapEl',\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: tabsClasses\n }, [this.$slots['default']])]);\n }\n\n return _h('div', {\n style: style,\n class: Utils.classNames(tabsClasses, classes),\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n mounted() {\n const self = this;\n const {\n swipeable,\n swiperParams\n } = self.props;\n if (!swipeable || !swiperParams) return;\n const wrapEl = self.$refs.wrapEl;\n if (!wrapEl) return;\n wrapEl.f7SwiperParams = swiperParams;\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-toolbar',\n props: Object.assign({\n id: [String, Number],\n tabbar: Boolean,\n labels: Boolean,\n scrollable: Boolean,\n hidden: Boolean,\n noShadow: Boolean,\n noHairline: Boolean,\n noBorder: Boolean,\n position: {\n type: String,\n default: undefined\n },\n topMd: {\n type: Boolean,\n default: undefined\n },\n topIos: {\n type: Boolean,\n default: undefined\n },\n topAurora: {\n type: Boolean,\n default: undefined\n },\n top: {\n type: Boolean,\n default: undefined\n },\n bottomMd: {\n type: Boolean,\n default: undefined\n },\n bottomIos: {\n type: Boolean,\n default: undefined\n },\n bottomAurora: {\n type: Boolean,\n default: undefined\n },\n bottom: {\n type: Boolean,\n default: undefined\n },\n inner: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className,\n inner,\n tabbar,\n labels,\n scrollable,\n hidden,\n noShadow,\n noHairline,\n noBorder,\n topMd,\n topIos,\n topAurora,\n top,\n bottomMd,\n bottomIos,\n bottomAurora,\n bottom,\n position\n } = props;\n const theme = self.state._theme;\n const classes = Utils.classNames(className, 'toolbar', {\n tabbar,\n 'toolbar-bottom': theme && theme.md && bottomMd || theme && theme.ios && bottomIos || theme && theme.aurora && bottomAurora || bottom || position === 'bottom',\n 'toolbar-top': theme && theme.md && topMd || theme && theme.ios && topIos || theme && theme.aurora && topAurora || top || position === 'top',\n 'tabbar-labels': labels,\n 'tabbar-scrollable': scrollable,\n 'toolbar-hidden': hidden,\n 'no-shadow': noShadow,\n 'no-hairline': noHairline || noBorder\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-inner'], inner ? _h('div', {\n class: 'toolbar-inner'\n }, [this.$slots['default']]) : this.$slots['default'], this.$slots['after-inner']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onHide', 'onShow']);\n },\n\n updated() {\n const self = this;\n\n if (self.props.tabbar && self.$f7) {\n self.$f7.toolbar.setHighlight(self.$refs.el);\n }\n },\n\n mounted() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el) return;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n if (self.props.tabbar) f7.toolbar.setHighlight(el);\n f7.on('toolbarShow', self.onShow);\n f7.on('toolbarHide', self.onHide);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el || !self.$f7) return;\n const f7 = self.$f7;\n f7.off('toolbarShow', self.onShow);\n f7.off('toolbarHide', self.onHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onHide(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('toolbar:hide toolbarHide');\n },\n\n onShow(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('toolbar:show toolbarShow');\n },\n\n hide(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.toolbar.hide(this.$refs.el, animate);\n },\n\n show(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.toolbar.show(this.$refs.el, animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number],\n toggle: {\n type: Boolean,\n default: undefined\n },\n itemToggle: Boolean,\n selectable: Boolean,\n selected: Boolean,\n opened: Boolean,\n label: String,\n loadChildren: Boolean,\n link: {\n type: [Boolean, String],\n default: undefined\n }\n }, Mixins.colorProps, {}, Mixins.linkActionsProps, {}, Mixins.linkRouterProps, {}, Mixins.linkIconProps),\n name: 'f7-treeview-item',\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n toggle,\n label,\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n iconSize,\n iconColor,\n link\n } = props;\n const slots = self.$slots;\n const hasChildren = slots.default && slots.default.length || slots.children && slots.children.length || slots['children-start'] && slots['children-start'].length;\n const needToggle = typeof toggle === 'undefined' ? hasChildren : toggle;\n let iconEl;\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n const TreeviewRootTag = link || link === '' ? 'a' : 'div';\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [_h(TreeviewRootTag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'rootEl',\n class: self.itemRootClasses\n }, self.itemRootAttrs)), [this.$slots['root-start'], needToggle && _h('div', {\n class: 'treeview-toggle'\n }), _h('div', {\n class: 'treeview-item-content'\n }, [this.$slots['content-start'], iconEl, this.$slots['media'], _h('div', {\n class: 'treeview-item-label'\n }, [this.$slots['label-start'], label, this.$slots['label']]), this.$slots['content'], this.$slots['content-end']]), this.$slots['root'], this.$slots['root-end']]), hasChildren && _h('div', {\n class: 'treeview-item-children'\n }, [this.$slots['children-start'], this.$slots['default'], this.$slots['children']])]);\n },\n\n computed: {\n itemRootAttrs() {\n const self = this;\n const props = self.props;\n const {\n link\n } = props;\n let href = link;\n if (link === true) href = '#';\n if (link === false) href = undefined;\n return Utils.extend({\n href\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n itemRootClasses() {\n const self = this;\n const props = self.props;\n const {\n selectable,\n selected,\n itemToggle\n } = props;\n return Utils.classNames('treeview-item-root', {\n 'treeview-item-selectable': selectable,\n 'treeview-item-selected': selected,\n 'treeview-item-toggle': itemToggle\n }, Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n opened,\n loadChildren\n } = props;\n return Utils.classNames(className, 'treeview-item', {\n 'treeview-item-opened': opened,\n 'treeview-load-children': loadChildren\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onOpen', 'onClose', 'onLoadChildren']);\n },\n\n mounted() {\n const self = this;\n const {\n el,\n rootEl\n } = self.$refs;\n rootEl.addEventListener('click', self.onClick);\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('treeviewOpen', self.onOpen);\n f7.on('treeviewClose', self.onClose);\n f7.on('treeviewLoadChildren', self.onLoadChildren);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el,\n rootEl\n } = self.$refs;\n rootEl.removeEventListener('click', self.onClick);\n if (!el || self.$f7) return;\n self.$f7.off('treeviewOpen', self.onOpen);\n self.$f7.off('treeviewClose', self.onClose);\n self.$f7.off('treeviewLoadChildren', self.onLoadChildren);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('treeview:open treeviewOpen', el);\n },\n\n onClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('treeview:close treeviewClose', el);\n },\n\n onLoadChildren(el, done) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('treeview:loadchildren treeviewLoadChildren', el, done);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n name: 'f7-treeview',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'treeview', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import f7 from '../utils/f7';\nimport Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-view',\n props: Object.assign({\n id: [String, Number],\n tab: Boolean,\n tabActive: Boolean,\n name: String,\n router: Boolean,\n linksView: [Object, String],\n url: String,\n main: Boolean,\n stackPages: Boolean,\n xhrCache: Boolean,\n xhrCacheIgnore: Array,\n xhrCacheIgnoreGetParameters: Boolean,\n xhrCacheDuration: Number,\n preloadPreviousPage: Boolean,\n allowDuplicateUrls: Boolean,\n reloadPages: Boolean,\n reloadDetail: Boolean,\n masterDetailResizable: Boolean,\n masterDetailBreakpoint: Number,\n removeElements: Boolean,\n removeElementsWithTimeout: Boolean,\n removeElementsTimeout: Number,\n restoreScrollTopOnBack: Boolean,\n loadInitialPage: Boolean,\n iosSwipeBack: Boolean,\n iosSwipeBackAnimateShadow: Boolean,\n iosSwipeBackAnimateOpacity: Boolean,\n iosSwipeBackActiveArea: Number,\n iosSwipeBackThreshold: Number,\n mdSwipeBack: Boolean,\n mdSwipeBackAnimateShadow: Boolean,\n mdSwipeBackAnimateOpacity: Boolean,\n mdSwipeBackActiveArea: Number,\n mdSwipeBackThreshold: Number,\n auroraSwipeBack: Boolean,\n auroraSwipeBackAnimateShadow: Boolean,\n auroraSwipeBackAnimateOpacity: Boolean,\n auroraSwipeBackActiveArea: Number,\n auroraSwipeBackThreshold: Number,\n pushState: Boolean,\n pushStateRoot: String,\n pushStateAnimate: Boolean,\n pushStateAnimateOnLoad: Boolean,\n pushStateSeparator: String,\n pushStateOnLoad: Boolean,\n animate: Boolean,\n transition: String,\n iosDynamicNavbar: Boolean,\n iosAnimateNavbarBackIcon: Boolean,\n materialPageLoadDelay: Number,\n passRouteQueryToRequest: Boolean,\n passRouteParamsToRequest: Boolean,\n routes: Array,\n routesAdd: Array,\n routesBeforeEnter: [Function, Array],\n routesBeforeLeave: [Function, Array],\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n pages: []\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n tab,\n main,\n tabActive,\n className\n } = props;\n const classes = Utils.classNames(className, 'view', {\n 'view-main': main,\n 'tab-active': tabActive,\n tab\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default'], self.state.pages.map(page => {\n const PageComponent = page.component;\n {\n return _h(PageComponent, {\n key: page.id,\n props: page.props\n });\n }\n })]);\n },\n\n created() {\n const self = this;\n Utils.bindMethods(self, ['onSwipeBackMove', 'onSwipeBackBeforeChange', 'onSwipeBackAfterChange', 'onSwipeBackBeforeReset', 'onSwipeBackAfterReset', 'onTabShow', 'onTabHide', 'onViewInit']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.$f7ready(f7Instance => {\n f7Instance.on('tabShow', self.onTabShow);\n f7Instance.on('tabHide', self.onTabHide);\n self.routerData = {\n el,\n component: self,\n pages: self.state.pages,\n instance: null,\n\n setPages(pages) {\n self.setState({\n pages\n });\n }\n\n };\n f7.routers.views.push(self.routerData);\n if (!self.props.init) return;\n self.routerData.instance = f7Instance.views.create(el, Object.assign({\n on: {\n init: self.onViewInit\n }\n }, Utils.noUndefinedProps(self.$options.propsData || {})));\n self.f7View = self.routerData.instance;\n self.f7View.on('resize', self.onResize);\n self.f7View.on('swipebackMove', self.onSwipeBackMove);\n self.f7View.on('swipebackBeforeChange', self.onSwipeBackBeforeChange);\n self.f7View.on('swipebackAfterChange', self.onSwipeBackAfterChange);\n self.f7View.on('swipebackBeforeReset', self.onSwipeBackBeforeReset);\n self.f7View.on('swipebackAfterReset', self.onSwipeBackAfterReset);\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (f7.instance) {\n f7.instance.off('tabShow', self.onTabShow);\n f7.instance.off('tabHide', self.onTabHide);\n }\n\n if (self.f7View) {\n self.f7View.off('resize', self.onResize);\n self.f7View.off('swipebackMove', self.onSwipeBackMove);\n self.f7View.off('swipebackBeforeChange', self.onSwipeBackBeforeChange);\n self.f7View.off('swipebackAfterChange', self.onSwipeBackAfterChange);\n self.f7View.off('swipebackBeforeReset', self.onSwipeBackBeforeReset);\n self.f7View.off('swipebackAfterReset', self.onSwipeBackAfterReset);\n if (self.f7View.destroy) self.f7View.destroy();\n }\n\n f7.routers.views.splice(f7.routers.views.indexOf(self.routerData), 1);\n self.routerData = null;\n delete self.routerData;\n },\n\n updated() {\n const self = this;\n if (!self.routerData) return;\n f7.events.emit('viewRouterDidUpdate', self.routerData);\n },\n\n methods: {\n onViewInit(view) {\n const self = this;\n self.dispatchEvent('view:init viewInit', view);\n\n if (!self.props.init) {\n self.routerData.instance = view;\n self.f7View = self.routerData.instance;\n }\n },\n\n onResize(view, width) {\n this.dispatchEvent('view:resize viewResize', width);\n },\n\n onSwipeBackMove(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:move swipeBackMove', swipeBackData);\n },\n\n onSwipeBackBeforeChange(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:beforechange swipeBackBeforeChange', swipeBackData);\n },\n\n onSwipeBackAfterChange(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:afterchange swipeBackAfterChange', swipeBackData);\n },\n\n onSwipeBackBeforeReset(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:beforereset swipeBackBeforeReset', swipeBackData);\n },\n\n onSwipeBackAfterReset(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:afterreset swipeBackAfterReset', swipeBackData);\n },\n\n onTabShow(el) {\n if (el === this.$refs.el) {\n this.dispatchEvent('tab:show tabShow', el);\n }\n },\n\n onTabHide(el) {\n if (el === this.$refs.el) {\n this.dispatchEvent('tab:hide tabHide', el);\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-views',\n props: Object.assign({\n id: [String, Number],\n tabs: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tabs\n } = props;\n const classes = Utils.classNames(className, 'views', {\n tabs\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","/* eslint no-underscore-dangle: \"off\" */\nimport f7 from './f7';\nimport Utils from './utils';\n\nlet routerComponentIdCounter = 0;\n\nexport default {\n proto: {\n pageComponentLoader(routerEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n const el = routerEl;\n let viewRouter;\n f7.routers.views.forEach((data) => {\n if (data.el && data.el === routerEl) {\n viewRouter = data;\n }\n });\n\n if (!viewRouter) {\n reject();\n return;\n }\n\n const id = `${Utils.now()}_${(routerComponentIdCounter += 1)}`;\n const pageData = {\n component,\n id,\n props: Utils.extend(\n {\n f7route: options.route,\n $f7route: options.route,\n f7router: router,\n $f7router: router,\n },\n options.route.params,\n options.props || {},\n ),\n };\n if (viewRouter.component) {\n viewRouter.component.$f7router = router;\n viewRouter.component.$f7route = options.route;\n }\n\n let resolved;\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== viewRouter || resolved) return;\n f7.events.off('viewRouterDidUpdate', onDidUpdate);\n\n const pageEl = el.children[el.children.length - 1];\n pageData.el = pageEl;\n\n resolve(pageEl);\n resolved = true;\n }\n\n f7.events.on('viewRouterDidUpdate', onDidUpdate);\n\n viewRouter.pages.push(pageData);\n viewRouter.setPages(viewRouter.pages);\n },\n removePage($pageEl) {\n if (!$pageEl) return;\n const router = this;\n let f7Page;\n if ('length' in $pageEl && $pageEl[0]) f7Page = $pageEl[0].f7Page;\n else f7Page = $pageEl.f7Page;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n router.app.$($pageEl).remove();\n return;\n }\n let viewRouter;\n f7.routers.views.forEach((data) => {\n if (data.el && data.el === router.el) {\n viewRouter = data;\n }\n });\n\n let pageEl;\n if ('length' in $pageEl) {\n // Dom7\n if ($pageEl.length === 0) return;\n pageEl = $pageEl[0];\n } else {\n pageEl = $pageEl;\n }\n if (!pageEl) return;\n\n let pageComponentFound;\n viewRouter.pages.forEach((page, index) => {\n if (page.el === pageEl) {\n pageComponentFound = true;\n viewRouter.pages.splice(index, 1);\n viewRouter.setPages(viewRouter.pages);\n }\n });\n if (!pageComponentFound) {\n pageEl.parentNode.removeChild(pageEl);\n }\n },\n tabComponentLoader(tabEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n if (!tabEl) reject();\n\n let tabRouter;\n f7.routers.tabs.forEach((tabData) => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n reject();\n return;\n }\n\n const id = `${Utils.now()}_${(routerComponentIdCounter += 1)}`;\n const tabContent = {\n id,\n component,\n props: Utils.extend(\n {\n f7route: options.route,\n $f7route: options.route,\n f7router: router,\n $f7router: router,\n },\n options.route.params,\n options.props || {},\n ),\n };\n\n if (tabRouter.component) {\n tabRouter.component.$f7router = router;\n tabRouter.component.$f7route = options.route;\n }\n\n let resolved;\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== tabRouter || resolved) return;\n f7.events.off('tabRouterDidUpdate', onDidUpdate);\n\n const tabContentEl = tabEl.children[0];\n resolve(tabContentEl);\n\n resolved = true;\n }\n\n f7.events.on('tabRouterDidUpdate', onDidUpdate);\n\n tabRouter.setTabContent(tabContent);\n },\n removeTabContent(tabEl) {\n if (!tabEl) return;\n\n let tabRouter;\n f7.routers.tabs.forEach((tabData) => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n const hasComponent = tabRouter && tabRouter.component;\n if (!tabRouter || !hasComponent) {\n tabEl.innerHTML = ''; // eslint-disable-line\n return;\n }\n tabRouter.setTabContent(null);\n },\n modalComponentLoader(rootEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n const modalsRouter = f7.routers.modals;\n\n if (!modalsRouter) {\n reject();\n return;\n }\n\n const id = `${Utils.now()}_${(routerComponentIdCounter += 1)}`;\n const modalData = {\n component,\n id,\n props: Utils.extend(\n {\n f7route: options.route,\n $f7route: options.route,\n f7router: router,\n $f7router: router,\n },\n options.route.params,\n options.props || {},\n ),\n };\n if (modalsRouter.component) {\n modalsRouter.component.$f7router = router;\n modalsRouter.component.$f7route = options.route;\n }\n\n let resolved;\n function onDidUpdate() {\n if (resolved) return;\n f7.events.off('modalsRouterDidUpdate', onDidUpdate);\n\n const modalEl = modalsRouter.el.children[modalsRouter.el.children.length - 1];\n modalData.el = modalEl;\n\n resolve(modalEl);\n resolved = true;\n }\n\n f7.events.on('modalsRouterDidUpdate', onDidUpdate);\n\n modalsRouter.modals.push(modalData);\n modalsRouter.setModals(modalsRouter.modals);\n },\n removeModal(modalEl) {\n const modalsRouter = f7.routers.modals;\n if (!modalsRouter) return;\n\n let modalDataToRemove;\n modalsRouter.modals.forEach((modalData) => {\n if (modalData.el === modalEl) modalDataToRemove = modalData;\n });\n\n modalsRouter.modals.splice(modalsRouter.modals.indexOf(modalDataToRemove), 1);\n modalsRouter.setModals(modalsRouter.modals);\n },\n },\n};\n","/**\n * Framework7 Vue 5.7.14\n * Build full featured iOS & Android apps using Framework7 & Vue\n * https://framework7.io/vue/\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: November 9, 2020\n */\nimport Vue from 'vue';\nimport f7AccordionContent from './components/accordion-content';\nimport f7AccordionItem from './components/accordion-item';\nimport f7AccordionToggle from './components/accordion-toggle';\nimport f7Accordion from './components/accordion';\nimport f7ActionsButton from './components/actions-button';\nimport f7ActionsGroup from './components/actions-group';\nimport f7ActionsLabel from './components/actions-label';\nimport f7Actions from './components/actions';\nimport f7App from './components/app';\nimport f7Appbar from './components/appbar';\nimport f7Badge from './components/badge';\nimport f7BlockFooter from './components/block-footer';\nimport f7BlockHeader from './components/block-header';\nimport f7BlockTitle from './components/block-title';\nimport f7Block from './components/block';\nimport f7Button from './components/button';\nimport f7CardContent from './components/card-content';\nimport f7CardFooter from './components/card-footer';\nimport f7CardHeader from './components/card-header';\nimport f7Card from './components/card';\nimport f7Checkbox from './components/checkbox';\nimport f7Chip from './components/chip';\nimport f7Col from './components/col';\nimport f7FabBackdrop from './components/fab-backdrop';\nimport f7FabButton from './components/fab-button';\nimport f7FabButtons from './components/fab-buttons';\nimport f7Fab from './components/fab';\nimport f7Gauge from './components/gauge';\nimport f7Icon from './components/icon';\nimport f7Input from './components/input';\nimport f7Link from './components/link';\nimport f7ListButton from './components/list-button';\nimport f7ListGroup from './components/list-group';\nimport f7ListIndex from './components/list-index';\nimport f7ListInput from './components/list-input';\nimport f7ListItemCell from './components/list-item-cell';\nimport f7ListItemContent from './components/list-item-content';\nimport f7ListItemRow from './components/list-item-row';\nimport f7ListItem from './components/list-item';\nimport f7List from './components/list';\nimport f7LoginScreenTitle from './components/login-screen-title';\nimport f7LoginScreen from './components/login-screen';\nimport f7MenuDropdownItem from './components/menu-dropdown-item';\nimport f7MenuDropdown from './components/menu-dropdown';\nimport f7MenuItem from './components/menu-item';\nimport f7Menu from './components/menu';\nimport f7Message from './components/message';\nimport f7MessagebarAttachment from './components/messagebar-attachment';\nimport f7MessagebarAttachments from './components/messagebar-attachments';\nimport f7MessagebarSheetImage from './components/messagebar-sheet-image';\nimport f7MessagebarSheetItem from './components/messagebar-sheet-item';\nimport f7MessagebarSheet from './components/messagebar-sheet';\nimport f7Messagebar from './components/messagebar';\nimport f7MessagesTitle from './components/messages-title';\nimport f7Messages from './components/messages';\nimport f7NavLeft from './components/nav-left';\nimport f7NavRight from './components/nav-right';\nimport f7NavTitleLarge from './components/nav-title-large';\nimport f7NavTitle from './components/nav-title';\nimport f7Navbar from './components/navbar';\nimport f7PageContent from './components/page-content';\nimport f7Page from './components/page';\nimport f7Panel from './components/panel';\nimport f7PhotoBrowser from './components/photo-browser';\nimport f7Popover from './components/popover';\nimport f7Popup from './components/popup';\nimport f7Preloader from './components/preloader';\nimport f7Progressbar from './components/progressbar';\nimport f7Radio from './components/radio';\nimport f7Range from './components/range';\nimport f7RoutableModals from './components/routable-modals';\nimport f7Row from './components/row';\nimport f7Searchbar from './components/searchbar';\nimport f7Segmented from './components/segmented';\nimport f7Sheet from './components/sheet';\nimport f7SkeletonBlock from './components/skeleton-block';\nimport f7SkeletonText from './components/skeleton-text';\nimport f7Stepper from './components/stepper';\nimport f7Subnavbar from './components/subnavbar';\nimport f7SwipeoutActions from './components/swipeout-actions';\nimport f7SwipeoutButton from './components/swipeout-button';\nimport f7SwiperSlide from './components/swiper-slide';\nimport f7Swiper from './components/swiper';\nimport f7Tab from './components/tab';\nimport f7Tabs from './components/tabs';\nimport f7TextEditor from './components/text-editor';\nimport f7Toggle from './components/toggle';\nimport f7Toolbar from './components/toolbar';\nimport f7TreeviewItem from './components/treeview-item';\nimport f7Treeview from './components/treeview';\nimport f7View from './components/view';\nimport f7Views from './components/views';\n\n/* eslint no-underscore-dangle: \"off\" */\nimport componentsRouter from './utils/components-router';\nimport f7, { f7Instance } from './utils/f7';\n\nfunction f7ready(callback) {\n f7.ready(callback);\n}\n\nconst f7Theme = {};\n\nconst Plugin = {\n name: 'phenomePlugin',\n installed: false,\n install(params = {}) {\n if (Plugin.installed) return;\n Plugin.installed = true;\n\n const Framework7 = this;\n f7.Framework7 = Framework7;\n f7.events = new Framework7.Events();\n\n // eslint-disable-next-line\n const Extend = params.Vue || Vue;\n\n Vue.component('f7-accordion-content', f7AccordionContent);\n Vue.component('f7-accordion-item', f7AccordionItem);\n Vue.component('f7-accordion-toggle', f7AccordionToggle);\n Vue.component('f7-accordion', f7Accordion);\n Vue.component('f7-actions-button', f7ActionsButton);\n Vue.component('f7-actions-group', f7ActionsGroup);\n Vue.component('f7-actions-label', f7ActionsLabel);\n Vue.component('f7-actions', f7Actions);\n Vue.component('f7-app', f7App);\n Vue.component('f7-appbar', f7Appbar);\n Vue.component('f7-badge', f7Badge);\n Vue.component('f7-block-footer', f7BlockFooter);\n Vue.component('f7-block-header', f7BlockHeader);\n Vue.component('f7-block-title', f7BlockTitle);\n Vue.component('f7-block', f7Block);\n Vue.component('f7-button', f7Button);\n Vue.component('f7-card-content', f7CardContent);\n Vue.component('f7-card-footer', f7CardFooter);\n Vue.component('f7-card-header', f7CardHeader);\n Vue.component('f7-card', f7Card);\n Vue.component('f7-checkbox', f7Checkbox);\n Vue.component('f7-chip', f7Chip);\n Vue.component('f7-col', f7Col);\n Vue.component('f7-fab-backdrop', f7FabBackdrop);\n Vue.component('f7-fab-button', f7FabButton);\n Vue.component('f7-fab-buttons', f7FabButtons);\n Vue.component('f7-fab', f7Fab);\n Vue.component('f7-gauge', f7Gauge);\n Vue.component('f7-icon', f7Icon);\n Vue.component('f7-input', f7Input);\n Vue.component('f7-link', f7Link);\n Vue.component('f7-list-button', f7ListButton);\n Vue.component('f7-list-group', f7ListGroup);\n Vue.component('f7-list-index', f7ListIndex);\n Vue.component('f7-list-input', f7ListInput);\n Vue.component('f7-list-item-cell', f7ListItemCell);\n Vue.component('f7-list-item-content', f7ListItemContent);\n Vue.component('f7-list-item-row', f7ListItemRow);\n Vue.component('f7-list-item', f7ListItem);\n Vue.component('f7-list', f7List);\n Vue.component('f7-login-screen-title', f7LoginScreenTitle);\n Vue.component('f7-login-screen', f7LoginScreen);\n Vue.component('f7-menu-dropdown-item', f7MenuDropdownItem);\n Vue.component('f7-menu-dropdown', f7MenuDropdown);\n Vue.component('f7-menu-item', f7MenuItem);\n Vue.component('f7-menu', f7Menu);\n Vue.component('f7-message', f7Message);\n Vue.component('f7-messagebar-attachment', f7MessagebarAttachment);\n Vue.component('f7-messagebar-attachments', f7MessagebarAttachments);\n Vue.component('f7-messagebar-sheet-image', f7MessagebarSheetImage);\n Vue.component('f7-messagebar-sheet-item', f7MessagebarSheetItem);\n Vue.component('f7-messagebar-sheet', f7MessagebarSheet);\n Vue.component('f7-messagebar', f7Messagebar);\n Vue.component('f7-messages-title', f7MessagesTitle);\n Vue.component('f7-messages', f7Messages);\n Vue.component('f7-nav-left', f7NavLeft);\n Vue.component('f7-nav-right', f7NavRight);\n Vue.component('f7-nav-title-large', f7NavTitleLarge);\n Vue.component('f7-nav-title', f7NavTitle);\n Vue.component('f7-navbar', f7Navbar);\n Vue.component('f7-page-content', f7PageContent);\n Vue.component('f7-page', f7Page);\n Vue.component('f7-panel', f7Panel);\n Vue.component('f7-photo-browser', f7PhotoBrowser);\n Vue.component('f7-popover', f7Popover);\n Vue.component('f7-popup', f7Popup);\n Vue.component('f7-preloader', f7Preloader);\n Vue.component('f7-progressbar', f7Progressbar);\n Vue.component('f7-radio', f7Radio);\n Vue.component('f7-range', f7Range);\n Vue.component('f7-routable-modals', f7RoutableModals);\n Vue.component('f7-row', f7Row);\n Vue.component('f7-searchbar', f7Searchbar);\n Vue.component('f7-segmented', f7Segmented);\n Vue.component('f7-sheet', f7Sheet);\n Vue.component('f7-skeleton-block', f7SkeletonBlock);\n Vue.component('f7-skeleton-text', f7SkeletonText);\n Vue.component('f7-stepper', f7Stepper);\n Vue.component('f7-subnavbar', f7Subnavbar);\n Vue.component('f7-swipeout-actions', f7SwipeoutActions);\n Vue.component('f7-swipeout-button', f7SwipeoutButton);\n Vue.component('f7-swiper-slide', f7SwiperSlide);\n Vue.component('f7-swiper', f7Swiper);\n Vue.component('f7-tab', f7Tab);\n Vue.component('f7-tabs', f7Tabs);\n Vue.component('f7-text-editor', f7TextEditor);\n Vue.component('f7-toggle', f7Toggle);\n Vue.component('f7-toolbar', f7Toolbar);\n Vue.component('f7-treeview-item', f7TreeviewItem);\n Vue.component('f7-treeview', f7Treeview);\n Vue.component('f7-view', f7View);\n Vue.component('f7-views', f7Views);\n\n // DEFINE_INSTANCE_PROTOS_START\n Object.defineProperty(Extend.prototype, '$f7', {\n get() {\n return f7.instance;\n },\n });\n // DEFINE_INSTANCE_PROTOS_END\n\n const { theme } = params;\n if (theme === 'md') f7Theme.md = true;\n if (theme === 'ios') f7Theme.ios = true;\n if (theme === 'aurora') f7Theme.aurora = true;\n if (!theme || theme === 'auto') {\n f7Theme.ios = !!Framework7.device.ios;\n f7Theme.aurora = Framework7.device.desktop && Framework7.device.electron;\n f7Theme.md = !f7Theme.ios && !f7Theme.aurora;\n }\n f7.ready(() => {\n f7Theme.ios = f7.instance.theme === 'ios';\n f7Theme.md = f7.instance.theme === 'md';\n f7Theme.aurora = f7.instance.theme === 'aurora';\n });\n\n // DEFINE_PROTOS_START\n Object.defineProperty(Extend.prototype, '$theme', {\n get() {\n return {\n ios: f7.instance ? f7.instance.theme === 'ios' : f7Theme.ios,\n md: f7.instance ? f7.instance.theme === 'md' : f7Theme.md,\n aurora: f7.instance ? f7.instance.theme === 'aurora' : f7Theme.aurora,\n };\n },\n });\n\n Extend.prototype.Dom7 = Framework7.$;\n Extend.prototype.$$ = Framework7.$;\n Extend.prototype.$device = Framework7.device;\n Extend.prototype.$request = Framework7.request;\n Extend.prototype.$utils = Framework7.utils;\n Extend.prototype.$f7ready = f7ready;\n\n Object.defineProperty(Extend.prototype, '$f7route', {\n get() {\n const self = this;\n if (self.props && self.props.f7route) return self.props.f7route;\n if (self.f7route) return self.f7route;\n if (self._f7route) return self._f7route;\n\n let route;\n // eslint-disable-next-line\n if ('vue' === 'vue') {\n if (self.$vnode && self.$vnode.data && self.$vnode.data.props && self.$vnode.data.props.f7route) {\n route = self.$vnode.data.props.f7route;\n }\n let parent = self;\n while (parent && !route) {\n if (parent._f7route) route = parent._f7route;\n parent = parent.$parent;\n }\n }\n return route;\n },\n set(value) {\n const self = this;\n self._f7route = value;\n },\n });\n Object.defineProperty(Extend.prototype, '$f7router', {\n get() {\n const self = this;\n if (self.props && self.props.f7router) return self.props.f7router;\n if (self.f7router) return self.f7router;\n if (self._f7router) return self._f7router;\n\n let router;\n // eslint-disable-next-line\n if ('vue' === 'vue') {\n if (self.$vnode && self.$vnode.data && self.$vnode.data.props && self.$vnode.data.props.f7route) {\n router = self.$vnode.data.props.f7router;\n }\n let parent = self;\n while (parent && !router) {\n if (parent._f7router) router = parent._f7router;\n else if (parent.f7View) {\n router = parent.f7View.router;\n } else if (parent.$refs && parent.$refs.el && parent.$refs.el.f7View) {\n router = parent.$refs.el.f7View.router;\n }\n parent = parent.$parent;\n }\n }\n return router;\n },\n set(value) {\n const self = this;\n self._f7router = value;\n },\n });\n // DEFINE_PROTOS_END\n\n // Extend F7 Router\n Framework7.Router.use(componentsRouter);\n },\n};\n\nexport { f7ready, f7Instance as f7, f7Theme as theme };\nexport default Plugin;\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./marquee.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./marquee.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n\r\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./marquee.vue?vue&type=template&id=9911d878&scoped=true\"\nimport script from \"./marquee.vue?vue&type=script&lang=js\"\nexport * from \"./marquee.vue?vue&type=script&lang=js\"\nimport style0 from \"./marquee.vue?vue&type=style&index=0&id=9911d878&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9911d878\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-button',{staticClass:\"popup-marquee\",attrs:{\"popup-open\":\"#popup-marquee\"}},[_c('div',{staticClass:\"marquee-content\"},[_c('div',{staticClass:\"am-notice-bar\"},[_c('div',{staticClass:\"am-notice-bar-icon\"},[_c('span',{staticClass:\"notice-icon\"})]),_vm._v(\" \"),_c('vue-seamless-scroll',{staticClass:\"am-notice-bar-content\",attrs:{\"data\":_vm.lamplist,\"class-option\":_vm.optionLeft}},[_c('ul',{ref:\"marqueeRef\",staticClass:\"item\",style:('width:'+_vm.lampWidth+'px'),attrs:{\"id\":\"marquee-item\"}},_vm._l((_vm.lamplist),function(item){return _c('li',{key:item.Id,staticClass:\"li-marquee\",style:('margin-left:'+_vm.screenWidth+'px'),domProps:{\"textContent\":_vm._s(item.Content)}})}),0)])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./preloader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./preloader.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./preloader.vue?vue&type=template&id=2389c993&scoped=true\"\nimport script from \"./preloader.vue?vue&type=script&lang=js\"\nexport * from \"./preloader.vue?vue&type=script&lang=js\"\nimport style0 from \"./preloader.vue?vue&type=style&index=0&id=2389c993&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2389c993\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"loader\"},[_c('div',{staticClass:\"loader-inner line-scale\"},_vm._l((_vm.list),function(item){return _c('div',{key:item})}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// 引入 axios\r\nimport axios from 'axios'\r\n// 测试地址\r\naxios.defaults.baseURL = '';\r\n\r\nvar http = {\r\n\r\n /** get 请求\r\n * @param {接口地址} url\r\n * @param {请求参数} params\r\n */\r\n get: function(url,params){\r\n return new Promise((resolve,reject) => {\r\n axios.get(url,{\r\n params:params\r\n })\r\n .then((response) => {\r\n resolve( response.data );\r\n })\r\n .catch((error) => {\r\n reject( error );\r\n });\r\n })\r\n },\r\n /** post 请求\r\n * @param {接口地址} url\r\n * @param {请求参数} params\r\n */\r\n post: function(url,params){\r\n return new Promise((resolve,reject) => {\r\n axios.post(url,params)\r\n .then((response) => {\r\n resolve( response.data );\r\n })\r\n .catch((error) => {\r\n reject( error );\r\n });\r\n })\r\n }\r\n}\r\nexport default http","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 1\">\r\n \r\n {{ currency }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ $t(\"home_0001\") }}
\r\n
\r\n
{{ memberBalance | formatCurrency }} \r\n
\r\n
\r\n \r\n \r\n
\r\n
{{ $t(\"home_0002\") }}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{ groups.name }} \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
{{ game.GameName }}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ game.Name }}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ $t(\"home_0010\") }}\r\n \r\n chevron_right \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {{ item.Name }} \r\n \r\n \r\n {{ $t(\"common_under_maintenance\") }} \r\n N/A \r\n {{ item.Balance | formatCurrency }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"common_balance_transfer_in\") }} \r\n \r\n \r\n {{ $t(\"common_balance_transfer_out\") }} \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t(\"home_deposit\") }} \r\n \r\n \r\n {{ $t(\"home_withdrawal\") }} \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{ selectedMessage.Title }} \r\n {{ selectedMessage.CreateTs | time }} \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ $t(\"common_set_readed\") }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"common_next\") }} \r\n \r\n \r\n {{ $t(\"common_close\") }} \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"home_new_member_nva\") }} \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"common_next\") }} \r\n \r\n \r\n {{ $t(\"common_close\") }} \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n\r\n","\r\n \r\n \r\n \r\n \r\n {{ $t('game_category_list_0001') }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{item.GameName}}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{item.GameName}}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{item.GameName}}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{item.GameName}}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n {{ $t('home_0010') }}\r\n \r\n chevron_right \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {{item.Name}} \r\n \r\n \r\n {{ $t('common_under_maintenance') }} \r\n N/A \r\n {{item.Balance| formatCurrency}} \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ $t('common_balance_transfer_in') }} \r\n \r\n \r\n {{ $t('common_balance_transfer_out') }} \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t('home_deposit') }} \r\n \r\n \r\n {{ $t('home_withdrawal') }} \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","\r\n \r\n \r\n \r\n \r\n {{ $t('fish_list_0001') }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{item.GameName}}
\r\n
{{getFishDesc(item.ProviderId)}}
\r\n
\r\n
\r\n {{ $t('fish_list_0002') }} \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n {{ $t('home_0010') }}\r\n \r\n chevron_right \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {{item.Name}} \r\n \r\n \r\n {{ $t('common_under_maintenance') }} \r\n N/A \r\n {{item.Balance| formatCurrency}} \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ $t('common_balance_transfer_in') }} \r\n \r\n \r\n {{ $t('common_balance_transfer_out') }} \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t('home_deposit') }} \r\n \r\n \r\n {{ $t('home_withdrawal') }} \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=200d84ac&scoped=true\"\nimport script from \"./home.vue?vue&type=script&lang=js\"\nexport * from \"./home.vue?vue&type=script&lang=js\"\nimport style0 from \"./home.vue?vue&type=style&index=0&id=200d84ac&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"200d84ac\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-home\",attrs:{\"name\":\"home\"},on:{\"page:init\":_vm.onPageInit,\"page:beforein\":_vm.onPageBeforeIn}},[_c('f7-navbar',{attrs:{\"sliding\":false}},[_c('f7-nav-left',{},[_c('img',{attrs:{\"height\":\"44\",\"src\":`../static/images/yt999/merchant/${_vm.$f7.params.fileName}/logo/dlog.png`}})]),_vm._v(\" \"),_c('f7-nav-title',{attrs:{\"sliding\":\"\"}}),_vm._v(\" \"),_c('f7-nav-right',{staticClass:\"nav-balance\"},[(!_vm.isAppDevice && _vm.dowloadLink != '')?_c('f7-link',{attrs:{\"external\":\"\",\"href\":_vm.dowloadLink}},[_c('img',{staticClass:\"btn-dowload\",attrs:{\"src\":require(\"../static/images/yt999/app_dowload.png\"),\"height\":\"22\"}})]):_vm._e(),_vm._v(\" \"),_c('f7-link',{on:{\"click\":_vm.openChangeLanguagePopup}},[_c('img',{staticClass:\"btn-dowload\",attrs:{\"src\":require(\"../static/images/yt999/lang.png\"),\"height\":\"22\"}})]),_vm._v(\" \"),_c('f7-link',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currencyList.length > 1),expression:\"currencyList.length > 1\"}],staticClass:\"btn-currency\",on:{\"click\":_vm.openChangeCurrencyPopup}},[_c('span',{class:['icon-currency', 'icon-' + _vm.currency]}),_vm._v(\" \"),_c('span',{staticClass:\"code\"},[_vm._v(_vm._s(_vm.currency))])])],1)],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-banner\"},[(_vm.bannerShow)?_c('f7-swiper',{staticClass:\"swiper-banner\",attrs:{\"pagination\":\"\",\"next-button\":\"\",\"prev-button\":\"\",\"data-lazy\":\"{'enabled': true}\",\"params\":_vm.swiperParams}},_vm._l((_vm.bannerList),function(item,index){return _c('f7-swiper-slide',{key:index},[_c('img',{staticClass:\"swiper-lazy\",attrs:{\"src\":`${_vm.bannerBaseUri + item.Url}`}}),_vm._v(\" \"),_c('div',{staticClass:\"preloader swiper-lazy-preloader\"})])}),1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"main-category\"},[_c('marquee',{attrs:{\"lamplist\":_vm.lampList}}),_vm._v(\" \"),_c('div',{staticClass:\"user-info\"},[_c('div',{staticClass:\"user-detail row no-gap\"},[_c('div',{staticClass:\"left-area col-35\"},[_c('div',{staticClass:\"balance-title\"},[_vm._v(_vm._s(_vm.$t(\"home_0001\")))]),_vm._v(\" \"),(_vm.getLoginState)?_c('div',{staticClass:\"login-balance\"},[(_vm.memberBalance || _vm.memberBalance == 0.0)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.memberBalance)))]):_c('preloader',{staticClass:\"incenter\",attrs:{\"list\":4}}),_vm._v(\" \"),(_vm.memberBalance || _vm.memberBalance == 0.0)?_c('span',{staticClass:\"referr\",on:{\"click\":function($event){return _vm.getUserMemberBalance()}}},[_c('img',{attrs:{\"src\":require(\"../static/images/yt999/home/icon-refresh2.png\"),\"alt\":\"\",\"height\":\"15\"}})]):_vm._e()],1):_c('div',{staticClass:\"non-balance\",on:{\"click\":function($event){return _vm.$f7router.navigate('/login/')}}},[_vm._v(_vm._s(_vm.$t(\"home_0002\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"right-area col-65 row no-gap\"},[_c('div',{staticClass:\"action col-25\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/deposit/')}}},[_c('a',[_c('p',[_c('img',{attrs:{\"src\":`../static/images/yt999/home/deposit_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/home/deposit_enUS.png'`,\"alt\":\"Deposit\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"action col-25\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/withdraw/')}}},[_c('a',[_c('p',[_c('img',{attrs:{\"src\":`../static/images/yt999/home/withdraw_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/home/withdraw_enUS.png'`,\"alt\":\"Withdraw\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"action col-25\",on:{\"click\":_vm.openBalancePopup}},[_c('a',[_c('p',[_c('img',{attrs:{\"src\":`../static/images/yt999/home/transfer_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/home/transfer_enUS.png'`,\"alt\":\"Transfer\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"action col-25\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/')}}},[_c('a',[_c('p',[_c('img',{attrs:{\"src\":`../static/images/yt999/home/referrer_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/home/referrer_enUS.png'`,\"alt\":\"Transfer\"}})])])])])])])],1),_vm._v(\" \"),_c('van-tabs',{staticClass:\"tabs-games\",attrs:{\"color\":\"#4076fa\",\"title-active-color\":\"#4076fa\",\"scrollspy\":\"\",\"sticky\":\"\",\"swipeable\":\"\",\"line-width\":\"0\",\"offset-top\":\"45\"},on:{\"change\":_vm.activeTab,\"scroll\":_vm.setOffsetTop}},_vm._l((_vm.gameCategory),function(groups,key){return _c('van-tab',{key:key,staticClass:\"tab-content\",attrs:{\"title\":groups.name,\"name\":'tab-' + key,\"title-class\":'title-' + key},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('img',{attrs:{\"src\":`../static/images/yt999/home/nav-icon/nav_${key.toLowerCase()}.png`,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(groups.name))])]},proxy:true}],null,true)},[_vm._v(\" \"),_vm._l((groups.list),function(game){return [(key == 'Fish')?_c('div',{key:game.Id,staticClass:\"game-item fish-item\",class:[{ 'is-hot': game.IsHot }, 'is-hot-' + _vm.$f7.params.currLang],on:{\"click\":function($event){return _vm.playGame(game)}}},[_c('img',{staticClass:\"bg lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":`${_vm.fishHomeImgUri + game.GameCode.toLowerCase()}_home.png`,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\",attrs:{\"data-id\":game.ProviderId}},[_c('div',{staticClass:\"name-fish\"},[_vm._v(_vm._s(game.GameName))])])]):_c('div',{key:game.GameCode,staticClass:\"game-item\",class:[{ 'is-hot': game.IsHot }, 'is-hot-' + _vm.$f7.params.currLang],on:{\"click\":function($event){return _vm.playGame(game)}}},[_c('img',{staticClass:\"bg\",attrs:{\"src\":`../static/images/yt999/home/sidebar/${game.Type}_${game.Code}.png`,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\",attrs:{\"data-id\":game.ProviderId}},[(_vm.providerCodes[game.ProviderId])?_c('div',{staticClass:\"logo\"},[_c('img',{attrs:{\"src\":`../static/images/yt999/home/logo/logo_${_vm.providerCodes[game.ProviderId].code.toLowerCase()}.png`}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(game.Name))])])])]})],2)}),1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"popup-marquee\",attrs:{\"animate\":\"\",\"backdrop\":\"\",\"id\":\"popup-marquee\"},on:{\"popup:opened\":function($event){return _vm.marqueePopupOpened()},\"popup:close\":_vm.marqueePopupClose}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.$t('home_0009')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),(_vm.loadingSkeleton)?_c('f7-block',_vm._l((_vm.lampList),function(item){return _c('f7-card',{key:item.Id,attrs:{\"content\":item.Content,\"footer\":_vm._f(\"time\")(item.UpdateTs)}})}),1):_c('f7-block',_vm._l((_vm.lampList),function(item){return _c('f7-card',{key:item.Id,attrs:{\"content\":item.Content,\"footer\":_vm._f(\"time\")(item.UpdateTs)}})}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-balance\",on:{\"dialog:closed\":_vm.balanceCloseEvent,\"dialog:open\":_vm.balanceOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"home_0010\"))+\"\\n \"),_c('f7-link',{on:{\"click\":_vm.closeDialogBalance}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-balance\"},[_c('f7-block-header',{staticClass:\"block-header-totalBalance\"},[_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"home_0011\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.getAllBalanceList}},[_vm._v(_vm._s(_vm.$t(\"home_0012\")))])],1)],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"home_0013\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.walletBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-button',{staticClass:\"btn-recycling\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.oneClickRecycling}},[_vm._v(_vm._s(_vm.$t(\"home_0014\")))])],1)],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"home_0015\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.paddingBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"block-content\"},_vm._l((_vm.gameBalanceList),function(item){return _c('f7-row',{key:item.ProviderId,staticClass:\"item-balance\",class:`item-balance-${item.ProviderId}`},[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(item.Name))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[(item.IsMaintain)?_c('span',[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',[_vm._v(\"N/A\")]):_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGame(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMain(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1)],1)],1)],1)}),1),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-recharge border-radius-left\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.jumpPage(0, 'member-center/deposit')}}},[_vm._v(_vm._s(_vm.$t(\"home_deposit\")))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-withdrawal border-radius-right\",attrs:{\"large\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.jumpPage(0, 'member-center/withdraw')}}},[_vm._v(_vm._s(_vm.$t(\"home_withdrawal\")))])],1)],1)],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-message\",attrs:{\"id\":\"dialog-message\"}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_c('h3',[_vm._v(_vm._s(_vm.selectedMessage.Title))]),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm._f(\"time\")(_vm.selectedMessage.CreateTs)))])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-message\"},[_c('div',{staticClass:\"block-content\",domProps:{\"innerHTML\":_vm._s(_vm.selectedMessage.Content)}}),_vm._v(\" \"),_c('f7-row',{staticClass:\"row-toggle\",attrs:{\"no-gap\":\"\"}},[_c('f7-col'),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_c('span',{staticClass:\"text-14\"},[_vm._v(_vm._s(_vm.$t(\"common_set_readed\")))]),_vm._v(\" \"),_c('f7-toggle',{attrs:{\"checked\":\"\",\"color\":\"blue\",\"checked\":_vm.checkRead},on:{\"change\":_vm.toggleRead}})],1)],1),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-next border-radius-left\",class:_vm.userMessageList.length === 1 ? `button-disabled` : ``,attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.nextMessage($event)}}},[_vm._v(_vm._s(_vm.$t(\"common_next\")))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-close border-radius-right\",attrs:{\"large\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.closeMessagePopup()}}},[_vm._v(_vm._s(_vm.$t(\"common_close\")))])],1)],1)],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-newPlayerNav\",attrs:{\"id\":\"dialog-newPlayerNav\"},on:{\"dialog:closed\":_vm.messageCloseEvent,\"dialog:open\":_vm.messageOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"home_new_member_nva\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-message\"},[_c('f7-swiper',{attrs:{\"params\":_vm.swiperNewPlayerNav}},_vm._l((5),function(item){return _c('f7-swiper-slide',{key:item},[_c('div',{staticClass:\"block-content\"},[_c('img',{staticClass:\"new-player-nav-border\",attrs:{\"src\":`../static/images/yt999/merchant/${_vm.$f7.params.fileName}/newPlayerNav/${item}_${_vm.$f7.params.currLang}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])}),1),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-next border-radius-left swiper-button-next\",attrs:{\"large\":\"\",\"next-button\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"common_next\")))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-close border-radius-right\",attrs:{\"large\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.closeShowNewPlayerNav()}}},[_vm._v(_vm._s(_vm.$t(\"common_close\")))])],1)],1)],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-popupAd\",attrs:{\"id\":\"dialog-popupAd\"}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"home_news\")))]),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm.popupAdName))])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-message\"},[_c('f7-swiper',{attrs:{\"params\":_vm.swiperPopupAd}},_vm._l((_vm.popupAdlist),function(item,index){return _c('f7-swiper-slide',{key:index},[_c('div',{staticClass:\"block-content\"},[_c('img',{staticClass:\"new-player-nav-border\",attrs:{\"src\":`${_vm.popupAdImgUri + item.Url}`,\"width\":\"100%\",\"alt\":\"\"}})])])}),1),_vm._v(\" \"),_c('div',{staticClass:\"next-popup\"},[_vm._v(_vm._s(_vm.$t(\"common_next\"))+_vm._s(_vm.nextPopupAdName))]),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-next border-radius-left swiper-button-next\",attrs:{\"large\":\"\",\"next-button\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"common_next\")))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-close border-radius-right\",attrs:{\"large\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.closeShowPopupAd()}}},[_vm._v(_vm._s(_vm.$t(\"common_close\")))])],1)],1)],1)],1)],1)])]),_vm._v(\" \"),_c('f7-popup',{staticClass:\"loadding-popup\",attrs:{\"opened\":_vm.loadingPopupOpened,\"tablet-fullscreen\":\"\"}},[_c('f7-page',[_c('f7-block',[_c('div',{staticClass:\"loader-ring\"},[_c('div',{staticClass:\"loader-ring-light\"}),_vm._v(\" \"),_c('div',{staticClass:\"loader-ring-track\"}),_vm._v(\" \"),_c('div',{staticClass:\"loader-logo\"},[_c('img',{attrs:{\"src\":`../static/images/yt999/merchant/${_vm.$f7.params.fileName}/logo/loading.png`}})])]),_vm._v(\" \"),(_vm.timeoutStatus)?_c('div',{staticClass:\"loadding-timeout\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"home_network_slow\")))]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"javascript:location.reload();\"}},[_vm._v(_vm._s(_vm.$t(\"home_try_refresh_page\"))+\"?\")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"copy-right\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"copyright\", [_vm.$f7.params.name]))+\" Inc.\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.app_version))])])])],1)],1),_vm._v(\" \"),_c('f7-fab',{directives:[{name:\"draggable\",rawName:\"v-draggable\"},{name:\"show\",rawName:\"v-show\",value:(_vm.missionList.length),expression:\"missionList.length\"}],attrs:{\"position\":\"right-bottom\"},on:{\"click\":function($event){return _vm.$f7.dialog.open('#dialog-activity')}}},[_c('div',{staticClass:\"fab-contaienr\"},[_c('img',{staticClass:\"bg-image\",attrs:{\"src\":require(\"../static/images/yt999/hongbao.png\")}})])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game-category-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game-category-list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./game-category-list.vue?vue&type=template&id=a250749c&scoped=true\"\nimport script from \"./game-category-list.vue?vue&type=script&lang=js\"\nexport * from \"./game-category-list.vue?vue&type=script&lang=js\"\nimport style0 from \"./game-category-list.vue?vue&type=style&index=0&id=a250749c&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a250749c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-home\",attrs:{\"name\":\"game-category-list\"},on:{\"page:init\":_vm.onPageInit,\"page:beforein\":_vm.onPageBeforeIn}},[_c('f7-navbar',{attrs:{\"back-link\":\"\",\"sliding\":false}},[_c('f7-nav-title',{attrs:{\"sliding\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('game_category_list_0001'))+\"\\n \")]),_vm._v(\" \"),(_vm.getLoginState)?_c('f7-nav-right',{staticClass:\"nav-balance\"},[_c('f7-link',{on:{\"click\":_vm.openBalancePopup}},[_c('img',{staticClass:\"btn-dowload\",attrs:{\"src\":require(\"../static/images/yt999/balance.png\"),\"height\":\"22\"}})])],1):_vm._e(),_vm._v(\" \"),_c('f7-subnavbar',{staticClass:\"sub-nav nav-80\"},[_c('div',{staticClass:\"nav-buttons-tab\"},[_c('f7-link',{attrs:{\"tab-link\":\"#tab-egame\",\"tab-link-active\":\"\",\"icon\":\"iconfont icon-youxi\",\"text\":_vm.$t('common_0006')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-casino\",\"icon\":\"iconfont icon-shixun\",\"text\":_vm.$t('common_0007')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-card\",\"icon\":\"iconfont icon-qipaishi\",\"text\":_vm.$t('common_0008')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-fish\",\"icon\":\"iconfont icon-yu\",\"text\":_vm.$t('common_0009')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-sports\",\"icon\":\"iconfont icon-icon-test\",\"text\":_vm.$t('common_0010')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-lottery\",\"icon\":\"iconfont icon-caipiao\",\"text\":_vm.$t('common_0011')}})],1)])],1),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-game\",attrs:{\"swipeable\":\"\"}},[_c('f7-tab',{staticClass:\"page-content tab-egame\",attrs:{\"id\":\"tab-egame\",\"tab-active\":\"\"},on:{\"tab:show\":function($event){return _vm.initTab('egame')}}},[_c('f7-block',{staticClass:\"tab-content\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},_vm._l((_vm.egameList),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"50\"},on:{\"click\":function($event){return _vm.goGameList(item.Id)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":'../static/images/yt999/gameList/game' + item.Id + '.png',\"width\":\"100%\"}})])}),1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-casino\",attrs:{\"id\":\"tab-casino\"},on:{\"tab:show\":function($event){return _vm.initTab('casino')}}},[_c('f7-block',{staticClass:\"tab-content\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},_vm._l((_vm.casinoList),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"50\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":`../static/images/yt999/gameList/game${item.Id}.png`,\"width\":\"100%\"}})])}),1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-card\",attrs:{\"id\":\"tab-card\"},on:{\"tab:show\":function($event){return _vm.initTab('card')}}},[_c('f7-block',{staticClass:\"tab-content\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},_vm._l((_vm.cardList),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"100\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":'../static/images/yt999/gameList/game' + item.Id + '.png',\"width\":\"100%\"}})])}),1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-fish\",attrs:{\"id\":\"tab-fish\"},on:{\"tab:show\":function($event){return _vm.initTab('fish')}}},[_c('f7-block',{staticClass:\"tab-content\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},_vm._l((_vm.fishList),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"100\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":'../static/images/yt999/gameList/game' + item.Id + '.png',\"width\":\"100%\"}})])}),1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-sports\",attrs:{\"id\":\"tab-sports\"},on:{\"tab:show\":function($event){return _vm.initTab('sports')}}},[_c('f7-block',{staticClass:\"tab-content\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},_vm._l((_vm.sportsList),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"100\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":'../static/images/yt999/gameList/game' + item.Id + '.png',\"width\":\"100%\"}})])}),1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-lottery\",attrs:{\"id\":\"tab-lottery\"},on:{\"tab:show\":function($event){return _vm.initTab('lottery', _vm.selectLotteryDefault)}}},[_c('div',{staticClass:\"card-child-menu\"},[_c('ul',_vm._l((_vm.lotteryList),function(item){return _c('li',{key:item.Id,class:[item.Code, item.ProviderId===_vm.selectLotteryDefault ? 'active': ''],on:{\"click\":function($event){_vm.selectLotteryDefault = item.ProviderId}}})}),0)]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-lottery tab-content\"},[_c('transition',{attrs:{\"name\":\"custom-classes-transition\",\"enter-active-class\":\"animated tada\",\"leave-active-class\":\"animated bounceOutRight\"}},[_c('f7-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectLotteryDefault === 31),expression:\"selectLotteryDefault === 31\"}],staticClass:\"row-31\",attrs:{\"no-gap\":\"\"}},_vm._l((_vm.lotteryHotList.KKLottery),function(item){return _c('f7-col',{key:item.GameCode,attrs:{\"width\":\"25\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":`../static/images/yt999/lottery/31/${item.GameCode}.png`}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(item.GameName))])])}),1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"custom-classes-transition\",\"enter-active-class\":\"animated tada\",\"leave-active-class\":\"animated bounceOutRight\"}},[_c('f7-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectLotteryDefault === 25),expression:\"selectLotteryDefault === 25\"}],staticClass:\"row-25\",attrs:{\"no-gap\":\"\"}},_vm._l((_vm.lotteryHotList.VRLottery),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"25\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":`../static/images/yt999/lottery/25/${item.GameCode}.png`,\"width\":\"100%\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(item.GameName))])])}),1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"custom-classes-transition\",\"enter-active-class\":\"animated tada\",\"leave-active-class\":\"animated bounceOutRight\"}},[_c('f7-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectLotteryDefault === 509),expression:\"selectLotteryDefault === 509\"}],staticClass:\"row-509\",attrs:{\"no-gap\":\"\"}},_vm._l((_vm.lotteryHotList.BGLottery),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"25\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":`../static/images/yt999/lottery/509/${item.GameCode}.png`,\"width\":\"100%\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(item.GameName))])])}),1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"custom-classes-transition\",\"enter-active-class\":\"animated tada\",\"leave-active-class\":\"animated bounceOutRight\"}},[_c('f7-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectLotteryDefault === 505),expression:\"selectLotteryDefault === 505\"}],staticClass:\"row-505\",attrs:{\"no-gap\":\"\"}},_vm._l((_vm.lotteryHotList.BBINLottery),function(item){return _c('f7-col',{key:item.Id,attrs:{\"width\":\"25\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[_c('img',{staticClass:\"lazy lazy-fade-in game-lazy\",attrs:{\"data-src\":`../static/images/yt999/lottery/505/${item.GameCode}.png`,\"width\":\"100%\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(item.GameName))])])}),1)],1)],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-balance dialog-move\",on:{\"dialog:closed\":_vm.balanceCloseEvent,\"dialog:open\":_vm.balanceOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('home_0010'))+\"\\n \"),_c('f7-link',{on:{\"click\":_vm.closeDialogBalance}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-balance\"},[_c('f7-block-header',{staticClass:\"block-header-totalBalance\"},[_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t('home_0011')))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.getAllBalanceList}},[_vm._v(_vm._s(_vm.$t('home_0012')))])],1)],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t('home_0013')))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.walletBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-button',{staticClass:\"btn-recycling\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.oneClickRecycling}},[_vm._v(_vm._s(_vm.$t('common_one_key_transfer_game_balance_back')))])],1)],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t('home_0015')))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.paddingBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"block-content\"},_vm._l((_vm.gameBalanceList),function(item){return _c('f7-row',{key:item.ProviderId,staticClass:\"item-balance\",class:`item-balance-${item.ProviderId}`},[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(item.Name))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[(item.IsMaintain)?_c('span',[_vm._v(_vm._s(_vm.$t('common_under_maintenance')))]):(!item.QuerySuccess)?_c('span',[_vm._v(\"N/A\")]):_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{'btn-disabled':item.IsMaintain || !item.QuerySuccess},attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGame(item)}}},[_vm._v(_vm._s(_vm.$t('common_balance_transfer_in')))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{'btn-disabled':item.IsMaintain || !item.QuerySuccess},attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMain(item)}}},[_vm._v(_vm._s(_vm.$t('common_balance_transfer_out')))])],1)],1)],1)],1)}),1),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-recharge border-radius-left\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.jumpPage(0, 'member-center/deposit')}}},[_vm._v(_vm._s(_vm.$t('home_deposit')))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-withdrawal border-radius-right\",attrs:{\"large\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.jumpPage(0, 'member-center/withdraw')}}},[_vm._v(_vm._s(_vm.$t('home_withdrawal')))])],1)],1)],1)],1)],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fish-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./fish-list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./fish-list.vue?vue&type=template&id=2b2e7b63&scoped=true\"\nimport script from \"./fish-list.vue?vue&type=script&lang=js\"\nexport * from \"./fish-list.vue?vue&type=script&lang=js\"\nimport style0 from \"./fish-list.vue?vue&type=style&index=0&id=2b2e7b63&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b2e7b63\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-fish-list\",attrs:{\"name\":\"fish-list\"},on:{\"page:init\":_vm.onPageInit,\"page:beforein\":_vm.onPageBeforeIn}},[_c('f7-navbar',{attrs:{\"back-link\":\"\",\"sliding\":false}},[_c('f7-nav-title',{attrs:{\"sliding\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('fish_list_0001'))+\"\\n \")]),_vm._v(\" \"),(_vm.getLoginState)?_c('f7-nav-right',{staticClass:\"nav-balance\"},[_c('f7-link',{on:{\"click\":_vm.openBalancePopup}},[_c('img',{staticClass:\"btn-dowload\",attrs:{\"src\":require(\"../static/images/yt999/balance.png\"),\"height\":\"22\"}})])],1):_vm._e()],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-fish\",attrs:{\"id\":\"tab-fish\",\"tab-active\":\"\"}},[_c('f7-block',{staticClass:\"tab-content\"},[_c('div',{staticClass:\"card-fishing\"},[_c('ul',_vm._l((_vm.fishList),function(item,itemIndex){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.Id!=0),expression:\"item.Id!=0\"}],key:itemIndex},[_c('div',{staticClass:\"item\"},[_c('div',{staticClass:\"item-img\"},[_c('img',{attrs:{\"src\":`${_vm.fishHomeImgUri}${item.GameCode}_home.png`,\"alt\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"item-content row no-gap\"},[_c('div',{staticClass:\"item-title col-70\"},[_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(item.GameName))]),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.getFishDesc(item.ProviderId)))])]),_vm._v(\" \"),_c('div',{staticClass:\"item-entry col-30\"},[_c('button',{staticClass:\"button button-outline button-raised\",on:{\"click\":function($event){return _vm.playGame(item)}}},[_vm._v(_vm._s(_vm.$t('fish_list_0002')))])])])])])}),0)])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-balance dialog-move\",on:{\"dialog:closed\":_vm.balanceCloseEvent,\"dialog:open\":_vm.balanceOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('home_0010'))+\"\\n \"),_c('f7-link',{on:{\"click\":_vm.closeDialogBalance}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-balance\"},[_c('f7-block-header',{staticClass:\"block-header-totalBalance\"},[_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t('home_0011')))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.getAllBalanceList}},[_vm._v(_vm._s(_vm.$t('home_0012')))])],1)],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t('home_0013')))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.walletBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-button',{staticClass:\"btn-recycling\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.oneClickRecycling}},[_vm._v(_vm._s(_vm.$t('common_one_key_transfer_game_balance_back')))])],1)],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t('home_0015')))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.paddingBalance)))]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"block-content\"},_vm._l((_vm.gameBalanceList),function(item){return _c('f7-row',{key:item.ProviderId,staticClass:\"item-balance\",class:`item-balance-${item.ProviderId}`},[_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(item.Name))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"35\"}},[(_vm.totalWalletFlag)?_c('span',[(item.IsMaintain)?_c('span',[_vm._v(_vm._s(_vm.$t('common_under_maintenance')))]):(!item.QuerySuccess)?_c('span',[_vm._v(\"N/A\")]):_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]):_c('preloader',{attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{'btn-disabled':item.IsMaintain || !item.QuerySuccess},attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGame(item)}}},[_vm._v(_vm._s(_vm.$t('common_balance_transfer_in')))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{'btn-disabled':item.IsMaintain || !item.QuerySuccess},attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMain(item)}}},[_vm._v(_vm._s(_vm.$t('common_balance_transfer_out')))])],1)],1)],1)],1)}),1),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-recharge border-radius-left\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.jumpPage(0, 'member-center/deposit')}}},[_vm._v(_vm._s(_vm.$t('home_deposit')))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-withdrawal border-radius-right\",attrs:{\"large\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.jumpPage(0, 'member-center/withdraw')}}},[_vm._v(_vm._s(_vm.$t('home_withdrawal')))])],1)],1)],1)],1)],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=246c5cab\"\nimport script from \"./404.vue?vue&type=script&lang=js\"\nexport * from \"./404.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n \r\n \r\n \r\n Sorry
\r\n Requested content not found.
\r\n \r\n \r\n \r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',[_c('f7-navbar',{attrs:{\"title\":\"Not found\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('p',[_vm._v(\"Sorry\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Requested content not found.\")])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=9e376096&scoped=true\"\nimport script from \"./login.vue?vue&type=script&lang=js\"\nexport * from \"./login.vue?vue&type=script&lang=js\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=9e376096&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9e376096\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-login\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"login-screen\":\"\"},on:{\"page:init\":_vm.onPageInit}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('login_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-login-screen-title',[_c('img',{attrs:{\"src\":`../../static/images/yt999/merchant/${_vm.$f7.params.fileName}/logo/dlog.png`}})]),_vm._v(\" \"),_c('form',{staticClass:\"list no-hairlines-md\"},[_c('ul',[_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('login_0002'),\"data-error-message\":_vm.$t('login_0003')},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing)return;_vm.username=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mimasuo\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"login-pwd\",\"type\":\"password\",\"placeholder\":_vm.$t('login_0004'),\"data-error-message\":_vm.$t('login_0005')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"}),_vm._v(\" \"),(!_vm.togglePwdType)?_c('span',{staticClass:\"iconfont icon-yanjing\",on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.togglePassword.apply(null, arguments)}}}):_c('span',{staticClass:\"iconfont icon-eye\",on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.togglePassword.apply(null, arguments)}}})])])]),_vm._v(\" \"),(_vm.baseInfo.CheckVerifyCodeOnMemberLogin)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yanzhengma\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.verifyCode),expression:\"verifyCode\"}],attrs:{\"type\":\"text\",\"name\":\"user-verify\",\"placeholder\":_vm.$t('login_0006'),\"required\":\"\"},domProps:{\"value\":(_vm.verifyCode)},on:{\"input\":function($event){if($event.target.composing)return;_vm.verifyCode=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"span-verify\"},[_c('img',{attrs:{\"src\":`${_vm.verifyUrl}`,\"alt\":\"\"},on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.updateVerify.apply(null, arguments)}}})])])])]):_vm._e()]),_vm._v(\" \"),_c('f7-block',{staticClass:\"panel-forgetpwd\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',[_c('f7-link',{staticClass:\"span-forgetpwd color-lightblue text-14\",on:{\"click\":_vm.forgetPwd}},[_vm._v(_vm._s(_vm.$t('login_0007')))])],1),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_c('span',{staticClass:\"color-graytint text-14\"},[_vm._v(_vm._s(_vm.$t('login_0008')))]),_vm._v(\" \"),_c('f7-toggle',{attrs:{\"checked\":\"\",\"color\":\"blue\",\"checked\":_vm.toggleChecked},on:{\"change\":_vm.rememberPwd}})],1)],1)],1),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('f7-button',{attrs:{\"fill\":\"\",\"raised\":\"\",\"large\":\"\"},on:{\"click\":_vm.signIn}},[_vm._v(_vm._s(_vm.$t('login_0009')))]),_vm._v(\" \"),_c('f7-block-footer',[_vm._v(\"\\n \"+_vm._s(_vm.$t('login_0010'))+\"\\n \"),_c('f7-link',{staticClass:\"color-lightblue\",attrs:{\"href\":\"/register/\"}},[_vm._v(_vm._s(_vm.$t('login_0011')))])],1)],1)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"onlineCustom-popup\",attrs:{\"opened\":_vm.onlinePopupOpened},on:{\"popup:closed\":function($event){_vm.onlinePopupOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.$t('login_0012')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),_c('iframe',{staticClass:\"iframe-onlineCustom\",attrs:{\"src\":_vm.onlineCustomUrl,\"frameborder\":\"0\"}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./member-center.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./member-center.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ userInfo.UserName | formatUserName }}
\r\n {{ userInfo.VipLevelName }}
\r\n \r\n \r\n \r\n {{ userInfo.VipLevelName }}
\r\n\r\n \r\n
\r\n {{ $t(\"member_center_0002\") }} \r\n \r\n
\r\n {{ $t(\"member_center_0003\") }} \r\n {{ getLoginInfo.LastLoginTs | time_local }} \r\n \r\n \r\n
\r\n {{ $t(\"member_center_0004\") }} \r\n \r\n -1\">\r\n {{ userInfo.currencySymbol }} - {{ totalBalance | formatCurrency }} \r\n chevron_right \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t(\"member_center_0005\") }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\"> \r\n \r\n {{ $t(\"member_center_0010\") }} \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./member-center.vue?vue&type=template&id=50872354&scoped=true\"\nimport script from \"./member-center.vue?vue&type=script&lang=js\"\nexport * from \"./member-center.vue?vue&type=script&lang=js\"\nimport style0 from \"./member-center.vue?vue&type=style&index=0&id=50872354&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50872354\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-member-center\",attrs:{\"name\":\"member-center\"},on:{\"page:init\":_vm.onPageInit,\"page:beforein\":_vm.onPageBeforeIn,\"page:beforeout\":_vm.onPageBeforeOut}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('member_center_0001'),\"back-link\":false,\"no-hariline\":true}}),_vm._v(\" \"),(_vm.getLoginState)?_c('f7-card',{staticClass:\"card-user-info\"},[_c('f7-card-content',[_c('f7-row',{staticClass:\"row-level\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"user-vip-img text-center\",attrs:{\"width\":\"35\"}},[(_vm.userInfo.VipLevelUrl)?_c('img',{attrs:{\"src\":_vm.userInfo.VipLevelUrl,\"alt\":\"\"}}):_c('img',{attrs:{\"src\":`../../static/images/yt999/vip/vip.png`,\"alt\":\"\"}})]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[_c('div',{staticClass:\"user-name\"},[_vm._v(_vm._s(_vm._f(\"formatUserName\")(_vm.userInfo.UserName)))]),_vm._v(\" \"),_c('div',{staticClass:\"user-level\"},[_vm._v(_vm._s(_vm.userInfo.VipLevelName))])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"position-user-level\"},[_vm._v(_vm._s(_vm.userInfo.VipLevelName))]),_vm._v(\" \"),_c('div',{staticClass:\"panel-login-info\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left welcome\",attrs:{\"width\":\"100\"}},[_vm._v(_vm._s(_vm.$t(\"member_center_0002\")))])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"member_center_0003\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\",attrs:{\"width\":\"65\"}},[_vm._v(_vm._s(_vm._f(\"time_local\")(_vm.getLoginInfo.LastLoginTs)))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"row-totalAmt\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"member_center_0004\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\",attrs:{\"width\":\"65\"}},[(_vm.totalBalance > -1)?_c('f7-link',{attrs:{\"popup-open\":\".balanceInfo-popup\"}},[_c('span',{staticClass:\"color-yellow\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+\" - \"+_vm._s(_vm._f(\"formatCurrency\")(_vm.totalBalance)))]),_vm._v(\" \"),_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])]):_c('preloader',{attrs:{\"list\":4}})],1)],1)],1)],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.getLoginState)?_c('f7-card',{staticClass:\"card-no-login\"},[_c('f7-button',{attrs:{\"outline\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t(\"member_center_0005\")))])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"buttons-tab tabs\"},[_c('f7-link',{attrs:{\"tab-link\":\"#tab-accountCenter\",\"tab-link-active\":\"\",\"icon\":\"iconfont icon-huiyuanvip\",\"text\":_vm.$t('member_center_0006')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-selfHelpPrefer\",\"icon\":\"iconfont icon-mendianzhuanxiangshenhe\",\"text\":_vm.$t('member_center_0007')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-accountList\",\"icon\":\"iconfont icon-qingdan\",\"text\":_vm.$t('member_center_0008')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-personalInfo\",\"icon\":\"iconfont icon-gerenziliao1\",\"text\":_vm.$t('member_center_0009')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-message\"}},[_c('f7-icon',{attrs:{\"icon\":\"iconfont icon-youxiang\"}},[(_vm.userMessgaeList.length > 0)?_c('f7-badge',{attrs:{\"color\":\"red\"}}):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"tabbar-label\"},[_vm._v(_vm._s(_vm.$t(\"member_center_0010\")))])],1)],1),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-member-center\"},[_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-accountCenter\",\"tab-active\":\"\"},on:{\"tab:show\":function($event){return _vm.tabInit(1)}}},[_c('f7-block',[_c('f7-list',[_c('f7-list-item',{staticClass:\"icon-animation\",attrs:{\"link\":\"/member-center/referrer/\",\"title\":_vm.$t('member_center_0011')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-VIP\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/winloserp/\",\"title\":_vm.$t('member_center_0012')}},[_c('f7-icon',{staticStyle:{\"color\":\"#e63636\"},attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-qingdan\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{staticClass:\"icon-color\",attrs:{\"link\":\"/member-center/deposit/\",\"title\":_vm.$t('member_center_0013')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-cunkuan\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{staticClass:\"icon-color\",attrs:{\"link\":\"/member-center/withdraw/\",\"title\":_vm.$t('member_center_0014')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-qukuan\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{staticClass:\"icon-color\",attrs:{\"link\":\"/member-center/transfer/\",\"title\":_vm.$t('member_center_0015')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-zhuanzhang\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{staticClass:\"vip\",attrs:{\"link\":\"/member-center/vip-club/\",\"title\":_vm.$t('member_center_0016'),\"after\":_vm.$t('member_center_0017', [_vm.$f7.params.name])}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon--vip-\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"#\",\"title\":_vm.$t('member_center_0018')},on:{\"click\":_vm.openChangeLanguagePopup}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-yuyan\"},slot:\"media\"})],1),_vm._v(\" \"),(_vm.getLoginState)?_c('f7-list-item',{attrs:{\"link\":\"#\",\"href\":false,\"title\":_vm.$t('member_center_0019')},on:{\"click\":_vm.logout}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-iconfonttuijianren\"},slot:\"media\"})],1):_vm._e()],1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-selfHelpPrefer\"},on:{\"tab:show\":function($event){return _vm.tabInit(2)}}},[_c('f7-block',[_c('f7-list',[_c('f7-list-item',{staticClass:\"icon-animation\",attrs:{\"link\":\"/member-center/sign-in/\",\"title\":_vm.$t('member_center_0020')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-qiandao\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{staticClass:\"icon-animation\",attrs:{\"link\":\"/member-center/buffet-promotion/\",\"title\":_vm.$t('member_center_0024')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-reshengji\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/activities-search/\",\"title\":_vm.$t('member_center_0027')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-check\"},slot:\"media\"})],1)],1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-accountList\"},on:{\"tab:show\":function($event){return _vm.tabInit(3)}}},[_c('f7-block',[_c('f7-list',[_c('f7-list-item',{attrs:{\"link\":\"/member-center/deposit-search/\",\"title\":_vm.$t('member_center_0028')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-churukujilu\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/withdraw-search/\",\"title\":_vm.$t('member_center_0029')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-churukujilu\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/funds-search/\",\"title\":_vm.$t('member_center_0030')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-churukujilu\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/integral-search/\",\"title\":_vm.$t('member_center_0031')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-jifenmingxi1\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/activity-search/\",\"title\":_vm.$t('member_center_0032')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-Giftliwu1\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/betting-search/\",\"title\":_vm.$t('member_center_0033')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-jilu\"},slot:\"media\"})],1)],1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-personalInfo\"},on:{\"tab:show\":function($event){return _vm.tabInit(4)}}},[_c('f7-block',[_c('f7-list',[_c('f7-list-item',{attrs:{\"link\":\"/member-center/member-info/\",\"title\":_vm.$t('member_center_0034')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-yonghuxinxi\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/bank-info/1/\",\"title\":_vm.$t('member_center_0035')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-yinhangqia\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/change-login-pwd/\",\"title\":_vm.$t('member_center_0043')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-xiugaimima\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/change-security-pwd/\",\"title\":_vm.$t('member_center_0044')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-xiugaimima\"},slot:\"media\"})],1)],1)],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-message\"},on:{\"tab:show\":function($event){return _vm.tabInit(5)}}},[_c('f7-block',[_c('f7-list',[_c('f7-list-item',{attrs:{\"link\":\"/member-center/message-center/1/\",\"title\":_vm.$t('member_center_0037')}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-gonggao\"},slot:\"media\"})],1),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/member-center/message-center/2/\",\"title\":_vm.$t('message_center_0003'),\"badge\":_vm.userMessgaeList.length}},[_c('f7-icon',{attrs:{\"slot\":\"media\",\"icon\":\"iconfont icon-a-yonghuxinxigerenziliao\"},slot:\"media\"})],1)],1)],1)],1)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"balanceInfo-popup\",attrs:{\"opened\":_vm.balancePopupOpened},on:{\"popup:open\":_vm.initBalanceInfo,\"popup:closed\":function($event){_vm.balancePopupOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.$t('member_center_0004')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),_c('f7-block',[_c('f7-row',{staticClass:\"block-balance\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.$t(\"member_center_0038\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(_vm.totalBalance)))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"block-balance\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.$t(\"member_center_0039\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(_vm.walletBalance)))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"block-balance\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.$t(\"member_center_0040\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(_vm.paddingBalance)))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"block-sign\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.$t(\"member_center_0041\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(_vm.userSignAmount)))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"block-point\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.$t(\"member_center_0042\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.currentBonusPoint)))])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ $t(\"deposit_0061\") }} \r\n
\r\n 0\">\r\n \r\n \r\n {{ value.name }}
\r\n \r\n \r\n \r\n \r\n\r\n
{{ $t(\"deposit_0008\") }} \r\n
\r\n 0\">\r\n \r\n {{ value.ChannelName.split(\"(\")[0] }}
\r\n ({{ value.ChannelName.split(\"(\")[1] }}
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ $t(\"deposit_0010\") }} \r\n {{ onlineOrderData.orderNumber }} \r\n
\r\n
\r\n
\r\n {{ $t(\"deposit_0011\") }} \r\n {{ userInfo.currencySymbol }}{{ onlineOrderData.Amount | formatCurrency }} \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {{ $t(\"deposit_0012\") }} \r\n {{ onlineOrderData.expDate | time(\"mm:ss\") }} \r\n \r\n \r\n {{ $t(\"deposit_0013\") }} \r\n \r\n
\r\n
\r\n \r\n
{{ $t(\"deposit_0014\") }}
\r\n
\r\n 1. \r\n {{ $t(\"deposit_0015\") }}\r\n
\r\n
\r\n 2. \r\n {{ $t(\"deposit_0016\") }}\r\n
\r\n
\r\n 3. \r\n {{ $t(\"deposit_0017\") }}\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{ $t(\"common_0004\") }}: \r\n \r\n 1. {{ $t(\"v1_deposit_0002\") }}
\r\n 2. {{ $t(\"v1_deposit_0003\") }}
\r\n 3. {{ $t(\"v1_deposit_0004\") }}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 && qrCodeDataInit\">\r\n \r\n \r\n 0\">\r\n
\r\n
{{ selectedPay.account }} ({{ selectedPay.name }})
\r\n \r\n \r\n
0\">\r\n {{ item.Name }} \r\n \r\n
{{ $t(\"deposit_0022\") }} \r\n
\r\n 0\">\r\n {{ value.name }} \r\n \r\n \r\n {{ $t(\"deposit_0023\") }}
\r\n \r\n
\r\n \r\n \r\n \r\n {{ $t(\"deposit_0027\") }}: \r\n \r\n 1. {{ $t(\"deposit_0028\") }}
\r\n 2. {{ $t(\"deposit_0029\") }}
\r\n 3. {{ $t(\"deposit_0030\") }}
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0 && payBankListDataInit\">\r\n \r\n \r\n \r\n
\r\n
{{ selectBankInfo.bankNo | fmtBankNumber }}
\r\n
\r\n
{{ $t(\"v1_deposit_0001\") }}
\r\n
\r\n {{ selectBankInfo.accoutName }} \r\n
\r\n\r\n
{{ $t(\"deposit_0033\") }} \r\n
\r\n
\r\n
{{ $t(\"deposit_0032\") }}
\r\n
\r\n {{ selectBankInfo.bankAddress }} \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./register.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./register.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./register.vue?vue&type=template&id=fe78f67c&scoped=true\"\nimport script from \"./register.vue?vue&type=script&lang=js\"\nexport * from \"./register.vue?vue&type=script&lang=js\"\nimport style0 from \"./register.vue?vue&type=style&index=0&id=fe78f67c&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fe78f67c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-register\",attrs:{\"no-toolbar\":\"\",\"name\":\"register\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('register_0001'),\"back-link\":\"\"}}),_vm._v(\" \"),_c('form',{staticClass:\"list no-hairlines-md\",attrs:{\"id\":\"form-register\"}},[_c('div',{staticClass:\"block-title\"},[_vm._v(_vm._s(_vm.$t('register_agent_0002')))]),_vm._v(\" \"),_c('ul',[_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.baseInfo.ShowPromotionCodeOnRegister),expression:\"baseInfo.ShowPromotionCodeOnRegister\"}],staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yaoqingma\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.promotionCode),expression:\"promotionCode\"}],attrs:{\"type\":\"text\",\"name\":\"promotion-code\",\"placeholder\":_vm.$t('register_agent_0003')},domProps:{\"value\":(_vm.promotionCode)},on:{\"input\":function($event){if($event.target.composing)return;_vm.promotionCode=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-zhanghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-name\",\"placeholder\":_vm.$t('register_0003'),\"required\":\"\"}}),_vm._v(\" \"),_c('f7-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.baseInfo.EnableCheckUserExists),expression:\"baseInfo.EnableCheckUserExists\"}],staticClass:\"detection\",attrs:{\"fill\":\"\",\"raised\":\"\",\"large\":\"\"},on:{\"click\":function($event){return _vm.checkUserExist();}}},[_vm._v(_vm._s(_vm.$t('register_0004')))])],1)])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-pwd\",\"placeholder\":_vm.$t('register_agent_0005'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-repwd\",\"placeholder\":_vm.$t('register_agent_0006'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])])]),_vm._v(\" \"),_c('div',{staticClass:\"block-title\"},[_vm._v(_vm._s(_vm.$t('register_agent_0007')))]),_vm._v(\" \"),_c('ul',[_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yinhangqia\"})]),_vm._v(\" \"),_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.CurrencyCode),expression:\"CurrencyCode\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.CurrencyCode=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.CurrencyList),function(item){return _c('option',{key:item,domProps:{\"value\":item}},[_vm._v(_vm._s(item))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t('common_0021'))+\" - \"+_vm._s(_vm.CurrencyCode))]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\",staticStyle:{\"display\":\"none\"}},[_vm._v(_vm._s(_vm.$t('common_0021'))+\": \"+_vm._s(_vm.CurrencyCode))])])])]),_vm._v(\" \"),(_vm.baseInfo.NeedSureName)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-surename\",\"placeholder\":_vm.$t('register_agent_0008')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedPhone)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-shouji\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"number\",\"name\":\"user-phone\",\"placeholder\":_vm.$t('register_agent_0009')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.RegisterMobileVerify)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yanzhengma\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"mobile-verify\",\"placeholder\":_vm.$t('register_0005'),\"required\":\"\"}}),_vm._v(\" \"),_c('f7-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.countFlag),expression:\"!countFlag\"}],staticClass:\"detection detectionConde\",attrs:{\"fill\":\"\",\"raised\":\"\",\"large\":\"\"},on:{\"click\":function($event){return _vm.sendVerifyCode()}}},[_vm._v(_vm._s(_vm.$t('register_0006')))]),_vm._v(\" \"),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.countFlag),expression:\"countFlag\"}],staticClass:\"detection detectionConde back\"},[_vm._v(_vm._s(_vm.countDown)+_vm._s(_vm.$t('common_0022')))])],1)])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedEmail)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-youxiang\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"email\",\"name\":\"user-email\",\"placeholder\":_vm.$t('register_agent_0010')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedWechat)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-weixin\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-wechat\",\"placeholder\":_vm.$t('register_agent_0011')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedQQ)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-qq\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"number\",\"name\":\"user-qq\",\"placeholder\":_vm.$t('register_agent_0012')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedSecurePassword)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-securitypwd\",\"placeholder\":_vm.$t('register_agent_0016'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedSecurePassword)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-reSecuritypwd\",\"placeholder\":_vm.$t('register_agent_0017'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yanzhengma\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-verify\",\"placeholder\":_vm.$t('register_agent_0018'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"span-verify\"},[_c('img',{attrs:{\"src\":`${_vm.verifyUrl}`,\"alt\":\"\"},on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.updateVerify.apply(null, arguments)}}})])])])])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"regist-button-area\",attrs:{\"strong\":\"\"}},[_c('f7-block-header',{staticClass:\"text-center\"},[_c('p',[_c('f7-checkbox',{attrs:{\"name\":\"readRule\",\"checked\":_vm.read},on:{\"change\":_vm.checkRead}}),_c('span',{staticClass:\"text-remark\"},[_vm._v(_vm._s(_vm.$t('register_agent_0019')))]),_vm._v(\" \\n \"),_c('f7-link',{attrs:{\"popup-open\":\".popup-general\"}},[_vm._v(\"《\"+_vm._s(_vm.$t('register_agent_0020'))+\"》\")])],1)]),_vm._v(\" \"),_c('f7-button',{staticClass:\"button-single\",attrs:{\"fill\":\"\",\"raised\":\"\",\"large\":\"\"},on:{\"click\":_vm.registerNow}},[_vm._v(_vm._s(_vm.$t('register_agent_0021')))]),_vm._v(\" \"),_c('f7-block-footer',{staticClass:\"text-center\"},[_c('span',{staticClass:\"text-remark\"},[_vm._v(_vm._s(_vm.$t('register_0019')))]),_vm._v(\" \"),_c('f7-link',{staticClass:\"color-lightblue\",attrs:{\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('register_0007')))])],1)],1)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"popup-general\",attrs:{\"opened\":_vm.popupOpened},on:{\"popup:closed\":function($event){_vm.popupOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.$t('register_agent_0020')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),_c('f7-block',[_c('ul',[_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_agent_0022', [_vm.$f7.params.name]))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('register_agent_0023')))]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_0008', [_vm.$f7.params.name]))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_agent_0025', [_vm.$f7.params.name]))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_0009', [_vm.$f7.params.name]))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_0010', [_vm.$f7.params.name]))+\"\\n \")])])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./limited-access.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./limited-access.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n {{ $t('limited_access_0001') }} \r\n \r\n \r\n \r\n {{ $t('limited_access_0002') }}: \r\n
\r\n {{ $t('limited_access_0003') }}
\r\n {{ $t('limited_access_0004') }}
\r\n \r\n {{domainLimit}} \r\n
\r\n \r\n \r\n \r\n Dear Valued Customers: \r\n
\r\n \r\n Viewing and using this website at your current location is prohibited due to its regulatory\r\n rules.\r\n
\r\n We regret any inconvenience.
\r\n\r\n \r\n From\r\n {{domainLimit}} \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./limited-access.vue?vue&type=template&id=312282d6&scoped=true\"\nimport script from \"./limited-access.vue?vue&type=script&lang=js\"\nexport * from \"./limited-access.vue?vue&type=script&lang=js\"\nimport style0 from \"./limited-access.vue?vue&type=style&index=0&id=312282d6&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"312282d6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-access\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"access\"}},[_c('f7-block',{staticClass:\"block-access\"},[_c('f7-card',[_c('f7-card-header',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t('limited_access_0001')))]),_vm._v(\" \"),_c('f7-card-content',[_c('f7-block',[_c('p',[_c('strong',[_vm._v(_vm._s(_vm.$t('limited_access_0002'))+\":\")])]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('limited_access_0003')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('limited_access_0004')))]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"color-blue ng-binding\"},[_vm._v(_vm._s(_vm.domainLimit))])])]),_vm._v(\" \"),_c('f7-block',[_c('p',[_c('strong',[_vm._v(\"Dear Valued Customers:\")])]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n Viewing and using this website at your current location is prohibited due to its regulatory\\n rules.\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"We regret any inconvenience.\")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n From\\n \"),_c('span',{staticClass:\"color-blue ng-binding\"},[_vm._v(_vm._s(_vm.domainLimit))])])])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./daily-task.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./daily-task.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./daily-task.vue?vue&type=template&id=4aca39ba&scoped=true\"\nimport script from \"./daily-task.vue?vue&type=script&lang=js\"\nexport * from \"./daily-task.vue?vue&type=script&lang=js\"\nimport style0 from \"./daily-task.vue?vue&type=style&index=0&id=4aca39ba&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4aca39ba\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-dailyTask\",attrs:{\"name\":\"dailyTask\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('daily_task_0001')}}),_vm._v(\" \"),_c('div',{staticClass:\"buttons-tab tabs\"},[_c('f7-link',{attrs:{\"tab-link\":\"#tab-daily-all\",\"tab-link-active\":\"\",\"text\":_vm.$t('common_0016')},on:{\"click\":function($event){return _vm.tabShow(1)}}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-daily-casino\",\"text\":_vm.$t('common_0007')},on:{\"click\":function($event){return _vm.tabShow(1)}}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-daily-lottery\",\"text\":_vm.$t('common_0011')},on:{\"click\":function($event){return _vm.tabShow(2)}}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-daily-sports\",\"text\":_vm.$t('common_0010')},on:{\"click\":function($event){return _vm.tabShow(3)}}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-daily-egame\",\"text\":_vm.$t('common_0006')},on:{\"click\":function($event){return _vm.tabShow(4)}}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-daily-card\",\"text\":_vm.$t('common_0008')},on:{\"click\":function($event){return _vm.tabShow(5)}}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-daily-fish\",\"text\":_vm.$t('common_0009')},on:{\"click\":function($event){return _vm.tabShow(6)}}})],1),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-promotion\",attrs:{\"swipeable\":\"\"}},[_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-daily-all\",\"tab-active\":\"\"}},[(_vm.casinoList.length>0)?_vm._l((_vm.activityList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-content',[_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"10\"}},[_c('img',{staticClass:\"img-all\",attrs:{\"src\":'../static/images/yt999/promotion/'+_vm.getIcon(item.SpecialActivityGroupID)}})]),_vm._v(\" \"),_c('f7-col',{staticClass:\"title\",attrs:{\"width\":\"90\"}},[_vm._v(_vm._s(item.SpecialActivityTitle))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"progress\"},[_vm._v(_vm._s(item.RemarkProgress))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"remark\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(item.RemarkValidRange))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[(item.ButtonStatus=='None')?_c('f7-button',{attrs:{\"fill\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('app_0002')))]):(item.ButtonStatus=='Disable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.goHomeGame(1)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0002')))]):(item.ButtonStatus=='Enable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.receive(item.SpecialActivityID)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(item.ButtonStatus=='Done')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0004')))]):(item.ButtonStatus=='pastDue')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0005')))]):(item.ButtonStatus=='WaitingAudit')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0006')))]):_vm._e()],1)],1)],1)],1)}):(_vm.casinoList.length <=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-daily-casino\"}},[(_vm.casinoList.length>0)?_vm._l((_vm.casinoList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[_c('div',{staticClass:\"list accordion-list\"},[_c('ul',[_c('li',{staticClass:\"accordion-item\"},[_c('a',{staticClass:\"item-content item-link\",attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('img',{staticClass:\"lazy lazy-fade-in promotion-lazy\",attrs:{\"data-src\":`../../static/images/yt999/promotion/${item.SpecialActivityType}.png`,\"width\":\"100%\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('div',{staticClass:\"block\"},[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`../../static/images/yt999/promotion/content_${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])])])])]),_vm._v(\" \"),_c('f7-card-content',[_c('f7-row',[_c('f7-col',{staticClass:\"title\"},[_vm._v(_vm._s(item.SpecialActivityTitle))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"progress\"},[_vm._v(_vm._s(item.RemarkProgress))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"remark\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(item.RemarkValidRange))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[(item.ButtonStatus=='None')?_c('f7-button',{attrs:{\"fill\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('app_0002')))]):(item.ButtonStatus=='Disable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.goHomeGame(1)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0002')))]):(item.ButtonStatus=='Enable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.receive(item.SpecialActivityID)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(item.ButtonStatus=='Done')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0004')))]):(item.ButtonStatus=='pastDue')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0005')))]):(item.ButtonStatus=='WaitingAudit')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0006')))]):_vm._e()],1)],1)],1)],1)}):(_vm.casinoList.length <=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-daily-lottery\"}},[(_vm.lotteryList.length>0)?_vm._l((_vm.lotteryList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[_c('div',{staticClass:\"list accordion-list\"},[_c('ul',[_c('li',{staticClass:\"accordion-item\"},[_c('a',{staticClass:\"item-content item-link\",attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('img',{staticClass:\"lazy lazy-fade-in promotion-lazy\",attrs:{\"data-src\":`../../static/images/yt999/promotion/${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('div',{staticClass:\"block\"},[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`../../static/images/yt999/promotion/content_${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])])])])]),_vm._v(\" \"),_c('f7-card-content',[_c('f7-row',[_c('f7-col',{staticClass:\"title\"},[_vm._v(_vm._s(item.SpecialActivityTitle))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"progress\"},[_vm._v(_vm._s(item.RemarkProgress))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"remark\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(item.RemarkValidRange))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[(item.ButtonStatus=='None')?_c('f7-button',{attrs:{\"fill\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('app_0002')))]):(item.ButtonStatus=='Disable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.goHomeGame(2)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0002')))]):(item.ButtonStatus=='Enable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.receive(item.SpecialActivityID)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(item.ButtonStatus=='Done')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0004')))]):(item.ButtonStatus=='pastDue')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0005')))]):(item.ButtonStatus=='WaitingAudit')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0006')))]):_vm._e()],1)],1)],1)],1)}):(_vm.lotteryList.length <=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-daily-sports\"}},[(_vm.sportsList.length>0)?_vm._l((_vm.sportsList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[_c('div',{staticClass:\"list accordion-list\"},[_c('ul',[_c('li',{staticClass:\"accordion-item\"},[_c('a',{staticClass:\"item-content item-link\",attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('img',{staticClass:\"lazy lazy-fade-in promotion-lazy\",attrs:{\"data-src\":`../../static/images/yt999/promotion/${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('div',{staticClass:\"block\"},[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`../../static/images/yt999/promotion/content_${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])])])])]),_vm._v(\" \"),_c('f7-card-content',[_c('f7-row',[_c('f7-col',{staticClass:\"title\"},[_vm._v(_vm._s(item.SpecialActivityTitle))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"progress\"},[_vm._v(_vm._s(item.RemarkProgress))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"remark\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(item.RemarkValidRange))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[(item.ButtonStatus=='None')?_c('f7-button',{attrs:{\"fill\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('app_0002')))]):(item.ButtonStatus=='Disable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.goHomeGame(3)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0002')))]):(item.ButtonStatus=='Enable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.receive(item.SpecialActivityID)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(item.ButtonStatus=='Done')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0004')))]):(item.ButtonStatus=='pastDue')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0005')))]):(item.ButtonStatus=='WaitingAudit')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0006')))]):_vm._e()],1)],1)],1)],1)}):(_vm.sportsList.length <=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-daily-egame\"}},[(_vm.egameList.length>0)?_vm._l((_vm.egameList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[_c('div',{staticClass:\"list accordion-list\"},[_c('ul',[_c('li',{staticClass:\"accordion-item\"},[_c('a',{staticClass:\"item-content item-link\",attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('img',{staticClass:\"lazy lazy-fade-in promotion-lazy\",attrs:{\"data-src\":`../../static/images/yt999/promotion/${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('div',{staticClass:\"block\"},[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`../../static/images/yt999/promotion/content_${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])])])])]),_vm._v(\" \"),_c('f7-card-content',[_c('f7-row',[_c('f7-col',{staticClass:\"title\"},[_vm._v(_vm._s(item.SpecialActivityTitle))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"progress\"},[_vm._v(_vm._s(item.RemarkProgress))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"remark\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(item.RemarkValidRange))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[(item.ButtonStatus=='None')?_c('f7-button',{attrs:{\"fill\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('app_0002')))]):(item.ButtonStatus=='Disable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.goHomeGame(4)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0002')))]):(item.ButtonStatus=='Enable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.receive(item.SpecialActivityID)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(item.ButtonStatus=='Done')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0004')))]):(item.ButtonStatus=='pastDue')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0005')))]):(item.ButtonStatus=='WaitingAudit')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0006')))]):_vm._e()],1)],1)],1)],1)}):(_vm.egameList.length <=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-daily-card\"}},[(_vm.cardList.length>0)?_vm._l((_vm.cardList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[_c('div',{staticClass:\"list accordion-list\"},[_c('ul',[_c('li',{staticClass:\"accordion-item\"},[_c('a',{staticClass:\"item-content item-link\",attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('img',{staticClass:\"lazy lazy-fade-in promotion-lazy\",attrs:{\"data-src\":`../../static/images/yt999/promotion/${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('div',{staticClass:\"block\"},[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`../../static/images/yt999/promotion/content_${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])])])])]),_vm._v(\" \"),_c('f7-card-content',[_c('f7-row',[_c('f7-col',{staticClass:\"title\"},[_vm._v(_vm._s(item.SpecialActivityTitle))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"progress\"},[_vm._v(_vm._s(item.RemarkProgress))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"remark\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(item.RemarkValidRange))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[(item.ButtonStatus=='None')?_c('f7-button',{attrs:{\"fill\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('app_0002')))]):(item.ButtonStatus=='Disable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.goHomeGame(5)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0002')))]):(item.ButtonStatus=='Enable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.receive(item.SpecialActivityID)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(item.ButtonStatus=='Done')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0004')))]):(item.ButtonStatus=='pastDue')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0005')))]):(item.ButtonStatus=='WaitingAudit')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0006')))]):_vm._e()],1)],1)],1)],1)}):(_vm.cardList.length <=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-daily-fish\"}},[(_vm.fishList.length > 0)?_vm._l((_vm.fishList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[_c('div',{staticClass:\"list accordion-list\"},[_c('ul',[_c('li',{staticClass:\"accordion-item\"},[_c('a',{staticClass:\"item-content item-link\",attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('img',{staticClass:\"lazy lazy-fade-in promotion-lazy\",attrs:{\"data-src\":`../../static/images/yt999/promotion/${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('div',{staticClass:\"block\"},[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`../../static/images/yt999/promotion/content_${item.SpecialActivityType}.png`,\"width\":\"100%\",\"alt\":\"\"}})])])])])])]),_vm._v(\" \"),_c('f7-card-content',[_c('f7-row',[_c('f7-col',{staticClass:\"title\"},[_vm._v(_vm._s(item.SpecialActivityTitle))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"progress\"},[_vm._v(_vm._s(item.RemarkProgress))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"remark\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(item.RemarkValidRange))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[(item.ButtonStatus=='None')?_c('f7-button',{attrs:{\"fill\":\"\",\"href\":\"/login/\"}},[_vm._v(_vm._s(_vm.$t('app_0002')))]):(item.ButtonStatus=='Disable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.goHomeGame(6)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0002')))]):(item.ButtonStatus=='Enable')?_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":function($event){return _vm.receive(item.SpecialActivityID)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(item.ButtonStatus=='Done')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0004')))]):(item.ButtonStatus=='pastDue')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0005')))]):(item.ButtonStatus=='WaitingAudit')?_c('f7-button',{attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t('daily_task_0006')))]):_vm._e()],1)],1)],1)],1)}):(_vm.fishList.length <=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{item.Name}} \r\n
\r\n \r\n \r\n {{ $t('activity_0002') }} > \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./activity.vue?vue&type=template&id=21798fc8&scoped=true\"\nimport script from \"./activity.vue?vue&type=script&lang=js\"\nexport * from \"./activity.vue?vue&type=script&lang=js\"\nimport style0 from \"./activity.vue?vue&type=style&index=0&id=21798fc8&prod&lang=less\"\nimport style1 from \"./activity.vue?vue&type=style&index=1&id=21798fc8&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21798fc8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-activity\",attrs:{\"name\":\"activity\"},on:{\"page:beforein\":_vm.onPageBeforeIn}},[_c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"navbar\"},[_vm._v(_vm._s(_vm.$t('activity_0001')))]),_vm._v(\" \"),_c('van-tabs',{attrs:{\"color\":\"#4076fa\",\"title-active-color\":\"#4076fa\"},on:{\"change\":_vm.activeTab}},[_c('van-tab',{attrs:{\"title\":_vm.$t('common_0012'),\"name\":'tab-activity-other'}}),_vm._v(\" \"),_c('van-tab',{attrs:{\"title\":_vm.$t('common_0006'),\"name\":'tab-activity-egame'}}),_vm._v(\" \"),_c('van-tab',{attrs:{\"title\":_vm.$t('common_0007'),\"name\":'tab-activity-casino'}}),_vm._v(\" \"),_c('van-tab',{attrs:{\"title\":_vm.$t('common_0008'),\"name\":'tab-activity-card'}}),_vm._v(\" \"),_c('van-tab',{attrs:{\"title\":_vm.$t('common_0009'),\"name\":'tab-activity-fish'}}),_vm._v(\" \"),_c('van-tab',{attrs:{\"title\":_vm.$t('common_0010'),\"name\":'tab-activity-sports'}}),_vm._v(\" \"),_c('van-tab',{attrs:{\"title\":_vm.$t('common_0011'),\"name\":'tab-activity-lottery'}})],1)],1),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-promotion\"},[_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-all\"}},[(_vm.activityList.length>0)?_vm._l((_vm.activityList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-all\"},[_c('f7-card-content',[_c('f7-row',[_c('f7-col',{staticClass:\"title-all\",attrs:{\"width\":\"75\"}},[_c('div',{staticClass:\"img\"},[_c('img',{attrs:{\"src\":'../static/images/yt999/promotion/'+_vm.getIcon(item.GameType)}})]),_vm._v(\" \"),_c('div',{staticClass:\"t-name\"},[_c('f7-link',{on:{\"click\":function($event){return _vm.apply(item.Id)}}},[_vm._v(_vm._s(item.Name))])],1)]),_vm._v(\" \"),_c('f7-col',{staticClass:\"apply-all text-right\",attrs:{\"width\":\"25\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}},[_c('span',[_vm._v(_vm._s(_vm.$t('activity_0002')))]),_c('span',{staticClass:\"s2\"},[_vm._v(\" >\")])])],1)],1)],1)}):(_vm.activityList.length<=0 && _vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-egame\"}},[(_vm.egameList.length>0)?_vm._l((_vm.egameList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[(item.Type===5)?_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}}):_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.detail(item)}}})])],1)}):(_vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-casino\"}},[(_vm.casinoList.length>0)?_vm._l((_vm.casinoList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[(item.Type===5)?_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}}):_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.detail(item)}}})])],1)}):(_vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-card\"}},[(_vm.cardList.length>0)?_vm._l((_vm.cardList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[(item.Type===5)?_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}}):_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.detail(item)}}})])],1)}):(_vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-fish\"}},[(_vm.fishList.length > 0)?_vm._l((_vm.fishList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[(item.Type===5)?_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}}):_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.detail(item)}}})])],1)}):(_vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-sports\"}},[(_vm.sportsList.length>0)?_vm._l((_vm.sportsList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[(item.Type===5)?_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}}):_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.detail(item)}}})])],1)}):(_vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-lottery\"}},[(_vm.lotteryList.length>0)?_vm._l((_vm.lotteryList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[(item.Type===5)?_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}}):_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.detail(item)}}})])],1)}):(_vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-activity-other\",\"tab-active\":\"\"}},[(_vm.otherList.length > 0)?_vm._l((_vm.otherList),function(item){return _c('f7-card',{key:item.SpecialActivityID,staticClass:\"card-header-pic\"},[_c('f7-card-header',{staticClass:\"no-border\",attrs:{\"valign\":\"bottom\"}},[(item.Type===5)?_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.apply(item.Id)}}}):_c('img',{staticClass:\"lazy lazy-fade-in activity-lazy\",attrs:{\"data-src\":`${_vm.baseImageUrl+item.PosterMobile}`,\"width\":\"100%\"},on:{\"click\":function($event){return _vm.detail(item)}}})])],1)}):(_vm.requestData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../static/images/yt999/hd_nodata_${ _vm.$f7.params.currLang }.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"activity-detail-popup\",attrs:{\"opened\":_vm.popupOpened},on:{\"popup:closed\":function($event){_vm.popupOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.activityDetails.Name}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),_c('f7-block',{domProps:{\"innerHTML\":_vm._s(_vm.activityDetails.ContentMobile)}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apply-activity.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./apply-activity.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./apply-activity.vue?vue&type=template&id=1094397a&scoped=true\"\nimport script from \"./apply-activity.vue?vue&type=script&lang=js\"\nexport * from \"./apply-activity.vue?vue&type=script&lang=js\"\nimport style0 from \"./apply-activity.vue?vue&type=style&index=0&id=1094397a&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1094397a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-apply-activity\",attrs:{\"no-toolbar\":\"\",\"name\":\"apply-activity\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('apply_activity_0001'),\"back-link\":\"\"}}),_vm._v(\" \"),_c('form',{staticClass:\"list inline-labels no-hairlines-md\",attrs:{\"id\":\"form-apply\"}},[_c('ul',[_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(_vm.$t('apply_activity_0002'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap item-input-name\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.applyDetals.Name),expression:\"applyDetals.Name\"}],attrs:{\"type\":\"text\",\"disabled\":\"\",\"readonly\":\"\"},domProps:{\"value\":(_vm.applyDetals.Name)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.applyDetals, \"Name\", $event.target.value)}}})])])]),_vm._v(\" \"),(_vm.hasData && _vm.applyDetals.BonusSetting.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.formParam.promotionName.key),expression:\"formParam.promotionName.key\"}],attrs:{\"name\":\"pormotion-name\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.formParam.promotionName, \"key\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.applyDetals.BonusSetting),function(item){return _c('option',{key:item.BonusSettingID,domProps:{\"value\":item.BonusSettingID}},[_vm._v(_vm._s(item.BonusTitle)+_vm._s(item.BonusDescription ? '('+item.BonusDescription+')' : ''))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title text-right\"},[_vm._v(_vm._s(_vm.$t('apply_activity_0003'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.formParam.promotionName.value))])])])])]):_vm._e()]),_vm._v(\" \"),_c('ul',_vm._l((_vm.applyDetals.InputSetting),function(item){return _c('div',{key:item.InputSettingID},[(item.InputType==='TextBox')?_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(item.InputTitle)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.formParam[item.InputSettingID].value),expression:\"formParam[item.InputSettingID].value\"}],attrs:{\"type\":\"text\",\"placeholder\":`$t('apply_activity_0004')${item.InputTitle}`},domProps:{\"value\":(_vm.formParam[item.InputSettingID].value)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.formParam[item.InputSettingID], \"value\", $event.target.value)}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(item.InputType==='RadioButton' && item.OptionValues)?_c('li',[_c('a',{staticClass:\"item-link smart-select\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.formParam[item.InputSettingID].value),expression:\"formParam[item.InputSettingID].value\"}],attrs:{\"name\":\"pormotion-name\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.formParam[item.InputSettingID], \"value\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((item.OptionValues.split('|')),function(options){return _c('option',{key:options,domProps:{\"value\":options}},[_vm._v(_vm._s(options))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title text-right\"},[_vm._v(_vm._s(item.InputTitle)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.formParam[item.InputSettingID].value))])])])])]):_vm._e(),_vm._v(\" \"),_c('li'),_vm._v(\" \"),(item.InputType==='CheckBox')?_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(item.InputTitle)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('label',{staticClass:\"toggle toggle-init color-blue\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.formParam[item.InputSettingID].value),expression:\"formParam[item.InputSettingID].value\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.formParam[item.InputSettingID].value)?_vm._i(_vm.formParam[item.InputSettingID].value,null)>-1:(_vm.formParam[item.InputSettingID].value)},on:{\"change\":function($event){var $$a=_vm.formParam[item.InputSettingID].value,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.formParam[item.InputSettingID], \"value\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.formParam[item.InputSettingID], \"value\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.formParam[item.InputSettingID], \"value\", $$c)}}}}),_vm._v(\" \"),_c('span',{staticClass:\"toggle-icon\"})])])])]):_vm._e(),_vm._v(\" \"),(item.InputType==='DropDownList' && item.OptionValues)?_c('li',[_c('a',{staticClass:\"item-link smart-select\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.formParam[item.InputSettingID].value),expression:\"formParam[item.InputSettingID].value\"}],attrs:{\"name\":\"pormotion-name\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.formParam[item.InputSettingID], \"value\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((item.OptionValues.split('|')),function(options){return _c('option',{key:options,domProps:{\"value\":options}},[_vm._v(_vm._s(options))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title text-right\"},[_vm._v(_vm._s(item.InputTitle)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.formParam[item.InputSettingID].value))])])])])]):_vm._e(),_vm._v(\" \"),(item.InputType==='SelectedButton' && item.OptionValues)?_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(item.InputTitle)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},_vm._l((item.OptionValues.split('|')),function(options,index){return _c('span',{key:options,staticClass:\"checkbox-item\"},[_c('label',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.formParam[item.InputSettingID].checked[index].c},on:{\"change\":function($event){return _vm.checkRead(index,_vm.formParam[item.InputSettingID], item.InputSettingID)}}}),_vm._v(\" \"),_c('i',{staticClass:\"icon-checkbox\"})]),_vm._v(\"\\n \"+_vm._s(options)+\"\\n \")])}),0)])]):_vm._e(),_vm._v(\" \"),(item.InputType === 'BigTextBox')?_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(item.InputTitle)+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.formParam[item.InputSettingID].value),expression:\"formParam[item.InputSettingID].value\"}],staticClass:\"resizable\",attrs:{\"name\":\"bio\",\"placeholder\":_vm.$t('apply_activity_0004')+item.InputTitle},domProps:{\"value\":(_vm.formParam[item.InputSettingID].value)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.formParam[item.InputSettingID], \"value\", $event.target.value)}}})])])]):_vm._e()])}),0),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('f7-button',{attrs:{\"fill\":\"\",\"raised\":\"\",\"large\":\"\"},on:{\"click\":_vm.applyNow}},[_vm._v(_vm._s(_vm.$t('apply_activity_0005')))])],1)],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.applyDetals.ContentMobile),expression:\"applyDetals.ContentMobile\"}],staticClass:\"activity-detail\"},[_c('f7-block',{domProps:{\"innerHTML\":_vm._s(_vm.applyDetals.ContentMobile)}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deposit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deposit.vue?vue&type=script&lang=js\"","\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"login_0012\") }} \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{ item.Title }} \r\n \r\n chevron_right \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ item.CnName_Title }}
\r\n
\r\n
\r\n
\r\n
\r\n
{{ item.CnName_Answer }}
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./deposit.vue?vue&type=template&id=16c1387d&scoped=true\"\nimport script from \"./deposit.vue?vue&type=script&lang=js\"\nexport * from \"./deposit.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16c1387d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-deposit\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"deposit\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('app_0012'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"buttons-tab buttons-deposit\"},[_c('f7-link',{attrs:{\"tab-link\":\"#tab-online-recharge\",\"tab-link-active\":\"\",\"text\":_vm.$t('deposit_0001')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-offline-recharge\",\"text\":_vm.$t('deposit_0002')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-bank-transfer\",\"text\":_vm.$t('deposit_0003')}})],1),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-deposit\"},[_c('f7-tab',{staticClass:\"page-content tab-bank-transfer\",attrs:{\"id\":\"tab-bank-ebank\"},on:{\"tab:show\":function($event){return _vm.tabInit(4)}}},[(_vm.eBankForm.OnlineBlankList.length > 0)?_c('f7-block',[_c('div',{staticClass:\"list inline-labels list-transfer\"},[_c('ul',[_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.eBankForm.Amount),expression:\"eBankForm.Amount\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('common_deposit_minmaxamount_format', [_vm.eBankForm.minAmount, _vm.eBankForm.maxAmount])},domProps:{\"value\":(_vm.eBankForm.Amount)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.eBankForm, \"Amount\", $event.target.value)}}})])])])]),_vm._v(\" \"),(_vm.eBankForm.OnlineBlankList.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.eBankForm.BankCode),expression:\"eBankForm.BankCode\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.eBankForm, \"BankCode\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.eBankForm.OnlineBlankList),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.eBankForm.OnlineBlankList[0][1]))])])])])]):_vm._e(),_vm._v(\" \"),(_vm.validData.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.eBankForm.PromotionId),expression:\"eBankForm.PromotionId\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.eBankForm, \"PromotionId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.validData),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.validData[0][1]))])])])])]):_vm._e()])]),_vm._v(\" \"),_c('f7-list',{staticClass:\"list-btn\",attrs:{\"inset\":\"\"}},[_c('f7-list-button',{attrs:{\"title\":_vm.$t('deposit_0007'),\"color\":\"black\"},on:{\"click\":_vm.onlineBlankSumbit}})],1)],1):[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/hd_nodata_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-online\",attrs:{\"id\":\"tab-online-recharge\",\"tab-active\":\"\"},on:{\"tab:show\":function($event){return _vm.tabInit(2)}}},[(_vm.onlinePayList.length)?[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.onlinePayShowCode),expression:\"!onlinePayShowCode\"}]},[_c('f7-block-title',{staticClass:\"block-title-online\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0061\")))]),_vm._v(\" \"),_c('f7-block',{staticClass:\"onlinepay-list\"},[(_vm.onlinePayList.length > 0)?_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_vm._l((_vm.onlinePayTypeData),function(value,key){return _c('f7-col',{key:key,staticClass:\"text-center onlinepay-item\",class:{ active: value.code === _vm.selectedOnLinePay.code },attrs:{\"width\":\"25\"},on:{\"click\":function($event){return _vm.toggleOnlinePay(value)}}},[(value.code != 'EEE')?_c('img',{attrs:{\"src\":`../../../static/images/yt999/pay/${value.code}.png`,\"width\":\"60%\"}}):_vm._e(),_vm._v(\" \"),(value.code != 'EEE')?_c('p',[_vm._v(_vm._s(value.name))]):_vm._e()])}),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"25\"}})],2):_vm._e()],1),_vm._v(\" \"),_c('f7-block-title',{staticClass:\"block-title-online\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0008\")))]),_vm._v(\" \"),_c('f7-block',{staticClass:\"onlinepay-list\"},[(_vm.onlinePayChannelList.length > 0)?_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_vm._l((_vm.onlinePayChannelList),function(value,key){return _c('f7-col',{key:key,staticClass:\"text-center onlinepay-item\",class:{ active: value.PayAccountId === _vm.selectedOnLinePayChannel.PayAccountId },attrs:{\"width\":\"33\"},on:{\"click\":function($event){return _vm.toggleOnlinePayChannel(value.PayAccountId)}}},[_c('p',[_vm._v(_vm._s(value.ChannelName.split(\"(\")[0]))]),_vm._v(\" \"),_c('p',[_vm._v(\"(\"+_vm._s(value.ChannelName.split(\"(\")[1]))])])}),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"33\"}})],2):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"list list-onlinepay inline-labels\"},[_c('ul',[(_vm.onlinePayQuickAmountEnable == false)?_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\",staticStyle:{\"margin-top\":\"1px\"}},[_c('i',{staticClass:\"iconfont icon-jinbi\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.onlinePayForm.Amount),expression:\"onlinePayForm.Amount\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('common_deposit_onlineminmaxamount_format', [_vm.selectedOnLinePayChannel.MinAmount, _vm.selectedOnLinePayChannel.MaxAmount])},domProps:{\"value\":(_vm.onlinePayForm.Amount)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.onlinePayForm, \"Amount\", $event.target.value)}}})])])])]):_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.onlinePayQuickForm.OnlinePayQuickAmount),expression:\"onlinePayQuickForm.OnlinePayQuickAmount\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.onlinePayQuickForm, \"OnlinePayQuickAmount\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.onlinePayQuickAmountList),function(item){return _c('option',{key:item,domProps:{\"value\":item}},[_vm._v(_vm._s(item))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-jinbi\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.onlinePayQuickAmountList[0]))])])])])]),_vm._v(\" \"),(_vm.validData.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.onlinePayForm.PromotionId),expression:\"onlinePayForm.PromotionId\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.onlinePayForm, \"PromotionId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.validData),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-Giftliwu1\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.validData[0][1]))])])])])]):_vm._e()])]),_vm._v(\" \"),_c('f7-list',{staticClass:\"list-btn\",attrs:{\"inset\":\"\"}},[_c('f7-list-button',{staticClass:\"button-single\",attrs:{\"title\":_vm.$t('deposit_0007'),\"color\":\"white\"},on:{\"click\":_vm.onlinePaySubmit}})],1)],1),_vm._v(\" \"),_c('f7-block',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.onlinePayShowCode),expression:\"onlinePayShowCode\"}],staticClass:\"block-order\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('div',{staticClass:\"list media-list\"},[_c('ul',[_c('li',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-media\"},[_c('img',{attrs:{\"src\":_vm.onlineOrderData.onlinePayLogo,\"width\":\"44\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title-row\"},[_c('div',{staticClass:\"item-title\"},[_c('span',{staticClass:\"order-title\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0010\")))]),_vm._v(\" \"),_c('span',{staticClass:\"order-number\"},[_vm._v(_vm._s(_vm.onlineOrderData.orderNumber))])])]),_vm._v(\" \"),_c('div',{staticClass:\"item-subtitle\"},[_c('span',{staticClass:\"order-title\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0011\")))]),_vm._v(\" \"),_c('span',{staticClass:\"order-price\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(_vm.onlineOrderData.Amount)))])])])])])])])]),_vm._v(\" \"),(_vm.onlineOrderData.payQrCodeUrl)?_c('div',{staticClass:\"order-qrcode\"},[_c('img',{attrs:{\"src\":_vm.onlineOrderData.payQrCodeUrl,\"alt\":\"\",\"width\":\"58%\"}}),_vm._v(\" \"),_c('div',{staticClass:\"express-date\"},[(!_vm.expiredShow)?[_c('span',[_vm._v(_vm._s(_vm.$t(\"deposit_0012\")))]),_vm._v(\" \"),_c('span',{staticClass:\"color-date\"},[_vm._v(_vm._s(_vm._f(\"time\")(_vm.onlineOrderData.expDate,\"mm:ss\")))])]:_vm._e(),_vm._v(\" \"),(_vm.expiredShow)?[_c('span',{staticClass:\"color-white\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0013\")))])]:_vm._e()],2)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"padding text-left order-desc\"},[_c('p',{staticClass:\"text-16 color-blue\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0014\")))]),_vm._v(\" \"),_c('p',{staticClass:\"text-14\"},[_c('span',{staticClass:\"color-blue text-bold\"},[_vm._v(\"1. \")]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"deposit_0015\"))+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"text-14\"},[_c('span',{staticClass:\"color-blue text-bold\"},[_vm._v(\"2. \")]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"deposit_0016\"))+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"text-14\"},[_c('span',{staticClass:\"color-blue text-bold\"},[_vm._v(\"3. \")]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"deposit_0017\"))+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"remark text-14\"},[_c('span',{staticClass:\"color-red\"},[_vm._v(\"●\")]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"deposit_0018\"))+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"remark text-14\"},[_c('span',{staticClass:\"color-red\"},[_vm._v(\"●\")]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"deposit_0019\"))+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"remark text-14\"},[_c('span',{staticClass:\"color-red\"},[_vm._v(\"●\")]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"deposit_0020\"))+\"\\n \")])])]),_vm._v(\" \"),_c('f7-block',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.userInfo.Currency === 'VNDK'),expression:\"userInfo.Currency === 'VNDK'\"}],staticClass:\"tips-container\"},[_c('f7-block-title',{staticClass:\"block-title-tip\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"v1_deposit_0002\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"v1_deposit_0003\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"v1_deposit_0004\")))])])],1)]:(!_vm.showData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/hd_nodata_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-offline\",attrs:{\"id\":\"tab-offline-recharge\"},on:{\"tab:show\":function($event){return _vm.tabInit(1)}}},[(_vm.qrCodeData.length > 0 && _vm.qrCodeDataInit)?[_c('f7-block',{staticClass:\"panel-qrcode\"},[(_vm.selectedIndex > 0)?_c('div',{staticClass:\"qrcode-info text-center\"},[_c('img',{attrs:{\"src\":_vm.selectedPay.qrCodeImg},on:{\"click\":function($event){return _vm.clickRedirectTo(_vm.selectedPay.ClickRedirect)}}}),_vm._v(\" \"),_c('p',{staticClass:\"qr-selectCode\"},[_vm._v(_vm._s(_vm.selectedPay.account)+\" (\"+_vm._s(_vm.selectedPay.name)+\")\")]),_vm._v(\" \"),_c('p',{staticClass:\"qr-remark\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0021\")))]),_vm._v(\" \"),(_vm.selectedQRCode.length > 0)?_c('f7-segmented',{staticClass:\"qrcode-list-btn qrcode-detail-list\",attrs:{\"round\":\"\",\"tag\":\"p\"}},_vm._l((_vm.selectedQRCode),function(item,key){return _c('f7-button',{key:key,attrs:{\"round\":\"\",\"outline\":\"\",\"active\":item.Id === _vm.selectedPay.offlineId},on:{\"click\":function($event){return _vm.selectQrCodeDetail(item)}}},[_vm._v(_vm._s(item.Name))])}),1):_vm._e(),_vm._v(\" \"),_c('f7-button',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.selectedPay.account),expression:\"selectedPay.account\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopy),expression:\"onCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onError),expression:\"onError\",arg:\"error\"}],staticClass:\"click-copy\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0022\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.selectedIndex > 0)?_c('f7-segmented',{staticClass:\"qrcode-list-type-btn\",attrs:{\"round\":\"\",\"tag\":\"p\"}},_vm._l((_vm.offlinePayList),function(value,key){return _c('f7-button',{key:key,attrs:{\"round\":\"\",\"outline\":\"\",\"active\":value.type == _vm.selectedQRCode[0].Type},on:{\"click\":function($event){return _vm.toggleOfflinePay(value)}}},[_vm._v(_vm._s(value.name))])}),1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"block-title block-title-payinfo\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0023\")))]),_vm._v(\" \"),_c('div',{staticClass:\"list list-pay inline-labels\"},[_c('ul',[_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-jinbi\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.offlineForm.Amount),expression:\"offlineForm.Amount\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('common_deposit_onlineminmaxamount_format', [_vm.selectedPay.offlineMinAmt, _vm.selectedPay.offlineMaxAmt])},domProps:{\"value\":(_vm.offlineForm.Amount)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.offlineForm, \"Amount\", $event.target.value)}}})])])])]),_vm._v(\" \"),_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedPay.EnableRealDepositRate),expression:\"selectedPay.EnableRealDepositRate\"}]},[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-jinbi\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('label',[_vm._v(_vm._s(_vm.$t(\"deposit_0025\"))+\" \"+_vm._s(_vm.getQRRealAmount))])])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-mingxiqingdanlei\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.offlineForm.AccountName),expression:\"offlineForm.AccountName\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('deposit_0026') + ' ' + _vm.offlineConfirmNoDesc},domProps:{\"value\":(_vm.offlineForm.AccountName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.offlineForm, \"AccountName\", $event.target.value)}}})])])])]),_vm._v(\" \"),(_vm.validData.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.offlineForm.PromotionId),expression:\"offlineForm.PromotionId\"}],attrs:{\"name\":\"select-valid\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.offlineForm, \"PromotionId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.validData),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-Giftliwu1\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.validData[0][1]))])])])])]):_vm._e()])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedPay.EnableRealDepositRate),expression:\"selectedPay.EnableRealDepositRate\"}]}),_vm._v(\" \"),_c('f7-list',{staticClass:\"list-btn\",attrs:{\"inset\":\"\"}},[_c('f7-list-button',{staticClass:\"button-single\",attrs:{\"title\":_vm.$t('deposit_0007'),\"color\":\"white\"},on:{\"click\":_vm.offlineSubmit}})],1),_vm._v(\" \"),_c('f7-block-title',{staticClass:\"block-title-tip\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0027\"))+\":\")]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"deposit_0028\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"deposit_0029\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"deposit_0030\")))])])]:_vm._e(),_vm._v(\" \"),(_vm.qrCodeData.length == 0 && _vm.qrCodeDataInit)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/hd_nodata_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-bank-transfer\",attrs:{\"id\":\"tab-bank-transfer\"},on:{\"tab:show\":function($event){return _vm.tabInit(3)}}},[(_vm.payBankListData.length > 0 && _vm.payBankListDataInit)?_c('f7-block',[(_vm.payBankListData.length)?_c('div',{staticClass:\"list\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"},on:{\"smartselect:close\":_vm.selectBankEvent}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.BankId),expression:\"bankTransferForm.BankId\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.bankTransferForm, \"BankId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.payBankListData),function(item){return _c('option',{key:item.Id,domProps:{\"value\":item.Id}},[_vm._v(_vm._s(item.BankName)+\" \"+_vm._s(item.CardNumber))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.payBankListData[0].BankName)+\" \"+_vm._s(_vm.payBankListData[0].CardNumber))])])])])])])]):_vm._e(),_vm._v(\" \"),(_vm.payBankListData.length)?_c('div',{staticClass:\"card bank-card\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"card-avatar\"},[_c('img',{attrs:{\"src\":require(\"../../../static/images/yt999/banklogo/bankcode.png\"),\"width\":\"32\",\"height\":\"32\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"card-name\"},[_vm._v(_vm._s(_vm.selectBankInfo.bankName))])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('div',{staticClass:\"card-info text-26 card-number\"},[_vm._v(_vm._s(_vm._f(\"fmtBankNumber\")(_vm.selectBankInfo.bankNo)))]),_vm._v(\" \"),_c('div',{staticClass:\"card-info card-name\"},[_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t(\"v1_deposit_0001\")))]),_vm._v(\" \"),_c('div',{staticClass:\"value\"},[_c('span',[_vm._v(_vm._s(_vm.selectBankInfo.accoutName))])]),_vm._v(\" \"),_c('f7-button',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.selectBankInfo.accoutName),expression:\"selectBankInfo.accoutName\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopy),expression:\"onCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onError),expression:\"onError\",arg:\"error\"}],attrs:{\"type\":\"text\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0033\")))])],1),_vm._v(\" \"),_c('div',{staticClass:\"card-info card-address text-16\"},[_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0032\")))]),_vm._v(\" \"),_c('div',{staticClass:\"value\"},[_c('span',[_vm._v(_vm._s(_vm.selectBankInfo.bankAddress))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer\"},[_c('f7-block',[_c('f7-row',[_c('f7-col',[_c('f7-button',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.selectBankInfo.bankNo),expression:\"selectBankInfo.bankNo\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopy),expression:\"onCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onError),expression:\"onError\",arg:\"error\"}],attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0034\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.selectBankInfo.bankAddress),expression:\"selectBankInfo.bankAddress\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopy),expression:\"onCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onError),expression:\"onError\",arg:\"error\"}],attrs:{\"fill\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0035\")))])],1)],1)],1)],1)]):_vm._e(),_vm._v(\" \"),(_vm.selectBankInfo.memberRemarks != '')?_c('div',{staticClass:\"remarks\"},[_c('span',{staticClass:\"tips\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0024\"))+\":\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"tips-remarks\"},[_vm._v(_vm._s(_vm.selectBankInfo.memberRemarks))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"list inline-labels list-transfer\"},[_c('ul',[_c('li',{staticClass:\"hidden\"},[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.TransferType),expression:\"bankTransferForm.TransferType\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.bankTransferForm, \"TransferType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"selected\":\"\",\"value\":\"BankBar\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0036\")))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"Mobile\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0037\")))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"NetBank\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0038\")))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"ATM\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0039\")))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"ATMCash\"}},[_vm._v(_vm._s(_vm.$t(\"deposit_0040\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0036\")))])])])])]),_vm._v(\" \"),_c('li',{staticStyle:{\"display\":\"none\"}},[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.DepositTs),expression:\"bankTransferForm.DepositTs\"}],attrs:{\"type\":\"text\",\"id\":\"date\",\"readonly\":\"\"},domProps:{\"value\":(_vm.bankTransferForm.DepositTs)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.bankTransferForm, \"DepositTs\", $event.target.value)}}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.AccountName),expression:\"bankTransferForm.AccountName\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('deposit_0044')},domProps:{\"value\":(_vm.bankTransferForm.AccountName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.bankTransferForm, \"AccountName\", $event.target.value)}}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-jinbi\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.Amount),expression:\"bankTransferForm.Amount\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('common_deposit_minmaxamount_format', [_vm.selectBankInfo.minAmount, _vm.selectBankInfo.maxAmount])},domProps:{\"value\":(_vm.bankTransferForm.Amount)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.bankTransferForm, \"Amount\", $event.target.value)}}})])])])]),_vm._v(\" \"),_c('li',{staticStyle:{\"display\":\"none\"}},[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-yonghuziliaogerenxinxigerenziliao-xianxing\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.BankAccountNo),expression:\"bankTransferForm.BankAccountNo\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('deposit_0047')},domProps:{\"value\":(_vm.bankTransferForm.BankAccountNo)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.bankTransferForm, \"BankAccountNo\", $event.target.value)}}})])])])]),_vm._v(\" \"),(_vm.bankListData.length > 0)?_c('li',{staticStyle:{\"display\":\"none\"}},[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.BankCode),expression:\"bankTransferForm.BankCode\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.bankTransferForm, \"BankCode\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.bankListData),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.bankListData[0][1]))])])])])]):_vm._e(),_vm._v(\" \"),(_vm.validData.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankTransferForm.PromotionId),expression:\"bankTransferForm.PromotionId\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.bankTransferForm, \"PromotionId\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.validData),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_c('i',{staticClass:\"iconfont icon-Giftliwu1\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.validData[0][1]))])])])])]):_vm._e()])]),_vm._v(\" \"),_c('f7-list',{staticClass:\"list-btn\",attrs:{\"inset\":\"\"}},[_c('f7-list-button',{staticClass:\"button-single\",attrs:{\"title\":_vm.$t('deposit_0007'),\"color\":\"white\"},on:{\"click\":_vm.bankTransferSubmit}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.payBankListData.length == 0 && _vm.payBankListDataInit)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/hd_nodata_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./online-cs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./online-cs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./online-cs.vue?vue&type=template&id=472fd86e&scoped=true\"\nimport script from \"./online-cs.vue?vue&type=script&lang=js\"\nexport * from \"./online-cs.vue?vue&type=script&lang=js\"\nimport style0 from \"./online-cs.vue?vue&type=style&index=0&id=472fd86e&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"472fd86e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"online-cs-info\",attrs:{\"no-swipeback\":\"\",\"name\":\"online-cs\"},on:{\"page:beforein\":_vm.onPageBeforeIn}},[_c('f7-popup',{staticClass:\"onlineCustom-popup\",attrs:{\"opened\":_vm.onlinePopupOpened},on:{\"popup:closed\":function($event){_vm.onlinePopupOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.$t('login_0012')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"multiply_circle\")])])],1)],1),_vm._v(\" \"),_c('iframe',{staticClass:\"iframe-onlineCustom\",attrs:{\"src\":_vm.onlineCustomUrl,\"frameborder\":\"0\"}})],1)],1),_vm._v(\" \"),_c('f7-navbar',{attrs:{\"no-hariline\":true,\"innerClass\":\"inner-bankInfo\"}},[_c('f7-nav-title',[_vm._v(_vm._s(_vm.$t(\"login_0012\")))])],1),_vm._v(\" \"),[_c('div',{staticClass:\"qaimg\"},[_c('ul',[_c('li',[_c('img',{staticClass:\"button-single\",attrs:{\"src\":require(\"../../../static/images/yt999/qa.png\")}})])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-save\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button button-single\",attrs:{\"href\":\"#\",\"click\":\"QASubmit\"},on:{\"click\":function($event){return _vm.openServiceAction()}}},[_c('span',{staticClass:\"material-icons\",staticStyle:{\"color\":\"white\",\"vertical-align\":\"sub\"}},[_vm._v(\"headset_mic\")]),_vm._v(\" \"),_c('span',{staticStyle:{\"display\":\"inline-block\"}},[_vm._v(_vm._s(_vm.$t(\"login_0012\")))])])])])])]),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content-cs\",attrs:{\"id\":\"tab-accountCenter\",\"tab-active\":\"\"}},[_c('f7-block',[_c('f7-list',_vm._l((_vm.onlinecsList),function(item){return _c('f7-list-item',{key:item.CSID,staticClass:\"icon-animation\",attrs:{\"src\":\"\"},on:{\"click\":function($event){return _vm.goCSPage(item.Link)}}},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(item.Title))]),_vm._v(\" \"),_c('img',{staticClass:\"img-ico\",attrs:{\"src\":'../../../static/images/yt999/cs_ico/' + item.CSType + '.png'}}),_vm._v(\" \"),_c('i',{staticClass:\"f7-icons go-ico\"},[_vm._v(\"chevron_right\")])])}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"block accordion-list\"},_vm._l((_vm.depositqaList),function(item){return _c('div',{key:item.QID,staticClass:\"accordion-item\"},[_c('div',{staticClass:\"accordion-item-toggle\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-90 text-left col-title\",staticStyle:{\"padding\":\"10px\",\"width\":\"100%\"}},[_c('img',{staticClass:\"help\",attrs:{\"src\":require(\"../../../static/images/yt999/help.png\")}}),_vm._v(\" \"),_c('div',{staticClass:\"s-title\"},[_vm._v(_vm._s(item.CnName_Title))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('div',{staticClass:\"ans\",staticStyle:{\"margin\":\"auto\",\"word-break\":\"break-all\",\"word-wrap\":\"break-word\",\"width\":\"84%\",\"margin-bottom\":\"20px\"},attrs:{\"block\":\"\"}},[_vm._v(_vm._s(item.CnName_Answer))])])])}),0)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./init-online-payment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./init-online-payment.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./init-online-payment.vue?vue&type=template&id=6fa42763&scoped=true\"\nimport script from \"./init-online-payment.vue?vue&type=script&lang=js\"\nexport * from \"./init-online-payment.vue?vue&type=script&lang=js\"\nimport style0 from \"./init-online-payment.vue?vue&type=style&index=0&id=6fa42763&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6fa42763\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\"},on:{\"page:init\":_vm.init}},[_c('f7-popup',{staticClass:\"loadding-popup\",attrs:{\"opened\":_vm.loadingPopupOpened,\"tablet-fullscreen\":\"\"}},[_c('f7-page',[_c('f7-block',[_c('div',{staticClass:\"loader-ring\"},[_c('div',{staticClass:\"loader-ring-light\"}),_vm._v(\" \"),_c('div',{staticClass:\"loader-ring-track\"}),_vm._v(\" \"),_c('div',{staticClass:\"loader-logo\"},[_c('div',[_vm._v(_vm._s(_vm.$t(\"deposit_0057\")))])])])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./transfer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./transfer.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n
{{ $t(\"transfer_0002\") }}
\r\n
\r\n 1 ? 'bright' : 'dark'}`\" v-else>\r\n \r\n
\r\n
\r\n
\r\n
{{ userInfo.currencySymbol }}{{ selectWalletEntity.Balance | formatCurrency }} \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ $t(\"common_balance_transfer_in\") }} \r\n \r\n \r\n {{ $t(\"common_balance_transfer_out\") }} \r\n \r\n \r\n {{ $t(\"transfer_0004\") }} \r\n \r\n \r\n
\r\n
\r\n
\r\n
{{ selectWalletEntity.ParentNames }}
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ $t(\"transfer_0005\") }} \r\n \r\n {{ $t(\"common_transfer_from_format\", [selectWalletEntity.Name || \"--\"]) }} \r\n {{ $t(\"common_transfer_to_format\", [selectWalletEntity.Name || \"--\"]) }} \r\n \r\n \r\n \r\n \r\n
\r\n
{{ $t(\"transfer_0006\") }}
\r\n
{{ $t(\"transfer_0007\") }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t(\"transfer_0012\") }} \r\n \r\n \r\n {{ $t(\"common_one_key_transfer_game_balance_back\") }} \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./transfer.vue?vue&type=template&id=cafb2774&scoped=true\"\nimport script from \"./transfer.vue?vue&type=script&lang=js\"\nexport * from \"./transfer.vue?vue&type=script&lang=js\"\nimport style0 from \"./transfer.vue?vue&type=style&index=0&id=cafb2774&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cafb2774\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-transfer\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"hide-toolbar-on-scroll\":\"\",\"name\":\"transfer\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('transfer_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-wallet-list\"},[(_vm.selectWalletEntity.ProviderId == -1)?_c('div',{staticClass:\"card card-select-wallte card-bg-bright\",on:{\"click\":_vm.clickSelectWallte}},[_c('div',{staticClass:\"card-content card-content-padding text-center\"},[_vm._v(_vm._s(_vm.$t(\"transfer_0002\")))])]):_c('div',{staticClass:\"card card-selected-wallet\",class:`card-bg-${_vm.selectWalletEntity.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(_vm.selectWalletEntity.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{on:{\"click\":function($event){_vm.popupOpened = true}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0003\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.selectedWalletLoading),expression:\"!selectedWalletLoading\"}]},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(_vm.selectWalletEntity.Balance)))]),_vm._v(\" \"),_c('preloader',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedWalletLoading),expression:\"selectedWalletLoading\"}],attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(_vm.selectWalletEntity, true)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(_vm.selectWalletEntity, true)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.refreshSelectedWallet}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(_vm.selectWalletEntity.ParentNames))])])])])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-transfer-type\"},[_c('f7-row',{staticClass:\"trnasfer-type\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-center text-16 color-black\",attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"transfer_0005\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-16 color-transferType\",attrs:{\"width\":\"70\"}},[(_vm.transferFrom === 0)?_c('span',[_vm._v(_vm._s(_vm.$t(\"common_transfer_from_format\", [_vm.selectWalletEntity.Name || \"--\"])))]):_vm._e(),_vm._v(\" \"),(_vm.transferFrom === 1)?_c('span',[_vm._v(_vm._s(_vm.$t(\"common_transfer_to_format\", [_vm.selectWalletEntity.Name || \"--\"])))]):_vm._e()])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"block-transfer-from block\"},[_c('div',{staticClass:\"trnasfer-from row no-gap\"},[_c('div',{staticClass:\"text-center text-16 col\",class:{ active: _vm.transferFrom === 0 },on:{\"click\":function($event){return _vm.toggleTransferForm(0)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0006\")))]),_vm._v(\" \"),_c('div',{staticClass:\"text-center text-16 col\",class:{ active: _vm.transferFrom === 1 },on:{\"click\":function($event){return _vm.toggleTransferForm(1)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0007\")))])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inline-labels list-transfer\"},[_c('ul',[_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-jinbi\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{staticClass:\"input-walletBlance\",attrs:{\"type\":\"text\",\"readonly\":\"\",\"disabled\":\"\"},domProps:{\"value\":_vm._f(\"formatCurrency\")(_vm.walletBalance)}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('i',{staticClass:\"iconfont icon-jinbi\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.quotaPrice),expression:\"quotaPrice\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('deposit_0026') + _vm.transferFrom ? _vm.$t('transfer_0010') : _vm.$t('transfer_0009')},domProps:{\"value\":(_vm.quotaPrice)},on:{\"input\":function($event){if($event.target.composing)return;_vm.quotaPrice=$event.target.value}}})])])])])])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-buttons\"},[_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"button-submit\",attrs:{\"large\":\"\",\"raised\":\"\"},on:{\"click\":_vm.transferSubmit}},[_vm._v(_vm._s(_vm.$t(\"transfer_0012\")))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"button-recycling\",attrs:{\"large\":\"\",\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.oneClickRecycling}},[_vm._v(_vm._s(_vm.$t(\"common_one_key_transfer_game_balance_back\")))])],1)],1)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"transfer-popup\",attrs:{\"opened\":_vm.popupOpened},on:{\"popup:closed\":function($event){_vm.popupOpened = false}}},[_c('f7-page',{attrs:{\"hide-toolbar-on-scroll\":\"\"}},[_c('f7-navbar',[_c('f7-nav-left',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_left\")])])],1),_vm._v(\" \"),_c('f7-nav-title',[_c('f7-link',[_vm._v(_vm._s(_vm.$t(\"transfer_0013\")))])],1),_vm._v(\" \"),_c('f7-nav-right',[_c('f7-button',{on:{\"click\":_vm.refreshBalance}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1),_vm._v(\" \"),_c('f7-subnavbar',[_c('f7-segmented',{attrs:{\"raised\":\"\"}},[_c('f7-button',{attrs:{\"tab-link\":\"#tab-transfer-all\",\"tab-link-active\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"common_0005\")))]),_vm._v(\" \"),_c('f7-button',{attrs:{\"tab-link\":\"#tab-transfer-casino\"}},[_vm._v(_vm._s(_vm.$t(\"common_0007\")))]),_vm._v(\" \"),_c('f7-button',{attrs:{\"tab-link\":\"#tab-transfer-egame\"}},[_vm._v(_vm._s(_vm.$t(\"common_0006\")))]),_vm._v(\" \"),_c('f7-button',{attrs:{\"tab-link\":\"#tab-transfer-sports\"}},[_vm._v(_vm._s(_vm.$t(\"common_0010\")))]),_vm._v(\" \"),_c('f7-button',{attrs:{\"tab-link\":\"#tab-transfer-lottery\"}},[_vm._v(_vm._s(_vm.$t(\"common_0011\")))]),_vm._v(\" \"),_c('f7-button',{attrs:{\"tab-link\":\"#tab-transfer-card\"}},[_vm._v(_vm._s(_vm.$t(\"common_0008\")))]),_vm._v(\" \"),_c('f7-button',{attrs:{\"tab-link\":\"#tab-transfer-fish\"}},[_vm._v(_vm._s(_vm.$t(\"common_0009\")))])],1)],1)],1),_vm._v(\" \"),_c('f7-toolbar',{attrs:{\"bottom\":\"\"}},[_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"transfer_0014\"))+\":\\n \"),_c('span',{staticClass:\"mainwallet-balance\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(_vm.walletBalance)))])])]),_vm._v(\" \"),_c('f7-tabs',[_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-transfer-all\",\"tab-active\":\"\"}},[_c('f7-block',_vm._l((_vm.gameWalletType.All),function(item){return _c('div',{key:`all-${item.ProviderId}`,staticClass:\"card\",class:`card-${item.ProviderId} card-bg-${item.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(item.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },on:{\"click\":function($event){return _vm.selectedWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0015\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('div',{staticClass:\"wallet-detail\"},[(item.IsMaintain)?_c('span',{staticClass:\"is-maintain\"},[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',{staticClass:\"is-na\"},[_vm._v(\"N/A\")]):_c('span',{staticClass:\"query-success\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-preload\"},[_c('preloader',{attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.refreshSingleWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(item.ParentNames))])])])])}),0)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-transfer-casino\"}},[_c('f7-block',_vm._l((_vm.gameWalletType.Casino),function(item){return _c('div',{key:`all-${item.ProviderId}`,staticClass:\"card\",class:`card-${item.ProviderId} card-bg-${item.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(item.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },on:{\"click\":function($event){return _vm.selectedWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0015\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('div',{staticClass:\"wallet-detail\"},[(item.IsMaintain)?_c('span',{staticClass:\"is-maintain\"},[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',{staticClass:\"is-na\"},[_vm._v(\"N/A\")]):_c('span',{staticClass:\"query-success\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-preload\"},[_c('preloader',{attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.refreshSingleWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(item.ParentNames))])])])])}),0)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-transfer-egame\"}},[_c('f7-block',_vm._l((_vm.gameWalletType.Egame),function(item){return _c('div',{key:`all-${item.ProviderId}`,staticClass:\"card\",class:`card-${item.ProviderId} card-bg-${item.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(item.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },on:{\"click\":function($event){return _vm.selectedWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0015\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('div',{staticClass:\"wallet-detail\"},[(item.IsMaintain)?_c('span',{staticClass:\"is-maintain\"},[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',{staticClass:\"is-na\"},[_vm._v(\"N/A\")]):_c('span',{staticClass:\"query-success\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-preload\"},[_c('preloader',{attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.refreshSingleWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(item.ParentNames))])])])])}),0)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-transfer-sports\"}},[_c('f7-block',_vm._l((_vm.gameWalletType.Sports),function(item){return _c('div',{key:`all-${item.ProviderId}`,staticClass:\"card\",class:`card-${item.ProviderId} card-bg-${item.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(item.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },on:{\"click\":function($event){return _vm.selectedWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0015\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('div',{staticClass:\"wallet-detail\"},[(item.IsMaintain)?_c('span',{staticClass:\"is-maintain\"},[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',{staticClass:\"is-na\"},[_vm._v(\"N/A\")]):_c('span',{staticClass:\"query-success\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-preload\"},[_c('preloader',{attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.refreshSingleWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(item.ParentNames))])])])])}),0)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-transfer-lottery\"}},[_c('f7-block',_vm._l((_vm.gameWalletType.Lottery),function(item){return _c('div',{key:`all-${item.ProviderId}`,staticClass:\"card\",class:`card-${item.ProviderId} card-bg-${item.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(item.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },on:{\"click\":function($event){return _vm.selectedWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0015\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('div',{staticClass:\"wallet-detail\"},[(item.IsMaintain)?_c('span',{staticClass:\"is-maintain\"},[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',{staticClass:\"is-na\"},[_vm._v(\"N/A\")]):_c('span',{staticClass:\"query-success\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-preload\"},[_c('preloader',{attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.refreshSingleWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(item.ParentNames))])])])])}),0)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-transfer-card\"}},[_c('f7-block',_vm._l((_vm.gameWalletType.Card),function(item){return _c('div',{key:`all-${item.ProviderId}`,staticClass:\"card\",class:`card-${item.ProviderId} card-bg-${item.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(item.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },on:{\"click\":function($event){return _vm.selectedWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0015\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('div',{staticClass:\"wallet-detail\"},[(item.IsMaintain)?_c('span',{staticClass:\"is-maintain\"},[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',{staticClass:\"is-na\"},[_vm._v(\"N/A\")]):_c('span',{staticClass:\"query-success\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-preload\"},[_c('preloader',{attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.refreshSingleWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(item.ParentNames))])])])])}),0)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-transfer-fish\"}},[_c('f7-block',_vm._l((_vm.gameWalletType.Fish),function(item){return _c('div',{key:`all-${item.ProviderId}`,staticClass:\"card\",class:`card-${item.ProviderId} card-bg-${item.SupportGameType.length > 1 ? 'bright' : 'dark'}`},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"wallet-name\"},[_vm._v(\"<\"+_vm._s(item.Name)+\">\")]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-select\"},[_c('f7-button',{class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },on:{\"click\":function($event){return _vm.selectedWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0015\")))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50 col-balance\"},[_c('div',{staticClass:\"wallet-detail\"},[(item.IsMaintain)?_c('span',{staticClass:\"is-maintain\"},[_vm._v(_vm._s(_vm.$t(\"common_under_maintenance\")))]):(!item.QuerySuccess)?_c('span',{staticClass:\"is-na\"},[_vm._v(\"N/A\")]):_c('span',{staticClass:\"query-success\"},[_vm._v(_vm._s(_vm.userInfo.currencySymbol)+_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"wallet-preload\"},[_c('preloader',{attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 col-btns text-right\"},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.mainWalletToGameEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_in\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-transferOut\",class:{ 'btn-disabled': item.IsMaintain || !item.QuerySuccess },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.gameWalletToMainEvent(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_balance_transfer_out\")))])],1),_vm._v(\" \"),_c('f7-col',[_c('f7-button',{staticClass:\"btn-refresh\",attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.refreshSingleWallet(item)}}},[_vm._v(_vm._s(_vm.$t(\"transfer_0004\")))])],1)],1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-parent-names\"},[_c('div',{staticClass:\"col wallet-parent-names\"},[_vm._v(_vm._s(item.ParentNames))])])])])}),0)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./safe.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./safe.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n
{{ $t(\"safe_0002\") }}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
1
\r\n
2
\r\n
3
\r\n
4
\r\n
5
\r\n
6
\r\n
7
\r\n
8
\r\n
9
\r\n
0
\r\n
{{ $t(\"safe_0003\") }}
\r\n
{{ $t(\"safe_0004\") }}
\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./safe.vue?vue&type=template&id=03182999&scoped=true\"\nimport script from \"./safe.vue?vue&type=script&lang=js\"\nexport * from \"./safe.vue?vue&type=script&lang=js\"\nimport style0 from \"./safe.vue?vue&type=style&index=0&id=03182999&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"03182999\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-transfer\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"hide-toolbar-on-scroll\":\"\",\"name\":\"transfer\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('safe_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"tip\"},[_vm._v(_vm._s(_vm.$t(\"safe_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"password\"},[_c('div'),_vm._v(\" \"),_c('div'),_vm._v(\" \"),_c('div'),_vm._v(\" \"),_c('div'),_vm._v(\" \"),_c('div'),_vm._v(\" \"),_c('div')]),_vm._v(\" \"),_c('div',{staticClass:\"keyboard\"},[_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(1)}}},[_vm._v(\"1\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(2)}}},[_vm._v(\"2\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(3)}}},[_vm._v(\"3\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(4)}}},[_vm._v(\"4\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(5)}}},[_vm._v(\"5\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(6)}}},[_vm._v(\"6\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(7)}}},[_vm._v(\"7\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(8)}}},[_vm._v(\"8\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(9)}}},[_vm._v(\"9\")]),_vm._v(\" \"),_c('div',{on:{\"click\":function($event){return _vm.onkeyboard(0)}}},[_vm._v(\"0\")]),_vm._v(\" \"),_c('div',{staticClass:\"delbackground\",on:{\"click\":function($event){return _vm.delkeyboard()}}},[_vm._v(_vm._s(_vm.$t(\"safe_0003\")))]),_vm._v(\" \"),_c('div',{staticClass:\"confirmbackground\",on:{\"click\":function($event){return _vm.confirmButton()}}},[_vm._v(_vm._s(_vm.$t(\"safe_0004\")))])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./safe-box.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./safe-box.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n chevron_left \r\n \r\n \r\n {{ $t(\"safe_box_0001\") }} \r\n \r\n \r\n {{ $t(\"safe_box_0002\") }}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ $t(\"safe_box_0003\") }} \r\n
\r\n {{ safetyboxbalance | formatCurrency }} \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ $t(\"safe_box_0004\") }} \r\n \r\n <{{ $t(\"safe_box_0005\") }}>{{ $t(\"safe_box_0006\") }}<{{ $t(\"safe_box_0001\") }}> \r\n <{{ $t(\"safe_box_0001\") }}>{{ $t(\"safe_box_0006\") }}<{{ $t(\"safe_box_0005\") }}> \r\n \r\n \r\n \r\n \r\n
\r\n
{{ $t(\"safe_box_0007\") }}
\r\n
{{ $t(\"safe_box_0008\") }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
{{ $t(\"safe_box_0005\") }}:
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n {{ $t(\"safe_box_0009\") }}: \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t(\"safe_box_0011\") }} \r\n \r\n \r\n {{ $t(\"safe_box_0012\") }} \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./safe-box.vue?vue&type=template&id=1c8c92ac&scoped=true\"\nimport script from \"./safe-box.vue?vue&type=script&lang=js\"\nexport * from \"./safe-box.vue?vue&type=script&lang=js\"\nimport style0 from \"./safe-box.vue?vue&type=style&index=0&id=1c8c92ac&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c8c92ac\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-transfer\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"hide-toolbar-on-scroll\":\"\",\"name\":\"transfer\"}},[_c('f7-navbar',{attrs:{\"no-hariline\":true}},[_c('f7-nav-left',[_c('f7-link',{staticClass:\"icon-only\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/')}}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_left\")])])],1),_vm._v(\" \"),_c('f7-nav-title',[_vm._v(_vm._s(_vm.$t(\"safe_box_0001\")))]),_vm._v(\" \"),_c('f7-nav-right',{staticClass:\"navright\"},[_c('f7-link',{on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/safe-records/')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"safe_box_0002\"))+\"\\n \")])],1)],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-wallet-list\"},[_c('div',{staticClass:\"card card-select-wallte card-bg-bright\"},[_c('div',{staticClass:\"card-content card-content-padding text-center\"},[_c('f7-col',{staticClass:\"text-center text-16 color-white\",attrs:{\"width\":\"40\"}},[_vm._v(_vm._s(_vm.$t(\"safe_box_0003\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-center text-16 color-white\",attrs:{\"width\":\"60\"}},[(_vm.safetyboxbalance || _vm.safetyboxbalance == 0)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.safetyboxbalance)))]):_c('preloader',{staticStyle:{\"width\":\"16px\",\"margin\":\"0 auto\"},attrs:{\"list\":4}})],1)],1)])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-transfer-type\"},[_c('f7-row',{staticClass:\"trnasfer-type\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-center text-16 color-white\",attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"safe_box_0004\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-16 color-transferType\",attrs:{\"width\":\"70\"}},[(_vm.transferFrom === 0)?_c('span',[_vm._v(\"<\"+_vm._s(_vm.$t(\"safe_box_0005\"))+\">\"+_vm._s(_vm.$t(\"safe_box_0006\"))+\"<\"+_vm._s(_vm.$t(\"safe_box_0001\"))+\">\")]):_vm._e(),_vm._v(\" \"),(_vm.transferFrom === 1)?_c('span',[_vm._v(\"<\"+_vm._s(_vm.$t(\"safe_box_0001\"))+\">\"+_vm._s(_vm.$t(\"safe_box_0006\"))+\"<\"+_vm._s(_vm.$t(\"safe_box_0005\"))+\">\")]):_vm._e()])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"block-transfer-from block\"},[_c('div',{staticClass:\"trnasfer-from row no-gap\"},[_c('div',{staticClass:\"text-center text-16 col\",class:{ active: _vm.transferFrom === 0 },on:{\"click\":function($event){return _vm.toggleTransferForm(0)}}},[_vm._v(_vm._s(_vm.$t(\"safe_box_0007\")))]),_vm._v(\" \"),_c('div',{staticClass:\"text-center text-16 col\",class:{ active: _vm.transferFrom === 1 },on:{\"click\":function($event){return _vm.toggleTransferForm(1)}}},[_vm._v(_vm._s(_vm.$t(\"safe_box_0008\")))])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inline-labels list-transfer\"},[_c('ul',[_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"safe_box_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[(_vm.walletbalance || _vm.walletbalance == 0)?_c('input',{staticClass:\"input-walletBlance\",attrs:{\"type\":\"text\",\"readonly\":\"\",\"disabled\":\"\"},domProps:{\"value\":_vm._f(\"formatCurrency\")(_vm.walletbalance)}}):_c('preloader',{attrs:{\"list\":4}})],1)])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"safe_box_0009\"))+\":\")])]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.enterPrice),expression:\"enterPrice\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('safe_box_0010')},domProps:{\"value\":(_vm.enterPrice)},on:{\"input\":function($event){if($event.target.composing)return;_vm.enterPrice=$event.target.value}}})])])])])])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-buttons\"},[_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"button-submit\",attrs:{\"large\":\"\",\"raised\":\"\"},on:{\"click\":function($event){return _vm.confrim(_vm.transferFrom + 1)}}},[_vm._v(_vm._s(_vm.$t(\"safe_box_0011\")))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"button-recycling\",attrs:{\"large\":\"\",\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.update()}}},[_vm._v(_vm._s(_vm.$t(\"safe_box_0012\")))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./safe-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./safe-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"safe_records_0002\") }}:
\r\n
\r\n {{ $t(\"safe_records_0003\") }} \r\n {{ $t(\"safe_records_0004\") }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"safe_records_0005\") }}:
\r\n
\r\n {{ item.TransferAmount | formatCurrency }} \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./safe-records.vue?vue&type=template&id=2599087c&scoped=true\"\nimport script from \"./safe-records.vue?vue&type=script&lang=js\"\nexport * from \"./safe-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./safe-records.vue?vue&type=style&index=0&id=2599087c&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2599087c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-deposit-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"deposit-records\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('safe_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.recordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.recordsList),function(item){return _c('div',{key:item.TicketNo,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"safe_records_0002\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[(item.SafetyBoxTransferType == 'SafetyBoxToMainWallet')?[_vm._v(_vm._s(_vm.$t(\"safe_records_0003\")))]:_vm._e(),_vm._v(\" \"),(item.SafetyBoxTransferType == 'MainWalletToSafetyBox')?[_vm._v(_vm._s(_vm.$t(\"safe_records_0004\")))]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"safe_records_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-blue\"},[[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.TransferAmount)))]],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer co-white\"},[_vm._v(_vm._s(item.CreateTS.replace(\"T\", \" \")))])])}),0):(_vm.recordsList.length <= 0)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./withdraw.vue?vue&type=template&id=1d779794&scoped=true\"\nimport script from \"./withdraw.vue?vue&type=script&lang=js\"\nexport * from \"./withdraw.vue?vue&type=script&lang=js\"\nimport style0 from \"./withdraw.vue?vue&type=style&index=0&id=1d779794&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d779794\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./withdraw.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./withdraw.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"withdrawal_0010\") }} \r\n {{ $t(\"withdrawal_0011\") }} \r\n \r\n \r\n {{ handlingFee <= 0 ? \"--\" : handlingFee }} \r\n {{ withdrawInfo.ServiceFee }} \r\n \r\n \r\n {{ $t(\"withdrawal_0012\") }} \r\n {{ $t(\"withdrawal_0013\") }} \r\n \r\n \r\n {{ withdrawInfo.Bonus || \"--\" }} \r\n \r\n {{ desirableAmt < 0 ? \"0\" : desirableAmt || \"--\" }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"withdrawal_0014\") }} \r\n \r\n \r\n {{ $t(\"withdrawal_0015\") }} \r\n \r\n \r\n \r\n \r\n {{ $t(\"common_0004\") }}:
\r\n {{ $t(\"withdrawal_0016\") }}
\r\n {{ $t(\"withdrawal_0017\") }}
\r\n {{ $t(\"withdrawal_0018\") }}
\r\n {{ $t(\"withdrawal_0019\") }}
\r\n \r\n \r\n \r\n \r\n {{ notWithdrawText }}
\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-withdraw\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"withdraw\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('withdrawal_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.withdrawLoadStatus)?[_c('f7-block',{staticClass:\"block-withdraw\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"readonly\":\"\"},domProps:{\"value\":_vm._f(\"formatCurrency\")(_vm.withdrawInfo.Balance)}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('a',{staticClass:\"smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.withdrawForm.MemberBankCardID),expression:\"withdrawForm.MemberBankCardID\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.withdrawForm, \"MemberBankCardID\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.memberBankCardList),function(item){return _c('option',{key:item.MemberBankCardID,domProps:{\"value\":item.MemberBankCardID}},[_vm._v(_vm._s(item.BankAccountNo)+\" - \"+_vm._s(item.HolderName))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0003\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-after atm\"},[_vm._v(_vm._s(_vm.memberBankCardList[0].BankAccountNo)+\" - \"+_vm._s(_vm.memberBankCardList[0].HolderName))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0004\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"readonly\":\"\"},domProps:{\"value\":_vm.selectedBankCardHolder}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0005\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"readonly\":\"\"},domProps:{\"value\":_vm.selectedBankCardBankName}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0006\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.withdrawForm.WithdrawalAmount),expression:\"withdrawForm.WithdrawalAmount\"}],attrs:{\"type\":\"number\",\"placeholder\":_vm.$t('withdrawal_0007')},domProps:{\"value\":(_vm.withdrawForm.WithdrawalAmount)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.withdrawForm, \"WithdrawalAmount\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0008\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.withdrawForm.SecurityPass),expression:\"withdrawForm.SecurityPass\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('withdrawal_0009')},domProps:{\"value\":(_vm.withdrawForm.SecurityPass)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.withdrawForm, \"SecurityPass\", $event.target.value)}}})])])])])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-table\"},[_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0010\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0011\")))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.handlingFee <= 0 ? \"--\" : _vm.handlingFee))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.withdrawInfo.ServiceFee))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0012\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0013\")))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.withdrawInfo.Bonus || \"--\"))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_c('span',{staticClass:\"desirableAmt\"},[_vm._v(_vm._s(_vm.desirableAmt < 0 ? \"0\" : _vm.desirableAmt || \"--\"))])])],1)],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-buttons\"},[_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"button-single\",attrs:{\"popup-open\":\".turnoverAuditList-popup\",\"large\":\"\",\"raised\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0014\")))])],1),_vm._v(\" \"),_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"button-single-yellow\",attrs:{\"large\":\"\",\"raised\":\"\",\"fill\":\"\"},on:{\"click\":_vm.withdrawSubmit}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0015\")))])],1)],1)],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',{staticClass:\"tip-title\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"withdrawal_0016\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"withdrawal_0017\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"withdrawal_0018\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"withdrawal_0019\")))])])]:[_c('f7-block',{staticClass:\"block-notw\"},[_c('p',[_vm._v(_vm._s(_vm.notWithdrawText))])])],_vm._v(\" \"),_c('f7-popup',{staticClass:\"turnoverAuditList-popup\",on:{\"popup:open\":_vm.auditPopupOpen,\"popup:closed\":_vm.auditPopupClosed}},[_c('f7-page',{attrs:{\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('withdrawal_0014')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),(_vm.auditDataList.length > 0)?_c('f7-block',_vm._l((_vm.auditDataList),function(data){return _c('f7-card',{key:data.Id},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0020\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_c('span',{staticClass:\"span-white\"},[_vm._v(_vm._s(data.DepositTs.replace(\"T\", \" \")))])])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0021\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(data.DepositAmount != 0 ? data.DepositAmount : \"--\"))])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0022\"))+\":\")]),_vm._v(\" \"),(data.DepositAmount != 0)?_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(data.DepositTO)+\"/\"+_vm._s(data.DepositTargetTO))]):_vm._e(),_vm._v(\" \"),(data.DepositAmount == 0)?_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(\"--\")]):_vm._e()],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0023\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(_vm._f(\"filterAuditType\")(data.DepositAuditGameTypes)))])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0024\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_c('span',{staticClass:\"span-pass\"},[_vm._v(_vm._s(data.DepositTO >= data.DepositTargetTO && data.DepositAmount != 0 ? this.$t(\"common_0025\") : data.DepositAmount != 0 ? data.ServiceFee : \"--\"))])])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0025\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(data.Bonus == 0 ? \"--\" : data.Bonus))])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0026\"))+\":\")]),_vm._v(\" \"),(data.Bonus != 0)?_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(data.BonusTO)+\"/\"+_vm._s(data.BonusTargetTO))]):_vm._e(),_vm._v(\" \"),(data.Bonus == 0)?_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(\"--\")]):_vm._e()],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0023\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(_vm._f(\"filterAuditType\")(data.BonusAuditGameTypes)))])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"withdrawal_0027\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_c('span',{class:data.BonusTO >= data.BonusTargetTO && data.Bonus != 2 ? 'span-pass' : data.Bonus == 0 ? '' : 'span-reject'},[_vm._v(_vm._s(data.BonusTO >= data.BonusTargetTO && data.Bonus != 2 ? this.$t(\"common_0025\") : data.Bonus == 1 ? \"--\" : data.Bonus))])])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"common_0026\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"70\"}},[_c('span',{class:data.Status == 2 ? 'span-pass' : 'span-reject'},[_vm._v(_vm._s(data.Status == 2 ? this.$t(\"common_0025\") : this.$t(\"common_0027\")))])])],1)],1)}),1):_vm._e()],1)],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./activities-search.vue?vue&type=template&id=05135022&scoped=true\"\nimport script from \"./activities-search.vue?vue&type=script&lang=js\"\nexport * from \"./activities-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./activities-search.vue?vue&type=style&index=0&id=05135022&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05135022\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-club.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-club.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ $t(\"vip_club_0023\", [$f7.params.name]) }}\r\n VIP0、 \r\n VIP1、 \r\n VIP2、 \r\n VIP3、 \r\n VIP4、 \r\n VIP5、 \r\n VIP6、 \r\n VIP7、 \r\n VIP8、 \r\n {{ $t(\"vip_club_0024\") }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ $t(\"vip_club_0010\") }}
\r\n
\r\n
\r\n
\r\n \r\n \r\n {{ $t(\"vip_club_0011\") }} \r\n {{ $t(\"vip_club_0012\") }} \r\n {{ $t(\"vip_club_0011\") }} \r\n {{ $t(\"vip_club_0012\") }} \r\n \r\n \r\n \r\n \r\n VIP0 \r\n 0 \r\n VIP1 \r\n 2000 \r\n \r\n \r\n VIP2 \r\n 5000 \r\n VIP3 \r\n 10000 \r\n \r\n \r\n VIP4 \r\n 20000 \r\n VIP5 \r\n 50000 \r\n \r\n \r\n VIP6 \r\n 150000 \r\n VIP7 \r\n 200000 \r\n \r\n \r\n VIP8 \r\n 300000 \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {{ $t(\"vip_club_0013\") }}
\r\n {{ $t(\"vip_club_0014\", [$f7.params.name]) }}
\r\n \r\n \r\n {{ $t(\"vip_club_0015\") }}
\r\n {{ $t(\"vip_club_0016\") }}
\r\n \r\n \r\n {{ $t(\"vip_club_0017\") }}
\r\n {{ $t(\"vip_club_0018\", [$f7.params.name]) }}
\r\n \r\n \r\n {{ $t(\"vip_club_0019\") }}
\r\n {{ $t(\"vip_club_0020\", [$f7.params.name]) }}
\r\n \r\n \r\n {{ $t(\"vip_club_0021\") }}
\r\n {{ $t(\"vip_club_0022\") }}
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./vip-club.vue?vue&type=template&id=4bb73489&scoped=true\"\nimport script from \"./vip-club.vue?vue&type=script&lang=js\"\nexport * from \"./vip-club.vue?vue&type=script&lang=js\"\nimport style0 from \"./vip-club.vue?vue&type=style&index=0&id=4bb73489&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4bb73489\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-vip-club\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"vip-club\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('vip_club_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-banner\"},[_c('img',{staticClass:\"vip-banner\",attrs:{\"src\":`../../../static/images/yt999/vip_html/vip-banner_${_vm.$f7.params.currLang}.jpg`,\"onerror\":`this.onerror=''; src='../../../static/images/yt999/vip_html/vip-banner_enUS.jpg'`}})]),_vm._v(\" \"),_c('div',{staticClass:\"buttons-tab buttons-club\"},[_c('f7-link',{attrs:{\"tab-link\":\"#tab-vip-advantage\",\"tab-link-active\":\"\",\"text\":_vm.$t('vip_club_0002')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-vip-conditions\",\"text\":_vm.$t('vip_club_0003')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-vip-privilege\",\"text\":_vm.$t('vip_club_0004')}})],1),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-vip-club\"},[_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-vip-advantage\",\"tab-active\":\"\"}},[_c('f7-block',{staticClass:\"block-advantage\"},[_c('div',{staticClass:\"advantage-content\"},[_c('div',{staticClass:\"content-text\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"vip_club_0023\", [_vm.$f7.params.name]))+\"\\n \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP0、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP1、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP2、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP3、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP4、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP5、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP6、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP7、\")]),_vm._v(\" \"),_c('span',{staticClass:\"yellow\"},[_vm._v(\"VIP8、\")]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"vip_club_0024\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"content-img\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/vip_html/menber-advantage-ad_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.error='';src='../../../static/images/yt999/vip_html/menber-advantage-ad_enUS.png';`,\"width\":\"100%\"}})])])])],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-vip-conditions\"}},[_c('f7-block',{staticClass:\"block-conditions\"},[_c('div',{staticClass:\"conditions-content\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},_vm._l((_vm.VIP_LEVEL_COUNT),function(level){return _c('f7-col',{key:_vm.$f7.params.currLang + '-' + level,class:_vm.$f7.params.currLang + '-' + level,attrs:{\"width\":\"50\"}},[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"src\":`../../../static/images/yt999/vip_html/vip${level - 1}_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../../../static/images/yt999/vip_html/vip${level}_enUS.png'`,\"width\":\"100%\"}})])}),1),_vm._v(\" \"),_c('div',{staticClass:\"content-remark\"},[_vm._v(_vm._s(_vm.$t(\"vip_club_0006\")))])],1),_vm._v(\" \"),_c('div',{staticClass:\"conditions-footer\"},[_c('div',{staticClass:\"footer-title\"},[_vm._v(_vm._s(_vm.$t(\"deposit_0024\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"footer-content\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0007\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0008\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0009\", [_vm.$f7.params.name])))])])])])],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-vip-privilege\"}},[_c('f7-block',{staticClass:\"block-privilege\"},[_c('div',{staticClass:\"privilege-content\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/vip_html/vip-privileges-bg_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../../../static/images/yt999/vip_html/vip-privileges-bg_enUS.png'`,\"width\":\"100%\"}})])])],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-vip-description\"}},[_c('f7-block',{staticClass:\"block-description\"},[_c('div',{staticClass:\"description-content\"},[_c('div',{staticClass:\"content-title\"},[_c('div',[_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"src\":require(\"../../../static/images/yt999/vip_html/vip-freeJetton.png\")}})]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0010\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"content-levels\"},[_c('table',[_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"vip_club_0011\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"vip_club_0012\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"vip_club_0011\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"vip_club_0012\")))])])]),_vm._v(\" \"),_c('tbody',[_c('tr',[_c('td',[_vm._v(\"VIP0\")]),_vm._v(\" \"),_c('td',[_vm._v(\"0\")]),_vm._v(\" \"),_c('td',[_vm._v(\"VIP1\")]),_vm._v(\" \"),_c('td',[_vm._v(\"2000\")])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\"VIP2\")]),_vm._v(\" \"),_c('td',[_vm._v(\"5000\")]),_vm._v(\" \"),_c('td',[_vm._v(\"VIP3\")]),_vm._v(\" \"),_c('td',[_vm._v(\"10000\")])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\"VIP4\")]),_vm._v(\" \"),_c('td',[_vm._v(\"20000\")]),_vm._v(\" \"),_c('td',[_vm._v(\"VIP5\")]),_vm._v(\" \"),_c('td',[_vm._v(\"50000\")])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\"VIP6\")]),_vm._v(\" \"),_c('td',[_vm._v(\"150000\")]),_vm._v(\" \"),_c('td',[_vm._v(\"VIP7\")]),_vm._v(\" \"),_c('td',[_vm._v(\"200000\")])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\"VIP8\")]),_vm._v(\" \"),_c('td',[_vm._v(\"300000\")]),_vm._v(\" \"),_c('td'),_vm._v(\" \"),_c('td')])])])]),_vm._v(\" \"),_c('div',{staticClass:\"content-privilege\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"50\"}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"vip_club_0013\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0014\", [_vm.$f7.params.name])))])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"vip_club_0015\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0016\")))])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"vip_club_0017\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0018\", [_vm.$f7.params.name])))])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"vip_club_0019\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0020\", [_vm.$f7.params.name])))])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"50\"}},[_c('div',[_vm._v(_vm._s(_vm.$t(\"vip_club_0021\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"vip_club_0022\")))])])],1)],1)])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game-list.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n chevron_left \r\n \r\n \r\n {{ $t('egame_list_0001') }} \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{item.GameName}}
\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./game-list.vue?vue&type=template&id=6cc68bea&scoped=true\"\nimport script from \"./game-list.vue?vue&type=script&lang=js\"\nexport * from \"./game-list.vue?vue&type=script&lang=js\"\nimport style0 from \"./game-list.vue?vue&type=style&index=0&id=6cc68bea&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6cc68bea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-gamelist\",attrs:{\"name\":\"gameList\",\"no-swipeback\":\"\"}},[_c('f7-navbar',{attrs:{\"no-hariline\":true}},[_c('f7-nav-left',[_c('f7-link',{staticClass:\"icon-only\",on:{\"click\":function($event){return _vm.$f7router.navigate('/')}}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_left\")])])],1),_vm._v(\" \"),_c('f7-nav-title',[_vm._v(_vm._s(_vm.$t('egame_list_0001')))]),_vm._v(\" \"),_c('f7-searchbar',{staticClass:\"searchbar-demo\",attrs:{\"expandable\":\"\",\"search-container\":\".search-list\",\"search-in\":\".game-name\",\"search-item\":\".item-game\",\"disable-button-text\":_vm.$t('common_0002'),\"placeholder\":_vm.$t('egame_list_0003')}})],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-egame\"},[_c('f7-swiper',{staticClass:\"swiper-banner\",attrs:{\"pagination\":\"\",\"next-button\":\"\",\"prev-button\":\"\",\"data-lazy\":\"{'enabled': true}\",\"params\":_vm.swiperParams}},_vm._l((12),function(index){return _c('f7-swiper-slide',{key:index},[_c('img',{staticClass:\"swiper-lazy\",attrs:{\"src\":`../../static/images/yt999/egameSwiper/${String(index).padStart(2, 0)}_${_vm.$f7.params.currLang}.jpg`,\"onerror\":`this.onerror=''; src='../../static/images/yt999/egameSwiper/${String(index).padStart(2, 0)}_enUS.jpg'`}}),_vm._v(\" \"),_c('div',{staticClass:\"preloader swiper-lazy-preloader\"})])}),1)],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-filter\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"45\"}},[_c('div',{staticClass:\"list no-hairlines-md\"},[_c('ul',[_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{ref:\"gameType\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\",\"id\":\"picker-gameType\"}})])])])])])])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"45\"}},[_c('div',{staticClass:\"list no-hairlines-md\"},[_c('ul',[_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{ref:\"classType\",attrs:{\"type\":\"text\",\"readonly\":\"readonly\",\"id\":\"picker-classType\"}})])])])])])])]),_vm._v(\" \"),_c('f7-col',{staticClass:\"search\",attrs:{\"width\":\"10\"}},[_c('f7-link',{staticClass:\"searchbar-enable\",attrs:{\"data-searchbar\":\".searchbar-demo\",\"icon-ios\":\"f7:search\",\"icon-md\":\"material:search\",\"icon-aurora\":\"f7:search\"}})],1)],1)],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"game-list\"},[_c('f7-list',{staticClass:\"searchbar-not-found\"},[_c('f7-list-item',{attrs:{\"title\":_vm.$t('common_have_no_data')}})],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"search-list searchbar-found\",attrs:{\"no-gap\":\"\"}},_vm._l((_vm.loadList),function(item){return _c('f7-col',{key:item.GameId,staticClass:\"item-game\",attrs:{\"width\":\"25\"},on:{\"click\":function($event){return _vm.playGame(item)}}},[(_vm.GameImagesURL=='')?_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`../../static/images/${_vm.selectType.key}/${item.GameCode.toLowerCase()}.jpg`}}):_vm._e(),_vm._v(\" \"),(_vm.GameImagesURL!='')?_c('img',{staticClass:\"lazy lazy-fade-in\",attrs:{\"data-src\":`${_vm.GameImagesURL}static/images/${_vm.selectType.key}/${item.GameCode.toLowerCase()}_enUS.jpg`}}):_vm._e(),_vm._v(\" \"),_c('p',{staticClass:\"text-center game-name\"},[_vm._v(_vm._s(item.GameName))])])}),1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activities-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activities-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-activities-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"activities-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_as_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./activities-review.vue?vue&type=template&id=f3a0428c&scoped=true\"\nimport script from \"./activities-review.vue?vue&type=script&lang=js\"\nexport * from \"./activities-review.vue?vue&type=script&lang=js\"\nimport style0 from \"./activities-review.vue?vue&type=style&index=0&id=f3a0428c&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f3a0428c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activities-review.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activities-review.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n
\r\n
\r\n
\r\n
{{ item.PromotionName }}
\r\n
{{ item.CreateTs | time_local }}
\r\n
\r\n
\r\n
{{ $t(\"v1_ar_0002\") }} {{ item.Id }}
\r\n
\r\n (\r\n {{ $t(\"v1_ar_0003\") }} \r\n {{ $t(\"v1_ar_0004\") }} \r\n {{ $t(\"v1_ar_0005\") }} \r\n {{ $t(\"v1_ar_0006\") }} \r\n )\r\n
\r\n
\r\n
\r\n
{{ $t(\"v1_ar_0007\") }}({{ item.Bonus | formatCurrency }})
\r\n
\r\n {{ $t(\"v1_ar_0008\") }}\r\n chevron_right \r\n
\r\n
\r\n
\r\n
\r\n
{{ $t(\"v1_ar_0009\") }}
\r\n
\r\n
{{ $t(\"v1_ar_0010\") }}
\r\n
\r\n
{{ item.Remark ? item.Remark : \"--\" }}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-activities-review\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"activities-review\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_ar_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.activitiesList.length > 0)?_c('div',{staticClass:\"block accordion-list block-review\"},_vm._l((_vm.activitiesList),function(item){return _c('div',{key:item.Id,staticClass:\"accordion-item\"},[_c('div',{staticClass:\"accordion-item-toggle\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50\"},[_vm._v(_vm._s(item.PromotionName))]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 text-right\"},[_vm._v(_vm._s(_vm._f(\"time_local\")(item.CreateTs)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0002\"))+\" \"+_vm._s(item.Id))]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 text-right\"},[_vm._v(\"\\n (\\n \"),(item.Status == 'Wait' || item.Status == 'Locked')?_c('span',{staticClass:\"col-yellow\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0003\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 'Accept')?_c('span',{staticClass:\"col-green\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0004\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 'Rejected')?_c('span',{staticClass:\"col-red\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0005\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 'Init')?_c('span',{staticClass:\"col-green\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0006\")))]):_vm._e(),_vm._v(\"\\n )\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0007\"))+\"(\"+_vm._s(_vm._f(\"formatCurrency\")(item.Bonus))+\")\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 text-right col-detail\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"v1_ar_0008\"))+\"\\n \"),_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('p',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0009\")))]),_vm._v(\" \"),_c('div',{staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-content\",domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.formatActiveDetail(item.RequestDetail))}})]),_vm._v(\" \"),_c('p',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t(\"v1_ar_0010\")))]),_vm._v(\" \"),_c('div',{staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-content\"},[_vm._v(_vm._s(item.Remark ? item.Remark : \"--\"))])])])])}),0):(_vm.activitiesList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buffet-promotion.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./buffet-promotion.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ userInfo.UserName.split(\".\")[1] }}
\r\n {{ userInfo.VipLevelName }}
\r\n \r\n \r\n \r\n {{ userInfo.VipLevelName }}
\r\n\r\n \r\n \r\n {{ memberLevelMode === \"AutoDemotion_LevelUpdateByTurnover\" ? $t(\"v1_bp_0002\") : $t(\"v1_bp_0003\") }} \r\n {{ levelUpInfo.CurrentDepositTotal }} \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ $t(\"common_0004\") }}:
\r\n 1. {{ $t(\"v1_bp_0006\") }}
\r\n 2. {{ $t(\"v1_bp_0007\") }}
\r\n 3. {{ $t(\"v1_bp_0008\", [$f7.params.name]) }}
\r\n \r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./buffet-promotion.vue?vue&type=template&id=ebd2333e&scoped=true\"\nimport script from \"./buffet-promotion.vue?vue&type=script&lang=js\"\nexport * from \"./buffet-promotion.vue?vue&type=script&lang=js\"\nimport style0 from \"./buffet-promotion.vue?vue&type=style&index=0&id=ebd2333e&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ebd2333e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-buffet-promotion\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"buffet-promotion\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_bp_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.userInfo.UserName)?_c('f7-card',{staticClass:\"card-user-info\"},[_c('f7-card-content',[_c('f7-row',{staticClass:\"row-level\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"user-vip-img text-center\",attrs:{\"width\":\"35\"}},[_c('img',{attrs:{\"src\":`../../static/images/yt999/vip/${_vm.userInfo.vipLevelCode.toLowerCase()}.png`,\"alt\":\"\"}})]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-name\",attrs:{\"width\":\"35\"}},[_c('div',{staticClass:\"user-name\"},[_vm._v(_vm._s(_vm.userInfo.UserName.split(\".\")[1]))]),_vm._v(\" \"),_c('div',{staticClass:\"user-level\"},[_vm._v(_vm._s(_vm.userInfo.VipLevelName))])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"position-user-level\"},[_vm._v(_vm._s(_vm.userInfo.VipLevelName))]),_vm._v(\" \"),_c('div',{staticClass:\"panel-login-info\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.memberLevelMode === \"AutoDemotion_LevelUpdateByTurnover\" ? _vm.$t(\"v1_bp_0002\") : _vm.$t(\"v1_bp_0003\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(_vm.levelUpInfo.CurrentDepositTotal))])],1)],1)],1)],1):_vm._e(),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-remark\"},[_c('div',{staticClass:\"list\"},[_c('ul',[_c('li',[(_vm.levelLoadStatus)?_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.defaultLevelId),expression:\"defaultLevelId\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.defaultLevelId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.validUpList),function(item){return _c('option',{key:item.VIPLevelID,domProps:{\"value\":item.VIPLevelID}},[_vm._v(_vm._s(item.VIPLevelName))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t(\"v1_bp_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.defaultLevelName))])])])]):_c('span',{staticClass:\"error-tips\"},[_vm._v(_vm._s(_vm.defaultLevelName))])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-promotion\",class:{ 'disabled-status': !_vm.levelUpInfo.EnableUpButton }},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.levelSubmit}},[_vm._v(_vm._s(_vm.$t(\"v1_bp_0005\")))])])])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',{staticClass:\"tip-title\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"v1_bp_0006\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"v1_bp_0007\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"v1_bp_0008\", [_vm.$f7.params.name])))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./daily-task-search.vue?vue&type=template&id=576566ec&scoped=true\"\nimport script from \"./daily-task-search.vue?vue&type=script&lang=js\"\nexport * from \"./daily-task-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./daily-task-search.vue?vue&type=style&index=0&id=576566ec&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"576566ec\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./daily-task-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./daily-task-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
{{ $t(\"v1_dts_0002\") }}:
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ $t(\"v1_dts_0004\") }}:
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ $t(\"v1_dts_0005\") }}:
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ $t(\"v1_dts_0006\") }}:
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{ $t(\"v1_Dts_0007\") }}:
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-daily-task-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"daily-task-search\"},on:{\"page:beforeremove\":_vm.onPageBeforeRemove}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_dts_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"list inline-labels list-withdraw\"},[_c('ul',[_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"v1_dts_0002\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{staticClass:\"input-title\",attrs:{\"type\":\"text\",\"readonly\":\"\"},domProps:{\"value\":_vm.$t('v1_dts_0003')}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"v1_dts_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap input-picker\"},[_c('input',{attrs:{\"type\":\"text\",\"readonly\":\"readonly\",\"id\":\"picker-activeType\"},domProps:{\"value\":_vm.$t('common_0005')}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"v1_dts_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap input-picker\"},[_c('input',{attrs:{\"type\":\"text\",\"readonly\":\"readonly\",\"id\":\"picker-verifyStatus\"},domProps:{\"value\":_vm.$t('common_0005')}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"v1_dts_0006\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"id\":\"dateF\",\"readonly\":\"\"}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"v1_Dts_0007\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"id\":\"dateT\",\"readonly\":\"\"}})])])])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./daily-task-review.vue?vue&type=template&id=faaa38fa&scoped=true\"\nimport script from \"./daily-task-review.vue?vue&type=script&lang=js\"\nexport * from \"./daily-task-review.vue?vue&type=script&lang=js\"\nimport style0 from \"./daily-task-review.vue?vue&type=style&index=0&id=faaa38fa&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"faaa38fa\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./daily-task-review.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./daily-task-review.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"v1_dtr_0003\") }}:
\r\n
{{ item.BonusRemark }}
\r\n
\r\n
\r\n
{{ $t(\"v1_dtr_0005\") }}:
\r\n
\r\n {{ $t(\"v1_dtr_0006\") }} \r\n {{ $t(\"v1_dtr_0007\") }} \r\n {{ $t(\"v1_dtr_0008\") }} \r\n {{ $t(\"v1_dtr_0009\") }} \r\n {{ $t(\"v1_dtr_0010\") }} \r\n {{ $t(\"v1_dtr_0011\") }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"v1_dtr_0012\") }}:
\r\n
{{ item.BonusAmount | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"v1_dtr_0013\") }}:
\r\n
\r\n {{ $t(\"v1_dtr_0014\") }} \r\n {{ $t(\"v1_dtr_0014\") }} \r\n {{ $t(\"v1_dtr_0016\") }} \r\n {{ $t(\"v1_dtr_0017\") }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"v1_dtr_0018\") }}:
\r\n
{{ item.Remark }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-daily-task-review\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"daily-task-review\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_dtr_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.dailyTaskList.length > 0)?_c('f7-block',{staticClass:\"block-review\"},_vm._l((_vm.dailyTaskList),function(item){return _c('div',{key:item.ActivityBonusAuditID,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right\"},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"equal_square\")]),_vm._v(\" \"),_c('span',{staticClass:\"co-gray\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0002\"))+\":\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-white text-right\"},[_vm._v(_vm._s(item.ActivityBonusAuditID))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[_vm._v(_vm._s(item.BonusRemark))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[(item.ActivityType == 'SpecialActivity')?[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0006\")))]:_vm._e(),_vm._v(\" \"),(item.ActivityType == 'MonthlySalary')?[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0007\")))]:_vm._e(),_vm._v(\" \"),(item.ActivityType == 'BirthdayBonus')?[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0008\")))]:_vm._e(),_vm._v(\" \"),(item.ActivityType == 'FestivalBonus')?[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0009\")))]:_vm._e(),_vm._v(\" \"),(item.ActivityType == 'VIPLevelUp')?[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0010\")))]:_vm._e(),_vm._v(\" \"),(item.ActivityType == 'BonusPoint')?[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0011\")))]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0012\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-green\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.BonusAmount)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0013\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\"},[(item.VerifyStatus == 'Wait')?_c('span',{staticClass:\"co-blue\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0014\")))]):_vm._e(),_vm._v(\" \"),(item.VerifyStatus == 'Locked')?_c('span',{staticClass:\"co-blue\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0014\")))]):_vm._e(),_vm._v(\" \"),(item.VerifyStatus == 'Accept')?_c('span',{staticClass:\"co-green\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0016\")))]):_vm._e(),_vm._v(\" \"),(item.VerifyStatus == 'Rejected')?_c('span',{staticClass:\"co-yellow\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0017\")))]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"v1_dtr_0018\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[_vm._v(_vm._s(item.Remark))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer co-white\"},[_vm._v(_vm._s(item.CreateTS.replace(\"T\", \" \")))])])}),0):(_vm.dailyTaskList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./point-center.vue?vue&type=template&id=dea59b84&scoped=true\"\nimport script from \"./point-center.vue?vue&type=script&lang=js\"\nexport * from \"./point-center.vue?vue&type=script&lang=js\"\nimport style0 from \"./point-center.vue?vue&type=style&index=0&id=dea59b84&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dea59b84\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./point-center.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./point-center.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n {{ $t(\"v1_pc_0002\") }}: \r\n {{ forPointData.CurrentBonusPoint }}{{ $t(\"v1_pc_0004\") }} \r\n \r\n \r\n {{ $t(\"v1_pc_0003\") }}: \r\n {{ forPointData.TotalBonusPoint }}{{ $t(\"v1_pc_0004\") }} \r\n \r\n \r\n {{ $t(\"v1_pc_0005\") }} \r\n \r\n {{ $t(\"v1_pc_0006\") }}
\r\n \r\n
\r\n
{{ item.BonusPointGoodsName }}
\r\n
{{ item.Price }}{{ $t(\"v1_pc_0007\") }}
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ $t(\"common_0004\") }}:
\r\n 1. {{ $t(\"v1_pc_0009\") }}
\r\n 2. {{ $t(\"v1_pc_0010\") }}
\r\n 3. {{ $t(\"v1_pc_0011\", [$f7.params.name]) }}
\r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-point-center\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"point-center\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_pc_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-total-point\"},[_c('f7-row',{staticClass:\"row-total-point\"},[_c('f7-col',{staticClass:\"point-title\"},[_vm._v(_vm._s(_vm.$t(\"v1_pc_0002\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.forPointData.CurrentBonusPoint)+_vm._s(_vm.$t(\"v1_pc_0004\")))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"row-total-point\"},[_c('f7-col',{staticClass:\"point-title\"},[_vm._v(_vm._s(_vm.$t(\"v1_pc_0003\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.forPointData.TotalBonusPoint)+_vm._s(_vm.$t(\"v1_pc_0004\")))])],1)],1),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-proportion\"},[_vm._v(_vm._s(_vm.$t(\"v1_pc_0005\")))]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-choose\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"v1_pc_0006\")))]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap row-choose\"},_vm._l((_vm.bonusPointList),function(item){return _c('div',{key:item.BonusPointGoodsID,staticClass:\"col-33\",class:{ active: _vm.selectedPointId == item.BonusPointGoodsID },on:{\"click\":function($event){return _vm.choosePoint(item)}}},[_c('p',[_vm._v(_vm._s(item.BonusPointGoodsName))]),_vm._v(\" \"),_c('p',{staticClass:\"itme-point\"},[_vm._v(_vm._s(item.Price)+_vm._s(_vm.$t(\"v1_pc_0007\")))])])}),0)]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-point\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.pointSubmit}},[_vm._v(_vm._s(_vm.$t(\"v1_pc_0008\")))])])])]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',{staticClass:\"tip-title\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"v1_pc_0009\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"v1_pc_0010\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"v1_pc_0011\", [_vm.$f7.params.name])))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./sign-in.vue?vue&type=template&id=4fd7e124&scoped=true\"\nimport script from \"./sign-in.vue?vue&type=script&lang=js\"\nexport * from \"./sign-in.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4fd7e124\",\n null\n \n)\n\nexport default component.exports","\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{ userLevelName }} \r\n {{ $t(\"v1_sign_in_0004\") }}\r\n {{ dailyAmount ? dailyAmount : 0 }} \r\n {{ $t(\"v1_sign_in_0005\") }}\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ item.Name }} \r\n {{ item.DailyAmount }} \r\n \r\n \r\n {{ item.ActivateMonthlyDeposit }} \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-sign-in\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"sign-in\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_sign_in_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"buttons-tab buttons-signIn\"},[_c('f7-link',{attrs:{\"tab-link\":\"#tab-signIn-center\",\"tab-link-active\":\"\",\"text\":_vm.$t('v1_sign_in_0002')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-signIn-instructions\",\"text\":_vm.$t('v1_sign_in_0003')}})],1),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-signIn\",attrs:{\"swipeable\":\"\"}},[_c('f7-tab',{staticClass:\"page-content tab-signIn-center\",attrs:{\"id\":\"tab-signIn-center\",\"tab-active\":\"\"}},[_c('f7-block',{staticClass:\"block-signIn\"},[_c('div',{staticClass:\"signIn-title text-center\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.userLevelName))]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"v1_sign_in_0004\"))+\"\\n \"),_c('span',[_vm._v(_vm._s(_vm.dailyAmount ? _vm.dailyAmount : 0))]),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"v1_sign_in_0005\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"signIn-main\",attrs:{\"id\":\"js-signIn-main\"}},[_c('div',{staticClass:\"header\"},[_c('div',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0006\")))]),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0007\")))]),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0008\")))]),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0009\")))]),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0010\")))]),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0011\")))]),_vm._v(\" \"),_c('div',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0012\")))])]),_vm._v(\" \"),_c('ul',{staticClass:\"signIn-list\",attrs:{\"id\":\"js-signIn-list\"}})]),_vm._v(\" \"),_c('f7-list',{staticClass:\"button-signIn\",class:{ 'disabled-status': _vm.buttonSinginStatus },attrs:{\"inset\":\"\"}},[_c('f7-list-button',{attrs:{\"title\":_vm.$t('v1_sign_in_0013')},on:{\"click\":_vm.signInEvent}})],1),_vm._v(\" \"),_c('div',{staticClass:\"signIn-footer\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"v1_sign_in_0014\"))+\":\\n \"),_c('span',[_vm._v(_vm._s(_vm.usernameSignindetailDayMoney ? _vm.usernameSignindetailDayMoney + _vm.$t(\"v1_sign_in_0005\") : _vm.$t(\"v1_sign_in_0015\")))])])],1)],1),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-signIn-instructions\",attrs:{\"id\":\"tab-signIn-instructions\"}},[_c('f7-block',[_c('table',[_c('thead',[_c('tr',{staticClass:\"row-header\"},[_c('th',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0016\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0017\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"v1_sign_in_0020\")))])])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.dailySettingList),function(item,index){return _c('tr',{key:index,staticClass:\"row-detail\"},[_c('td',[_vm._v(_vm._s(item.Name))]),_vm._v(\" \"),_c('td',{staticClass:\"daily-amount\"},[_vm._v(_vm._s(item.DailyAmount))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(item.ActivateMonthlyDeposit))])])}),0)]),_vm._v(\" \"),_c('div',{staticClass:\"instructions-footer\"},[_c('p',{staticClass:\"footer-title\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"v1_sign_in_0022\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"v1_sign_in_0023\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"v1_sign_in_0024\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"4. \"+_vm._s(_vm.$t(\"v1_sign_in_0025\", [_vm.$f7.params.name])))])])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./vip-birthday-gift.vue?vue&type=template&id=895f9ef0&scoped=true\"\nimport script from \"./vip-birthday-gift.vue?vue&type=script&lang=js\"\nexport * from \"./vip-birthday-gift.vue?vue&type=script&lang=js\"\nimport style0 from \"./vip-birthday-gift.vue?vue&type=style&index=0&id=895f9ef0&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"895f9ef0\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-birthday-gift.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-birthday-gift.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n {{ $t(\"v1_vbg_0002\") }}: \r\n {{ birthdayInfo.UserBirthday }} \r\n \r\n \r\n {{ $t(\"v1_vbg_0003\") }}: \r\n {{ birthdayInfo.EnableBonusButton ? birthdayStatus.BonusRemark : \"--\" }} \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ $t(\"common_0004\") }}:
\r\n 1. {{ $t(\"v1_vbg_0005\") }}
\r\n 2. {{ $t(\"v1_vbg_0006\") }}
\r\n 3. {{ $t(\"v1_vbg_0007\") }}
\r\n 4. {{ $t(\"v1_vbg_0008\", [$f7.params.name]) }}
\r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-vip-birthday-gift\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"vip-birthday-gift\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_vbg_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-birthday\"},[_c('f7-row',[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"25\"}},[_vm._v(_vm._s(_vm.$t(\"v1_vbg_0002\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"75\"}},[_vm._v(_vm._s(_vm.birthdayInfo.UserBirthday))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"25\"}},[_vm._v(_vm._s(_vm.$t(\"v1_vbg_0003\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"75\"}},[_vm._v(_vm._s(_vm.birthdayInfo.EnableBonusButton ? _vm.birthdayStatus.BonusRemark : \"--\"))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-birthday\",class:{ 'disabled-status': !_vm.birthdayInfo.EnableBonusButton }},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.birthdaySubmit}},[_vm._v(_vm._s(_vm.$t(\"v1_vbg_0004\")))])])])]),_vm._v(\" \"),(!_vm.birthdayInfo.EnableBonusButton)?_c('f7-block',{staticClass:\"block-remark\"},[_c('p',[_vm._v(_vm._s(_vm.birthdayInfo.BonusRemark))])]):_vm._e(),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',{staticClass:\"tip-title\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"v1_vbg_0005\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"v1_vbg_0006\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"v1_vbg_0007\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"4. \"+_vm._s(_vm.$t(\"v1_vbg_0008\", [_vm.$f7.params.name])))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./vip-holiday-gift.vue?vue&type=template&id=d11c3f6a&scoped=true\"\nimport script from \"./vip-holiday-gift.vue?vue&type=script&lang=js\"\nexport * from \"./vip-holiday-gift.vue?vue&type=script&lang=js\"\nimport style0 from \"./vip-holiday-gift.vue?vue&type=style&index=0&id=d11c3f6a&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d11c3f6a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-holiday-gift.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-holiday-gift.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n {{ $t(\"v1_vhg_0002\") }}: \r\n {{ festivalInfo.FestivalName }} \r\n \r\n \r\n {{ $t(\"v1_vhg_0003\") }}: \r\n {{ festivalInfo.NextFestivalName }} \r\n \r\n \r\n {{ $t(\"v1_vhg_0004\") }}: \r\n {{ festivalInfo.EnableBonusButton ? festivalInfo.BonusRemark : \"--\" }} \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{ $t(\"common_0004\") }}:
\r\n 1. {{ $t(\"v1_vhg_0006\", [$f7.params.name]) }}
\r\n 2. {{ $t(\"v1_vhg_0007\") }}
\r\n 3. {{ $t(\"v1_vhg_0008\") }}
\r\n 4. {{ $t(\"v1_vhg_0009\", [$f7.params.name]) }}
\r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-vip-holiday-gift\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"vip-holiday-gift\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_vhg_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-holiday\"},[_c('f7-row',[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"v1_vhg_0002\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"65\"}},[_vm._v(_vm._s(_vm.festivalInfo.FestivalName))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"v1_vhg_0003\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"65\"}},[_vm._v(_vm._s(_vm.festivalInfo.NextFestivalName))])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(_vm.$t(\"v1_vhg_0004\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"65\"}},[_vm._v(_vm._s(_vm.festivalInfo.EnableBonusButton ? _vm.festivalInfo.BonusRemark : \"--\"))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-holiday\",class:{ 'disabled-status': !_vm.festivalInfo.EnableBonusButton }},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.festivalSubmit}},[_vm._v(_vm._s(_vm.$t(\"v1_vhg_0005\")))])])])]),_vm._v(\" \"),(!_vm.festivalInfo.EnableBonusButton)?_c('f7-block',{staticClass:\"block-remark\"},[_c('p',[_vm._v(_vm._s(_vm.festivalInfo.BonusRemark))])]):_vm._e(),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',{staticClass:\"tip-title\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"v1_vhg_0006\", [_vm.$f7.params.name])))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"v1_vhg_0007\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"v1_vhg_0008\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"4. \"+_vm._s(_vm.$t(\"v1_vhg_0009\", [_vm.$f7.params.name])))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-monthly-salary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vip-monthly-salary.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ userInfo.UserName.split(\".\")[1] }}
\r\n {{ userInfo.VipLevelName }}
\r\n \r\n \r\n \r\n {{ userInfo.VipLevelName }}
\r\n\r\n \r\n \r\n {{ $t(\"v1_vms_0002\") }}: \r\n {{ monthlySalaryInfo.EnableBonusButton ? monthlySalaryInfo.SalaryRemark : \"--\" }} \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"common_0004\") }}:
\r\n 1. {{ $t(\"v1_vms_0004\") }}
\r\n 2. {{ $t(\"v1_vms_0005\") }}
\r\n 3. {{ $t(\"v1_vms_0006\") }}
\r\n 4. {{ $t(\"v1_vms_0007\", [$f7.params.name]) }}
\r\n \r\n \r\n \r\n\r\n\r\n\r\n","\r\n \r\n \r\n \r\n \r\n chevron_left \r\n \r\n \r\n {{ $t(\"bank_info_0001\") }} \r\n \r\n 0\">\r\n \r\n \r\n \r\n
\r\n
{{ item.BankAccountNo | fmtBankNumber }}
\r\n
\r\n ※ \r\n {{ item.HolderName ? item.HolderName : this.$t(\"bank_info_0002\") }} \r\n
\r\n
\r\n ※ \r\n {{ item.BankAddress }} \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n *{{ $t(\"bank_info_0007\") }}* \r\n \r\n \r\n \r\n \r\n
\r\n
{{ $t(\"common_0004\") }}:
\r\n
{{ $t(\"bank_info_0015\") }}
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./vip-monthly-salary.vue?vue&type=template&id=75453963&scoped=true\"\nimport script from \"./vip-monthly-salary.vue?vue&type=script&lang=js\"\nexport * from \"./vip-monthly-salary.vue?vue&type=script&lang=js\"\nimport style0 from \"./vip-monthly-salary.vue?vue&type=style&index=0&id=75453963&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"75453963\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-vip-monthly-salary\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"vip-monthly-salary\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('v1_vms_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.userInfo.UserName)?_c('f7-card',{staticClass:\"card-user-info\"},[_c('f7-card-content',[_c('f7-row',{staticClass:\"row-level\",attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"user-vip-img text-center\",attrs:{\"width\":\"35\"}},[_c('img',{attrs:{\"src\":`../../static/images/yt999/vip/${_vm.vipLevelCode.toLowerCase()}.png`,\"alt\":\"\"}})]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-name\",attrs:{\"width\":\"35\"}},[_c('div',{staticClass:\"user-name\"},[_vm._v(_vm._s(_vm.userInfo.UserName.split(\".\")[1]))]),_vm._v(\" \"),_c('div',{staticClass:\"user-level\"},[_vm._v(_vm._s(_vm.userInfo.VipLevelName))])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"position-user-level\"},[_vm._v(_vm._s(_vm.userInfo.VipLevelName))]),_vm._v(\" \"),_c('div',{staticClass:\"panel-login-info\"},[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"30\"}},[_vm._v(_vm._s(_vm.$t(\"v1_vms_0002\"))+\":\")]),_vm._v(\" \"),_c('f7-col',{staticClass:\"text-left\",attrs:{\"width\":\"70\"}},[_vm._v(_vm._s(_vm.monthlySalaryInfo.EnableBonusButton ? _vm.monthlySalaryInfo.SalaryRemark : \"--\"))])],1)],1)],1)],1):_vm._e(),_vm._v(\" \"),_c('f7-list',{staticClass:\"button-salary\",class:{ 'disabled-status': !_vm.monthlySalaryInfo.EnableBonusButton },attrs:{\"inset\":\"\"}},[_c('f7-list-button',{attrs:{\"title\":_vm.$t('v1_vms_0003'),\"color\":\"black\"},on:{\"click\":_vm.salarySubmit}})],1),_vm._v(\" \"),(!_vm.monthlySalaryInfo.EnableBonusButton)?_c('f7-block',{staticClass:\"block-remark\"},[_c('p',[_vm._v(_vm._s(_vm.monthlySalaryInfo.SalaryRemark))])]):_vm._e(),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-tip\"},[_c('p',{staticClass:\"tip-title\"},[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(\"1. \"+_vm._s(_vm.$t(\"v1_vms_0004\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"2. \"+_vm._s(_vm.$t(\"v1_vms_0005\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"3. \"+_vm._s(_vm.$t(\"v1_vms_0006\")))]),_vm._v(\" \"),_c('p',[_vm._v(\"4. \"+_vm._s(_vm.$t(\"v1_vms_0007\", [_vm.$f7.params.name])))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./deposit-search.vue?vue&type=template&id=0d6e6867&scoped=true\"\nimport script from \"./deposit-search.vue?vue&type=script&lang=js\"\nexport * from \"./deposit-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./deposit-search.vue?vue&type=style&index=0&id=0d6e6867&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d6e6867\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deposit-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deposit-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-deposit-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"deposit-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('deposit_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./deposit-records.vue?vue&type=template&id=5c253a0f&scoped=true\"\nimport script from \"./deposit-records.vue?vue&type=script&lang=js\"\nexport * from \"./deposit-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./deposit-records.vue?vue&type=style&index=0&id=5c253a0f&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c253a0f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deposit-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./deposit-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"deposit_records_0003\") }}:
\r\n
\r\n {{ $t(\"deposit_records_0004\") }} \r\n {{ $t(\"deposit_records_0005\") }} \r\n
\r\n
\r\n \r\n
\r\n
{{ $t(\"deposit_records_0007\") }}:
\r\n
{{ item.Amount | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"deposit_records_0008\") }}:
\r\n
{{ item.Bonus | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"deposit_records_0009\") }}:
\r\n
\r\n {{ $t(\"deposit_records_0010\") }} \r\n {{ $t(\"deposit_records_0011\") }} \r\n {{ $t(\"deposit_records_0012\") }} \r\n {{ $t(\"deposit_records_0013\") }} \r\n {{ $t(\"deposit_records_0014\") }} \r\n {{ $t(\"deposit_records_0015\") }} \r\n {{ $t(\"deposit_records_0016\") }} \r\n {{ $t(\"deposit_records_0017\") }} \r\n {{ $t(\"deposit_records_0018\") }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"deposit_records_0019\") }}:
\r\n
{{ item.Remark ? item.Remark : \"--\" }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-deposit-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"deposit-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('deposit_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.depositRecordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.depositRecordsList),function(item){return _c('div',{key:item.TicketNo,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"row no-gap\"},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"equal_square\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-white text-left\"},[_vm._v(_vm._s(item.TicketNo))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[(item.DepositType == 1)?[_vm._v(_vm._s(_vm.$t(\"deposit_records_0004\")))]:_vm._e(),_vm._v(\" \"),(item.DepositType == 2)?[_vm._v(_vm._s(_vm.$t(\"deposit_records_0005\")))]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0007\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-green\",class:item.Amount < 0 ? 'co-yellow' : 'co-blue'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Amount)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0008\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-green\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Bonus)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0009\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\"},[(item.Status == 1 && item.DepositType == 1)?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0010\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 2 && item.DepositType == 1)?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0011\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 3 && item.DepositType == 1)?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0012\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 4 && item.DepositType == 1)?_c('span',{staticClass:\"co-green\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0013\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 5 && item.DepositType == 1)?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0014\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 1 && item.DepositType == 2)?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0015\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 3 && item.DepositType == 2)?_c('span',{staticClass:\"co-green\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0016\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 4 && item.DepositType == 2)?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0017\")))]):_vm._e(),_vm._v(\" \"),(item.Status == 5 && item.DepositType == 2)?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0018\")))]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"deposit_records_0019\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[_vm._v(_vm._s(item.Remark ? item.Remark : \"--\"))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer co-white\"},[_vm._v(_vm._s(_vm._f(\"time_local\")(item.CreateTs)))])])}),0):(_vm.depositRecordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./withdraw-search.vue?vue&type=template&id=00569922&scoped=true\"\nimport script from \"./withdraw-search.vue?vue&type=script&lang=js\"\nexport * from \"./withdraw-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./withdraw-search.vue?vue&type=style&index=0&id=00569922&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00569922\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./withdraw-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./withdraw-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-withdraw-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"withdraw-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('withdraw_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button button-single\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./withdraw-records.vue?vue&type=template&id=66ab005c&scoped=true\"\nimport script from \"./withdraw-records.vue?vue&type=script&lang=js\"\nexport * from \"./withdraw-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./withdraw-records.vue?vue&type=style&index=0&id=66ab005c&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66ab005c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./withdraw-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./withdraw-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0003\") }}:
\r\n
{{ item.Amount | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0004\") }}:
\r\n
{{ item.Bonus | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0005\") }}:
\r\n
{{ item.ServiceFee | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0006\") }}:
\r\n
{{ item.WithdrawFee | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0007\") }}:
\r\n
{{ item.ConfirmAmount | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0008\") }}:
\r\n
{{ item.Bonus | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0009\") }}:
\r\n
\r\n {{ $t(\"withdraw_records_0010\") }} \r\n {{ $t(\"withdraw_records_0011\") }} \r\n {{ $t(\"withdraw_records_0012\") }} \r\n {{ $t(\"withdraw_records_0013\") }} \r\n {{ $t(\"withdraw_records_0014\") }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"withdraw_records_0015\") }}:
\r\n
{{ item.Remark ? item.Remark : \"--\" }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-withdraw-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"withdraw-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('withdraw_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.withdrawRecordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.withdrawRecordsList),function(item){return _c('div',{key:item.TicketNo,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"row no-gap\"},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"equal_square\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-white text-left\"},[_vm._v(_vm._s(item.TicketNo))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\",class:item.Amount < 0 ? 'co-yellow' : 'co-blue'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Amount)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\",class:item.Bonus < 0 ? 'co-yellow' : 'co-blue'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Bonus)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\",class:item.ServiceFee < 0 ? 'co-yellow' : 'co-blue'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.ServiceFee)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0006\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\",class:item.WithdrawFee < 0 ? 'co-yellow' : 'co-blue'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.WithdrawFee)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0007\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-green\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.ConfirmAmount)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0008\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-green\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Bonus)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0009\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\"},[(item.VerifyStatus == 'Wait')?_c('span',{staticClass:\"co-yellow\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0010\")))]):(item.VerifyStatus == 'Success')?_c('span',{staticClass:\"co-green\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0011\")))]):(item.VerifyStatus == 'WithdrawProviderProcessSuccess')?_c('span',{staticClass:\"co-green\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0012\")))]):(item.VerifyStatus == 'Fail')?_c('span',{staticClass:\"co-red\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0013\")))]):_c('span',{staticClass:\"co-yellow\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0014\")))])])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"withdraw_records_0015\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[_vm._v(_vm._s(item.Remark ? item.Remark : \"--\"))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer co-white\"},[_vm._v(_vm._s(_vm._f(\"time_local\")(item.CreateTs)))])])}),0):(_vm.withdrawRecordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./funds-search.vue?vue&type=template&id=439abe3d&scoped=true\"\nimport script from \"./funds-search.vue?vue&type=script&lang=js\"\nexport * from \"./funds-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./funds-search.vue?vue&type=style&index=0&id=439abe3d&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"439abe3d\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./funds-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./funds-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-funds-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"funds-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('funds_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./funds-records.vue?vue&type=template&id=b503718e&scoped=true\"\nimport script from \"./funds-records.vue?vue&type=script&lang=js\"\nexport * from \"./funds-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./funds-records.vue?vue&type=style&index=0&id=b503718e&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b503718e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./funds-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./funds-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"funds_records_0003\") }}:
\r\n
{{ item.Amount | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"funds_records_0004\") }}:
\r\n
{{ item.Balance | formatCurrency }}
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-funds-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"funds-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('funds_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.fundsRecordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.fundsRecordsList),function(item){return _c('div',{key:item.Id,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"row no-gap\"},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"equal_square\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-white text-left\"},[_vm._v(_vm._s(item.TicketNo))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"funds_records_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\",class:item.Amount < 0 ? 'co-yellow' : 'co-blue'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Amount)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"funds_records_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-green\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer co-white\"},[_vm._v(_vm._s(_vm._f(\"time_local\")(item.UpdateTs)))])])}),0):(_vm.fundsRecordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./integral-search.vue?vue&type=template&id=4f556db9&scoped=true\"\nimport script from \"./integral-search.vue?vue&type=script&lang=js\"\nexport * from \"./integral-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./integral-search.vue?vue&type=style&index=0&id=4f556db9&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f556db9\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./integral-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./integral-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-integral-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"integral-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('integral_search_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./integral-records.vue?vue&type=template&id=4454ae07&scoped=true\"\nimport script from \"./integral-records.vue?vue&type=script&lang=js\"\nexport * from \"./integral-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./integral-records.vue?vue&type=style&index=0&id=4454ae07&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4454ae07\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./integral-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./integral-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"integral_records_0003\") }}:
\r\n
\r\n {{ $t(\"integral_records_0004\") }} \r\n {{ $t(\"integral_records_0005\") }} \r\n {{ $t(\"integral_records_0006\") }} \r\n {{ $t(\"integral_records_0007\") }} \r\n {{ $t(\"integral_records_0008\") }} \r\n {{ $t(\"integral_records_0009\") }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"integral_records_0011\") }}:
\r\n
0 ? 'co-green' : 'co-yellow'\">{{ item.DiffCurrentBonusPoint | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"integral_records_0010\") }}:
\r\n
{{ item.BeforeCurrentBonusPoint }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-integral-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"integral-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('integral_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.integralRecordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.integralRecordsList),function(item){return _c('div',{key:item.BonusPointEventID,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right\"},[_c('span',{staticClass:\"co-gray\"},[_vm._v(_vm._s(_vm.$t(\"integral_records_0002\"))+\":\")])]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-white\"},[_vm._v(_vm._s(item.BonusPointEventID))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"integral_records_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[(item.BonusPointBatchType == 'OfflineDeposit')?[_vm._v(_vm._s(_vm.$t(\"integral_records_0004\")))]:_vm._e(),_vm._v(\" \"),(item.BonusPointBatchType == 'OnlineDeposit')?[_vm._v(_vm._s(_vm.$t(\"integral_records_0005\")))]:_vm._e(),_vm._v(\" \"),(item.BonusPointBatchType == 'ManualDeposit')?[_vm._v(_vm._s(_vm.$t(\"integral_records_0006\")))]:_vm._e(),_vm._v(\" \"),(item.BonusPointBatchType == 'BetTicketInit')?[_vm._v(_vm._s(_vm.$t(\"integral_records_0007\")))]:_vm._e(),_vm._v(\" \"),(item.BonusPointBatchType == 'BetTicketUpdate')?[_vm._v(_vm._s(_vm.$t(\"integral_records_0008\")))]:_vm._e(),_vm._v(\" \"),(item.BonusPointBatchType == 'BonusPointConsume')?[_vm._v(_vm._s(_vm.$t(\"integral_records_0009\")))]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"integral_records_0011\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\",class:item.DiffCurrentBonusPoint > 0 ? 'co-green' : 'co-yellow'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.DiffCurrentBonusPoint)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"integral_records_0010\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-blue\"},[_vm._v(_vm._s(item.BeforeCurrentBonusPoint))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer co-white\"},[_vm._v(_vm._s(item.CreateTS.replace(\"T\", \" \")))])])}),0):(_vm.integralRecordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./activity-search.vue?vue&type=template&id=17b0a6d6&scoped=true\"\nimport script from \"./activity-search.vue?vue&type=script&lang=js\"\nexport * from \"./activity-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./activity-search.vue?vue&type=style&index=0&id=17b0a6d6&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17b0a6d6\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-integral-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"integral-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('activity_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./activity-records.vue?vue&type=template&id=39a792a8&scoped=true\"\nimport script from \"./activity-records.vue?vue&type=script&lang=js\"\nexport * from \"./activity-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./activity-records.vue?vue&type=style&index=0&id=39a792a8&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39a792a8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
{{ $t(\"activity_records_0003\") }}:
\r\n
{{ item.Amount | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"activity_records_0004\") }}:
\r\n
{{ item.Balance | formatCurrency }}
\r\n
\r\n
\r\n
{{ $t(\"activity_records_0005\") }}:
\r\n
{{ item.Remark ? item.Remark : \"--\" }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-activity-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"activity-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('activity_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.fundsRecordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.fundsRecordsList),function(item){return _c('div',{key:item.Id,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"row no-gap\"},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"equal_square\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-white text-left\"},[_vm._v(_vm._s(item.TicketNo))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"activity_records_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75\",class:item.Amount < 0 ? 'co-yellow' : 'co-blue'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Amount)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"activity_records_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-green\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.Balance)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-25 text-right co-white\"},[_vm._v(_vm._s(_vm.$t(\"activity_records_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-75 co-gray\"},[_vm._v(_vm._s(item.Remark ? item.Remark : \"--\"))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer co-white\"},[_vm._v(_vm._s(_vm._f(\"time_local\")(item.UpdateTs)))])])}),0):(_vm.fundsRecordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./betting-search.vue?vue&type=template&id=459b4b10&scoped=true\"\nimport script from \"./betting-search.vue?vue&type=script&lang=js\"\nexport * from \"./betting-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./betting-search.vue?vue&type=style&index=0&id=459b4b10&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"459b4b10\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./betting-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./betting-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-betting-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"betting-search\"},on:{\"page:beforeremove\":_vm.onPageBeforeRemove}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('betting_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./betting-records.vue?vue&type=template&id=3c28193d&scoped=true\"\nimport script from \"./betting-records.vue?vue&type=script&lang=js\"\nexport * from \"./betting-records.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c28193d\",\n null\n \n)\n\nexport default component.exports","\r\n \r\n \r\n \r\n \r\n {{ $t(\"common_0032\") }} \r\n \r\n \r\n \r\n 0\">\r\n
\r\n
\r\n
\r\n
{{ item.ProviderName }} - {{ item.GameName }}
\r\n
{{ item.BetTs | time_local }}
\r\n
\r\n
\r\n
{{ $t(\"betting_records_0002\") }} {{ item.ProviderTicketNo }}
\r\n
\r\n (\r\n {{ $t(\"betting_records_0003\") }} \r\n {{ $t(\"betting_records_0004\") }} \r\n {{ $t(\"betting_records_0005\") }} \r\n {{ $t(\"betting_records_0006\") }} \r\n {{ $t(\"betting_records_0007\") }} \r\n {{ $t(\"betting_records_0008\") }} \r\n {{ $t(\"betting_records_0009\") }} \r\n {{ $t(\"betting_records_0010\") }} \r\n {{ $t(\"betting_records_0011\") }} \r\n )\r\n
\r\n
\r\n
\r\n
\r\n {{ $t(\"betting_records_0012\") }}({{ item.BetAmount | formatCurrency }}) {{ $t(\"betting_records_0013\") }}(\r\n 0 ? 'col-green' : 'col-red'\">{{ item.WLAmount | formatCurrency }} \r\n )\r\n
\r\n
\r\n {{ $t(\"betting_records_0014\") }}\r\n chevron_right \r\n
\r\n
\r\n
\r\n
\r\n
{{ $t(\"betting_records_0015\") }}({{ item.EffectiveAmount | formatCurrency }})
\r\n
\r\n
\r\n \r\n -- \r\n
\r\n
\r\n
{{ $t(\"betting_records_0016\") }}:{{ item.ResultTs | time_local }}
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n {{ $t(\"common_0032\") }}\r\n \r\n chevron_right \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {{ $t(\"betting_records_0017\") }} \r\n {{ pageTotal }} \r\n \r\n \r\n {{ $t(\"betting_records_0018\") }} \r\n {{ totalBetAmount | formatCurrency }} \r\n \r\n \r\n {{ $t(\"betting_records_0015\") }} \r\n {{ totalEffectiveAmount | formatCurrency }} \r\n \r\n \r\n {{ $t(\"betting_records_0019\") }} \r\n {{ totalWLAmount | formatCurrency }} \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-betting-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"betting-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('betting_records_0001'),\"back-link\":\"\",\"no-hariline\":true,\"innerClass\":\"inner-betting\"}},[_c('f7-nav-right',[_c('f7-link',[_c('f7-button',{staticClass:\"button-total\",attrs:{\"outline\":\"\"},on:{\"click\":_vm.openBettingDialog}},[_vm._v(_vm._s(_vm.$t(\"common_0032\")))])],1)],1)],1),_vm._v(\" \"),(_vm.bettingList.length > 0)?_c('div',{staticClass:\"block accordion-list block-records\"},_vm._l((_vm.formatBettingList),function(item){return _c('div',{key:item.ProviderTicketNo,staticClass:\"accordion-item\"},[_c('div',{staticClass:\"accordion-item-toggle\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-50\"},[_vm._v(_vm._s(item.ProviderName)+\" - \"+_vm._s(item.GameName))]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 text-right\"},[_vm._v(_vm._s(_vm._f(\"time_local\")(item.BetTs)))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-80\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0002\"))+\" \"+_vm._s(item.ProviderTicketNo))]),_vm._v(\" \"),_c('div',{staticClass:\"col-20 text-right\"},[_vm._v(\"\\n (\\n \"),(item.WLStatus == 'P')?_c('span',{staticClass:\"col-yellow\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0003\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == 'C')?_c('span',{staticClass:\"col-green\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0004\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == 'D')?_c('span',{staticClass:\"col-green\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0005\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == 'R')?_c('span',{staticClass:\"col-red\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0006\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == 'WA')?_c('span',{staticClass:\"col-green\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0007\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == 'WH')?_c('span',{staticClass:\"col-green\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0008\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == 'LA')?_c('span',{staticClass:\"col-red\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0009\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == 'LH')?_c('span',{staticClass:\"col-red\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0010\")))]):_vm._e(),_vm._v(\" \"),(item.WLStatus == '其他')?_c('span',{staticClass:\"col-red\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0011\")))]):_vm._e(),_vm._v(\"\\n )\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-80\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"betting_records_0012\"))+\"(\"+_vm._s(_vm._f(\"formatCurrency\")(item.BetAmount))+\") \"+_vm._s(_vm.$t(\"betting_records_0013\"))+\"(\\n \"),_c('span',{class:item.WLAmount > 0 ? 'col-green' : 'col-red'},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(item.WLAmount)))]),_vm._v(\"\\n )\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"col-20 text-right col-detail\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"betting_records_0014\"))+\"\\n \"),_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])])]),_vm._v(\" \"),_c('div',{staticClass:\"accordion-item-content\"},[_c('p',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0015\"))+\"(\"+_vm._s(_vm._f(\"formatCurrency\")(item.EffectiveAmount))+\")\")]),_vm._v(\" \"),_c('div',{staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-content\"},[_c('span',{staticClass:\"no-detail\"},[_vm._v(\"--\")])])]),_vm._v(\" \"),_c('p',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t(\"betting_records_0016\"))+\":\"+_vm._s(_vm._f(\"time_local\")(item.ResultTs)))])])])}),0):(_vm.bettingList.length <= 0 && !_vm.showDataBetting)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-balance dialog-betting dialog-move\",on:{\"dialog:closed\":_vm.actionBettingTotalCloseEvent,\"dialog:open\":_vm.actionBettingTotalOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"common_0032\"))+\"\\n \"),_c('f7-link',{on:{\"click\":_vm.closeDialogBalance}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-balance\"},[_c('div',{staticClass:\"block-content\"},[_c('f7-row',{staticClass:\"item-balance\"},[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"betting_records_0017\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.pageTotal))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"item-balance\"},[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"betting_records_0018\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalBetAmount)))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"item-balance\"},[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"betting_records_0015\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalEffectiveAmount)))])],1),_vm._v(\" \"),_c('f7-row',{staticClass:\"item-balance\"},[_c('f7-col',{attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm.$t(\"betting_records_0019\")))]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"50\"}},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalWLAmount)))])],1)],1)])],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./member-info.vue?vue&type=template&id=41c6056f&scoped=true\"\nimport script from \"./member-info.vue?vue&type=script&lang=js\"\nexport * from \"./member-info.vue?vue&type=script&lang=js\"\nimport style0 from \"./member-info.vue?vue&type=style&index=0&id=41c6056f&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"41c6056f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./member-info.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./member-info.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-member-info\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"member-info\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('member_info_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.loadStatus)?_c('f7-block',{staticClass:\"block-member-info\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"member_info_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"readonly\":\"\"},domProps:{\"value\":_vm.userInfo.UserName.split('.')[1]}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"member_info_0003\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userInfoParam.SureName),expression:\"userInfoParam.SureName\"}],attrs:{\"type\":\"text\",\"readonly\":_vm.userInfoStatus.SureName,\"placeholder\":_vm.$t('member_info_0004')},domProps:{\"value\":(_vm.userInfoParam.SureName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.userInfoParam, \"SureName\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"member_info_0007\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.formattedMobile),expression:\"formattedMobile\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('member_info_0008'),\"readonly\":_vm.userInfoStatus.Mobile},domProps:{\"value\":(_vm.formattedMobile)},on:{\"input\":function($event){if($event.target.composing)return;_vm.formattedMobile=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"member_info_0011\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userInfoParam.Email),expression:\"userInfoParam.Email\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('member_info_0012'),\"readonly\":_vm.userInfoStatus.Email},domProps:{\"value\":(_vm.userInfoParam.Email)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.userInfoParam, \"Email\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"member_info_0015\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"readonly\":\"\"},domProps:{\"value\":_vm._f(\"time_local\")(_vm.userInfo.LastLoginTs)}})])])])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-save\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.updateUserInfoEvent}},[_vm._v(_vm._s(_vm.$t(\"member_info_0017\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./bank-info.vue?vue&type=template&id=23ca9284&scoped=true\"\nimport script from \"./bank-info.vue?vue&type=script&lang=js\"\nexport * from \"./bank-info.vue?vue&type=script&lang=js\"\nimport style0 from \"./bank-info.vue?vue&type=style&index=0&id=23ca9284&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23ca9284\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bank-info.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./bank-info.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-bank-info\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"bank-info\"}},[_c('f7-navbar',{attrs:{\"no-hariline\":true,\"innerClass\":\"inner-bankInfo\"}},[_c('f7-nav-left',[_c('f7-link',{on:{\"click\":_vm.back}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_left\")])])],1),_vm._v(\" \"),_c('f7-nav-title',[_vm._v(_vm._s(_vm.$t(\"bank_info_0001\")))])],1),_vm._v(\" \"),(_vm.memberBankCardList.length > 0)?_vm._l((_vm.memberBankCardList),function(item){return _c('f7-block',{key:item.MemberBankCardID,staticClass:\"block-bank-info\"},[_c('div',{staticClass:\"card bank-card\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"card-avatar\"},[_c('img',{attrs:{\"src\":require(\"../../../static/images/yt999/banklogo/bankcode.png\"),\"width\":\"32\",\"height\":\"32\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"card-name\"},[_vm._v(_vm._s(item.BankName ? item.BankName : item.BankAddress))])]),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('div',{staticClass:\"card-info text-26\"},[_vm._v(_vm._s(_vm._f(\"fmtBankNumber\")(item.BankAccountNo)))]),_vm._v(\" \"),_c('div',{staticClass:\"card-info card-address text-16\"},[_c('span',[_vm._v(\"※\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.HolderName ? item.HolderName : this.$t(\"bank_info_0002\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"card-info card-address text-16\"},[_c('span',[_vm._v(\"※\")]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(item.BankAddress))])])])])])}):_vm._e(),_vm._v(\" \"),[_c('f7-block-title',{staticClass:\"block-bank-title text-center\"},[_vm._v(\"*\"+_vm._s(_vm.$t(\"bank_info_0007\"))+\"*\")]),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-bank-info\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"bank_info_0008\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankInfoForm.SureName),expression:\"bankInfoForm.SureName\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('bank_info_0009')},domProps:{\"value\":(_vm.bankInfoForm.SureName)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.bankInfoForm, \"SureName\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"bank_info_0010\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankInfoForm.BankAccountNo),expression:\"bankInfoForm.BankAccountNo\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('bank_info_0011')},domProps:{\"value\":(_vm.bankInfoForm.BankAccountNo)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.bankInfoForm, \"BankAccountNo\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.bankInfoForm.BankName != 'Alipay'),expression:\"bankInfoForm.BankName != 'Alipay'\"}],staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"bank_info_0012\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankInfoForm.BankAddress),expression:\"bankInfoForm.BankAddress\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('bank_info_0013')},domProps:{\"value\":(_vm.bankInfoForm.BankAddress)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.bankInfoForm, \"BankAddress\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('a',{staticClass:\"smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.bankInfoForm.BankName),expression:\"bankInfoForm.BankName\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.bankInfoForm, \"BankName\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.bankList),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t(\"bank_info_0014\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-after item-input-wrap max\"})])])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-save\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button button-single\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.bankInfoSubmit}},[_vm._v(_vm._s(_vm.$t(\"member_info_0017\")))])])]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',{staticStyle:{\"font-size\":\"15px\"}},[_vm._v(_vm._s(_vm.$t(\"bank_info_0015\")))])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./change-login-pwd.vue?vue&type=template&id=3447ac73&scoped=true\"\nimport script from \"./change-login-pwd.vue?vue&type=script&lang=js\"\nexport * from \"./change-login-pwd.vue?vue&type=script&lang=js\"\nimport style0 from \"./change-login-pwd.vue?vue&type=style&index=0&id=3447ac73&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3447ac73\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./change-login-pwd.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./change-login-pwd.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-change-login-pwd\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"change-login-pwd\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('change_login_pwd_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-change-login-pwd\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"change_login_pwd_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateLoginPwdForm.OldPassword),expression:\"updateLoginPwdForm.OldPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('change_login_pwd_0003')},domProps:{\"value\":(_vm.updateLoginPwdForm.OldPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateLoginPwdForm, \"OldPassword\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"change_login_pwd_0004\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateLoginPwdForm.NewPassword),expression:\"updateLoginPwdForm.NewPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":this.$t('change_login_pwd_0005')},domProps:{\"value\":(_vm.updateLoginPwdForm.NewPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateLoginPwdForm, \"NewPassword\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"change_login_pwd_0006\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateLoginPwdForm.ConfirmPassword),expression:\"updateLoginPwdForm.ConfirmPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('change_login_pwd_0007')},domProps:{\"value\":(_vm.updateLoginPwdForm.ConfirmPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateLoginPwdForm, \"ConfirmPassword\", $event.target.value)}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-save\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.updateLoginSubmit}},[_vm._v(_vm._s(_vm.$t(\"change_login_pwd_0008\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./change-security-pwd.vue?vue&type=template&id=79b07039&scoped=true\"\nimport script from \"./change-security-pwd.vue?vue&type=script&lang=js\"\nexport * from \"./change-security-pwd.vue?vue&type=script&lang=js\"\nimport style0 from \"./change-security-pwd.vue?vue&type=style&index=0&id=79b07039&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"79b07039\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./change-security-pwd.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./change-security-pwd.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-change-security-pwd\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"change-security-pwd\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.IsBinding ? _vm.$t('change_security_pwd_0001') : _vm.$t('change_security_pwd_0016'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-change-security-pwd\"},[_c('div',{staticClass:\"form\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IsBinding),expression:\"IsBinding\"}],staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"change_security_pwd_0004\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecPwdForm.OldPassword),expression:\"updateSecPwdForm.OldPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('change_security_pwd_0005')},domProps:{\"value\":(_vm.updateSecPwdForm.OldPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateSecPwdForm, \"OldPassword\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"change_security_pwd_0006\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecPwdForm.NewPassword),expression:\"updateSecPwdForm.NewPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('change_security_pwd_0007')},domProps:{\"value\":(_vm.updateSecPwdForm.NewPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateSecPwdForm, \"NewPassword\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"change_security_pwd_0008\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecPwdForm.ConfirmPassword),expression:\"updateSecPwdForm.ConfirmPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('change_security_pwd_0009')},domProps:{\"value\":(_vm.updateSecPwdForm.ConfirmPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateSecPwdForm, \"ConfirmPassword\", $event.target.value)}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-save\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.updateSecSubmit}},[_vm._v(_vm._s(_vm.$t(\"change_security_pwd_0010\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./set-encrypted.vue?vue&type=template&id=98a6ede4&scoped=true\"\nimport script from \"./set-encrypted.vue?vue&type=script&lang=js\"\nexport * from \"./set-encrypted.vue?vue&type=script&lang=js\"\nimport style0 from \"./set-encrypted.vue?vue&type=style&index=0&id=98a6ede4&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"98a6ede4\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./set-encrypted.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./set-encrypted.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-set-encrypted\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"set-encrypted\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('set_encrypted_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(!_vm.encryptedStatus)?[_c('f7-block',{staticClass:\"block-set-encrypted\"},[_c('div',{staticClass:\"list inline-labels list-set-encrypted\"},[_c('ul',[(_vm.secQuestionList.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.setSecParam.SecurityQuestionID),expression:\"setSecParam.SecurityQuestionID\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.setSecParam, \"SecurityQuestionID\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.secQuestionList),function(item){return _c('option',{key:item.SecurityQuestionID,domProps:{\"value\":item.SecurityQuestionID}},[_vm._v(_vm._s(item.QuestionDetail))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0002\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0003\")))])])])])]):_vm._e(),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.setSecParam.SecurityAnswer),expression:\"setSecParam.SecurityAnswer\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('set_encrypted_0005')},domProps:{\"value\":(_vm.setSecParam.SecurityAnswer)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.setSecParam, \"SecurityAnswer\", $event.target.value)}}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0006\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.setSecParam.LoginPassword),expression:\"setSecParam.LoginPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('set_encrypted_0007')},domProps:{\"value\":(_vm.setSecParam.LoginPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.setSecParam, \"LoginPassword\", $event.target.value)}}})])])])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-save\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.setSecSubmit}},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0008\")))])])])])]:[_c('f7-block',{staticClass:\"block-set-encrypted\"},[_c('div',{staticClass:\"list inline-labels list-set-encrypted\"},[_c('ul',[(_vm.secQuestionList.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecParam.SecurityQuestionID),expression:\"updateSecParam.SecurityQuestionID\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.updateSecParam, \"SecurityQuestionID\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.secQuestionList),function(item){return _c('option',{key:item.SecurityQuestionID,domProps:{\"value\":item.SecurityQuestionID}},[_vm._v(_vm._s(item.QuestionDetail))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0009\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0010\")))])])])])]):_vm._e(),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0011\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecParam.SecurityAnswer),expression:\"updateSecParam.SecurityAnswer\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('set_encrypted_0005')},domProps:{\"value\":(_vm.updateSecParam.SecurityAnswer)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateSecParam, \"SecurityAnswer\", $event.target.value)}}})])])])]),_vm._v(\" \"),(_vm.secQuestionList.length > 0)?_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecParam.NewSecurityQuestionID),expression:\"updateSecParam.NewSecurityQuestionID\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.updateSecParam, \"NewSecurityQuestionID\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.secQuestionList),function(item){return _c('option',{key:item.SecurityQuestionID,domProps:{\"value\":item.SecurityQuestionID}},[_vm._v(_vm._s(item.QuestionDetail))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0012\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0013\")))])])])])]):_vm._e(),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0014\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecParam.NewSecurityAnswer),expression:\"updateSecParam.NewSecurityAnswer\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('set_encrypted_0005')},domProps:{\"value\":(_vm.updateSecParam.NewSecurityAnswer)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateSecParam, \"NewSecurityAnswer\", $event.target.value)}}})])])])]),_vm._v(\" \"),_c('li',[_c('div',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label text-right\"},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0006\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.updateSecParam.loginPassword),expression:\"updateSecParam.loginPassword\"}],attrs:{\"type\":\"password\",\"placeholder\":_vm.$t('set_encrypted_0007')},domProps:{\"value\":(_vm.updateSecParam.loginPassword)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.updateSecParam, \"loginPassword\", $event.target.value)}}})])])])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-save\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.updateSecSubmit}},[_vm._v(_vm._s(_vm.$t(\"set_encrypted_0008\")))])])])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./message-center.vue?vue&type=template&id=6c2a05ce&scoped=true\"\nimport script from \"./message-center.vue?vue&type=script&lang=js\"\nexport * from \"./message-center.vue?vue&type=script&lang=js\"\nimport style0 from \"./message-center.vue?vue&type=style&index=0&id=6c2a05ce&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c2a05ce\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./message-center.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./message-center.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n chevron_left \r\n \r\n \r\n {{ $t(\"message_center_0001\") }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n {{ $t(\"message_center_0004\") }} \r\n {{ $t(\"message_center_0005\") }} \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n \r\n {{ item.CreateTs.replace(\"T\", \" \") }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n \r\n \r\n
\r\n \r\n {{ item.Title }}\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-messgae-center\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"messgae-center\"},on:{\"page:beforein\":_vm.onPageBeforeIn}},[_c('f7-navbar',{attrs:{\"innerClass\":\"navbar-inner-message\"}},[_c('f7-nav-left',[_c('f7-link',{on:{\"click\":_vm.backMemberCenter}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_left\")])])],1),_vm._v(\" \"),_c('f7-nav-title',[_vm._v(_vm._s(_vm.$t(\"message_center_0001\")))]),_vm._v(\" \"),_c('f7-nav-right',[_c('f7-link')],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"buttons-tab buttons-message\"},[_c('f7-link',{attrs:{\"tab-link\":\"#tab-game-message\",\"tab-link-active\":\"\",\"text\":_vm.$t('message_center_0002')}}),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"#tab-user-message\",\"text\":_vm.$t('message_center_0003')}})],1),_vm._v(\" \"),(_vm.showUserMsgBtn)?_c('f7-block',{staticClass:\"block-button\"},[_c('f7-segmented',{attrs:{\"round\":\"\",\"tag\":\"p\"}},[_c('f7-button',{attrs:{\"round\":\"\",\"outline\":\"\",\"active\":_vm.readActiveIndex == 0},on:{\"click\":function($event){return _vm.toggleMessage(0)}}},[_vm._v(_vm._s(_vm.$t(\"message_center_0004\")))]),_vm._v(\" \"),_c('f7-button',{attrs:{\"round\":\"\",\"outline\":\"\",\"active\":_vm.readActiveIndex == 1},on:{\"click\":function($event){return _vm.toggleMessage(1)}}},[_vm._v(_vm._s(_vm.$t(\"message_center_0005\")))])],1)],1):_vm._e(),_vm._v(\" \"),_c('f7-tabs',{staticClass:\"tabs-message\",attrs:{\"swipeable\":\"\"}},[_c('f7-tab',{staticClass:\"page-content tab-game-message\",attrs:{\"id\":\"tab-game-message\",\"tab-active\":\"\"},on:{\"tab:show\":function($event){return _vm.tabShow(1)}}},[(_vm.systemList.length > 0)?[_c('f7-block',{staticClass:\"block\"},_vm._l((_vm.systemList),function(item){return _c('f7-card',{key:item.Id,staticClass:\"card-message\"},[_c('f7-card-content',{domProps:{\"innerHTML\":_vm._s(item.Content)}}),_vm._v(\" \"),_c('f7-card-footer',[_vm._v(_vm._s(item.CreateTs.replace(\"T\", \" \")))])],1)}),1)]:(_vm.systemList.length <= 0 && !_vm.showData)?[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/hd_nodata_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/hd_nodata_enUS.png'`,\"alt\":\"No data\"}})])]:_vm._e()],2),_vm._v(\" \"),_c('f7-tab',{staticClass:\"page-content tab-user-message\",attrs:{\"id\":\"tab-user-message\"},on:{\"tab:show\":function($event){return _vm.tabShow(2)}}},[(_vm.userMessageList.length > 0)?[_c('f7-block',{staticClass:\"block\"},_vm._l((_vm.userMessageList),function(item){return _c('div',{key:item.Id,staticClass:\"card-message card-user-message card\",on:{\"click\":function($event){return _vm.openCardPopup(item)}}},[_c('div',{staticClass:\"text-left card-content card-content-padding\"},[_c('i',{staticClass:\"iconfont icon-renwu\"}),_vm._v(\"\\n \"+_vm._s(item.Title)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer\"},[_c('i',{staticClass:\"iconfont icon-time\"}),_vm._v(\"\\n \"+_vm._s(item.CreateTs.replace(\"T\", \" \"))+\"\\n \")])])}),0)]:[_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})])]],2)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"message-popup\",attrs:{\"opened\":_vm.popupMsgOpened},on:{\"popup:closed\":function($event){_vm.popupMsgOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.popupMessageItem.Title}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),_c('f7-block',[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.popupMessageItem.Content)}})])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n {{ $t('register_agent_0002') }}
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t('register_agent_0007') }}
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ $t('register_agent_0019') }}\r\n <{{ $t('register_agent_0020') }}> \r\n
\r\n \r\n {{ $t('register_agent_0021') }} \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./register-agent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./register-agent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./register-agent.vue?vue&type=template&id=b3dc4476&scoped=true\"\nimport script from \"./register-agent.vue?vue&type=script&lang=js\"\nexport * from \"./register-agent.vue?vue&type=script&lang=js\"\nimport style0 from \"./register-agent.vue?vue&type=style&index=0&id=b3dc4476&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b3dc4476\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-register-agent\",attrs:{\"no-toolbar\":\"\",\"name\":\"register\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('register_agent_0001'),\"back-link\":\"\"}}),_vm._v(\" \"),_c('form',{staticClass:\"list no-hairlines-md\",attrs:{\"id\":\"form-register\"}},[_c('div',{staticClass:\"block-title\"},[_vm._v(_vm._s(_vm.$t('register_agent_0002')))]),_vm._v(\" \"),_c('ul',[_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.baseInfo.ShowPromotionCodeOnAgentRegister),expression:\"baseInfo.ShowPromotionCodeOnAgentRegister\"}],staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yaoqingma\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.promotionCode),expression:\"promotionCode\"}],attrs:{\"type\":\"text\",\"name\":\"promotion-code\",\"placeholder\":_vm.$t('register_agent_0003')},domProps:{\"value\":(_vm.promotionCode)},on:{\"input\":function($event){if($event.target.composing)return;_vm.promotionCode=$event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-zhanghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-name\",\"placeholder\":_vm.$t('register_agent_0004'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-pwd\",\"placeholder\":_vm.$t('register_agent_0005'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-repwd\",\"placeholder\":_vm.$t('register_agent_0006'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])])]),_vm._v(\" \"),_c('div',{staticClass:\"block-title\"},[_vm._v(_vm._s(_vm.$t('register_agent_0007')))]),_vm._v(\" \"),_c('ul',[(_vm.baseInfo.NeedAgentSureName)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yonghu\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-surename\",\"placeholder\":_vm.$t('register_agent_0008')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedAgentPhone)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-shouji\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"number\",\"name\":\"user-phone\",\"placeholder\":_vm.$t('register_agent_0009')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedAgentEmail)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-youxiang\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"email\",\"name\":\"user-email\",\"placeholder\":_vm.$t('register_agent_0010')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedAgentWechat)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-weixin\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-wechat\",\"placeholder\":_vm.$t('register_agent_0011')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedAgentQQ)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-qq\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"number\",\"name\":\"user-qq\",\"placeholder\":_vm.$t('register_agent_0012')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedAgentBankNo)?_c('li',{staticClass:\"item-content item-input item-input-with-info item-input-bank\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yinhangqia\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('a',{staticClass:\"item-link smart-select smart-select-init bank-select\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{attrs:{\"name\":\"user-bankName\"}},_vm._l((_vm.bankList),function(item){return _c('option',{key:item[0],domProps:{\"value\":item[0]}},[_vm._v(_vm._s(item[1]))])}),0),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.$t('register_agent_0013')))])])])])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedAgentBankNo)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yinhangqia\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"number\",\"name\":\"user-bankNum\",\"placeholder\":_vm.$t('register_agent_0014')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),(_vm.baseInfo.NeedAgentBankNo)?_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yinhangqia\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-bankAddres\",\"placeholder\":_vm.$t('register_agent_0015')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]):_vm._e(),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-securitypwd\",\"placeholder\":_vm.$t('register_agent_0016'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-reSecuritypwd\",\"placeholder\":_vm.$t('register_agent_0017'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yanzhengma\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-verify\",\"placeholder\":_vm.$t('register_agent_0018'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"span-verify\"},[_c('img',{attrs:{\"src\":`${_vm.verifyUrl}`,\"alt\":\"\"},on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.updateVerify.apply(null, arguments)}}})])])])])]),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('f7-block-header',{directives:[{name:\"show\",rawName:\"v-show\",value:(1==0),expression:\"1==0\"}],staticClass:\"text-center\"},[_c('p',[_c('f7-checkbox',{attrs:{\"name\":\"readRule\",\"checked\":_vm.read},on:{\"change\":_vm.checkRead}}),_vm._v(\" \"+_vm._s(_vm.$t('register_agent_0019'))+\"\\n \"),_c('f7-link',{staticClass:\"color-blue2\",attrs:{\"popup-open\":\".popup-general\"}},[_vm._v(\"<\"+_vm._s(_vm.$t('register_agent_0020'))+\">\")])],1)]),_vm._v(\" \"),_c('f7-button',{attrs:{\"fill\":\"\",\"raised\":\"\",\"large\":\"\"},on:{\"click\":_vm.registerNow}},[_vm._v(_vm._s(_vm.$t('register_agent_0021')))])],1)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"popup-general\",attrs:{\"opened\":_vm.popupOpened},on:{\"popup:closed\":function($event){_vm.popupOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.$t('register_agent_0020')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),_c('f7-block',[_c('ul',[_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_agent_0022', [_vm.$f7.params.name]))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('register_agent_0023')))]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n 【\\n \"),_c('span',[_vm._v(_vm._s(_vm.$f7.params.name))]),_vm._v(\"】\"+_vm._s(_vm.$t('register_agent_0024'))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_agent_0025', [_vm.$f7.params.name]))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_agent_0026', [_vm.$f7.params.name]))+\"\\n \")]),_vm._v(\" \"),_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('register_agent_0027', [_vm.$f7.params.name]))+\"\\n \")])])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading-game.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./loading-game.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n
\r\n
\r\n
{{ $t('common_game_Beingloaded_format', [EnterGameName]) }}
\r\n
\r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./loading-game.vue?vue&type=template&id=13918c9d&scoped=true\"\nimport script from \"./loading-game.vue?vue&type=script&lang=js\"\nexport * from \"./loading-game.vue?vue&type=script&lang=js\"\nimport style0 from \"./loading-game.vue?vue&type=style&index=0&id=13918c9d&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13918c9d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-loading-game\",attrs:{\"no-toolbar\":\"\",\"no-navbar\":\"\",\"no-swipeback\":\"\",\"name\":\"loading-game\"}},[_c('f7-block',{staticClass:\"block-loading-game\"},[_c('div',{staticClass:\"loader-ring\"},[_c('div',{staticClass:\"loader-ring-light\"}),_vm._v(\" \"),_c('div',{staticClass:\"loader-ring-track\"}),_vm._v(\" \"),_c('div',{staticClass:\"loader-text\"},[_vm._v(_vm._s(_vm.$t('common_game_Beingloaded_format', [_vm.EnterGameName])))])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer.vue?vue&type=template&id=73fe7d4d&scoped=true\"\nimport script from \"./referrer.vue?vue&type=script&lang=js\"\nexport * from \"./referrer.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer.vue?vue&type=style&index=0&id=73fe7d4d&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73fe7d4d\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ $t(\"referrer_0008\") }} \r\n \r\n
\r\n
\r\n {{ link }} \r\n
\r\n
\r\n {{ $t(\"referrer_0009\") }} \r\n {{ $t(\"referrer_0010\") }} \r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{ info.HistoryTotalReferrerCommission | formatCurrency }} \r\n
\r\n
\r\n
{{ $t(\"referrer_0011\") }}
\r\n
{{ $t(\"referrer_0012\") }}
\r\n
\r\n
\r\n
\r\n
{{ info.PendingReferrerCommission | formatCurrency }} \r\n
\r\n
\r\n
{{ $t(\"referrer_0013\") }}
\r\n
{{ $t(\"referrer_0014\") }}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{ $t(\"referrer_0015\") }}
\r\n
\r\n
\r\n
\r\n
{{ $t(\"referrer_0016\") }}
\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-referrer\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"referrer-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-referrer-info\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[((_vm.info.ReferrerDownlineCount && _vm.info.ReferrerDownlineIncrementCount) || _vm.info.ReferrerDownlineCount == 0 || _vm.info.ReferrerDownlineIncrementCount == 0)?_c('span',[_vm._v(_vm._s(_vm.info.ReferrerDownlineCount)+\"(\"+_vm._s(_vm.info.ReferrerDownlineIncrementCount)+\")\")]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0003\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[(_vm.info.TodayDownlineTotalPerformance || _vm.info.TodayDownlineTotalPerformance == 0)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.info.TodayDownlineTotalPerformance)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0004\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[((_vm.info.ReferrerDownlineCount && _vm.info.ReferrerDownlineIncrementCount) || _vm.info.ReferrerDownlineCount == 0 || _vm.info.ReferrerDownlineIncrementCount == 0)?_c('span',[_vm._v(_vm._s(_vm.info.ReferrerDownlineCount_L2)+\"(\"+_vm._s(_vm.info.ReferrerDownlineIncrementCount_L2)+\")\")]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0005\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[(_vm.info.TodayDownlineTotalPerformance || _vm.info.TodayDownlineTotalPerformance == 0)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.info.TodayDownlineTotalPerformance_L2)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0006\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[(_vm.estimatedCommissionToday || _vm.estimatedCommissionToday == 0)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.estimatedCommissionToday)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0007\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[(_vm.info.YestodayCommision || _vm.info.YestodayCommision == 0)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.info.YestodayCommision_L1))+\" + \"+_vm._s(_vm._f(\"formatCurrency\")(_vm.info.YestodayCommision_L2)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1)])])])]),_vm._v(\" \"),_c('div',{staticClass:\"top\"},[_c('div',{staticClass:\"info\"}),_vm._v(\" \"),_c('div',{staticClass:\"share\"},[_c('span',{staticClass:\"sharedesc\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0008\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"share\"},[_c('span',{staticClass:\"share-link\"},[_vm._v(_vm._s(_vm.link))])]),_vm._v(\" \"),_c('div',{staticClass:\"copy\"},[_c('span',{staticClass:\"sharebutton\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/referrer-share/')}}},[_vm._v(_vm._s(_vm.$t(\"referrer_0009\")))]),_vm._v(\" \"),_c('span',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.link),expression:\"link\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopy),expression:\"onCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onError),expression:\"onError\",arg:\"error\"}],staticClass:\"copybutton\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0010\")))])])]),_vm._v(\" \"),_c('div',{staticClass:\"middle row\"},[_c('div',{staticClass:\"col-50 wallet rightafter\"},[_c('div',{staticClass:\"text-center\"},[(_vm.info.HistoryTotalReferrerCommission || _vm.info.HistoryTotalReferrerCommission == 0)?_c('span',{staticClass:\"num\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.info.HistoryTotalReferrerCommission)))]):_c('preloader',{staticStyle:{\"width\":\"16px\",\"margin\":\"0 auto\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0011\")))]),_vm._v(\" \"),_c('div',{staticClass:\"text-center rebtn\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/referrer-receive-search/')}}},[_vm._v(_vm._s(_vm.$t(\"referrer_0012\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"col-50 wallet\"},[_c('div',{staticClass:\"text-center\"},[(_vm.info.PendingReferrerCommission || _vm.info.PendingReferrerCommission == 0)?_c('span',{staticClass:\"num\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.info.PendingReferrerCommission)))]):_c('preloader',{staticStyle:{\"width\":\"16px\",\"margin\":\"0 auto\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0013\")))]),_vm._v(\" \"),_c('div',{staticClass:\"text-center rebtn\",on:{\"click\":function($event){return _vm.getreferreramounttomainwallet()}}},[_vm._v(_vm._s(_vm.$t(\"referrer_0014\")))])])]),_vm._v(\" \"),_c('div',{staticClass:\"bottom row\"},[_c('div',{staticClass:\"col-50\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/referrer-directReport-search/')}}},[_c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"../../../static/images/yt999/referrer/ico1.png\"),\"alt\":\"\",\"width\":\"30px\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"text-center s-title\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0015\")))])]),_vm._v(\" \"),_c('div',{staticClass:\"col-50\",on:{\"click\":function($event){return _vm.$f7router.navigate('/member-center/referrer-performance-search/')}}},[_c('div',{staticClass:\"text-center\"},[_c('img',{attrs:{\"src\":require(\"../../../static/images/yt999/referrer/ico2.png\"),\"alt\":\"\",\"width\":\"30px\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"text-center s-title\"},[_vm._v(_vm._s(_vm.$t(\"referrer_0016\")))])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer-share.vue?vue&type=template&id=3c0b345c&scoped=true\"\nimport script from \"./referrer-share.vue?vue&type=script&lang=js\"\nexport * from \"./referrer-share.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer-share.vue?vue&type=style&index=0&id=3c0b345c&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c0b345c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-share.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-share.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{ $t(\"referrer_share_0002\") }}
\r\n
\r\n
\r\n
{{ $t(\"common_0004\") }}:
\r\n
{{ $t(\"referrer_share_0004\") }}
\r\n
{{ $t(\"referrer_share_0005\") }}
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{ $t(\"referrer_share_0006\") }} \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_share_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block\"},[_c('f7-tabs',[_c('f7-tab',{staticClass:\"page-content\",attrs:{\"id\":\"tab-share\",\"tab-active\":\"\"}},[_c('div',{staticClass:\"share\"},[_c('div',{staticClass:\"code text-center\",attrs:{\"id\":\"qrcode\"}}),_vm._v(\" \"),_c('div',{staticClass:\"url text-center\"},[_vm._v(_vm._s(_vm.$t(\"referrer_share_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-share\"},[_c('ul',[_c('li',[_c('a',{directives:[{name:\"clipboard\",rawName:\"v-clipboard:copy\",value:(_vm.link),expression:\"link\",arg:\"copy\"},{name:\"clipboard\",rawName:\"v-clipboard:success\",value:(_vm.onCopy),expression:\"onCopy\",arg:\"success\"},{name:\"clipboard\",rawName:\"v-clipboard:error\",value:(_vm.onError),expression:\"onError\",arg:\"error\"}],staticClass:\"list-button color-black\",attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(_vm.$t(\"referrer_share_0003\")))])])])]),_vm._v(\" \"),_c('div',{staticClass:\"tips-desc\"},[_c('p',[_vm._v(_vm._s(_vm.$t(\"common_0004\"))+\":\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"referrer_share_0004\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"referrer_share_0005\")))])])])]),_vm._v(\" \"),_c('f7-tab',{attrs:{\"id\":\"tab-register\"}},[_c('div',{staticClass:\"register\"},[_c('form',{staticClass:\"list no-hairlines-md\",attrs:{\"id\":\"form-register\"}},[_c('ul',[_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-wode\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap yzm\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-name\",\"placeholder\":_vm.$t('register_0003'),\"required\":\"\"}})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-pwd\",\"placeholder\":_vm.$t('register_agent_0005'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-mima\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"name\":\"user-repwd\",\"placeholder\":_vm.$t('register_agent_0006'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-xingming\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-surename\",\"placeholder\":_vm.$t('register_agent_0008')}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input item-input-with-info\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"iconfont icon-yanzhengma\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"name\":\"user-verify\",\"placeholder\":_vm.$t('register_agent_0018'),\"required\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"span-verify\"},[_c('img',{attrs:{\"src\":`${_vm.verifyUrl}`,\"alt\":\"\"},on:{\"click\":function($event){if($event.target !== $event.currentTarget)return null;return _vm.updateVerify.apply(null, arguments)}}})])])])])]),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('f7-button',{attrs:{\"fill\":\"\",\"raised\":\"\",\"large\":\"\"}},[_vm._v(_vm._s(_vm.$t(\"referrer_share_0006\")))])],1)],1)])])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer-receive-search.vue?vue&type=template&id=6cf75db5&scoped=true\"\nimport script from \"./referrer-receive-search.vue?vue&type=script&lang=js\"\nexport * from \"./referrer-receive-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer-receive-search.vue?vue&type=style&index=0&id=6cf75db5&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6cf75db5\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-receive-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-receive-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-direct-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"direct-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_receive_search_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-white\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer-receive-records.vue?vue&type=template&id=396075a0&scoped=true\"\nimport script from \"./referrer-receive-records.vue?vue&type=script&lang=js\"\nexport * from \"./referrer-receive-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer-receive-records.vue?vue&type=style&index=0&id=396075a0&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"396075a0\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-receive-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-receive-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n
\r\n
\r\n
{{ $t(\"referrer_receive_records_0002\") }}
\r\n
\r\n {{ item.CreateTS.replace(\"T\", \" \") }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"referrer_receive_records_0003\") }}
\r\n
{{ item.Amount }}
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-direct-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"direct-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_receive_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.recordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.recordsList),function(item,index){return _c('div',{key:index,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_receive_records_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"col-60\"},[[_vm._v(_vm._s(item.CreateTS.replace(\"T\", \" \")))]],2)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_receive_records_0003\")))]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-blue\"},[_vm._v(_vm._s(item.Amount))])])])])}),0):(_vm.recordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer-directReport-search.vue?vue&type=template&id=0a2f167d&scoped=true\"\nimport script from \"./referrer-directReport-search.vue?vue&type=script&lang=js\"\nexport * from \"./referrer-directReport-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer-directReport-search.vue?vue&type=style&index=0&id=0a2f167d&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a2f167d\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-directReport-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-directReport-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-direct-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"direct-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_directReport_search_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_directReport_search_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dirctNumber),expression:\"dirctNumber\"}],staticClass:\"input-title\",attrs:{\"type\":\"text\",\"readonly\":\"\",\"value\":\"\"},domProps:{\"value\":(_vm.dirctNumber)},on:{\"input\":function($event){if($event.target.composing)return;_vm.dirctNumber=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_directReport_search_0003\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.todayTotalPerformance),expression:\"todayTotalPerformance\"}],staticClass:\"input-title\",attrs:{\"type\":\"text\",\"readonly\":\"\",\"value\":\"\"},domProps:{\"value\":(_vm.todayTotalPerformance)},on:{\"input\":function($event){if($event.target.composing)return;_vm.todayTotalPerformance=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_directReport_records_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.queryParam.UserNameDownline),expression:\"queryParam.UserNameDownline\"}],staticClass:\"input-title\",attrs:{\"type\":\"text\",\"value\":\"\"},domProps:{\"value\":(_vm.queryParam.UserNameDownline)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.queryParam, \"UserNameDownline\", $event.target.value)}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer-directReport-records.vue?vue&type=template&id=4041e74e&scoped=true\"\nimport script from \"./referrer-directReport-records.vue?vue&type=script&lang=js\"\nexport * from \"./referrer-directReport-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer-directReport-records.vue?vue&type=style&index=0&id=4041e74e&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4041e74e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-directReport-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-directReport-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n
\r\n
\r\n
{{ $t(\"referrer_directReport_records_0002\") }}:
\r\n
\r\n {{ item.UserName.split(\".\")[1] }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"referrer_directReport_records_0003\") }}:
\r\n
{{ item.TotalTodayEffectiveBetAmount }}
\r\n
\r\n
\r\n
{{ $t(\"referrer_directReport_records_0004\") }}:
\r\n
{{ item.TotalEffectiveBetAmount }}
\r\n
\r\n
\r\n
{{ $t(\"referrer_directReport_records_0005\") }}:
\r\n
{{ item.ReferrerDownlineCount }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-direct-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"direct-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_directReport_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.recordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.recordsList),function(item,index){return _c('div',{key:index,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_directReport_records_0002\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60\"},[[_vm._v(_vm._s(item.UserName.split(\".\")[1]))]],2)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_directReport_records_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-blue\"},[_vm._v(_vm._s(item.TotalTodayEffectiveBetAmount))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_directReport_records_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-blue\"},[_vm._v(_vm._s(item.TotalEffectiveBetAmount))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_directReport_records_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-blue\"},[_vm._v(_vm._s(item.ReferrerDownlineCount))])])]),_vm._v(\" \"),_c('div',{staticClass:\"card-footer\"},[_vm._v(_vm._s(item.RegisterTs.replace(\"T\", \" \")))])])}),0):(_vm.recordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer-performance-search.vue?vue&type=template&id=65e1ab41&scoped=true\"\nimport script from \"./referrer-performance-search.vue?vue&type=script&lang=js\"\nexport * from \"./referrer-performance-search.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer-performance-search.vue?vue&type=style&index=0&id=65e1ab41&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"65e1ab41\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-performance-search.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-performance-search.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-direct-search\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"direct-search\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_performance_search_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('f7-block',{staticClass:\"block-search\"},[_c('div',{staticClass:\"form\"},[_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0029\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.BeginDay),expression:\"BeginDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateF\"},domProps:{\"value\":(_vm.BeginDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.BeginDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"common_0030\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.EndDay),expression:\"EndDay\"}],attrs:{\"type\":\"date\",\"id\":\"dateT\"},domProps:{\"value\":(_vm.EndDay)},on:{\"input\":function($event){if($event.target.composing)return;_vm.EndDay=$event.target.value}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-item\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0002\")))]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.queryParam.UserNameDownline),expression:\"queryParam.UserNameDownline\"}],staticClass:\"input-title\",attrs:{\"type\":\"text\",\"value\":\"\"},domProps:{\"value\":(_vm.queryParam.UserNameDownline)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.queryParam, \"UserNameDownline\", $event.target.value)}}})])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"list inset button-search\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"list-button color-white\",attrs:{\"href\":\"#\"},on:{\"click\":_vm.searchSubmit}},[_vm._v(_vm._s(_vm.$t(\"common_0028\")))])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./referrer-performance-records.vue?vue&type=template&id=0e450446&scoped=true\"\nimport script from \"./referrer-performance-records.vue?vue&type=script&lang=js\"\nexport * from \"./referrer-performance-records.vue?vue&type=script&lang=js\"\nimport style0 from \"./referrer-performance-records.vue?vue&type=style&index=0&id=0e450446&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e450446\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-performance-records.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./referrer-performance-records.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n 0\">\r\n \r\n
\r\n
\r\n
{{ $t(\"referrer_performance_records_0002\") }}:
\r\n
\r\n {{ item.UserName.split(\".\")[1] }} \r\n
\r\n
\r\n
\r\n
{{ $t(\"referrer_performance_records_0003\") }}:
\r\n
{{ item.ReferrerDownlineCount }}
\r\n
\r\n
\r\n
{{ $t(\"referrer_performance_records_0004\") }}:
\r\n
{{ item.TotalEffectiveBetAmount }}
\r\n
\r\n
\r\n
{{ $t(\"referrer_performance_records_0005\") }}:
\r\n
{{ item.TotalReferrerCommissionAmount }}
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n {{ $t(\"referrer_performance_records_0006\") }}\r\n \r\n chevron_right \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ $t(\"referrer_performance_records_0009\") }} \r\n {{ $t(\"referrer_performance_records_0010\") }} \r\n {{ $t(\"referrer_performance_records_0005\") }} \r\n \r\n \r\n \r\n {{ item.TotalEffectiveBetAmount }} \r\n {{ item.TotalReferrerCommissionAmount }} \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-direct-records\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"direct-records\",\"infinite\":\"\",\"infinite-distance\":50,\"infinite-preloader\":_vm.showPreloader},on:{\"infinite\":_vm.loadMore}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('referrer_performance_records_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),(_vm.recordsList.length > 0)?_c('f7-block',{staticClass:\"block-records\"},_vm._l((_vm.recordsList),function(item,index){return _c('div',{key:index,staticClass:\"card card-outline\"},[_c('div',{staticClass:\"card-content card-content-padding\"},[_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0002\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-gray\"},[[_vm._v(_vm._s(item.UserName.split(\".\")[1]))]],2)]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0003\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-gray\"},[_vm._v(_vm._s(item.ReferrerDownlineCount))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0004\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-green\"},[_vm._v(_vm._s(item.TotalEffectiveBetAmount))])]),_vm._v(\" \"),_c('div',{staticClass:\"row no-gap\"},[_c('div',{staticClass:\"col-40 text-right\"},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0005\"))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"col-60 co-blue\"},[_vm._v(_vm._s(item.TotalReferrerCommissionAmount))])])])])}),0):(_vm.recordsList.length <= 0 && !_vm.showData)?_c('f7-card',{staticClass:\"no-data\"},[_c('img',{attrs:{\"src\":`../../../static/images/yt999/noData_${_vm.$f7.params.currLang}.png`,\"width\":\"45%\",\"onerror\":`this.onerror=''; src='../../../static/images/yt999/noData_enUS.png'`,\"alt\":\"No data\"}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-balance dialog-move\",on:{\"dialog:closed\":_vm.balanceCloseEvent,\"dialog:open\":_vm.balanceOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"referrer_performance_records_0006\"))+\"\\n \"),_c('f7-link',{on:{\"click\":_vm.closeDialogBalance}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-balance\"},[_c('f7-block-header',{staticClass:\"block-header-totalBalance\"},[_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"25\"}},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0007\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"75\"}},[_c('span',[_vm._v(_vm._s(_vm.lookname))])])],1),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"25\"}},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0008\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"75\"}},[_c('span',[_vm._v(_vm._s(_vm.lookfromDate)+\" - \"+_vm._s(_vm.looktoDate))])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"block-content\"},[_c('f7-row',{staticClass:\"item-balance\"},[_c('f7-col',{attrs:{\"width\":\"33\"}},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0009\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"33\"}},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0010\")))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"33\"}},[_vm._v(_vm._s(_vm.$t(\"referrer_performance_records_0005\")))])],1),_vm._v(\" \"),_vm._l((_vm.detailList),function(item){return _c('f7-row',{key:item.GameType,staticClass:\"item-balance\"},[_c('f7-col',{attrs:{\"width\":\"33\"},domProps:{\"innerHTML\":_vm._s(_vm.$options.filters.GameType(item.GameType))}}),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"33\"}},[_vm._v(_vm._s(item.TotalEffectiveBetAmount))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"33\"}},[_vm._v(_vm._s(item.TotalReferrerCommissionAmount))])],1)})],2)],1)],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0002') }} \r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0017', [mission.RequiredQuantity, mission.Amount]) }}
\r\n
\r\n
\r\n {{ mission.OwnQuantity > mission.RequiredQuantity ? mission.RequiredQuantity : mission.OwnQuantity}} \r\n /{{ mission.RequiredQuantity }} \r\n
\r\n
\r\n
\r\n
{{ getDesc(mission) }}
\r\n
\r\n
\r\n = mission.RequiredQuantity && !mission.IsReceived\">{{ $t('activity_center_0018') }} \r\n = mission.RequiredQuantity && mission.IsReceived\">{{ $t('activity_center_0005') }} \r\n {{ $t('activity_center_0006') }} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0008') }}\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0019', [item.MissionTimeRangeType]) }} \r\n {{ $t('activity_center_0010') }} \r\n {{ $t('activity_center_0011', [getGameTypeLimitDesc(item.BonusAuditGameTypes)]) }} \r\n {{ $t('activity_center_0020') }} \r\n {{ $t('activity_center_0012') }} \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n\r\n","\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0002') }} \r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0022', [mission.RequiredQuantity, mission.Amount]) }}
\r\n
\r\n
\r\n {{ mission.OwnQuantity }} / {{ mission.RequiredQuantity }} \r\n
\r\n
\r\n
\r\n
{{ getDesc(mission) }}
\r\n
\r\n
\r\n = mission.RequiredQuantity && !mission.IsReceived\">{{ $t('daily_task_0003') }} \r\n = mission.RequiredQuantity && mission.IsReceived\">{{ $t('activity_center_0005') }} \r\n {{ $t('activity_center_0006') }} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0008') }}\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0023', [item.MissionTimeRangeType]) }} \r\n {{ $t('activity_center_0024', [getGameTypeLimitDesc(item.TurnoverCheckGameTypes)]) }} \r\n {{ $t('activity_center_0010') }} \r\n {{ $t('activity_center_0011', [getGameTypeLimitDesc(item.BonusAuditGameTypes)]) }} \r\n {{ $t('activity_center_0020') }} \r\n {{ $t('activity_center_0012') }} \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n ","\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0002') }} \r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0037', [mission.RequiredQuantity, mission.Amount]) }}
\r\n
\r\n
\r\n {{ mission.OwnQuantity > mission.RequiredQuantity ? mission.RequiredQuantity : mission.OwnQuantity}} \r\n /{{ mission.RequiredQuantity }} \r\n
\r\n
\r\n
\r\n
{{ getDesc(mission) }}
\r\n
\r\n
\r\n = mission.RequiredQuantity && !mission.IsReceived\">{{ $t('activity_center_0018') }} \r\n = mission.RequiredQuantity && mission.IsReceived\">{{ $t('activity_center_0005') }} \r\n {{ $t('activity_center_0006') }} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0008') }}\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0038', [item.MissionTimeRangeType]) }} \r\n {{ $t('activity_center_0010') }} \r\n {{ $t('activity_center_0011', [getGameTypeLimitDesc(item.BonusAuditGameTypes)]) }} \r\n {{ $t('activity_center_0020') }} \r\n {{ $t('activity_center_0012') }} \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n ","\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0002') }} \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n = mission.RequiredQuantity && !mission.IsReceived\">{{ $t('activity_center_0004') }} \r\n = mission.RequiredQuantity && mission.IsReceived\">{{ $t('activity_center_0005') }} \r\n {{ $t('activity_center_0006') }} \r\n {{ $t('activity_center_0007', [mission.RequiredQuantity]) }}
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0008') }}\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0009') }} \r\n {{ getInviteRuleDesc() }} \r\n {{ $t('activity_center_0010') }} \r\n {{ $t('activity_center_0011', [getGameTypeLimitDesc()]) }} \r\n {{ $t('activity_center_0012') }} \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n ","\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('activity_center_0002') }} \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0029') }}\r\n
\r\n
\r\n {{ tips }}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0008') }}\r\n
\r\n
\r\n
\r\n {{ $t('activity_center_0031') }} \r\n {{ $t('activity_center_0032') }} \r\n {{ $t('activity_center_0033') }} \r\n {{ $t('activity_center_0010') }} \r\n {{ $t('activity_center_0011', [getGameTypeLimitDesc()]) }} \r\n {{ $t('activity_center_0012') }} \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n ","\r\n \r\n \r\n \r\n \r\n {{ $t('activity_center_0001') }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ missionNameMaps[item.MissionType] }}{{ getTaskRange(item) }} \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TotalDepositBonus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TotalDepositBonus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TotalDepositBonus.vue?vue&type=template&id=cfc8b6e2\"\nimport script from \"./TotalDepositBonus.vue?vue&type=script&lang=js\"\nexport * from \"./TotalDepositBonus.vue?vue&type=script&lang=js\"\nimport style0 from \"./TotalDepositBonus.vue?vue&type=style&index=0&id=cfc8b6e2&prod&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"activity-deposit\"},[_c('div',{staticClass:\"title\"},[_c('img',{attrs:{\"src\":`static/images/yt999/activity/t_01_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/activity/t_01_enUS.png'`}})]),_vm._v(\" \"),_c('div',{staticClass:\"rules\"},[_c('img',{staticClass:\"ico\",attrs:{\"src\":\"static/images/yt999/activity/8.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"label\",on:{\"click\":function($event){return _vm.openDialog('dialog-deposit-rules')}}},[_vm._v(_vm._s(_vm.$t('activity_center_0002')))])]),_vm._v(\" \"),_c('div',{staticClass:\"task-list\"},_vm._l((_vm.item.SettingList),function(mission,p){return _c('div',{key:p,staticClass:\"task-item\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t('activity_center_0017', [mission.RequiredQuantity, mission.Amount])))]),_vm._v(\" \"),_c('div',{staticClass:\"progress\"},[_c('div',{staticClass:\"progress-value\"},[_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(mission.OwnQuantity > mission.RequiredQuantity ? mission.RequiredQuantity : mission.OwnQuantity))]),_vm._v(\"\\n /\"),_c('span',{staticClass:\"total\"},[_vm._v(_vm._s(mission.RequiredQuantity))])]),_vm._v(\" \"),_c('div',{staticClass:\"line\",style:(`--percent: ${_vm.getProgressPercent(mission)}%`)})]),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.getDesc(mission)))])]),_vm._v(\" \"),_c('div',{staticClass:\"item-right\"},[(mission.OwnQuantity >= mission.RequiredQuantity && !mission.IsReceived)?_c('f7-button',{staticClass:\"btn-receive\",on:{\"click\":function($event){return _vm.receive(mission)}}},[_vm._v(_vm._s(_vm.$t('activity_center_0018')))]):(mission.OwnQuantity >= mission.RequiredQuantity && mission.IsReceived)?_c('f7-button',{staticClass:\"btn-received\"},[_vm._v(_vm._s(_vm.$t('activity_center_0005')))]):_c('f7-button',{staticClass:\"btn-details\"},[_vm._v(_vm._s(_vm.$t('activity_center_0006')))])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-rules\",attrs:{\"id\":\"dialog-deposit-rules\"},on:{\"dialog:closed\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'transparent');},\"dialog:open\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'rgba(0, 4, 7, 0.77)')}}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('activity_center_0008'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-body\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0019', [_vm.item.MissionTimeRangeType])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0010')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0011', [_vm.getGameTypeLimitDesc(_vm.item.BonusAuditGameTypes)])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0020')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0012')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\"},[_c('f7-link',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.closeDialog('dialog-deposit-rules')}}},[_vm._v(_vm._s(_vm.$t('common_close')))])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TotalTurnoverBonus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TotalTurnoverBonus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TotalTurnoverBonus.vue?vue&type=template&id=3aa694f4\"\nimport script from \"./TotalTurnoverBonus.vue?vue&type=script&lang=js\"\nexport * from \"./TotalTurnoverBonus.vue?vue&type=script&lang=js\"\nimport style0 from \"./TotalTurnoverBonus.vue?vue&type=style&index=0&id=3aa694f4&prod&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"activity-turnover\"},[_c('div',{staticClass:\"title\"},[_c('img',{attrs:{\"src\":`static/images/yt999/activity/t_02_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/activity/t_02_enUS.png'`}})]),_vm._v(\" \"),_c('div',{staticClass:\"rules\"},[_c('img',{staticClass:\"ico\",attrs:{\"src\":\"static/images/yt999/activity/8.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"label\",on:{\"click\":function($event){return _vm.openDialog('dialog-turnover-rules')}}},[_vm._v(_vm._s(_vm.$t('activity_center_0002')))])]),_vm._v(\" \"),_c('div',{staticClass:\"task-list\"},_vm._l((_vm.item.SettingList),function(mission,p){return _c('div',{key:p,staticClass:\"task-item\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t('activity_center_0022', [mission.RequiredQuantity, mission.Amount])))]),_vm._v(\" \"),_c('div',{staticClass:\"progress\"},[_c('div',{staticClass:\"progress-value\"},[_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(mission.OwnQuantity))]),_vm._v(\" / \"),_c('span',{staticClass:\"total\"},[_vm._v(_vm._s(mission.RequiredQuantity))])]),_vm._v(\" \"),_c('div',{staticClass:\"line\",style:(`--percent: ${_vm.getProgressPercent(mission)}%`)})]),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.getDesc(mission)))])]),_vm._v(\" \"),_c('div',{staticClass:\"item-right\"},[(mission.OwnQuantity >= mission.RequiredQuantity && !mission.IsReceived)?_c('f7-button',{staticClass:\"btn-receive\",on:{\"click\":function($event){return _vm.receive(mission)}}},[_vm._v(_vm._s(_vm.$t('daily_task_0003')))]):(mission.OwnQuantity >= mission.RequiredQuantity && mission.IsReceived)?_c('f7-button',{staticClass:\"btn-received\"},[_vm._v(_vm._s(_vm.$t('activity_center_0005')))]):_c('f7-button',{staticClass:\"btn-details\"},[_vm._v(_vm._s(_vm.$t('activity_center_0006')))])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-rules\",attrs:{\"id\":\"dialog-turnover-rules\"},on:{\"dialog:closed\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'transparent');},\"dialog:open\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'rgba(0, 4, 7, 0.77)')}}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('activity_center_0008'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-body\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0023', [_vm.item.MissionTimeRangeType])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0024', [_vm.getGameTypeLimitDesc(_vm.item.TurnoverCheckGameTypes)])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0010')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0011', [_vm.getGameTypeLimitDesc(_vm.item.BonusAuditGameTypes)])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0020')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0012')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\"},[_c('f7-link',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.closeDialog('dialog-turnover-rules')}}},[_vm._v(_vm._s(_vm.$t('common_close')))])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WinLoseBonus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WinLoseBonus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./WinLoseBonus.vue?vue&type=template&id=561a82ce\"\nimport script from \"./WinLoseBonus.vue?vue&type=script&lang=js\"\nexport * from \"./WinLoseBonus.vue?vue&type=script&lang=js\"\nimport style0 from \"./WinLoseBonus.vue?vue&type=style&index=0&id=561a82ce&prod&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"activity-winlose\"},[_c('div',{staticClass:\"title\"},[_c('img',{attrs:{\"src\":`static/images/yt999/activity/t_04_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/activity/t_04_enUS.png'`}})]),_vm._v(\" \"),_c('div',{staticClass:\"rules\"},[_c('img',{staticClass:\"ico\",attrs:{\"src\":\"static/images/yt999/activity/8.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"label\",on:{\"click\":function($event){return _vm.openDialog('dialog-winlose-rules')}}},[_vm._v(_vm._s(_vm.$t('activity_center_0002')))])]),_vm._v(\" \"),_c('div',{staticClass:\"task-list\"},_vm._l((_vm.item.SettingList),function(mission,p){return _c('div',{key:p,staticClass:\"task-item\"},[_c('div',{staticClass:\"item-left\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t('activity_center_0037', [mission.RequiredQuantity, mission.Amount])))]),_vm._v(\" \"),_c('div',{staticClass:\"progress\"},[_c('div',{staticClass:\"progress-value\"},[_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(mission.OwnQuantity > mission.RequiredQuantity ? mission.RequiredQuantity : mission.OwnQuantity))]),_vm._v(\"\\n /\"),_c('span',{staticClass:\"total\"},[_vm._v(_vm._s(mission.RequiredQuantity))])]),_vm._v(\" \"),_c('div',{staticClass:\"line\",style:(`--percent: ${_vm.getProgressPercent(mission)}%`)})]),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.getDesc(mission)))])]),_vm._v(\" \"),_c('div',{staticClass:\"item-right\"},[(mission.OwnQuantity >= mission.RequiredQuantity && !mission.IsReceived)?_c('f7-button',{staticClass:\"btn-receive\",on:{\"click\":function($event){return _vm.receive(mission)}}},[_vm._v(_vm._s(_vm.$t('activity_center_0018')))]):(mission.OwnQuantity >= mission.RequiredQuantity && mission.IsReceived)?_c('f7-button',{staticClass:\"btn-received\"},[_vm._v(_vm._s(_vm.$t('activity_center_0005')))]):_c('f7-button',{staticClass:\"btn-details\"},[_vm._v(_vm._s(_vm.$t('activity_center_0006')))])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-rules\",attrs:{\"id\":\"dialog-winlose-rules\"},on:{\"dialog:closed\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'transparent');},\"dialog:open\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'rgba(0, 4, 7, 0.77)')}}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('activity_center_0008'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-body\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0038', [_vm.item.MissionTimeRangeType])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0010')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0011', [_vm.getGameTypeLimitDesc(_vm.item.BonusAuditGameTypes)])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0020')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0012')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\"},[_c('f7-link',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.closeDialog('dialog-winlose-rules')}}},[_vm._v(_vm._s(_vm.$t('common_close')))])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteMemberToOpenBonusBox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InviteMemberToOpenBonusBox.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./InviteMemberToOpenBonusBox.vue?vue&type=template&id=32351f9e\"\nimport script from \"./InviteMemberToOpenBonusBox.vue?vue&type=script&lang=js\"\nexport * from \"./InviteMemberToOpenBonusBox.vue?vue&type=script&lang=js\"\nimport style0 from \"./InviteMemberToOpenBonusBox.vue?vue&type=style&index=0&id=32351f9e&prod&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"activity-invite\"},[_c('div',{staticClass:\"title\"},[_c('img',{attrs:{\"src\":`static/images/yt999/activity/t_03_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/activity/t_03_enUS.png'`}})]),_vm._v(\" \"),_c('div',{staticClass:\"rules\"},[_c('img',{staticClass:\"ico\",attrs:{\"src\":\"static/images/yt999/activity/8.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"label\",on:{\"click\":function($event){return _vm.openDialog('dialog-invite-rules')}}},[_vm._v(_vm._s(_vm.$t('activity_center_0002')))])]),_vm._v(\" \"),_c('div',{staticClass:\"task-list\"},[_c('div',{staticClass:\"task-header\"},[_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('activity_center_0003')))]),_vm._v(\" \"),_c('div',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.item.OwnQuantity))])]),_vm._v(\" \"),_c('div',{staticClass:\"task-warpper\"},_vm._l((_vm.item.SettingList),function(mission,p){return _c('f7-link',{key:p,staticClass:\"task-item\",on:{\"click\":function($event){return _vm.receive(mission)}}},[_c('img',{staticClass:\"ico\",attrs:{\"src\":require(\"../../../static/images/yt999/activity/9.png\"),\"alt\":\"\"}}),_vm._v(\" \"),(mission.OwnQuantity >= mission.RequiredQuantity && !mission.IsReceived)?_c('f7-button',{staticClass:\"status btn-receive\"},[_vm._v(_vm._s(_vm.$t('activity_center_0004')))]):(mission.OwnQuantity >= mission.RequiredQuantity && mission.IsReceived)?_c('f7-button',{staticClass:\"status btn-received\"},[_vm._v(_vm._s(_vm.$t('activity_center_0005')))]):_c('f7-button',{staticClass:\"status btn-details\"},[_vm._v(_vm._s(_vm.$t('activity_center_0006')))]),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_vm._v(_vm._s(_vm.$t('activity_center_0007', [mission.RequiredQuantity])))])],1)}),1)]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-rules\",attrs:{\"id\":\"dialog-invite-rules\"},on:{\"dialog:closed\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'transparent');},\"dialog:open\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'rgba(0, 4, 7, 0.77)')}}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('activity_center_0008'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-body\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0009')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.getInviteRuleDesc()))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0010')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0011', [_vm.getGameTypeLimitDesc()])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0012')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\"},[_c('f7-link',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.closeDialog('dialog-invite-rules')}}},[_vm._v(_vm._s(_vm.$t('common_close')))])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TotalTurnoverToPlayTurnTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TotalTurnoverToPlayTurnTable.vue?vue&type=script&lang=js\"","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity-center.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./activity-center.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TotalTurnoverToPlayTurnTable.vue?vue&type=template&id=4678edc4\"\nimport script from \"./TotalTurnoverToPlayTurnTable.vue?vue&type=script&lang=js\"\nexport * from \"./TotalTurnoverToPlayTurnTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./TotalTurnoverToPlayTurnTable.vue?vue&type=style&index=0&id=4678edc4&prod&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"activity-rotate\"},[_c('div',{staticClass:\"title\"},[_c('img',{attrs:{\"src\":`static/images/yt999/activity/t_05_${_vm.$f7.params.currLang}.png`,\"onerror\":`this.onerror=''; src='../static/images/yt999/activity/t_05_enUS.png'`}})]),_vm._v(\" \"),_c('div',{staticClass:\"rules\",on:{\"click\":function($event){return _vm.openDialog('dialog-rules')}}},[_c('img',{staticClass:\"ico\",attrs:{\"src\":\"static/images/yt999/activity/8.png\",\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('activity_center_0002')))])]),_vm._v(\" \"),_c('div',{staticClass:\"task-list\"},[_c('div',{staticClass:\"task-header\"},[_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('activity_center_0027'))),_c('span',{staticClass:\"value\"},[_vm._v(_vm._s(_vm.item.OwnQuantity))])]),_vm._v(\" \"),_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('activity_center_0028'))+\" \"),_c('span',{staticClass:\"value\"},[_vm._v(\" \"+_vm._s(_vm.item.Amount))])])]),_vm._v(\" \"),_c('div',{staticClass:\"rotate-warpper\"},[_c('LuckyWheel',{ref:\"myLucky\",staticClass:\"lucky-wheel\",attrs:{\"width\":\"280px\",\"height\":\"280px\",\"prizes\":_vm.prizes,\"blocks\":_vm.blocks,\"buttons\":_vm.buttons},on:{\"start\":_vm.startCallback,\"end\":_vm.endCallback}}),_vm._v(\" \"),_c('img',{staticClass:\"bottom\",attrs:{\"src\":\"static/images/yt999/activity/12.png\",\"alt\":\"\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-result\",attrs:{\"id\":\"dialog-result\"},on:{\"dialog:closed\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'transparent');},\"dialog:open\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'rgba(0, 4, 7, 0.77)')}}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('activity_center_0029'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-body\"},[_vm._v(\"\\n \"+_vm._s(_vm.tips)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\"},[_c('f7-link',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.closeDialog('dialog-result')}}},[_vm._v(_vm._s(_vm.$t('common_close')))]),_vm._v(\" \"),_c('f7-link',{staticClass:\"btn-agent\",on:{\"click\":function($event){return _vm.tryAgain()}}},[_vm._v(_vm._s(_vm.$t('activity_center_0030')))])],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-rules\",attrs:{\"id\":\"dialog-rules\"},on:{\"dialog:closed\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'transparent');},\"dialog:open\":function($event){_vm.$f7.$('.dialog-backdrop').css('background', 'rgba(0, 4, 7, 0.77)')}}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('activity_center_0008'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-body\"},[_c('ul',{staticClass:\"list\"},[_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0031')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0032')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0033')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0010')))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0011', [_vm.getGameTypeLimitDesc()])))]),_vm._v(\" \"),_c('li',{staticClass:\"item\"},[_vm._v(_vm._s(_vm.$t('activity_center_0012')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-footer\"},[_c('f7-link',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.closeDialog('dialog-rules')}}},[_vm._v(_vm._s(_vm.$t('common_close')))])],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./activity-center.vue?vue&type=template&id=39a84572&scoped=true\"\nimport script from \"./activity-center.vue?vue&type=script&lang=js\"\nexport * from \"./activity-center.vue?vue&type=script&lang=js\"\nimport style0 from \"./activity-center.vue?vue&type=style&index=0&id=39a84572&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39a84572\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-activity-center\",attrs:{\"no-toolbar\":\"\",\"name\":\"activity-center\"},on:{\"page:init\":_vm.onPageInit,\"page:beforein\":_vm.onPageBeforeIn}},[_c('f7-navbar',{attrs:{\"back-link\":\"\",\"sliding\":false}},[_c('f7-nav-title',{attrs:{\"sliding\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('activity_center_0001'))+\"\\n \")]),_vm._v(\" \"),(_vm.getLoginState)?_c('f7-nav-right',{staticClass:\"nav-balance\"}):_vm._e()],1),_vm._v(\" \"),_c('van-tabs',{staticClass:\"tabs-activity\",attrs:{\"color\":\"#4076fa\",\"title-active-color\":\"#4076fa\",\"sticky\":\"\",\"swipeable\":\"\",\"line-width\":\"50\",\"offset-top\":\"45\"},on:{\"change\":_vm.changeTab},model:{value:(_vm.tabActiveId),callback:function ($$v) {_vm.tabActiveId=$$v},expression:\"tabActiveId\"}},_vm._l((_vm.activityTabs),function(item){return _c('van-tab',{key:item.MissionID,staticClass:\"tab-content\",attrs:{\"name\":item.MissionID,\"title-class\":'title-' + item.MissionID},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',[_vm._v(_vm._s(_vm.missionNameMaps[item.MissionType])+_vm._s(_vm.getTaskRange(item)))])]},proxy:true}],null,true)},[_vm._v(\" \"),(_vm.tabActiveId == item.MissionID)?_c(item.MissionType,{tag:\"component\",attrs:{\"item\":item},on:{\"receive\":function($event){return _vm.loadActivityList()},\"refreshPoint\":_vm.setPoint}}):_vm._e()],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./winloserp.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./winloserp.vue?vue&type=script&lang=js\"","\r\n \r\n \r\n \r\n
\r\n
{{ $t('winloserp_0002') }} ({{dateRangeDesc}})
\r\n
{{totalStatistics| formatCurrency}}
\r\n
--
\r\n
\r\n
{{ $t('winloserp_0003') }}
\r\n
{{ $t('winloserp_0004') }} + {{ $t('winloserp_0005') }} + {{ $t('winloserp_0006') }} + {{ $t('winloserp_0007') }}
\r\n
\r\n
\r\n
\r\n
\r\n
{{ $t('winloserp_0008') }}: \r\n
{{winloseInfo[0].TotalEffectiveBetAmount| formatCurrency}} \r\n
\r\n
\r\n
\r\n
{{ $t('winloserp_0004') }}: \r\n
{{winloseInfo[0].TotalWinlose| formatCurrency}} \r\n
\r\n
\r\n
\r\n
{{ $t('winloserp_0009') }}: \r\n
{{totalDeposit| formatCurrency}} \r\n
\r\n
\r\n
\r\n
{{ $t('winloserp_0010') }}: \r\n
{{totalWithdrawal| formatCurrency}} \r\n
\r\n
\r\n
\r\n
{{ $t('winloserp_0005') }}: \r\n
{{totalBonus| formatCurrency}} \r\n
\r\n
\r\n
\r\n
{{ $t('winloserp_0006') }}: \r\n
{{winloseInfo[1].Data.TotalCommission| formatCurrency}} \r\n
\r\n
\r\n
\r\n
{{ $t('winloserp_0007') }}: \r\n
{{winloseInfo[1].Data.TotalRecommendBonus| formatCurrency}} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ $t('winloserp_0011') }} \r\n
\r\n
\r\n \r\n \r\n \r\n\r\n\r\n","import { render, staticRenderFns } from \"./winloserp.vue?vue&type=template&id=e0e20192&scoped=true\"\nimport script from \"./winloserp.vue?vue&type=script&lang=js\"\nexport * from \"./winloserp.vue?vue&type=script&lang=js\"\nimport style0 from \"./winloserp.vue?vue&type=style&index=0&id=e0e20192&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e0e20192\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-page',{staticClass:\"page-winloserp\",attrs:{\"no-toolbar\":\"\",\"no-swipeback\":\"\",\"name\":\"winloserp\"}},[_c('f7-navbar',{attrs:{\"title\":_vm.$t('winloserp_0001'),\"back-link\":\"\",\"no-hariline\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"top\"},[_c('div',{staticClass:\"statistics\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('winloserp_0002'))+\" (\"+_vm._s(_vm.dateRangeDesc)+\")\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('div',{staticClass:\"amount\"},[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalStatistics)))]):_c('div',{staticClass:\"amount\"},[_vm._v(\"--\")]),_vm._v(\" \"),_c('div',{staticClass:\"desc\"},[_c('p',{staticClass:\"p1\"},[_vm._v(_vm._s(_vm.$t('winloserp_0003')))]),_vm._v(\" \"),_c('p',{staticClass:\"p2\"},[_vm._v(_vm._s(_vm.$t('winloserp_0004'))+\" + \"+_vm._s(_vm.$t('winloserp_0005'))+\" + \"+_vm._s(_vm.$t('winloserp_0006'))+\" + \"+_vm._s(_vm.$t('winloserp_0007')))])])]),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('div',{},[_c('span',[_vm._v(_vm._s(_vm.$t('winloserp_0008'))+\":\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.winloseInfo[0].TotalEffectiveBetAmount)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',{},[_c('span',[_vm._v(_vm._s(_vm.$t('winloserp_0004'))+\":\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.winloseInfo[0].TotalWinlose)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',[_c('span',[_vm._v(_vm._s(_vm.$t('winloserp_0009'))+\":\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalDeposit)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',{},[_c('span',[_vm._v(_vm._s(_vm.$t('winloserp_0010'))+\":\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalWithdrawal)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',[_c('span',[_vm._v(_vm._s(_vm.$t('winloserp_0005'))+\":\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.totalBonus)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',[_c('span',[_vm._v(_vm._s(_vm.$t('winloserp_0006'))+\":\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.winloseInfo[1].Data.TotalCommission)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1),_vm._v(\" \"),_c('div',[_c('span',[_vm._v(_vm._s(_vm.$t('winloserp_0007'))+\":\")]),_vm._v(\" \"),(_vm.showWinlose)?_c('span',[_vm._v(_vm._s(_vm._f(\"formatCurrency\")(_vm.winloseInfo[1].Data.TotalRecommendBonus)))]):_c('preloader',{staticStyle:{\"float\":\"left\",\"margin\":\"0\"},attrs:{\"list\":4}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('div',{staticClass:\"list inline-labels\"},[_c('ul',[_c('li',[_c('a',{staticClass:\"item-link smart-select smart-select-init\",attrs:{\"data-open-in\":\"sheet\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.winloseParams.DateRangeType),expression:\"winloseParams.DateRangeType\"}],attrs:{\"name\":\"select-funds\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.winloseParams, \"DateRangeType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{attrs:{\"value\":\"1\"}},[_vm._v(_vm._s(_vm.$t('common_0034')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"11\"}},[_vm._v(_vm._s(_vm.$t('common_0035')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"2\"}},[_vm._v(_vm._s(_vm.$t('common_0036')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"12\"}},[_vm._v(_vm._s(_vm.$t('common_0037')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"3\"}},[_vm._v(_vm._s(_vm.$t('common_0038')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"13\"}},[_vm._v(_vm._s(_vm.$t('common_0039')))])]),_vm._v(\" \"),_c('div',{staticClass:\"item-content\"},[_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title\"},[_vm._v(_vm._s(_vm.$t('common_0040'))+\":\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-after\"},[_vm._v(_vm._s(_vm.$t('common_0034')))])])])])])])]),_vm._v(\" \"),_c('div',{staticClass:\"copy\"},[_c('span',{staticClass:\"copybutton\",on:{\"click\":function($event){return _vm.getMemberWinloseRP()}}},[_vm._v(_vm._s(_vm.$t('winloserp_0011')))])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { getCookie, setCookie } from \"../config/utils\";\r\nimport HomePage from \"../pages/home.vue\";\r\nimport GameCategoryList from \"../pages/game-category-list.vue\";\r\nimport FishList from \"../pages/fish-list.vue\";\r\n\r\nimport NotFoundPage from \"../pages/404.vue\";\r\n\r\nimport LoginPage from \"../pages/login/login.vue\";\r\nimport MemberCenter from \"../pages/users/member-center.vue\";\r\nimport Register from \"../pages/register/register.vue\";\r\nimport LimitedAccess from \"../pages/limited-access.vue\";\r\nimport DailyTask from \"../pages/promotion/daily-task.vue\";\r\nimport Activity from \"../pages/promotion/activity.vue\";\r\nimport ApplyActivity from \"../pages/promotion/apply-activity.vue\";\r\n\r\nimport Deposit from \"../pages/users/account-center/deposit.vue\";\r\nimport DepositCS from \"../pages/users/account-center/online-cs.vue\";\r\nimport InitOnlinePayment from \"../pages/users/account-center/init-online-payment.vue\";\r\nimport Transfer from \"../pages/users/account-center/transfer.vue\";\r\nimport Safe from \"../pages/users/account-center/safe.vue\";\r\nimport SafeBox from \"../pages/users/account-center/safe-box.vue\";\r\nimport SafeRecords from \"../pages/users/account-center/safe-records.vue\";\r\nimport Withdraw from \"../pages/users/account-center/withdraw.vue\";\r\nimport VipClub from \"../pages/users/account-center/vip-club.vue\";\r\nimport GameList from \"../pages/egame/game-list.vue\";\r\n\r\nimport ActivitiesSearch from \"../pages/users/self-service/activities-search.vue\";\r\nimport ActivitiesReview from \"../pages/users/self-service/activities-review.vue\";\r\nimport BuffetPromotion from \"../pages/users/self-service/buffet-promotion.vue\";\r\nimport DailyTaskSearch from \"../pages/users/self-service/daily-task-search.vue\";\r\nimport DailyTaskReview from \"../pages/users/self-service/daily-task-review.vue\";\r\nimport PointCenter from \"../pages/users/self-service/point-center.vue\";\r\nimport SignIn from \"../pages/users/self-service/sign-in.vue\";\r\nimport VipBirthdayGift from \"../pages/users/self-service/vip-birthday-gift.vue\";\r\nimport VipHolidayGift from \"../pages/users/self-service/vip-holiday-gift.vue\";\r\nimport VipMonthlySalary from \"../pages/users/self-service/vip-monthly-salary.vue\";\r\n\r\nimport DepositSearch from \"../pages/users/account-list/deposit-search.vue\";\r\nimport DepositRecords from \"../pages/users/account-list/deposit-records.vue\";\r\nimport WithdrawSearch from \"../pages/users/account-list/withdraw-search.vue\";\r\nimport WithdrawRecords from \"../pages/users/account-list/withdraw-records.vue\";\r\nimport FundsSearch from \"../pages/users/account-list/funds-search.vue\";\r\nimport FundsRecords from \"../pages/users/account-list/funds-records.vue\";\r\nimport IntegralSearch from \"../pages/users/account-list/integral-search.vue\";\r\nimport IntegralRecords from \"../pages/users/account-list/integral-records.vue\";\r\nimport ActivitySearch from \"../pages/users/account-list/activity-search.vue\";\r\nimport ActivityRecords from \"../pages/users/account-list/activity-records.vue\";\r\nimport BettingSearch from \"../pages/users/account-list/betting-search.vue\";\r\nimport BettingRecords from \"../pages/users/account-list/betting-records.vue\";\r\n\r\nimport MemberInfo from \"../pages/users/personal-information/member-info.vue\";\r\nimport BankInfo from \"../pages/users/personal-information/bank-info.vue\";\r\nimport ChangeLoginPwd from \"../pages/users/personal-information/change-login-pwd.vue\";\r\nimport ChangeSecurityPwd from \"../pages/users/personal-information/change-security-pwd.vue\";\r\nimport SetEncrypted from \"../pages/users/personal-information/set-encrypted.vue\";\r\n\r\nimport MessageCenter from \"../pages/users/message/message-center.vue\";\r\n\r\nimport RegisterAgent from \"../pages/register/register-agent.vue\";\r\n\r\nimport LoadingGame from \"../pages/loading-game.vue\";\r\n\r\nimport Referrer from \"../pages/users/account-list/referrer.vue\";\r\nimport Share from \"../pages/users/account-list/referrer-share.vue\";\r\nimport ReferrerReceiveSearch from \"../pages/users/account-list/referrer-receive-search.vue\";\r\nimport ReferrerReceiveRecords from \"../pages/users/account-list/referrer-receive-records.vue\";\r\nimport ReferrerDirectReportSearch from \"../pages/users/account-list/referrer-directReport-search.vue\";\r\nimport ReferrerDirectReportRecords from \"../pages/users/account-list/referrer-directReport-records.vue\";\r\nimport ReferrerPerformanceSearch from \"../pages/users/account-list/referrer-performance-search.vue\";\r\nimport ReferrerPerformanceRecords from \"../pages/users/account-list/referrer-performance-records.vue\";\r\n\r\nimport ActivityCenter from \"../pages/activity/activity-center.vue\";\r\n\r\nimport WinLoseRP from \"../pages/users/account-list/winloserp.vue\";\r\n\r\nvar routes = [\r\n {\r\n name: \"home\",\r\n path: \"/\",\r\n component: HomePage,\r\n },\r\n {\r\n name: \"game-category-list\",\r\n path: \"/game-category-list/:GameType/\",\r\n component: GameCategoryList,\r\n },\r\n {\r\n name: \"fish-list\",\r\n path: \"/fish-list/\",\r\n component: FishList,\r\n },\r\n {\r\n name: \"app\",\r\n path: \"/app/\",\r\n redirect: function (route, resolve, reject) {\r\n const app = this.app;\r\n window.localStorage.setItem(\"r\", route.query.r ? route.query.r : \"\");\r\n window.localStorage.setItem(\"cid\", route.query.cid ? route.query.cid : \"\");\r\n if (route.query.zz) {\r\n if ((route.query.zz = \"\")) {\r\n setCookie(\"zz\", \"\", -1);\r\n } else {\r\n setCookie(\"zz\", route.query.zz, 7);\r\n }\r\n }\r\n if (route.query.device) {\r\n window.localStorage.setItem(\"device\", route.query.device);\r\n window.localStorage.setItem(\"d\", route.query.d);\r\n window.localStorage.setItem(\"appVer\", route.query.appVer ? route.query.appVer : \"\");\r\n app.isApp = route.query.device;\r\n //resolve('/');\r\n }\r\n //else reject();\r\n resolve(\"/\");\r\n },\r\n },\r\n {\r\n name: \"login\",\r\n path: \"/login/\",\r\n component: LoginPage,\r\n },\r\n {\r\n name: \"member-center\",\r\n path: \"/member-center/\",\r\n component: MemberCenter,\r\n routes: [\r\n {\r\n name: \"deposit\",\r\n path: \"/deposit/\",\r\n //component: Deposit,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: Deposit });\r\n }\r\n },\r\n },\r\n {\r\n name: \"online-cs\",\r\n path: \"/online-cs/\",\r\n component: DepositCS,\r\n // async(routeTo, routeFrom, resolve, reject) {\r\n // if (!getCookie(\"zz\")) {\r\n // resolve({ component: LoginPage });\r\n // } else {\r\n // resolve({ component: DepositCS });\r\n // }\r\n // },\r\n },\r\n {\r\n name: \"init-online-payment\",\r\n path: \"/init-online-payment/:Info/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: InitOnlinePayment });\r\n }\r\n },\r\n },\r\n {\r\n name: \"transfer\",\r\n path: \"/transfer/\",\r\n //component: Transfer,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: Transfer });\r\n }\r\n },\r\n },\r\n {\r\n name: \"safe\",\r\n path: \"/safe/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: Safe });\r\n }\r\n },\r\n },\r\n {\r\n name: \"safeBox\",\r\n path: \"/safeBox/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: SafeBox });\r\n }\r\n },\r\n },\r\n {\r\n name: \"safe-records\",\r\n path: \"/safe-records/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: SafeRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer\",\r\n path: \"/referrer/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: Referrer });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer-share\",\r\n path: \"/referrer-share/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: Share });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer-receive-search\",\r\n path: \"/referrer-receive-search/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ReferrerReceiveSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer-receive-records\",\r\n path: \"/referrer-receive-records/:Info/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ReferrerReceiveRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer-directReport-search\",\r\n path: \"/referrer-directReport-search/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ReferrerDirectReportSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer-directReport-records\",\r\n path: \"/referrer-directReport-records/:Info/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ReferrerDirectReportRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer-performance-search\",\r\n path: \"/referrer-performance-search/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ReferrerPerformanceSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"referrer-performance-records\",\r\n path: \"/referrer-performance-records/:Info/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ReferrerPerformanceRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"withdraw\",\r\n path: \"/withdraw/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: Withdraw });\r\n }\r\n },\r\n },\r\n {\r\n name: \"vip-club\",\r\n path: \"/vip-club/\",\r\n component: VipClub,\r\n },\r\n {\r\n name: \"sign-in\",\r\n path: \"/sign-in/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: SignIn });\r\n }\r\n },\r\n },\r\n {\r\n name: \"vip-monthly-salary\",\r\n path: \"/vip-monthly-salary/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: VipMonthlySalary });\r\n }\r\n },\r\n },\r\n {\r\n name: \"vip-birthday-gift\",\r\n path: \"/vip-birthday-gift/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: VipBirthdayGift });\r\n }\r\n },\r\n },\r\n {\r\n name: \"vip-holiday-gift\",\r\n path: \"/vip-holiday-gift/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: VipHolidayGift });\r\n }\r\n },\r\n },\r\n {\r\n name: \"buffet-promotion\",\r\n path: \"/buffet-promotion/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: BuffetPromotion });\r\n }\r\n },\r\n },\r\n {\r\n name: \"point-center\",\r\n path: \"/point-center/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: PointCenter });\r\n }\r\n },\r\n },\r\n {\r\n name: \"daily-task-search\",\r\n path: \"/daily-task-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: DailyTaskSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"daily-task-review\",\r\n path: \"/daily-task-review/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: DailyTaskReview });\r\n }\r\n },\r\n },\r\n {\r\n name: \"activities-search\",\r\n path: \"/activities-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ActivitiesSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"activities-review\",\r\n path: \"/activities-review/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ActivitiesReview });\r\n }\r\n },\r\n },\r\n {\r\n name: \"deposit-search\",\r\n path: \"/deposit-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: DepositSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"deposit-records\",\r\n path: \"/deposit-records/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: DepositRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"withdraw-search\",\r\n path: \"/withdraw-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: WithdrawSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"withdraw-records\",\r\n path: \"/withdraw-records/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: WithdrawRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"funds-search\",\r\n path: \"/funds-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: FundsSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"funds-records\",\r\n path: \"/funds-records/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: FundsRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"integral-search\",\r\n path: \"/integral-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: IntegralSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"integral-records\",\r\n path: \"/integral-records/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: IntegralRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"activity-search\",\r\n path: \"/activity-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ActivitySearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"activity-records\",\r\n path: \"/activity-records/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ActivityRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"betting-search\",\r\n path: \"/betting-search/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: BettingSearch });\r\n }\r\n },\r\n },\r\n {\r\n name: \"betting-records\",\r\n path: \"/betting-records/:Info/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: BettingRecords });\r\n }\r\n },\r\n },\r\n {\r\n name: \"member-info\",\r\n path: \"/member-info\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: MemberInfo });\r\n }\r\n },\r\n },\r\n {\r\n name: \"bank-info\",\r\n path: \"/bank-info/:Id/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: BankInfo });\r\n }\r\n },\r\n },\r\n {\r\n name: \"change-login-pwd\",\r\n path: \"/change-login-pwd/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ChangeLoginPwd });\r\n }\r\n },\r\n },\r\n {\r\n name: \"change-security-pwd\",\r\n path: \"/change-security-pwd/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: ChangeSecurityPwd });\r\n }\r\n },\r\n },\r\n {\r\n name: \"set-encrypted\",\r\n path: \"/set-encrypted/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: SetEncrypted });\r\n }\r\n },\r\n },\r\n {\r\n name: \"message-center\",\r\n path: \"/message-center/:Id/\",\r\n //component: Withdraw,\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: MessageCenter });\r\n }\r\n },\r\n },\r\n {\r\n name: \"winloserp\",\r\n path: \"/winloserp/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: WinLoseRP });\r\n }\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n name: \"activity-center\",\r\n path: \"/activity-center/:missionId/\",\r\n component: ActivityCenter,\r\n },\r\n {\r\n name: \"register\",\r\n path: \"/register/\",\r\n component: Register,\r\n },\r\n {\r\n name: \"limited-access\",\r\n path: \"/limited-access/\",\r\n component: LimitedAccess,\r\n },\r\n {\r\n name: \"daily-task\",\r\n path: \"/daily-task/\",\r\n component: DailyTask,\r\n },\r\n {\r\n name: \"activity\",\r\n path: \"/activity/\",\r\n component: Activity,\r\n routes: [\r\n {\r\n name: \"apply\",\r\n path: \"/apply/:Id/\",\r\n component: ApplyActivity,\r\n },\r\n ],\r\n },\r\n {\r\n name: \"game-list\",\r\n path: \"/game-list/:Id/\",\r\n component: GameList,\r\n },\r\n {\r\n name: \"register-agent\",\r\n path: \"/register-agent/\",\r\n component: RegisterAgent,\r\n },\r\n {\r\n name: \"loading-game\",\r\n path: \"/loading-game/\",\r\n async(routeTo, routeFrom, resolve, reject) {\r\n if (!getCookie(\"zz\")) {\r\n resolve({ component: LoginPage });\r\n } else {\r\n resolve({ component: LoadingGame });\r\n }\r\n },\r\n },\r\n {\r\n path: \"(.*)\",\r\n redirect: \"/\",\r\n },\r\n];\r\n\r\nexport default routes;\r\n","\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ $t(\"member_center_0018\") }}\r\n \r\n chevron_right \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ item.name }} \r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"common_0041\") }} \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t(\"common_0002\") }} \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{ $t(\"dialog_change_currency\") }}\r\n \r\n chevron_right \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ code }} \r\n \r\n \r\n \r\n \r\n \r\n {{ $t(\"common_0041\") }} \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{ $t(\"common_0002\") }} \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ missionNameMaps[item.MissionType] }} {{ getTaskRange(item) }}
\r\n
\r\n {{ item.MaxBonusAmount }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
{{ $t(\"dialog_activity_0002\") }}
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n\r\n\r\n","import { render, staticRenderFns } from \"./app.vue?vue&type=template&id=3450587a&scoped=true\"\nimport script from \"./app.vue?vue&type=script&lang=js\"\nexport * from \"./app.vue?vue&type=script&lang=js\"\nimport style0 from \"./app.vue?vue&type=style&index=0&id=3450587a&prod&lang=less&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3450587a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('f7-app',{class:'lang-' + _vm.f7params.currLang,attrs:{\"params\":_vm.f7params}},[_c('f7-views',{staticClass:\"safe-areas\",attrs:{\"tabs\":\"\"}},[_c('f7-view',{staticClass:\"safe-areas\",attrs:{\"url\":\"/\",\"animate\":false,\"preloadPreviousPage\":false,\"iosSwipeBack\":false,\"iosSwipeBackAnimateShadow\":false,\"iosSwipeBackAnimateOpacity\":false,\"mdSwipeBack\":false,\"mdSwipeBackAnimateShadow\":false,\"mdSwipeBackAnimateOpacity\":false,\"auroraSwipeBack\":false,\"auroraSwipeBackAnimateShadow\":false,\"auroraSwipeBackAnimateOpacity\":false,\"main\":true,\"master-detail-breakpoint\":800},on:{\"view:init\":_vm.onViewInit}}),_vm._v(\" \"),_c('div',{staticClass:\"placeholder\"}),_vm._v(\" \"),_c('f7-toolbar',{staticClass:\"toolbar-footer\",attrs:{\"tabbar\":\"\",\"labels\":\"\",\"bottom\":\"\"}},[_c('f7-link',{attrs:{\"tab-link\":\"\",\"no-fast-click\":\"\",\"href\":\"/\",\"ignore-cache\":true,\"tab-link-active\":_vm.currentRouterUrl === `home`}},[_c('img',{class:_vm.currentRouterUrl === `home` ? 'img-home-act' : 'img-home'}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$t(\"app_0004\")))])]),_vm._v(\" \"),(_vm.getLoginState)?_c('f7-link',{attrs:{\"tab-link\":\"\",\"no-fast-click\":\"\",\"href\":false},on:{\"click\":function($event){return _vm.openActions()}}},[_c('img',{staticClass:\"img-balance\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$t(\"app_0001\")))])]):_c('f7-link',{attrs:{\"tab-link\":\"\",\"no-fast-click\":\"\",\"href\":false},on:{\"click\":function($event){return _vm.openActions()}}},[_c('img',{staticClass:\"img-login\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$t(\"app_0002\")))])]),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"\",\"no-fast-click\":\"\",\"href\":\"/activity/\",\"tab-link-active\":_vm.currentRouterUrl === `promotion`}},[(_vm.currentRouterUrl === `promotion`)?_c('img',{staticClass:\"img-promotion-act\"}):_c('img',{staticClass:\"img-promotion\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$t(\"app_0003\")))])]),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"\",\"no-fast-click\":\"\",\"href\":\"/member-center/online-cs/\",\"ignore-cache\":true,\"tab-link-active\":_vm.currentRouterUrl === `online-cs`}},[(_vm.currentRouterUrl === `online-cs`)?_c('img',{staticClass:\"img-service-act\"}):_c('img',{staticClass:\"img-service\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$t(\"app_0005\")))])]),_vm._v(\" \"),_c('f7-link',{attrs:{\"tab-link\":\"\",\"no-fast-click\":\"\",\"href\":\"/member-center/\",\"ignore-cache\":true,\"tab-link-active\":_vm.currentRouterUrl === `member-center`}},[(_vm.currentRouterUrl === `member-center`)?_c('img',{staticClass:\"img-vip-act\"}):_c('img',{staticClass:\"img-vip\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.$t(\"app_0006\")))])])],1),_vm._v(\" \"),_c('f7-actions',{staticClass:\"actions-common actions-service\",attrs:{\"grid\":true,\"opened\":_vm.actionServiceOpened},on:{\"actions:closed\":function($event){_vm.actionServiceOpened = false}}},[_c('f7-actions-group',[_c('f7-actions-button',{attrs:{\"close\":false}},[_c('f7-link',{class:{ 'link-active-qq': _vm.actionQQ },attrs:{\"href\":false,\"icon\":\"iconfont icon-qq\",\"icon-size\":\"24\",\"text\":_vm.$t('app_0007')},on:{\"click\":function($event){return _vm.openServicePopup('qq')}}})],1),_vm._v(\" \"),_c('f7-actions-button',[_c('f7-link',{attrs:{\"href\":false,\"icon\":\"iconfont icon-kefu1\",\"icon-size\":\"24\",\"text\":_vm.$t('app_0008')},on:{\"click\":_vm.onlineCustomService}})],1),_vm._v(\" \"),_c('f7-actions-button',{attrs:{\"close\":false}},[_c('f7-link',{class:{ 'link-active-wechat': _vm.actionWechat },attrs:{\"href\":false,\"icon\":\"iconfont icon-weixin1\",\"icon-size\":\"24\",\"text\":_vm.$t('app_0009')},on:{\"click\":function($event){return _vm.openServicePopup('wechat')}}})],1)],1)],1),_vm._v(\" \"),_c('f7-actions',{staticClass:\"actions-common actions-promotion\",attrs:{\"grid\":true,\"opened\":_vm.actionPromotionOpened},on:{\"actions:closed\":function($event){_vm.actionPromotionOpened = false}}},[_c('f7-actions-group',[_c('f7-actions-button',[_c('f7-link',{attrs:{\"href\":\"/daily-task/\",\"icon\":\"iconfont icon-renwu\",\"icon-size\":\"24\",\"text\":_vm.$t('app_0010')}})],1),_vm._v(\" \"),_c('f7-actions-button',[_c('f7-link',{attrs:{\"href\":\"/activity/\",\"icon\":\"iconfont icon-youhuiquan\",\"icon-size\":\"26\",\"text\":_vm.$t('app_0011', [_vm.f7params.name])}})],1),_vm._v(\" \"),_c('f7-actions-button',[_c('f7-link',{attrs:{\"icon\":\"iconfont icon-youhuiquan1\",\"icon-size\":\"26\",\"text\":_vm.$t('app_0015')},on:{\"click\":function($event){return _vm.goPage('member-center')}}})],1)],1)],1),_vm._v(\" \"),_c('f7-actions',{staticClass:\"actions-common actions-transfer\",attrs:{\"grid\":true,\"opened\":_vm.actionTransferOpened},on:{\"actions:closed\":function($event){_vm.actionTransferOpened = false}}},[_c('f7-actions-group',[_c('f7-actions-button',[_c('f7-link',{attrs:{\"href\":\"/member-center/deposit/\",\"icon\":\"iconfont icon-cunkuan\",\"icon-size\":\"26\",\"text\":_vm.$t('app_0012')}})],1),_vm._v(\" \"),_c('f7-actions-button',[_c('f7-link',{attrs:{\"href\":\"/member-center/withdraw/\",\"icon\":\"iconfont icon-qukuan\",\"icon-size\":\"26\",\"text\":_vm.$t('app_0013')}})],1),_vm._v(\" \"),_c('f7-actions-button',[_c('f7-link',{attrs:{\"href\":\"/member-center/transfer/\",\"icon\":\"iconfont icon-zhuanzhang\",\"icon-size\":\"26\",\"text\":_vm.$t('app_0014')}})],1)],1)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"onlineCustom-popup\",attrs:{\"opened\":_vm.onlinePopupOpened},on:{\"popup:closed\":function($event){_vm.onlinePopupOpened = false}}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":_vm.$t('app_0016')}},[_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"close_round\")])])],1)],1),_vm._v(\" \"),_c('iframe',{staticClass:\"iframe-onlineCustom\",attrs:{\"src\":_vm.onlineCustomUrl,\"frameborder\":\"0\"}})],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-change-language\",attrs:{\"id\":\"dialog-change-language\"},on:{\"dialog:closed\":_vm.balanceCloseEvent,\"dialog:open\":_vm.balanceOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"member_center_0018\"))+\"\\n \"),_c('f7-link',{on:{\"click\":function($event){return _vm.closeDialog('dialog-change-language')}}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-balance\"},[_c('div',{staticClass:\"block-content\"},_vm._l((_vm.langList),function(item){return _c('f7-row',{key:item.code,staticClass:\"item-balance\",class:`item-balance-${9999}`},[_c('f7-col',{staticClass:\"icon-col\",attrs:{\"width\":\"25\"}},[_c('span',{class:['icon-lang', 'icon-' + item.code]})]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"45\"}},[_c('span',[_c('span',[_vm._v(_vm._s(item.name))])])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': item.code == _vm.f7params.currLang },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.changeToTargetLanguage(item)}}},[_vm._v(_vm._s(_vm.$t(\"common_0041\")))])],1)],1)],1)],1)}),1),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-recharge border-radius-left\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.closeDialog('dialog-change-language')}}},[_vm._v(_vm._s(_vm.$t(\"common_0002\")))])],1)],1)],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-change-language\",attrs:{\"id\":\"dialog-change-currency\"},on:{\"dialog:closed\":_vm.balanceCloseEvent,\"dialog:open\":_vm.balanceOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},[_c('div',{staticClass:\"dialog-title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"dialog_change_currency\"))+\"\\n \"),_c('f7-link',{on:{\"click\":function($event){return _vm.closeDialog('dialog-change-currency')}}},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"chevron_right\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog-text\"},[_c('f7-block',{staticClass:\"block-balance\"},[_c('div',{staticClass:\"block-content\"},_vm._l((_vm.currencyList),function(code){return _c('f7-row',{key:code,staticClass:\"item-balance\",class:`item-balance-${code}`},[_c('f7-col',{staticClass:\"icon-col\",attrs:{\"width\":\"25\"}},[_c('span',{class:['icon-currency', 'icon-' + code]})]),_vm._v(\" \"),_c('f7-col',{staticClass:\"col-balance\",attrs:{\"width\":\"45\"}},[_c('span',[_c('span',[_vm._v(_vm._s(code))])])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"30\"}},[_c('f7-row',{staticClass:\"btn-group\"},[_c('f7-col',[_c('f7-button',{staticClass:\"btn-transfer\",class:{ 'btn-disabled': code == _vm.currency },attrs:{\"raised\":\"\",\"fill\":\"\"},on:{\"click\":function($event){return _vm.changeCurrency(code)}}},[_vm._v(_vm._s(_vm.$t(\"common_0041\")))])],1)],1)],1)],1)}),1),_vm._v(\" \"),_c('f7-block-footer',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"tag\":\"span\"}},[_c('f7-button',{staticClass:\"btn-recharge border-radius-left\",attrs:{\"large\":\"\"},on:{\"click\":function($event){return _vm.closeDialog('dialog-change-currency')}}},[_vm._v(_vm._s(_vm.$t(\"common_0002\")))])],1)],1)],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"dialog dialog-activity\",attrs:{\"id\":\"dialog-activity\"},on:{\"dialog:closed\":function($event){return _vm.balanceCloseEvent($event, 'dialog-activity')},\"dialog:open\":_vm.balanceOpenEvent}},[_c('div',{staticClass:\"dialog-inner\"},_vm._l((_vm.missionList),function(item){return _c('div',{key:item.MissionID,staticClass:\"activity-item\"},[_c('img',{staticClass:\"ico\",attrs:{\"src\":`../static/images/yt999/activity/${item.MissionType}.png`,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"item-mid\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.missionNameMaps[item.MissionType])+\" \"+_vm._s(_vm.getTaskRange(item)))]),_vm._v(\" \"),_c('i18n',{staticClass:\"desc\",attrs:{\"path\":\"dialog_activity_0001\",\"tag\":\"div\"}},[_c('span',{staticClass:\"amount\"},[_vm._v(_vm._s(item.MaxBonusAmount))])])],1),_vm._v(\" \"),_c('f7-link',{staticClass:\"btn-details\",attrs:{\"text\":_vm.$t('dialog_activity_0003')},on:{\"click\":function($event){return _vm.goActivityPage(item)}}})],1)}),0),_vm._v(\" \"),_c('div',{staticClass:\"dialog-bottom\"},[_c('f7-checkbox',{attrs:{\"checked\":_vm.unShow},on:{\"change\":function($event){return _vm.setTodayNotDisplay()}}}),_vm._v(\" \"),_c('div',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t(\"dialog_activity_0002\")))])],1),_vm._v(\" \"),_c('div',{staticClass:\"btn-close\",on:{\"click\":function($event){return _vm.closeDialog('dialog-activity')}}},[_c('img',{staticClass:\"icon-close\",attrs:{\"src\":require(\"../static/images/yt999/activity/close.png\")}})])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Import Vue\r\nimport Vue from \"vue\";\r\nimport store from \"../store/\";\r\nimport vueSeamlessScroll from \"vue-seamless-scroll\"; //滚动\r\nimport \"../service/filter\";\r\nimport VueClipboard from \"vue-clipboard2\";\r\nimport { Tab, Tabs } from \"vant\";\r\nimport VueLuckyCanvas from \"@lucky-canvas/vue\";\r\nimport i18n, { setup } from \"../locales/index\";\r\nimport { getCookie } from \"../config/utils\";\r\n\r\n// Import Framework7\r\nimport Framework7 from \"framework7/framework7.esm.bundle.js\";\r\n\r\n// Import Framework7-Vue Plugin\r\nimport Framework7Vue from \"framework7-vue/framework7-vue.esm.bundle.js\";\r\n\r\n// Import Framework7 Styles\r\nimport \"framework7/css/framework7.bundle.css\";\r\n\r\n// Import Icons and App Custom Styles\r\nimport \"framework7-icons/css/framework7-icons.css\";\r\nimport \"../css/icons.css\";\r\nimport \"../css/custom-size.less\";\r\nimport \"../css/f7-variables.less\";\r\nimport \"../css/animation.less\";\r\nimport \"../fonts/font_common/iconfont.css\";\r\nimport \"../fonts/font_logo/iconfont.js\";\r\nimport \"../css/app.less\";\r\nimport \"../css/common.less\";\r\nimport \"../css/popup.less\";\r\nimport \"../css/media.less\";\r\n\r\nimport \"vant/lib/tabs/style\";\r\n\r\n// Import App Component\r\nimport App from \"../components/app.vue\";\r\n\r\nimport common from \"../service/common\";\r\n\r\n// Init Framework7-Vue Plugin\r\nFramework7.use(Framework7Vue);\r\nVue.use(vueSeamlessScroll);\r\nVue.use(VueClipboard);\r\nVue.use(Tab);\r\nVue.use(Tabs);\r\nVue.use(VueLuckyCanvas);\r\n\r\nVue.prototype.changeLanguage = setup;\r\nVue.prototype.common = common;\r\n\r\nString.prototype.Format = function (args) {\r\n if (arguments.length > 0) {\r\n var result = this;\r\n if (arguments.length == 1 && typeof args == \"object\") {\r\n for (var key in args) {\r\n var reg = new RegExp(\"({\" + key + \"})\", \"g\");\r\n result = result.replace(reg, args[key]);\r\n }\r\n } else {\r\n for (var i = 0; i < arguments.length; i++) {\r\n if (arguments[i] == undefined) {\r\n return \"\";\r\n } else {\r\n var reg = new RegExp(\"({[\" + i + \"]})\", \"g\");\r\n result = result.replace(reg, arguments[i]);\r\n }\r\n }\r\n }\r\n return result;\r\n } else {\r\n return this;\r\n }\r\n};\r\n\r\nvar setWindowVariable = function () {\r\n const { top } = document.querySelector(\"body\").getBoundingClientRect();\r\n const desktopElem = document.querySelector(\".device-desktop\");\r\n if (desktopElem) {\r\n desktopElem.setAttribute(\"style\", `--window-top:${top}px;`);\r\n }\r\n};\r\n\r\n// Init App\r\nwindow.app = new Vue({\r\n el: \"#app\",\r\n i18n,\r\n store,\r\n render: (h) => h(App),\r\n // Register App Component\r\n components: {\r\n app: App,\r\n },\r\n mounted() {\r\n setWindowVariable();\r\n },\r\n});\r\n\r\nwindow.onresize = function () {\r\n setWindowVariable();\r\n};\r\n"],"sourceRoot":""}