{"version":3,"file":"js/7112-7e65883cde7fd740c5ed.js","mappings":"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","sources":["webpack://lionwheel/./app/javascript/src/helpers/locale.js","webpack://lionwheel/./app/javascript/src/helpers/utils.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/app.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/card.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/cookie.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/image-input.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/menu.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/offcanvas.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/toggle.js","webpack://lionwheel/./app/javascript/src/metronic/js/components/util.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/aside-menu.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/aside-toggle.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/aside.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/brand.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/content.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/footer.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/header-menu.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/header-topbar.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/header.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/base/subheader.js","webpack://lionwheel/./app/javascript/src/metronic/js/layout/initialize.js"],"sourcesContent":["import { i18n } from \"./i18n\";\n\nexport const isRTL = () => i18n.locale === 'he' || i18n.locale === 'ar'\n","export const getParameterByName = (name, url) => {\n if (!url) url = window.location.href\n name = name.replace(/[\\[\\]]/g, '\\\\$&')\n const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)')\n const results = regex.exec(url)\n if (!results) return null\n if (!results[2]) return ''\n return decodeURIComponent(results[2].replace(/\\+/g, ' '))\n}\n\nexport const toggleField = (value, element, container) => {\n if (isEmpty(value)) {\n $(container).addClass('collapse')\n } else {\n $(element).text(value)\n $(container).removeClass('collapse')\n }\n}\n\nexport const toggleFieldWithHtml = (toggleValue, htmlValue, element, container) => {\n if (isEmpty(toggleValue)) {\n $(container).addClass('collapse')\n } else {\n $(element).html(htmlValue)\n $(container).removeClass('collapse')\n }\n}\n\nexport const isEmpty = subject => {\n if ((typeof subject) === 'object' && subject !== null) return Object.keys(subject).length === 0\n return (!subject || subject.length === 0)\n}\n\nexport const csrfToken = () => {\n return document.head.querySelector('meta[name=\"csrf-token\"]')?.content\n}\n\nexport const isTrue = val => (val === 'true' || val === true)\n\nexport const updateQueryStringParameter = (uri, key, value) => {\n let re = new RegExp(\"([?&])\" + key + \"=.*?(&|$)\", \"i\");\n let separator = uri.indexOf('?') !== -1 ? \"&\" : \"?\";\n if (uri.match(re)) {\n return uri.replace(re, '$1' + key + \"=\" + value + '$2');\n }\n else {\n return uri + separator + key + \"=\" + value;\n }\n}\n\nexport const truncate = (str, num) => (str.length > num ? str.slice(0, num) + \"...\" : str)\n\nexport const getCookie = (cname) => {\n const name = cname + '='\n const decodedCookie = decodeURIComponent(document.cookie)\n const ca = decodedCookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) === ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) === 0) {\n return c.substring(name.length, c.length)\n }\n }\n return ''\n}\n\nexport const ajaxForm = (form, onSuccess) => {\n form.submit((e) => {\n e.preventDefault()\n\n const form = $(e.currentTarget)\n const data = form.serialize();\n $.ajax({\n type: \"post\",\n url: form.attr('action'),\n data: data,\n dataType: \"json\",\n success: onSuccess\n })\n })\n}\n\nexport const fetchJSON = (url, method, data) => {\n return new Promise(function (resolve, reject) {\n $.ajax({\n type: method,\n url: url,\n data: data,\n dataType : \"json\",\n contentType: \"application/json;\",\n headers: {\n 'X-CSRF-Token': csrfToken()\n }\n }).then(\n (response) => { resolve(response); },\n (error) => { reject([]); }\n );\n });\n}\n\nexport const randHex = (len = 10) => {\n const maxlen = 8\n const min = Math.pow(16, Math.min(len, maxlen) - 1)\n const max = Math.pow(16, Math.min(len, maxlen)) - 1\n const n = Math.floor( Math.random() * (max - min + 1) ) + min\n let r = n.toString(16)\n while ( r.length < len ) {\n r = r + randHex( len - maxlen );\n }\n return r;\n};\n\nexport const dataOrNA = (str, stub = '') => ((!str || str === '') ? stub : str)\n\nexport const capitalize = (str) => (str.charAt(0).toUpperCase() + str.slice(1))\n\nexport const getPropertyByPath = (obj, path) => (path.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj))\n\nexport const setPropertyByPath = (obj, path, value) => {\n const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n\n // modifies the initial object\n // handles [] at the end for multiple values\n pathArray.reduce((acc, key, i) => {\n if (acc[key] === undefined && i !== pathArray.length - 1) acc[key] = {}\n if (i !== pathArray.length - 1) return acc[key]\n\n acc[key] = path.endsWith('[]') ? (acc[key] || []).concat([value]) : value\n }, obj)\n}\n\nexport const selectedIds = objects => {\n let ids = [];\n objects.forEach((v, i) => {\n if (v.checked)\n ids = [...ids, i]\n })\n return ids\n}\n\nexport const checkedCount = objects => {\n let count = 0\n objects.forEach(v => {\n if (v.checked) { count++ }\n })\n return count\n}\n\nexport const availableContentSpace = () => {\n const content = document.getElementById('kt_content')\n const footer = document.getElementById('kt_footer')\n const contentVerticalPaddings = parseInt(getComputedStyle(content).paddingBottom ) + parseInt(getComputedStyle(content).paddingTop)\n\n return window.innerHeight - content.offsetTop - (footer ? footer.offsetHeight : 0) - contentVerticalPaddings\n}\n\nexport const parseFloatOr0 = val => {\n const parsed = parseFloat(val)\n\n return isNaN(parsed) || parsed === Infinity ? 0 : parsed\n}\n\nexport const generateHexColor = () => (\n '#' + (Math.random() * 0xFFFFFF << 0).toString(16).padStart(6, '0')\n)\n\nexport const debounce = (callback, wait) => {\n let timeoutId = null;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => { callback(...args) }, wait)\n };\n}\n\nexport const initEscButtonEvent = (elem) => {\n $(document).keyup(function(e) {\n if (e.key === \"Escape\")\n $(elem).trigger('click');\n });\n}\n\nexport const fetchConfig = async () => {\n const res = await gon.mainConfig\n return await res.clone().json()\n}\n\nexport const groupBy = (array, keyFunc) => (\n array.reduce((result, currentValue) => {\n const key = typeof keyFunc === 'function' ? keyFunc(currentValue) : currentValue[keyFunc];\n (result[key] = result[key] || []).push(currentValue);\n return result;\n }, {})\n)\n\nexport const getFormData = (obj = {}, formData = new FormData(), key = '') => {\n if (!([Array, File, Object].includes(obj.constructor))) {\n return formData;\n }\n\n // Handle File recursive\n if (obj instanceof File) {\n formData.append(key, obj);\n return formData;\n }\n\n for (const prop in obj) {\n // Validate value type\n if (obj[prop] && !([String, Number, Boolean, Array, Object, File].includes(obj[prop].constructor))) {\n continue;\n }\n\n // Set deep index of prop\n const deepKey = key ? key + `[${prop}]` : prop;\n\n // Handle array\n if (Array.isArray(obj[prop])) {\n obj[prop].forEach((item, index) => {\n getFormData(item, formData, `${deepKey}[${index}]`);\n })\n continue;\n }\n\n (typeof obj[prop] === 'object' && obj[prop] && obj[prop].constructor === Object)\n ? getFormData(obj[prop], formData, deepKey) // Handle object\n : formData.append(deepKey, [undefined, null].includes(obj[prop]) ? '' : obj[prop]) // Handle string, number, boolean\n }\n\n return formData;\n}\n\nexport const formatPhoneNumber = (phone) => ((phone && phone.length > 0) ? phone.replace(/[^0-9+\\-]/g, '') : '');\n\nexport const initMultiSelectWithSearch = elem => {\n if (!elem || !elem.length) return\n\n var Utils = $.fn.select2.amd.require('select2/utils');\n var Dropdown = $.fn.select2.amd.require('select2/dropdown');\n var DropdownSearch = $.fn.select2.amd.require('select2/dropdown/search');\n var CloseOnSelect = $.fn.select2.amd.require('select2/dropdown/closeOnSelect');\n var AttachBody = $.fn.select2.amd.require('select2/dropdown/attachBody');\n var dropdownAdapter = Utils.Decorate(Utils.Decorate(Utils.Decorate(Dropdown, DropdownSearch), CloseOnSelect), AttachBody);\n var currentOptions = elem.data('select2').options.options;\n var newOptions = { ...currentOptions, dropdownAdapter: dropdownAdapter };\n\n elem.select2('destroy').select2(newOptions);\n}\n\nexport const arrayXor = (...arrays) => {\n const countMap = new Map();\n\n arrays.flat().forEach(num => {\n countMap.set(num, (countMap.get(num) || 0) + 1);\n });\n\n return [...countMap.entries()]\n .filter(([_, count]) => count === 1)\n .map(([num]) => num);\n}\n","'use strict'\n\n// Component Definition\nvar KTApp = (function () {\n /** @type {object} colors State colors **/\n let settings = {}\n\n const initTooltip = function (el) {\n const theme = el.data('theme') ? 'tooltip-' + el.data('theme') : ''\n const width = el.data('width') == 'auto' ? 'tooltop-auto-width' : ''\n const trigger = el.data('trigger') ? el.data('trigger') : 'hover'\n\n $(el).tooltip({\n trigger: trigger,\n template: '
\\\n
\\\n
\\\n
'\n })\n }\n\n const initTooltips = function () {\n // init bootstrap tooltips\n $('[data-toggle=\"tooltip\"]').each(function () {\n initTooltip($(this))\n })\n }\n\n const initPopover = function (el) {\n const skin = el.data('skin') ? 'popover-' + el.data('skin') : ''\n const triggerValue = el.data('trigger') ? el.data('trigger') : 'hover'\n\n el.popover({\n trigger: triggerValue,\n template: '\\\n
\\\n
\\\n

\\\n
\\\n
'\n })\n }\n\n const initPopovers = function () {\n // init bootstrap popover\n $('[data-toggle=\"popover\"]').each(function () {\n initPopover($(this))\n })\n }\n\n const initFileInput = function () {\n // init bootstrap popover\n $('.custom-file-input').on('change', function () {\n const fileName = $(this).val()\n $(this).next('.custom-file-label').addClass('selected').html(fileName)\n })\n }\n\n const initScroll = function () {\n $('[data-scroll=\"true\"]').each(function () {\n const el = $(this)\n\n KTUtil.scrollInit(this, {\n mobileNativeScroll: true,\n handleWindowResize: true,\n rememberPosition: (el.data('remember-position') == 'true')\n })\n })\n }\n\n const initAlerts = function () {\n // init bootstrap popover\n $('body').on('click', '[data-close=alert]', function () {\n $(this).closest('.alert').hide()\n })\n }\n\n const initCard = function (el, options) {\n // init card tools\n var el = $(el)\n const card = new KTCard(el[0], options)\n }\n\n const initCards = function () {\n // init card tools\n $('[data-card=\"true\"]').each(function () {\n const el = $(this)\n const options = {}\n\n if (el.data('data-card-initialized') !== true) {\n initCard(el, options)\n el.data('data-card-initialized', true)\n }\n })\n }\n\n const initStickyCard = function () {\n if (typeof Sticky === 'undefined') {\n return\n }\n\n const sticky = new Sticky('[data-sticky=\"true\"]')\n }\n\n const initAbsoluteDropdown = function (context) {\n let dropdownMenu\n\n if (!context) {\n return\n }\n\n $('body').on('show.bs.dropdown', context, function (e) {\n \tdropdownMenu = $(e.target).find('.dropdown-menu')\n \t$('body').append(dropdownMenu.detach())\n \tdropdownMenu.css('display', 'block')\n \tdropdownMenu.position({\n \t\tmy: 'right top',\n \t\tat: 'right bottom',\n \t\tof: $(e.relatedTarget)\n \t})\n }).on('hide.bs.dropdown', context, function (e) {\n \t$(e.target).append(dropdownMenu.detach())\n \tdropdownMenu.hide()\n })\n }\n\n const initAbsoluteDropdowns = function () {\n $('body').on('show.bs.dropdown', function (e) {\n // e.target is always parent (contains toggler and menu)\n const $toggler = $(e.target).find(\"[data-attach='body']\")\n if ($toggler.length === 0) {\n return\n }\n const $dropdownMenu = $(e.target).find('.dropdown-menu')\n // save detached menu\n const $detachedDropdownMenu = $dropdownMenu.detach()\n // save reference to detached menu inside data of toggler\n $toggler.data('dropdown-menu', $detachedDropdownMenu)\n\n $('body').append($detachedDropdownMenu)\n $detachedDropdownMenu.css('display', 'block')\n $detachedDropdownMenu.position({\n my: 'right top',\n at: 'right bottom',\n of: $(e.relatedTarget)\n })\n })\n\n $('body').on('hide.bs.dropdown', function (e) {\n const $toggler = $(e.target).find(\"[data-attach='body']\")\n if ($toggler.length === 0) {\n return\n }\n // access to reference of detached menu from data of toggler\n const $detachedDropdownMenu = $toggler.data('dropdown-menu')\n // re-append detached menu inside parent\n $(e.target).append($detachedDropdownMenu.detach())\n // hide dropdown\n $detachedDropdownMenu.hide()\n })\n }\n\n return {\n init: function (settingsArray) {\n if (settingsArray) {\n settings = settingsArray\n }\n\n KTApp.initComponents()\n },\n\n initComponents: function () {\n initScroll()\n initTooltips()\n initPopovers()\n initAlerts()\n initFileInput()\n initCards()\n initStickyCard()\n initAbsoluteDropdowns()\n },\n\n initTooltips: function () {\n initTooltips()\n },\n\n initTooltip: function (el) {\n initTooltip(el)\n },\n\n initPopovers: function () {\n initPopovers()\n },\n\n initPopover: function (el) {\n initPopover(el)\n },\n\n initCard: function (el, options) {\n initCard(el, options)\n },\n\n initCards: function () {\n initCards()\n },\n\n initSticky: function () {\n initSticky()\n },\n\n initAbsoluteDropdown: function (context) {\n initAbsoluteDropdown(context)\n },\n\n block: function (target, options) {\n var el = $(target)\n\n options = $.extend(true, {\n opacity: 0.05,\n overlayColor: '#000000',\n type: '',\n size: '',\n state: 'primary',\n centerX: true,\n centerY: true,\n message: '',\n shadow: true,\n width: 'auto'\n }, options)\n\n let html\n const version = options.type ? 'spinner-' + options.type : ''\n const state = options.state ? 'spinner-' + options.state : ''\n const size = options.size ? 'spinner-' + options.size : ''\n const spinner = ' 0) {\n const classes = 'blockui ' + (options.shadow === false ? 'blockui' : '')\n\n html = '
' + options.message + '' + spinner + '
'\n\n var el = document.createElement('div')\n\n $('body').prepend(el)\n KTUtil.addClass(el, classes)\n el.innerHTML = html\n options.width = KTUtil.actualWidth(el) + 10\n KTUtil.remove(el)\n\n if (target == 'body') {\n html = '
' + options.message + '' + spinner + '
'\n }\n } else {\n html = spinner\n }\n\n const params = {\n message: html,\n centerY: options.centerY,\n centerX: options.centerX,\n css: {\n top: '30%',\n left: '50%',\n border: '0',\n padding: '0',\n backgroundColor: 'none',\n width: options.width\n },\n overlayCSS: {\n backgroundColor: options.overlayColor,\n opacity: options.opacity,\n cursor: 'wait',\n zIndex: (target == 'body' ? 1100 : 10)\n },\n onUnblock: function () {\n if (el && el[0]) {\n KTUtil.css(el[0], 'position', '')\n KTUtil.css(el[0], 'zoom', '')\n }\n }\n }\n\n if (target == 'body') {\n params.css.top = '50%'\n $.blockUI(params)\n } else {\n var el = $(target)\n el.block(params)\n }\n },\n\n unblock: function (target) {\n if (target && target != 'body') {\n $(target).unblock()\n } else {\n $.unblockUI()\n }\n },\n\n blockPage: function (options) {\n return KTApp.block('body', options)\n },\n\n unblockPage: function () {\n return KTApp.unblock('body')\n },\n\n getSettings: function () {\n return settings\n }\n }\n}())\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTApp\n}\n\n// Initialize KTApp class on document ready\n$(document).ready(function () {\n KTApp.init(KTAppSettings)\n})\n\n// CSS3 Transitions only after page load(.page-loading class added to body tag and remove with JS on page load)\nwindow.onload = function () {\n const result = KTUtil.getByTagName('body')\n if (result && result[0]) {\n KTUtil.removeClass(result[0], 'page-loading')\n }\n}\n","\"use strict\";\n\n// Component Definition\nvar KTCard = function(elementId, options) {\n // Main object\n var the = this;\n var init = false;\n\n // Get element object\n var element = KTUtil.getById(elementId);\n var body = KTUtil.getBody();\n\n if (!element) {\n return;\n }\n\n // Default options\n var defaultOptions = {\n toggleSpeed: 400,\n sticky: {\n releseOnReverse: false,\n offset: 300,\n zIndex: 101\n }\n };\n\n ////////////////////////////\n // ** Private Methods ** //\n ////////////////////////////\n\n var Plugin = {\n /**\n * Construct\n */\n\n construct: function(options) {\n if (KTUtil.data(element).has('card')) {\n the = KTUtil.data(element).get('card');\n } else {\n // reset menu\n Plugin.init(options);\n\n // build menu\n Plugin.build();\n\n KTUtil.data(element).set('card', the);\n }\n\n return the;\n },\n\n /**\n * Init card\n */\n init: function(options) {\n the.element = element;\n the.events = [];\n\n // merge default and user defined options\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\n the.header = KTUtil.child(element, '.card-header');\n the.footer = KTUtil.child(element, '.card-footer');\n\n if (KTUtil.child(element, '.card-body')) {\n the.body = KTUtil.child(element, '.card-body');\n } else if (KTUtil.child(element, '.form')) {\n the.body = KTUtil.child(element, '.form');\n }\n },\n\n /**\n * Build Form Wizard\n */\n build: function() {\n // Remove\n var remove = KTUtil.find(the.header, '[data-card-tool=remove]');\n if (remove) {\n KTUtil.addEvent(remove, 'click', function(e) {\n e.preventDefault();\n Plugin.remove();\n });\n }\n\n // Reload\n var reload = KTUtil.find(the.header, '[data-card-tool=reload]');\n if (reload) {\n KTUtil.addEvent(reload, 'click', function(e) {\n e.preventDefault();\n Plugin.reload();\n });\n }\n\n // Toggle\n var toggle = KTUtil.find(the.header, '[data-card-tool=toggle]');\n if (toggle) {\n KTUtil.addEvent(toggle, 'click', function(e) {\n e.preventDefault();\n Plugin.toggle();\n });\n }\n },\n\n /**\n * Enable stickt mode\n */\n initSticky: function() {\n var lastScrollTop = 0;\n var offset = the.options.sticky.offset;\n\n if (!the.header) {\n return;\n }\n\n\t window.addEventListener('scroll', Plugin.onScrollSticky);\n },\n\n\t /**\n\t * Window scroll handle event for sticky card\n\t */\n\t onScrollSticky: function(e) {\n\t\t var offset = the.options.sticky.offset;\n\n\t\t if(isNaN(offset)) return;\n\n\t\t var st = KTUtil.getScrollTop();\n\n\t\t if (st >= offset && KTUtil.hasClass(body, 'card-sticky-on') === false) {\n\t\t\t Plugin.eventTrigger('stickyOn');\n\n\t\t\t KTUtil.addClass(body, 'card-sticky-on');\n\n\t\t\t Plugin.updateSticky();\n\n\t\t } else if ((st*1.5) <= offset && KTUtil.hasClass(body, 'card-sticky-on')) {\n\t\t\t // Back scroll mode\n\t\t\t Plugin.eventTrigger('stickyOff');\n\n\t\t\t KTUtil.removeClass(body, 'card-sticky-on');\n\n\t\t\t Plugin.resetSticky();\n\t\t }\n\t },\n\n updateSticky: function() {\n if (!the.header) {\n return;\n }\n\n var top;\n\n if (KTUtil.hasClass(body, 'card-sticky-on')) {\n if (the.options.sticky.position.top instanceof Function) {\n top = parseInt(the.options.sticky.position.top.call(this, the));\n } else {\n top = parseInt(the.options.sticky.position.top);\n }\n\n var left;\n if (the.options.sticky.position.left instanceof Function) {\n left = parseInt(the.options.sticky.position.left.call(this, the));\n } else {\n left = parseInt(the.options.sticky.position.left);\n }\n\n var right;\n if (the.options.sticky.position.right instanceof Function) {\n right = parseInt(the.options.sticky.position.right.call(this, the));\n } else {\n right = parseInt(the.options.sticky.position.right);\n }\n\n KTUtil.css(the.header, 'z-index', the.options.sticky.zIndex);\n KTUtil.css(the.header, 'top', top + 'px');\n KTUtil.css(the.header, 'left', left + 'px');\n KTUtil.css(the.header, 'right', right + 'px');\n }\n },\n\n resetSticky: function() {\n if (!the.header) {\n return;\n }\n\n if (KTUtil.hasClass(body, 'card-sticky-on') === false) {\n KTUtil.css(the.header, 'z-index', '');\n KTUtil.css(the.header, 'top', '');\n KTUtil.css(the.header, 'left', '');\n KTUtil.css(the.header, 'right', '');\n }\n },\n\n /**\n * Remove card\n */\n remove: function() {\n if (Plugin.eventTrigger('beforeRemove') === false) {\n return;\n }\n\n // Remove tooltips\n var tooltips;\n if ( tooltips = document.querySelectorAll('.tooltip.show') ) {\n $(tooltips).tooltip('dispose');\n }\n\n KTUtil.remove(element);\n\n Plugin.eventTrigger('afterRemove');\n },\n\n /**\n * Set content\n */\n setContent: function(html) {\n if (html) {\n the.body.innerHTML = html;\n }\n },\n\n /**\n * Get body\n */\n getBody: function() {\n return the.body;\n },\n\n /**\n * Get self\n */\n getSelf: function() {\n return element;\n },\n\n /**\n * Reload\n */\n reload: function() {\n Plugin.eventTrigger('reload');\n },\n\n /**\n * Toggle\n */\n toggle: function() {\n if (KTUtil.hasClass(element, 'card-collapse') || KTUtil.hasClass(element, 'card-collapsed')) {\n Plugin.expand();\n } else {\n Plugin.collapse();\n }\n },\n\n /**\n * Collapse\n */\n collapse: function() {\n if (Plugin.eventTrigger('beforeCollapse') === false) {\n return;\n }\n\n KTUtil.slideUp(the.body, the.options.toggleSpeed, function() {\n Plugin.eventTrigger('afterCollapse');\n });\n\n KTUtil.addClass(element, 'card-collapse');\n },\n\n /**\n * Expand\n */\n expand: function() {\n if (Plugin.eventTrigger('beforeExpand') === false) {\n return;\n }\n\n KTUtil.slideDown(the.body, the.options.toggleSpeed, function() {\n Plugin.eventTrigger('afterExpand');\n });\n\n KTUtil.removeClass(element, 'card-collapse');\n KTUtil.removeClass(element, 'card-collapsed');\n },\n\n /**\n * Trigger events\n */\n eventTrigger: function(name) {\n //KTUtil.triggerCustomEvent(name);\n for (var i = 0; i < the.events.length; i++) {\n var event = the.events[i];\n if (event.name == name) {\n if (event.one == true) {\n if (event.fired == false) {\n the.events[i].fired = true;\n return event.handler.call(this, the);\n }\n } else {\n return event.handler.call(this, the);\n }\n }\n }\n },\n\n addEvent: function(name, handler, one) {\n the.events.push({\n name: name,\n handler: handler,\n one: one,\n fired: false\n });\n\n return the;\n }\n };\n\n //////////////////////////\n // ** Public Methods ** //\n //////////////////////////\n\n /**\n * Set default options\n */\n\n the.setDefaults = function(options) {\n defaultOptions = options;\n };\n\n /**\n * Remove card\n */\n the.remove = function() {\n return Plugin.remove(html);\n };\n\n /**\n * Init sticky card\n */\n the.initSticky = function() {\n return Plugin.initSticky();\n };\n\n /**\n * Rerender sticky layout\n */\n the.updateSticky = function() {\n return Plugin.updateSticky();\n };\n\n /**\n * Reset the sticky\n */\n the.resetSticky = function() {\n return Plugin.resetSticky();\n };\n\n\t/**\n\t * Destroy sticky card\n\t */\n\tthe.destroySticky = function() {\n\t\tPlugin.resetSticky();\n\t\twindow.removeEventListener('scroll', Plugin.onScrollSticky);\n\t};\n\n /**\n * Reload card\n */\n the.reload = function() {\n return Plugin.reload();\n };\n\n /**\n * Set card content\n */\n the.setContent = function(html) {\n return Plugin.setContent(html);\n };\n\n /**\n * Toggle card\n */\n the.toggle = function() {\n return Plugin.toggle();\n };\n\n /**\n * Collapse card\n */\n the.collapse = function() {\n return Plugin.collapse();\n };\n\n /**\n * Expand card\n */\n the.expand = function() {\n return Plugin.expand();\n };\n\n /**\n * Get cardbody\n * @returns {jQuery}\n */\n the.getBody = function() {\n return Plugin.getBody();\n };\n\n /**\n * Get cardbody\n * @returns {jQuery}\n */\n the.getSelf = function() {\n return Plugin.getSelf();\n };\n\n /**\n * Attach event\n */\n the.on = function(name, handler) {\n return Plugin.addEvent(name, handler);\n };\n\n /**\n * Attach event that will be fired once\n */\n the.one = function(name, handler) {\n return Plugin.addEvent(name, handler, true);\n };\n\n // Construct plugin\n Plugin.construct.apply(the, [options]);\n\n return the;\n};\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTCard;\n}\n","\"use strict\";\n// DOCS: https://javascript.info/cookie\n\n// Component Definition\nvar KTCookie = function() {\n return {\n // returns the cookie with the given name,\n // or undefined if not found\n getCookie: function(name) {\n var matches = document.cookie.match(new RegExp(\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\n ));\n return matches ? decodeURIComponent(matches[1]) : undefined;\n },\n // Please note that a cookie value is encoded,\n // so getCookie uses a built-in decodeURIComponent function to decode it.\n setCookie: function(name, value, options) {\n if (!options) {\n options = {};\n }\n\n options = Object.assign({}, {path: '/'}, options);\n\n if (options.expires instanceof Date) {\n options.expires = options.expires.toUTCString();\n }\n\n var updatedCookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\n\n for (var optionKey in options) {\n if (!options.hasOwnProperty(optionKey)) {\n continue;\n }\n updatedCookie += \"; \" + optionKey;\n var optionValue = options[optionKey];\n if (optionValue !== true) {\n updatedCookie += \"=\" + optionValue;\n }\n }\n\n document.cookie = updatedCookie;\n },\n // To delete a cookie, we can call it with a negative expiration date:\n deleteCookie: function(name) {\n setCookie(name, \"\", {\n 'max-age': -1\n })\n }\n }\n}();\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTCookie;\n}\n","\"use strict\";\n\n// Component Definition \nvar KTImageInput = function(elementId, options) {\n // Main object\n var the = this;\n var init = false;\n\n // Get element object\n var element = KTUtil.getById(elementId);\n var body = KTUtil.getBody();\n\n if (!element) {\n return;\n }\n\n // Default options\n var defaultOptions = {\n editMode: false\n };\n\n ////////////////////////////\n // ** Private Methods ** //\n ////////////////////////////\n\n var Plugin = {\n /**\n * Construct\n */\n\n construct: function(options) {\n if (KTUtil.data(element).has('imageinput')) {\n the = KTUtil.data(element).get('imageinput');\n } else {\n // reset menu\n Plugin.init(options);\n\n // build menu\n Plugin.build();\n\n KTUtil.data(element).set('imageinput', the);\n }\n\n return the;\n },\n\n /**\n * Init avatar\n */\n init: function(options) {\n the.element = element;\n the.events = [];\n\n the.input = KTUtil.find(element, 'input[type=\"file\"]');\n the.wrapper = KTUtil.find(element, '.image-input-wrapper');\n the.cancel = KTUtil.find(element, '[data-action=\"cancel\"]');\n the.remove = KTUtil.find(element, '[data-action=\"remove\"]');\n the.src = KTUtil.css(the.wrapper, 'backgroundImage');\n the.hidden = KTUtil.find(element, 'input[type=\"hidden\"]');\n\n // merge default and user defined options\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\n },\n\n /**\n * Build\n */\n build: function() {\n // Handle change\n KTUtil.addEvent(the.input, 'change', function(e) {\n e.preventDefault();\n\n\t if (the.input && the.input.files && the.input.files[0]) {\n\t var reader = new FileReader();\n\t reader.onload = function(e) {\n\t KTUtil.css(the.wrapper, 'background-image', 'url('+e.target.result +')');\n\t }\n\t reader.readAsDataURL(the.input.files[0]);\n\n\t KTUtil.addClass(the.element, 'image-input-changed');\n KTUtil.removeClass(the.element, 'image-input-empty');\n\n // Fire change event\n Plugin.eventTrigger('change');\n\t }\n });\n\n // Handle cancel\n KTUtil.addEvent(the.cancel, 'click', function(e) {\n e.preventDefault();\n\n // Fire cancel event\n Plugin.eventTrigger('cancel');\n\n\t KTUtil.removeClass(the.element, 'image-input-changed');\n KTUtil.removeClass(the.element, 'image-input-empty');\n\t KTUtil.css(the.wrapper, 'background-image', the.src);\n\t the.input.value = \"\";\n\n if (the.hidden) {\n the.hidden.value = \"0\";\n }\n });\n\n // Handle remove\n KTUtil.addEvent(the.remove, 'click', function(e) {\n e.preventDefault();\n\n // Fire cancel event\n Plugin.eventTrigger('remove');\n\n\t KTUtil.removeClass(the.element, 'image-input-changed');\n KTUtil.addClass(the.element, 'image-input-empty');\n\t KTUtil.css(the.wrapper, 'background-image', \"none\");\n\t the.input.value = \"\";\n\n if (the.hidden) {\n the.hidden.value = \"1\";\n }\n });\n },\n\n /**\n * Trigger events\n */\n eventTrigger: function(name) {\n //KTUtil.triggerCustomEvent(name);\n for (var i = 0; i < the.events.length; i++) {\n var event = the.events[i];\n if (event.name == name) {\n if (event.one == true) {\n if (event.fired == false) {\n the.events[i].fired = true;\n return event.handler.call(this, the);\n }\n } else {\n return event.handler.call(this, the);\n }\n }\n }\n },\n\n addEvent: function(name, handler, one) {\n the.events.push({\n name: name,\n handler: handler,\n one: one,\n fired: false\n });\n\n return the;\n }\n };\n\n //////////////////////////\n // ** Public Methods ** //\n //////////////////////////\n\n /**\n * Set default options\n */\n\n the.setDefaults = function(options) {\n defaultOptions = options;\n };\n\n /**\n * Attach event\n */\n the.on = function(name, handler) {\n return Plugin.addEvent(name, handler);\n };\n\n /**\n * Attach event that will be fired once\n */\n the.one = function(name, handler) {\n return Plugin.addEvent(name, handler, true);\n };\n\n // Construct plugin\n Plugin.construct.apply(the, [options]);\n\n return the;\n};\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTImageInput;\n}\n","\"use strict\";\n\n// Component Definition\nvar KTMenu = function(elementId, options) {\n // Main object\n var the = this;\n var init = false;\n\n // Get element object\n var element = KTUtil.getById(elementId);\n var body = KTUtil.getBody();\n\n if (!element) {\n return;\n }\n\n // Default options\n var defaultOptions = {\n // scrollable area with Perfect Scroll\n scroll: {\n rememberPosition: false\n },\n\n // accordion submenu mode\n accordion: {\n slideSpeed: 200, // accordion toggle slide speed in milliseconds\n autoScroll: false, // enable auto scrolling(focus) to the clicked menu item\n autoScrollSpeed: 1200,\n expandAll: true // allow having multiple expanded accordions in the menu\n },\n\n // dropdown submenu mode\n dropdown: {\n timeout: 500 // timeout in milliseconds to show and hide the hoverable submenu dropdown\n }\n };\n\n ////////////////////////////\n // ** Private Methods ** //\n ////////////////////////////\n\n var Plugin = {\n /**\n * Run plugin\n * @returns {KTMenu}\n */\n construct: function(options) {\n if (KTUtil.data(element).has('menu')) {\n the = KTUtil.data(element).get('menu');\n } else {\n // reset menu\n Plugin.init(options);\n\n // reset menu\n Plugin.reset();\n\n // build menu\n Plugin.build();\n\n KTUtil.data(element).set('menu', the);\n }\n\n return the;\n },\n\n /**\n * Handles submenu click toggle\n * @returns {KTMenu}\n */\n init: function(options) {\n the.events = [];\n\n the.eventHandlers = {};\n\n // merge default and user defined options\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\n\n // pause menu\n the.pauseDropdownHoverTime = 0;\n\n the.uid = KTUtil.getUniqueID();\n },\n\n update: function(options) {\n // merge default and user defined options\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\n\n // pause menu\n the.pauseDropdownHoverTime = 0;\n\n // reset menu\n Plugin.reset();\n\n the.eventHandlers = {};\n\n // build menu\n Plugin.build();\n\n KTUtil.data(element).set('menu', the);\n },\n\n reload: function() {\n // reset menu\n Plugin.reset();\n\n // build menu\n Plugin.build();\n\n // reset submenu props\n Plugin.resetSubmenuProps();\n },\n\n /**\n * Reset menu\n * @returns {KTMenu}\n */\n build: function() {\n // General accordion submenu toggle\n the.eventHandlers['event_1'] = KTUtil.on( element, '.menu-toggle', 'click', Plugin.handleSubmenuAccordion);\n\n // Dropdown mode(hoverable)\n if (Plugin.getSubmenuMode() === 'dropdown' || Plugin.isConditionalSubmenuDropdown()) {\n // dropdown submenu - hover toggle\n the.eventHandlers['event_2'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseover', Plugin.handleSubmenuDrodownHoverEnter);\n the.eventHandlers['event_3'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseout', Plugin.handleSubmenuDrodownHoverExit);\n\n // dropdown submenu - click toggle\n the.eventHandlers['event_4'] = KTUtil.on( element, '[data-menu-toggle=\"click\"] > .menu-toggle, [data-menu-toggle=\"click\"] > .menu-link .menu-toggle', 'click', Plugin.handleSubmenuDropdownClick);\n the.eventHandlers['event_5'] = KTUtil.on( element, '[data-menu-toggle=\"tab\"] > .menu-toggle, [data-menu-toggle=\"tab\"] > .menu-link .menu-toggle', 'click', Plugin.handleSubmenuDropdownTabClick);\n }\n\n // Handle general link click\n the.eventHandlers['event_6'] = KTUtil.on(element, '.menu-item > .menu-link:not(.menu-toggle):not(.menu-link-toggle-skip)', 'click', Plugin.handleLinkClick);\n\n // Init scrollable menu\n if (the.options.scroll && the.options.scroll.height) {\n Plugin.scrollInit();\n }\n },\n\n /**\n * Reset menu\n * @returns {KTMenu}\n */\n reset: function() {\n KTUtil.off( element, 'click', the.eventHandlers['event_1']);\n\n // dropdown submenu - hover toggle\n KTUtil.off( element, 'mouseover', the.eventHandlers['event_2']);\n KTUtil.off( element, 'mouseout', the.eventHandlers['event_3']);\n\n // dropdown submenu - click toggle\n KTUtil.off( element, 'click', the.eventHandlers['event_4']);\n KTUtil.off( element, 'click', the.eventHandlers['event_5']);\n\n // handle link click\n KTUtil.off(element, 'click', the.eventHandlers['event_6']);\n },\n\n /**\n * Init scroll menu\n *\n */\n scrollInit: function() {\n if ( the.options.scroll && the.options.scroll.height ) {\n KTUtil.scrollDestroy(element, true);\n KTUtil.scrollInit(element, {mobileNativeScroll: true, windowScroll: false, resetHeightOnDestroy: true, handleWindowResize: true, height: the.options.scroll.height, rememberPosition: the.options.scroll.rememberPosition});\n } else {\n KTUtil.scrollDestroy(element, true);\n }\n },\n\n /**\n * Update scroll menu\n */\n scrollUpdate: function() {\n if ( the.options.scroll && the.options.scroll.height ) {\n KTUtil.scrollUpdate(element);\n }\n },\n\n /**\n * Scroll top\n */\n scrollTop: function() {\n if ( the.options.scroll && the.options.scroll.height ) {\n KTUtil.scrollTop(element);\n }\n },\n\n /**\n * Get submenu mode for current breakpoint and menu state\n * @returns {KTMenu}\n */\n getSubmenuMode: function(el) {\n if ( KTUtil.isBreakpointUp('lg') ) {\n if (el && KTUtil.hasAttr(el, 'data-menu-toggle') && KTUtil.attr(el, 'data-menu-toggle') == 'hover') {\n return 'dropdown';\n }\n\n if ( KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\n if ( KTUtil.hasClasses(body, the.options.submenu.desktop.state.body) ) {\n return the.options.submenu.desktop.state.mode;\n } else {\n return the.options.submenu.desktop.default;\n }\n } else if ( KTUtil.isset(the.options.submenu, 'desktop') ) {\n return the.options.submenu.desktop;\n }\n } else if ( KTUtil.isBreakpointUp('md') && KTUtil.isBreakpointDown('lg') && KTUtil.isset(the.options.submenu, 'tablet') ) {\n return the.options.submenu.tablet;\n } else if ( KTUtil.isBreakpointDown('md') && KTUtil.isset(the.options.submenu, 'mobile') ) {\n return the.options.submenu.mobile;\n } else {\n return false;\n }\n },\n\n /**\n * Get submenu mode for current breakpoint and menu state\n * @returns {KTMenu}\n */\n isConditionalSubmenuDropdown: function() {\n if ( KTUtil.isBreakpointUp('lg') && KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\n return true;\n } else {\n return false;\n }\n },\n\n\n /**\n * Reset submenu attributes\n * @returns {KTMenu}\n */\n resetSubmenuProps: function(e) {\n var submenus = KTUtil.findAll(element, '.menu-submenu');\n if ( submenus ) {\n for (var i = 0, len = submenus.length; i < len; i++) {\n var submenu = submenus[0];\n\n KTUtil.css(submenu, 'display', '');\n KTUtil.css(submenu, 'overflow', '');\n\n if (submenu.hasAttribute('data-hor-direction')) {\n KTUtil.removeClass(submenu, 'menu-submenu-left');\n KTUtil.removeClass(submenu, 'menu-submenu-right');\n KTUtil.addClass(submenu, submenu.getAttribute('data-hor-direction'));\n }\n }\n }\n },\n\n /**\n * Handles submenu hover toggle\n * @returns {KTMenu}\n */\n handleSubmenuDrodownHoverEnter: function(e) {\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\n return;\n }\n\n if ( the.resumeDropdownHover() === false ) {\n return;\n }\n\n var item = this;\n\n if ( item.getAttribute('data-hover') == '1' ) {\n item.removeAttribute('data-hover');\n clearTimeout( item.getAttribute('data-timeout') );\n item.removeAttribute('data-timeout');\n }\n\n Plugin.showSubmenuDropdown(item);\n },\n\n /**\n * Handles submenu hover toggle\n * @returns {KTMenu}\n */\n handleSubmenuDrodownHoverExit: function(e) {\n if ( the.resumeDropdownHover() === false ) {\n return;\n }\n\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\n return;\n }\n\n var item = this;\n var time = the.options.dropdown.timeout;\n\n var timeout = setTimeout(function() {\n if ( item.getAttribute('data-hover') == '1' ) {\n Plugin.hideSubmenuDropdown(item, true);\n }\n }, time);\n\n item.setAttribute('data-hover', '1');\n item.setAttribute('data-timeout', timeout);\n },\n\n /**\n * Handles submenu click toggle\n * @returns {KTMenu}\n */\n handleSubmenuDropdownClick: function(e) {\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\n return;\n }\n\n var item = this.closest('.menu-item');\n\n // Trigger click event handlers\n var result = Plugin.eventTrigger('submenuToggle', this, e);\n if (result === false) {\n return;\n }\n\n if ( item.getAttribute('data-menu-submenu-mode') == 'accordion' ) {\n return;\n }\n\n if ( KTUtil.hasClass(item, 'menu-item-hover') === false ) {\n KTUtil.addClass(item, 'menu-item-open-dropdown');\n Plugin.showSubmenuDropdown(item);\n } else {\n KTUtil.removeClass(item, 'menu-item-open-dropdown' );\n Plugin.hideSubmenuDropdown(item, true);\n }\n\n e.preventDefault();\n },\n\n /**\n * Handles tab click toggle\n * @returns {KTMenu}\n */\n handleSubmenuDropdownTabClick: function(e) {\n if (Plugin.getSubmenuMode(this) === 'accordion') {\n return;\n }\n var item = this.closest('.menu-item');\n\n // Trigger click event handlers\n var result = Plugin.eventTrigger('submenuToggle', this, e);\n if (result === false) {\n return;\n }\n\n if (item.getAttribute('data-menu-submenu-mode') == 'accordion') {\n return;\n }\n\n if (KTUtil.hasClass(item, 'menu-item-hover') == false) {\n KTUtil.addClass(item, 'menu-item-open-dropdown');\n Plugin.showSubmenuDropdown(item);\n }\n\n e.preventDefault();\n },\n\n /**\n * Handles link click\n * @returns {KTMenu}\n */\n handleLinkClick: function(e) {\n var submenu = this.closest('.menu-item.menu-item-submenu');\n\n // Trigger click event handlers\n var result = Plugin.eventTrigger('linkClick', this, e);\n if (result === false) {\n return;\n }\n\n if ( submenu && Plugin.getSubmenuMode(submenu) === 'dropdown' ) {\n Plugin.hideSubmenuDropdowns();\n }\n },\n\n /**\n * Handles submenu dropdown close on link click\n * @returns {KTMenu}\n */\n handleSubmenuDropdownClose: function(e, el) {\n // exit if its not submenu dropdown mode\n if (Plugin.getSubmenuMode(el) === 'accordion') {\n return;\n }\n\n var shown = element.querySelectorAll('.menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)');\n\n // check if currently clicked link's parent item ha\n if (shown.length > 0 && KTUtil.hasClass(el, 'menu-toggle') === false && el.querySelectorAll('.menu-toggle').length === 0) {\n // close opened dropdown menus\n for (var i = 0, len = shown.length; i < len; i++) {\n Plugin.hideSubmenuDropdown(shown[0], true);\n }\n }\n },\n\n /**\n * helper functions\n * @returns {KTMenu}\n */\n handleSubmenuAccordion: function(e, el) {\n var query;\n var item = el ? el : this;\n\n // Trigger click event handlers\n var result = Plugin.eventTrigger('submenuToggle', this, e);\n if (result === false) {\n return;\n }\n\n if ( Plugin.getSubmenuMode(el) === 'dropdown' && (query = item.closest('.menu-item') ) ) {\n if (query.getAttribute('data-menu-submenu-mode') != 'accordion' ) {\n e.preventDefault();\n return;\n }\n }\n\n var li = item.closest('.menu-item');\n var submenu = KTUtil.child(li, '.menu-submenu, .menu-inner');\n\n if (KTUtil.hasClass(item.closest('.menu-item'), 'menu-item-open-always')) {\n return;\n }\n\n if ( li && submenu ) {\n e.preventDefault();\n var speed = the.options.accordion.slideSpeed;\n var hasClosables = false;\n\n if ( KTUtil.hasClass(li, 'menu-item-open') === false ) {\n // hide other accordions\n if ( the.options.accordion.expandAll === false ) {\n var subnav = item.closest('.menu-nav, .menu-subnav');\n var closables = KTUtil.children(subnav, '.menu-item.menu-item-open.menu-item-submenu:not(.menu-item-here):not(.menu-item-open-always)');\n\n if ( subnav && closables ) {\n for (var i = 0, len = closables.length; i < len; i++) {\n var el_ = closables[0];\n var submenu_ = KTUtil.child(el_, '.menu-submenu');\n if ( submenu_ ) {\n KTUtil.slideUp(submenu_, speed, function() {\n Plugin.scrollUpdate();\n KTUtil.removeClass(el_, 'menu-item-open');\n });\n }\n }\n }\n }\n\n KTUtil.slideDown(submenu, speed, function() {\n Plugin.scrollToItem(item);\n Plugin.scrollUpdate();\n\n Plugin.eventTrigger('submenuToggle', submenu, e);\n });\n\n KTUtil.addClass(li, 'menu-item-open');\n\n } else {\n KTUtil.slideUp(submenu, speed, function() {\n Plugin.scrollToItem(item);\n Plugin.scrollUpdate();\n Plugin.eventTrigger('submenuToggle', submenu, e);\n });\n\n KTUtil.removeClass(li, 'menu-item-open');\n }\n }\n },\n\n /**\n * scroll to item function\n * @returns {KTMenu}\n */\n scrollToItem: function(item) {\n // handle auto scroll for accordion submenus\n if ( KTUtil.isBreakpointUp('lg') && the.options.accordion.autoScroll && element.getAttribute('data-menu-scroll') !== '1' ) {\n KTUtil.scrollTo(item, the.options.accordion.autoScrollSpeed);\n }\n },\n\n /**\n * Hide submenu dropdown\n * @returns {KTMenu}\n */\n hideSubmenuDropdown: function(item, classAlso) {\n // remove submenu activation class\n if ( classAlso ) {\n KTUtil.removeClass(item, 'menu-item-hover');\n KTUtil.removeClass(item, 'menu-item-active-tab');\n }\n\n // clear timeout\n item.removeAttribute('data-hover');\n\n if ( item.getAttribute('data-menu-toggle-class') ) {\n KTUtil.removeClass(body, item.getAttribute('data-menu-toggle-class'));\n }\n\n var timeout = item.getAttribute('data-timeout');\n item.removeAttribute('data-timeout');\n clearTimeout(timeout);\n },\n\n /**\n * Hide submenu dropdowns\n * @returns {KTMenu}\n */\n hideSubmenuDropdowns: function() {\n var items;\n if ( items = element.querySelectorAll('.menu-item-submenu.menu-item-hover:not(.menu-item-tabs):not([data-menu-toggle=\"tab\"])') ) {\n for (var j = 0, cnt = items.length; j < cnt; j++) {\n Plugin.hideSubmenuDropdown(items[j], true);\n }\n }\n },\n\n /**\n * helper functions\n * @returns {KTMenu}\n */\n showSubmenuDropdown: function(item) {\n // close active submenus\n var list = element.querySelectorAll('.menu-item-submenu.menu-item-hover, .menu-item-submenu.menu-item-active-tab');\n\n if ( list ) {\n for (var i = 0, len = list.length; i < len; i++) {\n var el = list[i];\n if ( item !== el && el.contains(item) === false && item.contains(el) === false ) {\n Plugin.hideSubmenuDropdown(el, true);\n }\n }\n }\n\n // add submenu activation class\n KTUtil.addClass(item, 'menu-item-hover');\n\n // Change the alignment of submenu is offscreen.\n var submenu = KTUtil.find(item, '.menu-submenu');\n\n if (submenu && submenu.hasAttribute('data-hor-direction') === false) {\n if (KTUtil.hasClass(submenu, 'menu-submenu-left')) {\n submenu.setAttribute('data-hor-direction', 'menu-submenu-left');\n } else if (KTUtil.hasClass(submenu, 'menu-submenu-right')) {\n submenu.setAttribute('data-hor-direction', 'menu-submenu-right');\n }\n }\n\n if ( submenu && KTUtil.isOffscreen(submenu, 'left', 15) === true ) {\n KTUtil.removeClass(submenu, 'menu-submenu-left');\n KTUtil.addClass(submenu, 'menu-submenu-right');\n } else if ( submenu && KTUtil.isOffscreen(submenu, 'right', 15) === true ) {\n KTUtil.removeClass(submenu, 'menu-submenu-right');\n KTUtil.addClass(submenu, 'menu-submenu-left');\n }\n\n if ( item.getAttribute('data-menu-toggle-class') ) {\n KTUtil.addClass(body, item.getAttribute('data-menu-toggle-class'));\n }\n },\n\n /**\n * Handles submenu slide toggle\n * @returns {KTMenu}\n */\n createSubmenuDropdownClickDropoff: function(el) {\n var query;\n var zIndex = (query = KTUtil.child(el, '.menu-submenu') ? KTUtil.css(query, 'z-index') : 0) - 1;\n\n var dropoff = document.createElement('
');\n\n body.appendChild(dropoff);\n\n KTUtil.addEvent(dropoff, 'click', function(e) {\n e.stopPropagation();\n e.preventDefault();\n KTUtil.remove(this);\n Plugin.hideSubmenuDropdown(el, true);\n });\n },\n\n /**\n * Handles submenu hover toggle\n * @returns {KTMenu}\n */\n pauseDropdownHover: function(time) {\n var date = new Date();\n\n the.pauseDropdownHoverTime = date.getTime() + time;\n },\n\n /**\n * Handles submenu hover toggle\n * @returns {KTMenu}\n */\n resumeDropdownHover: function() {\n var date = new Date();\n\n return (date.getTime() > the.pauseDropdownHoverTime ? true : false);\n },\n\n /**\n * Reset menu's current active item\n * @returns {KTMenu}\n */\n resetActiveItem: function(item) {\n var list;\n var parents;\n\n list = element.querySelectorAll('.menu-item-active');\n\n for (var i = 0, len = list.length; i < len; i++) {\n var el = list[0];\n KTUtil.removeClass(el, 'menu-item-active');\n KTUtil.hide( KTUtil.child(el, '.menu-submenu') );\n parents = KTUtil.parents(el, '.menu-item-submenu') || [];\n\n for (var i_ = 0, len_ = parents.length; i_ < len_; i_++) {\n var el_ = parents[i];\n KTUtil.removeClass(el_, 'menu-item-open');\n KTUtil.hide( KTUtil.child(el_, '.menu-submenu') );\n }\n }\n\n // close open submenus\n if ( the.options.accordion.expandAll === false ) {\n if ( list = element.querySelectorAll('.menu-item-open') ) {\n for (var i = 0, len = list.length; i < len; i++) {\n KTUtil.removeClass(parents[0], 'menu-item-open');\n }\n }\n }\n },\n\n /**\n * Sets menu's active item\n * @returns {KTMenu}\n */\n setActiveItem: function(item) {\n // reset current active item\n Plugin.resetActiveItem();\n\n var parents = KTUtil.parents(item, '.menu-item-submenu') || [];\n for (var i = 0, len = parents.length; i < len; i++) {\n KTUtil.addClass(parents[i], 'menu-item-open');\n }\n\n KTUtil.addClass(item, 'menu-item-active');\n },\n\n /**\n * Returns page breadcrumbs for the menu's active item\n * @returns {KTMenu}\n */\n getBreadcrumbs: function(item) {\n var query;\n var breadcrumbs = [];\n var link = KTUtil.child(item, '.menu-link');\n\n breadcrumbs.push({\n text: (query = KTUtil.child(link, '.menu-text') ? query.innerHTML : ''),\n title: link.getAttribute('title'),\n href: link.getAttribute('href')\n });\n\n var parents = KTUtil.parents(item, '.menu-item-submenu');\n for (var i = 0, len = parents.length; i < len; i++) {\n var submenuLink = KTUtil.child(parents[i], '.menu-link');\n\n breadcrumbs.push({\n text: (query = KTUtil.child(submenuLink, '.menu-text') ? query.innerHTML : ''),\n title: submenuLink.getAttribute('title'),\n href: submenuLink.getAttribute('href')\n });\n }\n\n return breadcrumbs.reverse();\n },\n\n /**\n * Returns page title for the menu's active item\n * @returns {KTMenu}\n */\n getPageTitle: function(item) {\n var query;\n\n return (query = KTUtil.child(item, '.menu-text') ? query.innerHTML : '');\n },\n\n /**\n * Trigger events\n */\n eventTrigger: function(name, target, e) {\n for (var i = 0; i < the.events.length; i++ ) {\n var event = the.events[i];\n if ( event.name == name ) {\n if ( event.one == true ) {\n if ( event.fired == false ) {\n the.events[i].fired = true;\n return event.handler.call(this, target, e);\n }\n } else {\n return event.handler.call(this, target, e);\n }\n }\n }\n },\n\n addEvent: function(name, handler, one) {\n the.events.push({\n name: name,\n handler: handler,\n one: one,\n fired: false\n });\n },\n\n removeEvent: function(name) {\n if (the.events[name]) {\n delete the.events[name];\n }\n }\n };\n\n //////////////////////////\n // ** Public Methods ** //\n //////////////////////////\n\n /**\n * Set default options\n */\n\n the.setDefaults = function(options) {\n defaultOptions = options;\n };\n\n /**\n * Update scroll\n */\n the.scrollUpdate = function() {\n return Plugin.scrollUpdate();\n };\n\n /**\n * Re-init scroll\n */\n the.scrollReInit = function() {\n return Plugin.scrollInit();\n };\n\n /**\n * Scroll top\n */\n the.scrollTop = function() {\n return Plugin.scrollTop();\n };\n\n /**\n * Set active menu item\n */\n the.setActiveItem = function(item) {\n return Plugin.setActiveItem(item);\n };\n\n the.reload = function() {\n return Plugin.reload();\n };\n\n the.update = function(options) {\n return Plugin.update(options);\n };\n\n /**\n * Set breadcrumb for menu item\n */\n the.getBreadcrumbs = function(item) {\n return Plugin.getBreadcrumbs(item);\n };\n\n /**\n * Set page title for menu item\n */\n the.getPageTitle = function(item) {\n return Plugin.getPageTitle(item);\n };\n\n /**\n * Get submenu mode\n */\n the.getSubmenuMode = function(el) {\n return Plugin.getSubmenuMode(el);\n };\n\n /**\n * Hide dropdown\n * @returns {Object}\n */\n the.hideDropdown = function(item) {\n Plugin.hideSubmenuDropdown(item, true);\n };\n\n /**\n * Hide dropdowns\n * @returns {Object}\n */\n the.hideDropdowns = function() {\n Plugin.hideSubmenuDropdowns();\n };\n\n /**\n * Disable menu for given time\n * @returns {Object}\n */\n the.pauseDropdownHover = function(time) {\n Plugin.pauseDropdownHover(time);\n };\n\n /**\n * Disable menu for given time\n * @returns {Object}\n */\n the.resumeDropdownHover = function() {\n return Plugin.resumeDropdownHover();\n };\n\n /**\n * Register event\n */\n the.on = function(name, handler) {\n return Plugin.addEvent(name, handler);\n };\n\n the.off = function(name) {\n return Plugin.removeEvent(name);\n };\n\n the.one = function(name, handler) {\n return Plugin.addEvent(name, handler, true);\n };\n\n ///////////////////////////////\n // ** Plugin Construction ** //\n ///////////////////////////////\n\n // Run plugin\n Plugin.construct.apply(the, [options]);\n\n // Handle plugin on window resize\n KTUtil.addResizeHandler(function() {\n if (init) {\n the.reload();\n }\n });\n\n // Init done\n init = true;\n\n // Return plugin instance\n return the;\n};\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTMenu;\n}\n\n// Plugin global lazy initialization\ndocument.addEventListener(\"click\", function (e) {\n var body = KTUtil.getByTagName('body')[0];\n var query;\n if ( query = body.querySelectorAll('.menu-nav .menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)[data-menu-toggle=\"click\"]') ) {\n for (var i = 0, len = query.length; i < len; i++) {\n var element = query[i].closest('.menu-nav').parentNode;\n\n if ( element ) {\n var the = KTUtil.data(element).get('menu');\n\n if ( !the ) {\n break;\n }\n\n if ( !the || the.getSubmenuMode() !== 'dropdown' ) {\n break;\n }\n\n if ( e.target !== element && element.contains(e.target) === false ) {\n the.hideDropdowns();\n }\n }\n }\n }\n});\n","\"use strict\";\n\n// Component Definition\nvar KTOffcanvas = function(elementId, options) {\n // Main object\n var the = this;\n var init = false;\n\n // Get element object\n var element = KTUtil.getById(elementId);\n var body = KTUtil.getBody();\n\n if (!element) {\n return;\n }\n\n // Default options\n var defaultOptions = {\n attrCustom: ''\n };\n\n ////////////////////////////\n // ** Private Methods ** //\n ////////////////////////////\n\n var Plugin = {\n construct: function(options) {\n if (KTUtil.data(element).has('offcanvas')) {\n the = KTUtil.data(element).get('offcanvas');\n } else {\n // Reset offcanvas\n Plugin.init(options);\n\n // Build offcanvas\n Plugin.build();\n\n KTUtil.data(element).set('offcanvas', the);\n }\n\n return the;\n },\n\n init: function(options) {\n the.events = [];\n\n // merge default and user defined options\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\n\n the.classBase = the.options.baseClass;\n the.attrCustom = the.options.attrCustom;\n the.classShown = the.classBase + '-on';\n the.classOverlay = the.classBase + '-overlay';\n the.target;\n\n the.state = KTUtil.hasClass(element, the.classShown) ? 'shown' : 'hidden';\n },\n\n build: function() {\n // offcanvas toggle\n if (the.options.toggleBy) {\n if (typeof the.options.toggleBy === 'string') {\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy), 'click', function(e) {\n e.preventDefault();\n the.target = this;\n Plugin.toggle();\n });\n } else if (the.options.toggleBy && the.options.toggleBy[0]) {\n if (the.options.toggleBy[0].target) {\n for (var i in the.options.toggleBy) {\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i].target), 'click', function(e) {\n e.preventDefault();\n the.target = this;\n Plugin.toggle();\n });\n }\n } else {\n for (var i in the.options.toggleBy) {\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i]), 'click', function(e) {\n e.preventDefault();\n the.target = this;\n Plugin.toggle();\n });\n }\n }\n\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\n KTUtil.addEvent( KTUtil.getById(the.options.toggleBy.target), 'click', function(e) {\n e.preventDefault();\n the.target = this;\n Plugin.toggle();\n });\n }\n }\n\n // offcanvas close\n var closeBy = KTUtil.getById(the.options.closeBy);\n if (closeBy) {\n KTUtil.addEvent(closeBy, 'click', function(e) {\n e.preventDefault();\n the.target = this;\n Plugin.hide();\n });\n }\n },\n\n isShown: function() {\n return (the.state == 'shown' ? true : false);\n },\n\n toggle: function() {\n Plugin.eventTrigger('toggle');\n\n if (the.state == 'shown') {\n Plugin.hide();\n } else {\n Plugin.show();\n }\n },\n\n show: function() {\n if (the.state == 'shown') {\n return;\n }\n\n Plugin.eventTrigger('beforeShow');\n\n Plugin.toggleClass('show');\n\n // Offcanvas panel\n KTUtil.attr(body, 'data-offcanvas-' + the.classBase, 'on');\n KTUtil.addClass(element, the.classShown);\n\n if (the.attrCustom.length > 0) {\n KTUtil.attr(body, 'data-offcanvas-' + the.classCustom, 'on');\n //KTUtil.addClass(body, the.classCustom);\n }\n\n the.state = 'shown';\n\n if (the.options.overlay) {\n the.overlay = KTUtil.insertAfter(document.createElement('DIV') , element );\n KTUtil.addClass(the.overlay, the.classOverlay);\n\n KTUtil.addEvent(the.overlay, 'click', function(e) {\n //e.stopPropagation();\n e.preventDefault();\n Plugin.hide(the.target);\n });\n }\n\n Plugin.eventTrigger('afterShow');\n },\n\n hide: function() {\n if (the.state == 'hidden') {\n return;\n }\n\n Plugin.eventTrigger('beforeHide');\n\n Plugin.toggleClass('hide');\n\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.classBase);\n KTUtil.removeClass(element, the.classShown);\n\n if (the.attrCustom.length > 0) {\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.attrCustom);\n }\n\n the.state = 'hidden';\n\n if (the.options.overlay && the.overlay) {\n KTUtil.remove(the.overlay);\n }\n\n Plugin.eventTrigger('afterHide');\n },\n\n toggleClass: function(mode) {\n var id = KTUtil.attr(the.target, 'id');\n var toggleBy;\n\n if (the.options.toggleBy && the.options.toggleBy[0] && the.options.toggleBy[0].target) {\n for (var i in the.options.toggleBy) {\n if (the.options.toggleBy[i].target === id) {\n toggleBy = the.options.toggleBy[i];\n }\n }\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\n toggleBy = the.options.toggleBy;\n }\n\n if (toggleBy) {\n var el = KTUtil.getById(toggleBy.target);\n\n if (mode === 'show') {\n KTUtil.addClass(el, toggleBy.state);\n }\n\n if (mode === 'hide') {\n KTUtil.removeClass(el, toggleBy.state);\n }\n }\n },\n\n eventTrigger: function(name, args) {\n for (var i = 0; i < the.events.length; i++) {\n var event = the.events[i];\n if (event.name == name) {\n if (event.one == true) {\n if (event.fired == false) {\n the.events[i].fired = true;\n return event.handler.call(this, the, args);\n }\n } else {\n return event.handler.call(this, the, args);\n }\n }\n }\n },\n\n addEvent: function(name, handler, one) {\n the.events.push({\n name: name,\n handler: handler,\n one: one,\n fired: false\n });\n }\n };\n\n //////////////////////////\n // ** Public Methods ** //\n //////////////////////////\n\n /**\n * Set default options\n * @param options\n */\n the.setDefaults = function(options) {\n defaultOptions = options;\n };\n\n /**\n * Check if canvas is shown\n * @returns {boolean}\n */\n the.isShown = function() {\n return Plugin.isShown();\n };\n\n /**\n * Set to hide the canvas\n */\n the.hide = function() {\n return Plugin.hide();\n };\n\n /**\n * Set to show the canvas\n */\n the.show = function() {\n return Plugin.show();\n };\n\n /**\n * Attach event\n * @param name\n * @param handler\n */\n the.on = function(name, handler) {\n return Plugin.addEvent(name, handler);\n };\n\n /**\n * Attach event that will be fired once\n * @param name\n * @param handler\n */\n the.one = function(name, handler) {\n return Plugin.addEvent(name, handler, true);\n };\n\n ///////////////////////////////\n // ** Plugin Construction ** //\n ///////////////////////////////\n\n // Run plugin\n Plugin.construct.apply(the, [options]);\n\n // Init done\n init = true;\n\n // Return plugin instance\n return the;\n};\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTOffcanvas;\n}\n","\"use strict\";\n\n// Component Definition\nvar KTToggle = function(toggleElement, targetElement, options) {\n // Main object\n var the = this;\n var init = false;\n\n // Get element object\n var element = toggleElement;\n var target = targetElement;\n\n if (!element) {\n return;\n }\n\n // Default options\n var defaultOptions = {\n targetToggleMode: 'class' // class|attribute\n };\n\n ////////////////////////////\n // ** Private Methods ** //\n ////////////////////////////\n\n var Plugin = {\n /**\n * Construct\n */\n\n construct: function(options) {\n if (KTUtil.data(element).has('toggle')) {\n the = KTUtil.data(element).get('toggle');\n } else {\n // reset menu\n Plugin.init(options);\n\n // build menu\n Plugin.build();\n\n KTUtil.data(element).set('toggle', the);\n }\n\n return the;\n },\n\n /**\n * Handles subtoggle click toggle\n */\n init: function(options) {\n the.element = element;\n the.events = [];\n\n // Merge default and user defined options\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\n\n //alert(the.options.target.tagName);\n the.target = target;\n\n the.targetState = the.options.targetState;\n the.toggleState = the.options.toggleState;\n\n if (the.options.targetToggleMode == 'class') {\n the.state = KTUtil.hasClasses(the.target, the.targetState) ? 'on' : 'off';\n } else {\n the.state = KTUtil.hasAttr(the.target, 'data-' + the.targetState) ? KTUtil.attr(the.target, 'data-' + the.targetState) : 'off';\n }\n },\n\n /**\n * Setup toggle\n */\n build: function() {\n KTUtil.addEvent(element, 'mouseup', Plugin.toggle);\n },\n\n /**\n * Handles offcanvas click toggle\n */\n toggle: function(e) {\n Plugin.eventTrigger('beforeToggle');\n\n if (the.state == 'off') {\n Plugin.toggleOn();\n } else {\n Plugin.toggleOff();\n }\n\n Plugin.eventTrigger('afterToggle');\n\n e.preventDefault();\n\n return the;\n },\n\n /**\n * Handles toggle click toggle\n */\n toggleOn: function() {\n Plugin.eventTrigger('beforeOn');\n\n if (the.options.targetToggleMode == 'class') {\n KTUtil.addClass(the.target, the.targetState);\n } else {\n KTUtil.attr(the.target, 'data-' + the.targetState, 'on');\n }\n\n if (the.toggleState) {\n KTUtil.addClass(element, the.toggleState);\n }\n\n the.state = 'on';\n\n Plugin.eventTrigger('afterOn');\n\n Plugin.eventTrigger('toggle');\n\n return the;\n },\n\n /**\n * Handles toggle click toggle\n */\n toggleOff: function() {\n Plugin.eventTrigger('beforeOff');\n\n if (the.options.targetToggleMode == 'class') {\n KTUtil.removeClass(the.target, the.targetState);\n } else {\n KTUtil.removeAttr(the.target, 'data-' + the.targetState);\n }\n\n if (the.toggleState) {\n KTUtil.removeClass(element, the.toggleState);\n }\n\n the.state = 'off';\n\n Plugin.eventTrigger('afterOff');\n\n Plugin.eventTrigger('toggle');\n\n return the;\n },\n\n /**\n * Trigger events\n */\n eventTrigger: function(name) {\n for (var i = 0; i < the.events.length; i++) {\n var event = the.events[i];\n\n if (event.name == name) {\n if (event.one == true) {\n if (event.fired == false) {\n the.events[i].fired = true;\n return event.handler.call(this, the);\n }\n } else {\n return event.handler.call(this, the);\n }\n }\n }\n },\n\n addEvent: function(name, handler, one) {\n the.events.push({\n name: name,\n handler: handler,\n one: one,\n fired: false\n });\n\n return the;\n }\n };\n\n //////////////////////////\n // ** Public Methods ** //\n //////////////////////////\n\n /**\n * Set default options\n */\n\n the.setDefaults = function(options) {\n defaultOptions = options;\n };\n\n /**\n * Get toggle state\n */\n the.getState = function() {\n return the.state;\n };\n\n /**\n * Toggle\n */\n the.toggle = function() {\n return Plugin.toggle();\n };\n\n /**\n * Toggle on\n */\n the.toggleOn = function() {\n return Plugin.toggleOn();\n };\n\n /**\n * Toggle off\n */\n the.toggleOff = function() {\n return Plugin.toggleOff();\n };\n\n /**\n * Attach event\n * @returns {KTToggle}\n */\n the.on = function(name, handler) {\n return Plugin.addEvent(name, handler);\n };\n\n /**\n * Attach event that will be fired once\n * @returns {KTToggle}\n */\n the.one = function(name, handler) {\n return Plugin.addEvent(name, handler, true);\n };\n\n // Construct plugin\n Plugin.construct.apply(the, [options]);\n\n return the;\n};\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTToggle;\n}\n","'use strict'\n\n/**\n * @class KTUtil base utilize class that privides helper functions\n */\n\n// Polyfills\n/**\n * Element.matches() polyfill (simple version)\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n */\nif (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector\n}\n\n/**\n * Element.closest() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n */\nif (!Element.prototype.closest) {\n if (!Element.prototype.matches) {\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector\n }\n Element.prototype.closest = function (s) {\n const el = this\n let ancestor = this\n if (!document.documentElement.contains(el)) return null\n do {\n if (ancestor.matches(s)) return ancestor\n ancestor = ancestor.parentElement\n } while (ancestor !== null)\n return null\n }\n}\n\n/**\n * ChildNode.remove() polyfill\n * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/\n * @author Chris Ferdinandi\n * @license MIT\n */\n(function (elem) {\n for (let i = 0; i < elem.length; i++) {\n if (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue\n window[elem[i]].prototype.remove = function () {\n this.parentNode.removeChild(this)\n }\n }\n})(['Element', 'CharacterData', 'DocumentType']);\n\n//\n// requestAnimationFrame polyfill by Erik Möller.\n// With fixes from Paul Irish and Tino Zijdel\n//\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n//\n// MIT license\n//\n(function () {\n let lastTime = 0\n const vendors = ['webkit', 'moz']\n for (let x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']\n window.cancelAnimationFrame =\n window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']\n }\n\n if (!window.requestAnimationFrame) {\n window.requestAnimationFrame = function (callback) {\n const currTime = new Date().getTime()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n const id = window.setTimeout(function () {\n callback(currTime + timeToCall)\n }, timeToCall)\n lastTime = currTime + timeToCall\n return id\n }\n }\n\n if (!window.cancelAnimationFrame) {\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id)\n }\n }\n}());\n\n// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md\n(function (arr) {\n arr.forEach(function (item) {\n if (item.hasOwnProperty('prepend')) {\n return\n }\n Object.defineProperty(item, 'prepend', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function prepend () {\n const argArr = Array.prototype.slice.call(arguments)\n const docFrag = document.createDocumentFragment()\n\n argArr.forEach(function (argItem) {\n const isNode = argItem instanceof Node\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)))\n })\n\n this.insertBefore(docFrag, this.firstChild)\n }\n })\n })\n})([Element.prototype, Document.prototype, DocumentFragment.prototype])\n\n// getAttributeNames\nif (Element.prototype.getAttributeNames == undefined) {\n Element.prototype.getAttributeNames = function () {\n const attributes = this.attributes\n const length = attributes.length\n const result = new Array(length)\n for (let i = 0; i < length; i++) {\n result[i] = attributes[i].name\n }\n return result\n }\n}\n\n// Global variables\nwindow.KTUtilElementDataStore = {}\nwindow.KTUtilElementDataStoreID = 0\nwindow.KTUtilDelegatedEventHandlers = {}\n\nvar KTUtil = (function () {\n const resizeHandlers = []\n\n /** @type {object} breakpoints The device width breakpoints **/\n let breakpoints = {\n sm: 544, // Small screen / phone\n md: 768, // Medium screen / tablet\n lg: 992, // Large screen / desktop\n xl: 1200 // Extra large screen / wide desktop\n }\n\n /**\n * Handle window resize event with some\n * delay to attach event handlers upon resize complete\n */\n const _windowResizeHandler = function () {\n const _runResizeHandlers = function () {\n // reinitialize other subscribed elements\n for (let i = 0; i < resizeHandlers.length; i++) {\n const each = resizeHandlers[i]\n each.call()\n }\n }\n\n let timer\n\n window.addEventListener('resize', function () {\n KTUtil.throttle(timer, function () {\n _runResizeHandlers()\n }, 200)\n })\n }\n\n return {\n /**\n * Class main initializer.\n * @param {object} settings.\n * @returns null\n */\n // main function to initiate the theme\n init: function (settings) {\n if (settings && settings.breakpoints) {\n breakpoints = settings.breakpoints\n }\n\n _windowResizeHandler()\n },\n\n /**\n * Adds window resize event handler.\n * @param {function} callback function.\n */\n addResizeHandler: function (callback) {\n resizeHandlers.push(callback)\n },\n\n /**\n * Removes window resize event handler.\n * @param {function} callback function.\n */\n removeResizeHandler: function (callback) {\n for (let i = 0; i < resizeHandlers.length; i++) {\n if (callback === resizeHandlers[i]) {\n delete resizeHandlers[i]\n }\n }\n },\n\n /**\n * Trigger window resize handlers.\n */\n runResizeHandlers: function () {\n _runResizeHandlers()\n },\n\n resize: function () {\n if (typeof (Event) === 'function') {\n // modern browsers\n window.dispatchEvent(new Event('resize'))\n } else {\n // for IE and other old browsers\n // causes deprecation warning on modern browsers\n const evt = window.document.createEvent('UIEvents')\n evt.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(evt)\n }\n },\n\n /**\n * Get GET parameter value from URL.\n * @param {string} paramName Parameter name.\n * @returns {string}\n */\n getURLParam: function (paramName) {\n const searchString = window.location.search.substring(1)\n let i; let val; const params = searchString.split('&')\n\n for (i = 0; i < params.length; i++) {\n val = params[i].split('=')\n if (val[0] == paramName) {\n return unescape(val[1])\n }\n }\n\n return null\n },\n\n /**\n * Checks whether current device is mobile touch.\n * @returns {boolean}\n */\n isMobileDevice: function () {\n let test = (this.getViewPort().width < this.getBreakpoint('lg'))\n\n if (test === false) {\n // For use within normal web clients\n test = navigator.userAgent.match(/iPad/i) != null\n }\n\n return test\n },\n\n /**\n * Checks whether current device is desktop.\n * @returns {boolean}\n */\n isDesktopDevice: function () {\n return !KTUtil.isMobileDevice()\n },\n\n /**\n * Gets browser window viewport size. Ref:\n * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\n * @returns {object}\n */\n getViewPort: function () {\n let e = window\n let a = 'inner'\n if (!('innerWidth' in window)) {\n a = 'client'\n e = document.documentElement || document.body\n }\n\n return {\n width: e[a + 'Width'],\n height: e[a + 'Height']\n }\n },\n\n /**\n * Checks whether given device mode is currently activated.\n * @param {string} mode Responsive mode name(e.g: desktop,\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\n * @returns {boolean}\n */\n isInResponsiveRange: function (mode) {\n const breakpoint = this.getViewPort().width\n\n if (mode == 'general') {\n return true\n } else if (mode == 'desktop' && breakpoint >= (this.getBreakpoint('lg') + 1)) {\n return true\n } else if (mode == 'tablet' && (breakpoint >= (this.getBreakpoint('md') + 1) && breakpoint < this.getBreakpoint('lg'))) {\n return true\n } else if (mode == 'mobile' && breakpoint <= this.getBreakpoint('md')) {\n return true\n } else if (mode == 'desktop-and-tablet' && breakpoint >= (this.getBreakpoint('md') + 1)) {\n return true\n } else if (mode == 'tablet-and-mobile' && breakpoint <= this.getBreakpoint('lg')) {\n return true\n } else if (mode == 'minimal-desktop-and-below' && breakpoint <= this.getBreakpoint('xl')) {\n return true\n }\n\n return false\n },\n\n /**\n * Checks whether given device mode is currently activated.\n * @param {string} mode Responsive mode name(e.g: desktop,\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\n * @returns {boolean}\n */\n isBreakpointUp: function (mode) {\n const width = this.getViewPort().width\n const breakpoint = this.getBreakpoint(mode)\n\n return (width >= breakpoint)\n },\n\n isBreakpointDown: function (mode) {\n const width = this.getViewPort().width\n const breakpoint = this.getBreakpoint(mode)\n\n return (width < breakpoint)\n },\n\n /**\n * Generates unique ID for give prefix.\n * @param {string} prefix Prefix for generated ID\n * @returns {boolean}\n */\n getUniqueID: function (prefix) {\n return prefix + Math.floor(Math.random() * (new Date()).getTime())\n },\n\n /**\n * Gets window width for give breakpoint mode.\n * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)\n * @returns {number}\n */\n getBreakpoint: function (mode) {\n return breakpoints[mode]\n },\n\n /**\n * Checks whether object has property matchs given key path.\n * @param {object} obj Object contains values paired with given key path\n * @param {string} keys Keys path seperated with dots\n * @returns {object}\n */\n isset: function (obj, keys) {\n let stone\n\n keys = keys || ''\n\n if (keys.indexOf('[') !== -1) {\n throw new Error('Unsupported object path notation.')\n }\n\n keys = keys.split('.')\n\n do {\n if (obj === undefined) {\n return false\n }\n\n stone = keys.shift()\n\n if (!obj.hasOwnProperty(stone)) {\n return false\n }\n\n obj = obj[stone]\n } while (keys.length)\n\n return true\n },\n\n /**\n * Gets highest z-index of the given element parents\n * @param {object} el jQuery element object\n * @returns {number}\n */\n getHighestZindex: function (el) {\n let position, value\n\n while (el && el !== document) {\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\n // This makes behavior of this function consistent across browsers\n // WebKit always returns auto if the element is positioned\n position = KTUtil.css(el, 'position')\n\n if (position === 'absolute' || position === 'relative' || position === 'fixed') {\n // IE returns 0 when zIndex is not specified\n // other browsers return a string\n // we ignore the case of nested elements with an explicit value of 0\n //
\n value = parseInt(KTUtil.css(el, 'z-index'))\n\n if (!isNaN(value) && value !== 0) {\n return value\n }\n }\n\n el = el.parentNode\n }\n\n return null\n },\n\n /**\n * Checks whether the element has any parent with fixed positionfreg\n * @param {object} el jQuery element object\n * @returns {boolean}\n */\n hasFixedPositionedParent: function (el) {\n let position\n\n while (el && el !== document) {\n position = KTUtil.css(el, 'position')\n\n if (position === 'fixed') {\n return true\n }\n\n el = el.parentNode\n }\n\n return false\n },\n\n /**\n * Simulates delay\n */\n sleep: function (milliseconds) {\n const start = new Date().getTime()\n for (let i = 0; i < 1e7; i++) {\n if ((new Date().getTime() - start) > milliseconds) {\n break\n }\n }\n },\n\n /**\n * Gets randomly generated integer value within given min and max range\n * @param {number} min Range start value\n * @param {number} max Range end value\n * @returns {number}\n */\n getRandomInt: function (min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min\n },\n\n /**\n * Checks whether Angular library is included\n * @returns {boolean}\n */\n isAngularVersion: function () {\n return window.Zone !== undefined\n },\n\n // Deep extend: $.extend(true, {}, objA, objB);\n deepExtend: function (out) {\n out = out || {}\n\n for (let i = 1; i < arguments.length; i++) {\n const obj = arguments[i]\n if (!obj) continue\n\n for (const key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue\n }\n\n // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/\n if (Object.prototype.toString.call(obj[key]) === '[object Object]') {\n out[key] = KTUtil.deepExtend(out[key], obj[key])\n continue\n }\n\n out[key] = obj[key]\n }\n }\n\n return out\n },\n\n // extend: $.extend({}, objA, objB);\n extend: function (out) {\n out = out || {}\n\n for (let i = 1; i < arguments.length; i++) {\n if (!arguments[i]) { continue }\n\n for (const key in arguments[i]) {\n if (arguments[i].hasOwnProperty(key)) { out[key] = arguments[i][key] }\n }\n }\n\n return out\n },\n\n getById: function (el) {\n if (typeof el === 'string') {\n return document.getElementById(el)\n } else {\n return el\n }\n },\n\n getByTag: function (query) {\n return document.getElementsByTagName(query)\n },\n\n getByTagName: function (query) {\n return document.getElementsByTagName(query)\n },\n\n getByClass: function (query) {\n return document.getElementsByClassName(query)\n },\n\n getBody: function () {\n return document.getElementsByTagName('body')[0]\n },\n\n /**\n * Checks whether the element has given classes\n * @param {object} el jQuery element object\n * @param {string} Classes string\n * @returns {boolean}\n */\n hasClasses: function (el, classes) {\n if (!el) {\n return\n }\n\n const classesArr = classes.split(' ')\n\n for (let i = 0; i < classesArr.length; i++) {\n if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) {\n return false\n }\n }\n\n return true\n },\n\n hasClass: function (el, className) {\n if (!el) {\n return\n }\n\n return el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className)\n },\n\n addClass: function (el, className) {\n if (!el || typeof className === 'undefined') {\n return\n }\n\n const classNames = className.split(' ')\n\n if (el.classList) {\n for (let i = 0; i < classNames.length; i++) {\n if (classNames[i] && classNames[i].length > 0) {\n el.classList.add(KTUtil.trim(classNames[i]))\n }\n }\n } else if (!KTUtil.hasClass(el, className)) {\n for (let x = 0; x < classNames.length; x++) {\n el.className += ' ' + KTUtil.trim(classNames[x])\n }\n }\n },\n\n removeClass: function (el, className) {\n if (!el || typeof className === 'undefined') {\n return\n }\n\n const classNames = className.split(' ')\n\n if (el.classList) {\n for (let i = 0; i < classNames.length; i++) {\n el.classList.remove(KTUtil.trim(classNames[i]))\n }\n } else if (KTUtil.hasClass(el, className)) {\n for (let x = 0; x < classNames.length; x++) {\n el.className = el.className.replace(new RegExp('\\\\b' + KTUtil.trim(classNames[x]) + '\\\\b', 'g'), '')\n }\n }\n },\n\n triggerCustomEvent: function (el, eventName, data) {\n let event\n if (window.CustomEvent) {\n event = new CustomEvent(eventName, {\n detail: data\n })\n } else {\n event = document.createEvent('CustomEvent')\n event.initCustomEvent(eventName, true, true, data)\n }\n\n el.dispatchEvent(event)\n },\n\n triggerEvent: function (node, eventName) {\n // Make sure we use the ownerDocument from the provided node to avoid cross-window problems\n let doc\n if (node.ownerDocument) {\n doc = node.ownerDocument\n } else if (node.nodeType == 9) {\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\n doc = node\n } else {\n throw new Error('Invalid node passed to fireEvent: ' + node.id)\n }\n\n if (node.dispatchEvent) {\n // Gecko-style approach (now the standard) takes more work\n let eventClass = ''\n\n // Different events have different event classes.\n // If this switch statement can't map an eventName to an eventClass,\n // the event firing is going to fail.\n switch (eventName) {\n case 'click': // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\n case 'mouseenter':\n case 'mouseleave':\n case 'mousedown':\n case 'mouseup':\n eventClass = 'MouseEvents'\n break\n\n case 'focus':\n case 'change':\n case 'blur':\n case 'select':\n eventClass = 'HTMLEvents'\n break\n\n default:\n throw \"fireEvent: Couldn't find an event class for event '\" + eventName + \"'.\"\n break\n }\n var event = doc.createEvent(eventClass)\n\n const bubbles = eventName != 'change'\n event.initEvent(eventName, bubbles, true) // All events created as bubbling and cancelable.\n\n event.synthetic = true // allow detection of synthetic events\n // The second parameter says go ahead with the default action\n node.dispatchEvent(event, true)\n } else if (node.fireEvent) {\n // IE-old school style\n var event = doc.createEventObject()\n event.synthetic = true // allow detection of synthetic events\n node.fireEvent('on' + eventName, event)\n }\n },\n\n index: function (el) {\n const c = el.parentNode.children; let i = 0\n for (; i < c.length; i++) { if (c[i] == el) return i }\n },\n\n trim: function (string) {\n return string.trim()\n },\n\n eventTriggered: function (e) {\n if (e.currentTarget.dataset.triggered) {\n return true\n } else {\n e.currentTarget.dataset.triggered = true\n\n return false\n }\n },\n\n remove: function (el) {\n if (el && el.parentNode) {\n el.parentNode.removeChild(el)\n }\n },\n\n find: function (parent, query) {\n parent = KTUtil.getById(parent)\n if (parent) {\n return parent.querySelector(query)\n }\n },\n\n findAll: function (parent, query) {\n parent = KTUtil.getById(parent)\n if (parent) {\n return parent.querySelectorAll(query)\n }\n },\n\n insertAfter: function (el, referenceNode) {\n return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling)\n },\n\n parents: function (elem, selector) {\n // Element.matches() polyfill\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n Element.prototype.matchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.oMatchesSelector ||\n Element.prototype.webkitMatchesSelector ||\n function (s) {\n const matches = (this.document || this.ownerDocument).querySelectorAll(s)\n let i = matches.length\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1\n }\n }\n\n // Set up a parent array\n const parents = []\n\n // Push each parent element to the array\n for (; elem && elem !== document; elem = elem.parentNode) {\n if (selector) {\n if (elem.matches(selector)) {\n parents.push(elem)\n }\n continue\n }\n parents.push(elem)\n }\n\n // Return our parent array\n return parents\n },\n\n children: function (el, selector, log) {\n if (!el || !el.childNodes) {\n return\n }\n\n const result = []\n var i = 0\n const l = el.childNodes.length\n\n for (var i; i < l; ++i) {\n if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) {\n result.push(el.childNodes[i])\n }\n }\n\n return result\n },\n\n child: function (el, selector, log) {\n const children = KTUtil.children(el, selector, log)\n\n return children ? children[0] : null\n },\n\n matches: function (el, selector, log) {\n const p = Element.prototype\n const f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function (s) {\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1\n }\n\n if (el && el.tagName) {\n return f.call(el, selector)\n } else {\n return false\n }\n },\n\n data: function (el) {\n return {\n set: function (name, data) {\n if (!el) {\n return\n }\n\n if (el.customDataTag === undefined) {\n window.KTUtilElementDataStoreID++\n el.customDataTag = window.KTUtilElementDataStoreID\n }\n\n if (window.KTUtilElementDataStore[el.customDataTag] === undefined) {\n window.KTUtilElementDataStore[el.customDataTag] = {}\n }\n\n window.KTUtilElementDataStore[el.customDataTag][name] = data\n },\n\n get: function (name) {\n if (!el) {\n return\n }\n\n if (el.customDataTag === undefined) {\n return null\n }\n\n return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null\n },\n\n has: function (name) {\n if (!el) {\n return false\n }\n\n if (el.customDataTag === undefined) {\n return false\n }\n\n return !!((window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]))\n },\n\n remove: function (name) {\n if (el && this.has(name)) {\n delete window.KTUtilElementDataStore[el.customDataTag][name]\n }\n }\n }\n },\n\n outerWidth: function (el, margin) {\n let width\n\n if (margin === true) {\n width = parseFloat(el.offsetWidth)\n width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right'))\n\n return parseFloat(width)\n } else {\n width = parseFloat(el.offsetWidth)\n\n return width\n }\n },\n\n offset: function (el) {\n let rect, win\n\n if (!el) {\n return\n }\n\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n\n if (!el.getClientRects().length) {\n return { top: 0, left: 0 }\n }\n\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n rect = el.getBoundingClientRect()\n win = el.ownerDocument.defaultView\n\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n }\n },\n\n height: function (el) {\n return KTUtil.css(el, 'height')\n },\n\n outerHeight: function (el, withMargin) {\n let height = el.offsetHeight\n let style\n\n if (typeof withMargin !== 'undefined' && withMargin === true) {\n style = getComputedStyle(el)\n height += parseInt(style.marginTop) + parseInt(style.marginBottom)\n\n return height\n } else {\n return height\n }\n },\n\n visible: function (el) {\n return !(el.offsetWidth === 0 && el.offsetHeight === 0)\n },\n\n attr: function (el, name, value) {\n if (el == undefined) {\n return\n }\n\n if (value !== undefined) {\n el.setAttribute(name, value)\n } else {\n return el.getAttribute(name)\n }\n },\n\n hasAttr: function (el, name) {\n if (el == undefined) {\n return\n }\n\n return !!el.getAttribute(name)\n },\n\n removeAttr: function (el, name) {\n if (el == undefined) {\n return\n }\n\n el.removeAttribute(name)\n },\n\n animate: function (from, to, duration, update, easing, done) {\n /**\n * TinyAnimate.easings\n * Adapted from jQuery Easing\n */\n const easings = {}\n var easing\n\n easings.linear = function (t, b, c, d) {\n return c * t / d + b\n }\n\n easing = easings.linear\n\n // Early bail out if called incorrectly\n if (typeof from !== 'number' ||\n typeof to !== 'number' ||\n typeof duration !== 'number' ||\n typeof update !== 'function') {\n return\n }\n\n // Create mock done() function if necessary\n if (typeof done !== 'function') {\n done = function () {}\n }\n\n // Pick implementation (requestAnimationFrame | setTimeout)\n const rAF = window.requestAnimationFrame || function (callback) {\n window.setTimeout(callback, 1000 / 50)\n }\n\n // Animation loop\n const canceled = false\n const change = to - from\n\n function loop (timestamp) {\n const time = (timestamp || +new Date()) - start\n\n if (time >= 0) {\n update(easing(time, from, change, duration))\n }\n if (time >= 0 && time >= duration) {\n update(to)\n done()\n } else {\n rAF(loop)\n }\n }\n\n update(from)\n\n // Start animation loop\n var start = window.performance && window.performance.now ? window.performance.now() : +new Date()\n\n rAF(loop)\n },\n\n actualCss: function (el, prop, cache) {\n let css = ''\n\n if (el instanceof HTMLElement === false) {\n return\n }\n\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\n let value\n\n // the element is hidden so:\n // making the el block so we can meassure its height but still be hidden\n css = el.style.cssText\n el.style.cssText = 'position: absolute; visibility: hidden; display: block;'\n\n if (prop == 'width') {\n value = el.offsetWidth\n } else if (prop == 'height') {\n value = el.offsetHeight\n }\n\n el.style.cssText = css\n\n // store it in cache\n el.setAttribute('kt-hidden-' + prop, value)\n\n return parseFloat(value)\n } else {\n // store it in cache\n return parseFloat(el.getAttribute('kt-hidden-' + prop))\n }\n },\n\n actualHeight: function (el, cache) {\n return KTUtil.actualCss(el, 'height', cache)\n },\n\n actualWidth: function (el, cache) {\n return KTUtil.actualCss(el, 'width', cache)\n },\n\n getScroll: function (element, method) {\n // The passed in `method` value should be 'Top' or 'Left'\n method = 'scroll' + method\n return (element == window || element == document)\n ? (\n self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||\n (browserSupportsBoxModel && document.documentElement[method]) ||\n document.body[method]\n )\n : element[method]\n },\n\n css: function (el, styleProp, value) {\n if (!el) {\n return\n }\n\n if (value !== undefined) {\n el.style[styleProp] = value\n } else {\n const defaultView = (el.ownerDocument || document).defaultView\n // W3C standard way:\n if (defaultView && defaultView.getComputedStyle) {\n // sanitize property name to css notation\n // (hyphen separated words eg. font-Size)\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase()\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\n } else if (el.currentStyle) { // IE\n // sanitize property name to camelCase\n styleProp = styleProp.replace(/\\-(\\w)/g, function (str, letter) {\n return letter.toUpperCase()\n })\n value = el.currentStyle[styleProp]\n // convert other units to pixels on IE\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\n return (function (value) {\n const oldLeft = el.style.left\n const oldRsLeft = el.runtimeStyle.left\n el.runtimeStyle.left = el.currentStyle.left\n el.style.left = value || 0\n value = el.style.pixelLeft + 'px'\n el.style.left = oldLeft\n el.runtimeStyle.left = oldRsLeft\n return value\n })(value)\n }\n return value\n }\n }\n },\n\n slide: function (el, dir, speed, callback, recalcMaxHeight) {\n if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) {\n return\n }\n\n speed = (speed || 600)\n const calcHeight = KTUtil.actualHeight(el)\n let calcPaddingTop = false\n let calcPaddingBottom = false\n\n if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) {\n KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top'))\n }\n\n if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) {\n KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom'))\n }\n\n if (KTUtil.data(el).has('slide-padding-top')) {\n calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top'))\n }\n\n if (KTUtil.data(el).has('slide-padding-bottom')) {\n calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom'))\n }\n\n if (dir == 'up') { // up\n el.style.cssText = 'display: block; overflow: hidden;'\n\n if (calcPaddingTop) {\n KTUtil.animate(0, calcPaddingTop, speed, function (value) {\n el.style.paddingTop = (calcPaddingTop - value) + 'px'\n }, 'linear')\n }\n\n if (calcPaddingBottom) {\n KTUtil.animate(0, calcPaddingBottom, speed, function (value) {\n el.style.paddingBottom = (calcPaddingBottom - value) + 'px'\n }, 'linear')\n }\n\n KTUtil.animate(0, calcHeight, speed, function (value) {\n el.style.height = (calcHeight - value) + 'px'\n }, 'linear', function () {\n el.style.height = ''\n el.style.display = 'none'\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n } else if (dir == 'down') { // down\n el.style.cssText = 'display: block; overflow: hidden;'\n\n if (calcPaddingTop) {\n KTUtil.animate(0, calcPaddingTop, speed, function (value) { //\n el.style.paddingTop = value + 'px'\n }, 'linear', function () {\n el.style.paddingTop = ''\n })\n }\n\n if (calcPaddingBottom) {\n KTUtil.animate(0, calcPaddingBottom, speed, function (value) {\n el.style.paddingBottom = value + 'px'\n }, 'linear', function () {\n el.style.paddingBottom = ''\n })\n }\n\n KTUtil.animate(0, calcHeight, speed, function (value) {\n el.style.height = value + 'px'\n }, 'linear', function () {\n el.style.height = ''\n el.style.display = ''\n el.style.overflow = ''\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n }\n },\n\n slideUp: function (el, speed, callback) {\n KTUtil.slide(el, 'up', speed, callback)\n },\n\n slideDown: function (el, speed, callback) {\n KTUtil.slide(el, 'down', speed, callback)\n },\n\n show: function (el, display) {\n if (typeof el !== 'undefined') {\n el.style.display = (display || 'block')\n }\n },\n\n hide: function (el) {\n if (typeof el !== 'undefined') {\n el.style.display = 'none'\n }\n },\n\n addEvent: function (el, type, handler, one) {\n if (typeof el !== 'undefined' && el !== null) {\n el.addEventListener(type, handler)\n }\n },\n\n removeEvent: function (el, type, handler) {\n if (el !== null) {\n el.removeEventListener(type, handler)\n }\n },\n\n on: function (element, selector, event, handler) {\n if (!selector) {\n return\n }\n\n const eventId = KTUtil.getUniqueID('event')\n\n window.KTUtilDelegatedEventHandlers[eventId] = function (e) {\n const targets = element.querySelectorAll(selector)\n let target = e.target\n\n while (target && target !== element) {\n for (let i = 0, j = targets.length; i < j; i++) {\n if (target === targets[i]) {\n handler.call(target, e)\n }\n }\n\n target = target.parentNode\n }\n }\n\n KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId])\n\n return eventId\n },\n\n off: function (element, event, eventId) {\n if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) {\n return\n }\n\n KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId])\n\n delete window.KTUtilDelegatedEventHandlers[eventId]\n },\n\n one: function onetime (el, type, callback) {\n el.addEventListener(type, function callee (e) {\n // remove event\n if (e.target && e.target.removeEventListener) {\n e.target.removeEventListener(e.type, callee)\n }\n\n // need to verify from https://themeforest.net/author_dashboard#comment_23615588\n if (el && el.removeEventListener) {\n\t\t\t\t e.currentTarget.removeEventListener(e.type, callee)\n\t\t\t }\n\n // call handler\n return callback(e)\n })\n },\n\n hash: function (str) {\n let hash = 0\n let i; let chr\n\n if (str.length === 0) return hash\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i)\n hash = ((hash << 5) - hash) + chr\n hash |= 0 // Convert to 32bit integer\n }\n\n return hash\n },\n\n animateClass: function (el, animationName, callback) {\n let animation\n const animations = {\n animation: 'animationend',\n OAnimation: 'oAnimationEnd',\n MozAnimation: 'mozAnimationEnd',\n WebkitAnimation: 'webkitAnimationEnd',\n msAnimation: 'msAnimationEnd'\n }\n\n for (const t in animations) {\n if (el.style[t] !== undefined) {\n animation = animations[t]\n }\n }\n\n KTUtil.addClass(el, 'animated ' + animationName)\n\n KTUtil.one(el, animation, function () {\n KTUtil.removeClass(el, 'animated ' + animationName)\n })\n\n if (callback) {\n KTUtil.one(el, animation, callback)\n }\n },\n\n transitionEnd: function (el, callback) {\n let transition\n const transitions = {\n transition: 'transitionend',\n OTransition: 'oTransitionEnd',\n MozTransition: 'mozTransitionEnd',\n WebkitTransition: 'webkitTransitionEnd',\n msTransition: 'msTransitionEnd'\n }\n\n for (const t in transitions) {\n if (el.style[t] !== undefined) {\n transition = transitions[t]\n }\n }\n\n KTUtil.one(el, transition, callback)\n },\n\n animationEnd: function (el, callback) {\n let animation\n const animations = {\n animation: 'animationend',\n OAnimation: 'oAnimationEnd',\n MozAnimation: 'mozAnimationEnd',\n WebkitAnimation: 'webkitAnimationEnd',\n msAnimation: 'msAnimationEnd'\n }\n\n for (const t in animations) {\n if (el.style[t] !== undefined) {\n animation = animations[t]\n }\n }\n\n KTUtil.one(el, animation, callback)\n },\n\n animateDelay: function (el, value) {\n const vendors = ['webkit-', 'moz-', 'ms-', 'o-', '']\n for (let i = 0; i < vendors.length; i++) {\n KTUtil.css(el, vendors[i] + 'animation-delay', value)\n }\n },\n\n animateDuration: function (el, value) {\n const vendors = ['webkit-', 'moz-', 'ms-', 'o-', '']\n for (let i = 0; i < vendors.length; i++) {\n KTUtil.css(el, vendors[i] + 'animation-duration', value)\n }\n },\n\n scrollTo: function (target, offset, duration) {\n var duration = duration || 500\n const targetPos = target ? KTUtil.offset(target).top : 0\n let scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0\n let from, to\n\n if (offset) {\n scrollPos += offset\n }\n\n from = scrollPos\n to = targetPos\n\n KTUtil.animate(from, to, duration, function (value) {\n document.documentElement.scrollTop = value\n document.body.parentNode.scrollTop = value\n document.body.scrollTop = value\n }) //, easing, done\n },\n\n scrollTop: function (offset, duration) {\n KTUtil.scrollTo(null, offset, duration)\n },\n\n isArray: function (obj) {\n return obj && Array.isArray(obj)\n },\n\n ready: function (callback) {\n if (document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading') {\n callback()\n } else {\n document.addEventListener('DOMContentLoaded', callback)\n }\n },\n\n isEmpty: function (obj) {\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n return false\n }\n }\n\n return true\n },\n\n numberString: function (nStr) {\n nStr += ''\n const x = nStr.split('.')\n let x1 = x[0]\n const x2 = x.length > 1 ? '.' + x[1] : ''\n const rgx = /(\\d+)(\\d{3})/\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, '$1' + ',' + '$2')\n }\n return x1 + x2\n },\n\n detectIE: function () {\n const ua = window.navigator.userAgent\n\n // Test values; Uncomment to check result …\n\n // IE 10\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\n\n // IE 11\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\n\n // Edge 12 (Spartan)\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\n\n // Edge 13\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\n\n const msie = ua.indexOf('MSIE ')\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10)\n }\n\n const trident = ua.indexOf('Trident/')\n if (trident > 0) {\n // IE 11 => return version number\n const rv = ua.indexOf('rv:')\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10)\n }\n\n const edge = ua.indexOf('Edge/')\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10)\n }\n\n // other browser\n return false\n },\n\n isRTL: function () {\n const html = KTUtil.getByTagName('html')[0]\n\n if (html) {\n return (KTUtil.attr(html, 'direction') == 'rtl')\n }\n },\n\n // Scroller\n scrollInit: function (element, options) {\n if (!element) {\n return\n }\n\n // Learn more: https://github.com/mdbootstrap/perfect-scrollbar#options\n const pluginDefOptions = {\n wheelSpeed: 0.5,\n swipeEasing: true,\n wheelPropagation: false,\n minScrollbarLength: 40,\n maxScrollbarLength: 300,\n suppressScrollX: true\n }\n\n options = KTUtil.deepExtend({}, pluginDefOptions, options)\n\n // Define init function\n function init () {\n let ps\n let height\n\n // Get extra options via data attributes\n const attrs = element.getAttributeNames()\n if (attrs.length > 0) {\n attrs.forEach(function (attrName) {\n \t\t\t// more options; https://github.com/ganlanyuan/tiny-slider#options\n \t\t\tif ((/^data-.*/g).test(attrName)) {\n if (['scroll', 'height', 'mobile-height'].includes(optionName) == false) {\n var optionName = attrName.replace('data-', '').toLowerCase().replace(/(?:[\\s-])\\w/g, function (match) {\n \t\t\t\t\treturn match.replace('-', '').toUpperCase()\n \t\t\t\t})\n\n options[optionName] = KTUtil.filterBoolean(element.getAttribute(attrName))\n }\n \t\t\t}\n \t\t})\n }\n\n if (options.height instanceof Function) {\n height = options.height.call()\n } else {\n if (KTUtil.isMobileDevice() === true && options.mobileHeight) {\n height = parseInt(options.mobileHeight)\n } else if (options.height) {\n height = parseInt(options.height)\n } else {\n height = parseInt(KTUtil.css(element, 'height'))\n }\n }\n\n if (height === false) {\n KTUtil.scrollDestroy(element, true)\n\n return\n }\n\n height = parseInt(height)\n\n // Destroy scroll on table and mobile modes\n if ((options.mobileNativeScroll || options.disableForMobile) && KTUtil.isMobileDevice() === true) {\n ps = KTUtil.data(element).get('ps')\n if (ps) {\n if (options.resetHeightOnDestroy) {\n KTUtil.css(element, 'height', 'auto')\n } else {\n KTUtil.css(element, 'overflow', 'auto')\n if (height > 0) {\n KTUtil.css(element, 'height', height + 'px')\n }\n }\n\n ps.destroy()\n ps = KTUtil.data(element).remove('ps')\n } else if (height > 0) {\n KTUtil.css(element, 'overflow', 'auto')\n KTUtil.css(element, 'height', height + 'px')\n }\n\n return\n }\n\n if (height > 0) {\n KTUtil.css(element, 'height', height + 'px')\n }\n\n if (options.desktopNativeScroll) {\n KTUtil.css(element, 'overflow', 'auto')\n return\n }\n\n // Pass options via HTML Attributes\n if (KTUtil.attr(element, 'data-window-scroll') == 'true') {\n options.windowScroll = true\n }\n\n // Init scroll\n ps = KTUtil.data(element).get('ps')\n\n if (ps) {\n ps.update()\n } else {\n KTUtil.css(element, 'overflow', 'hidden')\n KTUtil.addClass(element, 'scroll')\n\n ps = new PerfectScrollbar(element, options)\n\n KTUtil.data(element).set('ps', ps)\n }\n\n // Remember scroll position in cookie\n const uid = KTUtil.attr(element, 'id')\n\n // Todo:Consider using Localstorage\n if (options.rememberPosition === true && KTCookie && uid) {\n if (KTCookie.getCookie(uid)) {\n const pos = parseInt(KTCookie.getCookie(uid))\n\n if (pos > 0) {\n element.scrollTop = pos\n }\n }\n\n element.addEventListener('ps-scroll-y', function () {\n KTCookie.setCookie(uid, element.scrollTop)\n })\n }\n }\n\n // Init\n init()\n\n // Handle window resize\n if (options.handleWindowResize) {\n KTUtil.addResizeHandler(function () {\n init()\n })\n }\n },\n\n scrollUpdate: function (element) {\n const ps = KTUtil.data(element).get('ps')\n if (ps) {\n ps.update()\n }\n },\n\n scrollUpdateAll: function (parent) {\n const scrollers = KTUtil.findAll(parent, '.ps')\n for (let i = 0, len = scrollers.length; i < len; i++) {\n KTUtil.scrollUpdate(scrollers[i])\n }\n },\n\n scrollDestroy: function (element, resetAll) {\n let ps = KTUtil.data(element).get('ps')\n\n if (ps) {\n ps.destroy()\n ps = KTUtil.data(element).remove('ps')\n }\n\n if (element && resetAll) {\n element.style.setProperty('overflow', '')\n element.style.setProperty('height', '')\n }\n },\n\n filterBoolean: function (val) {\n // Convert string boolean\n if (val === true || val === 'true') {\n return true\n }\n\n if (val === false || val === 'false') {\n return false\n }\n\n return val\n },\n\n setHTML: function (el, html) {\n el.innerHTML = html\n },\n\n getHTML: function (el) {\n if (el) {\n return el.innerHTML\n }\n },\n\n getDocumentHeight: function () {\n const body = document.body\n const html = document.documentElement\n\n return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight)\n },\n\n getScrollTop: function () {\n return (document.scrollingElement || document.documentElement).scrollTop\n },\n\n changeColor: function (col, amt) {\n let usePound = false\n\n if (col[0] == '#') {\n col = col.slice(1)\n usePound = true\n }\n\n const num = parseInt(col, 16)\n\n let r = (num >> 16) + amt\n\n if (r > 255) r = 255\n else if (r < 0) r = 0\n\n let b = ((num >> 8) & 0x00FF) + amt\n\n if (b > 255) b = 255\n else if (b < 0) b = 0\n\n let g = (num & 0x0000FF) + amt\n\n if (g > 255) g = 255\n else if (g < 0) g = 0\n\n return (usePound ? '#' : '') + (g | (b << 8) | (r << 16)).toString(16)\n },\n\n // Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds\n throttle: function (timer, func, delay) {\n \t// If setTimeout is already scheduled, no need to do anything\n \tif (timer) {\n \t\treturn\n \t}\n\n \t// Schedule a setTimeout after delay seconds\n \ttimer = setTimeout(function () {\n \t\tfunc()\n\n \t\t// Once setTimeout function execution is finished, timerId = undefined so that in
\n \t\t// the next scroll event function execution can be scheduled by the setTimeout\n \t\ttimer = undefined\n \t}, delay)\n },\n\n // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds\n debounce: function (timer, func, delay) {\n \t// Cancels the setTimeout method execution\n \tclearTimeout(timer)\n\n \t// Executes the func after delay time.\n \ttimer = setTimeout(func, delay)\n },\n\n btnWait: function (el, cls, message, disable) {\n if (!el) {\n return\n }\n\n if (typeof disable !== 'undefined' && disable === true) {\n KTUtil.attr(el, 'disabled', true)\n }\n\n if (cls) {\n KTUtil.addClass(el, cls)\n KTUtil.attr(el, 'wait-class', cls)\n }\n\n if (message) {\n const caption = KTUtil.find(el, '.btn-caption')\n\n if (caption) {\n KTUtil.data(caption).set('caption', KTUtil.getHTML(caption))\n KTUtil.setHTML(caption, message)\n } else {\n KTUtil.data(el).set('caption', KTUtil.getHTML(el))\n KTUtil.setHTML(el, message)\n }\n }\n },\n\n btnRelease: function (el) {\n if (!el) {\n return\n }\n\n /// Show loading state on button\n KTUtil.removeAttr(el, 'disabled')\n\n if (KTUtil.hasAttr(el, 'wait-class')) {\n KTUtil.removeClass(el, KTUtil.attr(el, 'wait-class'))\n }\n\n const caption = KTUtil.find(el, '.btn-caption')\n\n if (caption && KTUtil.data(caption).has('caption')) {\n KTUtil.setHTML(caption, KTUtil.data(caption).get('caption'))\n } else if (KTUtil.data(el).has('caption')) {\n KTUtil.setHTML(el, KTUtil.data(el).get('caption'))\n }\n },\n\n isOffscreen: function (el, direction, offset) {\n offset = offset || 0\n\n const windowWidth = KTUtil.getViewPort().width\n const windowHeight = KTUtil.getViewPort().height\n\n const top = KTUtil.offset(el).top\n const height = KTUtil.outerHeight(el) + offset\n const left = KTUtil.offset(el).left\n const width = KTUtil.outerWidth(el) + offset\n\n if (direction == 'bottom') {\n if (windowHeight < top + height) {\n return true\n } else if (windowHeight > top + height * 1.5) {\n return true\n }\n }\n\n if (direction == 'top') {\n if (top < 0) {\n return true\n } else if (top > height) {\n return true\n }\n }\n\n if (direction == 'left') {\n if (left < 0) {\n return true\n } else if (left * 2 > width) {\n // console.log('left 2');\n // return true;\n }\n }\n\n if (direction == 'right') {\n if (windowWidth < left + width) {\n return true\n } else {\n // console.log('right 2');\n // return true;\n }\n }\n\n return false\n }\n }\n}())\n\n// webpack support\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = KTUtil\n}\n\n// Initialize KTUtil class on document ready\nKTUtil.ready(function () {\n if (typeof KTAppSettings !== 'undefined') {\n KTUtil.init(KTAppSettings)\n } else {\n KTUtil.init()\n }\n})\n","\"use strict\";\n\nvar KTLayoutAsideMenu = function() {\n // Private properties\n var _body;\n var _element;\n var _menuObject;\n\n\t// Initialize\n\tvar _init = function() {\n\t\tvar menuDesktopMode = (KTUtil.attr(_element, 'data-menu-dropdown') === '1' ? 'dropdown' : 'accordion');\n var scroll;\n\n\t\tif (KTUtil.attr(_element, 'data-menu-scroll') === '1') {\n\t\t\tscroll = {\n\t\t\t\trememberPosition: true, // remember position on page reload\n\t\t\t\theight: function() { // calculate available scrollable area height\n\t\t\t\t\tvar height = parseInt(KTUtil.getViewPort().height);\n\n\t\t\t\t\tif (KTUtil.isBreakpointUp('lg')) {\n\t\t\t\t\t\theight = height - KTLayoutBrand.getHeight();\n\t\t\t\t\t}\n\n\t\t\t\t\theight = height - (parseInt(KTUtil.css(_element, 'marginBottom')) + parseInt(KTUtil.css(_element, 'marginTop')));\n\n\t\t\t\t\treturn height;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t_menuObject = new KTMenu(_element, {\n\t\t\t// Vertical scroll\n\t\t\tscroll: scroll,\n\n\t\t\t// Submenu setup\n\t\t\tsubmenu: {\n\t\t\t\tdesktop: menuDesktopMode,\n\t\t\t\ttablet: 'accordion', // menu set to accordion in tablet mode\n\t\t\t\tmobile: 'accordion' // menu set to accordion in mobile mode\n\t\t\t},\n\n\t\t\t// Accordion setup\n\t\t\taccordion: {\n\t\t\t\texpandAll: false // allow having multiple expanded accordions in the menu\n\t\t\t}\n\t\t});\n\t}\n\n var _initHover = function() {\n // Handle Minimized Aside Hover\n\t\tif (KTUtil.hasClass(_body, 'aside-fixed') && KTUtil.hasClass(_body, 'aside-minimize-hoverable')) {\n\t\t\tvar insideTm;\n\t\t\tvar outsideTm;\n\n // Handle Aside Hover Mode\n\t\t\tKTUtil.addEvent(_element, 'mouseenter', function(e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (KTUtil.isBreakpointUp('lg') === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (outsideTm) {\n\t\t\t\t\tclearTimeout(outsideTm);\n\t\t\t\t\toutsideTm = null;\n\t\t\t\t}\n\n if (insideTm) {\n\t\t\t\t\tclearTimeout(insideTm);\n\t\t\t\t\tinsideTm = null;\n\t\t\t\t}\n\n\t\t\t\tinsideTm = setTimeout(function() {\n\t\t\t\t\tif (KTUtil.hasClass(_body, 'aside-minimize') && KTUtil.isBreakpointUp('lg')) {\n\t\t\t\t\t\t// Hover class\n\t\t\t\t\t\tKTUtil.addClass(_body, 'aside-minimize-hover');\n\n\t\t\t\t\t\tKTLayoutAsideMenu.getMenu().scrollUpdate();\n\t\t\t\t\t\tKTLayoutAsideMenu.getMenu().scrollTop();\n\t\t\t\t\t}\n\t\t\t\t}, 50);\n\t\t\t});\n\n\t\t\tKTUtil.addEvent(KTLayoutAside.getElement(), 'mouseleave', function(e) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (KTUtil.isBreakpointUp('lg') === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (insideTm) {\n\t\t\t\t\tclearTimeout(insideTm);\n\t\t\t\t\tinsideTm = null;\n\t\t\t\t}\n\n if (outsideTm) {\n\t\t\t\t\tclearTimeout(outsideTm);\n\t\t\t\t\toutsideTm = null;\n\t\t\t\t}\n\n\t\t\t\toutsideTm = setTimeout(function() {\n\t\t\t\t if (KTUtil.hasClass(_body, 'aside-minimize-hover') && KTUtil.isBreakpointUp('lg')) {\n\t\t\t\t\t KTUtil.removeClass(_body, 'aside-minimize-hover');\n\n\t\t\t\t\t\t// Hover class\n KTLayoutAsideMenu.getMenu().scrollUpdate();\n\t\t\t\t\t\tKTLayoutAsideMenu.getMenu().scrollTop();\n\t\t\t\t\t}\n\t\t\t\t}, 100);\n\t\t\t});\n\t\t}\n\t}\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _body = KTUtil.getBody();\n _element = KTUtil.getById(id);\n\n if (!_element) {\n return;\n }\n\n // Initialize menu\n _init();\n _initHover();\n\t\t},\n\n\t\tgetElement: function() {\n\t\t\treturn _element;\n\t\t},\n\n getMenu: function() {\n\t\t\treturn _menuObject;\n\t\t},\n\n pauseDropdownHover: function(time) {\n\t\t\tif (_menuObject) {\n\t\t\t\t_menuObject.pauseDropdownHover(time);\n\t\t\t}\n\t\t},\n\n\t\tcloseMobileOffcanvas: function() {\n\t\t\tif (_menuObject && KTUtil.isMobileDevice()) {\n\t\t\t\t_menuObject.hide();\n\t\t\t}\n\t\t}\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutAsideMenu;\n}\n","\"use strict\";\n\nvar KTLayoutAsideToggle = function() {\n // Private properties\n var _body;\n var _element;\n var _toggleObject;\n\n\t// Initialize\n\tvar _init = function() {\n\t\t_toggleObject = new KTToggle(_element, _body, {\n\t\t\ttargetState: 'aside-minimize',\n\t\t\ttoggleState: 'active'\n\t\t});\n\n\t\t_toggleObject.on('toggle', function(toggle) {\n // Update sticky card\n if (typeof KTLayoutStickyCard !== 'undefined') {\n KTLayoutStickyCard.update();\n }\n\n // Pause header menu dropdowns\n if (typeof KTLayoutHeaderMenu !== 'undefined') {\n KTLayoutHeaderMenu.pauseDropdownHover(800);\n }\n\n // Pause aside menu dropdowns\n if (typeof KTLayoutAsideMenu !== 'undefined') {\n KTLayoutAsideMenu.pauseDropdownHover(800);\n }\n\n // Remember state in cookie\n\t\t\tKTCookie.setCookie('kt_aside_toggle_state', toggle.getState());\n\t\t\t// to set default minimized left aside use this cookie value in your\n\t\t\t// server side code and add \"kt-primary--minimize aside-minimize\" classes to\n\t\t\t// the body tag in order to initialize the minimized left aside mode during page loading.\n\t\t});\n\n\t\t_toggleObject.on('beforeToggle', function(toggle) {\n\t\t\tif (KTUtil.hasClass(_body, 'aside-minimize') === false && KTUtil.hasClass(_body, 'aside-minimize-hover')) {\n\t\t\t\tKTUtil.removeClass(_body, 'aside-minimize-hover');\n\t\t\t}\n\t\t});\n\t}\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _element = KTUtil.getById(id);\n _body = KTUtil.getBody();\n\n if (!_element) {\n return;\n }\n\n // Initialize\n _init();\n\t\t},\n\n getElement: function() {\n return _element;\n },\n\n getToggle: function() {\n\t\t\treturn _toggleObject;\n\t\t},\n\n\t\tonToggle: function(handler) {\n\t\t\tif (typeof _toggleObject.element !== 'undefined') {\n\t\t\t\t_toggleObject.on('toggle', handler);\n\t\t\t}\n\t\t}\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutAsideToggle;\n}\n","\"use strict\";\n\nvar KTLayoutAside = function() {\n // Private properties\n var _body;\n var _element;\n var _offcanvasObject;\n\n // Private functions\n\t// Initialize\n\tvar _init = function() {\n\t\tvar offcanvasClass = KTUtil.hasClass(_element, 'aside-offcanvas-default') ? 'aside-offcanvas-default' : 'aside';\n\n // Initialize mobile aside offcanvas\n\t\t_offcanvasObject = new KTOffcanvas(_element, {\n\t\t\tbaseClass: offcanvasClass,\n\t\t\toverlay: true,\n\t\t\tcloseBy: 'kt_aside_close_btn',\n\t\t\ttoggleBy: {\n\t\t\t\ttarget: 'kt_aside_mobile_toggle',\n\t\t\t\tstate: 'mobile-toggle-active'\n\t\t\t}\n\t\t});\n\t}\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _element = KTUtil.getById(id);\n _body = KTUtil.getBody();\n\n if (!_element) {\n return;\n }\n\n // Initialize\n _init();\n },\n\n getElement: function() {\n return _element;\n },\n\n getOffcanvas: function() {\n return _offcanvasObject;\n },\n\n isFixed: function() {\n return KTUtil.hasClass(_body, 'aside-fixed');\n },\n\n isMinimized: function() {\n return (KTUtil.hasClass(_body, 'aside-fixed') && KTUtil.hasClass(_body, 'aside-minimize'));\n },\n\n isHoverable: function() {\n return (KTUtil.hasClass(_body, 'aside-fixed') && KTUtil.hasClass(_body, 'aside-minimize-hoverable'));\n }\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutAside;\n}\n","\"use strict\";\n\nvar KTLayoutBrand = function() {\n // Private properties\n var _element;\n\n // Private functions\n var _getHeight = function() {\n var height = 0;\n\n if (_element) {\n height = KTUtil.actualHeight(_element);\n }\n\n return height;\n }\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _element = KTUtil.getById(id);\n\n if (!_element) {\n return;\n }\n\t\t},\n\n getElement: function() {\n return _element;\n },\n\n getHeight: function() {\n return _getHeight();\n }\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutBrand;\n}\n","\"use strict\";\n\nvar KTLayoutContent = function() {\n // Private properties\n var _element;\n\n\t// Private functions\n\tvar _getHeight = function() {\n\t\tvar height;\n\n\t\theight = KTUtil.getViewPort().height;\n\n if (_element) {\n height = height - parseInt(KTUtil.css(_element, 'paddingTop')) - parseInt(KTUtil.css(_element, 'paddingBottom'));\n }\n\n height = height - KTLayoutHeader.getHeight();\n height = height - KTLayoutSubheader.getHeight();\n height = height - KTLayoutFooter.getHeight();\n\n\t\treturn height;\n\t}\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _element = KTUtil.getById(id);\n\t\t},\n\n\t\tgetHeight: function() {\n\t\t\treturn _getHeight();\n\t\t},\n\n getElement: function() {\n return _element;\n }\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutContent;\n}\n","\"use strict\";\n\nvar KTLayoutFooter = function() {\n // Private properties\n var _element;\n\n\t// Private functions\n\tvar _getHeight = function() {\n\t\tvar height = 0;\n\n if (_element) {\n height = KTUtil.actualHeight(_element);\n }\n\n\t\treturn height;\n\t}\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _element = KTUtil.getById(id);\n\t\t},\n\n\t\tgetHeight: function() {\n\t\t\treturn _getHeight();\n\t\t},\n\n getElement: function() {\n return _element;\n }\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutFooter;\n}\n","\"use strict\";\n\nvar KTLayoutHeaderMenu = function() {\n // Private properties\n\tvar _menuElement;\n var _menuObject;\n var _offcanvasElement;\n var _offcanvasObject;\n\n // Private functions\n\tvar _init = function() {\n\t\t_offcanvasObject = new KTOffcanvas(_offcanvasElement, {\n\t\t\toverlay: true,\n\t\t\tbaseClass: 'header-menu-wrapper',\n\t\t\tcloseBy: 'kt_header_menu_mobile_close_btn',\n\t\t\ttoggleBy: {\n\t\t\t\ttarget: 'kt_header_mobile_toggle',\n\t\t\t\tstate: 'mobile-toggle-active'\n\t\t\t}\n\t\t});\n\t\t\n\t\t_menuObject = new KTMenu(_menuElement, {\n\t\t\tsubmenu: {\n\t\t\t\tdesktop: 'dropdown',\n\t\t\t\ttablet: 'accordion',\n\t\t\t\tmobile: 'accordion'\n\t\t\t},\n\t\t\taccordion: {\n\t\t\t\tslideSpeed: 200, // accordion toggle slide speed in milliseconds\n\t\t\t\texpandAll: false // allow having multiple expanded accordions in the menu\n\t\t\t}\n\t\t});\n\n\t\t// Close aside offcanvas panel before page reload On tablet and mobile\n _menuObject.on('linkClick', function(menu) {\n if (KTUtil.isBreakpointDown('lg')) { // Tablet and mobile mode\n _offcanvasObject.hide(); // Hide offcanvas after general link click\n }\n });\n\t}\n\n // Public methods\n\treturn {\n init: function(menuId, offcanvasId) {\n _menuElement = KTUtil.getById(menuId);\n _offcanvasElement = KTUtil.getById(offcanvasId);\n\n if (!_menuElement) {\n return;\n }\n\n // Initialize menu\n _init();\n\t\t},\n\n\t\tgetMenuElement: function() {\n\t\t\treturn _menuElement;\n\t\t},\n\n getOffcanvasElement: function() {\n\t\t\treturn _offcanvasElement;\n\t\t},\n\n getMenu: function() {\n\t\t\treturn _menuObject;\n\t\t},\n\n\t\tpauseDropdownHover: function(time) {\n\t\t\tif (_menuObject) {\n\t\t\t\t_menuObject.pauseDropdownHover(time);\n\t\t\t}\n\t\t},\n\n getOffcanvas: function() {\n\t\t\treturn _offcanvasObject;\n\t\t},\n\n\t\tcloseMobileOffcanvas: function() {\n\t\t\tif (_menuObject && KTUtil.isMobileDevice()) {\n\t\t\t\t_offcanvasObject.hide();\n\t\t\t}\n\t\t}\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutHeaderMenu;\n}\n","\"use strict\";\n\nvar KTLayoutHeaderTopbar = function() {\n // Private properties\n\tvar _toggleElement;\n var _toggleObject;\n\n // Private functions\n var _init = function() {\n _toggleObject = new KTToggle(_toggleElement, KTUtil.getBody(), {\n targetState: 'topbar-mobile-on',\n toggleState: 'active',\n });\n }\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _toggleElement = KTUtil.getById(id);\n\n\t\t\tif (!_toggleElement) {\n return;\n }\n\n // Initialize\n _init();\n\t\t},\n\n getToggleElement: function() {\n return _toggleElement;\n }\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutHeaderTopbar;\n}\n","\"use strict\";\n\nvar KTLayoutHeader = function() {\n // Private properties\n var _element;\n var _elementForMobile;\n var _object;\n\n\t// Private functions\n // Get Height\n var _getHeight = function() {\n var height = 0;\n\n if (_element) {\n height = KTUtil.actualHeight(_element) + 1;\n }\n\n return height;\n }\n\n // Get Height\n var _getHeightForMobile = function() {\n var height;\n\n height = KTUtil.actualHeight(_elementForMobile);\n\n return height;\n }\n\n // Public Methods\n\treturn {\n\t\tinit: function(id, idForMobile) {\n _element = KTUtil.getById(id);\n _elementForMobile = KTUtil.getById(idForMobile);\n\n if (!_element) {\n return;\n }\n\t\t},\n\n isFixed: function() {\n return KTUtil.hasClass(KTUtil.getBody(), 'header-fixed')\n },\n\n isFixedForMobile: function() {\n return KTUtil.hasClass(KTUtil.getBody(), 'header-mobile-fixed')\n },\n\n getElement: function() {\n return _element;\n },\n\n getElementForMobile: function() {\n return _elementForMobile;\n },\n\n getHeader: function() {\n return _object;\n },\n\n getHeight: function() {\n return _getHeight();\n },\n\n getHeightForMobile: function() {\n return _getHeightForMobile();\n }\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutHeader;\n}\n","\"use strict\";\n\nvar KTLayoutSubheader = function() {\n // Private properties\n var _element;\n\n // Private functions\n var _getHeight = function() {\n var height = 0;\n\n if (_element) {\n height = KTUtil.actualHeight(_element);\n }\n\n return height;\n }\n\n // Public methods\n\treturn {\n\t\tinit: function(id) {\n _element = KTUtil.getById(id);\n\n if (!_element) {\n return;\n }\n\t\t},\n\n isFixed: function() {\n return KTUtil.hasClass(KTUtil.getBody(), 'subheader-fixed');\n },\n\n getElement: function() {\n return _element;\n },\n\n getHeight: function() {\n return _getHeight();\n }\n\t};\n}();\n\n// Webpack support\nif (typeof module !== 'undefined') {\n\tmodule.exports = KTLayoutSubheader;\n}\n","\"use strict\";\n\n// Initialization\nKTUtil.ready(function() {\n ////////////////////////////////////////////////////\n // Layout Base Partials(mandatory for core layout)//\n ////////////////////////////////////////////////////\n\n // Init Desktop & Mobile Headers\n if (typeof KTLayoutHeader !== 'undefined') {\n KTLayoutHeader.init('kt_header', 'kt_header_mobile');\n }\n\n // Init Header Menu\n if (typeof KTLayoutHeaderMenu !== 'undefined') {\n KTLayoutHeaderMenu.init('kt_header_menu', 'kt_header_menu_wrapper');\n }\n\n // Init Header Topbar For Mobile Mode\n if (typeof KTLayoutHeaderTopbar !== 'undefined') {\n KTLayoutHeaderTopbar.init('kt_header_mobile_topbar_toggle');\n }\n\n // Init Brand Panel For Logo\n if (typeof KTLayoutBrand !== 'undefined') {\n KTLayoutBrand.init('kt_brand');\n }\n\n // Init Aside\n if (typeof KTLayoutAside !== 'undefined') {\n KTLayoutAside.init('kt_aside');\n }\n\n // Init Aside Menu Toggle\n if (typeof KTLayoutAsideToggle !== 'undefined') {\n KTLayoutAsideToggle.init('kt_aside_toggle');\n }\n\n // Init Aside Menu\n if (typeof KTLayoutAsideMenu !== 'undefined') {\n KTLayoutAsideMenu.init('kt_aside_menu');\n }\n\n // Init Subheader\n if (typeof KTLayoutSubheader !== 'undefined') {\n KTLayoutSubheader.init('kt_subheader');\n }\n\n // Init Content\n if (typeof KTLayoutContent !== 'undefined') {\n KTLayoutContent.init('kt_content');\n }\n\n // Init Footer\n if (typeof KTLayoutFooter !== 'undefined') {\n KTLayoutFooter.init('kt_footer');\n }\n\n\n //////////////////////////////////////////////\n // Layout Extended Partials(optional to use)//\n //////////////////////////////////////////////\n\n // Init Scrolltop\n if (typeof KTLayoutScrolltop !== 'undefined') {\n KTLayoutScrolltop.init('kt_scrolltop');\n }\n\n // Init Sticky Card\n if (typeof KTLayoutStickyCard !== 'undefined') {\n KTLayoutStickyCard.init('kt_page_sticky_card');\n }\n\n // Init Stretched Card\n if (typeof KTLayoutStretchedCard !== 'undefined') {\n KTLayoutStretchedCard.init('kt_page_stretched_card');\n }\n\n // Init Code Highlighter & Preview Blocks(used to demonstrate the theme features)\n if (typeof KTLayoutExamples !== 'undefined') {\n KTLayoutExamples.init();\n }\n\n // Init Demo Selection Panel\n if (typeof KTLayoutDemoPanel !== 'undefined') {\n KTLayoutDemoPanel.init('kt_demo_panel');\n }\n\n // Init Chat App(quick modal chat)\n if (typeof KTLayoutChat !== 'undefined') {\n KTLayoutChat.init('kt_chat_modal');\n }\n\n // Init Quick Actions Offcanvas Panel\n if (typeof KTLayoutQuickActions !== 'undefined') {\n KTLayoutQuickActions.init('kt_quick_actions');\n }\n\n // Init Quick Notifications Offcanvas Panel\n if (typeof KTLayoutQuickNotifications !== 'undefined') {\n KTLayoutQuickNotifications.init('kt_quick_notifications');\n }\n\n // Init Quick Offcanvas Panel\n if (typeof KTLayoutQuickPanel!== 'undefined') {\n KTLayoutQuickPanel.init('kt_quick_panel');\n }\n\n // Init Quick User Panel\n if (typeof KTLayoutQuickUser !== 'undefined') {\n KTLayoutQuickUser.init('kt_quick_user');\n }\n\n // Init Quick Search Panel\n if (typeof KTLayoutQuickSearch !== 'undefined') {\n KTLayoutQuickSearch.init('kt_quick_search');\n }\n\n // Init Quick Cart Panel\n if (typeof KTLayoutQuickCartPanel !== 'undefined') {\n KTLayoutQuickCartPanel.init('kt_quick_cart');\n }\n\n // Init Dropdown Search\n if (typeof KTLayoutSearch !== 'undefined') {\n KTLayoutSearch().init('kt_quick_search_dropdown');\n }\n\n // Init Offcanvas Search\n if (typeof KTLayoutSearchOffcanvas !== 'undefined') {\n KTLayoutSearchOffcanvas().init('kt_quick_search_offcanvas');\n }\n});\n"],"names":["isRTL","i18n","locale","getParameterByName","name","url","window","location","href","replace","results","RegExp","exec","decodeURIComponent","toggleField","value","element","container","isEmpty","$","addClass","text","removeClass","toggleFieldWithHtml","toggleValue","htmlValue","html","subject","Object","keys","length","csrfToken","_document$head$queryS","document","head","querySelector","content","isTrue","val","updateQueryStringParameter","uri","key","re","separator","indexOf","match","truncate","str","num","slice","getCookie","cname","ca","cookie","split","i","c","charAt","substring","ajaxForm","form","onSuccess","submit","e","preventDefault","currentTarget","data","serialize","ajax","type","attr","dataType","success","fetchJSON","method","Promise","resolve","reject","contentType","headers","then","response","error","dataOrNA","stub","capitalize","toUpperCase","getPropertyByPath","obj","path","reduce","prev","curr","setPropertyByPath","pathArray","Array","isArray","acc","undefined","endsWith","concat","selectedIds","objects","ids","forEach","v","checked","checkedCount","count","availableContentSpace","getElementById","footer","contentVerticalPaddings","parseInt","getComputedStyle","paddingBottom","paddingTop","innerHeight","offsetTop","offsetHeight","parseFloatOr0","parsed","parseFloat","isNaN","Infinity","generateHexColor","Math","random","toString","padStart","debounce","callback","wait","timeoutId","args","clearTimeout","setTimeout","initEscButtonEvent","elem","keyup","trigger","fetchConfig","async","res","gon","mainConfig","clone","json","groupBy","array","keyFunc","result","currentValue","push","getFormData","formData","FormData","File","includes","constructor","append","prop","String","Number","Boolean","deepKey","item","index","formatPhoneNumber","phone","initMultiSelectWithSearch","Utils","fn","select2","amd","require","Dropdown","DropdownSearch","CloseOnSelect","AttachBody","dropdownAdapter","Decorate","newOptions","options","arrayXor","arrays","countMap","Map","flat","set","get","entries","filter","_","map","KTApp","settings","initTooltip","el","theme","width","tooltip","template","initTooltips","each","this","initPopover","skin","triggerValue","popover","initPopovers","initCard","KTCard","initCards","init","settingsArray","initComponents","KTUtil","scrollInit","mobileNativeScroll","handleWindowResize","rememberPosition","on","closest","hide","fileName","next","Sticky","initStickyCard","$toggler","target","find","$detachedDropdownMenu","detach","css","position","my","at","of","relatedTarget","initSticky","initAbsoluteDropdown","context","dropdownMenu","block","spinner","extend","opacity","overlayColor","size","state","centerX","centerY","message","shadow","classes","createElement","prepend","innerHTML","actualWidth","remove","params","top","left","border","padding","backgroundColor","overlayCSS","cursor","zIndex","onUnblock","blockUI","unblock","unblockUI","blockPage","unblockPage","getSettings","module","exports","ready","KTAppSettings","onload","getByTagName","elementId","the","getById","body","getBody","defaultOptions","toggleSpeed","sticky","releseOnReverse","offset","Plugin","construct","has","build","events","deepExtend","header","child","addEvent","reload","toggle","addEventListener","onScrollSticky","st","getScrollTop","hasClass","eventTrigger","updateSticky","resetSticky","right","Function","call","tooltips","querySelectorAll","setContent","getSelf","expand","collapse","slideUp","slideDown","event","one","handler","fired","setDefaults","destroySticky","removeEventListener","apply","KTCookie","matches","setCookie","assign","expires","Date","toUTCString","updatedCookie","encodeURIComponent","optionKey","hasOwnProperty","optionValue","deleteCookie","editMode","input","wrapper","cancel","src","hidden","files","reader","FileReader","readAsDataURL","scroll","accordion","slideSpeed","autoScroll","autoScrollSpeed","expandAll","dropdown","timeout","reset","eventHandlers","pauseDropdownHoverTime","uid","getUniqueID","update","resetSubmenuProps","handleSubmenuAccordion","getSubmenuMode","isConditionalSubmenuDropdown","handleSubmenuDrodownHoverEnter","handleSubmenuDrodownHoverExit","handleSubmenuDropdownClick","handleSubmenuDropdownTabClick","handleLinkClick","height","off","scrollDestroy","windowScroll","resetHeightOnDestroy","scrollUpdate","scrollTop","isBreakpointUp","hasAttr","isset","submenu","hasClasses","desktop","mode","default","isBreakpointDown","tablet","mobile","submenus","findAll","len","hasAttribute","getAttribute","resumeDropdownHover","removeAttribute","showSubmenuDropdown","time","hideSubmenuDropdown","setAttribute","hideSubmenuDropdowns","handleSubmenuDropdownClose","shown","query","li","speed","subnav","closables","children","el_","submenu_","scrollToItem","scrollTo","classAlso","items","j","cnt","list","contains","isOffscreen","createSubmenuDropdownClickDropoff","dropoff","appendChild","stopPropagation","pauseDropdownHover","date","getTime","resetActiveItem","parents","i_","len_","setActiveItem","getBreadcrumbs","breadcrumbs","link","title","submenuLink","reverse","getPageTitle","removeEvent","scrollReInit","hideDropdown","hideDropdowns","addResizeHandler","parentNode","attrCustom","classBase","baseClass","classShown","classOverlay","toggleBy","closeBy","isShown","show","toggleClass","classCustom","overlay","insertAfter","removeAttr","id","toggleElement","targetElement","targetToggleMode","targetState","toggleState","toggleOn","toggleOff","getState","Element","prototype","msMatchesSelector","webkitMatchesSelector","s","ancestor","documentElement","parentElement","removeChild","lastTime","vendors","x","requestAnimationFrame","cancelAnimationFrame","currTime","timeToCall","max","Document","DocumentFragment","defineProperty","configurable","enumerable","writable","argArr","arguments","docFrag","createDocumentFragment","argItem","isNode","Node","createTextNode","insertBefore","firstChild","getAttributeNames","attributes","KTUtilElementDataStore","KTUtilElementDataStoreID","KTUtilDelegatedEventHandlers","resizeHandlers","breakpoints","sm","md","lg","xl","_windowResizeHandler","throttle","timer","_runResizeHandlers","removeResizeHandler","runResizeHandlers","resize","Event","dispatchEvent","evt","createEvent","initUIEvent","getURLParam","paramName","search","unescape","isMobileDevice","test","getViewPort","getBreakpoint","navigator","userAgent","isDesktopDevice","a","isInResponsiveRange","breakpoint","prefix","floor","stone","Error","shift","getHighestZindex","hasFixedPositionedParent","sleep","milliseconds","start","getRandomInt","min","isAngularVersion","Zone","out","getByTag","getElementsByTagName","getByClass","getElementsByClassName","classesArr","trim","className","classList","classNames","add","triggerCustomEvent","eventName","CustomEvent","detail","initCustomEvent","triggerEvent","node","doc","ownerDocument","nodeType","eventClass","bubbles","initEvent","synthetic","fireEvent","createEventObject","string","eventTriggered","dataset","triggered","parent","referenceNode","nextSibling","selector","matchesSelector","mozMatchesSelector","oMatchesSelector","log","childNodes","l","p","f","tagName","customDataTag","outerWidth","margin","offsetWidth","rect","win","getClientRects","getBoundingClientRect","defaultView","pageYOffset","pageXOffset","outerHeight","withMargin","style","marginTop","marginBottom","visible","animate","from","to","duration","easing","done","easings","linear","t","b","d","rAF","change","performance","now","loop","timestamp","actualCss","cache","HTMLElement","cssText","actualHeight","getScroll","self","browserSupportsBoxModel","styleProp","toLowerCase","getPropertyValue","currentStyle","letter","oldLeft","oldRsLeft","runtimeStyle","pixelLeft","slide","dir","recalcMaxHeight","calcHeight","calcPaddingTop","calcPaddingBottom","display","overflow","eventId","targets","callee","hash","chr","charCodeAt","animateClass","animationName","animation","animations","OAnimation","MozAnimation","WebkitAnimation","msAnimation","transitionEnd","transition","transitions","OTransition","MozTransition","WebkitTransition","msTransition","animationEnd","animateDelay","animateDuration","targetPos","scrollPos","attachEvent","readyState","numberString","nStr","x1","x2","rgx","detectIE","ua","msie","rv","edge","ps","attrs","attrName","optionName","filterBoolean","mobileHeight","disableForMobile","destroy","desktopNativeScroll","PerfectScrollbar","pos","wheelSpeed","swipeEasing","wheelPropagation","minScrollbarLength","maxScrollbarLength","suppressScrollX","scrollUpdateAll","scrollers","resetAll","setProperty","setHTML","getHTML","getDocumentHeight","scrollHeight","clientHeight","scrollingElement","changeColor","col","amt","usePound","r","g","func","delay","btnWait","cls","disable","caption","btnRelease","direction","windowWidth","windowHeight","_body","_element","_menuObject","KTLayoutAsideMenu","menuDesktopMode","insideTm","outsideTm","KTLayoutBrand","getHeight","KTMenu","getMenu","KTLayoutAside","getElement","closeMobileOffcanvas","_toggleObject","KTLayoutAsideToggle","KTToggle","KTLayoutStickyCard","KTLayoutHeaderMenu","getToggle","onToggle","_offcanvasObject","offcanvasClass","KTOffcanvas","getOffcanvas","isFixed","isMinimized","isHoverable","KTLayoutContent","KTLayoutHeader","KTLayoutSubheader","KTLayoutFooter","_menuElement","_offcanvasElement","menuId","offcanvasId","menu","getMenuElement","getOffcanvasElement","_toggleElement","KTLayoutHeaderTopbar","getToggleElement","_elementForMobile","idForMobile","isFixedForMobile","getElementForMobile","getHeader","getHeightForMobile","KTLayoutScrolltop","KTLayoutStretchedCard","KTLayoutExamples","KTLayoutDemoPanel","KTLayoutChat","KTLayoutQuickActions","KTLayoutQuickNotifications","KTLayoutQuickPanel","KTLayoutQuickUser","KTLayoutQuickSearch","KTLayoutQuickCartPanel","KTLayoutSearch","KTLayoutSearchOffcanvas"],"sourceRoot":""}