{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/packs/private/scripts.js","webpack:///./app/javascript/js/private/components/util.js","webpack:///./app/javascript/js/private/components/app.js","webpack:///./app/javascript/js/private/components/card.js","webpack:///./app/javascript/js/private/components/cookie.js","webpack:///./app/javascript/js/private/components/dialog.js","webpack:///./app/javascript/js/private/components/header.js","webpack:///./app/javascript/js/private/components/image-input.js","webpack:///./app/javascript/js/private/components/menu.js","webpack:///./app/javascript/js/private/components/offcanvas.js","webpack:///./app/javascript/js/private/components/scrolltop.js","webpack:///./app/javascript/js/private/components/toggle.js","webpack:///./app/javascript/js/private/components/wizard.js","webpack:///./app/javascript/js/private/layout/base/aside.js","webpack:///./app/javascript/js/private/layout/base/aside-menu.js","webpack:///./app/javascript/js/private/layout/base/content.js","webpack:///./app/javascript/js/private/layout/base/footer.js","webpack:///./app/javascript/js/private/layout/base/header.js","webpack:///./app/javascript/js/private/layout/base/header-menu.js","webpack:///./app/javascript/js/private/layout/base/header-topbar.js","webpack:///./app/javascript/js/private/layout/base/sticky-card.js","webpack:///./app/javascript/js/private/layout/base/stretched-card.js","webpack:///./app/javascript/js/private/layout/base/subheader.js","webpack:///./app/javascript/js/private/layout/extended/scrolltop.js","webpack:///./app/javascript/js/private/layout/initialize.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","KTUtil","require","KTApp","KTCard","KTCookie","KTDialog","KTHeader","KTImageInput","KTMenu","KTOffcanvas","KTScrolltop","KTToggle","KTWizard","KTLayoutAside","KTLayoutAsideMenu","KTLayoutContent","KTLayoutFooter","KTLayoutHeader","KTLayoutHeaderMenu","KTLayoutHeaderTopbar","KTLayoutStickyCard","KTLayoutStretchedCard","KTLayoutSubheader","KTLayoutScrolltop","Element","matches","msMatchesSelector","webkitMatchesSelector","closest","ancestor","this","document","documentElement","contains","parentElement","elem","length","remove","parentNode","removeChild","lastTime","vendors","x","requestAnimationFrame","cancelAnimationFrame","callback","currTime","Date","getTime","timeToCall","Math","max","id","setTimeout","clearTimeout","Document","DocumentFragment","forEach","item","configurable","writable","argArr","Array","slice","arguments","docFrag","createDocumentFragment","argItem","isNode","Node","appendChild","createTextNode","String","insertBefore","firstChild","undefined","getAttributeNames","attributes","result","KTUtilElementDataStore","KTUtilElementDataStoreID","KTUtilDelegatedEventHandlers","resizeHandlers","breakpoints","_windowResizeHandler","sm","md","lg","xl","addEventListener","throttle","timer","_runResizeHandlers","init","settings","addResizeHandler","push","removeResizeHandler","runResizeHandlers","resize","Event","dispatchEvent","evt","createEvent","initUIEvent","getURLParam","paramName","val","params","location","search","substring","split","unescape","isMobileDevice","test","getViewPort","width","getBreakpoint","navigator","userAgent","match","isDesktopDevice","e","a","body","height","isInResponsiveRange","breakpoint","isBreakpointUp","isBreakpointDown","getUniqueID","prefix","floor","random","isset","obj","keys","stone","indexOf","Error","shift","getHighestZindex","el","position","css","parseInt","isNaN","hasFixedPositionedParent","sleep","milliseconds","start","getRandomInt","min","isAngularVersion","Zone","deepExtend","out","extend","getById","getElementById","getByTag","query","getElementsByTagName","getByTagName","getByClass","getElementsByClassName","getBody","hasClasses","classes","classesArr","hasClass","trim","className","classList","RegExp","addClass","classNames","add","removeClass","replace","triggerCustomEvent","eventName","data","event","CustomEvent","detail","initCustomEvent","triggerEvent","node","doc","ownerDocument","nodeType","eventClass","bubbles","initEvent","synthetic","fireEvent","createEventObject","index","children","string","eventTriggered","currentTarget","dataset","triggered","find","parent","querySelector","findAll","querySelectorAll","insertAfter","referenceNode","nextSibling","parents","selector","matchesSelector","mozMatchesSelector","oMatchesSelector","log","childNodes","child","f","tagName","set","customDataTag","has","outerWidth","margin","parseFloat","offsetWidth","offset","rect","win","getClientRects","getBoundingClientRect","defaultView","top","pageYOffset","left","pageXOffset","outerHeight","style","withMargic","offsetHeight","getComputedStyle","marginTop","marginBottom","visible","attr","getAttribute","setAttribute","hasAttr","removeAttr","removeAttribute","animate","from","to","duration","update","easing","done","easings","b","linear","rAF","change","performance","now","loop","timestamp","time","actualCss","prop","cache","HTMLElement","cssText","actualHeight","actualWidth","getScroll","element","method","self","browserSupportsBoxModel","styleProp","toLowerCase","getPropertyValue","currentStyle","str","letter","toUpperCase","oldLeft","oldRsLeft","runtimeStyle","pixelLeft","slide","dir","speed","recalcMaxHeight","calcHeight","calcPaddingTop","calcPaddingBottom","paddingTop","paddingBottom","display","overflow","slideUp","slideDown","show","hide","addEvent","type","handler","one","removeEvent","removeEventListener","on","eventId","targets","target","j","off","callee","hash","charCodeAt","animateClass","animationName","animation","animations","OAnimation","MozAnimation","WebkitAnimation","msAnimation","transitionEnd","transition","transitions","OTransition","MozTransition","WebkitTransition","msTransition","animationEnd","animateDelay","animateDuration","scrollTo","targetPos","scrollPos","scrollTop","isArray","ready","attachEvent","readyState","isEmpty","numberString","nStr","x1","x2","rgx","detectIE","ua","msie","rv","edge","isRTL","html","scrollInit","options","ps","attrs","attrName","includes","optionName","filterBoolean","Function","mobileHeight","mobileNativeScroll","disableForMobile","desktopNativeScroll","windowScroll","PerfectScrollbar","resetHeightOnDestroy","destroy","scrollDestroy","wheelSpeed","swipeEasing","wheelPropagation","minScrollbarLength","maxScrollbarLength","suppressScrollX","handleWindowResize","scrollUpdate","scrollUpdateAll","scrollers","len","resetAll","setProperty","setHTML","innerHTML","getHTML","getCssVariableValue","variableName","hex","getDocumentHeight","scrollHeight","clientHeight","getScrollTop","scrollingElement","colorDarken","color","amount","subtractLight","cc","toString","concat","colorLighten","addLight","func","delay","debounce","btnWait","cls","message","caption","btnRelease","onDOMContentLoaded","isOffscreen","direction","windowWidth","windowHeight","KTAppSettings","onload","initTooltip","initTooltips","initPopover","initPopovers","initCard","initCards","theme","trigger","$","tooltip","template","each","skin","triggerValue","popover","settingsArray","initComponents","rememberPosition","fileName","next","Sticky","$toggler","$detachedDropdownMenu","detach","append","my","at","of","relatedTarget","initSticky","_initSticky","apply","initAbsoluteDropdown","context","dropdownMenu","block","spinner","opacity","overlayColor","size","state","centerX","centerY","shadow","createElement","prepend","border","padding","backgroundColor","overlayCSS","cursor","zIndex","onUnblock","blockUI","unblock","unblockUI","blockPage","unblockPage","getSettings","elementId","the","defaultOptions","toggleSpeed","sticky","releseOnReverse","Plugin","construct","build","events","header","footer","preventDefault","reload","toggle","onScrollSticky","st","eventTrigger","updateSticky","resetSticky","right","setContent","getSelf","expand","collapse","fired","setDefaults","destroySticky","getCookie","cookie","decodeURIComponent","setCookie","assign","path","expires","toUTCString","updatedCookie","encodeURIComponent","optionKey","optionValue","deleteCookie","placement","shown","hidden","desktop","tabletAndMobile","eventTriggerState","lastScrollTop","hasAttribute","args","editMode","input","wrapper","cancel","src","files","reader","FileReader","readAsDataURL","scroll","accordion","slideSpeed","autoScroll","autoScrollSpeed","expandAll","dropdown","timeout","reset","eventHandlers","pauseDropdownHoverTime","uid","resetSubmenuProps","handleSubmenuAccordion","getSubmenuMode","isConditionalSubmenuDropdown","handleSubmenuDrodownHoverEnter","handleSubmenuDrodownHoverExit","handleSubmenuDropdownClick","handleSubmenuDropdownTabClick","handleLinkClick","submenu","tablet","mobile","submenus","resumeDropdownHover","showSubmenuDropdown","hideSubmenuDropdown","hideSubmenuDropdowns","handleSubmenuDropdownClose","li","subnav","closables","el_","submenu_","scrollToItem","classAlso","items","cnt","list","createSubmenuDropdownClickDropoff","dropoff","stopPropagation","pauseDropdownHover","date","resetActiveItem","i_","len_","setActiveItem","getBreadcrumbs","breadcrumbs","link","text","title","href","submenuLink","reverse","getPageTitle","scrollReInit","hideDropdown","hideDropdowns","attrCustom","classBase","baseClass","classShown","classOverlay","toggleBy","closeBy","isShown","toggleClass","classCustom","overlay","handle","targetToggleMode","targetState","toggleState","toggleOn","toggleOff","getState","startStep","clickableSteps","steps","btnSubmit","btnNext","btnPrev","btnLast","btnFirst","currentStep","stopped","totalSteps","goTo","updateUI","getNextStep","getPrevStep","getFirstStep","getLastStep","number","eventHandle","stop","isLastStep","isFirstStep","isBetweenStep","stepType","stepsInfo","stepsContent","nested","goNext","goPrev","goLast","goFirst","getStep","_element","_offcanvasObject","offcanvasClass","getElement","getOffcanvas","_menuObject","menuDesktopMode","getMenu","closeMobileOffcanvas","getHeight","_elementForMobile","_object","idForMobile","isFixed","isFixedForMobile","getElementForMobile","getHeader","getHeightForMobile","_menuElement","_offcanvasElement","_mobileTabPanes","menuId","offcanvasId","mobileTabPane","tabs","_initTabPanesForMobile","getMenuElement","getOffcanvasElement","_toggleElement","getToggleElement","pos","card","cardWidth","_init","cardBody","cardHeader"],"mappings":"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","file":"js/private/scripts-bbdc26f8bf5bef19763d.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 630);\n","// Keenthemes' plugins\nwindow.KTUtil = require('js/private/components/util.js');\nwindow.KTApp = require('js/private/components/app.js');\nwindow.KTCard = require('js/private/components/card.js');\nwindow.KTCookie = require('js/private/components/cookie.js');\nwindow.KTDialog = require('js/private/components/dialog.js');\nwindow.KTHeader = require('js/private/components/header.js');\nwindow.KTImageInput = require('js/private/components/image-input.js');\nwindow.KTMenu = require('js/private/components/menu.js');\nwindow.KTOffcanvas = require('js/private/components/offcanvas.js');\nwindow.KTScrolltop = require('js/private/components/scrolltop.js');\nwindow.KTToggle = require('js/private/components/toggle.js');\nwindow.KTWizard = require('js/private/components/wizard.js');\n//require('js/private/components/datatable/core.datatable.js');\n//require('js/private/components/datatable/datatable.checkbox.js');\n//require('js/private/components/datatable/datatable.rtl.js');\n\n// Metronic js/private/layout base js\nwindow.KTLayoutAside = require('js/private/layout/base/aside.js');\nwindow.KTLayoutAsideMenu = require('js/private/layout/base/aside-menu.js');\nwindow.KTLayoutContent = require('js/private/layout/base/content.js');\nwindow.KTLayoutFooter = require('js/private/layout/base/footer.js');\nwindow.KTLayoutHeader = require('js/private/layout/base/header.js');\nwindow.KTLayoutHeaderMenu = require('js/private/layout/base/header-menu.js');\nwindow.KTLayoutHeaderTopbar = require('js/private/layout/base/header-topbar.js');\nwindow.KTLayoutStickyCard = require('js/private/layout/base/sticky-card.js');\nwindow.KTLayoutStretchedCard = require('js/private/layout/base/stretched-card.js');\nwindow.KTLayoutSubheader = require('js/private/layout/base/subheader.js');\n\n// Metronic js/private/layout extended js\nwindow.KTLayoutScrolltop = require('js/private/layout/extended/scrolltop.js');\n\nrequire('js/private/layout/initialize.js');\n","\"use strict\";\r\n\r\n/**\r\n * @class KTUtil base utilize class that privides helper functions\r\n */\r\n\r\n// Polyfills\r\n/**\r\n * Element.matches() polyfill (simple version)\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\r\n */\r\nif (!Element.prototype.matches) {\r\n\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\n/**\r\n * Element.closest() polyfill\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\r\n */\r\nif (!Element.prototype.closest) {\r\n\tif (!Element.prototype.matches) {\r\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\t}\r\n\tElement.prototype.closest = function (s) {\r\n\t\tvar el = this;\r\n\t\tvar ancestor = this;\r\n\t\tif (!document.documentElement.contains(el)) return null;\r\n\t\tdo {\r\n\t\t\tif (ancestor.matches(s)) return ancestor;\r\n\t\t\tancestor = ancestor.parentElement;\r\n\t\t} while (ancestor !== null);\r\n\t\treturn null;\r\n\t};\r\n}\r\n\r\n/**\r\n * ChildNode.remove() polyfill\r\n * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/\r\n * @author Chris Ferdinandi\r\n * @license MIT\r\n */\r\n(function (elem) {\r\n\tfor (var i = 0; i < elem.length; i++) {\r\n\t\tif (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue;\r\n\t\twindow[elem[i]].prototype.remove = function () {\r\n\t\t\tthis.parentNode.removeChild(this);\r\n\t\t};\r\n\t}\r\n})(['Element', 'CharacterData', 'DocumentType']);\r\n\r\n\r\n//\r\n// requestAnimationFrame polyfill by Erik Möller.\r\n// With fixes from Paul Irish and Tino Zijdel\r\n//\r\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\r\n//\r\n// MIT license\r\n//\r\n(function() {\r\n var lastTime = 0;\r\n var vendors = ['webkit', 'moz'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame =\r\n window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function(callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = window.setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n if (!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\n// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md\r\n(function(arr) {\r\n arr.forEach(function(item) {\r\n if (item.hasOwnProperty('prepend')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'prepend', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function prepend() {\r\n var argArr = Array.prototype.slice.call(arguments),\r\n docFrag = document.createDocumentFragment();\r\n\r\n argArr.forEach(function(argItem) {\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\r\n });\r\n\r\n this.insertBefore(docFrag, this.firstChild);\r\n }\r\n });\r\n });\r\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\r\n\r\n// getAttributeNames\r\nif (Element.prototype.getAttributeNames == undefined) {\r\n Element.prototype.getAttributeNames = function () {\r\n var attributes = this.attributes;\r\n var length = attributes.length;\r\n var result = new Array(length);\r\n for (var i = 0; i < length; i++) {\r\n result[i] = attributes[i].name;\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n// Global variables\r\nwindow.KTUtilElementDataStore = {};\r\nwindow.KTUtilElementDataStoreID = 0;\r\nwindow.KTUtilDelegatedEventHandlers = {};\r\n\r\nvar KTUtil = function() {\r\n var resizeHandlers = [];\r\n\r\n /** @type {object} breakpoints The device width breakpoints **/\r\n var breakpoints = {\r\n sm: 544, // Small screen / phone\r\n md: 768, // Medium screen / tablet\r\n lg: 992, // Large screen / desktop\r\n xl: 1200 // Extra large screen / wide desktop\r\n };\r\n\r\n /**\r\n * Handle window resize event with some\r\n * delay to attach event handlers upon resize complete\r\n */\r\n var _windowResizeHandler = function() {\r\n var _runResizeHandlers = function() {\r\n // reinitialize other subscribed elements\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n var each = resizeHandlers[i];\r\n each.call();\r\n }\r\n };\r\n\r\n var timer;\r\n\r\n window.addEventListener('resize', function() {\r\n KTUtil.throttle(timer, function() {\r\n _runResizeHandlers();\r\n }, 200);\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Class main initializer.\r\n * @param {object} settings.\r\n * @returns null\r\n */\r\n //main function to initiate the theme\r\n init: function(settings) {\r\n if (settings && settings.breakpoints) {\r\n breakpoints = settings.breakpoints;\r\n }\r\n\r\n _windowResizeHandler();\r\n },\r\n\r\n /**\r\n * Adds window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n addResizeHandler: function(callback) {\r\n resizeHandlers.push(callback);\r\n },\r\n\r\n /**\r\n * Removes window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n removeResizeHandler: function(callback) {\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n if (callback === resizeHandlers[i]) {\r\n delete resizeHandlers[i];\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Trigger window resize handlers.\r\n */\r\n runResizeHandlers: function() {\r\n _runResizeHandlers();\r\n },\r\n\r\n resize: function() {\r\n if (typeof(Event) === 'function') {\r\n // modern browsers\r\n window.dispatchEvent(new Event('resize'));\r\n } else {\r\n // for IE and other old browsers\r\n // causes deprecation warning on modern browsers\r\n var evt = window.document.createEvent('UIEvents');\r\n evt.initUIEvent('resize', true, false, window, 0);\r\n window.dispatchEvent(evt);\r\n }\r\n },\r\n\r\n /**\r\n * Get GET parameter value from URL.\r\n * @param {string} paramName Parameter name.\r\n * @returns {string}\r\n */\r\n getURLParam: function(paramName) {\r\n var searchString = window.location.search.substring(1),\r\n i, val, params = searchString.split(\"&\");\r\n\r\n for (i = 0; i < params.length; i++) {\r\n val = params[i].split(\"=\");\r\n if (val[0] == paramName) {\r\n return unescape(val[1]);\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether current device is mobile touch.\r\n * @returns {boolean}\r\n */\r\n isMobileDevice: function() {\r\n var test = (this.getViewPort().width < this.getBreakpoint('lg') ? true : false);\r\n\r\n if (test === false) {\r\n // For use within normal web clients\r\n test = navigator.userAgent.match(/iPad/i) != null;\r\n }\r\n\r\n return test;\r\n },\r\n\r\n /**\r\n * Checks whether current device is desktop.\r\n * @returns {boolean}\r\n */\r\n isDesktopDevice: function() {\r\n return KTUtil.isMobileDevice() ? false : true;\r\n },\r\n\r\n /**\r\n * Gets browser window viewport size. Ref:\r\n * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\r\n * @returns {object}\r\n */\r\n getViewPort: function() {\r\n var e = window,\r\n a = 'inner';\r\n if (!('innerWidth' in window)) {\r\n a = 'client';\r\n e = document.documentElement || document.body;\r\n }\r\n\r\n return {\r\n width: e[a + 'Width'],\r\n height: e[a + 'Height']\r\n };\r\n },\r\n\r\n /**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isInResponsiveRange: function(mode) {\r\n var breakpoint = this.getViewPort().width;\r\n\r\n if (mode == 'general') {\r\n return true;\r\n } else if (mode == 'desktop' && breakpoint >= (this.getBreakpoint('lg') + 1)) {\r\n return true;\r\n } else if (mode == 'tablet' && (breakpoint >= (this.getBreakpoint('md') + 1) && breakpoint < this.getBreakpoint('lg'))) {\r\n return true;\r\n } else if (mode == 'mobile' && breakpoint <= this.getBreakpoint('md')) {\r\n return true;\r\n } else if (mode == 'desktop-and-tablet' && breakpoint >= (this.getBreakpoint('md') + 1)) {\r\n return true;\r\n } else if (mode == 'tablet-and-mobile' && breakpoint <= this.getBreakpoint('lg')) {\r\n return true;\r\n } else if (mode == 'minimal-desktop-and-below' && breakpoint <= this.getBreakpoint('xl')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n\t\t/**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isBreakpointUp: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width >= breakpoint);\r\n },\r\n\r\n\t\tisBreakpointDown: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width < breakpoint);\r\n },\r\n\r\n /**\r\n * Generates unique ID for give prefix.\r\n * @param {string} prefix Prefix for generated ID\r\n * @returns {boolean}\r\n */\r\n getUniqueID: function(prefix) {\r\n return prefix + Math.floor(Math.random() * (new Date()).getTime());\r\n },\r\n\r\n /**\r\n * Gets window width for give breakpoint mode.\r\n * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)\r\n * @returns {number}\r\n */\r\n getBreakpoint: function(mode) {\r\n return breakpoints[mode];\r\n },\r\n\r\n /**\r\n * Checks whether object has property matchs given key path.\r\n * @param {object} obj Object contains values paired with given key path\r\n * @param {string} keys Keys path seperated with dots\r\n * @returns {object}\r\n */\r\n isset: function(obj, keys) {\r\n var stone;\r\n\r\n keys = keys || '';\r\n\r\n if (keys.indexOf('[') !== -1) {\r\n throw new Error('Unsupported object path notation.');\r\n }\r\n\r\n keys = keys.split('.');\r\n\r\n do {\r\n if (obj === undefined) {\r\n return false;\r\n }\r\n\r\n stone = keys.shift();\r\n\r\n if (!obj.hasOwnProperty(stone)) {\r\n return false;\r\n }\r\n\r\n obj = obj[stone];\r\n\r\n } while (keys.length);\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * Gets highest z-index of the given element parents\r\n * @param {object} el jQuery element object\r\n * @returns {number}\r\n */\r\n getHighestZindex: function(el) {\r\n var position, value;\r\n\r\n while (el && el !== document) {\r\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n // This makes behavior of this function consistent across browsers\r\n // WebKit always returns auto if the element is positioned\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\r\n // IE returns 0 when zIndex is not specified\r\n // other browsers return a string\r\n // we ignore the case of nested elements with an explicit value of 0\r\n //
\r\n value = parseInt(KTUtil.css(el, 'z-index'));\r\n\r\n if (!isNaN(value) && value !== 0) {\r\n return value;\r\n }\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether the element has any parent with fixed positionfreg\r\n * @param {object} el jQuery element object\r\n * @returns {boolean}\r\n */\r\n hasFixedPositionedParent: function(el) {\r\n var position;\r\n\r\n while (el && el !== document) {\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"fixed\") {\r\n return true;\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Simulates delay\r\n */\r\n sleep: function(milliseconds) {\r\n var start = new Date().getTime();\r\n for (var i = 0; i < 1e7; i++) {\r\n if ((new Date().getTime() - start) > milliseconds) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Gets randomly generated integer value within given min and max range\r\n * @param {number} min Range start value\r\n * @param {number} max Range end value\r\n * @returns {number}\r\n */\r\n getRandomInt: function(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n },\r\n\r\n /**\r\n * Checks whether Angular library is included\r\n * @returns {boolean}\r\n */\r\n isAngularVersion: function() {\r\n return window.Zone !== undefined ? true : false;\r\n },\r\n\r\n // jQuery Workarounds\r\n\r\n // Deep extend: $.extend(true, {}, objA, objB);\r\n deepExtend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n var obj = arguments[i];\r\n\r\n if (!obj)\r\n continue;\r\n\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if (typeof obj[key] === 'object')\r\n out[key] = KTUtil.deepExtend(out[key], obj[key]);\r\n else\r\n out[key] = obj[key];\r\n }\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n // extend: $.extend({}, objA, objB);\r\n extend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n if (!arguments[i])\r\n continue;\r\n\r\n for (var key in arguments[i]) {\r\n if (arguments[i].hasOwnProperty(key))\r\n out[key] = arguments[i][key];\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n getById: function(el) {\r\n if (typeof el === 'string') {\r\n return document.getElementById(el);\r\n } else {\r\n return el;\r\n }\r\n },\r\n\r\n getByTag: function(query) {\r\n return document.getElementsByTagName(query);\r\n },\r\n\r\n getByTagName: function(query) {\r\n return document.getElementsByTagName(query);\r\n },\r\n\r\n getByClass: function(query) {\r\n return document.getElementsByClassName(query);\r\n },\r\n\r\n getBody: function() {\r\n return document.getElementsByTagName('body')[0];\r\n },\r\n\r\n /**\r\n * Checks whether the element has given classes\r\n * @param {object} el jQuery element object\r\n * @param {string} Classes string\r\n * @returns {boolean}\r\n */\r\n hasClasses: function(el, classes) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n var classesArr = classes.split(\" \");\r\n\r\n for (var i = 0; i < classesArr.length; i++) {\r\n if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n hasClass: function(el, className) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n return el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\r\n },\r\n\r\n addClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n if (classNames[i] && classNames[i].length > 0) {\r\n el.classList.add(KTUtil.trim(classNames[i]));\r\n }\r\n }\r\n } else if (!KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className += ' ' + KTUtil.trim(classNames[x]);\r\n }\r\n }\r\n },\r\n\r\n removeClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n el.classList.remove(KTUtil.trim(classNames[i]));\r\n }\r\n } else if (KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className = el.className.replace(new RegExp('\\\\b' + KTUtil.trim(classNames[x]) + '\\\\b', 'g'), '');\r\n }\r\n }\r\n },\r\n\r\n triggerCustomEvent: function(el, eventName, data) {\r\n var event;\r\n if (window.CustomEvent) {\r\n event = new CustomEvent(eventName, {\r\n detail: data\r\n });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n\r\n el.dispatchEvent(event);\r\n },\r\n\r\n triggerEvent: function(node, eventName) {\r\n // Make sure we use the ownerDocument from the provided node to avoid cross-window problems\r\n var doc;\r\n if (node.ownerDocument) {\r\n doc = node.ownerDocument;\r\n } else if (node.nodeType == 9) {\r\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\r\n doc = node;\r\n } else {\r\n throw new Error(\"Invalid node passed to fireEvent: \" + node.id);\r\n }\r\n\r\n if (node.dispatchEvent) {\r\n // Gecko-style approach (now the standard) takes more work\r\n var eventClass = \"\";\r\n\r\n // Different events have different event classes.\r\n // If this switch statement can't map an eventName to an eventClass,\r\n // the event firing is going to fail.\r\n switch (eventName) {\r\n case \"click\": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\r\n case \"mouseenter\":\r\n case \"mouseleave\":\r\n case \"mousedown\":\r\n case \"mouseup\":\r\n eventClass = \"MouseEvents\";\r\n break;\r\n\r\n case \"focus\":\r\n case \"change\":\r\n case \"blur\":\r\n case \"select\":\r\n eventClass = \"HTMLEvents\";\r\n break;\r\n\r\n default:\r\n throw \"fireEvent: Couldn't find an event class for event '\" + eventName + \"'.\";\r\n break;\r\n }\r\n var event = doc.createEvent(eventClass);\r\n\r\n var bubbles = eventName == \"change\" ? false : true;\r\n event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.\r\n\r\n event.synthetic = true; // allow detection of synthetic events\r\n // The second parameter says go ahead with the default action\r\n node.dispatchEvent(event, true);\r\n } else if (node.fireEvent) {\r\n // IE-old school style\r\n var event = doc.createEventObject();\r\n event.synthetic = true; // allow detection of synthetic events\r\n node.fireEvent(\"on\" + eventName, event);\r\n }\r\n },\r\n\r\n index: function( el ){\r\n var c = el.parentNode.children, i = 0;\r\n for(; i < c.length; i++ )\r\n if( c[i] == el ) return i;\r\n },\r\n\r\n trim: function(string) {\r\n return string.trim();\r\n },\r\n\r\n eventTriggered: function(e) {\r\n if (e.currentTarget.dataset.triggered) {\r\n return true;\r\n } else {\r\n e.currentTarget.dataset.triggered = true;\r\n\r\n return false;\r\n }\r\n },\r\n\r\n remove: function(el) {\r\n if (el && el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n },\r\n\r\n find: function(parent, query) {\r\n parent = KTUtil.getById(parent);\r\n if (parent) {\r\n return parent.querySelector(query);\r\n }\r\n },\r\n\r\n findAll: function(parent, query) {\r\n parent = KTUtil.getById(parent);\r\n if (parent) {\r\n return parent.querySelectorAll(query);\r\n }\r\n },\r\n\r\n insertAfter: function(el, referenceNode) {\r\n return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\r\n },\r\n\r\n parents: function(elem, selector) {\r\n // Element.matches() polyfill\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.matchesSelector ||\r\n Element.prototype.mozMatchesSelector ||\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.oMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector ||\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1;\r\n };\r\n }\r\n\r\n // Set up a parent array\r\n var parents = [];\r\n\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n if (selector) {\r\n if (elem.matches(selector)) {\r\n parents.push(elem);\r\n }\r\n continue;\r\n }\r\n parents.push(elem);\r\n }\r\n\r\n // Return our parent array\r\n return parents;\r\n },\r\n\r\n children: function(el, selector, log) {\r\n if (!el || !el.childNodes) {\r\n return;\r\n }\r\n\r\n var result = [],\r\n i = 0,\r\n l = el.childNodes.length;\r\n\r\n for (var i; i < l; ++i) {\r\n if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) {\r\n result.push(el.childNodes[i]);\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n child: function(el, selector, log) {\r\n var children = KTUtil.children(el, selector, log);\r\n\r\n return children ? children[0] : null;\r\n },\r\n\r\n matches: function(el, selector, log) {\r\n var p = Element.prototype;\r\n var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) {\r\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\r\n };\r\n\r\n if (el && el.tagName) {\r\n return f.call(el, selector);\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n data: function(el) {\r\n return {\r\n set: function(name, data) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n window.KTUtilElementDataStoreID++;\r\n el.customDataTag = window.KTUtilElementDataStoreID;\r\n }\r\n\r\n if (window.KTUtilElementDataStore[el.customDataTag] === undefined) {\r\n window.KTUtilElementDataStore[el.customDataTag] = {};\r\n }\r\n\r\n window.KTUtilElementDataStore[el.customDataTag][name] = data;\r\n },\r\n\r\n get: function(name) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return null;\r\n }\r\n\r\n return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null;\r\n },\r\n\r\n has: function(name) {\r\n if (!el) {\r\n return false;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return false;\r\n }\r\n\r\n return (window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]) ? true : false;\r\n },\r\n\r\n remove: function(name) {\r\n if (el && this.has(name)) {\r\n delete window.KTUtilElementDataStore[el.customDataTag][name];\r\n }\r\n }\r\n };\r\n },\r\n\r\n outerWidth: function(el, margin) {\r\n var width;\r\n\r\n if (margin === true) {\r\n width = parseFloat(el.offsetWidth);\r\n width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right'));\r\n\r\n return parseFloat(width);\r\n } else {\r\n width = parseFloat(el.offsetWidth);\r\n\r\n return width;\r\n }\r\n },\r\n\r\n offset: function(el) {\r\n var rect, win;\r\n\r\n if ( !el ) {\r\n return;\r\n }\r\n\r\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\r\n // Support: IE <=11 only\r\n // Running getBoundingClientRect on a\r\n // disconnected node in IE throws an error\r\n\r\n if ( !el.getClientRects().length ) {\r\n return { top: 0, left: 0 };\r\n }\r\n\r\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\r\n rect = el.getBoundingClientRect();\r\n win = el.ownerDocument.defaultView;\r\n\r\n return {\r\n top: rect.top + win.pageYOffset,\r\n left: rect.left + win.pageXOffset\r\n };\r\n },\r\n\r\n height: function(el) {\r\n return KTUtil.css(el, 'height');\r\n },\r\n\r\n outerHeight: function(el, withMargic = false) {\r\n var height = el.offsetHeight;\r\n var style;\r\n\r\n if (withMargic) {\r\n style = getComputedStyle(el);\r\n height += parseInt(style.marginTop) + parseInt(style.marginBottom);\r\n\r\n return height;\r\n } else {\r\n return height;\r\n }\r\n },\r\n\r\n visible: function(el) {\r\n return !(el.offsetWidth === 0 && el.offsetHeight === 0);\r\n },\r\n\r\n attr: function(el, name, value) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n el.setAttribute(name, value);\r\n } else {\r\n return el.getAttribute(name);\r\n }\r\n },\r\n\r\n hasAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n return el.getAttribute(name) ? true : false;\r\n },\r\n\r\n removeAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n el.removeAttribute(name);\r\n },\r\n\r\n animate: function(from, to, duration, update, easing, done) {\r\n /**\r\n * TinyAnimate.easings\r\n * Adapted from jQuery Easing\r\n */\r\n var easings = {};\r\n var easing;\r\n\r\n easings.linear = function(t, b, c, d) {\r\n return c * t / d + b;\r\n };\r\n\r\n easing = easings.linear;\r\n\r\n // Early bail out if called incorrectly\r\n if (typeof from !== 'number' ||\r\n typeof to !== 'number' ||\r\n typeof duration !== 'number' ||\r\n typeof update !== 'function') {\r\n return;\r\n }\r\n\r\n // Create mock done() function if necessary\r\n if (typeof done !== 'function') {\r\n done = function() {};\r\n }\r\n\r\n // Pick implementation (requestAnimationFrame | setTimeout)\r\n var rAF = window.requestAnimationFrame || function(callback) {\r\n window.setTimeout(callback, 1000 / 50);\r\n };\r\n\r\n // Animation loop\r\n var canceled = false;\r\n var change = to - from;\r\n\r\n function loop(timestamp) {\r\n var time = (timestamp || +new Date()) - start;\r\n\r\n if (time >= 0) {\r\n update(easing(time, from, change, duration));\r\n }\r\n if (time >= 0 && time >= duration) {\r\n update(to);\r\n done();\r\n } else {\r\n rAF(loop);\r\n }\r\n }\r\n\r\n update(from);\r\n\r\n // Start animation loop\r\n var start = window.performance && window.performance.now ? window.performance.now() : +new Date();\r\n\r\n rAF(loop);\r\n },\r\n\r\n actualCss: function(el, prop, cache) {\r\n var css = '';\r\n\r\n if (el instanceof HTMLElement === false) {\r\n return;\r\n }\r\n\r\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\r\n var value;\r\n\r\n // the element is hidden so:\r\n // making the el block so we can meassure its height but still be hidden\r\n css = el.style.cssText;\r\n el.style.cssText = 'position: absolute; visibility: hidden; display: block;';\r\n\r\n if (prop == 'width') {\r\n value = el.offsetWidth;\r\n } else if (prop == 'height') {\r\n value = el.offsetHeight;\r\n }\r\n\r\n el.style.cssText = css;\r\n\r\n // store it in cache\r\n el.setAttribute('kt-hidden-' + prop, value);\r\n\r\n return parseFloat(value);\r\n } else {\r\n // store it in cache\r\n return parseFloat(el.getAttribute('kt-hidden-' + prop));\r\n }\r\n },\r\n\r\n actualHeight: function(el, cache) {\r\n return KTUtil.actualCss(el, 'height', cache);\r\n },\r\n\r\n actualWidth: function(el, cache) {\r\n return KTUtil.actualCss(el, 'width', cache);\r\n },\r\n\r\n getScroll: function(element, method) {\r\n // The passed in `method` value should be 'Top' or 'Left'\r\n method = 'scroll' + method;\r\n return (element == window || element == document) ? (\r\n self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||\r\n (browserSupportsBoxModel && document.documentElement[method]) ||\r\n document.body[method]\r\n ) : element[method];\r\n },\r\n\r\n css: function(el, styleProp, value) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n el.style[styleProp] = value;\r\n } else {\r\n var defaultView = (el.ownerDocument || document).defaultView;\r\n // W3C standard way:\r\n if (defaultView && defaultView.getComputedStyle) {\r\n // sanitize property name to css notation\r\n // (hyphen separated words eg. font-Size)\r\n styleProp = styleProp.replace(/([A-Z])/g, \"-$1\").toLowerCase();\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\r\n } else if (el.currentStyle) { // IE\r\n // sanitize property name to camelCase\r\n styleProp = styleProp.replace(/\\-(\\w)/g, function(str, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = el.currentStyle[styleProp];\r\n // convert other units to pixels on IE\r\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\r\n return (function(value) {\r\n var oldLeft = el.style.left,\r\n oldRsLeft = el.runtimeStyle.left;\r\n el.runtimeStyle.left = el.currentStyle.left;\r\n el.style.left = value || 0;\r\n value = el.style.pixelLeft + \"px\";\r\n el.style.left = oldLeft;\r\n el.runtimeStyle.left = oldRsLeft;\r\n return value;\r\n })(value);\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n\r\n slide: function(el, dir, speed, callback, recalcMaxHeight) {\r\n if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) {\r\n return;\r\n }\r\n\r\n speed = (speed ? speed : 600);\r\n var calcHeight = KTUtil.actualHeight(el);\r\n var calcPaddingTop = false;\r\n var calcPaddingBottom = false;\r\n\r\n if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) {\r\n KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top'));\r\n }\r\n\r\n if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) {\r\n KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-top')) {\r\n calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-bottom')) {\r\n calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom'));\r\n }\r\n\r\n if (dir == 'up') { // up\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {\r\n el.style.paddingTop = (calcPaddingTop - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = (calcPaddingBottom - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = (calcHeight - value) + 'px';\r\n }, 'linear', function() {\r\n el.style.height = '';\r\n el.style.display = 'none';\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n\r\n\r\n } else if (dir == 'down') { // down\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {//\r\n el.style.paddingTop = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingTop = '';\r\n });\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingBottom = '';\r\n });\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = value + 'px';\r\n }, 'linear', function() {\r\n el.style.height = '';\r\n el.style.display = '';\r\n el.style.overflow = '';\r\n\r\n if (typeof callback === 'function') {\r\n callback();\r\n }\r\n });\r\n }\r\n },\r\n\r\n slideUp: function(el, speed, callback) {\r\n KTUtil.slide(el, 'up', speed, callback);\r\n },\r\n\r\n slideDown: function(el, speed, callback) {\r\n KTUtil.slide(el, 'down', speed, callback);\r\n },\r\n\r\n show: function(el, display) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = (display ? display : 'block');\r\n }\r\n },\r\n\r\n hide: function(el) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = 'none';\r\n }\r\n },\r\n\r\n addEvent: function(el, type, handler, one) {\r\n if (typeof el !== 'undefined' && el !== null) {\r\n el.addEventListener(type, handler);\r\n }\r\n },\r\n\r\n removeEvent: function(el, type, handler) {\r\n if (el !== null) {\r\n el.removeEventListener(type, handler);\r\n }\r\n },\r\n\r\n on: function(element, selector, event, handler) {\r\n if (!selector) {\r\n return;\r\n }\r\n\r\n var eventId = KTUtil.getUniqueID('event');\r\n\r\n window.KTUtilDelegatedEventHandlers[eventId] = function(e) {\r\n var targets = element.querySelectorAll(selector);\r\n var target = e.target;\r\n\r\n while (target && target !== element) {\r\n for (var i = 0, j = targets.length; i < j; i++) {\r\n if (target === targets[i]) {\r\n handler.call(target, e);\r\n }\r\n }\r\n\r\n target = target.parentNode;\r\n }\r\n }\r\n\r\n KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n return eventId;\r\n },\r\n\r\n off: function(element, event, eventId) {\r\n if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) {\r\n return;\r\n }\r\n\r\n KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n delete window.KTUtilDelegatedEventHandlers[eventId];\r\n },\r\n\r\n one: function onetime(el, type, callback) {\r\n el.addEventListener(type, function callee(e) {\r\n // remove event\r\n if (e.target && e.target.removeEventListener) {\r\n e.target.removeEventListener(e.type, callee);\r\n }\r\n\r\n // need to verify from https://themeforest.net/author_dashboard#comment_23615588\r\n if (el && el.removeEventListener) {\r\n\t\t\t\t e.currentTarget.removeEventListener(e.type, callee);\r\n\t\t\t }\r\n\r\n // call handler\r\n return callback(e);\r\n });\r\n },\r\n\r\n hash: function(str) {\r\n var hash = 0,\r\n i, chr;\r\n\r\n if (str.length === 0) return hash;\r\n for (i = 0; i < str.length; i++) {\r\n chr = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n return hash;\r\n },\r\n\r\n animateClass: function(el, animationName, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd',\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n\r\n KTUtil.addClass(el, 'animated ' + animationName);\r\n\r\n KTUtil.one(el, animation, function() {\r\n KTUtil.removeClass(el, 'animated ' + animationName);\r\n });\r\n\r\n if (callback) {\r\n KTUtil.one(el, animation, callback);\r\n }\r\n },\r\n\r\n transitionEnd: function(el, callback) {\r\n var transition;\r\n var transitions = {\r\n transition: 'transitionend',\r\n OTransition: 'oTransitionEnd',\r\n MozTransition: 'mozTransitionEnd',\r\n WebkitTransition: 'webkitTransitionEnd',\r\n msTransition: 'msTransitionEnd'\r\n };\r\n\r\n for (var t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n transition = transitions[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, transition, callback);\r\n },\r\n\r\n animationEnd: function(el, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd'\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, animation, callback);\r\n },\r\n\r\n animateDelay: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-delay', value);\r\n }\r\n },\r\n\r\n animateDuration: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-duration', value);\r\n }\r\n },\r\n\r\n scrollTo: function(target, offset, duration) {\r\n var duration = duration ? duration : 500;\r\n var targetPos = target ? KTUtil.offset(target).top : 0;\r\n var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n var from, to;\r\n\r\n if (offset) {\r\n scrollPos += offset;\r\n }\r\n\r\n from = scrollPos;\r\n to = targetPos;\r\n\r\n KTUtil.animate(from, to, duration, function(value) {\r\n document.documentElement.scrollTop = value;\r\n document.body.parentNode.scrollTop = value;\r\n document.body.scrollTop = value;\r\n }); //, easing, done\r\n },\r\n\r\n scrollTop: function(offset, duration) {\r\n KTUtil.scrollTo(null, offset, duration);\r\n },\r\n\r\n isArray: function(obj) {\r\n return obj && Array.isArray(obj);\r\n },\r\n\r\n ready: function(callback) {\r\n if (document.attachEvent ? document.readyState === \"complete\" : document.readyState !== \"loading\") {\r\n callback();\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n },\r\n\r\n isEmpty: function(obj) {\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n numberString: function(nStr) {\r\n nStr += '';\r\n var x = nStr.split('.');\r\n var x1 = x[0];\r\n var x2 = x.length > 1 ? '.' + x[1] : '';\r\n var rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n },\r\n\r\n detectIE: function() {\r\n var ua = window.navigator.userAgent;\r\n\r\n // Test values; Uncomment to check result …\r\n\r\n // IE 10\r\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\r\n\r\n // IE 11\r\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\r\n\r\n // Edge 12 (Spartan)\r\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';\r\n\r\n // Edge 13\r\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';\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n },\r\n\r\n isRTL: function() {\r\n var html = KTUtil.getByTagName('html')[0];\r\n\r\n if (html) {\r\n return (KTUtil.attr(html, 'direction') == 'rtl');\r\n }\r\n },\r\n\r\n // Scroller\r\n scrollInit: function(element, options) {\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Learn more: https://github.com/mdbootstrap/perfect-scrollbar#options\r\n var pluginDefOptions = {\r\n wheelSpeed: 0.5,\r\n swipeEasing: true,\r\n wheelPropagation: false,\r\n minScrollbarLength: 40,\r\n maxScrollbarLength: 300,\r\n suppressScrollX: true\r\n };\r\n\r\n options = KTUtil.deepExtend({}, pluginDefOptions, options);\r\n\r\n // Define init function\r\n function init() {\r\n var ps;\r\n var height;\r\n\r\n // Get extra options via data attributes\r\n var attrs = element.getAttributeNames();\r\n if (attrs.length > 0) {\r\n attrs.forEach(function(attrName) {\r\n \t\t\t// more options; https://github.com/ganlanyuan/tiny-slider#options\r\n \t\t\tif ((/^data-.*/g).test(attrName)) {\r\n if (['scroll', 'height', 'mobile-height'].includes(optionName) == false) {\r\n var optionName = attrName.replace('data-', '').toLowerCase().replace(/(?:[\\s-])\\w/g, function(match) {\r\n \t\t\t\t\treturn match.replace('-', '').toUpperCase();\r\n \t\t\t\t});\r\n\r\n options[optionName] = KTUtil.filterBoolean(element.getAttribute(attrName));\r\n }\r\n \t\t\t}\r\n \t\t});\r\n }\r\n\r\n if (options.height instanceof Function) {\r\n height = options.height.call();\r\n } else {\r\n if (KTUtil.isMobileDevice() === true && options.mobileHeight) {\r\n height = parseInt(options.mobileHeight);\r\n } else {\r\n height = parseInt(options.height);\r\n }\r\n }\r\n\r\n if (height === false) {\r\n KTUtil.scrollDestroy(element, true);\r\n\r\n return;\r\n }\r\n\r\n height = parseInt(height);\r\n\r\n // Destroy scroll on table and mobile modes\r\n if ((options.mobileNativeScroll || options.disableForMobile) && KTUtil.isMobileDevice() === true) {\r\n ps = KTUtil.data(element).get('ps');\r\n if (ps) {\r\n if (options.resetHeightOnDestroy) {\r\n KTUtil.css(element, 'height', 'auto');\r\n } else {\r\n KTUtil.css(element, 'overflow', 'auto');\r\n if (height > 0) {\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n }\r\n\r\n ps.destroy();\r\n ps = KTUtil.data(element).remove('ps');\r\n } else if (height > 0){\r\n KTUtil.css(element, 'overflow', 'auto');\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (height > 0) {\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n\r\n if (options.desktopNativeScroll) {\r\n KTUtil.css(element, 'overflow', 'auto');\r\n return;\r\n }\r\n\r\n // Pass options via HTML Attributes\r\n if (KTUtil.attr(element, 'data-window-scroll') == 'true') {\r\n options.windowScroll = true;\r\n }\r\n\r\n // Init scroll\r\n ps = KTUtil.data(element).get('ps');\r\n\r\n if (ps) {\r\n ps.update();\r\n } else {\r\n KTUtil.css(element, 'overflow', 'hidden');\r\n KTUtil.addClass(element, 'scroll');\r\n\r\n ps = new PerfectScrollbar(element, options);\r\n\r\n KTUtil.data(element).set('ps', ps);\r\n }\r\n\r\n // Remember scroll position in cookie\r\n var uid = KTUtil.attr(element, 'id');\r\n // Consider using Localstorage\r\n //if (options.rememberPosition === true && Cookies && uid) {\r\n // if (KTCookie.getCookie(uid)) {\r\n // var pos = parseInt(KTCookie.getCookie(uid));\r\n //\r\n // if (pos > 0) {\r\n // element.scrollTop = pos;\r\n // }\r\n // }\r\n //\r\n // element.addEventListener('ps-scroll-y', function() {\r\n // KTCookie.setCookie(uid, element.scrollTop);\r\n // });\r\n //}\r\n }\r\n\r\n // Init\r\n init();\r\n\r\n // Handle window resize\r\n if (options.handleWindowResize) {\r\n KTUtil.addResizeHandler(function() {\r\n init();\r\n });\r\n }\r\n },\r\n\r\n scrollUpdate: function(element) {\r\n var ps = KTUtil.data(element).get('ps');\r\n if (ps) {\r\n ps.update();\r\n }\r\n },\r\n\r\n scrollUpdateAll: function(parent) {\r\n var scrollers = KTUtil.findAll(parent, '.ps');\r\n for (var i = 0, len = scrollers.length; i < len; i++) {\r\n KTUtil.scrollUpdate(scrollers[i]);\r\n }\r\n },\r\n\r\n scrollDestroy: function(element, resetAll) {\r\n var ps = KTUtil.data(element).get('ps');\r\n\r\n if (ps) {\r\n ps.destroy();\r\n ps = KTUtil.data(element).remove('ps');\r\n }\r\n\r\n if (element && resetAll) {\r\n element.style.setProperty('overflow', '');\r\n element.style.setProperty('height', '');\r\n }\r\n },\r\n\r\n filterBoolean: function(val) {\r\n // Convert string boolean\r\n\t\t\tif (val === true || val === 'true') {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (val === false || val === 'false') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n return val;\r\n },\r\n\r\n setHTML: function(el, html) {\r\n el.innerHTML = html;\r\n },\r\n\r\n getHTML: function(el) {\r\n if (el) {\r\n return el.innerHTML;\r\n }\r\n },\r\n\r\n getCssVariableValue: function(variableName) {\r\n var hex = getComputedStyle(document.documentElement).getPropertyValue(variableName);\r\n\r\n if ( hex && hex.length > 0 ) {\r\n hex = hex.trim();\r\n }\r\n\r\n return hex;\r\n },\r\n\r\n getDocumentHeight: function() {\r\n var body = document.body;\r\n var html = document.documentElement;\r\n\r\n return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );\r\n },\r\n\r\n getScrollTop: function() {\r\n return (document.scrollingElement || document.documentElement).scrollTop;\r\n },\r\n\r\n colorDarken: function(color, amount) {\r\n var subtractLight = function(color, amount){\r\n var cc = parseInt(color,16) - amount;\r\n var c = (cc < 0) ? 0 : (cc);\r\n c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`;\r\n\r\n return c;\r\n }\r\n\r\n color = (color.indexOf(\"#\")>=0) ? color.substring(1,color.length) : color;\r\n amount = parseInt((255*amount)/100);\r\n\r\n return color = `#${subtractLight(color.substring(0,2), amount)}${subtractLight(color.substring(2,4), amount)}${subtractLight(color.substring(4,6), amount)}`;\r\n },\r\n\r\n colorLighten: function(color, amount) {\r\n var addLight = function(color, amount){\r\n var cc = parseInt(color,16) + amount;\r\n var c = (cc > 255) ? 255 : (cc);\r\n c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`;\r\n\r\n return c;\r\n }\r\n\r\n color = (color.indexOf(\"#\")>=0) ? color.substring(1,color.length) : color;\r\n amount = parseInt((255*amount)/100);\r\n\r\n return color = `#${addLight(color.substring(0,2), amount)}${addLight(color.substring(2,4), amount)}${addLight(color.substring(4,6), amount)}`;\r\n },\r\n\r\n // Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds\r\n throttle: function (timer, func, delay) {\r\n \t// If setTimeout is already scheduled, no need to do anything\r\n \tif (timer) {\r\n \t\treturn;\r\n \t}\r\n\r\n \t// Schedule a setTimeout after delay seconds\r\n \ttimer = setTimeout(function () {\r\n \t\tfunc();\r\n\r\n \t\t// Once setTimeout function execution is finished, timerId = undefined so that in
\r\n \t\t// the next scroll event function execution can be scheduled by the setTimeout\r\n \t\ttimer = undefined;\r\n \t}, delay);\r\n },\r\n\r\n // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds\r\n debounce: function (timer, func, delay) {\r\n \t// Cancels the setTimeout method execution\r\n \tclearTimeout(timer)\r\n\r\n \t// Executes the func after delay time.\r\n \ttimer = setTimeout(func, delay);\r\n },\r\n\r\n btnWait: function(el, cls, message, disable = true) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (disable) {\r\n KTUtil.attr(el, \"disabled\", true);\r\n }\r\n\r\n if (cls) {\r\n KTUtil.addClass(el, cls);\r\n KTUtil.attr(el, \"wait-class\", cls);\r\n }\r\n\r\n if (message) {\r\n var caption = KTUtil.find(el, '.btn-caption');\r\n\r\n if (caption) {\r\n KTUtil.data(caption).set('caption', KTUtil.getHTML(caption));\r\n KTUtil.setHTML(caption, message);\r\n } else {\r\n KTUtil.data(el).set('caption', KTUtil.getHTML(el));\r\n KTUtil.setHTML(el, message);\r\n }\r\n }\r\n },\r\n\r\n btnRelease: function(el) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n /// Show loading state on button\r\n KTUtil.removeAttr(el, \"disabled\");\r\n\r\n if (KTUtil.hasAttr(el, \"wait-class\")) {\r\n KTUtil.removeClass(el, KTUtil.attr(el, \"wait-class\"));\r\n }\r\n\r\n var caption = KTUtil.find(el, '.btn-caption');\r\n\r\n if (caption && KTUtil.data(caption).has('caption')) {\r\n KTUtil.setHTML(caption, KTUtil.data(caption).get('caption'));\r\n } else if (KTUtil.data(el).has('caption')) {\r\n KTUtil.setHTML(el, KTUtil.data(el).get('caption'));\r\n }\r\n },\r\n\r\n onDOMContentLoaded: function(callback) {\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n } else {\r\n callback();\r\n }\r\n },\r\n\r\n isOffscreen: function(el, direction, offset = 0) {\r\n var windowWidth = KTUtil.getViewPort().width;\r\n var windowHeight = KTUtil.getViewPort().height;\r\n\r\n var top = KTUtil.offset(el).top;\r\n var height = KTUtil.outerHeight(el) + offset;\r\n var left = KTUtil.offset(el).left;\r\n var width = KTUtil.outerWidth(el) + offset;\r\n\r\n if (direction == 'bottom') {\r\n if (windowHeight < top + height) {\r\n return true;\r\n } else if (windowHeight > top + height * 1.5) {\r\n return true;\r\n }\r\n }\r\n\r\n if (direction == 'top') {\r\n if (top < 0) {\r\n return true;\r\n } else if (top > height) {\r\n return true;\r\n }\r\n }\r\n\r\n if (direction == 'left') {\r\n if (left < 0) {\r\n return true;\r\n } else if (left * 2 > width) {\r\n //console.log('left 2');\r\n //return true;\r\n }\r\n }\r\n\r\n if (direction == 'right') {\r\n if (windowWidth < left + width) {\r\n return true;\r\n } else {\r\n //console.log('right 2');\r\n //return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n}();\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTUtil;\r\n}\r\n\r\n// Initialize KTUtil class on document ready\r\nKTUtil.ready(function() {\r\n\tif (typeof KTAppSettings !== 'undefined') {\r\n\t\tKTUtil.init(KTAppSettings);\r\n\t} else {\r\n\t\tKTUtil.init();\r\n\t}\r\n});\r\n\r\n// CSS3 Transitions only after page load(.page-loading class added to body tag and remove with JS on page load)\r\nwindow.onload = function() {\r\n var result = KTUtil.getByTagName('body');\r\n if (result && result[0]) {\r\n KTUtil.removeClass(result[0], 'page-loading');\r\n }\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTApp = function() {\r\n /** @type {object} colors State colors **/\r\n var settings = {};\r\n\r\n var initTooltip = function(el) {\r\n var theme = el.data('theme') ? 'tooltip-' + el.data('theme') : '';\r\n var width = el.data('width') == 'auto' ? 'tooltop-auto-width' : '';\r\n var trigger = el.data('trigger') ? el.data('trigger') : 'hover';\r\n\r\n $(el).tooltip({\r\n trigger: trigger,\r\n template: '
\\\r\n
\\\r\n
\\\r\n
'\r\n });\r\n }\r\n\r\n var initTooltips = function() {\r\n // init bootstrap tooltips\r\n $('[data-toggle=\"tooltip\"]').each(function() {\r\n initTooltip($(this));\r\n });\r\n }\r\n\r\n var initPopover = function(el) {\r\n var skin = el.data('skin') ? 'popover-' + el.data('skin') : '';\r\n var triggerValue = el.data('trigger') ? el.data('trigger') : 'hover';\r\n\r\n el.popover({\r\n trigger: triggerValue,\r\n template: '\\\r\n
\\\r\n
\\\r\n

\\\r\n
\\\r\n
'\r\n });\r\n }\r\n\r\n var initPopovers = function() {\r\n // init bootstrap popover\r\n $('[data-toggle=\"popover\"]').each(function() {\r\n initPopover($(this));\r\n });\r\n }\r\n\r\n var initFileInput = function() {\r\n // init bootstrap popover\r\n $('.custom-file-input').on('change', function() {\r\n var fileName = $(this).val();\r\n $(this).next('.custom-file-label').addClass(\"selected\").html(fileName);\r\n });\r\n }\r\n\r\n var initScroll = function() {\r\n $('[data-scroll=\"true\"]').each(function() {\r\n var el = $(this);\r\n\r\n KTUtil.scrollInit(this, {\r\n mobileNativeScroll: true,\r\n handleWindowResize: true,\r\n rememberPosition: (el.data('remember-position') == 'true' ? true : false),\r\n height: function() {\r\n if (KTUtil.isBreakpointDown('lg') && el.data('mobile-height')) {\r\n return el.data('mobile-height');\r\n } else {\r\n return el.data('height');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n var initAlerts = function() {\r\n // init bootstrap popover\r\n $('body').on('click', '[data-close=alert]', function() {\r\n $(this).closest('.alert').hide();\r\n });\r\n }\r\n\r\n var initCard = function(el, options) {\r\n // init card tools\r\n var el = $(el);\r\n var card = new KTCard(el[0], options);\r\n }\r\n\r\n var initCards = function() {\r\n // init card tools\r\n $('[data-card=\"true\"]').each(function() {\r\n var el = $(this);\r\n var options = {};\r\n\r\n if (el.data('data-card-initialized') !== true) {\r\n initCard(el, options);\r\n el.data('data-card-initialized', true);\r\n }\r\n });\r\n }\r\n\r\n var initStickyCard = function() {\r\n if (typeof Sticky === 'undefined') {\r\n return;\r\n }\r\n\r\n var sticky = new Sticky('[data-sticky=\"true\"]');\r\n }\r\n\r\n var initAbsoluteDropdown = function(context) {\r\n var dropdownMenu;\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n $('body').on('show.bs.dropdown', context, function(e) {\r\n \tdropdownMenu = $(e.target).find('.dropdown-menu');\r\n \t$('body').append(dropdownMenu.detach());\r\n \tdropdownMenu.css('display', 'block');\r\n \tdropdownMenu.position({\r\n \t\t'my': 'right top',\r\n \t\t'at': 'right bottom',\r\n \t\t'of': $(e.relatedTarget),\r\n \t});\r\n }).on('hide.bs.dropdown', context, function(e) {\r\n \t$(e.target).append(dropdownMenu.detach());\r\n \tdropdownMenu.hide();\r\n });\r\n }\r\n\r\n var initAbsoluteDropdowns = function() {\r\n $('body').on('show.bs.dropdown', function(e) {\r\n // e.target is always parent (contains toggler and menu)\r\n var $toggler = $(e.target).find(\"[data-attach='body']\");\r\n if ($toggler.length === 0) {\r\n return;\r\n }\r\n var $dropdownMenu = $(e.target).find('.dropdown-menu');\r\n // save detached menu\r\n var $detachedDropdownMenu = $dropdownMenu.detach();\r\n // save reference to detached menu inside data of toggler\r\n $toggler.data('dropdown-menu', $detachedDropdownMenu);\r\n\r\n $('body').append($detachedDropdownMenu);\r\n $detachedDropdownMenu.css('display', 'block');\r\n $detachedDropdownMenu.position({\r\n my: 'right top',\r\n at: 'right bottom',\r\n of: $(e.relatedTarget),\r\n });\r\n });\r\n\r\n $('body').on('hide.bs.dropdown', function(e) {\r\n var $toggler = $(e.target).find(\"[data-attach='body']\");\r\n if ($toggler.length === 0) {\r\n return;\r\n }\r\n // access to reference of detached menu from data of toggler\r\n var $detachedDropdownMenu = $toggler.data('dropdown-menu');\r\n // re-append detached menu inside parent\r\n $(e.target).append($detachedDropdownMenu.detach());\r\n // hide dropdown\r\n $detachedDropdownMenu.hide();\r\n });\r\n };\r\n\r\n return {\r\n init: function(settingsArray) {\r\n if (settingsArray) {\r\n settings = settingsArray;\r\n }\r\n\r\n KTApp.initComponents();\r\n },\r\n\r\n initComponents: function() {\r\n initScroll();\r\n initTooltips();\r\n initPopovers();\r\n initAlerts();\r\n initFileInput();\r\n initCards();\r\n initStickyCard();\r\n initAbsoluteDropdowns();\r\n },\r\n\r\n initTooltips: function() {\r\n initTooltips();\r\n },\r\n\r\n initTooltip: function(el) {\r\n initTooltip(el);\r\n },\r\n\r\n initPopovers: function() {\r\n initPopovers();\r\n },\r\n\r\n initPopover: function(el) {\r\n initPopover(el);\r\n },\r\n\r\n initCard: function(el, options) {\r\n initCard(el, options);\r\n },\r\n\r\n initCards: function() {\r\n initCards();\r\n },\r\n\r\n initSticky: function() {\r\n initSticky();\r\n },\r\n\r\n initAbsoluteDropdown: function(context) {\r\n initAbsoluteDropdown(context);\r\n },\r\n\r\n block: function(target, options) {\r\n var el = $(target);\r\n\r\n options = $.extend(true, {\r\n opacity: 0.05,\r\n overlayColor: '#000000',\r\n type: '',\r\n size: '',\r\n state: 'primary',\r\n centerX: true,\r\n centerY: true,\r\n message: '',\r\n shadow: true,\r\n width: 'auto'\r\n }, options);\r\n\r\n var html;\r\n var version = options.type ? 'spinner-' + options.type : '';\r\n var state = options.state ? 'spinner-' + options.state : '';\r\n var size = options.size ? 'spinner-' + options.size : '';\r\n var spinner = ' 0) {\r\n var classes = 'blockui ' + (options.shadow === false ? 'blockui' : '');\r\n\r\n html = '
' + options.message + '' + spinner + '
';\r\n\r\n var el = document.createElement('div');\r\n\r\n $('body').prepend(el);\r\n KTUtil.addClass(el, classes);\r\n el.innerHTML = html;\r\n options.width = KTUtil.actualWidth(el) + 10;\r\n KTUtil.remove(el);\r\n\r\n if (target == 'body') {\r\n html = '
' + options.message + '' + spinner + '
';\r\n }\r\n } else {\r\n html = spinner;\r\n }\r\n\r\n var params = {\r\n message: html,\r\n centerY: options.centerY,\r\n centerX: options.centerX,\r\n css: {\r\n top: '30%',\r\n left: '50%',\r\n border: '0',\r\n padding: '0',\r\n backgroundColor: 'none',\r\n width: options.width\r\n },\r\n overlayCSS: {\r\n backgroundColor: options.overlayColor,\r\n opacity: options.opacity,\r\n cursor: 'wait',\r\n zIndex: (target == 'body' ? 1100 : 10)\r\n },\r\n onUnblock: function() {\r\n if (el && el[0]) {\r\n KTUtil.css(el[0], 'position', '');\r\n KTUtil.css(el[0], 'zoom', '');\r\n }\r\n }\r\n };\r\n\r\n if (target == 'body') {\r\n params.css.top = '50%';\r\n $.blockUI(params);\r\n } else {\r\n var el = $(target);\r\n el.block(params);\r\n }\r\n },\r\n\r\n unblock: function(target) {\r\n if (target && target != 'body') {\r\n $(target).unblock();\r\n } else {\r\n $.unblockUI();\r\n }\r\n },\r\n\r\n blockPage: function(options) {\r\n return KTApp.block('body', options);\r\n },\r\n\r\n unblockPage: function() {\r\n return KTApp.unblock('body');\r\n },\r\n\r\n getSettings: function() {\r\n return settings;\r\n }\r\n };\r\n}();\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTApp;\r\n}\r\n\r\n// Initialize KTApp class on document ready\r\n$(document).ready(function() {\r\n KTApp.init(KTAppSettings);\r\n});\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTCard = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n toggleSpeed: 400,\r\n sticky: {\r\n releseOnReverse: false,\r\n offset: 300,\r\n zIndex: 101\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('card')) {\r\n the = KTUtil.data(element).get('card');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('card', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Init card\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.header = KTUtil.child(element, '.card-header');\r\n the.footer = KTUtil.child(element, '.card-footer');\r\n\r\n if (KTUtil.child(element, '.card-body')) {\r\n the.body = KTUtil.child(element, '.card-body');\r\n } else if (KTUtil.child(element, '.form')) {\r\n the.body = KTUtil.child(element, '.form');\r\n }\r\n },\r\n\r\n /**\r\n * Build Form Wizard\r\n */\r\n build: function() {\r\n // Remove\r\n var remove = KTUtil.find(the.header, '[data-card-tool=remove]');\r\n if (remove) {\r\n KTUtil.addEvent(remove, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.remove();\r\n });\r\n }\r\n\r\n // Reload\r\n var reload = KTUtil.find(the.header, '[data-card-tool=reload]');\r\n if (reload) {\r\n KTUtil.addEvent(reload, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.reload();\r\n });\r\n }\r\n\r\n // Toggle\r\n var toggle = KTUtil.find(the.header, '[data-card-tool=toggle]');\r\n if (toggle) {\r\n KTUtil.addEvent(toggle, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.toggle();\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Enable stickt mode\r\n */\r\n initSticky: function() {\r\n var lastScrollTop = 0;\r\n var offset = the.options.sticky.offset;\r\n\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n\t window.addEventListener('scroll', Plugin.onScrollSticky);\r\n },\r\n\r\n\t /**\r\n\t * Window scroll handle event for sticky card\r\n\t */\r\n\t onScrollSticky: function(e) {\r\n\t\t var offset = the.options.sticky.offset;\r\n\r\n\t\t if(isNaN(offset)) return;\r\n\r\n\t\t var st = KTUtil.getScrollTop();\r\n\r\n\t\t if (st >= offset && KTUtil.hasClass(body, 'card-sticky-on') === false) {\r\n\t\t\t Plugin.eventTrigger('stickyOn');\r\n\r\n\t\t\t KTUtil.addClass(body, 'card-sticky-on');\r\n\r\n\t\t\t Plugin.updateSticky();\r\n\r\n\t\t } else if ((st*1.5) <= offset && KTUtil.hasClass(body, 'card-sticky-on')) {\r\n\t\t\t // Back scroll mode\r\n\t\t\t Plugin.eventTrigger('stickyOff');\r\n\r\n\t\t\t KTUtil.removeClass(body, 'card-sticky-on');\r\n\r\n\t\t\t Plugin.resetSticky();\r\n\t\t }\r\n\t },\r\n\r\n updateSticky: function() {\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n var top;\r\n\r\n if (KTUtil.hasClass(body, 'card-sticky-on')) {\r\n if (the.options.sticky.position.top instanceof Function) {\r\n top = parseInt(the.options.sticky.position.top.call(this, the));\r\n } else {\r\n top = parseInt(the.options.sticky.position.top);\r\n }\r\n\r\n var left;\r\n if (the.options.sticky.position.left instanceof Function) {\r\n left = parseInt(the.options.sticky.position.left.call(this, the));\r\n } else {\r\n left = parseInt(the.options.sticky.position.left);\r\n }\r\n\r\n var right;\r\n if (the.options.sticky.position.right instanceof Function) {\r\n right = parseInt(the.options.sticky.position.right.call(this, the));\r\n } else {\r\n right = parseInt(the.options.sticky.position.right);\r\n }\r\n\r\n KTUtil.css(the.header, 'z-index', the.options.sticky.zIndex);\r\n KTUtil.css(the.header, 'top', top + 'px');\r\n KTUtil.css(the.header, 'left', left + 'px');\r\n KTUtil.css(the.header, 'right', right + 'px');\r\n }\r\n },\r\n\r\n resetSticky: function() {\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n if (KTUtil.hasClass(body, 'card-sticky-on') === false) {\r\n KTUtil.css(the.header, 'z-index', '');\r\n KTUtil.css(the.header, 'top', '');\r\n KTUtil.css(the.header, 'left', '');\r\n KTUtil.css(the.header, 'right', '');\r\n }\r\n },\r\n\r\n /**\r\n * Remove card\r\n */\r\n remove: function() {\r\n if (Plugin.eventTrigger('beforeRemove') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.remove(element);\r\n\r\n Plugin.eventTrigger('afterRemove');\r\n },\r\n\r\n /**\r\n * Set content\r\n */\r\n setContent: function(html) {\r\n if (html) {\r\n the.body.innerHTML = html;\r\n }\r\n },\r\n\r\n /**\r\n * Get body\r\n */\r\n getBody: function() {\r\n return the.body;\r\n },\r\n\r\n /**\r\n * Get self\r\n */\r\n getSelf: function() {\r\n return element;\r\n },\r\n\r\n /**\r\n * Reload\r\n */\r\n reload: function() {\r\n Plugin.eventTrigger('reload');\r\n },\r\n\r\n /**\r\n * Toggle\r\n */\r\n toggle: function() {\r\n if (KTUtil.hasClass(element, 'card-collapse') || KTUtil.hasClass(element, 'card-collapsed')) {\r\n Plugin.expand();\r\n } else {\r\n Plugin.collapse();\r\n }\r\n },\r\n\r\n /**\r\n * Collapse\r\n */\r\n collapse: function() {\r\n if (Plugin.eventTrigger('beforeCollapse') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.slideUp(the.body, the.options.toggleSpeed, function() {\r\n Plugin.eventTrigger('afterCollapse');\r\n });\r\n\r\n KTUtil.addClass(element, 'card-collapse');\r\n },\r\n\r\n /**\r\n * Expand\r\n */\r\n expand: function() {\r\n if (Plugin.eventTrigger('beforeExpand') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.slideDown(the.body, the.options.toggleSpeed, function() {\r\n Plugin.eventTrigger('afterExpand');\r\n });\r\n\r\n KTUtil.removeClass(element, 'card-collapse');\r\n KTUtil.removeClass(element, 'card-collapsed');\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n //KTUtil.triggerCustomEvent(name);\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Remove card\r\n */\r\n the.remove = function() {\r\n return Plugin.remove(html);\r\n };\r\n\r\n /**\r\n * Init sticky card\r\n */\r\n the.initSticky = function() {\r\n return Plugin.initSticky();\r\n };\r\n\r\n /**\r\n * Rerender sticky layout\r\n */\r\n the.updateSticky = function() {\r\n return Plugin.updateSticky();\r\n };\r\n\r\n /**\r\n * Reset the sticky\r\n */\r\n the.resetSticky = function() {\r\n return Plugin.resetSticky();\r\n };\r\n\r\n\t/**\r\n\t * Destroy sticky card\r\n\t */\r\n\tthe.destroySticky = function() {\r\n\t\tPlugin.resetSticky();\r\n\t\twindow.removeEventListener('scroll', Plugin.onScrollSticky);\r\n\t};\r\n\r\n /**\r\n * Reload card\r\n */\r\n the.reload = function() {\r\n return Plugin.reload();\r\n };\r\n\r\n /**\r\n * Set card content\r\n */\r\n the.setContent = function(html) {\r\n return Plugin.setContent(html);\r\n };\r\n\r\n /**\r\n * Toggle card\r\n */\r\n the.toggle = function() {\r\n return Plugin.toggle();\r\n };\r\n\r\n /**\r\n * Collapse card\r\n */\r\n the.collapse = function() {\r\n return Plugin.collapse();\r\n };\r\n\r\n /**\r\n * Expand card\r\n */\r\n the.expand = function() {\r\n return Plugin.expand();\r\n };\r\n\r\n /**\r\n * Get cardbody\r\n * @returns {jQuery}\r\n */\r\n the.getBody = function() {\r\n return Plugin.getBody();\r\n };\r\n\r\n /**\r\n * Get cardbody\r\n * @returns {jQuery}\r\n */\r\n the.getSelf = function() {\r\n return Plugin.getSelf();\r\n };\r\n\r\n /**\r\n * Attach event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTCard;\r\n}\r\n","\"use strict\";\r\n// DOCS: https://javascript.info/cookie\r\n\r\n// Component Definition \r\nvar KTCookie = function() {\r\n return {\r\n // returns the cookie with the given name,\r\n // or undefined if not found\r\n getCookie: function(name) {\r\n var matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : undefined;\r\n },\r\n // Please note that a cookie value is encoded,\r\n // so getCookie uses a built-in decodeURIComponent function to decode it.\r\n setCookie: function(name, value, options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n\r\n options = Object.assign({}, {path: '/'}, options);\r\n\r\n if (options.expires instanceof Date) {\r\n options.expires = options.expires.toUTCString();\r\n }\r\n\r\n var updatedCookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\r\n\r\n for (var optionKey in options) {\r\n if (!options.hasOwnProperty(optionKey)) {\r\n continue;\r\n }\r\n updatedCookie += \"; \" + optionKey;\r\n var optionValue = options[optionKey];\r\n if (optionValue !== true) {\r\n updatedCookie += \"=\" + optionValue;\r\n }\r\n }\r\n\r\n document.cookie = updatedCookie;\r\n },\r\n // To delete a cookie, we can call it with a negative expiration date:\r\n deleteCookie: function(name) {\r\n setCookie(name, \"\", {\r\n 'max-age': -1\r\n })\r\n }\r\n }\r\n}();\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTCookie;\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition \r\nvar KTDialog = function(options) {\r\n // Main object\r\n var the = this;\r\n\r\n // Get element object\r\n var element;\r\n var body = KTUtil.getBody();\r\n\r\n // Default options\r\n var defaultOptions = {\r\n 'placement' : 'top center',\r\n 'type' : 'loader',\r\n 'width' : 100,\r\n 'state' : 'default',\r\n 'message' : 'Loading...'\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n Plugin.init(options);\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subtoggle click toggle\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n the.state = false;\r\n },\r\n\r\n /**\r\n * Show dialog\r\n */\r\n show: function() {\r\n Plugin.eventTrigger('show');\r\n\r\n element = document.createElement(\"DIV\");\r\n KTUtil.setHTML(element, the.options.message);\r\n\r\n KTUtil.addClass(element, 'dialog dialog-shown');\r\n KTUtil.addClass(element, 'dialog-' + the.options.state);\r\n KTUtil.addClass(element, 'dialog-' + the.options.type);\r\n\r\n if (the.options.placement == 'top center') {\r\n KTUtil.addClass(element, 'dialog-top-center');\r\n }\r\n\r\n body.appendChild(element);\r\n\r\n the.state = 'shown';\r\n\r\n Plugin.eventTrigger('shown');\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Hide dialog\r\n */\r\n hide: function() {\r\n if (element) {\r\n Plugin.eventTrigger('hide');\r\n\r\n element.remove();\r\n the.state = 'hidden';\r\n\r\n Plugin.eventTrigger('hidden');\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Check shown state\r\n */\r\n the.shown = function() {\r\n return the.state == 'shown';\r\n };\r\n\r\n /**\r\n * Check hidden state\r\n */\r\n the.hidden = function() {\r\n return the.state == 'hidden';\r\n };\r\n\r\n /**\r\n * Show dialog\r\n */\r\n the.show = function() {\r\n return Plugin.show();\r\n };\r\n\r\n /**\r\n * Hide dialog\r\n */\r\n the.hide = function() {\r\n return Plugin.hide();\r\n };\r\n\r\n /**\r\n * Attach event\r\n * @returns {KTToggle}\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n * @returns {KTToggle}\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTDialog;\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTHeader = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (element === undefined) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n offset: {\r\n desktop: true,\r\n tabletAndMobile: true\r\n },\r\n releseOnReverse: {\r\n desktop: false,\r\n tabletAndMobile: false\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {KTHeader}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('header')) {\r\n the = KTUtil.data(element).get('header');\r\n } else {\r\n // reset header\r\n Plugin.init(options);\r\n\r\n // build header\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('header', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subheader click toggle\r\n * @returns {KTHeader}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n },\r\n\r\n /**\r\n * Reset header\r\n * @returns {KTHeader}\r\n */\r\n build: function() {\r\n var eventTriggerState = true;\r\n var lastScrollTop = 0;\r\n\r\n window.addEventListener('scroll', function() {\r\n var offset = 0, st, attrName;\r\n\r\n const isHomeIndex = document.querySelector(\".home-index-container\");\r\n\r\n if (isHomeIndex) {\r\n return; // ← Cancelamos el efecto sticky SOLO para home reclutador\r\n }\r\n\r\n if (KTUtil.isBreakpointDown('lg') && the.options.offset.tabletAndMobile === false) {\r\n return;\r\n }\r\n\r\n if (KTUtil.isBreakpointUp('lg') && the.options.offset.desktop === false) {\r\n return;\r\n }\r\n\r\n if (KTUtil.isBreakpointUp('lg')) {\r\n offset = the.options.offset.desktop;\r\n } else if (KTUtil.isBreakpointDown('lg')) {\r\n offset = the.options.offset.tabletAndMobile;\r\n }\r\n\r\n st = KTUtil.getScrollTop();\r\n\r\n if (\r\n (KTUtil.isBreakpointDown('lg') && the.options.releseOnReverse.tabletAndMobile) ||\r\n (KTUtil.isBreakpointUp('lg') && the.options.releseOnReverse.desktop)\r\n ) {\r\n if (st > offset && lastScrollTop < st) { // down scroll mode\r\n if (body.hasAttribute('data-header-scroll') === false) {\r\n body.setAttribute('data-header-scroll', 'on');\r\n }\r\n\r\n if (eventTriggerState) {\r\n Plugin.eventTrigger('scrollOn', the);\r\n eventTriggerState = false;\r\n }\r\n } else { // back scroll mode\r\n if (body.hasAttribute('data-header-scroll') === true) {\r\n body.removeAttribute('data-header-scroll');\r\n }\r\n\r\n if (eventTriggerState == false) {\r\n Plugin.eventTrigger('scrollOff', the);\r\n eventTriggerState = true;\r\n }\r\n }\r\n\r\n lastScrollTop = st;\r\n } else {\r\n if (st > offset) { // down scroll mode\r\n if (body.hasAttribute('data-header-scroll') === false) {\r\n body.setAttribute('data-header-scroll', 'on');\r\n }\r\n\r\n if (eventTriggerState) {\r\n Plugin.eventTrigger('scrollOn', the);\r\n eventTriggerState = false;\r\n }\r\n } else { // back scroll mode\r\n if (body.hasAttribute('data-header-scroll') === true) {\r\n body.removeAttribute('data-header-scroll');\r\n }\r\n\r\n if (eventTriggerState == false) {\r\n Plugin.eventTrigger('scrollOff', the);\r\n eventTriggerState = true;\r\n }\r\n }\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Register event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTHeader;\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition \r\nvar KTImageInput = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n editMode: false\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('imageinput')) {\r\n the = KTUtil.data(element).get('imageinput');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('imageinput', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Init avatar\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n the.input = KTUtil.find(element, 'input[type=\"file\"]');\r\n the.wrapper = KTUtil.find(element, '.image-input-wrapper');\r\n the.cancel = KTUtil.find(element, '[data-action=\"cancel\"]');\r\n the.remove = KTUtil.find(element, '[data-action=\"remove\"]');\r\n the.src = KTUtil.css(the.wrapper, 'backgroundImage');\r\n the.hidden = KTUtil.find(element, 'input[type=\"hidden\"]');\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n },\r\n\r\n /**\r\n * Build\r\n */\r\n build: function() {\r\n // Handle change\r\n KTUtil.addEvent(the.input, 'change', function(e) {\r\n e.preventDefault();\r\n\r\n\t if (the.input && the.input.files && the.input.files[0]) {\r\n\t var reader = new FileReader();\r\n\t reader.onload = function(e) {\r\n\t KTUtil.css(the.wrapper, 'background-image', 'url('+e.target.result +')');\r\n\t }\r\n\t reader.readAsDataURL(the.input.files[0]);\r\n\r\n\t KTUtil.addClass(the.element, 'image-input-changed');\r\n KTUtil.removeClass(the.element, 'image-input-empty');\r\n\r\n // Fire change event\r\n Plugin.eventTrigger('change');\r\n\t }\r\n });\r\n\r\n // Handle cancel\r\n KTUtil.addEvent(the.cancel, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n // Fire cancel event\r\n Plugin.eventTrigger('cancel');\r\n\r\n\t KTUtil.removeClass(the.element, 'image-input-changed');\r\n KTUtil.removeClass(the.element, 'image-input-empty');\r\n\t KTUtil.css(the.wrapper, 'background-image', the.src);\r\n\t the.input.value = \"\";\r\n\r\n if (the.hidden) {\r\n the.hidden.value = \"0\";\r\n }\r\n });\r\n\r\n // Handle remove\r\n KTUtil.addEvent(the.remove, 'click', function(e) {\r\n e.preventDefault();\r\n\r\n // Fire cancel event\r\n Plugin.eventTrigger('remove');\r\n\r\n\t KTUtil.removeClass(the.element, 'image-input-changed');\r\n KTUtil.addClass(the.element, 'image-input-empty');\r\n\t KTUtil.css(the.wrapper, 'background-image', \"none\");\r\n\t the.input.value = \"\";\r\n\r\n if (the.hidden) {\r\n the.hidden.value = \"1\";\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n //KTUtil.triggerCustomEvent(name);\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Attach event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTImageInput;\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTMenu = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n // scrollable area with Perfect Scroll\r\n scroll: {\r\n rememberPosition: false\r\n },\r\n\r\n // accordion submenu mode\r\n accordion: {\r\n slideSpeed: 200, // accordion toggle slide speed in milliseconds\r\n autoScroll: false, // enable auto scrolling(focus) to the clicked menu item\r\n autoScrollSpeed: 1200,\r\n expandAll: true // allow having multiple expanded accordions in the menu\r\n },\r\n\r\n // dropdown submenu mode\r\n dropdown: {\r\n timeout: 500 // timeout in milliseconds to show and hide the hoverable submenu dropdown\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {KTMenu}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('menu')) {\r\n the = KTUtil.data(element).get('menu');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // reset menu\r\n Plugin.reset();\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('menu', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles submenu click toggle\r\n * @returns {KTMenu}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n the.eventHandlers = {};\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // pause menu\r\n the.pauseDropdownHoverTime = 0;\r\n\r\n the.uid = KTUtil.getUniqueID();\r\n },\r\n\r\n update: function(options) {\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // pause menu\r\n the.pauseDropdownHoverTime = 0;\r\n\r\n // reset menu\r\n Plugin.reset();\r\n\r\n the.eventHandlers = {};\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('menu', the);\r\n },\r\n\r\n reload: function() {\r\n // reset menu\r\n Plugin.reset();\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n // reset submenu props\r\n Plugin.resetSubmenuProps();\r\n },\r\n\r\n /**\r\n * Reset menu\r\n * @returns {KTMenu}\r\n */\r\n build: function() {\r\n // General accordion submenu toggle\r\n the.eventHandlers['event_1'] = KTUtil.on( element, '.menu-toggle', 'click', Plugin.handleSubmenuAccordion);\r\n\r\n // Dropdown mode(hoverable)\r\n if (Plugin.getSubmenuMode() === 'dropdown' || Plugin.isConditionalSubmenuDropdown()) {\r\n // dropdown submenu - hover toggle\r\n the.eventHandlers['event_2'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseover', Plugin.handleSubmenuDrodownHoverEnter);\r\n the.eventHandlers['event_3'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseout', Plugin.handleSubmenuDrodownHoverExit);\r\n\r\n // dropdown submenu - click toggle\r\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);\r\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);\r\n }\r\n\r\n // Handle general link click\r\n the.eventHandlers['event_6'] = KTUtil.on(element, '.menu-item > .menu-link:not(.menu-toggle):not(.menu-link-toggle-skip)', 'click', Plugin.handleLinkClick);\r\n\r\n // Init scrollable menu\r\n if (the.options.scroll && the.options.scroll.height) {\r\n Plugin.scrollInit();\r\n }\r\n },\r\n\r\n /**\r\n * Reset menu\r\n * @returns {KTMenu}\r\n */\r\n reset: function() {\r\n KTUtil.off( element, 'click', the.eventHandlers['event_1']);\r\n\r\n // dropdown submenu - hover toggle\r\n KTUtil.off( element, 'mouseover', the.eventHandlers['event_2']);\r\n KTUtil.off( element, 'mouseout', the.eventHandlers['event_3']);\r\n\r\n // dropdown submenu - click toggle\r\n KTUtil.off( element, 'click', the.eventHandlers['event_4']);\r\n KTUtil.off( element, 'click', the.eventHandlers['event_5']);\r\n\r\n // handle link click\r\n KTUtil.off(element, 'click', the.eventHandlers['event_6']);\r\n },\r\n\r\n /**\r\n * Init scroll menu\r\n *\r\n */\r\n scrollInit: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollDestroy(element, true);\r\n KTUtil.scrollInit(element, {mobileNativeScroll: true, windowScroll: false, resetHeightOnDestroy: true, handleWindowResize: true, height: the.options.scroll.height, rememberPosition: the.options.scroll.rememberPosition});\r\n } else {\r\n KTUtil.scrollDestroy(element, true);\r\n }\r\n },\r\n\r\n /**\r\n * Update scroll menu\r\n */\r\n scrollUpdate: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollUpdate(element);\r\n }\r\n },\r\n\r\n /**\r\n * Scroll top\r\n */\r\n scrollTop: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollTop(element);\r\n }\r\n },\r\n\r\n /**\r\n * Get submenu mode for current breakpoint and menu state\r\n * @returns {KTMenu}\r\n */\r\n getSubmenuMode: function(el) {\r\n if ( KTUtil.isBreakpointUp('lg') ) {\r\n if (el && KTUtil.hasAttr(el, 'data-menu-toggle') && KTUtil.attr(el, 'data-menu-toggle') == 'hover') {\r\n return 'dropdown';\r\n }\r\n\r\n if ( KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\r\n if ( KTUtil.hasClasses(body, the.options.submenu.desktop.state.body) ) {\r\n return the.options.submenu.desktop.state.mode;\r\n } else {\r\n return the.options.submenu.desktop.default;\r\n }\r\n } else if ( KTUtil.isset(the.options.submenu, 'desktop') ) {\r\n return the.options.submenu.desktop;\r\n }\r\n } else if ( KTUtil.isBreakpointUp('md') && KTUtil.isBreakpointDown('lg') && KTUtil.isset(the.options.submenu, 'tablet') ) {\r\n return the.options.submenu.tablet;\r\n } else if ( KTUtil.isBreakpointDown('md') && KTUtil.isset(the.options.submenu, 'mobile') ) {\r\n return the.options.submenu.mobile;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n /**\r\n * Get submenu mode for current breakpoint and menu state\r\n * @returns {KTMenu}\r\n */\r\n isConditionalSubmenuDropdown: function() {\r\n if ( KTUtil.isBreakpointUp('lg') && KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n\r\n /**\r\n * Reset submenu attributes\r\n * @returns {KTMenu}\r\n */\r\n resetSubmenuProps: function(e) {\r\n var submenus = KTUtil.findAll(element, '.menu-submenu');\r\n if ( submenus ) {\r\n for (var i = 0, len = submenus.length; i < len; i++) {\r\n var submenu = submenus[0];\r\n\r\n KTUtil.css(submenu, 'display', '');\r\n KTUtil.css(submenu, 'overflow', '');\r\n\r\n if (submenu.hasAttribute('data-hor-direction')) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-left');\r\n KTUtil.removeClass(submenu, 'menu-submenu-right');\r\n KTUtil.addClass(submenu, submenu.getAttribute('data-hor-direction'));\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDrodownHoverEnter: function(e) {\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n if ( the.resumeDropdownHover() === false ) {\r\n return;\r\n }\r\n\r\n var item = this;\r\n\r\n if ( item.getAttribute('data-hover') == '1' ) {\r\n item.removeAttribute('data-hover');\r\n clearTimeout( item.getAttribute('data-timeout') );\r\n item.removeAttribute('data-timeout');\r\n }\r\n\r\n Plugin.showSubmenuDropdown(item);\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDrodownHoverExit: function(e) {\r\n if ( the.resumeDropdownHover() === false ) {\r\n return;\r\n }\r\n\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n var item = this;\r\n var time = the.options.dropdown.timeout;\r\n\r\n var timeout = setTimeout(function() {\r\n if ( item.getAttribute('data-hover') == '1' ) {\r\n Plugin.hideSubmenuDropdown(item, true);\r\n }\r\n }, time);\r\n\r\n item.setAttribute('data-hover', '1');\r\n item.setAttribute('data-timeout', timeout);\r\n },\r\n\r\n /**\r\n * Handles submenu click toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownClick: function(e) {\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n var item = this.closest('.menu-item');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( item.getAttribute('data-menu-submenu-mode') == 'accordion' ) {\r\n return;\r\n }\r\n\r\n if ( KTUtil.hasClass(item, 'menu-item-hover') === false ) {\r\n KTUtil.addClass(item, 'menu-item-open-dropdown');\r\n Plugin.showSubmenuDropdown(item);\r\n } else {\r\n KTUtil.removeClass(item, 'menu-item-open-dropdown' );\r\n Plugin.hideSubmenuDropdown(item, true);\r\n }\r\n\r\n e.preventDefault();\r\n },\r\n\r\n /**\r\n * Handles tab click toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownTabClick: function(e) {\r\n if (Plugin.getSubmenuMode(this) === 'accordion') {\r\n return;\r\n }\r\n var item = this.closest('.menu-item');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if (item.getAttribute('data-menu-submenu-mode') == 'accordion') {\r\n return;\r\n }\r\n\r\n if (KTUtil.hasClass(item, 'menu-item-hover') == false) {\r\n KTUtil.addClass(item, 'menu-item-open-dropdown');\r\n Plugin.showSubmenuDropdown(item);\r\n }\r\n\r\n e.preventDefault();\r\n },\r\n\r\n /**\r\n * Handles link click\r\n * @returns {KTMenu}\r\n */\r\n handleLinkClick: function(e) {\r\n var submenu = this.closest('.menu-item.menu-item-submenu');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('linkClick', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( submenu && Plugin.getSubmenuMode(submenu) === 'dropdown' ) {\r\n Plugin.hideSubmenuDropdowns();\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu dropdown close on link click\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownClose: function(e, el) {\r\n // exit if its not submenu dropdown mode\r\n if (Plugin.getSubmenuMode(el) === 'accordion') {\r\n return;\r\n }\r\n\r\n var shown = element.querySelectorAll('.menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)');\r\n\r\n // check if currently clicked link's parent item ha\r\n if (shown.length > 0 && KTUtil.hasClass(el, 'menu-toggle') === false && el.querySelectorAll('.menu-toggle').length === 0) {\r\n // close opened dropdown menus\r\n for (var i = 0, len = shown.length; i < len; i++) {\r\n Plugin.hideSubmenuDropdown(shown[0], true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * helper functions\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuAccordion: function(e, el) {\r\n var query;\r\n var item = el ? el : this;\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( Plugin.getSubmenuMode(el) === 'dropdown' && (query = item.closest('.menu-item') ) ) {\r\n if (query.getAttribute('data-menu-submenu-mode') != 'accordion' ) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n var li = item.closest('.menu-item');\r\n var submenu = KTUtil.child(li, '.menu-submenu, .menu-inner');\r\n\r\n if (KTUtil.hasClass(item.closest('.menu-item'), 'menu-item-open-always')) {\r\n return;\r\n }\r\n\r\n if ( li && submenu ) {\r\n e.preventDefault();\r\n var speed = the.options.accordion.slideSpeed;\r\n var hasClosables = false;\r\n\r\n if ( KTUtil.hasClass(li, 'menu-item-open') === false ) {\r\n // hide other accordions\r\n if ( the.options.accordion.expandAll === false ) {\r\n var subnav = item.closest('.menu-nav, .menu-subnav');\r\n var closables = KTUtil.children(subnav, '.menu-item.menu-item-open.menu-item-submenu:not(.menu-item-here):not(.menu-item-open-always)');\r\n\r\n if ( subnav && closables ) {\r\n for (var i = 0, len = closables.length; i < len; i++) {\r\n var el_ = closables[0];\r\n var submenu_ = KTUtil.child(el_, '.menu-submenu');\r\n if ( submenu_ ) {\r\n KTUtil.slideUp(submenu_, speed, function() {\r\n Plugin.scrollUpdate();\r\n KTUtil.removeClass(el_, 'menu-item-open');\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n KTUtil.slideDown(submenu, speed, function() {\r\n Plugin.scrollToItem(item);\r\n Plugin.scrollUpdate();\r\n\r\n Plugin.eventTrigger('submenuToggle', submenu, e);\r\n });\r\n\r\n KTUtil.addClass(li, 'menu-item-open');\r\n\r\n } else {\r\n KTUtil.slideUp(submenu, speed, function() {\r\n Plugin.scrollToItem(item);\r\n Plugin.eventTrigger('submenuToggle', submenu, e);\r\n });\r\n\r\n KTUtil.removeClass(li, 'menu-item-open');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * scroll to item function\r\n * @returns {KTMenu}\r\n */\r\n scrollToItem: function(item) {\r\n // handle auto scroll for accordion submenus\r\n if ( KTUtil.isBreakpointUp('lg') && the.options.accordion.autoScroll && element.getAttribute('data-menu-scroll') !== '1' ) {\r\n KTUtil.scrollTo(item, the.options.accordion.autoScrollSpeed);\r\n }\r\n },\r\n\r\n /**\r\n * Hide submenu dropdown\r\n * @returns {KTMenu}\r\n */\r\n hideSubmenuDropdown: function(item, classAlso) {\r\n // remove submenu activation class\r\n if ( classAlso ) {\r\n KTUtil.removeClass(item, 'menu-item-hover');\r\n KTUtil.removeClass(item, 'menu-item-active-tab');\r\n }\r\n\r\n // clear timeout\r\n item.removeAttribute('data-hover');\r\n\r\n if ( item.getAttribute('data-menu-toggle-class') ) {\r\n KTUtil.removeClass(body, item.getAttribute('data-menu-toggle-class'));\r\n }\r\n\r\n var timeout = item.getAttribute('data-timeout');\r\n item.removeAttribute('data-timeout');\r\n clearTimeout(timeout);\r\n },\r\n\r\n /**\r\n * Hide submenu dropdowns\r\n * @returns {KTMenu}\r\n */\r\n hideSubmenuDropdowns: function() {\r\n var items;\r\n if ( items = element.querySelectorAll('.menu-item-submenu.menu-item-hover:not(.menu-item-tabs):not([data-menu-toggle=\"tab\"])') ) {\r\n for (var j = 0, cnt = items.length; j < cnt; j++) {\r\n Plugin.hideSubmenuDropdown(items[j], true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * helper functions\r\n * @returns {KTMenu}\r\n */\r\n showSubmenuDropdown: function(item) {\r\n // close active submenus\r\n var list = element.querySelectorAll('.menu-item-submenu.menu-item-hover, .menu-item-submenu.menu-item-active-tab');\r\n\r\n if ( list ) {\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n var el = list[i];\r\n if ( item !== el && el.contains(item) === false && item.contains(el) === false ) {\r\n Plugin.hideSubmenuDropdown(el, true);\r\n }\r\n }\r\n }\r\n\r\n // add submenu activation class\r\n KTUtil.addClass(item, 'menu-item-hover');\r\n\r\n // Change the alignment of submenu is offscreen.\r\n var submenu = KTUtil.find(item, '.menu-submenu');\r\n\r\n if (submenu && submenu.hasAttribute('data-hor-direction') === false) {\r\n if (KTUtil.hasClass(submenu, 'menu-submenu-left')) {\r\n submenu.setAttribute('data-hor-direction', 'menu-submenu-left');\r\n } else if (KTUtil.hasClass(submenu, 'menu-submenu-right')) {\r\n submenu.setAttribute('data-hor-direction', 'menu-submenu-right');\r\n }\r\n }\r\n\r\n if ( submenu && KTUtil.isOffscreen(submenu, 'left', 15) === true ) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-left');\r\n KTUtil.addClass(submenu, 'menu-submenu-right');\r\n } else if ( submenu && KTUtil.isOffscreen(submenu, 'right', 15) === true ) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-right');\r\n KTUtil.addClass(submenu, 'menu-submenu-left');\r\n }\r\n\r\n if ( item.getAttribute('data-menu-toggle-class') ) {\r\n KTUtil.addClass(body, item.getAttribute('data-menu-toggle-class'));\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu slide toggle\r\n * @returns {KTMenu}\r\n */\r\n createSubmenuDropdownClickDropoff: function(el) {\r\n var query;\r\n var zIndex = (query = KTUtil.child(el, '.menu-submenu') ? KTUtil.css(query, 'z-index') : 0) - 1;\r\n\r\n var dropoff = document.createElement('
');\r\n\r\n body.appendChild(dropoff);\r\n\r\n KTUtil.addEvent(dropoff, 'click', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n KTUtil.remove(this);\r\n Plugin.hideSubmenuDropdown(el, true);\r\n });\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n pauseDropdownHover: function(time) {\r\n var date = new Date();\r\n\r\n the.pauseDropdownHoverTime = date.getTime() + time;\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n resumeDropdownHover: function() {\r\n var date = new Date();\r\n\r\n return (date.getTime() > the.pauseDropdownHoverTime ? true : false);\r\n },\r\n\r\n /**\r\n * Reset menu's current active item\r\n * @returns {KTMenu}\r\n */\r\n resetActiveItem: function(item) {\r\n var list;\r\n var parents;\r\n\r\n list = element.querySelectorAll('.menu-item-active');\r\n\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n var el = list[0];\r\n KTUtil.removeClass(el, 'menu-item-active');\r\n KTUtil.hide( KTUtil.child(el, '.menu-submenu') );\r\n parents = KTUtil.parents(el, '.menu-item-submenu') || [];\r\n\r\n for (var i_ = 0, len_ = parents.length; i_ < len_; i_++) {\r\n var el_ = parents[i];\r\n KTUtil.removeClass(el_, 'menu-item-open');\r\n KTUtil.hide( KTUtil.child(el_, '.menu-submenu') );\r\n }\r\n }\r\n\r\n // close open submenus\r\n if ( the.options.accordion.expandAll === false ) {\r\n if ( list = element.querySelectorAll('.menu-item-open') ) {\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n KTUtil.removeClass(parents[0], 'menu-item-open');\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Sets menu's active item\r\n * @returns {KTMenu}\r\n */\r\n setActiveItem: function(item) {\r\n // reset current active item\r\n Plugin.resetActiveItem();\r\n\r\n var parents = KTUtil.parents(item, '.menu-item-submenu') || [];\r\n for (var i = 0, len = parents.length; i < len; i++) {\r\n KTUtil.addClass(parents[i], 'menu-item-open');\r\n }\r\n\r\n KTUtil.addClass(item, 'menu-item-active');\r\n },\r\n\r\n /**\r\n * Returns page breadcrumbs for the menu's active item\r\n * @returns {KTMenu}\r\n */\r\n getBreadcrumbs: function(item) {\r\n var query;\r\n var breadcrumbs = [];\r\n var link = KTUtil.child(item, '.menu-link');\r\n\r\n breadcrumbs.push({\r\n text: (query = KTUtil.child(link, '.menu-text') ? query.innerHTML : ''),\r\n title: link.getAttribute('title'),\r\n href: link.getAttribute('href')\r\n });\r\n\r\n var parents = KTUtil.parents(item, '.menu-item-submenu');\r\n for (var i = 0, len = parents.length; i < len; i++) {\r\n var submenuLink = KTUtil.child(parents[i], '.menu-link');\r\n\r\n breadcrumbs.push({\r\n text: (query = KTUtil.child(submenuLink, '.menu-text') ? query.innerHTML : ''),\r\n title: submenuLink.getAttribute('title'),\r\n href: submenuLink.getAttribute('href')\r\n });\r\n }\r\n\r\n return breadcrumbs.reverse();\r\n },\r\n\r\n /**\r\n * Returns page title for the menu's active item\r\n * @returns {KTMenu}\r\n */\r\n getPageTitle: function(item) {\r\n var query;\r\n\r\n return (query = KTUtil.child(item, '.menu-text') ? query.innerHTML : '');\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, target, e) {\r\n for (var i = 0; i < the.events.length; i++ ) {\r\n var event = the.events[i];\r\n if ( event.name == name ) {\r\n if ( event.one == true ) {\r\n if ( event.fired == false ) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, target, e);\r\n }\r\n } else {\r\n return event.handler.call(this, target, e);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n },\r\n\r\n removeEvent: function(name) {\r\n if (the.events[name]) {\r\n delete the.events[name];\r\n }\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Update scroll\r\n */\r\n the.scrollUpdate = function() {\r\n return Plugin.scrollUpdate();\r\n };\r\n\r\n /**\r\n * Re-init scroll\r\n */\r\n the.scrollReInit = function() {\r\n return Plugin.scrollInit();\r\n };\r\n\r\n /**\r\n * Scroll top\r\n */\r\n the.scrollTop = function() {\r\n return Plugin.scrollTop();\r\n };\r\n\r\n /**\r\n * Set active menu item\r\n */\r\n the.setActiveItem = function(item) {\r\n return Plugin.setActiveItem(item);\r\n };\r\n\r\n the.reload = function() {\r\n return Plugin.reload();\r\n };\r\n\r\n the.update = function(options) {\r\n return Plugin.update(options);\r\n };\r\n\r\n /**\r\n * Set breadcrumb for menu item\r\n */\r\n the.getBreadcrumbs = function(item) {\r\n return Plugin.getBreadcrumbs(item);\r\n };\r\n\r\n /**\r\n * Set page title for menu item\r\n */\r\n the.getPageTitle = function(item) {\r\n return Plugin.getPageTitle(item);\r\n };\r\n\r\n /**\r\n * Get submenu mode\r\n */\r\n the.getSubmenuMode = function(el) {\r\n return Plugin.getSubmenuMode(el);\r\n };\r\n\r\n /**\r\n * Hide dropdown\r\n * @returns {Object}\r\n */\r\n the.hideDropdown = function(item) {\r\n Plugin.hideSubmenuDropdown(item, true);\r\n };\r\n\r\n /**\r\n * Hide dropdowns\r\n * @returns {Object}\r\n */\r\n the.hideDropdowns = function() {\r\n Plugin.hideSubmenuDropdowns();\r\n };\r\n\r\n /**\r\n * Disable menu for given time\r\n * @returns {Object}\r\n */\r\n the.pauseDropdownHover = function(time) {\r\n Plugin.pauseDropdownHover(time);\r\n };\r\n\r\n /**\r\n * Disable menu for given time\r\n * @returns {Object}\r\n */\r\n the.resumeDropdownHover = function() {\r\n return Plugin.resumeDropdownHover();\r\n };\r\n\r\n /**\r\n * Register event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n the.off = function(name) {\r\n return Plugin.removeEvent(name);\r\n };\r\n\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Handle plugin on window resize\r\n KTUtil.addResizeHandler(function() {\r\n if (init) {\r\n the.reload();\r\n }\r\n });\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTMenu;\r\n}\r\n\r\n// Plugin global lazy initialization\r\ndocument.addEventListener(\"click\", function (e) {\r\n var body = KTUtil.getByTagName('body')[0];\r\n var query;\r\n if ( query = body.querySelectorAll('.menu-nav .menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)[data-menu-toggle=\"click\"]') ) {\r\n for (var i = 0, len = query.length; i < len; i++) {\r\n var element = query[i].closest('.menu-nav').parentNode;\r\n\r\n if ( element ) {\r\n var the = KTUtil.data(element).get('menu');\r\n\r\n if ( !the ) {\r\n break;\r\n }\r\n\r\n if ( !the || the.getSubmenuMode() !== 'dropdown' ) {\r\n break;\r\n }\r\n\r\n if ( e.target !== element && element.contains(e.target) === false ) {\r\n the.hideDropdowns();\r\n }\r\n }\r\n }\r\n }\r\n});\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTOffcanvas = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n attrCustom: ''\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('offcanvas')) {\r\n the = KTUtil.data(element).get('offcanvas');\r\n } else {\r\n // Reset offcanvas\r\n Plugin.init(options);\r\n\r\n // Build offcanvas\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('offcanvas', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n the.classBase = the.options.baseClass;\r\n the.attrCustom = the.options.attrCustom;\r\n the.classShown = the.classBase + '-on';\r\n the.classOverlay = the.classBase + '-overlay';\r\n the.target;\r\n\r\n the.state = KTUtil.hasClass(element, the.classShown) ? 'shown' : 'hidden';\r\n },\r\n\r\n build: function() {\r\n // offcanvas toggle\r\n if (the.options.toggleBy) {\r\n if (typeof the.options.toggleBy === 'string') {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n } else if (the.options.toggleBy && the.options.toggleBy[0]) {\r\n if (the.options.toggleBy[0].target) {\r\n for (var i in the.options.toggleBy) {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i].target), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n } else {\r\n for (var i in the.options.toggleBy) {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i]), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n }\r\n\r\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\r\n KTUtil.addEvent( KTUtil.getById(the.options.toggleBy.target), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n }\r\n\r\n // offcanvas close\r\n var closeBy = KTUtil.getById(the.options.closeBy);\r\n if (closeBy) {\r\n KTUtil.addEvent(closeBy, 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.hide();\r\n });\r\n }\r\n },\r\n\r\n isShown: function() {\r\n return (the.state == 'shown' ? true : false);\r\n },\r\n\r\n toggle: function() {;\r\n Plugin.eventTrigger('toggle');\r\n\r\n if (the.state == 'shown') {\r\n Plugin.hide();\r\n } else {\r\n Plugin.show();\r\n }\r\n },\r\n\r\n show: function() {\r\n if (the.state == 'shown') {\r\n return;\r\n }\r\n\r\n Plugin.eventTrigger('beforeShow');\r\n\r\n Plugin.toggleClass('show');\r\n\r\n // Offcanvas panel\r\n KTUtil.attr(body, 'data-offcanvas-' + the.classBase, 'on');\r\n KTUtil.addClass(element, the.classShown);\r\n\r\n if (the.attrCustom.length > 0) {\r\n KTUtil.attr(body, 'data-offcanvas-' + the.classCustom, 'on');\r\n //KTUtil.addClass(body, the.classCustom);\r\n }\r\n\r\n the.state = 'shown';\r\n\r\n if (the.options.overlay) {\r\n the.overlay = KTUtil.insertAfter(document.createElement('DIV') , element );\r\n KTUtil.addClass(the.overlay, the.classOverlay);\r\n\r\n KTUtil.addEvent(the.overlay, 'click', function(e) {\r\n //e.stopPropagation();\r\n e.preventDefault();\r\n Plugin.hide(the.target);\r\n });\r\n }\r\n\r\n Plugin.eventTrigger('afterShow');\r\n },\r\n\r\n hide: function() {\r\n if (the.state == 'hidden') {\r\n return;\r\n }\r\n\r\n Plugin.eventTrigger('beforeHide');\r\n\r\n Plugin.toggleClass('hide');\r\n\r\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.classBase);\r\n KTUtil.removeClass(element, the.classShown);\r\n\r\n if (the.attrCustom.length > 0) {\r\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.attrCustom);\r\n }\r\n\r\n the.state = 'hidden';\r\n\r\n if (the.options.overlay && the.overlay) {\r\n KTUtil.remove(the.overlay);\r\n }\r\n\r\n Plugin.eventTrigger('afterHide');\r\n },\r\n\r\n toggleClass: function(mode) {\r\n var id = KTUtil.attr(the.target, 'id');\r\n var toggleBy;\r\n\r\n if (the.options.toggleBy && the.options.toggleBy[0] && the.options.toggleBy[0].target) {\r\n for (var i in the.options.toggleBy) {\r\n if (the.options.toggleBy[i].target === id) {\r\n toggleBy = the.options.toggleBy[i];\r\n }\r\n }\r\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\r\n toggleBy = the.options.toggleBy;\r\n }\r\n\r\n if (toggleBy) {\r\n var el = KTUtil.getById(toggleBy.target);\r\n\r\n if (mode === 'show') {\r\n KTUtil.addClass(el, toggleBy.state);\r\n }\r\n\r\n if (mode === 'hide') {\r\n KTUtil.removeClass(el, toggleBy.state);\r\n }\r\n }\r\n },\r\n\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n * @param options\r\n */\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Check if canvas is shown\r\n * @returns {boolean}\r\n */\r\n the.isShown = function() {\r\n return Plugin.isShown();\r\n };\r\n\r\n /**\r\n * Set to hide the canvas\r\n */\r\n the.hide = function() {\r\n return Plugin.hide();\r\n };\r\n\r\n /**\r\n * Set to show the canvas\r\n */\r\n the.show = function() {\r\n return Plugin.show();\r\n };\r\n\r\n /**\r\n * Attach event\r\n * @param name\r\n * @param handler\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n * @param name\r\n * @param handler\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTOffcanvas;\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTScrolltop = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n offset: 300,\r\n speed: 6000\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {mscrolltop}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('scrolltop')) {\r\n the = KTUtil.data(element).get('scrolltop');\r\n } else {\r\n // reset scrolltop\r\n Plugin.init(options);\r\n\r\n // build scrolltop\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('scrolltop', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subscrolltop click toggle\r\n * @returns {mscrolltop}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n },\r\n\r\n build: function() {\r\n var timer;\r\n\r\n window.addEventListener('scroll', function() {\r\n KTUtil.throttle(timer, function() {\r\n Plugin.handle();\r\n }, 200);\r\n });\r\n\r\n // handle button click\r\n KTUtil.addEvent(element, 'click', Plugin.scroll);\r\n },\r\n\r\n /**\r\n * Handles scrolltop click scrollTop\r\n */\r\n handle: function() {\r\n var pos = KTUtil.getScrollTop(); // current vertical position\r\n\r\n if (pos > the.options.offset) {\r\n if (body.hasAttribute('data-scrolltop') === false) {\r\n body.setAttribute('data-scrolltop', 'on');\r\n }\r\n } else {\r\n if (body.hasAttribute('data-scrolltop') === true) {\r\n body.removeAttribute('data-scrolltop');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Handles scrolltop click scrollTop\r\n */\r\n scroll: function(e) {\r\n e.preventDefault();\r\n\r\n KTUtil.scrollTop(0, the.options.speed);\r\n },\r\n\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Get subscrolltop mode\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Set scrolltop content\r\n * @returns {mscrolltop}\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTScrolltop;\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTToggle = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n targetToggleMode: 'class' // class|attribute\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('toggle')) {\r\n the = KTUtil.data(element).get('toggle');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('toggle', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subtoggle click toggle\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n // Merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n //alert(the.options.target.tagName);\r\n the.target = KTUtil.getById(options.target);\r\n\r\n the.targetState = the.options.targetState;\r\n the.toggleState = the.options.toggleState;\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n the.state = KTUtil.hasClasses(the.target, the.targetState) ? 'on' : 'off';\r\n } else {\r\n the.state = KTUtil.hasAttr(the.target, 'data-' + the.targetState) ? KTUtil.attr(the.target, 'data-' + the.targetState) : 'off';\r\n }\r\n },\r\n\r\n /**\r\n * Setup toggle\r\n */\r\n build: function() {\r\n KTUtil.addEvent(element, 'mouseup', Plugin.toggle);\r\n },\r\n\r\n /**\r\n * Handles offcanvas click toggle\r\n */\r\n toggle: function(e) {\r\n Plugin.eventTrigger('beforeToggle');\r\n\r\n if (the.state == 'off') {\r\n Plugin.toggleOn();\r\n } else {\r\n Plugin.toggleOff();\r\n }\r\n\r\n Plugin.eventTrigger('afterToggle');\r\n\r\n e.preventDefault();\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles toggle click toggle\r\n */\r\n toggleOn: function() {\r\n Plugin.eventTrigger('beforeOn');\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n KTUtil.addClass(the.target, the.targetState);\r\n } else {\r\n KTUtil.attr(the.target, 'data-' + the.targetState, 'on');\r\n }\r\n\r\n if (the.toggleState) {\r\n KTUtil.addClass(element, the.toggleState);\r\n }\r\n\r\n the.state = 'on';\r\n\r\n Plugin.eventTrigger('afterOn');\r\n\r\n Plugin.eventTrigger('toggle');\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles toggle click toggle\r\n */\r\n toggleOff: function() {\r\n Plugin.eventTrigger('beforeOff');\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n KTUtil.removeClass(the.target, the.targetState);\r\n } else {\r\n KTUtil.removeAttr(the.target, 'data-' + the.targetState);\r\n }\r\n\r\n if (the.toggleState) {\r\n KTUtil.removeClass(element, the.toggleState);\r\n }\r\n\r\n the.state = 'off';\r\n\r\n Plugin.eventTrigger('afterOff');\r\n\r\n Plugin.eventTrigger('toggle');\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Get toggle state\r\n */\r\n the.getState = function() {\r\n return the.state;\r\n };\r\n\r\n /**\r\n * Toggle\r\n */\r\n the.toggle = function() {\r\n return Plugin.toggle();\r\n };\r\n\r\n /**\r\n * Toggle on\r\n */\r\n the.toggleOn = function() {\r\n return Plugin.toggleOn();\r\n };\r\n\r\n /**\r\n * Toggle off\r\n */\r\n the.toggleOff = function() {\r\n return Plugin.toggleOff();\r\n };\r\n\r\n /**\r\n * Attach event\r\n * @returns {KTToggle}\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n * @returns {KTToggle}\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTToggle;\r\n}\r\n","\"use strict\";\r\n\r\n// Component Definition\r\nvar KTWizard = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n startStep: 1,\r\n clickableSteps: false // to make steps clickable this set value true and add data-wizard-clickable=\"true\" in HTML for class=\"wizard\" element\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('wizard')) {\r\n the = KTUtil.data(element).get('wizard');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('wizard', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Init wizard\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // Elements\r\n the.steps = KTUtil.findAll(element, '[data-wizard-type=\"step\"]');\r\n\r\n the.btnSubmit = KTUtil.find(element, '[data-wizard-type=\"action-submit\"]');\r\n the.btnNext = KTUtil.find(element, '[data-wizard-type=\"action-next\"]');\r\n the.btnPrev = KTUtil.find(element, '[data-wizard-type=\"action-prev\"]');\r\n the.btnLast = KTUtil.find(element, '[data-wizard-type=\"action-last\"]');\r\n the.btnFirst = KTUtil.find(element, '[data-wizard-type=\"action-first\"]');\r\n\r\n // Variables\r\n the.events = [];\r\n the.currentStep = 1;\r\n the.stopped = false;\r\n the.totalSteps = the.steps.length;\r\n\r\n // Init current step\r\n if (the.options.startStep > 1) {\r\n Plugin.goTo(the.options.startStep);\r\n }\r\n\r\n // Init UI\r\n Plugin.updateUI();\r\n },\r\n\r\n /**\r\n * Build Form Wizard\r\n */\r\n build: function() {\r\n // Next button event handler\r\n KTUtil.addEvent(the.btnNext, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.goTo(Plugin.getNextStep(), true);\r\n });\r\n\r\n // Prev button event handler\r\n KTUtil.addEvent(the.btnPrev, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.goTo(Plugin.getPrevStep(), true);\r\n });\r\n\r\n // First button event handler\r\n KTUtil.addEvent(the.btnFirst, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.goTo(Plugin.getFirstStep(), true);\r\n });\r\n\r\n // Last button event handler\r\n KTUtil.addEvent(the.btnLast, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.goTo(Plugin.getLastStep(), true);\r\n });\r\n\r\n if (the.options.clickableSteps === true) {\r\n KTUtil.on(element, '[data-wizard-type=\"step\"]', 'click', function() {\r\n var index = KTUtil.index(this) + 1;\r\n if (index !== the.currentStep) {\r\n Plugin.goTo(index, true);\r\n }\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Handles wizard click wizard\r\n */\r\n goTo: function(number, eventHandle) {\r\n //console.log('go to:' + number);\r\n\r\n // Skip if this step is already shown\r\n if (number === the.currentStep || number > the.totalSteps || number < 0) {\r\n return;\r\n }\r\n\r\n // Validate step number\r\n if (number) {\r\n number = parseInt(number);\r\n } else {\r\n number = Plugin.getNextStep();\r\n }\r\n\r\n // Before next and prev events\r\n var callback;\r\n\r\n if (eventHandle === true) {\r\n if (number > the.currentStep) {\r\n callback = Plugin.eventTrigger('beforeNext');\r\n } else {\r\n callback = Plugin.eventTrigger('beforePrev');\r\n }\r\n }\r\n\r\n // Skip if stopped\r\n if (the.stopped === true) {\r\n the.stopped = false;\r\n return;\r\n }\r\n\r\n // Continue if no exit\r\n if (callback !== false) {\r\n // Before change\r\n if (eventHandle === true) {\r\n Plugin.eventTrigger('beforeChange');\r\n }\r\n\r\n // Set current step\r\n the.currentStep = number;\r\n\r\n Plugin.updateUI();\r\n\r\n // Trigger change event\r\n if (eventHandle === true) {\r\n Plugin.eventTrigger('change');\r\n }\r\n }\r\n\r\n // After next and prev events\r\n if (eventHandle === true) {\r\n if (number > the.startStep) {\r\n Plugin.eventTrigger('afterNext');\r\n } else {\r\n Plugin.eventTrigger('afterPrev');\r\n }\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Cancel\r\n */\r\n stop: function() {\r\n the.stopped = true;\r\n },\r\n\r\n /**\r\n * Resume\r\n */\r\n start: function() {\r\n the.stopped = false;\r\n },\r\n\r\n /**\r\n * Check last step\r\n */\r\n isLastStep: function() {\r\n return the.currentStep === the.totalSteps;\r\n },\r\n\r\n /**\r\n * Check first step\r\n */\r\n isFirstStep: function() {\r\n return the.currentStep === 1;\r\n },\r\n\r\n /**\r\n * Check between step\r\n */\r\n isBetweenStep: function() {\r\n return Plugin.isLastStep() === false && Plugin.isFirstStep() === false;\r\n },\r\n\r\n /**\r\n * Go to the first step\r\n */\r\n updateUI: function() {\r\n var stepType = '';\r\n var index = the.currentStep - 1;\r\n\r\n if (Plugin.isLastStep()) {\r\n stepType = 'last';\r\n } else if (Plugin.isFirstStep()) {\r\n stepType = 'first';\r\n } else {\r\n stepType = 'between';\r\n }\r\n\r\n KTUtil.attr(the.element, 'data-wizard-state', stepType);\r\n\r\n // Steps\r\n var steps = KTUtil.findAll(the.element, '[data-wizard-type=\"step\"]');\r\n\r\n if (steps && steps.length > 0) {\r\n for (var i = 0, len = steps.length; i < len; i++) {\r\n if (i == index) {\r\n KTUtil.attr(steps[i], 'data-wizard-state', 'current');\r\n } else {\r\n if (i < index) {\r\n KTUtil.attr(steps[i], 'data-wizard-state', 'done');\r\n } else {\r\n KTUtil.attr(steps[i], 'data-wizard-state', 'pending');\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Steps Info\r\n var stepsInfo = KTUtil.findAll(the.element, '[data-wizard-type=\"step-info\"]');\r\n if (stepsInfo &&stepsInfo.length > 0) {\r\n for (var i = 0, len = stepsInfo.length; i < len; i++) {\r\n if (i == index) {\r\n KTUtil.attr(stepsInfo[i], 'data-wizard-state', 'current');\r\n } else {\r\n KTUtil.removeAttr(stepsInfo[i], 'data-wizard-state');\r\n }\r\n }\r\n }\r\n\r\n // Steps Content\r\n var stepsContent = KTUtil.findAll(the.element, '[data-wizard-type=\"step-content\"]');\r\n if (stepsContent&& stepsContent.length > 0) {\r\n for (var i = 0, len = stepsContent.length; i < len; i++) {\r\n if (i == index) {\r\n KTUtil.attr(stepsContent[i], 'data-wizard-state', 'current');\r\n } else {\r\n KTUtil.removeAttr(stepsContent[i], 'data-wizard-state');\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Get next step\r\n */\r\n getNextStep: function() {\r\n if (the.totalSteps >= (the.currentStep + 1)) {\r\n return the.currentStep + 1;\r\n } else {\r\n return the.totalSteps;\r\n }\r\n },\r\n\r\n /**\r\n * Get prev step\r\n */\r\n getPrevStep: function() {\r\n if ((the.currentStep - 1) >= 1) {\r\n return the.currentStep - 1;\r\n } else {\r\n return 1;\r\n }\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, nested) {\r\n //KTUtil.triggerCustomEvent(name);\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Go to the next step\r\n */\r\n the.goNext = function(eventHandle) {\r\n return Plugin.goTo(Plugin.getNextStep(), eventHandle);\r\n };\r\n\r\n /**\r\n * Go to the prev step\r\n */\r\n the.goPrev = function(eventHandle) {\r\n return Plugin.goTo(Plugin.getPrevStep(),eventHandle);\r\n };\r\n\r\n /**\r\n * Go to the last step\r\n */\r\n the.goLast = function(eventHandle) {\r\n return Plugin.goTo(Plugin.getLastStep(), eventHandle);\r\n };\r\n\r\n /**\r\n * Go to the first step\r\n */\r\n the.goFirst = function(eventHandle) {\r\n return Plugin.goTo(Plugin.getFirstStep(), eventHandle);\r\n };\r\n\r\n /**\r\n * Go to a step\r\n */\r\n the.goTo = function(number, eventHandle) {\r\n return Plugin.goTo(number, eventHandle);\r\n };\r\n\r\n /**\r\n * Cancel step\r\n */\r\n the.stop = function() {\r\n return Plugin.stop();\r\n };\r\n\r\n /**\r\n * Resume step\r\n */\r\n the.start = function() {\r\n return Plugin.start();\r\n };\r\n\r\n /**\r\n * Get current step number\r\n */\r\n the.getStep = function() {\r\n return the.currentStep;\r\n };\r\n\r\n /**\r\n * Check last step\r\n */\r\n the.isLastStep = function() {\r\n return Plugin.isLastStep();\r\n };\r\n\r\n /**\r\n * Check first step\r\n */\r\n the.isFirstStep = function() {\r\n return Plugin.isFirstStep();\r\n };\r\n\r\n /**\r\n * Attach event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n module.exports = KTWizard;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutAside = function() {\r\n // Private properties\r\n var _body;\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n\t// Initialize\r\n\tvar _init = function() {\r\n\t\tvar offcanvasClass = KTUtil.hasClass(_element, 'aside-offcanvas-default') ? 'aside-offcanvas-default' : 'aside';\r\n\r\n // Initialize mobile aside offcanvas\r\n\t\t_offcanvasObject = new KTOffcanvas(_element, {\r\n\t\t\tbaseClass: offcanvasClass,\r\n\t\t\toverlay: true,\r\n\t\t\tcloseBy: 'kt_aside_close_btn',\r\n\t\t\ttoggleBy: {\r\n\t\t\t\ttarget: 'kt_aside_mobile_toggle',\r\n\t\t\t\tstate: 'mobile-toggle-active'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n _body = KTUtil.getBody();\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getOffcanvas: function() {\r\n return _offcanvasObject;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutAside;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutAsideMenu = function() {\r\n // Private properties\r\n var _element;\r\n var _menuObject;\r\n\r\n\t// Initialize\r\n\tvar _init = function() {\r\n\t\tvar menuDesktopMode = (KTUtil.attr(_element, 'data-menu-dropdown') === '1' ? 'dropdown' : 'accordion');\r\n var scroll;\r\n\r\n\t\tif (KTUtil.isBreakpointDown('lg') && KTUtil.attr(_element, 'data-menu-scroll') === '1') {\r\n\t\t\tscroll = {\r\n\t\t\t\trememberPosition: true, // remember position on page reload\r\n\t\t\t\theight: function() { // calculate available scrollable area height\r\n\t\t\t\t\tvar height = parseInt(KTUtil.getViewPort().height);\r\n\r\n\t\t\t\t\theight = height - (parseInt(KTUtil.css(_element, 'marginBottom')) + parseInt(KTUtil.css(_element, 'marginTop')));\r\n\r\n\t\t\t\t\treturn height;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t_menuObject = new KTMenu(_element, {\r\n\t\t\t// Vertical scroll\r\n\t\t\tscroll: scroll,\r\n\r\n\t\t\t// Submenu setup\r\n\t\t\tsubmenu: {\r\n\t\t\t\tdesktop: menuDesktopMode,\r\n\t\t\t\ttablet: 'accordion', // menu set to accordion in tablet mode\r\n\t\t\t\tmobile: 'accordion' // menu set to accordion in mobile mode\r\n\t\t\t},\r\n\r\n\t\t\t// Accordion setup\r\n\t\t\taccordion: {\r\n\t\t\t\texpandAll: false // allow having multiple expanded accordions in the menu\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize menu\r\n _init();\r\n\t\t},\r\n\r\n\t\tgetElement: function() {\r\n\t\t\treturn _element;\r\n\t\t},\r\n\r\n getMenu: function() {\r\n\t\t\treturn _menuObject;\r\n\t\t},\r\n\r\n pauseDropdownHover: function(time) {\r\n\t\t\tif (_menuObject) {\r\n\t\t\t\t_menuObject.pauseDropdownHover(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcloseMobileOffcanvas: function() {\r\n\t\t\tif (_menuObject && KTUtil.isMobileDevice()) {\r\n\t\t\t\t_menuObject.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutAsideMenu;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutContent = function() {\r\n // Private properties\r\n var _element;\r\n\r\n\t// Private functions\r\n\tvar _getHeight = function() {\r\n\t\tvar height;\r\n\r\n\t\theight = KTUtil.getViewPort().height;\r\n\r\n if (_element) {\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop')) - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n } \r\n\r\n height = height - KTLayoutHeader.getHeight();\r\n height = height - KTLayoutSubheader.getHeight();\r\n height = height - KTLayoutFooter.getHeight();\r\n\r\n\t\treturn height;\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\t\t},\r\n\r\n\t\tgetHeight: function() {\r\n\t\t\treturn _getHeight();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutContent;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutFooter = function() {\r\n // Private properties\r\n var _element;\r\n\r\n\t// Private functions\r\n\tvar _getHeight = function() {\r\n\t\tvar height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element);\r\n }\r\n\r\n\t\treturn height;\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\t\t},\r\n\r\n\t\tgetHeight: function() {\r\n\t\t\treturn _getHeight();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutFooter;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutHeader = function() {\r\n // Private properties\r\n var _element;\r\n var _elementForMobile;\r\n var _object;\r\n\r\n\t// Private functions\r\n\tvar _init = function() {\r\n var options = {\r\n offset: {\r\n desktop: 300,\r\n tabletAndMobile: 300\r\n },\r\n releseOnReverse: {\r\n desktop: false,\r\n tabletAndMobile: false\r\n }\r\n\t\t};\r\n\r\n\t\t_object = new KTHeader(_element, options);\r\n\t}\r\n\r\n // Get height\r\n var _getHeight = function() {\r\n var height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element) + 1;\r\n }\r\n\r\n return height;\r\n }\r\n\r\n // Get height\r\n var _getHeightForMobile = function() {\r\n var height;\r\n\r\n height = KTUtil.actualHeight(_elementForMobile);\r\n\r\n return height;\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id, idForMobile) {\r\n _element = KTUtil.getById(id);\r\n _elementForMobile = KTUtil.getById(idForMobile);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n isFixed: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'header-fixed')\r\n },\r\n\r\n isFixedForMobile: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'header-mobile-fixed')\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getElementForMobile: function() {\r\n return _elementForMobile;\r\n },\r\n\r\n getHeader: function() {\r\n return _object;\r\n },\r\n\r\n getHeight: function() {\r\n return _getHeight();\r\n },\r\n\r\n getHeightForMobile: function() {\r\n return _getHeightForMobile();\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutHeader;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutHeaderMenu = function() {\r\n // Private properties\r\n\tvar _menuElement;\r\n var _menuObject;\r\n var _offcanvasElement;\r\n var _offcanvasObject;\r\n\tvar _mobileTabPanes;\r\n\r\n // Private functions\r\n\tvar _init = function() {\r\n\t\t_offcanvasObject = new KTOffcanvas(_offcanvasElement, {\r\n\t\t\toverlay: true,\r\n\t\t\tbaseClass: 'header-navs',\r\n\t\t\tcloseBy: 'kt_header_mobile_close',\r\n\t\t\ttoggleBy: {\r\n\t\t\t\ttarget: 'kt_header_mobile_toggle',\r\n\t\t\t\tstate: 'burge-icon-active'\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t_menuObject = new KTMenu(_menuElement, {\r\n\t\t\tsubmenu: {\r\n\t\t\t\tdesktop: 'dropdown',\r\n\t\t\t\ttablet: 'accordion',\r\n\t\t\t\tmobile: 'accordion'\r\n\t\t\t},\r\n\t\t\taccordion: {\r\n\t\t\t\tslideSpeed: 200, // accordion toggle slide speed in milliseconds\r\n\t\t\t\texpandAll: false // allow having multiple expanded accordions in the menu\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tvar _initTabPanesForMobile = function() {\r\n\t\tif ( _mobileTabPanes ) {\r\n\t\t\tfor (var i = 0, len = _mobileTabPanes.length; i < len; i++) {\r\n\t\t\t\tvar mobileTabPane = _mobileTabPanes[i];\r\n\t\t\t\tvar tabs = KTUtil.find(_offcanvasElement, '.header-tabs');\r\n\r\n\t\t\t\tKTUtil.scrollInit(mobileTabPane, {\r\n\t\t disableForMobile: true,\r\n\t\t resetHeightOnDestroy: true,\r\n\t\t handleWindowResize: true,\r\n\t\t height: function() {\r\n\t\t\t\t\t\t// Destroy for tablet and mobile modes\r\n\t\t\t\t\t\tif (KTUtil.isBreakpointUp('lg')) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n\t\t if (tabs) {\r\n\t\t height = height - parseInt(KTUtil.actualHeight(tabs));\r\n\t\t height = height - parseInt(KTUtil.css(tabs, 'marginTop'));\r\n\t\t height = height - parseInt(KTUtil.css(tabs, 'marginBottom'));\r\n\t\t }\r\n\r\n\t\t if (mobileTabPane) {\r\n\t\t height = height - parseInt(KTUtil.css(mobileTabPane, 'marginTop'));\r\n\t\t height = height - parseInt(KTUtil.css(mobileTabPane, 'marginBottom'));\r\n\t\t }\r\n\r\n\t\t height = height - parseInt(KTUtil.css(_offcanvasElement, 'paddingTop'));\r\n\t\t height = height - parseInt(KTUtil.css(_offcanvasElement, 'paddingBottom'));\r\n\r\n\t\t height = height - 2;\r\n\r\n\t\t return height;\r\n\t\t }\r\n\t\t });\r\n\r\n\t\t\t\t$(_offcanvasElement).find('a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\r\n\t\t\t\t\t// Tablet & Mobile Modes Only\r\n\t\t\t\t\tif (KTUtil.isBreakpointUp('lg')) {\r\n\t\t\t\t\t\tKTUtil.scrollUpdate(mobileTabPane);\r\n\t\t\t\t\t}\r\n\t\t });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n init: function(menuId, offcanvasId) {\r\n _menuElement = KTUtil.getById(menuId);\r\n _offcanvasElement = KTUtil.getById(offcanvasId);\r\n\t\t\t_mobileTabPanes = KTUtil.findAll(_offcanvasElement, '.tab-pane');\r\n\r\n if (!_menuElement) {\r\n return;\r\n }\r\n\r\n // Initialize menu\r\n _init();\r\n\t\t\t_initTabPanesForMobile();\r\n\t\t},\r\n\r\n\t\tgetMenuElement: function() {\r\n\t\t\treturn _menuElement;\r\n\t\t},\r\n\r\n getOffcanvasElement: function() {\r\n\t\t\treturn _offcanvasElement;\r\n\t\t},\r\n\r\n getMenu: function() {\r\n\t\t\treturn _menuObject;\r\n\t\t},\r\n\r\n\t\tpauseDropdownHover: function(time) {\r\n\t\t\tif (_menuObject) {\r\n\t\t\t\t_menuObject.pauseDropdownHover(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n getOffcanvas: function() {\r\n\t\t\treturn _offcanvasObject;\r\n\t\t},\r\n\r\n\t\tcloseMobileOffcanvas: function() {\r\n\t\t\tif (_menuObject && KTUtil.isMobileDevice()) {\r\n\t\t\t\t_offcanvasObject.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutHeaderMenu;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutHeaderTopbar = function() {\r\n // Private properties\r\n\tvar _toggleElement;\r\n var _toggleObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n\t\t_toggleObject = new KTToggle(_toggleElement, {\r\n\t\t\ttarget: KTUtil.getBody(),\r\n\t\t\ttargetState: 'topbar-mobile-on',\r\n\t\t\ttoggleState: 'active'\r\n\t\t});\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _toggleElement = KTUtil.getById(id);\r\n\r\n\t\t\tif (!_toggleElement) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n getToggleElement: function() {\r\n return _toggleElement;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutHeaderTopbar;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutStickyCard = function() {\r\n // Private properties\r\n\tvar _element;\r\n var _object;\r\n\r\n\t// Private functions\r\n\tvar _init = function() {\r\n\t\tvar offset = 300;\r\n\r\n\t\tif (typeof KTLayoutHeader !== 'undefined') {\r\n\t\t\toffset = KTLayoutHeader.getHeight();\r\n\t\t}\r\n\r\n _object = new KTCard(_element, {\r\n\t\t\tsticky: {\r\n\t\t\t\toffset: offset,\r\n\t\t\t\tzIndex: 90,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\ttop: function() {\r\n\t\t\t\t\t\tvar pos = 0;\r\n var body = KTUtil.getBody();\r\n\r\n\t\t\t\t\t\tif (KTUtil.isBreakpointUp('lg')) {\r\n\t\t\t\t\t\t\tif (typeof KTLayoutHeader !== 'undefined' && KTLayoutHeader.isFixed()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutHeader.getHeight();\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (typeof KTLayoutSubheader !== 'undefined' && KTLayoutSubheader.isFixed()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutSubheader.getHeight();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (typeof KTLayoutHeader !== 'undefined' && KTLayoutHeader.isFixedForMobile()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutHeader.getHeightForMobile();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpos = pos - 1; // remove header border width\r\n\r\n\t\t\t\t\t\treturn pos;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tleft: function(card) {\r\n\t\t\t\t\t\treturn KTUtil.offset(_element).left;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tright: function(card) {\r\n\t\t\t\t\t\tvar body = KTUtil.getBody();\r\n\r\n\t\t\t\t\t\tvar cardWidth = parseInt(KTUtil.css(_element, 'width'));\r\n\t\t\t\t\t\tvar bodyWidth = parseInt(KTUtil.css(body, 'width'));\r\n\t\t\t\t\t\tvar cardOffsetLeft = KTUtil.offset(_element).left;\r\n\r\n\t\t\t\t\t\treturn bodyWidth - cardWidth - cardOffsetLeft;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t_object.initSticky();\r\n\r\n\t\tKTUtil.addResizeHandler(function() {\r\n\t\t\t_object.updateSticky();\r\n\t\t});\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n\t\t\t_init();\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\tif (_object) {\r\n\t\t\t\t_object.updateSticky();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutStickyCard;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutStretchedCard = function() {\r\n // Private properties\r\n\tvar _element;\r\n\r\n\t// Private functions\r\n\tvar _init = function() {\r\n\t\tvar scroll = KTUtil.find(_element, '.card-scroll');\r\n\t\tvar cardBody = KTUtil.find(_element, '.card-body');\r\n\t\tvar cardHeader = KTUtil.find(_element, '.card-header');\r\n\r\n\t\tvar height = KTLayoutContent.getHeight();\r\n\r\n\t\theight = height - parseInt(KTUtil.actualHeight(cardHeader));\r\n\r\n\t\theight = height - parseInt(KTUtil.css(_element, 'marginTop')) - parseInt(KTUtil.css(_element, 'marginBottom'));\r\n\t\theight = height - parseInt(KTUtil.css(_element, 'paddingTop')) - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n\t\theight = height - parseInt(KTUtil.css(cardBody, 'paddingTop')) - parseInt(KTUtil.css(cardBody, 'paddingBottom'));\r\n\t\theight = height - parseInt(KTUtil.css(cardBody, 'marginTop')) - parseInt(KTUtil.css(cardBody, 'marginBottom'));\r\n\r\n\t\theight = height - 3;\r\n\r\n\t\tKTUtil.css(scroll, 'height', height + 'px');\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n\t\t\t_init();\r\n\r\n // Re-calculate on window resize\r\n KTUtil.addResizeHandler(function() {\r\n\t\t\t\t_init();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\t_init();\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutStretchedCard;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutSubheader = function() {\r\n // Private properties\r\n var _element;\r\n\r\n // Private functions\r\n var _getHeight = function() {\r\n var height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element);\r\n }\r\n\r\n return height;\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\t\t},\r\n\r\n isFixed: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'subheader-fixed');\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getHeight: function() {\r\n return _getHeight();\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutSubheader;\r\n}\r\n","\"use strict\";\r\n\r\nvar KTLayoutScrolltop = function() {\r\n // Private properties\r\n var _element;\r\n var _object;\r\n\r\n // Private functions\r\n var _init = function() {\r\n _object = new KTScrolltop(_element, {\r\n offset: 300,\r\n speed: 600,\r\n });\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\tmodule.exports = KTLayoutScrolltop;\r\n}\r\n","\"use strict\";\r\n\r\n// Initialization\r\nKTUtil.ready(function() {\r\n ////////////////////////////////////////////////////\r\n // Layout Base Partials(mandatory for core layout)//\r\n ////////////////////////////////////////////////////\r\n\r\n // Init Desktop & Mobile Headers\r\n KTLayoutHeader.init('kt_header', 'kt_header_mobile');\r\n\r\n // Init Header Menu\r\n KTLayoutHeaderMenu.init('kt_header_menu', 'kt_header_navs');\r\n\r\n // Init Header Topbar For Mobile Mode\r\n KTLayoutHeaderTopbar.init('kt_header_mobile_topbar_toggle');\r\n\r\n // Init Aside\r\n KTLayoutAside.init('kt_aside');\r\n\r\n // Init Aside Menu\r\n KTLayoutAsideMenu.init('kt_aside_menu');\r\n\r\n // Init Subheader\r\n KTLayoutSubheader.init('kt_subheader');\r\n\r\n // Init Content\r\n KTLayoutContent.init('kt_content');\r\n\r\n // Init Footer\r\n KTLayoutFooter.init('kt_footer');\r\n\r\n //////////////////////////////////////////////\r\n // Layout Extended Partials(optional to use)//\r\n //////////////////////////////////////////////\r\n\r\n\r\n // Init Scrolltop\r\n KTLayoutScrolltop.init('kt_scrolltop');\r\n\r\n // Init Sticky Card\r\n KTLayoutStickyCard.init('kt_page_sticky_card');\r\n\r\n // Init Stretched Card\r\n KTLayoutStretchedCard.init('kt_page_stretched_card');\r\n});\r\n"],"sourceRoot":""}