{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/store/modules/AuthModule.ts","webpack:///./src/store/modules/BodyModule.ts","webpack:///./src/store/modules/BreadcrumbsModule.ts","webpack:///./src/core/config/DefaultLayoutConfig.ts","webpack:///./src/store/modules/ConfigModule.ts","webpack:///./src/store/modules/OtpModule.ts","webpack:///./src/store/modules/RepresentModule.ts","webpack:///./src/store/modules/PartnerModule.ts","webpack:///./src/store/index.ts","webpack:///./src/App.vue?ebd3","webpack:///./src/core/services/ApiService.ts","webpack:///./src/router/clean.ts","webpack:///./src/store/enums/StoreEnums.ts","webpack:///./src/assets/ts/components/MenuComponent.ts","webpack:///./src/assets/ts/components/_DrawerComponent.ts","webpack:///./src/assets/ts/components/_ImageInputComponent.ts","webpack:///./src/assets/ts/components/_StepperComponent.ts","webpack:///./src/assets/ts/components/_StickyComponent.ts","webpack:///./src/assets/ts/components/_PasswordMeterComponent.ts","webpack:///./src/assets/ts/components/_SwapperComponent.ts","webpack:///./src/assets/ts/components/SearchComponent.ts","webpack:///./src/assets/ts/components/_CookieComponent.ts","webpack:///./src/core/services/JwtService.ts","webpack:///./src/helpers/role.js","webpack:///./src/assets/ts/_utils/_ElementStyleUtil.ts","webpack:///./src/assets/ts/_utils/_DataUtil.ts","webpack:///./src/assets/ts/_utils/_TypesHelpers.ts","webpack:///./src/assets/ts/_utils/_DOMEventHandlerUtil.ts","webpack:///./src/assets/ts/_utils/ElementAnimateUtil.ts","webpack:///./src/assets/ts/_utils/DomHelpers.ts","webpack:///./src/assets/ts/_utils/EventHandlerUtil.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?3acc","webpack:///./src/App.vue?64a4","webpack:///./src/core/plugins/i18n.ts","webpack:///./src/core/plugins/apexcharts.ts","webpack:///./src/core/plugins/inline-svg.ts","webpack:///./src/core/plugins/vee-validate.ts","webpack:///./src/core/plugins/keenthemes.ts","webpack:///./src/main.ts","webpack:///./src/assets/ts/components/_ToggleComponent.ts","webpack:///./src/assets/ts/components/_ScrollComponent.ts","webpack:///./src/assets/ts/components/_ScrollTopComponent.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","errors","user","JwtService","getCurrentUser","isAuthenticated","this","representId","context","rootState","RepresentModule","id","role","owner","SET_ERROR","SET_AUTH","saveToken","token","saveCurrentUser","SET_USER","SET_PASSWORD","password","PURGE_AUTH","destroyToken","destroyCurrentUser","LOGIN","credentials","ApiService","post","commit","catch","response","LOGOUT","REGISTER","FORGOT_PASSWORD","payload","log","VERIFY_AUTH","setHeader","UPDATE_USER","classes","position","SET_CLASSNAME_BY_POSITION","className","ADD_BODY_CLASSNAME","body","classList","add","REMOVE_BODY_CLASSNAME","remove","ADD_BODY_ATTRIBUTE","qulifiedName","REMOVE_BODY_ATTRIBUTE","removeAttribute","ADD_CLASSNAME","breadcrumbs","pageBreadcrumbPath","title","SET_BREADCRUMB_MUTATION","SET_BREADCRUMB_ACTION","config","themeName","themeVersion","demo","main","primaryColor","logo","dark","light","loader","display","scrollTop","header","menuIcon","width","fixed","desktop","tabletAndMobile","toolbar","aside","theme","minimized","minimize","hoverable","content","footer","initial","windowHeight","innerHeight","path","defaultValue","SET_LAYOUT_CONFIG","RESET_LAYOUT_CONFIG","assign","OVERRIDE_LAYOUT_CONFIG","JSON","parse","localStorage","getItem","OVERRIDE_PAGE_LAYOUT_CONFIG","SET_WINDOW_HEIGHT","otp","SET_OTP","SET_OTP_TOKEN","REQUEST_OTP","VERIFY_OTP","partner","GET_PARTNER_BY_ID","partnerCode","SET_REPRESENT_ID","setPresentAsHeader","SET_REPRESENT_PARTNER","CLEAR_REPRESENT","partnerList","isFatching","FETCH_PARTNER_LIST","query","SET_PARTNER_LIST","rawError","store","AuthModule","BodyModule","BreadcrumbsModule","ConfigModule","OtpModule","PartnerModule","app","vueInstance","use","a","axios","defaults","baseURL","interceptors","status","dispatch","headers","common","resource","params","slug","put","delete","createChildren","prefix","component","meta","authorize","admin","props","notCatch","adminRoutes","redirect","children","routes","gcurrentUser","getters","currentUser","router","history","beforeEach","to","from","next","returnUrl","updatedDate","includes","scrollTo","Actions","Mutations","defaultMenuOptions","dropdown","hoverTimeout","zindex","accordion","slideSpeed","expand","MenuComponent","_element","options","triggerElement","_setTriggerElement","querySelector","element","closest","child","set","_isTriggerElement","item","_getItemOption","hasAttribute","attr","String","_getItemElement","itemElement","sub","subItem","_getItemParentElement","parentItem","_getItemParentElements","parents","parent","buffer","unshift","_getDropdownPopperConfig","placementOption","placement","offsetValue","offset","toString","split","strategy","modifiers","flipVariations","_getItemChildElement","selector","_getItemChildElements","_getItemSubElement","contains","has","_getCss","el","styleProp","defaultView","ownerDocument","replace","toLowerCase","getComputedStyle","getPropertyValue","_getItemSubType","parseInt","_isItemSubShown","_isItemDropdownPermanent","_isItemParentShown","_isItemSubElement","_hasItemSub","_getItemLinkElement","_getItemToggleElement","_showDropdown","trigger","hideDropdowns","height","parentZindex","initDropdownPopper","reference","attach","popper","_hideDropdown","destroy","destroyDropdownPopper","_showAccordion","_hideAccordions","subElement","_hideAccordion","itemsToHide","querySelectorAll","len","itemToHide","_reset","removeClass","_destroy","_update","items","forEach","_hide","_show","_toggle","_mouseout","_mouseover","_dismiss","itemSubType","_link","_click","preventDefault","click","link","dismiss","mouseover","mouseout","getItemTriggerType","getItemSubType","show","hide","reset","update","getElement","getItemLinkElement","getItemToggleElement","getItemSubElement","getItemParentElements","isItemSubShown","isItemParentShown","getTriggerElement","isItemDropdownPermanent","hideAccordions","on","handler","one","off","instanceUid","getInstance","elementMenu","menu","menuData","subMenu","skip","updateDropdowns","forceUpdate","createInstances","menuItem","menuInstance","initGlobalHandlers","addEventListener","menuItems","menuObj","stopPropagation","timer","elements","bootstrap","reinitialization","createInsance","DrawerStore","instanceId","drawerComponentObj","Map","defaultDrawerOptions","overlay","baseClass","overlayClass","direction","overlayElement","toggleElement","shown","lastWidth","closeElement","_handlers","togglers","_getOption","closers","getElementById","hasBaseClass","bodyCanvasAttr","optionName","option","_deleteOverlay","_createOverlay","elementZIndex","overlayZindex","append","overlayClassOption","_getDirection","_getWidth","toggle","isShown","goElement","drawer","instance","hasInstace","elementId","hideAll","oldInstances","getAllInstances","dr","updateAll","handleDismiss","defaultImageInputOptions","defaultImageInputQueires","componentName","instanseQuery","inputQuery","wrapperQuery","cancelQuery","removeQuery","hiddenQuery","_options","_queries","_change","inputElement","files","reader","FileReader","wrapperElement","style","setProperty","readAsDataURL","_cancel","hiddenElement","_remove","queries","uid","cancelElement","removeElement","handlers","ImageInput","defaultStepperOptions","startIndex","animation","animationSpeed","animationNextClass","animationPreviousClass","totatStepsNumber","passedStepIndex","currentStepIndex","_goTo","index","refreshUI","initHandlers","btnNext","btnPrev","steps","stepDirection","_getStepDirection","getStepContent","getLastStepIndex","getTotalStepsNumber","state","isLastStep","isFirstStep","animateClass","isBetweenStep","goto","goNext","getNextStepIndex","goPrev","getPrevStepIndex","goFirst","goLast","getCurrentStepIndex","getPassedStepIndex","btnSubmit","stepper","defaultStickyOptions","reverse","animationClass","instanceName","scroll","getOption","offsetNum","st","lastScrollTop","attributeName","enable","eventTriggerState","disable","dataStickyAttr","attrValueInStr","attrValue","top","left","widthTarget","targetElement","offsetLeft","callBack","callback","sticky","defaultPasswordMeterOptions","minLength","checkUppercase","checkLowercase","checkDigit","checkChar","scoreHighlightClass","defaultPasswordMeterQueires","visibilityQuery","highlightQuery","score","highlight","checkSteps","visibilityElement","highlightElement","check","visitbility","visibleIcon","hiddenIcon","typeAttr","focus","val","test","count","total","checkScore","getCheckScore","getScore","map","checkLength","checkLowerCase","passwordMeter","SwapperStore","defaultSwapperOptions","defaultSwapperQueires","attrQuery","parentSelector","parentElement","prepend","place","defaultSearchOptions","keypress","enter","layout","showOnFocus","defaultSearchQueires","processing","_getElement","getResponsiveFormMode","responsive","breakpoint","breakPointNum","blur","charCode","keyCode","search","input","clear","responsiveFormMode","contentElement","formElement","menuObject","spinnerElement","clearElement","toolbarElement","complete","isProcessing","getQuery","getMenu","getFormElement","submitElement","resultsElement","suggestionElement","emptyElement","Search","CookieComponent","matches","cookie","match","RegExp","decodeURIComponent","cookieOptions","expires","Date","toUTCString","updatedCookie","encodeURIComponent","optionKey","optionValue","ID_TOKEN_KEY","CURRENT_USER","getToken","setItem","removeItem","stringify","manager","validateRole","roles","currentRole","Array","isArray","ElementStyleUtil","important","attibuteName","removeProperty","DataUtil","instanceData","newMap","v","k","getObjectPropertyValueByKey","obj","entries","getUniqueIdWithPrefix","Math","floor","random","getTime","stringSnakeToCamel","str","toUpperCase","toJSON","join","jsonStr","matched","substring","eventName","eventId","targets","funcFromStore","removeEventListener","calee","currentTarget","duration","easings","linear","b","change","loop","timestamp","time","start","requestAnimationFrame","performance","now","animationName","animateClasses","cssClass","targetPos","getElementOffset","scrollPos","pageYOffset","documentElement","animate","getCSS","getCSSVariableValue","variableName","hex","trim","getElementActualCss","prop","cache","css","cssText","offsetWidth","offsetHeight","parseFloat","attributeValue","getElementActualHeight","getElementIndex","getElementMatches","Element","f","webkitMatchesSelector","tagName","getClientRects","rect","getBoundingClientRect","win","pageXOffset","getElementParents","getHighestZindex","bufferNode","isNaN","getScrollTop","scrollingElement","getViewPort","innerWidth","insertAfterElement","referenceNode","insertBefore","nextSibling","isVisibleElement","throttle","func","delay","getElementChildren","childNodes","nodeType","getElementChild","slide","dir","speed","calcHeight","calcPaddingTop","calcPaddingBottom","paddingTop","paddingBottom","overflow","slideUp","slideDown","getBreakpoint","getAttributeValueByBreakpoint","incomingAttr","resultKey","resultBreakpoint","metas","handlerId","getEventMetasByName","setEventMetasByName","handerId","fired","getEventsMetaByHandlerId","setEventMetaByNameAndHandlerId","setFiredByNameAndHandlerId","addEvent","removeEvent","render","messages","en","dashboard","layoutBuilder","craft","pages","profile","profileOverview","projects","campaigns","documents","connections","wizards","horizontal","vertical","account","accountOverview","settings","authentication","basicFlow","signIn","signUp","passwordReset","error404","error500","apps","chat","privateChat","groupChat","drawerChat","widgets","widgetsLists","widgetsStatistics","widgetsCharts","widgetsMixed","widgetsTables","widgetsFeeds","changelog","docsAndComponents","exampleLink","modals","general","inviteFriends","viewUsers","upgradePlan","shareAndEarn","forms","newTarget","newCard","newAddress","createAPIKey","twoFactorAuth","createApp","createAccount","documentation","components","resources","es","megaMenu","activity","de","ja","fr","i18n","legacy","locale","globalInjection","initApexCharts","initInlineSvg","initVeeValidate","validateOnBlur","validateOnChange","validateOnInput","validateOnModelUpdate","App","defaultZone","color","globalProperties","$selectedPartnerCode","init","mount","defaultToggleOptions","saveState","ToggleComponent","attribute","_isEnabled","_disable","_enable","isEnabled","elementTargetAttr","elementToggleAttr","defaultScrollOptions","ScrollComponent","getHeightType","getAutoHeight","dependencies","wrappers","borderTop","borderBottom","setupHeight","getHeight","heightType","setupState","pos","setupScrollHandler","scrollHandler","cookieId","destroyScrollHandler","resetHeight","heghtType","Function","resize","createInstance","defaultScrollTopOptions","ScrollTopComponent","_scroll","_go","go","goTop"],"mappings":"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","file":"js/app.d8355180.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d0aa661\":\"4693ba7c\",\"chunk-2d0c5394\":\"c3cdfe8d\",\"chunk-121be981\":\"9d1adc5c\",\"chunk-3795168a\":\"3661e896\",\"chunk-49e52964\":\"625713ae\",\"chunk-53b34a8f\":\"f817a693\",\"chunk-6eab858c\":\"4e4a105b\",\"chunk-88b69c56\":\"dacb1b16\",\"chunk-2d21ee80\":\"6fcf5eb4\",\"chunk-2d221c32\":\"fa9e4e67\",\"chunk-514b56a6\":\"fb0b2473\",\"chunk-024b64cc\":\"adaebd32\",\"chunk-024ca3ac\":\"5e1a044e\",\"chunk-09d2931f\":\"a37504e5\",\"chunk-2d0ac5df\":\"e700eba6\",\"chunk-2d0be333\":\"4f9e18fb\",\"chunk-81df243e\":\"75ea386b\",\"chunk-e70c39a4\":\"b9e88dc6\",\"chunk-e7374802\":\"dac2cbe8\",\"chunk-10b11ec0\":\"6655a144\",\"chunk-5fa460a4\":\"c3aefee0\",\"chunk-4dc1dc6c\":\"11957cfa\",\"chunk-ac18aee8\":\"e0617c55\",\"chunk-2d0ced53\":\"467d8f36\",\"chunk-74a91baa\":\"13ea28a7\",\"chunk-b006ff8c\":\"6a6972b5\",\"chunk-f952761a\":\"f348963d\",\"chunk-2005d5d2\":\"e8d91b45\",\"chunk-003e7219\":\"d38563b5\",\"chunk-2a39424c\":\"2c702943\",\"chunk-08673093\":\"62f5f2ab\",\"chunk-1035bb4a\":\"e1ded08a\",\"chunk-25934d9f\":\"d8ca4cf9\",\"chunk-968a0626\":\"54603603\",\"chunk-a3e0e374\":\"02d8bbd0\",\"chunk-ab6b6a58\":\"af0d11e7\",\"chunk-b0c65aa2\":\"92df5880\",\"chunk-3dc43fb2\":\"3e975f34\",\"chunk-3fac1b5f\":\"30411226\",\"chunk-47afaa63\":\"88620244\",\"chunk-5de53170\":\"f154ed42\",\"chunk-68c77156\":\"9720563e\",\"chunk-7344769e\":\"75a77fe9\",\"chunk-2d0d6780\":\"b53ea6e1\",\"chunk-b460e08a\":\"c425783f\",\"chunk-2d0cc224\":\"24509215\",\"chunk-2d216824\":\"03d95e4d\",\"chunk-2d21d673\":\"1a82e20a\",\"chunk-4c9800d0\":\"07d6ab7a\",\"chunk-4d6e56ea\":\"28837173\",\"chunk-4fe742b0\":\"b7c2edf8\",\"chunk-2d0ae5d6\":\"8ad91d17\",\"chunk-2d0d63f1\":\"58f6e995\",\"chunk-5113a890\":\"d5ea39fe\",\"chunk-57ace0aa\":\"1615749f\",\"chunk-2d0af0a6\":\"9ab77e62\",\"chunk-86d070ee\":\"7927afcc\",\"chunk-9ae2a18a\":\"71cf78ea\",\"chunk-beb33aea\":\"9cbb4895\",\"chunk-d5c2332a\":\"b5e38f83\",\"chunk-8e20fb90\":\"c1f69cac\",\"chunk-9c02fe44\":\"bf03b54f\",\"chunk-c75a8aa8\":\"6886147c\",\"chunk-2d0aef68\":\"5e618969\",\"chunk-2d212f18\":\"f69d7268\",\"chunk-38b5e0ba\":\"508ccfdf\"}[chunkId] + \".js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-121be981\":1,\"chunk-3795168a\":1,\"chunk-49e52964\":1,\"chunk-53b34a8f\":1,\"chunk-6eab858c\":1,\"chunk-88b69c56\":1,\"chunk-09d2931f\":1,\"chunk-10b11ec0\":1,\"chunk-5fa460a4\":1,\"chunk-4dc1dc6c\":1,\"chunk-ac18aee8\":1,\"chunk-74a91baa\":1,\"chunk-b006ff8c\":1,\"chunk-f952761a\":1,\"chunk-2005d5d2\":1,\"chunk-2a39424c\":1,\"chunk-08673093\":1,\"chunk-1035bb4a\":1,\"chunk-25934d9f\":1,\"chunk-968a0626\":1,\"chunk-a3e0e374\":1,\"chunk-ab6b6a58\":1,\"chunk-b0c65aa2\":1,\"chunk-3dc43fb2\":1,\"chunk-3fac1b5f\":1,\"chunk-47afaa63\":1,\"chunk-5de53170\":1,\"chunk-68c77156\":1,\"chunk-b460e08a\":1,\"chunk-4c9800d0\":1,\"chunk-4d6e56ea\":1,\"chunk-4fe742b0\":1,\"chunk-5113a890\":1,\"chunk-57ace0aa\":1,\"chunk-86d070ee\":1,\"chunk-9ae2a18a\":1,\"chunk-beb33aea\":1,\"chunk-d5c2332a\":1,\"chunk-9c02fe44\":1,\"chunk-38b5e0ba\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2d0aa661\":\"31d6cfe0\",\"chunk-2d0c5394\":\"31d6cfe0\",\"chunk-121be981\":\"e79334a0\",\"chunk-3795168a\":\"003a4390\",\"chunk-49e52964\":\"cbd620d1\",\"chunk-53b34a8f\":\"ab742174\",\"chunk-6eab858c\":\"e79334a0\",\"chunk-88b69c56\":\"7a5a5b31\",\"chunk-2d21ee80\":\"31d6cfe0\",\"chunk-2d221c32\":\"31d6cfe0\",\"chunk-514b56a6\":\"31d6cfe0\",\"chunk-024b64cc\":\"31d6cfe0\",\"chunk-024ca3ac\":\"31d6cfe0\",\"chunk-09d2931f\":\"e377b1ad\",\"chunk-2d0ac5df\":\"31d6cfe0\",\"chunk-2d0be333\":\"31d6cfe0\",\"chunk-81df243e\":\"31d6cfe0\",\"chunk-e70c39a4\":\"31d6cfe0\",\"chunk-e7374802\":\"31d6cfe0\",\"chunk-10b11ec0\":\"ae352b59\",\"chunk-5fa460a4\":\"f606d87d\",\"chunk-4dc1dc6c\":\"94b23544\",\"chunk-ac18aee8\":\"b9a99f92\",\"chunk-2d0ced53\":\"31d6cfe0\",\"chunk-74a91baa\":\"bce627a3\",\"chunk-b006ff8c\":\"40453b00\",\"chunk-f952761a\":\"c7340907\",\"chunk-2005d5d2\":\"bece3569\",\"chunk-003e7219\":\"31d6cfe0\",\"chunk-2a39424c\":\"34e59e76\",\"chunk-08673093\":\"e2554907\",\"chunk-1035bb4a\":\"94cd591b\",\"chunk-25934d9f\":\"ee34d07a\",\"chunk-968a0626\":\"a75e8ad0\",\"chunk-a3e0e374\":\"95080cb5\",\"chunk-ab6b6a58\":\"8845be57\",\"chunk-b0c65aa2\":\"7a49e66b\",\"chunk-3dc43fb2\":\"99a6674a\",\"chunk-3fac1b5f\":\"a9baffec\",\"chunk-47afaa63\":\"d9aec51f\",\"chunk-5de53170\":\"096d7f6d\",\"chunk-68c77156\":\"29fa184e\",\"chunk-7344769e\":\"31d6cfe0\",\"chunk-2d0d6780\":\"31d6cfe0\",\"chunk-b460e08a\":\"2b8080e3\",\"chunk-2d0cc224\":\"31d6cfe0\",\"chunk-2d216824\":\"31d6cfe0\",\"chunk-2d21d673\":\"31d6cfe0\",\"chunk-4c9800d0\":\"35815c20\",\"chunk-4d6e56ea\":\"494d475b\",\"chunk-4fe742b0\":\"15c8ac64\",\"chunk-2d0ae5d6\":\"31d6cfe0\",\"chunk-2d0d63f1\":\"31d6cfe0\",\"chunk-5113a890\":\"35815c20\",\"chunk-57ace0aa\":\"2630c6e5\",\"chunk-2d0af0a6\":\"31d6cfe0\",\"chunk-86d070ee\":\"a75419f2\",\"chunk-9ae2a18a\":\"8f53e9b7\",\"chunk-beb33aea\":\"29fa184e\",\"chunk-d5c2332a\":\"6ad0b843\",\"chunk-8e20fb90\":\"31d6cfe0\",\"chunk-9c02fe44\":\"e940c3ac\",\"chunk-c75a8aa8\":\"31d6cfe0\",\"chunk-2d0aef68\":\"31d6cfe0\",\"chunk-2d212f18\":\"31d6cfe0\",\"chunk-38b5e0ba\":\"0ba1b883\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import ApiService from \"@/core/services/ApiService\";\nimport JwtService from \"@/core/services/JwtService\";\nimport { role } from \"@/helpers/role\";\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\nimport { Module, Action, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nexport interface User {\n name: string;\n surname: string;\n email: string;\n password: string;\n token: string;\n role: string;\n}\n\nexport interface UserAuthInfo {\n errors: Array;\n user: User;\n isAuthenticated: boolean;\n}\n\n@Module\nexport default class AuthModule extends VuexModule implements UserAuthInfo {\n errors = [];\n user = JwtService.getCurrentUser() as User;\n isAuthenticated = !!JwtService.getCurrentUser();\n\n /**\n * Get current user object\n * @returns User\n */\n get currentUser(): User {\n return this.user;\n }\n\n get currentRole(): string {\n const representId = this.context.rootState.RepresentModule.id\n if(representId && representId != '' )\n {\n return role.owner;\n }\n return this.user.role\n }\n \n /**\n * Get current user role\n * @returns User\n */\n get role(): string {\n return this.user && this.user.role;\n }\n\n get isAdmin(): boolean {\n return this.user.role == \"Admin\"\n }\n \n /**\n * Verify user authentication\n * @returns boolean\n */\n get isUserAuthenticated(): boolean {\n return this.isAuthenticated;\n }\n\n /**\n * Get authentification errors\n * @returns array\n */\n get getErrors(): Array {\n return this.errors;\n }\n\n @Mutation\n [Mutations.SET_ERROR](error) {\n this.errors = error;\n }\n\n @Mutation\n [Mutations.SET_AUTH](user) {\n this.isAuthenticated = true;\n this.user = user;\n this.errors = [];\n JwtService.saveToken(this.user.token);\n JwtService.saveCurrentUser(user);\n }\n\n @Mutation\n [Mutations.SET_USER](user) {\n this.user = user;\n }\n\n @Mutation\n [Mutations.SET_PASSWORD](password) {\n this.user.password = password;\n }\n\n @Mutation\n [Mutations.PURGE_AUTH]() {\n this.isAuthenticated = false;\n this.user = {} as User;\n this.errors = [];\n JwtService.destroyToken();\n JwtService.destroyCurrentUser();\n }\n\n @Action\n [Actions.LOGIN](credentials) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"auth\", credentials)\n .then(({ data }) => {\n this.context.commit(Mutations.SET_AUTH, data);\n resolve();\n })\n .catch(({ response }) => {\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\n reject();\n });\n });\n }\n\n @Action\n [Actions.LOGOUT]() {\n this.context.commit(Mutations.PURGE_AUTH);\n }\n\n @Action\n [Actions.REGISTER](credentials) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"registration\", credentials)\n .then(({ data }) => {\n this.context.commit(Mutations.SET_AUTH, data);\n resolve();\n })\n .catch(({ response }) => {\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\n reject();\n });\n });\n }\n\n @Action\n [Actions.FORGOT_PASSWORD](payload) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"forgot_password\", payload)\n .then(({ data }) => {\n this.context.commit(Mutations.SET_AUTH, data);\n resolve();\n })\n .catch(({ response }) => {\n console.log(response.data.errors);\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\n reject();\n });\n });\n }\n\n @Action\n [Actions.VERIFY_AUTH]() {\n return new Promise((resolve, reject) => {\n if (JwtService.getCurrentUser()) {\n ApiService.setHeader();\n ApiService.get(\"auth/verify\")\n .then(({ data }) => {\n this.context.commit(Mutations.SET_AUTH, data);\n })\n .catch(({ response }) => {\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\n });\n } else {\n this.context.commit(Mutations.PURGE_AUTH);\n }\n resolve()\n })\n \n }\n\n @Action\n [Actions.UPDATE_USER](payload) {\n ApiService.setHeader();\n return new Promise((resolve, reject) => {\n ApiService.post(\"update_user\", payload)\n .then(({ data }) => {\n this.context.commit(Mutations.SET_USER, data);\n resolve();\n })\n .catch(({ response }) => {\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\n reject();\n });\n });\n }\n}\n","import { Module, VuexModule, Mutation, Action } from \"vuex-module-decorators\";\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\n\nexport interface StoreInfo {\n classes: {\n header?: Array;\n headerContainer?: Array;\n headerMobile?: Array;\n headerMenu?: Array;\n aside?: Array;\n asideMenu?: Array;\n asideToggle?: Array;\n toolbar?: Array;\n toolbarContainer?: Array;\n content?: Array;\n contentContainer?: Array;\n footerContainer?: Array;\n sidebar?: Array;\n pageTitle?: Array;\n };\n}\n\n@Module\nexport default class BodyModule extends VuexModule implements StoreInfo {\n classes = {};\n\n /**\n * Get current page title\n * @returns string\n */\n get getClasses() {\n return (position) => {\n if (typeof position !== \"undefined\") {\n return this.classes[position];\n }\n return this.classes;\n };\n }\n\n @Mutation\n [Mutations.SET_CLASSNAME_BY_POSITION](payload) {\n const { position, className } = payload;\n if (!this.classes[position]) {\n this.classes[position] = [];\n }\n this.classes[position].push(className);\n }\n\n @Action\n [Actions.ADD_BODY_CLASSNAME](className) {\n document.body.classList.add(className);\n }\n\n @Action\n [Actions.REMOVE_BODY_CLASSNAME](className) {\n document.body.classList.remove(className);\n }\n\n @Action\n [Actions.ADD_BODY_ATTRIBUTE](payload) {\n const { qulifiedName, value } = payload;\n document.body.setAttribute(qulifiedName, value);\n }\n\n @Action\n [Actions.REMOVE_BODY_ATTRIBUTE](payload) {\n const { qulifiedName } = payload;\n document.body.removeAttribute(qulifiedName);\n }\n\n @Action\n [Actions.ADD_CLASSNAME](payload) {\n this.context.commit(Mutations.SET_CLASSNAME_BY_POSITION, payload);\n }\n}\n","import { Action, Mutation, Module, VuexModule } from \"vuex-module-decorators\";\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\n\ninterface Breadcrumb {\n title: string;\n pageBreadcrumbPath: Array;\n}\n\ninterface StoreInfo {\n breadcrumbs: Breadcrumb;\n}\n\n@Module\nexport default class BreadcrumbsModule extends VuexModule implements StoreInfo {\n breadcrumbs = {} as Breadcrumb;\n\n /**\n * Get breadcrumb object for current page\n * @returns object\n */\n get getBreadcrumbs(): Breadcrumb {\n return this.breadcrumbs;\n }\n\n /**\n * Get breadcrumb array for current page\n * @returns object\n */\n get pageBreadcrumbPath(): Array {\n return this.breadcrumbs.pageBreadcrumbPath;\n }\n\n /**\n * Get current page title\n * @returns string\n */\n get pageTitle(): string {\n return this.breadcrumbs.title;\n }\n\n @Mutation\n [Mutations.SET_BREADCRUMB_MUTATION](payload) {\n this.breadcrumbs = payload;\n }\n\n @Action\n [Actions.SET_BREADCRUMB_ACTION](payload) {\n this.context.commit(Mutations.SET_BREADCRUMB_MUTATION, payload);\n }\n}\n","import LayoutConfigTypes from \"@/core/config/LayoutConfigTypes\";\n\nconst config: LayoutConfigTypes = {\n themeName: \"2S partner\",\n themeVersion: \"1.0.0\",\n demo: \"demo1\",\n main: {\n type: \"default\",\n primaryColor: \"#009EF7\",\n logo: {\n dark: \"/media/logos/logo-2s.png\",\n light: \"/media/logos/logo-2s.png\",\n },\n },\n loader: {\n logo: \"/media/logos/logo-2s.png\",\n display: true,\n type: \"default\",\n },\n scrollTop: {\n display: true,\n },\n header: {\n display: true,\n menuIcon: \"font\",\n width: \"fluid\",\n fixed: {\n desktop: true,\n tabletAndMobile: true,\n },\n },\n toolbar: {\n display: false,\n width: \"fluid\",\n fixed: {\n desktop: true,\n tabletAndMobile: true,\n },\n },\n aside: {\n display: true,\n theme: \"light\",\n fixed: true,\n menuIcon: \"font\",\n minimized: false,\n minimize: true,\n hoverable: true,\n },\n content: {\n width: \"fluid\",\n },\n footer: {\n width: \"fluid\",\n },\n};\n\nexport default config;\n","import objectPath from \"object-path\";\nimport merge from \"deepmerge\";\nimport layoutConfig from \"@/core/config/DefaultLayoutConfig\";\nimport { Mutations } from \"@/store/enums/StoreEnums\";\nimport { Mutation, Module, VuexModule } from \"vuex-module-decorators\";\nimport LayoutConfigTypes from \"@/core/config/LayoutConfigTypes\";\n\ninterface StoreInfo {\n config: LayoutConfigTypes;\n initial: LayoutConfigTypes;\n windowHeight: number;\n}\n\n@Module\nexport default class ConfigModule extends VuexModule implements StoreInfo {\n config = layoutConfig;\n initial = layoutConfig;\n windowHeight = window.innerHeight;\n\n /**\n * Get config from layout config\n * @returns {function(path, defaultValue): *}\n */\n get layoutConfig() {\n return (path, defaultValue) => {\n return objectPath.get(this.config, path, defaultValue);\n };\n }\n\n /**\n * Window height\n * @returns {function(path, defaultValue): *}\n */\n get getWindowHeight()\n {\n return this.windowHeight;\n }\n\n @Mutation\n [Mutations.SET_LAYOUT_CONFIG](payload): void {\n this.config = payload;\n }\n\n @Mutation\n [Mutations.RESET_LAYOUT_CONFIG]() {\n this.config = Object.assign({}, this.initial);\n }\n\n @Mutation\n [Mutations.OVERRIDE_LAYOUT_CONFIG](): void {\n this.config = this.initial = Object.assign(\n {},\n this.initial,\n JSON.parse(window.localStorage.getItem(\"config\") || \"{}\")\n );\n }\n\n @Mutation\n [Mutations.OVERRIDE_PAGE_LAYOUT_CONFIG](payload): void {\n this.config = merge(this.config, payload);\n }\n\n @Mutation\n [Mutations.SET_WINDOW_HEIGHT](payload): void {\n this.windowHeight = payload;\n }\n}\n","import { Action, Mutation, Module, VuexModule } from \"vuex-module-decorators\";\r\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\r\nimport ApiService from \"@/core/services/ApiService\";\r\nimport {AxiosRequestConfig} from 'axios'\r\n\r\ninterface Otp {\r\n //password: string;\r\n ref: string;\r\n token: string;\r\n createdAt: Date;\r\n expiredAt: Date;\r\n}\r\n\r\ninterface StoreInfo {\r\n otp: Otp;\r\n}\r\n\r\n@Module\r\nexport default class OtpModule extends VuexModule implements StoreInfo {\r\n otp = {} as Otp;\r\n /**\r\n * Get breadcrumb object for current page\r\n * @returns object\r\n */\r\n get getOtp(): Otp {\r\n return this.otp;\r\n }\r\n\r\n /**\r\n * Get breadcrumb array for current page\r\n * @returns string\r\n */\r\n get token(): string {\r\n return this.otp.token;\r\n }\r\n\r\n\r\n @Mutation\r\n [Mutations.SET_OTP](payload) {\r\n console.log(payload)\r\n this.otp = payload;\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_OTP_TOKEN](payload) {\r\n this.otp.token = payload;\r\n }\r\n\r\n\r\n @Action\r\n [Actions.REQUEST_OTP](payload) { \r\n return new Promise((resolve, reject) => {\r\n ApiService.post(\"otp\", payload)\r\n .then(({data}) => {\r\n this.context.commit(Mutations.SET_OTP, data);\r\n resolve()\r\n })\r\n .catch(({response}) => {\r\n reject(response.data.message);\r\n })\r\n })\r\n }\r\n\r\n @Action\r\n [Actions.VERIFY_OTP](payload) {\r\n return new Promise((resolve, reject) => {\r\n ApiService.post(\"otp/verify\", payload)\r\n .then(({data}) => {\r\n this.context.commit(Mutations.SET_OTP, data.token);\r\n resolve()\r\n })\r\n .catch(({response}) => {\r\n console.log(response)\r\n reject(response.data.message);\r\n })\r\n \r\n })\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Action, Mutation, Module, VuexModule } from \"vuex-module-decorators\";\r\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\r\nimport ApiService from \"@/core/services/ApiService\";\r\nimport {AxiosRequestConfig} from 'axios'\r\n\r\ninterface RepresentInfo {\r\n //password: string;\r\n id: string;\r\n partner?: any;\r\n}\r\n\r\n@Module\r\nexport default class RepresentModule extends VuexModule implements RepresentInfo {\r\n id = ''\r\n partner = null\r\n /**\r\n * Get breadcrumb object for current page\r\n * @returns object\r\n */\r\n get getRepresentId(): string {\r\n return this.id;\r\n }\r\n\r\n get representPartner(): any {\r\n return this.partner;\r\n }\r\n\r\n @Action\r\n [Actions.GET_PARTNER_BY_ID](partnerCode) {\r\n \r\n this.context.commit(Mutations.SET_REPRESENT_ID, partnerCode);\r\n \r\n ApiService.setPresentAsHeader(partnerCode)\r\n return new Promise((resolve, reject) => {\r\n ApiService.get(\"partners\", partnerCode)\r\n .then(({ data }) => {\r\n this.context.commit(Mutations.SET_REPRESENT_PARTNER, data);\r\n resolve();\r\n })\r\n .catch(({ response }) => {\r\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_REPRESENT_ID](payload) {\r\n this.id = payload;\r\n }\r\n \r\n @Mutation\r\n [Mutations.SET_REPRESENT_PARTNER](payload) {\r\n this.partner = payload\r\n // Object.assign(this.partner, payload);\r\n }\r\n\r\n @Mutation\r\n [Mutations.CLEAR_REPRESENT]() {\r\n this.id = '' \r\n this.partner = null\r\n }\r\n}\r\n","import { Action, Mutation, Module, VuexModule } from \"vuex-module-decorators\";\r\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\r\nimport ApiService from \"@/core/services/ApiService\";\r\nimport {AxiosRequestConfig} from 'axios'\r\n\r\ninterface Partner {\r\n //password: string;\r\n // ref: string;\r\n // token: string;\r\n // createdAt: Date;\r\n // expiredAt: Date;\r\n customerIDRef: number;\r\n isAppointed: boolean;\r\n partnerBillAddress: string;\r\n partnerCode: string;\r\n partnerInvoicePrefix: string;\r\n partnerIsActive: boolean;\r\n partnerName: string;\r\n partnerNameShow: string;\r\n partnerTaxBranch: string;\r\n partnerTaxID: string;\r\n partnerTel: string;\r\n prefixName?: string;\r\n warehouseIDRef: number;\r\n}\r\n\r\ninterface PartnerModuleInfo {\r\n partnerList: Array;\r\n isFatching: boolean;\r\n}\r\n\r\n@Module\r\nexport default class PartnerModule extends VuexModule implements PartnerModuleInfo {\r\n\r\n partnerList = [];\r\n isFatching = false\r\n\r\n get getPartnerList(): Array {\r\n return this.partnerList\r\n }\r\n\r\n get getFatchingStatus()\r\n {\r\n return this.isFatching\r\n }\r\n\r\n @Action\r\n [Actions.FETCH_PARTNER_LIST]() {\r\n return new Promise((resolve, reject) => {\r\n // ถ้ามีการดึงข้อมูลอยู่\r\n if(this.isFatching) resolve()\r\n\r\n // เซ็ทว่ากำลังโหลดอยู่\r\n this.context.commit(\"FatchingPartner\", true)\r\n\r\n //ดึงข้อมูล\r\n ApiService.query(\"data-options/partners\", {})\r\n .then(({data}) => { \r\n this.context.commit(Mutations.SET_PARTNER_LIST, data)\r\n this.context.commit(\"FatchingPartner\", false)\r\n resolve()\r\n })\r\n .catch(({response}) => {\r\n \r\n this.context.commit(\"FatchingPartner\", false)\r\n reject(response.data.message);\r\n })\r\n })\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_PARTNER_LIST](payload) {\r\n this.partnerList = payload;\r\n }\r\n \r\n @Mutation\r\n FatchingPartner(payload) {\r\n this.isFatching = payload;\r\n }\r\n}\r\n","import { createStore } from \"vuex\";\nimport { config } from \"vuex-module-decorators\";\n\nimport AuthModule from \"@/store/modules/AuthModule\";\nimport BodyModule from \"@/store/modules/BodyModule\";\nimport BreadcrumbsModule from \"@/store/modules/BreadcrumbsModule\";\nimport ConfigModule from \"@/store/modules/ConfigModule\";\nimport OtpModule from \"@/store/modules/OtpModule\";\nimport RepresentModule from \"@/store/modules/RepresentModule\";\nimport PartnerModule from \"@/store/modules/PartnerModule\";\n\nconfig.rawError = true;\n\nconst store = createStore({\n modules: {\n AuthModule,\n BodyModule,\n BreadcrumbsModule,\n ConfigModule,\n OtpModule,\n RepresentModule,\n PartnerModule\n },\n});\n\nexport default store;\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=d2a1df06&lang=scss\"","import { App } from \"vue\";\nimport axios from \"axios\";\nimport VueAxios from \"vue-axios\";\nimport JwtService from \"@/core/services/JwtService\";\nimport { AxiosResponse, AxiosRequestConfig } from \"axios\";\nimport store from \"@/store\";\nimport { Mutations, Actions } from \"@/store/enums/StoreEnums\";\nimport router from \"@/router/clean\";\n\n/**\n * @description service to call HTTP request via Axios\n */\nclass ApiService {\n /**\n * @description property to share vue instance\n */\n public static vueInstance: App;\n\n /**\n * @description initialize vue axios\n */\n public static init(app: App) {\n ApiService.vueInstance = app;\n ApiService.vueInstance.use(VueAxios, axios);\n ApiService.vueInstance.axios.defaults.baseURL = process.env.VUE_APP_API_URL;\n ApiService.vueInstance.axios.interceptors.response.use(\n function (response) {\n return response;\n },\n function (error) {\n if (401 === error.response.status) {\n store\n .dispatch(Actions.LOGOUT)\n .then(() => router.push({ name: \"sign-in\" }));\n } else {\n return Promise.reject(error);\n }\n }\n );\n }\n\n /**\n * @description set the default HTTP request headers\n */\n public static setHeader(): void {\n ApiService.vueInstance.axios.defaults.headers.common[\"Authorization\"] = `Token ${JwtService.getCurrentUser()?.token}`; \n }\n\n public static setPresentAsHeader(partnerCode: string): void {\n ApiService.vueInstance.axios.defaults.headers.common[\"PresentAs\"] = partnerCode;\n }\n \n public static removePresentAsHeader(): void {\n delete ApiService.vueInstance.axios.defaults.headers.common[\"PresentAs\"];\n }\n\n /**\n * @description send the GET HTTP request\n * @param resource: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static query(\n resource: string,\n params: AxiosRequestConfig\n ): Promise {\n return ApiService.vueInstance.axios\n .get(resource, params).catch((error) => {\n throw new Error(`[KT] ApiService ${error}`);\n });\n }\n\n /**\n * @description send the GET HTTP request\n * @param resource: string\n * @param slug: string\n * @returns Promise\n */\n public static get(\n resource: string,\n slug = \"\" as string\n ): Promise {\n return ApiService.vueInstance.axios\n .get(`${resource}/${slug}`)\n .catch((error) => {\n throw new Error(`[KT] ApiService ${error}`);\n });\n }\n\n /**\n * @description set the POST HTTP request\n * @param resource: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static post(\n resource: string,\n params: any\n ): Promise {\n return ApiService.vueInstance.axios.post(`${resource}`, params);\n }\n\n /**\n * @description send the UPDATE HTTP request\n * @param resource: string\n * @param slug: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static update(\n resource: string,\n slug: string,\n params: AxiosRequestConfig\n ): Promise {\n return ApiService.vueInstance.axios.put(`${resource}/${slug}`, params);\n }\n\n /**\n * @description Send the PUT HTTP request\n * @param resource: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static put(\n resource: string,\n params: AxiosRequestConfig\n ): Promise {\n return ApiService.vueInstance.axios.put(`${resource}`, params);\n }\n\n /**\n * @description Send the DELETE HTTP request\n * @param resource: string\n * @returns Promise\n */\n public static delete(\n resource: string,\n slug = \"\" as string\n ): Promise {\n return ApiService.vueInstance.axios\n .delete(`${resource}/${slug}`)\n .catch((error) => {\n throw new Error(`[RWV] ApiService ${error}`);\n });\n }\n}\n\nexport default ApiService;\n","import { createRouter, createWebHashHistory, createWebHistory , RouteRecordRaw } from \"vue-router\";\nimport store from \"@/store\";\nimport { role, validateRole } from \"@/helpers/role\";\nimport { Mutations, Actions } from \"@/store/enums/StoreEnums\";\nimport { Form } from \"vee-validate\";\n\nconst createChildren = (prefix = \"\") => [\n {\n path: \"dashboard\",\n name: prefix+\"dashboard\",\n component: () => import(\"@/views/Dashboard.vue\"),\n },\n {\n path: \"products/stock\",\n name: prefix + \"stock\",\n component: () => import(\"@/views/stock/Stock.vue\"),\n // meta: { authorize: [role.admin] },\n },\n {\n path: \"products/returnproduct/:mode/:voucherCode/:voucherBranch\",\n name: prefix + \"returnproduct\",\n component: () => import(\"@/views/transfer/ReturnProductList.vue\"),\n meta: { authorize: [role.admin] },\n props: true,\n }, \n // {\n // path: \"products/editreturnproduct/:voucherCode/:voucherBranch\",\n // name: prefix + \"editreturnproduct\",\n // component: () => import(\"@/views/transfer/EditReturnProduct.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n {\n path: \"admin/partners/:partnerCode/stock\",\n name: prefix + \"partnerStock\",\n component: () => import(\"@/views/stock/Stock.vue\"),\n meta: { authorize: [role.admin] },\n props: true\n }, \n {\n path: \"2s/stock\",\n name: prefix + \"2SStock\",\n component: () => import(\"@/views/stock/2SStock.vue\"),\n // meta: { authorize: [role.admin] },\n },\n {\n path: \"transfer/receive\",\n name: prefix + \"receive\",\n component: () => import(\"@/views/transfer/Receive.vue\"),\n props: true\n },\n {\n path: \"sellorderreport\",\n name: prefix + \"sellorderreport\",\n component: () => import(\"@/views/sellorder/SellOrderReport.vue\"),\n },\n {\n path: \"financial/overduereport\",\n name: prefix + \"overduereport\",\n component: () => import(\"@/views/sellorder/OverdueReport.vue\"),\n },\n \n // {\n // path: \"admin/reports/orders\",\n // name: prefix + \"adminReportOrder\",\n // component: () => import(\"@/views/admin/orders/PartnerOrderSummaryReport.vue\"),\n // meta: { authorize: [role.admin] }\n // },\n // {\n // path: \"admin/reports/partners/:partnerCode/orders\",\n // name: prefix + \"partnerOrderList\",\n // component: () => import(\"@/views/order/OrderList.vue\"),\n // props: true,\n // meta: { authorize: [role.admin] }\n // },\n \n // {\n // path: \"admin/reports/partners/:partnerCode/orders/:orderCode\",\n // name: prefix + \"partnerOrderDetail\",\n // component: () => import(\"@/views/order/OrderDetail.vue\"),\n // props: true,\n // meta: { authorize: [role.admin] }\n // },\n {\n path: \"reports/product-sales-summary\",\n name: prefix + \"productSalesSummaryReport\",\n component: () => import(\"@/views/reports/SalesReport/SalesReport.vue\"),\n props: true\n },\n {\n path: \"order/create\",\n name: prefix + \"createOrder\",\n component: () => import(\"@/views/order/CreateOrder.vue\"),\n meta: { notCatch: true}\n },\n {\n path: \"order/sellrequest\",\n name: prefix + \"sellrequestCreate\",\n component: () => import(\"@/views/order/CreateOrder.vue\"),\n meta: { notCatch: true}\n },\n {\n path: \"order/:orderCode\",\n name: prefix + \"orderDetail\",\n component: () => import(\"@/views/order/OrderDetail.vue\"),\n props: true,\n },\n {\n path: \"order/:srCode\",\n name: prefix + \"SellRequestDetail\",\n component: () => import(\"@/views/sellrequest/SellRequestDetail.vue\"),\n props: true,\n },\n {\n path: \"order/sellrequestlist\",\n name: prefix + \"SellRequestList\",\n component: () => import(\"@/views/sellrequest/SellRequestList.vue\"),\n props: true,\n },\n {\n path: \"order/nondeliveryreport\",\n name: prefix + \"NonDeliveryReport\",\n component: () => import(\"@/views/reports/nondelivery/NonDeliveryReport.vue\"),\n props: true,\n },\n {\n path: \"order/aivoucherlist\",\n name: prefix + \"AIVoucherList\",\n component: () => import(\"@/views/aivoucher/AIVoucherList.vue\"),\n props: true,\n },\n {\n path: \"order\",\n name: prefix + \"orderList\",\n component: () => import(\"@/views/order/OrderList.vue\"),\n props: true,\n },\n {\n path: \"order2s\",\n name: prefix + \"order2SList\",\n component: () => import(\"@/views/order2s/Order2SList.vue\"),\n props: true,\n },\n {\n path: \"order2s/:uoRefNo\",\n name: prefix + \"order2SDetail\",\n component: () => import(\"@/views/order2s/Order2SDetail.vue\"),\n props: true,\n },\n {\n path: \"order2s/compensation\",\n name: prefix + \"compensation\",\n component: () => import(\"@/views/order2s/Compensation.vue\"),\n props: true,\n },\n {\n path: \"order2s/billingnote\",\n name: prefix + \"billingnote\",\n component: () => import(\"@/views/order2s/Billingnote.vue\"),\n props: true,\n }, \n // {\n // path: \"shipment2slist\",\n // name: prefix + \"shipment2SList\",\n // component: () => import(\"@/views/shipment/Shipment2SList.vue\"),\n // props: true,\n // }, \n {\n path: \"order2s/shipment2slist/:status\",\n name: prefix + \"shipment2SList\",\n component: () => import(\"@/views/shipment/Shipment2SList.vue\"),\n props: true,\n }, \n {\n path: \"order2s/shipment2s/:uoRefNo/:status\",\n name: prefix + \"shipment2SDetail\",\n component: () => import(\"@/views/shipment/Shipment2SDetail.vue\"),\n props: true,\n }, \n {\n path: \"customers\",\n name: prefix + \"customer\",\n component: () => import(\"@/views/customer/CustomerList.vue\"),\n }, \n {\n path: \"management/roles\",\n name: prefix + \"roles\",\n component: () => import(\"@/views/management/Role.vue\"),\n meta: { authorize: [role.admin, role.owner] },\n }, \n {\n path: \"customer/:contactID\",\n name: prefix + \"customerDetail\",\n component: () => import(\"@/views/customer/CustomerDetail.vue\"),\n props: true,\n },\n // {\n // path: \"admin/partners/:partnerCode/:contactID/customerdetail\",\n // name: prefix + \"partnerCustomerDetail\",\n // component: () => import(\"@/views/customer/CustomerDetail.vue\"),\n // meta: { authorize: [role.admin] },\n // props: true,\n // }, \n {\n path: \"settings\",\n name: prefix + \"settings\",\n component: () => import(\"@/views/account/Settings.vue\"),\n },\n // {\n // path: \"admin/partners\",\n // name: prefix + \"setpartner\",\n // component: () => import(\"@/views/admin/partner/SetPartner.vue\"),\n // meta: { authorize: [role.admin] },\n // },\n // {\n // path: \"admin/setprice\",\n // name: prefix + \"setPrice\",\n // component: () => import(\"@/views/admin/product/SetPrice.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n {\n path: \"overdueitems\",\n name: prefix + \"overdueItems\",\n component: () => import(\"@/views/sellorder/OverdueItems.vue\"),\n },\n // {\n // path: \"overdueitems/:partnerCode\",\n // name: prefix + \"overdueItems\",\n // component: () => import(\"@/views/sellorder/OverdueItems.vue\"),\n // props: true,\n // },\n {\n path: \"transfer/return\",\n name: prefix + \"return\",\n component: () => import(\"@/views/transfer/Return.vue\"),\n props: true\n },\n // {\n // path: \"admin/pricehistory/:productID\",\n // name: prefix + \"priceHistory\",\n // component: () => import(\"@/views/admin/product/PriceHistory.vue\"),\n // props: true,\n // meta: { authorize: [role.admin] },\n // }, \n {\n path: \"admin/productpartner/:partnerCode\",\n name: prefix + \"productPartner\",\n component: () => import(\"@/views/admin/partner/ProductPartner.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n }, \n // {\n // path: \"admin/setproductpartner/:partnerCode\",\n // name: prefix + \"setProductPartner\",\n // component: () => import(\"@/views/admin/partner/SetProductPartner.vue\"),\n // props: true,\n // meta: { authorize: [role.admin] },\n // }, \n // {\n // path: \"admin/setproduct/\",\n // name: prefix + \"setProduct\",\n // component: () => import(\"@/views/admin/product/SetProduct.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n // {\n // path: \"admin/campaign/\",\n // name: prefix + \"campaignList\",\n // component: () => import(\"@/views/admin/campaign/CampaignList.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n // {\n // path: \"admin/campaign/create/\",\n // name: prefix + \"createCampaign\",\n // component: () => import(\"@/views/admin/campaign/CreateCampaign.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n // {\n // path: \"admin/campaign/:campaignCode\",\n // name: prefix + \"campaignDetail\",\n // component: () => import(\"@/views/admin/campaign/CampaignDetail.vue\"),\n // props: true,\n // meta: { authorize: [role.admin] },\n // }, \n // {\n // path: \"admin/reports/overdue/\",\n // name: prefix + \"overdueReport\",\n // component: () => import(\"@/views/sellorder/OverdueReport.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n // {\n // path: \"admin/reports/transfer/\",\n // name: prefix + \"transfer\",\n // component: () => import(\"@/views/admin/reports/Transfer.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n // {\n // path: \"admin/reports/productnotmove/\",\n // name: prefix + \"productnotmove\",\n // component: () => import(\"@/views/admin/reports/ProductNotMove.vue\"),\n // meta: { authorize: [role.admin] },\n // }, \n {\n path: \"order/product-sales-summary\",\n name: \"productSalesSummaryReport\",\n component: () => import(\"@/views/reports/SalesReport/SalesReport.vue\"),\n props: true\n },\n {\n path: \"reports/productnotmove/\",\n name: prefix + \"productNotMovePartner\",\n component: () => import(\"@/views/admin/reports/ProductNotMove.vue\"),\n // meta: { authorize: [role.user, role.manager, role.owner] },\n }, \n // {\n // path: \"products/transferbook\",\n // name: prefix + \"transferbook\",\n // component: () => import(\"@/views/transfer/TransferBook.vue\"),\n // },\n {\n path: \"products/booking\",\n name: prefix + \"transfer\",\n component: () => import(\"@/views/transfer/Transfer.vue\"),\n }, \n {\n path: \"products/transferbook/create\",\n name: prefix + \"transferbookcreate\",\n component: () => import(\"@/views/transfer/TransferBookCreate.vue\"),\n }, \n \n {\n path: \"reports/productmovement\",\n name: prefix + \"productmovement\",\n component: () => import(\"@/views/reports/ProductMoveMent.vue\"),\n }, \n {\n path: \"reports/stocklongtime\",\n name: prefix + \"stockLongTimePartner\",\n component: () => import(\"@/views/reports/StockLongTime.vue\"),\n // meta: { authorize: [role.user, role.manager, role.owner] },\n }, \n {\n path: \"order/product-sellorder\",\n name: prefix + \"productSellorder\",\n component: () => import(\"@/views/reports/SellOrderReport/ProductSellorder.vue\"),\n // meta: { authorize: [role.user, role.manager, role.owner] },\n }, \n\n]\n\nconst adminRoutes: Array = [\n {\n path: \"/dashboard\",\n name: \"adminDashboard\",\n component: () => validateRole(role.admin) ? import(\"@/views/admin/Dashboard.vue\") : import(\"@/views/Dashboard.vue\"),\n },\n {\n path: \"admin/partners/:partnerCode/stock\",\n name: \"partnerStock\",\n component: () => import(\"@/views/stock/Stock.vue\"),\n meta: { authorize: [role.admin] },\n props: true\n },\n {\n path: \"admin/reports/orders\",\n name: \"adminReportOrder\",\n component: () => import(\"@/views/admin/orders/PartnerOrderSummaryReport.vue\"),\n meta: { authorize: [role.admin] }\n },\n {\n path: \"/admin/reports/partners/:partnerCode/orders\",\n name: \"partnerOrderList\",\n component: () => import(\"@/views/order/OrderList.vue\"),\n props: true,\n meta: { authorize: [role.admin] }\n },\n {\n path: \"/partners/:partnerCode/customer/:contactID\",\n name: \"partnerCustomerDetail\",\n component: () => import(\"@/views/customer/CustomerDetail.vue\"),\n meta: { authorize: [role.admin] },\n props: true,\n }, \n {\n path: \"/admin/reports/customer\",\n name: \"partnerCustomer\",\n component: () => import(\"@/views/customer/CustomerList.vue\"),\n meta: { authorize: [role.admin] },\n props: true\n }, \n {\n path: \"/admin/reports/partners/:partnerCode/orders/:orderCode\",\n name: \"partnerOrderDetail\",\n component: () => import(\"@/views/order/OrderDetail.vue\"),\n props: true,\n meta: { authorize: [role.admin] }\n },\n {\n path: \"/admin/reports/partners/:partnerCode/orders/:srCode\",\n name: \"partnerSellRequestDetail\",\n component: () => import(\"@/views/sellrequest/SellRequestDetail.vue\"),\n props: true,\n },\n {\n path: \"/partners\",\n name: \"setpartner\",\n component: () => import(\"@/views/admin/partner/SetPartner.vue\"),\n meta: { authorize: [role.admin] },\n },\n // {\n // path: \"reports/product-sales-summary\",\n // name: prefix + \"productSalesSummaryReport\",\n // component: () => import(\"@/views/reports/SalesReport/SalesReport.vue\"),\n // props: true\n // },\n {\n path: \"/admin/reports/salereports/product-sales-summary\",\n name: \"adminProductSalesSummaryReport\",\n component: () => import(\"@/views/reports/SalesReport/SalesReport.vue\"),\n props: true,\n meta: { authorize: [role.admin] }\n },\n {\n path: \"/admin/setprice\",\n name: \"setPrice\",\n component: () => import(\"@/views/admin/product/SetPrice.vue\"),\n meta: { authorize: [role.admin] },\n }, \n {\n path: \"/admin/pricehistory/:productID\",\n name: \"priceHistory\",\n component: () => import(\"@/views/admin/product/PriceHistory.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/productpartner/:partnerCode\",\n name: \"productPartner\",\n component: () => import(\"@/views/admin/partner/ProductPartner.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/partners/setproductpartner/:partnerCode\",\n name: \"setProductPartner\",\n component: () => import(\"@/views/admin/partner/SetProductPartner.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/products/setproduct/\",\n name: \"setProduct\",\n component: () => import(\"@/views/admin/product/SetProduct.vue\"),\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/campaign/\",\n name: \"campaignList\",\n component: () => import(\"@/views/admin/campaign/CampaignList.vue\"),\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/campaign/create/\",\n name: \"createCampaign\",\n component: () => import(\"@/views/admin/campaign/CreateCampaign.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/campaign/:campaignCode\",\n name: \"campaignDetail\",\n component: () => import(\"@/views/admin/campaign/CampaignDetail.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/reports/overdue/\",\n name: \"overdueReport\",\n component: () => import(\"@/views/sellorder/OverdueReport.vue\"),\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/reports/transfers/\",\n name: \"transfers\",\n component: () => import(\"@/views/admin/reports/Transfer.vue\"),\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/reports/productnotmove/\",\n name: \"productNotMove\",\n component: () => import(\"@/views/admin/reports/ProductNotMove.vue\"),\n meta: { authorize: [role.admin] },\n }, \n {\n path: \"/admin/reports/stocklongtime\",\n name: \"stockLongTime\",\n component: () => import(\"@/views/admin/reports/StockLongTime.vue\"),\n meta: { authorize: [role.admin] },\n }, \n {\n path: \"/admin/news/\",\n name: \"newsList\",\n component: () => import(\"@/views/admin/news/NewsList.vue\"),\n meta: { authorize: [role.admin] },\n },\n {\n path: \"/admin/news/create/\",\n name: \"createNews\",\n component: () => import(\"@/views/admin/news/CreateNews.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n }, \n {\n path: \"/admin/news/:newsCode\",\n name: \"newsDetail\",\n component: () => import(\"@/views/admin/news/NewsDetail.vue\"),\n props: true,\n meta: { authorize: [role.admin] },\n },\n \n // {\n // path: \"/admin/reports/productsellorder\",\n // name: \"productSellorder\",\n // component: () => import(\"@/views/reports/SellOrderReport/ProductSellorder.vue\"),\n // meta: { authorize: [role.admin] },\n // // meta: { authorize: [role.user, role.manager, role.owner] },\n // }, \n {\n path: \"/admin/reports/sellorderreport/product-sellorder\",\n name: \"adminProductSellorder\",\n component: () => import(\"@/views/reports/SellOrderReport/ProductSellorder.vue\"),\n props: true,\n meta: { authorize: [role.admin] }\n }, \n {\n path: \"/partners/:basePartnerCode\",\n name: \"partnerView\",\n redirect: {\n name: \"dashboard\"\n },\n component: () => import(\"@/views/PartnerView.vue\"),\n props: true,\n // meta: { authorize: [role.admin] },\n children: createChildren(\"\"),\n }, \n // {\n // path: \"/partners/:basePartnerCode\",\n // name: \"partnerView\",\n // redirect: {\n // name: \"dashboard\"\n // },\n // component: () => import(\"@/layout/Layout.vue\"),\n // props: true,\n // // meta: { authorize: [role.admin] },\n // children: createChildren(\"\"),\n // }\n]\n\nconst routes: Array = [\n {\n path: \"/\",\n name: \"baseLayout\",\n // redirect: \"/\",\n \n component: () => import(\"@/layout/Layout.vue\"),\n meta: { authorize: true }\n // children: [\n // ...adminRoutes\n // ]\n // ...createChildren(),\n // {\n // redirect: {\n // name: \"partnerViewdashboard\"\n // },\n // path: \"/partners/:basePartnerCode\",\n // name: \"partnerView\",\n // component: () => import(\"@/views/PartnerView.vue\"),\n // props: true,\n // // meta: { authorize: [role.admin] },\n // children: [\n // ...createChildren(\"partnerView\"),\n // {\n // path: \"dashboard\",\n // name: \"partnerViewdashboard\",\n // component: () => import(\"@/views/Dashboard.vue\"),\n // }, \n // ]\n // }, \n // {\n // path: \"dashboard\",\n // name: \"dashboard\",\n // component: () => validateRole(role.admin) ? import(\"@/views/admin/Dashboard.vue\") : import(\"@/views/Dashboard.vue\"),\n // },\n // {\n // path: \"/stock\",\n // name: \"stock\",\n // component: () => import(\"@/views/stock/Stock.vue\"),\n // // meta: { authorize: [role.admin] },\n // },\n // {\n // path: \"/2s/stock\",\n // name: \"2SStock\",\n // component: () => import(\"@/views/stock/2SStock.vue\"),\n // // meta: { authorize: [role.admin] },\n // },\n // {\n // path: \"/receive\",\n // name: \"receive\",\n // component: () => import(\"@/views/transfer/Receive.vue\"),\n // },\n // {\n // path: \"/sellorderreport\",\n // name: \"sellorderreport\",\n // component: () => import(\"@/views/sellorder/SellOrderReport.vue\"),\n // },\n // {\n // path: \"/overduereport\",\n // name: \"overduereport\",\n // component: () => import(\"@/views/sellorder/OverdueReport.vue\"),\n // },\n // // {\n // // path: \"/admin/reports/product-sales-summary\",\n // // name: \"adminProductSalesSummaryReport\",\n // // component: () => import(\"@/views/reports/ProductSalesSummaryReport.vue\"),\n // // props: true,\n // // meta: { authorize: [role.admin] }\n // // },\n // {\n // path: \"/salereports/product-sales-summary\",\n // name: \"productSalesSummaryReport\",\n // component: () => import(\"@/views/reports/SalesReport/SalesReport.vue\"),\n // props: true\n // },\n // {\n // path: \"/order/create\",\n // name: \"createOrder\",\n // component: () => import(\"@/views/order/CreateOrder.vue\"),\n // meta: { notCatch: true}\n // },\n // {\n // path: \"/order/:orderCode\",\n // name: \"orderDetail\",\n // component: () => import(\"@/views/order/OrderDetail.vue\"),\n // props: true,\n // },\n // {\n // path: \"/order\",\n // name: \"orderList\",\n // component: () => import(\"@/views/order/OrderList.vue\"),\n // props: true,\n // },\n // {\n // path: \"/customer\",\n // name: \"customer\",\n // component: () => import(\"@/views/customer/CustomerList.vue\"),\n // },\n // {\n // path: \"admin/partners/:partnerCode/customer\",\n // name: \"partnerCustomer\",\n // component: () => import(\"@/views/customer/CustomerList.vue\"),\n // meta: { authorize: [role.admin] },\n // props: true\n // }, \n // {\n // path: \"/management/roles\",\n // name: \"roles\",\n // component: () => import(\"@/views/management/Role.vue\"),\n // meta: { authorize: [role.admin, role.owner] },\n // },\n // {\n // path: \"/customerdetail/:contactID\",\n // name: \"customerDetail\",\n // component: () => import(\"@/views/customer/CustomerDetail.vue\"),\n // props: true,\n // },\n // {\n // path: \"/settings\",\n // name: \"settings\",\n // component: () => import(\"@/views/account/Settings.vue\"),\n // },\n // {\n // path: \"/overdueitems\",\n // name: \"overdueItems\",\n // component: () => import(\"@/views/sellorder/OverdueItems.vue\"),\n // },\n // {\n // path: \"/return\",\n // name: \"return\",\n // component: () => import(\"@/views/transfer/Return.vue\"),\n // },\n // {\n // path: \"/returnproduct\",\n // name: \"returnProduct\",\n // component: () => import(\"@/views/transfer/ReturnProductList.vue\"),\n // }, \n \n // {\n // path: \"/transferbook\",\n // name: \"transferbook\",\n // component: () => import(\"@/views/transfer/TransferBook.vue\"),\n // }, \n // {\n // path: \"/transferbook/create\",\n // name: \"transferbookcreate\",\n // component: () => import(\"@/views/transfer/TransferBookCreate.vue\"),\n // },\n // {\n // path: \"/reports/productmovement\",\n // name: \"productmovement\",\n // component: () => import(\"@/views/reports/ProductMoveMent.vue\"),\n // }, \n // ],\n },\n {\n path: \"/\",\n name: \"A\",\n component: () => import(\"@/views/auth/Auth.vue\"),\n children: [\n {\n path: \"/sign-in\",\n name: \"sign-in\",\n component: () => import(\"@/views/auth/SignIn.vue\"),\n },\n {\n path: \"/forget-password\",\n name: \"ForgetPassword\",\n component: () => import(\"@/views/auth/ForgetPassword.vue\"),\n },\n {\n path: \"/reset-password\",\n name: \"ResetPassword\",\n component: () => import(\"@/views/auth/ResetPassword.vue\"),\n }, \n ],\n },\n {\n // the 404 route, when none of the above matches\n path: \"/404\",\n name: \"404\",\n component: () => import(\"@/views/error/Error404.vue\"),\n },\n {\n path: \"/:pathMatch(.*)*\",\n redirect: \"/404\",\n },\n];\n\n\n\nconst gcurrentUser = store.getters.currentUser;\n\nif(gcurrentUser ) {\n \n routes[0].children = gcurrentUser.role == role.admin ? adminRoutes : createChildren();\n\n}\n\nconst router = createRouter({\n history: createWebHistory (),\n routes,\n});\n\n\n\nrouter.beforeEach((to, from, next) => {\n // reset config to initial state\n store.commit(Mutations.RESET_LAYOUT_CONFIG);\n\n store.dispatch(Actions.VERIFY_AUTH)\n \n const authorize = to.meta.authorize as string[];\n const currentUser = store.getters.currentUser;\n // console.log(\"role : \", currentUser.role)\n // console.log(\"from : \", from)\n // console.log(\"to : \", to)\n\n\n // if(currentUser)\n // {\n // if(!from.name && from.path == '/') {\n \n // if(currentUser.role == \"admin\" )\n // {\n // adminRoutes.forEach(r => { \n // router.addRoute('baseLayout', r)\n // })\n // }\n // else \n // {\n // createChildren().forEach(r => {\n // console.log(r) \n // router.addRoute('baseLayout', r)\n // })\n // }\n // }\n // }\n \n // console.log('from', from);\n // console.log('to', to);\n // console.log(\"name\", to.name);\n // console.log(\"hasRoute\", router.hasRoute(to.name ?? \"\"));\n // console.log(\"authorize\", authorize);\n // console.log(\"!currentUser\", !currentUser);\n // console.log(\"currentUser\", currentUser);\n\n if (authorize) {\n \n\n if (!currentUser ||!currentUser.id) {\n \n // not logged in so redirect to login page with the return url\n return next({ path: \"/sign-in\", query: { returnUrl: to.path } });\n } \n\n if(!currentUser.updatedDate)\n {\n return next({name: \"ResetPassword\"})\n }\n\n // check if route is restricted by role\n if (authorize.length && !authorize.includes(currentUser.role)) {\n // role not authorised so redirect to home page\n return next({ path: \"/404\" });\n }\n\n if(to.path == '/') {\n return next({ path: \"/dashboard\" });\n }\n }\n \n // Scroll page to top on every route change\n // setTimeout(() => {\n window.scrollTo(0, 0);\n next();\n // }, 100);\n});\n\n\nexport default router;\n","enum Actions {\n // action types\n ADD_BODY_CLASSNAME = \"addBodyClassName\",\n REMOVE_BODY_CLASSNAME = \"removeBodyClassName\",\n ADD_BODY_ATTRIBUTE = \"addBodyAttribute\",\n REMOVE_BODY_ATTRIBUTE = \"removeBodyAttribute\",\n ADD_CLASSNAME = \"addClassName\",\n VERIFY_AUTH = \"verifyAuth\",\n LOGIN = \"login\",\n LOGOUT = \"logout\",\n REGISTER = \"register\",\n UPDATE_USER = \"updateUser\",\n FORGOT_PASSWORD = \"forgotPassword\",\n SET_BREADCRUMB_ACTION = \"setBreadcrumbAction\",\n REQUEST_OTP = \"requestOtp\",\n VERIFY_OTP = \"verifyOtp\",\n GET_PARTNER_BY_ID = \"getPartnerById\",\n FETCH_PARTNER_LIST = \"FetchPartner\",\n}\n\nenum Mutations {\n // mutation types\n SET_CLASSNAME_BY_POSITION = \"appendBreadcrumb\",\n PURGE_AUTH = \"logOut\",\n SET_AUTH = \"setAuth\",\n SET_USER = \"setUser\",\n SET_PASSWORD = \"setPassword\",\n SET_ERROR = \"setError\",\n SET_BREADCRUMB_MUTATION = \"setBreadcrumbMutation\",\n SET_LAYOUT_CONFIG = \"setLayoutConfig\",\n RESET_LAYOUT_CONFIG = \"resetLayoutConfig\",\n OVERRIDE_LAYOUT_CONFIG = \"overrideLayoutConfig\",\n OVERRIDE_PAGE_LAYOUT_CONFIG = \"overridePageLayoutConfig\",\n SET_OTP = \"setOtp\",\n SET_OTP_ERROR = \"setOtpError\",\n SET_OTP_TOKEN = \"setOtpToken\",\n SET_WINDOW_HEIGHT = \"setWindowHeight\",\n SET_REPRESENT_ID = \"setRepresentId\",\n SET_PARTNER_VIEW_MENU = \"setPartnerViewMenu\",\n SET_REPRESENT_PARTNER = \"setRepresentPartner\",\n CLEAR_REPRESENT = \"clearRepresent\",\n SET_PARTNER_LIST = \"setPartnerList\"\n}\n\nexport { Actions, Mutations };\n","import {createPopper, VirtualElement} from '@popperjs/core'\r\nimport {\r\n getElementChild,\r\n getElementParents,\r\n getAttributeValueByBreakpoint,\r\n getUniqueIdWithPrefix,\r\n DataUtil,\r\n ElementStyleUtil,\r\n EventHandlerUtil,\r\n insertAfterElement,\r\n slideUp,\r\n slideDown,\r\n DOMEventHandlerUtil,\r\n throttle,\r\n getHighestZindex,\r\n} from '../_utils/index'\r\n\r\nexport interface MenuOptions {\r\n dropdown: {\r\n hoverTimeout: number\r\n zindex: number\r\n }\r\n accordion: {\r\n slideSpeed: number\r\n expand: boolean\r\n }\r\n}\r\n\r\nconst defaultMenuOptions: MenuOptions = {\r\n dropdown: {\r\n hoverTimeout: 200,\r\n zindex: 105,\r\n },\r\n accordion: {\r\n slideSpeed: 250,\r\n expand: false,\r\n },\r\n}\r\n\r\ntype PopperPlacement =\r\n | 'right'\r\n | 'auto'\r\n | 'auto-start'\r\n | 'auto-end'\r\n | 'top'\r\n | 'bottom'\r\n | 'left'\r\n | 'top-start'\r\n | 'top-end'\r\n | 'bottom-start'\r\n | 'bottom-end'\r\n | 'right-start'\r\n | 'right-end'\r\n | 'left-start'\r\n | 'left-end'\r\n | undefined\r\n\r\nclass MenuComponent {\r\n element: HTMLElement\r\n options: MenuOptions\r\n instanceUid: string\r\n triggerElement: HTMLElement | null = null\r\n\r\n constructor(_element: HTMLElement, options: MenuOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultMenuOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('menu')\r\n // this.element.setAttribute('data-kt-menu', 'true')\r\n this._setTriggerElement()\r\n this._update()\r\n DataUtil.set(this.element, 'menu', this)\r\n return this\r\n }\r\n\r\n // Set external trigger element\r\n private _setTriggerElement = () => {\r\n const target = document.querySelector(\r\n `[data-kt-menu-target=\"#${this.element.getAttribute('id')}\"`\r\n )\r\n\r\n if (target) {\r\n this.triggerElement = target as HTMLElement\r\n } else if (this.element.closest('[data-kt-menu-trigger]')) {\r\n this.triggerElement = this.element.closest('[data-kt-menu-trigger]') as HTMLElement\r\n } else if (\r\n this.element.parentNode &&\r\n getElementChild(this.element.parentNode as HTMLElement, '[data-kt-menu-trigger]')\r\n ) {\r\n const child = getElementChild(\r\n this.element.parentNode as HTMLElement,\r\n '[data-kt-menu-trigger]'\r\n )\r\n if (child) {\r\n this.triggerElement = child\r\n }\r\n }\r\n\r\n if (this.triggerElement) {\r\n DataUtil.set(this.triggerElement, 'menu', this)\r\n }\r\n }\r\n\r\n // Test if menu has external trigger element\r\n private _isTriggerElement = (item: HTMLElement) => {\r\n return this.triggerElement === item\r\n }\r\n\r\n // Get item option(through html attributes)\r\n private _getItemOption = (item: HTMLElement, name: string) => {\r\n let value: string | JSON | null | boolean = null\r\n if (item && item.hasAttribute('data-kt-menu-' + name)) {\r\n const attr = item.getAttribute('data-kt-menu-' + name) || ''\r\n value = getAttributeValueByBreakpoint(attr)\r\n if (value !== null && String(value) === 'true') {\r\n value = true\r\n } else if (value !== null && String(value) === 'false') {\r\n value = false\r\n }\r\n }\r\n return value\r\n }\r\n\r\n // Get item element\r\n private _getItemElement = (_element: HTMLElement) => {\r\n // Element is the external trigger element\r\n if (this._isTriggerElement(_element)) {\r\n return _element\r\n }\r\n\r\n // Element has item toggler attribute\r\n if (_element.hasAttribute('data-kt-menu-trigger')) {\r\n return _element\r\n }\r\n\r\n // Element has item DOM reference in it's data storage\r\n const itemElement = DataUtil.get(_element, 'item')\r\n if (itemElement) {\r\n return itemElement\r\n }\r\n\r\n // Item is parent of element\r\n const item = _element.closest('.menu-item[data-kt-menu-trigger]')\r\n if (item) {\r\n return item\r\n }\r\n\r\n // Element's parent has item DOM reference in it's data storage\r\n const sub = _element.closest('.menu-sub')\r\n if (sub) {\r\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\r\n if (subItem) {\r\n return subItem\r\n }\r\n }\r\n }\r\n\r\n // Get item parent element\r\n private _getItemParentElement = (item: HTMLElement) => {\r\n const sub = item.closest('.menu-sub')\r\n if (!sub) {\r\n return null\r\n }\r\n\r\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\r\n if (subItem) {\r\n return subItem\r\n }\r\n\r\n const parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')\r\n if (sub && parentItem) {\r\n return parentItem\r\n }\r\n\r\n return null\r\n }\r\n\r\n // Get item parent elements\r\n private _getItemParentElements = (item: HTMLElement) => {\r\n const parents:Array = []\r\n let parent:Element\r\n let i = 0\r\n let buffer:HTMLElement = item\r\n\r\n do {\r\n parent = this._getItemParentElement(buffer)\r\n if (parent) {\r\n parents.push(parent)\r\n buffer = parent as HTMLElement\r\n }\r\n\r\n i++\r\n } while (parent !== null && i < 20)\r\n\r\n if (this.triggerElement) {\r\n parents.unshift(this.triggerElement)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/)\r\n private _getDropdownPopperConfig = (item: HTMLElement) => {\r\n // Placement\r\n const placementOption = this._getItemOption(item, 'placement')\r\n let placement: PopperPlacement = 'right'\r\n if (placementOption) {\r\n placement = placementOption as PopperPlacement\r\n }\r\n\r\n // Flip\r\n // const flipValue = this._getItemOption(item, 'flip')\r\n // const flip = flipValue ? flipValue.toString().split(',') : []\r\n\r\n // Offset\r\n const offsetValue = this._getItemOption(item, 'offset')\r\n const offset = offsetValue ? offsetValue.toString().split(',') : []\r\n\r\n // Strategy\r\n const strategy: 'absolute' | 'fixed' | undefined =\r\n this._getItemOption(item, 'overflow') === true ? 'absolute' : 'fixed'\r\n\r\n return {\r\n placement: placement,\r\n strategy: strategy,\r\n modifiers: [\r\n {\r\n name: 'offset',\r\n options: {\r\n offset: offset,\r\n },\r\n },\r\n {\r\n name: 'preventOverflow'\r\n },\r\n {\r\n name: 'flip',\r\n options: {\r\n // altBoundary: true,\r\n // fallbackPlacements: flip,\r\n flipVariations: false\r\n },\r\n },\r\n ],\r\n }\r\n }\r\n\r\n // Get item child element\r\n private _getItemChildElement = (item: HTMLElement) => {\r\n let selector = item\r\n\r\n const subItem = DataUtil.get(item, 'sub')\r\n if (subItem) {\r\n selector = subItem\r\n }\r\n\r\n if (selector) {\r\n //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]');\r\n const element = selector.querySelector('.menu-item[data-kt-menu-trigger]')\r\n if (element) {\r\n return element\r\n }\r\n }\r\n return null\r\n }\r\n\r\n // Get item child elements\r\n private _getItemChildElements = (item: HTMLElement) => {\r\n const children: Array = []\r\n let child:Element | null\r\n let i = 0\r\n let buffer = item\r\n do {\r\n child = this._getItemChildElement(buffer)\r\n if (child) {\r\n children.push(child)\r\n buffer = child as HTMLElement\r\n }\r\n\r\n i++\r\n } while (child !== null && i < 20)\r\n\r\n return children\r\n }\r\n\r\n // Get item sub element\r\n private _getItemSubElement = (item: HTMLElement) => {\r\n if (!item) {\r\n return null\r\n }\r\n\r\n if (this._isTriggerElement(item)) {\r\n return this.element\r\n }\r\n\r\n if (item.classList.contains('menu-sub')) {\r\n return item\r\n } else if (DataUtil.has(item, 'sub')) {\r\n return DataUtil.get(item, 'sub')\r\n } else {\r\n return getElementChild(item, '.menu-sub')\r\n }\r\n }\r\n\r\n private _getCss = (el: HTMLElement, styleProp: string) => {\r\n const defaultView = (el.ownerDocument || document).defaultView\r\n if (!defaultView) {\r\n return ''\r\n }\r\n\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\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\r\n }\r\n\r\n // Get item sub type\r\n private _getItemSubType = (element: HTMLElement) => {\r\n const sub = this._getItemSubElement(element)\r\n if (sub && parseInt(this._getCss(sub, 'z-index')) > 0) {\r\n return 'dropdown'\r\n } else {\r\n return 'accordion'\r\n }\r\n }\r\n\r\n // Test if item's sub is shown\r\n private _isItemSubShown = (item: HTMLElement) => {\r\n let sub = this._getItemSubElement(item)\r\n if (sub) {\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n return sub.classList.contains('show') && sub.hasAttribute('data-popper-placement')\r\n } else {\r\n return item.classList.contains('show')\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n // Test if item dropdown is permanent\r\n private _isItemDropdownPermanent = (item: HTMLElement) => {\r\n return this._getItemOption(item, 'permanent') === true\r\n }\r\n\r\n // Test if item's parent is shown\r\n private _isItemParentShown = (item: HTMLElement) => {\r\n return getElementParents(item, '.menu-item.show').length > 0\r\n }\r\n\r\n // Test of it is item sub element\r\n private _isItemSubElement = (item: HTMLElement) => {\r\n return item.classList.contains('menu-sub')\r\n }\r\n\r\n // Test if item has sub\r\n private _hasItemSub = (item: HTMLElement) => {\r\n return item.classList.contains('menu-item') && item.hasAttribute('data-kt-menu-trigger')\r\n }\r\n\r\n // Get link element\r\n private _getItemLinkElement = (item: HTMLElement) => {\r\n return getElementChild(item, '.menu-link')\r\n }\r\n\r\n // Get toggle element\r\n private _getItemToggleElement = (item: HTMLElement) => {\r\n if (this.triggerElement) {\r\n return this.triggerElement\r\n }\r\n\r\n return this._getItemLinkElement(item)\r\n }\r\n\r\n // Show item dropdown\r\n private _showDropdown = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.show') === false) {\r\n return\r\n }\r\n\r\n // Hide all currently shown dropdowns except current one\r\n MenuComponent.hideDropdowns(item)\r\n\r\n // const toggle = this._isTriggerElement(item) ? item : this._getItemLinkElement(item);\r\n const sub = this._getItemSubElement(item)\r\n const width = this._getItemOption(item, 'width')\r\n const height = this._getItemOption(item, 'height')\r\n\r\n let zindex = this.options.dropdown.zindex\r\n const parentZindex = getHighestZindex(item) // update\r\n // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update\r\n if (parentZindex !== null && parentZindex >= zindex) {\r\n zindex = parentZindex + 1\r\n }\r\n\r\n if (zindex) {\r\n ElementStyleUtil.set(sub, 'z-index', zindex)\r\n }\r\n\r\n if (width) {\r\n ElementStyleUtil.set(sub, 'width', width)\r\n }\r\n\r\n if (height) {\r\n ElementStyleUtil.set(sub, 'height', height)\r\n }\r\n\r\n this.initDropdownPopper(item, sub)\r\n\r\n item.classList.add('show')\r\n item.classList.add('menu-dropdown')\r\n sub.classList.add('show')\r\n\r\n // Append the sub the the root of the menu\r\n if (this._getItemOption(item, 'overflow') === true) {\r\n document.body.appendChild(sub)\r\n DataUtil.set(item, 'sub', sub)\r\n DataUtil.set(sub, 'item', item)\r\n DataUtil.set(sub, 'menu', this)\r\n } else {\r\n DataUtil.set(sub, 'item', item)\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.shown')\r\n }\r\n\r\n // Init dropdown popper(new)\r\n private initDropdownPopper = (item: HTMLElement, sub: HTMLElement) => {\r\n // Setup popper instance\r\n let reference\r\n const attach = this._getItemOption(item, 'attach') as string\r\n\r\n if (attach) {\r\n if (attach === 'parent') {\r\n reference = item.parentNode\r\n } else {\r\n reference = document.querySelector(attach)\r\n }\r\n } else {\r\n reference = item\r\n }\r\n\r\n if (reference) {\r\n const popper = createPopper(\r\n reference as Element | VirtualElement,\r\n sub,\r\n this._getDropdownPopperConfig(item)\r\n )\r\n DataUtil.set(item, 'popper', popper)\r\n }\r\n }\r\n\r\n // Hide item dropdown\r\n private _hideDropdown = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hide') === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n ElementStyleUtil.set(sub, 'z-index', '')\r\n ElementStyleUtil.set(sub, 'width', '')\r\n ElementStyleUtil.set(sub, 'height', '')\r\n item.classList.remove('show')\r\n item.classList.remove('menu-dropdown')\r\n sub.classList.remove('show')\r\n\r\n // Append the sub back to it's parent\r\n if (this._getItemOption(item, 'overflow') === true) {\r\n if (item.classList.contains('menu-item')) {\r\n item.appendChild(sub)\r\n } else {\r\n insertAfterElement(this.element, item)\r\n }\r\n\r\n DataUtil.remove(item, 'sub')\r\n DataUtil.remove(sub, 'item')\r\n DataUtil.remove(sub, 'menu')\r\n }\r\n\r\n if (DataUtil.has(item, 'popper') === true) {\r\n DataUtil.get(item, 'popper').destroy()\r\n DataUtil.remove(item, 'popper')\r\n }\r\n\r\n // Destroy popper(new)\r\n this.destroyDropdownPopper(item)\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\r\n }\r\n\r\n // Destroy dropdown popper(new)\r\n private destroyDropdownPopper = (item: HTMLElement) => {\r\n if (DataUtil.has(item, 'popper') === true) {\r\n DataUtil.get(item, 'popper').destroy()\r\n DataUtil.remove(item, 'popper')\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\r\n }\r\n\r\n private _showAccordion = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.show') === false) {\r\n return\r\n }\r\n\r\n if (this.options.accordion.expand === false) {\r\n this._hideAccordions(item)\r\n }\r\n\r\n if (DataUtil.has(item, 'popper') === true) {\r\n this._hideDropdown(item)\r\n }\r\n\r\n item.classList.add('hover') // updateWW\r\n item.classList.add('showing')\r\n\r\n const subElement = this._getItemSubElement(item)\r\n if (subElement) {\r\n const sub = subElement as HTMLElement\r\n slideDown(sub, this.options.accordion.slideSpeed, () => {\r\n item.classList.remove('showing')\r\n item.classList.add('show')\r\n sub.classList.add('show')\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.shown')\r\n })\r\n }\r\n }\r\n\r\n private _hideAccordion = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hide') === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n item.classList.add('hiding')\r\n\r\n if (sub) {\r\n slideUp(sub, this.options.accordion.slideSpeed, () => {\r\n item.classList.remove('hiding')\r\n item.classList.remove('show')\r\n sub.classList.remove('show')\r\n item.classList.remove('hover') // update\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hidden')\r\n })\r\n }\r\n }\r\n\r\n // Hide all shown accordions of item\r\n private _hideAccordions = (item: HTMLElement) => {\r\n const itemsToHide = this.element.querySelectorAll('.show[data-kt-menu-trigger]')\r\n if (itemsToHide && itemsToHide.length > 0) {\r\n for (var i = 0, len = itemsToHide.length; i < len; i++) {\r\n const itemToHide = itemsToHide[i] as HTMLElement\r\n\r\n if (\r\n this._getItemSubType(itemToHide) === 'accordion' &&\r\n itemToHide !== item &&\r\n item.contains(itemToHide) === false &&\r\n itemToHide.contains(item) === false\r\n ) {\r\n this._hideAccordion(itemToHide)\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Event Handlers\r\n // Reset item state classes if item sub type changed\r\n private _reset = (item: HTMLElement) => {\r\n if (this._hasItemSub(item) === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n\r\n // Reset sub state if sub type is changed during the window resize\r\n if (DataUtil.has(item, 'type') && DataUtil.get(item, 'type') !== this._getItemSubType(item)) {\r\n // updated\r\n item.classList.remove('hover')\r\n item.classList.remove('show')\r\n item.classList.remove('show')\r\n if (sub && sub.removeClass) {\r\n sub.removeClass(sub, 'show')\r\n }\r\n } // updated\r\n }\r\n\r\n // TODO: not done\r\n private _destroy = () => {}\r\n\r\n // Update all item state classes if item sub type changed\r\n private _update = () => {\r\n const items = this.element.querySelectorAll('.menu-item[data-kt-menu-trigger]')\r\n items.forEach((el) => this._reset(el as HTMLElement))\r\n }\r\n\r\n // Hide item sub\r\n private _hide = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === false) {\r\n return\r\n }\r\n\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n this._hideDropdown(item)\r\n } else if (this._getItemSubType(item) === 'accordion') {\r\n this._hideAccordion(item)\r\n }\r\n }\r\n\r\n // Show item sub\r\n private _show = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === true) {\r\n return\r\n }\r\n\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n this._showDropdown(item) // // show current dropdown\r\n } else if (this._getItemSubType(item) === 'accordion') {\r\n this._showAccordion(item)\r\n }\r\n\r\n // Remember last submenu type\r\n\r\n DataUtil.set(item, 'type', this._getItemSubType(item)) // updated\r\n }\r\n\r\n // Toggle item sub\r\n private _toggle = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === true) {\r\n this._hide(item)\r\n } else {\r\n this._show(item)\r\n }\r\n }\r\n\r\n // Mouseout handle\r\n private _mouseout = (element: HTMLElement, e: MouseEvent) => {\r\n const item = this._getItemElement(element)\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'trigger') !== 'hover') {\r\n return\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n if (DataUtil.get(item, 'hover') === '1') {\r\n this._hide(item)\r\n }\r\n }, this.options.dropdown.hoverTimeout)\r\n\r\n DataUtil.set(item, 'hover', '1')\r\n DataUtil.set(item, 'timeout', timeout)\r\n }\r\n\r\n // Mouseover handle\r\n private _mouseover = (element: HTMLElement, e: MouseEvent) => {\r\n const item = this._getItemElement(element)\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'trigger') !== 'hover') {\r\n return\r\n }\r\n\r\n if (DataUtil.get(item, 'hover') === '1') {\r\n clearTimeout(DataUtil.get(item, 'timeout'))\r\n DataUtil.remove(item, 'hover')\r\n DataUtil.remove(item, 'timeout')\r\n }\r\n\r\n this._show(item)\r\n }\r\n\r\n // Dismiss handler\r\n private _dismiss = (element: HTMLElement, e: Event) => {\r\n const item = this._getItemElement(element)\r\n const items = this._getItemChildElements(item)\r\n //if ( item !== null && _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\r\n const itemSubType = this._getItemSubType(item)\r\n if (item !== null && itemSubType === 'dropdown') {\r\n this._hide(item) // hide items dropdown\r\n\r\n // Hide all child elements as well\r\n if (items.length > 0) {\r\n for (let i = 0, len = items.length; i < len; i++) {\r\n //if ( _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\r\n if (items[i] !== null && this._getItemSubType(items[i] as HTMLElement) === 'dropdown') {\r\n this._hide(items[i] as HTMLElement)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Link handler\r\n private _link = (element: HTMLElement, e: Event) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.link.click') === false) {\r\n return\r\n }\r\n\r\n // Dismiss all shown dropdowns\r\n MenuComponent.hideDropdowns(undefined)\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.link.clicked')\r\n }\r\n\r\n private _click = (element: HTMLElement, e: Event) => {\r\n e.preventDefault()\r\n const item = this._getItemElement(element)\r\n if (this._getItemOption(item, 'trigger') !== 'click') {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'toggle') === false) {\r\n this._show(item)\r\n } else {\r\n this._toggle(item)\r\n }\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public click = (element: HTMLElement, e: Event) => {\r\n return this._click(element, e)\r\n }\r\n\r\n public link = (element: HTMLElement, e: Event) => {\r\n return this._link(element, e)\r\n }\r\n\r\n public dismiss = (element: HTMLElement, e: Event) => {\r\n return this._dismiss(element, e)\r\n }\r\n\r\n public mouseover = (element: HTMLElement, e: Event) => {\r\n return this._mouseover(element, e as MouseEvent)\r\n }\r\n\r\n public mouseout = (element: HTMLElement, e: Event) => {\r\n return this._mouseout(element, e as MouseEvent)\r\n }\r\n\r\n // General Methods\r\n public getItemTriggerType = (item: HTMLElement) => {\r\n return this._getItemOption(item, 'trigger')\r\n }\r\n\r\n public getItemSubType = (element: HTMLElement) => {\r\n return this._getItemSubType(element)\r\n }\r\n\r\n public show = (item: HTMLElement) => {\r\n return this._show(item)\r\n }\r\n\r\n public hide = (item: HTMLElement) => {\r\n return this._hide(item)\r\n }\r\n\r\n public reset = (item: HTMLElement) => {\r\n return this._reset(item)\r\n }\r\n\r\n public update = () => {\r\n return this._update()\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n public getItemLinkElement = (item: HTMLElement) => {\r\n return this._getItemLinkElement(item)\r\n }\r\n\r\n public getItemToggleElement = (item: HTMLElement) => {\r\n return this._getItemToggleElement(item)\r\n }\r\n\r\n public getItemSubElement = (item: HTMLElement) => {\r\n return this._getItemSubElement(item)\r\n }\r\n\r\n public getItemParentElements = (item: HTMLElement) => {\r\n return this._getItemParentElements(item)\r\n }\r\n\r\n public isItemSubShown = (item: HTMLElement) => {\r\n return this._isItemSubShown(item)\r\n }\r\n\r\n public isItemParentShown = (item: HTMLElement) => {\r\n return this._isItemParentShown(item)\r\n }\r\n\r\n public getTriggerElement = () => {\r\n return this.triggerElement\r\n }\r\n\r\n public isItemDropdownPermanent = (item: HTMLElement) => {\r\n return this._isItemDropdownPermanent(item)\r\n }\r\n\r\n // Accordion Mode Methods\r\n public hideAccordions = (item: HTMLElement) => {\r\n return this._hideAccordions(item)\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: any) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: any) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n // public static methods\r\n // Get KTMenu instance by element\r\n public static getInstance = (element: HTMLElement) => {\r\n // Element has menu DOM reference in it's DATA storage\r\n const elementMenu = DataUtil.get(element, 'menu')\r\n if (elementMenu) {\r\n return elementMenu\r\n }\r\n\r\n // Element has .menu parent\r\n const menu = element.closest('.menu')\r\n if (menu) {\r\n const menuData = DataUtil.get(menu as HTMLElement, 'menu')\r\n if (menuData) {\r\n return menuData\r\n }\r\n }\r\n\r\n // Element has a parent with DOM reference to .menu in it's DATA storage\r\n if (element.classList.contains('menu-link')) {\r\n const sub = element.closest('.menu-sub')\r\n if (sub) {\r\n const subMenu = DataUtil.get(sub as HTMLElement, 'menu')\r\n if (subMenu) {\r\n return subMenu\r\n }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n // Hide all dropdowns and skip one if provided\r\n public static hideDropdowns = (skip: HTMLElement | undefined) => {\r\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n\r\n if (items && items.length > 0) {\r\n for (let i = 0, len = items.length; i < len; i++) {\r\n const item = items[i]\r\n const menu = MenuComponent.getInstance(item as HTMLElement)\r\n\r\n if (menu && menu.getItemSubType(item) === 'dropdown') {\r\n if (skip) {\r\n if (\r\n menu.getItemSubElement(item).contains(skip) === false &&\r\n item.contains(skip) === false &&\r\n item !== skip\r\n ) {\r\n menu.hide(item)\r\n }\r\n } else {\r\n menu.hide(item)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public static updateDropdowns = () => {\r\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i]\r\n\r\n if (DataUtil.has(item as HTMLElement, 'popper')) {\r\n DataUtil.get(item as HTMLElement, 'popper').forceUpdate()\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Global handlers\r\n public static createInstances = (selector: string) => {\r\n // Initialize menus\r\n document.querySelectorAll(selector).forEach((el) => {\r\n const menuItem = el as HTMLElement\r\n let menuInstance = MenuComponent.getInstance(menuItem)\r\n if (!menuInstance) {\r\n menuInstance = new MenuComponent(el as HTMLElement, defaultMenuOptions)\r\n }\r\n })\r\n }\r\n\r\n public static initGlobalHandlers = () => {\r\n // Dropdown handler\r\n document.addEventListener('click', (e) => {\r\n const menuItems = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n if (menuItems && menuItems.length > 0) {\r\n for (let i = 0; i < menuItems.length; i++) {\r\n const item = menuItems[i] as HTMLElement\r\n const menuObj = MenuComponent.getInstance(item) as MenuComponent\r\n if (menuObj && menuObj.getItemSubType(item) === 'dropdown') {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const menu = menuObj.getElement()\r\n const sub = menuObj.getItemSubElement(item) as HTMLElement\r\n if (item === e.target || item.contains(e.target as HTMLElement)) {\r\n continue\r\n }\r\n\r\n if (sub && (sub === e.target || sub.contains(e.target as HTMLElement))) {\r\n continue\r\n }\r\n menuObj.hide(item)\r\n }\r\n }\r\n }\r\n })\r\n\r\n // Sub toggle handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger=\"auto\"])',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu) {\r\n return menu.click(this, e)\r\n }\r\n }\r\n )\r\n\r\n // // Link handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '.menu-item:not([data-kt-menu-trigger]) > .menu-link',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n e.stopPropagation()\r\n const menu = MenuComponent.getInstance(this)\r\n if (menu && menu.link) {\r\n return menu.link(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Dismiss handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-dismiss=\"true\"]',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu) {\r\n return menu.dismiss(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Mouseover handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-trigger], .menu-sub',\r\n 'mouseover',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu && menu.getItemSubType(this) === 'dropdown') {\r\n return menu.mouseover(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Mouseout handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-trigger], .menu-sub',\r\n 'mouseout',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu && menu.getItemSubType(this) === 'dropdown') {\r\n return menu.mouseout(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Resize handler\r\n window.addEventListener('resize', () => {\r\n let timer\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Drawer instances on window resize\r\n const elements = document.querySelectorAll('[data-kt-menu=\"true\"]')\r\n elements.forEach((el) => {\r\n const menu = MenuComponent.getInstance(el as HTMLElement)\r\n if (menu) {\r\n menu.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n\r\n public static bootstrap = () => {\r\n MenuComponent.initGlobalHandlers()\r\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\r\n }\r\n\r\n public static reinitialization = () => {\r\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: MenuOptions = defaultMenuOptions\r\n ): MenuComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let menu = MenuComponent.getInstance(item)\r\n if (!menu) {\r\n menu = new MenuComponent(item, options)\r\n }\r\n return menu\r\n }\r\n}\r\n\r\nexport {MenuComponent, defaultMenuOptions}\r\n","import {\r\n EventHandlerUtil,\r\n getUniqueIdWithPrefix,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getAttributeValueByBreakpoint,\r\n throttle,\r\n getCSS,\r\n DOMEventHandlerUtil,\r\n ElementStyleUtil,\r\n} from '../_utils/index'\r\n\r\nexport class DrawerStore {\r\n static store: Map = new Map()\r\n\r\n public static set(instanceId: string, drawerComponentObj: DrawerComponent): void {\r\n if (DrawerStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n DrawerStore.store.set(instanceId, drawerComponentObj);\r\n }\r\n\r\n public static get(instanceId: string): DrawerComponent | undefined {\r\n if (!DrawerStore.has(instanceId)) {\r\n return\r\n }\r\n return DrawerStore.store.get(instanceId);\r\n }\r\n\r\n public static remove(instanceId: string): void {\r\n if (!DrawerStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n DrawerStore.store.delete(instanceId)\r\n }\r\n\r\n public static has(instanceId: string): boolean {\r\n return DrawerStore.store.has(instanceId);\r\n }\r\n\r\n public static getAllInstances() {\r\n return DrawerStore.store;\r\n }\r\n}\r\n\r\nexport interface DrawerOptions {\r\n overlay: boolean\r\n baseClass: string\r\n overlayClass: string\r\n direction: string\r\n}\r\n\r\nconst defaultDrawerOptions: DrawerOptions = {\r\n overlay: true,\r\n baseClass: 'drawer',\r\n overlayClass: 'drawer-overlay',\r\n direction: 'end',\r\n}\r\n\r\nclass DrawerComponent {\r\n element: HTMLElement\r\n overlayElement: HTMLElement | null = null\r\n toggleElement: HTMLElement | null = null\r\n options: DrawerOptions\r\n instanceUid: string\r\n name: string = ''\r\n shown: boolean = false\r\n lastWidth: number = 0\r\n closeElement: HTMLElement | null = null\r\n\r\n constructor(_element: HTMLElement, options: DrawerOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultDrawerOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('drawer')\r\n this.overlayElement = null\r\n this.name = this.element.getAttribute('data-kt-drawer-name') || ''\r\n this.shown = false\r\n this.toggleElement = null\r\n // Event Handlers\r\n this._handlers()\r\n // Update Instance\r\n this._update()\r\n // Bind Instance\r\n DrawerStore.set(this.element.id, this)\r\n }\r\n\r\n private _handlers = () => {\r\n const togglers = this._getOption('toggle') as string\r\n const closers = this._getOption('close') as string\r\n\r\n if (togglers !== null && togglers.length > 0) {\r\n DOMEventHandlerUtil.on(document.body, togglers, 'click', (e: Event) => {\r\n e.preventDefault()\r\n this.toggleElement = document.getElementById(togglers)\r\n this._toggle()\r\n })\r\n }\r\n\r\n if (closers !== null && closers.length > 0) {\r\n DOMEventHandlerUtil.on(document.body, closers, 'click', (e: Event) => {\r\n e.preventDefault()\r\n this.closeElement = document.getElementById(closers)\r\n\r\n this._hide()\r\n })\r\n }\r\n }\r\n\r\n private _update = () => {\r\n const width = String(this._getOption('width'))\r\n const direction = String(this._getOption('direction'))\r\n\r\n // Reset state\r\n const hasBaseClass = this.element.classList.contains(`${this.options.baseClass}-on`)\r\n const bodyCanvasAttr = String(document.body.getAttribute(`data-kt-drawer-${this.name}-`))\r\n\r\n if (hasBaseClass === true && bodyCanvasAttr === 'on') {\r\n this.shown = true\r\n } else {\r\n this.shown = false\r\n }\r\n\r\n // Activate/deactivate\r\n if (this._getOption('activate') === true) {\r\n this.element.classList.add(this.options.baseClass)\r\n this.element.classList.add(`${this.options.baseClass}-${direction}`)\r\n ElementStyleUtil.set(this.element, 'width', width, true)\r\n\r\n this.lastWidth = parseInt(width)\r\n } else {\r\n ElementStyleUtil.set(this.element, 'width', '')\r\n this.element.classList.remove(this.options.baseClass)\r\n this.element.classList.remove(`${this.options.baseClass}-${direction}`)\r\n this._hide()\r\n }\r\n }\r\n\r\n private _getOption = (name: string) => {\r\n const attr = this.element.getAttribute(`data-kt-drawer-${name}`)\r\n if (attr) {\r\n let value = getAttributeValueByBreakpoint(attr)\r\n if (value !== null && String(value) === 'true') {\r\n return true\r\n } else {\r\n if (value !== null && String(value) === 'false') {\r\n return false\r\n }\r\n }\r\n\r\n return value\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n private _toggle = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.toggle') === false) {\r\n return\r\n }\r\n\r\n if (this.shown) {\r\n this._hide()\r\n } else {\r\n this._show()\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.drawer.toggled')\r\n }\r\n\r\n private _hide = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.hide') === false) {\r\n return\r\n }\r\n\r\n this.shown = false\r\n this._deleteOverlay()\r\n document.body.removeAttribute(`data-kt-drawer-${this.name}`)\r\n document.body.removeAttribute(`data-kt-drawer`)\r\n this.element.classList.remove(`${this.options.baseClass}-on`)\r\n if (this.toggleElement != null) {\r\n this.toggleElement.classList.remove('active')\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.drawer.after.hidden')\r\n }\r\n\r\n private _show = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.show') === false) {\r\n return\r\n }\r\n\r\n this.shown = true\r\n this._createOverlay()\r\n document.body.setAttribute(`data-kt-drawer-${this.name}`, 'on')\r\n document.body.setAttribute('data-kt-drawer', 'on')\r\n this.element.classList.add(`${this.options.baseClass}-on`)\r\n if (this.toggleElement !== null) {\r\n this.toggleElement.classList.add('active')\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.drawer.shown')\r\n }\r\n\r\n private _createOverlay = () => {\r\n if (this._getOption('overlay') === true) {\r\n this.overlayElement = document.createElement('DIV')\r\n const elementZIndex = getCSS(this.element, 'z-index')\r\n if (elementZIndex) {\r\n const overlayZindex = parseInt(elementZIndex) - 1\r\n ElementStyleUtil.set(this.overlayElement, 'z-index', overlayZindex) // update\r\n }\r\n document.body.append(this.overlayElement)\r\n const overlayClassOption = this._getOption('overlay-class')\r\n if (overlayClassOption) {\r\n this.overlayElement.classList.add(overlayClassOption.toString())\r\n }\r\n this.overlayElement.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n this._hide()\r\n })\r\n }\r\n }\r\n\r\n private _deleteOverlay = () => {\r\n if (this.overlayElement !== null && this.overlayElement.parentNode) {\r\n this.overlayElement.parentNode.removeChild(this.overlayElement)\r\n }\r\n }\r\n\r\n private _getDirection = () => {\r\n return String(this._getOption('direction')) === 'left' ? 'left' : 'right'\r\n }\r\n\r\n private _getWidth = () => {\r\n let width = this._getOption('width')\r\n if (width && width === 'auto') {\r\n width = getCSS(this.element, 'width')\r\n }\r\n\r\n return width\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public toggle = () => {\r\n this._toggle()\r\n }\r\n\r\n public show = () => {\r\n this._show()\r\n }\r\n\r\n public hide = () => {\r\n this._hide()\r\n }\r\n\r\n public isShown = () => {\r\n return this.shown\r\n }\r\n\r\n public update = () => {\r\n this._update()\r\n }\r\n\r\n public goElement = () => {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static hasInstace = (elementId: string): boolean => {\r\n return DrawerStore.has(elementId)\r\n }\r\n\r\n public static getInstance = (elementId: string) => {\r\n return DrawerStore.get(elementId)\r\n }\r\n\r\n public static hideAll = () => {\r\n const oldInstances = DrawerStore.getAllInstances()\r\n oldInstances.forEach((dr) => {\r\n dr.hide()\r\n })\r\n }\r\n\r\n public static updateAll = () => {\r\n const oldInstances = DrawerStore.getAllInstances()\r\n oldInstances.forEach((dr) => {\r\n dr.update()\r\n })\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string): void {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element) => {\r\n const item = element as HTMLElement\r\n let drawer = DrawerComponent.getInstance(item.id)\r\n if (!drawer) {\r\n drawer = new DrawerComponent(item, defaultDrawerOptions)\r\n }\r\n drawer.element = item;\r\n drawer.hide()\r\n })\r\n }\r\n\r\n // Dismiss instances\r\n public static handleDismiss = () => {\r\n // External drawer toggle handler\r\n DOMEventHandlerUtil.on(document.body, '[data-kt-drawer-dismiss=\"true\"]', 'click', () => {\r\n /* @ts-ignore */\r\n const element = this.closest('[data-kt-drawer=\"true\"]')\r\n if (element) {\r\n const drawer = DrawerComponent.getInstance(element)\r\n if (drawer && drawer.isShown()) {\r\n drawer.hide()\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Global Initialization\r\n public static initGlobalHandlers(): void {\r\n // Window Resize Handling\r\n window.addEventListener('resize', function () {\r\n let timer: number | undefined\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Drawer instances on window resize\r\n const elements = document.body.querySelectorAll('[data-kt-drawer=\"true\"]')\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n const instance = DrawerComponent.getInstance(item.id)\r\n if (instance) {\r\n instance.element = item;\r\n instance.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n\r\n public static bootstrap = () => {\r\n DrawerComponent.createInstances('[data-kt-drawer=\"true\"]')\r\n DrawerComponent.initGlobalHandlers()\r\n DrawerComponent.handleDismiss()\r\n }\r\n\r\n public static reinitialization = () => {\r\n DrawerComponent.createInstances('[data-kt-drawer=\"true\"]')\r\n DrawerComponent.hideAll()\r\n DrawerComponent.updateAll()\r\n DrawerComponent.handleDismiss()\r\n }\r\n}\r\n\r\nexport {DrawerComponent, defaultDrawerOptions}\r\n","import {EventHandlerUtil, DataUtil, getUniqueIdWithPrefix, getCSS} from '../_utils/index'\r\n\r\nexport interface IImageInputOptions {}\r\n\r\nexport interface IImageInputQueries {\r\n componentName: string\r\n instanseQuery: string\r\n inputQuery: string\r\n wrapperQuery: string\r\n cancelQuery: string\r\n removeQuery: string\r\n hiddenQuery: string\r\n}\r\n\r\nconst defaultImageInputOptions = {}\r\n\r\nconst defaultImageInputQueires: IImageInputQueries = {\r\n componentName: 'image-input',\r\n instanseQuery: '[data-kt-image-input]',\r\n inputQuery: 'input[type=\"file\"]',\r\n wrapperQuery: '.image-input-wrapper',\r\n cancelQuery: '[data-kt-image-input-action=\"cancel\"]',\r\n removeQuery: '[data-kt-image-input-action=\"remove\"]',\r\n hiddenQuery: 'input[type=\"hidden\"]',\r\n}\r\n\r\nclass ImageInputComponent {\r\n element: HTMLElement\r\n inputElement: HTMLInputElement | null\r\n wrapperElement: HTMLElement | null\r\n cancelElement: HTMLElement | null\r\n removeElement: HTMLElement | null\r\n hiddenElement: HTMLInputElement | null\r\n src: string = ''\r\n options: IImageInputOptions\r\n queries: IImageInputQueries\r\n uid: string\r\n value: string = ''\r\n\r\n constructor(_element: HTMLElement, _options: IImageInputOptions, _queries: IImageInputQueries) {\r\n // Variables\r\n this.options = Object.assign(defaultImageInputOptions, _options)\r\n this.queries = _queries\r\n this.uid = getUniqueIdWithPrefix(this.queries.componentName)\r\n\r\n // Elements\r\n this.element = _element\r\n this.inputElement = this.element.querySelector(this.queries.inputQuery)\r\n this.wrapperElement = this.element.querySelector(this.queries.wrapperQuery)\r\n this.cancelElement = this.element.querySelector(this.queries.cancelQuery)\r\n this.removeElement = this.element.querySelector(this.queries.removeQuery)\r\n this.hiddenElement = this.element.querySelector(this.queries.hiddenQuery)\r\n if (this.wrapperElement) {\r\n this.src = getCSS(this.wrapperElement, 'backgroundImage')\r\n }\r\n\r\n // Event Handlers\r\n this.handlers()\r\n\r\n DataUtil.set(this.element, this.queries.componentName, this)\r\n }\r\n\r\n private handlers(): void {\r\n this.element.addEventListener('change', this._change)\r\n if (this.cancelElement) {\r\n this.cancelElement.addEventListener('click', this._cancel)\r\n }\r\n\r\n if (this.removeElement) {\r\n this.removeElement.addEventListener('click', this._cancel)\r\n }\r\n }\r\n\r\n // Event Handlers\r\n private _change = (e: Event) => {\r\n e.preventDefault()\r\n\r\n if (this.inputElement !== null && this.inputElement.files && this.inputElement.files[0]) {\r\n // Fire change event\r\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.change', e) === false) {\r\n return\r\n }\r\n\r\n const reader = new FileReader()\r\n\r\n reader.onload = (e: ProgressEvent) => {\r\n if (this.wrapperElement && e.target) {\r\n this.wrapperElement.style.setProperty('background-image', `url('${e.target.result}')`)\r\n }\r\n }\r\n\r\n reader.readAsDataURL(this.inputElement.files[0])\r\n this.element.classList.add('image-input-changed')\r\n this.element.classList.remove('image-input-empty')\r\n\r\n // Fire removed event\r\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.changed', e)\r\n }\r\n }\r\n\r\n private _cancel = (e: Event) => {\r\n e.preventDefault()\r\n\r\n // Fire cancel event\r\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.cancel', e) === false) {\r\n return\r\n }\r\n\r\n this.element.classList.remove('image-input-changed')\r\n this.element.classList.remove('image-input-empty')\r\n this.element.style.setProperty('background-image', this.src)\r\n if (this.inputElement) {\r\n this.inputElement.value = ''\r\n }\r\n\r\n if (this.hiddenElement !== null) {\r\n this.hiddenElement.value = '0'\r\n }\r\n\r\n // Fire canceled event\r\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.canceled', e)\r\n }\r\n\r\n private _remove = (e: Event) => {\r\n e.preventDefault()\r\n\r\n // Fire remove event\r\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.remove', e) === false) {\r\n return\r\n }\r\n\r\n this.element.classList.remove('image-input-changed')\r\n this.element.classList.add('image-input-empty')\r\n if (this.wrapperElement) {\r\n this.wrapperElement.style.setProperty('background-image', 'none')\r\n }\r\n\r\n if (this.inputElement) {\r\n this.inputElement.value = ''\r\n }\r\n\r\n if (this.hiddenElement !== null) {\r\n this.hiddenElement.value = '1'\r\n }\r\n\r\n // Fire removed event\r\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.removed', e)\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public getInputElement(): HTMLInputElement | null {\r\n return this.inputElement\r\n }\r\n\r\n public getElement(): HTMLElement {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (\r\n el: HTMLElement,\r\n componentName: string = defaultImageInputQueires.componentName\r\n ) => {\r\n const ImageInput = DataUtil.get(el, componentName)\r\n if (ImageInput) {\r\n return ImageInput\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultImageInputQueires.instanseQuery,\r\n options: IImageInputOptions = defaultImageInputOptions,\r\n queries: IImageInputQueries = defaultImageInputQueires\r\n ) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let ImageInput = ImageInputComponent.getInstance(item)\r\n if (!ImageInput) {\r\n ImageInput = new ImageInputComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultImageInputQueires.instanseQuery,\r\n options: IImageInputOptions = defaultImageInputOptions,\r\n queries: IImageInputQueries = defaultImageInputQueires\r\n ): ImageInputComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let ImageInput = ImageInputComponent.getInstance(item)\r\n if (!ImageInput) {\r\n ImageInput = new ImageInputComponent(item, options, queries)\r\n }\r\n return ImageInput\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultImageInputQueires.instanseQuery) => {\r\n ImageInputComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (selector: string = defaultImageInputQueires.instanseQuery) => {\r\n ImageInputComponent.createInstances(selector)\r\n }\r\n}\r\nexport {ImageInputComponent, defaultImageInputOptions, defaultImageInputQueires}\r\n","import {\r\n getElementIndex,\r\n getUniqueIdWithPrefix,\r\n ElementAnimateUtil,\r\n EventHandlerUtil,\r\n DataUtil,\r\n DOMEventHandlerUtil,\r\n ElementStyleUtil,\r\n} from '../_utils/index'\r\n\r\nexport interface IStepperOptions {\r\n startIndex: number\r\n animation: boolean\r\n animationSpeed: string\r\n animationNextClass: string\r\n animationPreviousClass: string\r\n}\r\n\r\nconst defaultStepperOptions: IStepperOptions = {\r\n startIndex: 1,\r\n animation: false,\r\n animationSpeed: '0.3s',\r\n animationNextClass: 'animate__animated animate__slideInRight animate__fast',\r\n animationPreviousClass: 'animate__animated animate__slideInLeft animate__fast',\r\n}\r\n\r\nclass StepperComponent {\r\n element: HTMLElement\r\n options: IStepperOptions\r\n instanceUid: string\r\n steps: NodeListOf\r\n btnNext: HTMLElement | null\r\n btnPrev: HTMLElement | null\r\n btnSubmit: HTMLElement | null\r\n totatStepsNumber: number = 0\r\n passedStepIndex: number = 0\r\n currentStepIndex: number = 1\r\n\r\n constructor(_element: HTMLElement, options: IStepperOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultStepperOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('stepper')\r\n\r\n // Elements\r\n this.steps = this.element.querySelectorAll('[data-kt-stepper-element=\"nav\"]')\r\n this.btnNext = this.element.querySelector('[data-kt-stepper-action=\"next\"]')\r\n this.btnPrev = this.element.querySelector('[data-kt-stepper-action=\"previous\"]')\r\n this.btnSubmit = this.element.querySelector('[data-kt-stepper-action=\"submit\"]')\r\n\r\n // Variables\r\n this.totatStepsNumber = this.steps?.length | 0\r\n this.passedStepIndex = 0\r\n this.currentStepIndex = 1\r\n\r\n // Set Current Step\r\n if (this.options.startIndex > 1) {\r\n this._goTo(this.options.startIndex)\r\n }\r\n\r\n // Event Handlers\r\n this.initHandlers()\r\n\r\n // Bind Instance\r\n DataUtil.set(this.element, 'stepper', this)\r\n }\r\n\r\n private _goTo = (index: number) => {\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.change')\r\n // Skip if this step is already shown\r\n if (index === this.currentStepIndex || index > this.totatStepsNumber || index < 0) {\r\n return\r\n }\r\n\r\n // Validate step number\r\n index = parseInt(index.toString())\r\n // Set current step\r\n this.passedStepIndex = this.currentStepIndex\r\n this.currentStepIndex = index\r\n\r\n // Refresh elements\r\n this.refreshUI()\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.changed')\r\n }\r\n\r\n private initHandlers = () => {\r\n this.btnNext?.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.next', e)\r\n })\r\n\r\n this.btnPrev?.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.previous', e)\r\n })\r\n\r\n DOMEventHandlerUtil.on(this.element, '[data-kt-stepper-action=\"step\"]', 'click', (e: Event) => {\r\n e.preventDefault()\r\n\r\n if (this.steps && this.steps.length > 0) {\r\n for (let i = 0; i < this.steps.length; i++) {\r\n if ((this.steps[i] as HTMLElement) === this.element) {\r\n let index = i + 1\r\n\r\n const stepDirection = this._getStepDirection(index)\r\n EventHandlerUtil.trigger(this.element, `stepper.${stepDirection}`, e)\r\n return\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n private _getStepDirection = (index: number) => {\r\n return index > this.currentStepIndex ? 'next' : 'previous'\r\n }\r\n\r\n private getStepContent = (index: number) => {\r\n const content = this.element.querySelectorAll('[data-kt-stepper-element=\"content\"]')\r\n if (!content) {\r\n return false\r\n }\r\n\r\n if (content[index - 1]) {\r\n return content[index - 1]\r\n }\r\n\r\n return false\r\n }\r\n\r\n private getLastStepIndex = () => {\r\n return this.totatStepsNumber\r\n }\r\n\r\n private getTotalStepsNumber = () => {\r\n return this.totatStepsNumber\r\n }\r\n\r\n private refreshUI = () => {\r\n let state = ''\r\n\r\n if (this.isLastStep()) {\r\n state = 'last'\r\n } else if (this.isFirstStep()) {\r\n state = 'first'\r\n } else {\r\n state = 'between'\r\n }\r\n\r\n // Set state class\r\n this.element.classList.remove('last')\r\n this.element.classList.remove('first')\r\n this.element.classList.remove('between')\r\n\r\n this.element.classList.add(state)\r\n\r\n // Step Items\r\n const elements = this.element.querySelectorAll(\r\n '[data-kt-stepper-element=\"nav\"], [data-kt-stepper-element=\"content\"], [data-kt-stepper-element=\"info\"]'\r\n )\r\n\r\n if (!elements || elements.length <= 0) {\r\n return\r\n }\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var element = elements[i] as HTMLElement\r\n var index = getElementIndex(element) + 1\r\n\r\n element.classList.remove('current')\r\n element.classList.remove('completed')\r\n element.classList.remove('pending')\r\n\r\n if (index === this.currentStepIndex) {\r\n element.classList.add('current')\r\n\r\n if (\r\n this.options.animation !== false &&\r\n element.getAttribute('data-kt-stepper-element') === 'content'\r\n ) {\r\n ElementStyleUtil.set(element, 'animationDuration', this.options.animationSpeed)\r\n\r\n const animation =\r\n this._getStepDirection(this.passedStepIndex) === 'previous'\r\n ? this.options.animationPreviousClass\r\n : this.options.animationNextClass\r\n ElementAnimateUtil.animateClass(element, animation)\r\n }\r\n } else {\r\n if (index < this.currentStepIndex) {\r\n element.classList.add('completed')\r\n } else {\r\n element.classList.add('pending')\r\n }\r\n }\r\n }\r\n }\r\n\r\n private isLastStep = () => {\r\n return this.currentStepIndex === this.totatStepsNumber\r\n }\r\n\r\n private isFirstStep = () => {\r\n return this.currentStepIndex === 1\r\n }\r\n\r\n private isBetweenStep = () => {\r\n return this.isLastStep() === false && this.isFirstStep() === false\r\n }\r\n\r\n // ///////////////////////\r\n // // ** Public API ** //\r\n // ///////////////////////\r\n\r\n // // Plugin API\r\n public goto = (index: number) => {\r\n return this._goTo(index)\r\n }\r\n\r\n public goNext = () => {\r\n return this.goto(this.getNextStepIndex())\r\n }\r\n\r\n public goPrev = () => {\r\n return this.goto(this.getPrevStepIndex())\r\n }\r\n\r\n public goFirst = () => {\r\n return this.goto(1)\r\n }\r\n\r\n public goLast = () => {\r\n return this.goto(this.getLastStepIndex())\r\n }\r\n\r\n public getCurrentStepIndex = () => {\r\n return this.currentStepIndex\r\n }\r\n\r\n public getNextStepIndex = () => {\r\n if (this.totatStepsNumber >= this.currentStepIndex + 1) {\r\n return this.currentStepIndex + 1\r\n } else {\r\n return this.totatStepsNumber\r\n }\r\n }\r\n\r\n public getPassedStepIndex = () => {\r\n return this.passedStepIndex\r\n }\r\n\r\n public getPrevStepIndex = () => {\r\n if (this.currentStepIndex - 1 > 1) {\r\n return this.currentStepIndex - 1\r\n } else {\r\n return 1\r\n }\r\n }\r\n\r\n public getElement = (index: number) => {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public destroy = () => {\r\n console.log('destroy stepper')\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static hasInstace(element: HTMLElement): boolean {\r\n return DataUtil.has(element, 'stepper')\r\n }\r\n\r\n public static getInstance(element: HTMLElement): StepperComponent | null {\r\n if (element !== null && StepperComponent.hasInstace(element)) {\r\n return DataUtil.get(element, 'stepper')\r\n }\r\n return null\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string): void {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element) => {\r\n const item = element as HTMLElement\r\n let stepper = StepperComponent.getInstance(item)\r\n if (!stepper) {\r\n stepper = new StepperComponent(item, defaultStepperOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n element: HTMLElement,\r\n options: IStepperOptions = defaultStepperOptions\r\n ): StepperComponent | null => {\r\n if (!element) {\r\n return null\r\n }\r\n let stepper = StepperComponent.getInstance(element)\r\n if (!stepper) {\r\n stepper = new StepperComponent(element, options)\r\n }\r\n return stepper\r\n }\r\n\r\n public static bootstrap(attr: string = '[data-kt-stepper]') {\r\n StepperComponent.createInstances(attr)\r\n }\r\n}\r\n\r\nexport {StepperComponent, defaultStepperOptions}\r\n","import {\r\n getElementOffset,\r\n getScrollTop,\r\n getAttributeValueByBreakpoint,\r\n getUniqueIdWithPrefix,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getCSS,\r\n DataUtil,\r\n ElementAnimateUtil,\r\n ElementStyleUtil,\r\n EventHandlerUtil,\r\n} from '../_utils/index'\r\n\r\nexport interface StickyOptions {\r\n offset: number\r\n reverse: boolean\r\n animation: boolean\r\n animationSpeed: string\r\n animationClass: string\r\n}\r\n\r\nconst defaultStickyOptions: StickyOptions = {\r\n offset: 200,\r\n reverse: false,\r\n animation: true,\r\n animationSpeed: '0.3s',\r\n animationClass: 'animation-slide-in-down',\r\n}\r\n\r\nclass StickyComponent {\r\n element: HTMLElement\r\n options: StickyOptions\r\n instanceUid: string\r\n instanceName: string | null = ''\r\n attributeName: string\r\n eventTriggerState: boolean\r\n lastScrollTop: number\r\n\r\n constructor(_element: HTMLElement, options: StickyOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultStickyOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('sticky')\r\n this.instanceName = this.element.getAttribute('data-kt-sticky-name')\r\n this.attributeName = 'data-kt-sticky-' + this.instanceName\r\n this.eventTriggerState = true\r\n this.lastScrollTop = 0\r\n\r\n // Event Handlers\r\n window.addEventListener('scroll', this.scroll)\r\n\r\n // Initial Launch\r\n this.scroll()\r\n\r\n DataUtil.set(this.element, 'sticky', this)\r\n }\r\n\r\n private scroll = () => {\r\n let offset = this.getOption('offset')\r\n let reverse = this.getOption('reverse')\r\n\r\n // Exit if false\r\n if (offset === false) {\r\n return\r\n }\r\n\r\n let offsetNum = 0\r\n if (typeof offset === 'string') {\r\n offsetNum = parseInt(offset)\r\n }\r\n\r\n const st = getScrollTop()\r\n\r\n // Reverse scroll mode\r\n if (reverse === true) {\r\n // Release on reverse scroll mode\r\n if (st > offsetNum && this.lastScrollTop < st) {\r\n if (document.body.hasAttribute(this.attributeName) === false) {\r\n this.enable()\r\n document.body.setAttribute(this.attributeName, 'on')\r\n }\r\n\r\n if (this.eventTriggerState === true) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.on')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n\r\n this.eventTriggerState = false\r\n }\r\n } else {\r\n // Back scroll mode\r\n if (document.body.hasAttribute(this.attributeName)) {\r\n this.disable()\r\n document.body.removeAttribute(this.attributeName)\r\n }\r\n\r\n if (this.eventTriggerState === false) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.off')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n\r\n this.eventTriggerState = true\r\n }\r\n }\r\n\r\n this.lastScrollTop = st\r\n return\r\n }\r\n\r\n // Classic scroll mode\r\n if (st > offsetNum) {\r\n if (document.body.hasAttribute(this.attributeName) === false) {\r\n this.enable()\r\n document.body.setAttribute(this.attributeName, 'on')\r\n }\r\n\r\n if (this.eventTriggerState === true) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.on')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n this.eventTriggerState = false\r\n }\r\n } else {\r\n // back scroll mode\r\n if (document.body.hasAttribute(this.attributeName) === true) {\r\n this.disable()\r\n document.body.removeAttribute(this.attributeName)\r\n }\r\n\r\n if (this.eventTriggerState === false) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.off')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n this.eventTriggerState = true\r\n }\r\n }\r\n }\r\n\r\n private getOption = (name: string) => {\r\n const dataStickyAttr = 'data-kt-sticky-' + name\r\n if (this.element.hasAttribute(dataStickyAttr) === true) {\r\n const attrValueInStr = this.element.getAttribute(dataStickyAttr)\r\n const attrValue = getAttributeValueByBreakpoint(attrValueInStr || '')\r\n if (attrValue !== null && String(attrValue) === 'true') {\r\n return true\r\n } else if (attrValue !== null && String(attrValue) === 'false') {\r\n return false\r\n }\r\n\r\n return attrValue\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n }\r\n }\r\n }\r\n\r\n private disable = () => {\r\n ElementStyleUtil.remove(this.element, 'top')\r\n ElementStyleUtil.remove(this.element, 'width')\r\n ElementStyleUtil.remove(this.element, 'left')\r\n ElementStyleUtil.remove(this.element, 'right')\r\n ElementStyleUtil.remove(this.element, 'z-index')\r\n ElementStyleUtil.remove(this.element, 'position')\r\n }\r\n\r\n private enable = (update: boolean = false) => {\r\n const top = this.getOption('top')\r\n const left = this.getOption('left')\r\n // const right = this.getOption(\"right\");\r\n let width = this.getOption('width')\r\n const zindex = this.getOption('zindex')\r\n\r\n if (update !== true && this.getOption('animation') === true) {\r\n ElementStyleUtil.set(this.element, 'animationDuration', this.getOption('animationSpeed'))\r\n ElementAnimateUtil.animateClass(this.element, 'animation ' + this.getOption('animationClass'))\r\n }\r\n\r\n if (zindex !== null) {\r\n ElementStyleUtil.set(this.element, 'z-index', zindex)\r\n ElementStyleUtil.set(this.element, 'position', 'fixed')\r\n }\r\n\r\n if (top !== null) {\r\n ElementStyleUtil.set(this.element, 'top', top)\r\n }\r\n\r\n if (width !== null && width !== undefined) {\r\n const widthTarget = getObjectPropertyValueByKey(width, 'target')\r\n if (widthTarget) {\r\n const targetElement = document.querySelector(widthTarget)\r\n if (targetElement) {\r\n width = getCSS(targetElement, 'width')\r\n }\r\n }\r\n ElementStyleUtil.set(this.element, 'width', width)\r\n }\r\n\r\n if (left !== null) {\r\n if (String(left).toLowerCase() === 'auto') {\r\n var offsetLeft = getElementOffset(this.element).left\r\n\r\n if (offsetLeft > 0) {\r\n ElementStyleUtil.set(this.element, 'left', String(offsetLeft) + 'px')\r\n }\r\n }\r\n }\r\n }\r\n\r\n public update = () => {\r\n if (document.body.hasAttribute(this.attributeName) === true) {\r\n this.disable()\r\n document.body.removeAttribute(this.attributeName)\r\n this.enable(true)\r\n document.body.setAttribute(this.attributeName, 'on')\r\n }\r\n }\r\n\r\n // Event API\r\n public on = (name: string, callBack: Function) => {\r\n return EventHandlerUtil.on(this.element, name, callBack)\r\n }\r\n\r\n public one = (name: string, callback: Function) => {\r\n return EventHandlerUtil.one(this.element, name, callback)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string) => {\r\n return EventHandlerUtil.trigger(this.element, name)\r\n }\r\n\r\n // Static methods\r\n public static hasInstace(element: HTMLElement) {\r\n return DataUtil.has(element, 'sticky')\r\n }\r\n\r\n public static getInstance(element: HTMLElement) {\r\n if (element !== null && StickyComponent.hasInstace(element)) {\r\n return DataUtil.get(element, 'sticky')\r\n }\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string) {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element) => {\r\n const item = element as HTMLElement\r\n let sticky = StickyComponent.getInstance(item)\r\n if (!sticky) {\r\n sticky = new StickyComponent(item, defaultStickyOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: StickyOptions = defaultStickyOptions\r\n ): StickyComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let sticky = StickyComponent.getInstance(item)\r\n if (!sticky) {\r\n sticky = new StickyComponent(item, options)\r\n }\r\n return sticky\r\n }\r\n\r\n public static bootstrap(attr: string = '[data-kt-sticky=\"true\"]') {\r\n StickyComponent.createInstances(attr)\r\n }\r\n\r\n public static reInitialization(attr: string = '[data-kt-sticky=\"true\"]') {\r\n StickyComponent.createInstances(attr)\r\n }\r\n}\r\n\r\nexport {StickyComponent, defaultStickyOptions}\r\n","/* eslint-disable array-callback-return */\r\n/* eslint-disable no-useless-escape */\r\nimport {DataUtil} from '../_utils/index'\r\n\r\nexport interface IPasswordMeterOptions {\r\n minLength: number\r\n checkUppercase: boolean\r\n checkLowercase: boolean\r\n checkDigit: boolean\r\n checkChar: boolean\r\n scoreHighlightClass: string\r\n}\r\n\r\nexport interface IPasswordMeterQueries {\r\n componentName: string\r\n instanseQuery: string\r\n inputQuery: string\r\n visibilityQuery: string\r\n highlightQuery: string\r\n}\r\n\r\nconst defaultPasswordMeterOptions = {\r\n minLength: 8,\r\n checkUppercase: true,\r\n checkLowercase: true,\r\n checkDigit: true,\r\n checkChar: true,\r\n scoreHighlightClass: 'active',\r\n}\r\n\r\nconst defaultPasswordMeterQueires: IPasswordMeterQueries = {\r\n componentName: 'password-meter',\r\n instanseQuery: '[data-kt-password-meter]',\r\n inputQuery: 'input[type]',\r\n visibilityQuery: '[data-kt-password-meter-control=\"visibility\"]',\r\n highlightQuery: '[data-kt-password-meter-control=\"highlight\"]',\r\n}\r\n\r\nclass PasswordMeterComponent {\r\n element: HTMLElement\r\n inputElement: HTMLInputElement | null\r\n visibilityElement: HTMLElement | null\r\n highlightElement: HTMLElement | null\r\n options: IPasswordMeterOptions\r\n queries: IPasswordMeterQueries\r\n score: number\r\n checkSteps: number\r\n\r\n constructor(\r\n _element: HTMLElement,\r\n _options: IPasswordMeterOptions,\r\n _queries: IPasswordMeterQueries\r\n ) {\r\n this.element = _element\r\n this.options = Object.assign(defaultPasswordMeterOptions, _options)\r\n this.queries = _queries\r\n this.score = 0\r\n this.checkSteps = 5\r\n\r\n // Elements\r\n this.inputElement = this.element.querySelector(this.queries.inputQuery)\r\n this.visibilityElement = this.element.querySelector(this.queries.visibilityQuery)\r\n this.highlightElement = this.element.querySelector(this.queries.highlightQuery)\r\n\r\n // Event Handlers\r\n this.handlers()\r\n\r\n DataUtil.set(this.element, this.queries.componentName, this)\r\n }\r\n\r\n private handlers(): void {\r\n if (this.inputElement) {\r\n this.inputElement.addEventListener('input', () => {\r\n this.check()\r\n })\r\n }\r\n\r\n if (this.visibilityElement) {\r\n this.visibilityElement.addEventListener('click', () => {\r\n this.visitbility()\r\n })\r\n }\r\n }\r\n\r\n private visitbility() {\r\n if (this.visibilityElement && this.inputElement) {\r\n const visibleIcon = this.visibilityElement.querySelector(\r\n 'i:not(.d-none), .svg-icon:not(.d-none)'\r\n )\r\n\r\n const hiddenIcon = this.visibilityElement.querySelector('i.d-none, .svg-icon.d-none')\r\n\r\n const typeAttr = this.inputElement.getAttribute('type') || ''\r\n\r\n if (typeAttr === 'password') {\r\n this.inputElement.setAttribute('type', 'text')\r\n } else {\r\n this.inputElement.setAttribute('type', 'password')\r\n }\r\n\r\n visibleIcon?.classList.add('d-none')\r\n hiddenIcon?.classList.remove('d-none')\r\n\r\n this.inputElement.focus()\r\n }\r\n }\r\n\r\n private checkScore(): number {\r\n return 0\r\n }\r\n\r\n private checkLength(): boolean {\r\n if (this.inputElement) {\r\n return this.inputElement.value.length >= this.options.minLength // 20 score\r\n }\r\n\r\n return false\r\n }\r\n\r\n private checkLowerCase(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[a-z]/.test(val) // 20 score\r\n }\r\n\r\n private checkUppercase(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[A-Z]/.test(val) // 20 score\r\n }\r\n\r\n private checkDigit(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[0-9]/.test(val) // 20 score\r\n }\r\n\r\n private checkChar(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g.test(val) // 20 score\r\n }\r\n\r\n private getCheckScore(): number {\r\n let count = 1\r\n if (this.options.checkUppercase) {\r\n count++\r\n }\r\n\r\n if (this.options.checkLowercase) {\r\n count++\r\n }\r\n\r\n if (this.options.checkDigit) {\r\n count++\r\n }\r\n\r\n if (this.options.checkChar) {\r\n count++\r\n }\r\n\r\n this.checkSteps = count\r\n return 100 / this.checkSteps\r\n }\r\n\r\n private highlight() {\r\n const items = this.highlightElement\r\n ? [].slice.call(this.highlightElement.querySelectorAll('div'))\r\n : []\r\n const total = items.length\r\n let index = 0\r\n const checkScore = this.getCheckScore()\r\n const score = this.getScore()\r\n\r\n items.map((item: HTMLElement) => {\r\n index++\r\n if (checkScore * index * (this.checkSteps / total) <= score) {\r\n item.classList.add('active')\r\n } else {\r\n item.classList.remove('active')\r\n }\r\n })\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public reset = () => {\r\n this.score = 0\r\n this.highlight()\r\n }\r\n\r\n public getScore() {\r\n return this.score\r\n }\r\n\r\n public check() {\r\n let score = 0\r\n const checkScore = this.checkScore()\r\n if (this.checkLength()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkUppercase && this.checkLowerCase()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkLowercase && this.checkUppercase()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkDigit && this.checkDigit()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkChar && this.checkChar()) {\r\n score = score + checkScore\r\n }\r\n\r\n this.score = score\r\n this.highlight()\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (\r\n el: HTMLElement,\r\n componentName: string = defaultPasswordMeterQueires.componentName\r\n ) => {\r\n const passwordMeter = DataUtil.get(el, componentName)\r\n if (passwordMeter) {\r\n return passwordMeter\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultPasswordMeterQueires.instanseQuery,\r\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\r\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\r\n ) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let passwordMeter = PasswordMeterComponent.getInstance(item)\r\n if (!passwordMeter) {\r\n passwordMeter = new PasswordMeterComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultPasswordMeterQueires.instanseQuery,\r\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\r\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\r\n ): PasswordMeterComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let passwordMeter = PasswordMeterComponent.getInstance(item)\r\n if (!passwordMeter) {\r\n passwordMeter = new PasswordMeterComponent(item, options, queries)\r\n }\r\n return passwordMeter\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultPasswordMeterQueires.instanseQuery) => {\r\n PasswordMeterComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (\r\n selector: string = defaultPasswordMeterQueires.instanseQuery\r\n ) => {\r\n PasswordMeterComponent.createInstances(selector)\r\n }\r\n}\r\nexport {PasswordMeterComponent, defaultPasswordMeterOptions, defaultPasswordMeterQueires}\r\n","import {\r\n getAttributeValueByBreakpoint,\r\n stringSnakeToCamel,\r\n getObjectPropertyValueByKey,\r\n EventHandlerUtil,\r\n throttle,\r\n} from '../_utils/index'\r\n\r\nexport class SwapperStore {\r\n static store: Map = new Map()\r\n\r\n public static set(instanceId: string, drawerComponentObj: SwapperComponent): void {\r\n if (SwapperStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n SwapperStore.store.set(instanceId, drawerComponentObj);\r\n }\r\n\r\n public static get(instanceId: string): SwapperComponent | undefined {\r\n if (!SwapperStore.has(instanceId)) {\r\n return\r\n }\r\n return SwapperStore.store.get(instanceId);\r\n }\r\n\r\n public static remove(instanceId: string): void {\r\n if (!SwapperStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n SwapperStore.store.delete(instanceId)\r\n }\r\n\r\n public static has(instanceId: string): boolean {\r\n return SwapperStore.store.has(instanceId);\r\n }\r\n\r\n public static getAllInstances() {\r\n return SwapperStore.store;\r\n }\r\n}\r\n\r\nexport interface ISwapperOptions {\r\n mode: string\r\n}\r\n\r\nexport interface ISwapperQueries {\r\n componentName: string\r\n instanseQuery: string\r\n attrQuery: string\r\n}\r\n\r\nconst defaultSwapperOptions: ISwapperOptions = {\r\n mode: 'append',\r\n}\r\n\r\nconst defaultSwapperQueires: ISwapperQueries = {\r\n componentName: 'swapper',\r\n instanseQuery: '[data-kt-swapper=\"true\"]',\r\n attrQuery: 'data-kt-swapper-',\r\n}\r\n\r\nclass SwapperComponent {\r\n element: HTMLElement\r\n options: ISwapperOptions\r\n queries: ISwapperQueries\r\n\r\n constructor(_element: HTMLElement, _options: ISwapperOptions, _queries: ISwapperQueries) {\r\n this.element = _element\r\n this.options = Object.assign(defaultSwapperOptions, _options)\r\n this.queries = _queries\r\n\r\n // Initial update\r\n this.update()\r\n\r\n SwapperStore.set(this.element.id, this)\r\n }\r\n\r\n private getOption(name: string) {\r\n const attr = this.element.getAttribute(`${this.queries.attrQuery}${name}`)\r\n if (attr) {\r\n let value = getAttributeValueByBreakpoint(attr)\r\n if (attr != null && String(value) === 'true') {\r\n return true\r\n } else if (value !== null && String(value) === 'false') {\r\n return false\r\n }\r\n return value\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public update = () => {\r\n const parentSelector = this.getOption('parent')?.toString()\r\n const mode = this.getOption('mode')\r\n const parentElement = parentSelector ? document.querySelector(parentSelector) : null\r\n\r\n if (parentElement && this.element.parentNode !== parentElement) {\r\n if (mode === 'prepend') {\r\n parentElement.prepend(this.element)\r\n } else if (mode === 'append') {\r\n parentElement.append(this.element)\r\n }\r\n }\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (\r\n el: HTMLElement,\r\n componentName: string = defaultSwapperQueires.componentName\r\n ): SwapperComponent | null => {\r\n const place = SwapperStore.get(el.id)\r\n if (place) {\r\n return place as SwapperComponent\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultSwapperQueires.instanseQuery,\r\n options: ISwapperOptions = defaultSwapperOptions,\r\n queries: ISwapperQueries = defaultSwapperQueires\r\n ) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let place = SwapperComponent.getInstance(item)\r\n if (!place) {\r\n place = new SwapperComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultSwapperQueires.instanseQuery,\r\n options: ISwapperOptions = defaultSwapperOptions,\r\n queries: ISwapperQueries = defaultSwapperQueires\r\n ): SwapperComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let place = SwapperComponent.getInstance(item)\r\n if (!place) {\r\n place = new SwapperComponent(item, options, queries)\r\n }\r\n return place\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultSwapperQueires.instanseQuery) => {\r\n SwapperComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (selector: string = defaultSwapperQueires.instanseQuery) => {\r\n SwapperComponent.createInstances(selector)\r\n }\r\n}\r\n\r\n// Window resize handler\r\nwindow.addEventListener('resize', function () {\r\n let timer\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Offcanvas instances on window resize\r\n const elements = document.querySelectorAll(defaultSwapperQueires.instanseQuery)\r\n elements.forEach((el) => {\r\n const place = SwapperComponent.getInstance(el as HTMLElement)\r\n if (place) {\r\n place.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n})\r\n\r\nexport {SwapperComponent, defaultSwapperOptions, defaultSwapperQueires}\r\n","import {\r\n EventHandlerUtil,\r\n DataUtil,\r\n getBreakpoint,\r\n getAttributeValueByBreakpoint,\r\n stringSnakeToCamel,\r\n getObjectPropertyValueByKey,\r\n getViewPort,\r\n isVisibleElement,\r\n throttle,\r\n} from '../_utils/index'\r\n\r\nimport {MenuComponent, defaultMenuOptions} from './MenuComponent'\r\n\r\nexport interface ISearchOptions {\r\n minLength: number // Miniam text lenght to query search\r\n keypress: boolean // Enable search on keypress\r\n enter: boolean // Enable search on enter key press\r\n layout: 'menu' | 'inline' // Use 'menu' or 'inline' layout options to display search results\r\n responsive?: number // Pass integer value or bootstrap compatible breakpoint key(sm,md,lg,xl,xxl) to enable reponsive form mode for device width below the breakpoint value\r\n showOnFocus: boolean // Always show menu on input focus\r\n}\r\n\r\nexport interface ISearchQueries {\r\n componentName: string\r\n instanseQuery: string\r\n attrQuery: string\r\n}\r\n\r\nconst defaultSearchOptions: ISearchOptions = {\r\n minLength: 2, // Miniam text lenght to query search\r\n keypress: true, // Enable search on keypress\r\n enter: true, // Enable search on enter key press\r\n layout: 'menu', // Use 'menu' or 'inline' layout options to display search results\r\n showOnFocus: true, // Always show menu on input focus\r\n}\r\n\r\nconst defaultSearchQueires: ISearchQueries = {\r\n componentName: 'search',\r\n instanseQuery: '[data-kt-search]',\r\n attrQuery: 'data-kt-search-',\r\n}\r\n\r\nclass SearchComponent {\r\n element: HTMLElement\r\n contentElement: HTMLElement\r\n formElement: HTMLFormElement\r\n inputElement: HTMLInputElement\r\n spinnerElement: HTMLElement\r\n clearElement: HTMLElement\r\n toggleElement: HTMLElement\r\n submitElement: HTMLElement\r\n toolbarElement: HTMLElement\r\n resultsElement: HTMLElement\r\n suggestionElement: HTMLElement\r\n emptyElement: HTMLElement\r\n layout: any\r\n\r\n options: ISearchOptions\r\n queries: ISearchQueries\r\n\r\n processing: boolean = false\r\n menuObject: MenuComponent | undefined\r\n\r\n constructor(_element: HTMLElement, _options: ISearchOptions, _queries: ISearchQueries) {\r\n // Variables\r\n this.options = Object.assign(defaultSearchOptions, _options)\r\n this.queries = _queries\r\n\r\n // Elements\r\n this.element = _element\r\n this.contentElement = this._getElement('content') as HTMLElement\r\n this.formElement = this._getElement('form') as HTMLFormElement\r\n this.inputElement = this._getElement('input') as HTMLInputElement\r\n this.spinnerElement = this._getElement('spinner') as HTMLElement\r\n this.clearElement = this._getElement('clear') as HTMLElement\r\n this.toggleElement = this._getElement('toggle') as HTMLElement\r\n this.submitElement = this._getElement('submit') as HTMLElement\r\n this.toolbarElement = this._getElement('toolbar') as HTMLElement\r\n\r\n this.resultsElement = this._getElement('results') as HTMLElement\r\n this.suggestionElement = this._getElement('suggestion') as HTMLElement\r\n this.emptyElement = this._getElement('empty') as HTMLElement\r\n\r\n // Layout\r\n this.layout = this.getOption('layout')\r\n if (this.layout === 'menu') {\r\n this.menuObject = new MenuComponent(this.contentElement, defaultMenuOptions)\r\n }\r\n\r\n // Update\r\n this.update()\r\n\r\n // Event Handlers\r\n this.handlers()\r\n\r\n DataUtil.set(this.element, this.queries.componentName, this)\r\n }\r\n\r\n private _getElement = (name: string) => {\r\n return this.element.querySelector('[data-kt-search-element=\"' + name + '\"]')\r\n }\r\n\r\n // Get option\r\n private getOption = (name: string) => {\r\n const attr = this.element.getAttribute(`${this.queries.attrQuery}${name}`)\r\n if (attr) {\r\n let value = getAttributeValueByBreakpoint(attr)\r\n\r\n if (value !== null && String(value) === 'true') {\r\n return true\r\n } else if (value !== null && String(value) === 'false') {\r\n return false\r\n }\r\n\r\n return value\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n // Check if responsive form mode is enabled\r\n private getResponsiveFormMode = () => {\r\n const responsive = this.getOption('responsive') as string\r\n const width = getViewPort().width\r\n\r\n if (!responsive) {\r\n return null\r\n }\r\n\r\n const breakpoint = getBreakpoint(responsive)\r\n let breakPointNum = -1\r\n if (!breakpoint) {\r\n breakPointNum = parseInt(responsive)\r\n } else {\r\n breakPointNum = +breakpoint\r\n }\r\n\r\n if (width < breakPointNum) {\r\n return 'on'\r\n } else {\r\n return 'off'\r\n }\r\n }\r\n\r\n // Focus\r\n private focus = () => {\r\n this.element.classList.add('focus')\r\n\r\n if (\r\n this.getOption('show-on-focus') === true ||\r\n this.inputElement.value.length >= this.options.minLength\r\n ) {\r\n this.show()\r\n }\r\n }\r\n\r\n // Blur\r\n private blur = () => {\r\n this.element.classList.remove('focus')\r\n }\r\n\r\n // Enter\r\n private enter = (e: KeyboardEvent) => {\r\n const key = e.charCode || e.keyCode || 0\r\n\r\n if (key === 13) {\r\n e.preventDefault()\r\n\r\n this.search()\r\n }\r\n }\r\n\r\n // Input\r\n private input = () => {\r\n if (this.getOption('min-length')) {\r\n const minLength = parseInt(this.getOption('min-length') as string)\r\n\r\n if (this.inputElement.value.length >= minLength) {\r\n this.search()\r\n } else if (this.inputElement.value.length === 0) {\r\n this.clear()\r\n }\r\n }\r\n }\r\n\r\n private handlers(): void {\r\n // Focus\r\n this.inputElement.addEventListener('focus', this.focus)\r\n\r\n // Blur\r\n this.inputElement.addEventListener('blur', this.blur)\r\n\r\n // Keypress\r\n if (this.getOption('keypress') === true) {\r\n this.inputElement.addEventListener('input', this.input)\r\n }\r\n\r\n // Submit\r\n if (this.submitElement) {\r\n this.submitElement.addEventListener('click', this.search)\r\n }\r\n\r\n // Enter\r\n if (this.getOption('enter') === true) {\r\n this.inputElement.addEventListener('keypress', this.enter)\r\n }\r\n\r\n // Clear\r\n if (this.clearElement) {\r\n this.clearElement.addEventListener('click', this.clear)\r\n }\r\n\r\n // Menu\r\n if (this.menuObject) {\r\n // Toggle menu\r\n if (this.toggleElement) {\r\n this.toggleElement.addEventListener('click', this.show)\r\n\r\n this.menuObject.on('kt.menu.dropdown.show', function () {\r\n // @ts-ignore\r\n if (isVisibleElement(this.toggleElement)) {\r\n // @ts-ignore\r\n this.toggleElement.classList.add('active')\r\n // @ts-ignore\r\n this.toggleElement.classList.add('show')\r\n }\r\n })\r\n\r\n this.menuObject.on('kt.menu.dropdown.hide', function () {\r\n // @ts-ignore\r\n if (isVisibleElement(this.toggleElement)) {\r\n // @ts-ignore\r\n this.toggleElement.classList.remove('active')\r\n // @ts-ignore\r\n this.toggleElement.classList.remove('show')\r\n }\r\n })\r\n }\r\n\r\n this.menuObject.on('kt.menu.dropdown.shown', function () {\r\n // @ts-ignore\r\n this.inputElement.focus()\r\n })\r\n }\r\n\r\n // Window resize handling\r\n window.addEventListener('resize', () => {\r\n let timer\r\n\r\n throttle(\r\n timer,\r\n () => {\r\n this.update()\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n // Update\r\n public update = () => {\r\n // Handle responsive form\r\n if (this.layout === 'menu') {\r\n let responsiveFormMode = this.getResponsiveFormMode()\r\n\r\n if (responsiveFormMode === 'on' && this.contentElement.contains(this.formElement) === false) {\r\n this.contentElement.prepend(this.formElement)\r\n this.formElement.classList.remove('d-none')\r\n } else if (\r\n responsiveFormMode === 'off' &&\r\n this.contentElement.contains(this.formElement) === true\r\n ) {\r\n this.element.prepend(this.formElement)\r\n this.formElement.classList.add('d-none')\r\n }\r\n }\r\n }\r\n\r\n // Show menu\r\n public show = () => {\r\n if (this.menuObject) {\r\n this.update()\r\n\r\n this.menuObject.show(this.element)\r\n }\r\n }\r\n\r\n // Hide menu\r\n public hide = () => {\r\n if (this.menuObject) {\r\n this.update()\r\n\r\n this.menuObject.hide(this.element)\r\n }\r\n }\r\n\r\n // Search\r\n public search = () => {\r\n if (this.processing === false) {\r\n // Show search spinner\r\n if (this.spinnerElement) {\r\n this.spinnerElement.classList.remove('d-none')\r\n }\r\n\r\n // Hide search clear button\r\n if (this.clearElement) {\r\n this.clearElement.classList.add('d-none')\r\n }\r\n\r\n // Hide search toolbar\r\n if (this.toolbarElement) {\r\n this.toolbarElement.classList.add('d-none')\r\n }\r\n\r\n // Focus input\r\n this.inputElement.focus()\r\n\r\n this.processing = true\r\n EventHandlerUtil.trigger(this.element, 'kt.search.process')\r\n }\r\n }\r\n\r\n // Complete\r\n public complete = () => {\r\n if (this.spinnerElement) {\r\n this.spinnerElement.classList.add('d-none')\r\n }\r\n\r\n // Show search toolbar\r\n if (this.clearElement) {\r\n this.clearElement.classList.remove('d-none')\r\n }\r\n\r\n if (this.inputElement.value.length === 0) {\r\n this.clear()\r\n }\r\n\r\n // Focus input\r\n this.inputElement.focus()\r\n\r\n this.show()\r\n\r\n this.processing = false\r\n }\r\n\r\n // Clear\r\n public clear = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.search.clear') === false) {\r\n return\r\n }\r\n\r\n // Clear and focus input\r\n this.inputElement.value = ''\r\n this.inputElement.focus()\r\n\r\n // Hide clear icon\r\n if (this.clearElement) {\r\n this.clearElement.classList.add('d-none')\r\n }\r\n\r\n // Show search toolbar\r\n if (this.toolbarElement) {\r\n this.toolbarElement.classList.remove('d-none')\r\n }\r\n\r\n // Hide menu\r\n if (this.getOption('show-on-focus') === false) {\r\n this.hide()\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.search.cleared')\r\n }\r\n\r\n public isProcessing = () => {\r\n return this.processing\r\n }\r\n\r\n public getQuery = () => {\r\n return this.inputElement.value\r\n }\r\n\r\n public getMenu = () => {\r\n return this.menuObject\r\n }\r\n\r\n public getFormElement = () => {\r\n return this.formElement\r\n }\r\n\r\n public getInputElement(): HTMLInputElement {\r\n return this.inputElement\r\n }\r\n\r\n public getContentElement(): HTMLElement {\r\n return this.contentElement\r\n }\r\n\r\n public getElement(): HTMLElement {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (\r\n el: HTMLElement,\r\n componentName: string = defaultSearchQueires.componentName\r\n ) => {\r\n const Search = DataUtil.get(el, componentName)\r\n if (Search) {\r\n return Search\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultSearchQueires.instanseQuery,\r\n options: ISearchOptions = defaultSearchOptions,\r\n queries: ISearchQueries = defaultSearchQueires\r\n ) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let Search = SearchComponent.getInstance(item)\r\n if (!Search) {\r\n Search = new SearchComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultSearchQueires.instanseQuery,\r\n options: ISearchOptions = defaultSearchOptions,\r\n queries: ISearchQueries = defaultSearchQueires\r\n ): SearchComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let Search = SearchComponent.getInstance(item)\r\n if (!Search) {\r\n Search = new SearchComponent(item, options, queries)\r\n }\r\n return Search\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultSearchQueires.instanseQuery) => {\r\n SearchComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (selector: string = defaultSearchQueires.instanseQuery) => {\r\n SearchComponent.createInstances(selector)\r\n }\r\n}\r\nexport {SearchComponent, defaultSearchOptions, defaultSearchQueires}\r\n","/* eslint-disable no-useless-escape */\r\n// DOCS: https://javascript.info/cookie\r\nexport class CookieComponent {\r\n /**\r\n * Returns the cookie with the given name, or undefined if not found\r\n *\r\n * @param {string} name - cookie name\r\n * @returns string | null\r\n */\r\n public static get(name: string): string | undefined {\r\n let matches = document.cookie.match(\r\n new RegExp('(?:^|; )' + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + '=([^;]*)')\r\n )\r\n return matches ? decodeURIComponent(matches[1]) : undefined\r\n }\r\n\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 *\r\n * @param {string} name - cookie name\r\n * @param {string | number | boolean} value - cookie value\r\n * @param {any} cookieOptions - cookie options\r\n * @returns void\r\n */\r\n public static set(name: string, value: string | number | boolean, cookieOptions: any): void {\r\n const options = {\r\n path: '/',\r\n // add other defaults here if necessary\r\n ...cookieOptions,\r\n }\r\n\r\n if (options.expires instanceof Date) {\r\n options.expires = options.expires.toUTCString()\r\n }\r\n\r\n let updatedCookie = encodeURIComponent(name) + '=' + encodeURIComponent(value)\r\n\r\n for (let optionKey in options) {\r\n updatedCookie += '; ' + optionKey\r\n let 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\r\n /**\r\n * To delete a cookie, we can call it with a negative expiration date\r\n *\r\n * @param {string} name\r\n */\r\n public static delete(name: string): void {\r\n CookieComponent.set(name, '', {\r\n 'max-age': -1,\r\n })\r\n }\r\n}\r\n","import { User } from \"@/store/modules/AuthModule\";\n\nconst ID_TOKEN_KEY = \"id_token\" as string;\nconst CURRENT_USER = \"current_user\" as string;\n\n/**\n * @description get token form localStorage\n */\nexport const getToken = (): string | null => {\n return window.localStorage.getItem(ID_TOKEN_KEY);\n};\n\n/**\n * @description save token into localStorage\n * @param token: string\n */\nexport const saveToken = (token: string): void => {\n window.localStorage.setItem(ID_TOKEN_KEY, token);\n};\n\n/**\n * @description remove token form localStorage\n */\nexport const destroyToken = (): void => {\n window.localStorage.removeItem(ID_TOKEN_KEY);\n};\n\n/**\n * @description save user into localStorage\n * @param token: User\n */\nexport const saveCurrentUser = (user: User): void => {\n window.localStorage.setItem(CURRENT_USER, JSON.stringify(user));\n};\n\n/**\n * @description save user into localStorage\n * @param token: User\n */\nexport const destroyCurrentUser = (): void => {\n window.localStorage.removeItem(CURRENT_USER);\n};\n\nexport const getCurrentUser = (): User | null => {\n return JSON.parse(localStorage.getItem(CURRENT_USER) || \"null\") as User;\n};\n\nexport default {\n getToken,\n saveToken,\n destroyToken,\n getCurrentUser,\n saveCurrentUser,\n destroyCurrentUser,\n};\n","import store from '@/store'\n\nexport const role = {\n admin: \"Admin\",\n owner: \"Owner\",\n manager: \"Manager\",\n user: \"User\",\n};\n\nexport const validateRole = (roles) => {\n const currentRole = store.getters.currentRole\n\n return (!Array.isArray(roles) ? [roles] : roles).map(r => r.toLowerCase()).includes(currentRole.toLowerCase())\n \n}\n","export class ElementStyleUtil {\r\n public static set(element: HTMLElement, property: string, value?: any, important?: boolean) {\r\n if (important) {\r\n element.style.setProperty(property, value, 'important')\r\n } else {\r\n element.style.setProperty(property, value)\r\n }\r\n }\r\n\r\n public static get(element: HTMLElement, attributeName: string) {\r\n return element.style.getPropertyValue(attributeName)\r\n }\r\n\r\n public static remove(element: HTMLElement, attibuteName: string) {\r\n element.style.removeProperty(attibuteName)\r\n }\r\n}\r\n","export class DataUtil {\r\n static store: Map> = new Map()\r\n\r\n public static set(instance: HTMLElement | undefined, key: string, data: any): void {\r\n if (!instance) {\r\n return\r\n }\r\n\r\n const instanceData = DataUtil.store.get(instance)\r\n if (!instanceData) {\r\n const newMap = new Map().set(key, data)\r\n DataUtil.store.set(instance, newMap)\r\n return\r\n }\r\n\r\n instanceData.set(key, data)\r\n }\r\n\r\n public static get(instance: HTMLElement, key: string): any | undefined {\r\n const instanceData = DataUtil.store.get(instance)\r\n if (!instanceData) {\r\n return\r\n }\r\n\r\n return instanceData.get(key)\r\n }\r\n\r\n public static remove(instance: HTMLElement, key: string): void {\r\n const instanceData = DataUtil.store.get(instance)\r\n if (!instanceData) {\r\n return\r\n }\r\n\r\n instanceData.delete(key)\r\n }\r\n\r\n public static has(instance: HTMLElement, key: string): boolean {\r\n const instanceData = DataUtil.store.get(instance)\r\n if (instanceData) {\r\n return instanceData.has(key)\r\n }\r\n\r\n return false\r\n }\r\n\r\n public static getAllInstancesByKey(key: string) {\r\n const result: any[] = []\r\n DataUtil.store.forEach((val) => {\r\n val.forEach((v, k) => {\r\n if (k === key) {\r\n result.push(v)\r\n }\r\n })\r\n })\r\n return result\r\n }\r\n}\r\n","function getObjectPropertyValueByKey(obj: any, key: string): any | undefined {\r\n const map = new Map(Object.entries(obj))\r\n if (obj.hasOwnProperty(key) && map) {\r\n return map.get(key)\r\n }\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\nfunction getUniqueIdWithPrefix(prefix: string | undefined): string {\r\n const result = Math.floor(Math.random() * new Date().getTime()).toString()\r\n if (!prefix) {\r\n return result\r\n }\r\n\r\n return `${prefix}${result}`\r\n}\r\n\r\n/* eslint-disable no-useless-escape */\r\nfunction stringSnakeToCamel(str: string): string {\r\n return str.replace(/(\\-\\w)/g, function (m) {\r\n return m[1].toUpperCase()\r\n })\r\n}\r\n\r\nfunction toJSON(value: string | JSON): JSON | undefined {\r\n if (typeof value !== 'string') {\r\n return value\r\n }\r\n\r\n if (!value) {\r\n return undefined\r\n }\r\n\r\n // (\"'\" => \"\\\"\");\r\n const result = value\r\n .toString()\r\n .split('')\r\n .map((el) => (el !== \"'\" ? el : '\"'))\r\n .join('')\r\n var jsonStr = result.replace(/(\\w+:)|(\\w+ :)/g, function (matched) {\r\n return '\"' + matched.substring(0, matched.length - 1) + '\":'\r\n })\r\n try {\r\n return JSON.parse(jsonStr)\r\n } catch {\r\n return undefined\r\n }\r\n}\r\n\r\nexport {getObjectPropertyValueByKey, getUniqueIdWithPrefix, stringSnakeToCamel, toJSON}\r\n","import {getUniqueIdWithPrefix} from './_TypesHelpers'\r\n\r\nexport class DOMEventHandlerUtil {\r\n public static store = new Map()\r\n\r\n public static on(\r\n element: HTMLElement,\r\n selector: string,\r\n eventName: string,\r\n callBack: any\r\n ): string {\r\n const eventId = getUniqueIdWithPrefix('DOMEvent')\r\n DOMEventHandlerUtil.store.set(eventId, (e: Event) => {\r\n const targets = element.querySelectorAll(selector)\r\n let target: HTMLElement | null = e.target as HTMLElement\r\n while (target && target !== element) {\r\n for (let i = 0; i < targets.length; i++) {\r\n if (target === targets[i]) {\r\n callBack.call(target, e)\r\n }\r\n }\r\n\r\n if (target.parentElement) {\r\n target = target.parentElement\r\n } else {\r\n target = null\r\n }\r\n }\r\n })\r\n element.addEventListener(eventName, DOMEventHandlerUtil.store.get(eventId))\r\n return eventId\r\n }\r\n\r\n public static off(element: HTMLElement, eventName: string, eventId: string): void {\r\n const funcFromStore = DOMEventHandlerUtil.store.get(eventId)\r\n if (!funcFromStore) {\r\n return\r\n }\r\n\r\n element.removeEventListener(eventName, funcFromStore)\r\n DOMEventHandlerUtil.store.delete(eventId)\r\n }\r\n\r\n public static one(element: HTMLElement, eventName: string, callBack: Function): void {\r\n element.addEventListener(eventName, function calee(e) {\r\n // remove event\r\n if (e.target && e.target.removeEventListener) {\r\n e.target.removeEventListener(e.type, calee)\r\n }\r\n\r\n if (element && e && e.currentTarget) {\r\n // if (element && element.removeEventListener && e && e.currentTarget) {\r\n e.currentTarget.removeEventListener(e.type, calee)\r\n }\r\n\r\n // call hander\r\n return callBack(e)\r\n })\r\n }\r\n}\r\n","import {DOMEventHandlerUtil} from './_DOMEventHandlerUtil'\r\nimport {ElementStyleUtil} from './_ElementStyleUtil'\r\nimport {getElementOffset} from './DomHelpers'\r\n\r\nexport class ElementAnimateUtil {\r\n public static animate(\r\n from: number,\r\n to: number,\r\n duration: number,\r\n update: Function,\r\n complete?: Function\r\n ) {\r\n /**\r\n * TinyAnimate.easings\r\n * Adapted from jQuery Easing\r\n */\r\n const easings = {\r\n linear: function (t: number, b: number, c: number, d: number) {\r\n return (c * t) / d + b\r\n },\r\n }\r\n\r\n // Create mock done() function if necessary\r\n if (!complete) {\r\n complete = function () {}\r\n }\r\n\r\n // Animation loop\r\n // let canceled = false;\r\n const change = to - from\r\n\r\n function loop(timestamp: number) {\r\n var time = (timestamp || +new Date()) - start\r\n\r\n if (time >= 0) {\r\n update(easings.linear(time, from, change, duration))\r\n }\r\n if (time >= 0 && time >= duration) {\r\n update(to)\r\n if (complete) {\r\n complete()\r\n }\r\n } else {\r\n window.requestAnimationFrame(loop)\r\n }\r\n }\r\n\r\n update(from)\r\n\r\n // Start animation loop\r\n const start =\r\n window.performance && window.performance.now ? window.performance.now() : +new Date()\r\n\r\n window.requestAnimationFrame(loop)\r\n }\r\n\r\n public static animateClass(\r\n element: HTMLElement,\r\n animationName: string,\r\n callBack?: Function\r\n ): void {\r\n const animateClasses = animationName.split(' ')\r\n animateClasses.forEach((cssClass) => element.classList.add(cssClass))\r\n DOMEventHandlerUtil.one(element, 'animationend', function () {\r\n animateClasses.forEach((cssClass) => element.classList.remove(cssClass))\r\n })\r\n\r\n if (callBack) {\r\n DOMEventHandlerUtil.one(element, 'animationend', callBack)\r\n }\r\n }\r\n\r\n public static transitionEnd(element: HTMLElement, callBack: Function) {\r\n DOMEventHandlerUtil.one(element, 'transitionend', callBack)\r\n }\r\n\r\n public static animationEnd(element: HTMLElement, callBack: Function) {\r\n DOMEventHandlerUtil.one(element, 'animationend', callBack)\r\n }\r\n\r\n public static animationDelay(element: HTMLElement, value: string) {\r\n ElementStyleUtil.set(element, 'animation-delay', value)\r\n }\r\n\r\n public static animationDuration(element: HTMLElement, value: string) {\r\n ElementStyleUtil.set(element, 'animation-duration', value)\r\n }\r\n\r\n public static scrollTo(element: HTMLElement | null, offset: number, duration: number = 500) {\r\n let targetPos = element ? getElementOffset(element).top : 0\r\n let scrollPos =\r\n window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0\r\n\r\n if (offset) {\r\n scrollPos += offset\r\n targetPos = targetPos - offset\r\n }\r\n\r\n const from = scrollPos\r\n const to = targetPos\r\n\r\n ElementAnimateUtil.animate(from, to, duration, function (value: number) {\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 public static scrollTop(offset: number, duration: number) {\r\n ElementAnimateUtil.scrollTo(null, offset, duration)\r\n }\r\n}\r\n","import {OffsetModel} from './models/OffsetModel'\r\nimport {ViewPortModel} from './models/ViewPortModel'\r\nimport {ElementStyleUtil} from './_ElementStyleUtil'\r\nimport {DataUtil} from './_DataUtil'\r\nimport {ElementAnimateUtil} from './ElementAnimateUtil'\r\nimport {getObjectPropertyValueByKey, toJSON} from './_TypesHelpers'\r\n\r\nfunction getCSS(el: HTMLElement, styleProp: string) {\r\n const defaultView = (el.ownerDocument || document).defaultView\r\n\r\n if (!defaultView) {\r\n return ''\r\n }\r\n\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\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\r\n}\r\n\r\nfunction getCSSVariableValue(variableName: string) {\r\n let hex = getComputedStyle(document.documentElement).getPropertyValue(variableName)\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\nfunction getElementActualCss(el: HTMLElement, prop: any, cache: boolean) {\r\n let css = ''\r\n\r\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\r\n let 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 if (value !== undefined) {\r\n el.setAttribute('kt-hidden-' + prop, value.toString())\r\n return parseFloat(value.toString())\r\n }\r\n return 0\r\n } else {\r\n // store it in cache\r\n const attributeValue = el.getAttribute('kt-hidden-' + prop)\r\n if (attributeValue || attributeValue === '0') {\r\n return parseFloat(attributeValue)\r\n }\r\n }\r\n}\r\n\r\nfunction getElementActualHeight(el: HTMLElement) {\r\n return getElementActualCss(el, 'height', false)\r\n}\r\n\r\nfunction getElementActualWidth(el: HTMLElement, cache?: boolean) {\r\n return getElementActualCss(el, 'width', false)\r\n}\r\n\r\nfunction getElementIndex(element: HTMLElement) {\r\n if (element.parentNode) {\r\n const c = element.parentNode.children\r\n for (let i = 0; i < c.length; i++) {\r\n if (c[i] === element) return i\r\n }\r\n }\r\n return -1\r\n}\r\n\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\r\nfunction getElementMatches(element: HTMLElement, selector: string) {\r\n const p = Element.prototype\r\n const f = p.matches || p.webkitMatchesSelector\r\n\r\n if (element && element.tagName) {\r\n return f.call(element, selector)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nfunction getElementOffset(el: HTMLElement): OffsetModel {\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 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 const rect = el.getBoundingClientRect()\r\n const win = el.ownerDocument.defaultView\r\n if (win) {\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 return rect\r\n}\r\n\r\nfunction getElementParents(element: Element, selector: string) {\r\n // Element.matches() polyfill\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches = function (s) {\r\n const matches = (document || this.ownerDocument).querySelectorAll(s)\r\n let 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 const parents:Array = []\r\n\r\n let el: Element | null = element\r\n\r\n // Push each parent element to the array\r\n for (; el && el !== document.body; el = el.parentElement) {\r\n if (selector) {\r\n if (el.matches(selector)) {\r\n parents.push(el)\r\n }\r\n continue\r\n }\r\n parents.push(el)\r\n }\r\n\r\n // Return our parent array\r\n return parents\r\n}\r\n\r\nfunction getHighestZindex(el: HTMLElement) {\r\n let bufferNode: Node | null = el as Node\r\n let buffer = el\r\n while (bufferNode && bufferNode !== 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 const position = buffer.style.getPropertyValue('position')\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 const value = parseInt(buffer.style.getPropertyValue('z-index'))\r\n if (!isNaN(value) && value !== 0) {\r\n return value\r\n }\r\n }\r\n\r\n bufferNode = bufferNode.parentNode\r\n buffer = bufferNode as HTMLElement\r\n }\r\n return null\r\n}\r\n\r\nfunction getScrollTop(): number {\r\n return (document.scrollingElement || document.documentElement).scrollTop\r\n}\r\n\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth\r\nfunction getViewPort(): ViewPortModel {\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n }\r\n}\r\n\r\nfunction insertAfterElement(el: HTMLElement, referenceNode: HTMLElement) {\r\n return referenceNode.parentNode?.insertBefore(el, referenceNode.nextSibling)\r\n}\r\n\r\nfunction isElementHasClasses(element: HTMLElement, classesStr: string): boolean {\r\n const classes = classesStr.split(' ')\r\n for (let i = 0; i < classes.length; i++) {\r\n if (!element.classList.contains(classes[i])) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction isVisibleElement(element: HTMLElement): boolean {\r\n return !(element.offsetWidth === 0 && element.offsetHeight === 0)\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\nfunction throttle(timer: number | undefined, func: Function, delay?: number) {\r\n // If setTimeout is already scheduled, no need to do anything\r\n if (timer) {\r\n return\r\n }\r\n\r\n // Schedule a setTimeout after delay seconds\r\n timer = window.setTimeout(function () {\r\n func()\r\n\r\n // Once setTimeout function execution is finished, timerId = undefined so that in
\r\n // the next scroll event function execution can be scheduled by the setTimeout\r\n timer = undefined\r\n }, delay)\r\n}\r\n\r\nfunction getElementChildren(element: HTMLElement, selector: string): Array | null {\r\n if (!element || !element.childNodes) {\r\n return null\r\n }\r\n\r\n const result: Array = []\r\n for (let i = 0; i < element.childNodes.length; i++) {\r\n const child = element.childNodes[i]\r\n // child.nodeType == 1 => Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference\r\n if (child.nodeType === 1 && getElementMatches(child as HTMLElement, selector)) {\r\n result.push(child as HTMLElement)\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\nfunction getElementChild(element: HTMLElement, selector: string): HTMLElement | null {\r\n const children = getElementChildren(element, selector)\r\n return children ? children[0] : null\r\n}\r\n\r\nfunction isMobileDevice(): boolean {\r\n let test = getViewPort().width < +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\nfunction slide(el: HTMLElement, dir: string, speed: number, callback: any) {\r\n if (\r\n !el ||\r\n (dir === 'up' && isVisibleElement(el) === false) ||\r\n (dir === 'down' && isVisibleElement(el) === true)\r\n ) {\r\n return\r\n }\r\n\r\n speed = speed ? speed : 600\r\n let calcHeight = getElementActualHeight(el)\r\n let calcPaddingTop: number = 0\r\n let calcPaddingBottom: number = 0\r\n\r\n if (ElementStyleUtil.get(el, 'padding-top') && DataUtil.get(el, 'slide-padding-top') !== true) {\r\n DataUtil.set(el, 'slide-padding-top', ElementStyleUtil.get(el, 'padding-top'))\r\n }\r\n\r\n if (\r\n ElementStyleUtil.get(el, 'padding-bottom') &&\r\n DataUtil.has(el, 'slide-padding-bottom') !== true\r\n ) {\r\n DataUtil.set(el, 'slide-padding-bottom', ElementStyleUtil.get(el, 'padding-bottom'))\r\n }\r\n\r\n if (DataUtil.has(el, 'slide-padding-top')) {\r\n calcPaddingTop = parseInt(DataUtil.get(el, 'slide-padding-top'))\r\n }\r\n\r\n if (DataUtil.has(el, 'slide-padding-bottom')) {\r\n calcPaddingBottom = parseInt(DataUtil.get(el, 'slide-padding-bottom'))\r\n }\r\n\r\n if (dir === 'up') {\r\n // up\r\n el.style.cssText = 'display: block; overflow: hidden;'\r\n\r\n if (calcPaddingTop) {\r\n ElementAnimateUtil.animate(0, calcPaddingTop, speed, function (value: number) {\r\n el.style.paddingTop = calcPaddingTop - value + 'px'\r\n })\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n ElementAnimateUtil.animate(0, calcPaddingBottom, speed, function (value: number) {\r\n el.style.paddingBottom = calcPaddingBottom - value + 'px'\r\n })\r\n }\r\n\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcHeight || 0,\r\n speed,\r\n function (value: number) {\r\n el.style.height = (calcHeight || 0) - value + 'px'\r\n },\r\n 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 } else if (dir === 'down') {\r\n // down\r\n el.style.cssText = 'display: block; overflow: hidden;'\r\n\r\n if (calcPaddingTop) {\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcPaddingTop,\r\n speed,\r\n function (value: number) {\r\n //\r\n el.style.paddingTop = value + 'px'\r\n },\r\n function () {\r\n el.style.paddingTop = ''\r\n }\r\n )\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcPaddingBottom,\r\n speed,\r\n function (value: number) {\r\n el.style.paddingBottom = value + 'px'\r\n },\r\n function () {\r\n el.style.paddingBottom = ''\r\n }\r\n )\r\n }\r\n\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcHeight || 0,\r\n speed,\r\n function (value: number) {\r\n el.style.height = value + 'px'\r\n },\r\n 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\r\nfunction slideUp(el: HTMLElement, speed: number, callback: any) {\r\n slide(el, 'up', speed, callback)\r\n}\r\n\r\nfunction slideDown(el: HTMLElement, speed: number, callback: any) {\r\n slide(el, 'down', speed, callback)\r\n}\r\n\r\nfunction getBreakpoint(breakpoint: string) {\r\n let value: number | string = getCSSVariableValue('--bs-' + breakpoint)\r\n if (value) {\r\n value = parseInt(value.trim())\r\n }\r\n\r\n return value\r\n}\r\n\r\nfunction getAttributeValueByBreakpoint(incomingAttr: string): string | JSON {\r\n let value = toJSON(incomingAttr)\r\n if (typeof value !== 'object') {\r\n return incomingAttr\r\n }\r\n\r\n const width = getViewPort().width\r\n let resultKey\r\n let resultBreakpoint = -1\r\n let breakpoint\r\n\r\n for (let key in value) {\r\n if (key === 'default') {\r\n breakpoint = 0\r\n } else {\r\n breakpoint = getBreakpoint(key) ? +getBreakpoint(key) : parseInt(key)\r\n }\r\n\r\n if (breakpoint <= width && breakpoint > resultBreakpoint) {\r\n resultKey = key\r\n resultBreakpoint = breakpoint\r\n }\r\n }\r\n\r\n return resultKey ? getObjectPropertyValueByKey(value, resultKey) : value\r\n}\r\n\r\nfunction colorLighten(color: string, amount: number) {\r\n const addLight = (_color: string, _amount: number) => {\r\n const cc = parseInt(_color, 16) + _amount\r\n const cNum = cc > 255 ? 255 : cc\r\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\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).toString())\r\n return (color = `#${addLight(color.substring(0, 2), amount)}${addLight(\r\n color.substring(2, 4),\r\n amount\r\n )}${addLight(color.substring(4, 6), amount)}`)\r\n}\r\n\r\nfunction colorDarken(color: string, amount: number) {\r\n const subtractLight = (_color: string, _amount: number) => {\r\n const cc = parseInt(color, 16) - amount\r\n const cNum = cc < 0 ? 0 : cc\r\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\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).toString())\r\n\r\n return (color = `#${subtractLight(color.substring(0, 2), amount)}${subtractLight(\r\n color.substring(2, 4),\r\n amount\r\n )}${subtractLight(color.substring(4, 6), amount)}`)\r\n}\r\n\r\nexport {\r\n getBreakpoint,\r\n getCSS,\r\n getCSSVariableValue,\r\n getElementActualCss,\r\n getElementActualHeight,\r\n getElementActualWidth,\r\n getElementIndex,\r\n getElementMatches,\r\n getElementOffset,\r\n getElementParents,\r\n getHighestZindex,\r\n getScrollTop,\r\n getViewPort,\r\n insertAfterElement,\r\n isElementHasClasses,\r\n isVisibleElement,\r\n throttle,\r\n getElementChildren,\r\n getElementChild,\r\n isMobileDevice,\r\n slide,\r\n slideUp,\r\n slideDown,\r\n getAttributeValueByBreakpoint,\r\n colorLighten,\r\n colorDarken,\r\n}\r\n","import {DataUtil} from './_DataUtil'\r\nimport {getUniqueIdWithPrefix} from './_TypesHelpers'\r\n\r\nexport interface EventMeta {\r\n name: string\r\n callback: Function\r\n one: boolean\r\n fired: boolean\r\n}\r\n\r\nexport class EventHandlerUtil {\r\n static store: Map> = new Map()\r\n\r\n private static setEventMetasByName(name: string, metas: Map): void {\r\n EventHandlerUtil.store.set(name, metas)\r\n }\r\n\r\n private static getEventMetasByName(name: string): Map | undefined {\r\n return EventHandlerUtil.store.get(name)\r\n }\r\n\r\n private static setEventMetaByNameAndHandlerId(\r\n name: string,\r\n handlerId: string,\r\n meta: EventMeta\r\n ): void {\r\n let metas = EventHandlerUtil.getEventMetasByName(name)\r\n if (!metas) {\r\n metas = new Map()\r\n }\r\n\r\n metas.set(handlerId, meta)\r\n EventHandlerUtil.setEventMetasByName(name, metas)\r\n }\r\n\r\n private static getEventsMetaByHandlerId(name: string, handlerId: string): EventMeta | undefined {\r\n const metas = EventHandlerUtil.store.get(name)\r\n if (!metas) {\r\n return\r\n }\r\n\r\n return metas.get(handlerId)\r\n }\r\n\r\n private static setFiredByNameAndHandlerId(name: string, handerId: string, fired: boolean): void {\r\n const meta = EventHandlerUtil.getEventsMetaByHandlerId(name, handerId)\r\n if (!meta) {\r\n return\r\n }\r\n\r\n meta.fired = fired\r\n EventHandlerUtil.setEventMetaByNameAndHandlerId(name, handerId, meta)\r\n }\r\n\r\n private static addEvent(\r\n element: HTMLElement,\r\n name: string,\r\n callback: Function,\r\n one: boolean = false\r\n ) {\r\n const handlerId = getUniqueIdWithPrefix('event')\r\n DataUtil.set(element, name, handlerId)\r\n const meta: EventMeta = {\r\n name: name,\r\n callback: callback,\r\n one: one,\r\n fired: false,\r\n }\r\n\r\n EventHandlerUtil.setEventMetaByNameAndHandlerId(name, handlerId, meta)\r\n }\r\n\r\n private static removeEvent(element: HTMLElement, name: string) {\r\n const handlerId = DataUtil.get(element, name)\r\n if (!handlerId) {\r\n return\r\n }\r\n\r\n const metas = EventHandlerUtil.getEventMetasByName(name)\r\n if (!metas) {\r\n return\r\n }\r\n\r\n metas.delete(handlerId)\r\n EventHandlerUtil.setEventMetasByName(name, metas)\r\n }\r\n\r\n public static trigger(element: HTMLElement, name: string, e?: Event) {\r\n if (DataUtil.has(element, name)) {\r\n const handlerId = DataUtil.get(element, name)\r\n if (!handlerId) {\r\n return undefined\r\n }\r\n\r\n const handler = EventHandlerUtil.getEventsMetaByHandlerId(name, handlerId)\r\n if (handler) {\r\n if (handler.name === name) {\r\n if (handler.one === true) {\r\n if (handler.fired === false) {\r\n EventHandlerUtil.setFiredByNameAndHandlerId(name, handlerId, true)\r\n return handler.callback.call(this, e)\r\n }\r\n } else {\r\n return handler.callback.call(this, e)\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static on = function (element: HTMLElement, name: string, callBack: Function): void {\r\n EventHandlerUtil.addEvent(element, name, callBack, false)\r\n }\r\n\r\n public static one(element: HTMLElement, name: string, callBack: Function): void {\r\n EventHandlerUtil.addEvent(element, name, callBack, true)\r\n }\r\n\r\n public static off(element: HTMLElement, name: string): void {\r\n EventHandlerUtil.removeEvent(element, name)\r\n }\r\n}\r\n","\n\n\n\n\n","\nimport { defineComponent, onMounted, nextTick } from \"vue\";\nimport { useStore } from \"vuex\";\nimport { Mutations } from \"@/store/enums/StoreEnums\";\n\nexport default defineComponent({\n name: \"app\",\n setup() {\n const store = useStore();\n\n onMounted(() => {\n /**\n * this is to override the layout config using saved data from localStorage\n * remove this to use config only from static config (@/core/config/DefaultLayoutConfig.ts)\n */\n store.commit(Mutations.OVERRIDE_LAYOUT_CONFIG);\n\n nextTick(() => {\n window.addEventListener('resize', () => store.commit(Mutations.SET_WINDOW_HEIGHT, window.innerHeight));\n }) \n \n });\n },\n});\n","import { render } from \"./App.vue?vue&type=template&id=d2a1df06\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=d2a1df06&lang=scss\"\nscript.render = render\n\nexport default script","import { createI18n } from \"vue-i18n\";\n\nconst messages = {\n en: {\n dashboard: \"Dashboard\",\n layoutBuilder: \"Layout builder\",\n craft: \"Crafted\",\n pages: \"Pages\",\n profile: \"Profile\",\n profileOverview: \"Overview\",\n projects: \"Projects\",\n campaigns: \"Campaigns\",\n documents: \"Documents\",\n connections: \"Connections\",\n wizards: \"Wizards\",\n horizontal: \"Horizontal\",\n vertical: \"Vertical\",\n account: \"Account\",\n accountOverview: \"Overview\",\n settings: \"Settings\",\n authentication: \"Authentication\",\n basicFlow: \"Basic Flow\",\n signIn: \"Sign-in\",\n signUp: \"Sign-up\",\n passwordReset: \"Password Reset\",\n error404: \"Error 404\",\n error500: \"Error 500\",\n apps: \"Apps\",\n chat: \"Chat\",\n privateChat: \"Private Chat\",\n groupChat: \"Group Chat\",\n drawerChat: \"Drawer Chat\",\n widgets: \"Widgets\",\n widgetsLists: \"Lists\",\n widgetsStatistics: \"Statistics\",\n widgetsCharts: \"Charts\",\n widgetsMixed: \"Mixed\",\n widgetsTables: \"Tables\",\n widgetsFeeds: \"Feeds\",\n changelog: \"Changelog\",\n docsAndComponents: \"Docs & Components\",\n exampleLink: \"Example link\",\n modals: \"Modals\",\n general: \"General\",\n inviteFriends: \"Invite Friends\",\n viewUsers: \"View Users\",\n upgradePlan: \"Upgrade Plan\",\n shareAndEarn: \"Share & Earn\",\n forms: \"Forms\",\n newTarget: \"New Target\",\n newCard: \"New Card\",\n newAddress: \"New Address\",\n createAPIKey: \"Create API Key\",\n twoFactorAuth: \"Two Factor Auth\",\n createApp: \"Create App\",\n createAccount: \"Create Account\",\n documentation: \"Documentation\",\n components: \"Components\",\n resources: \"Resources\",\n },\n es: {\n dashboard: \"Tablero\",\n layoutBuilder: \"Constructor de maquetación\",\n craft: \"Elaborado\",\n pages: \"Paginas\",\n profile: \"Perfil\",\n profileOverview: \"Descripción general\",\n projects: \"Proyectos\",\n campaigns: \"Campañas\",\n documents: \"Documentos\",\n connections: \"Conexiones\",\n wizards: \"Magos\",\n horizontal: \"Horizontal\",\n vertical: \"Vertical\",\n account: \"Cuenta\",\n accountOverview: \"Descripción general\",\n settings: \"Ajustes\",\n authentication: \"Autenticación\",\n basicFlow: \"Flujo básico\",\n signIn: \"Registrarse\",\n signUp: \"Inscribirse\",\n passwordReset: \"Restablecimiento de contraseña\",\n error404: \"Error 404\",\n error500: \"Error 500\",\n apps: \"Aplicaciones\",\n chat: \"Chat\",\n privateChat: \"Chat privado\",\n groupChat: \"Grupo de chat\",\n drawerChat: \"Chat del cajón\",\n widgets: \"Widgets\",\n widgetsLists: \"Liza\",\n widgetsStatistics: \"Estadísticas\",\n widgetsCharts: \"Gráficos\",\n widgetsMixed: \"Mezclada\",\n widgetsTables: \"Mesas\",\n widgetsFeeds: \"Alimenta\",\n changelog: \"Registro de cambios\",\n docsAndComponents: \"Documentos & Componentes\",\n megaMenu: \"Mega menú\",\n exampleLink: \"Enlace de ejemplo\",\n modals: \"Modales\",\n general: \"General\",\n inviteFriends: \"Invitar A Amigos\",\n viewUsers: \"Ver Usuarios\",\n upgradePlan: \"Plan De Actualización\",\n shareAndEarn: \"Compartir Y Ganar\",\n forms: \"Formas\",\n newTarget: \"Nuevo Objetivo\",\n newCard: \"Nueva Tarjeta\",\n newAddress: \"Nueva Direccion\",\n createAPIKey: \"Crea Clave De Api\",\n twoFactorAuth: \"Dos Factores\",\n createApp: \"Crear Aplicacion\",\n createAccount: \"Crear Una Cuenta\",\n activity: \"Actividad\",\n documentation: \"Documentación\",\n components: \"Componentes\",\n resources: \"Recursos\",\n },\n de: {\n dashboard: \"Instrumententafel\",\n layoutBuilder: \"Layout-Builder\",\n craft: \"Hergestellt\",\n pages: \"Seiten\",\n profile: \"Profil\",\n profileOverview: \"Überblick\",\n projects: \"Projekte\",\n campaigns: \"Kampagnen\",\n documents: \"Unterlagen\",\n connections: \"Anschlüsse\",\n wizards: \"Zauberer\",\n horizontal: \"Horizontal\",\n vertical: \"Vertikal\",\n account: \"Konto\",\n accountOverview: \"Überblick\",\n settings: \"Die Einstellungen\",\n authentication: \"Authentifizierung\",\n basicFlow: \"Grundfluss\",\n signIn: \"Einloggen\",\n signUp: \"Anmelden\",\n passwordReset: \"Passwort zurücksetzen\",\n error404: \"Fehler 404\",\n error500: \"Fehler 500\",\n apps: \"Apps\",\n chat: \"Plaudern\",\n privateChat: \"Private Chat\",\n groupChat: \"Privater Chat\",\n drawerChat: \"Gruppenchat Schubladen-Chat\",\n widgets: \"Widgets\",\n widgetsLists: \"Listen\",\n widgetsStatistics: \"Statistiken\",\n widgetsCharts: \"Diagramme\",\n widgetsMixed: \"Gemischt\",\n widgetsTables: \"Tabellen\",\n widgetsFeeds: \"Einspeisungen\",\n changelog: \"Änderungsprotokoll\",\n docsAndComponents: \"Dokumente & Komponenten\",\n megaMenu: \"Mega-Menü\",\n exampleLink: \"Beispiellink\",\n modals: \"Modale\",\n general: \"Allgemeines\",\n inviteFriends: \"Freunde Einladen\",\n viewUsers: \"Benutzer Anzeigen.\",\n upgradePlan: \"Upgrade-Plan\",\n shareAndEarn: \"Teilen & Verdienen\",\n forms: \"Formen\",\n newTarget: \"Neues Ziel\",\n newCard: \"Neue Karte\",\n newAddress: \"Neue Adresse\",\n createAPIKey: \"Api-Key Erstellen\",\n twoFactorAuth: \"Zwei Faktor Auth.\",\n createApp: \"App Erstellen\",\n createAccount: \"Benutzerkonto Erstellen\",\n activity: \"Aktivität\",\n documentation: \"Dokumentation\",\n components: \"Bauteile\",\n resources: \"Ressourcen\",\n },\n ja: {\n dashboard: \"ダッシュボード\",\n layoutBuilder: \"レイアウトビルダー\",\n craft: \"作成された\",\n pages: \"ページ\",\n profile: \"プロフィール\",\n profileOverview: \"概要\",\n projects: \"プロジェクト\",\n campaigns: \"キャンペーン\",\n documents: \"書類\",\n connections: \"接続\",\n wizards: \"ウィザード\",\n horizontal: \"横\",\n vertical: \"垂直\",\n account: \"アカウント\",\n accountOverview: \"概要\",\n settings: \"設定\",\n authentication: \"認証\",\n basicFlow: \"基本的な流れ\",\n signIn: \"サインイン\",\n signUp: \"サインアップ\",\n passwordReset: \"パスワードのリセット\",\n error404: \"エラー404\",\n error500: \"エラー 500\",\n apps: \"アプリ\",\n chat: \"チャット\",\n privateChat: \"プライベートチャット\",\n groupChat: \"グループチャット\",\n drawerChat: \"ドロワーチャット\",\n widgets: \"ウィジェット\",\n widgetsLists: \"リスト\",\n widgetsStatistics: \"統計\",\n widgetsCharts: \"チャート\",\n widgetsMixed: \"混合\",\n widgetsTables: \"テーブル\",\n widgetsFeeds: \"フィード\",\n changelog: \"変更ログ\",\n docsAndComponents: \"ドキュメントとコンポーネント\",\n megaMenu: \"メガメニュー\",\n exampleLink: \"リンク例\",\n modals: \"モーダルズ\",\n general: \"一般\",\n inviteFriends: \"友達を招待\",\n viewUsers: \"ユーザーを表示します\",\n upgradePlan: \"アップグレードプラン\",\n shareAndEarn: \"シェア&稼働\",\n forms: \"フォーム\",\n newTarget: \"新しいターゲット\",\n newCard: \"新しいカード\",\n newAddress: \"新しいアドレス\",\n createAPIKey: \"Apiキーを作成します\",\n twoFactorAuth: \"2つの要因Auth\",\n createApp: \"アプリを作成します\",\n createAccount: \"アカウントを作成する\",\n activity: \"アクティビティ\",\n documentation: \"ドキュメンテーション\",\n components: \"コンポーネント\",\n resources: \"資力\",\n },\n fr: {\n dashboard: \"Générateur de mise\",\n layoutBuilder: \"En page\",\n craft: \"Fabriqué\",\n pages: \"Pages\",\n profile: \"Profil\",\n profileOverview: \"Aperçu\",\n projects: \"Projets\",\n campaigns: \"Campagnes\",\n documents: \"Documents\",\n connections: \"Connexions\",\n wizards: \"Sorciers\",\n horizontal: \"Horizontal\",\n vertical: \"Verticale\",\n account: \"Compte\",\n accountOverview: \"Aperçu\",\n settings: \"Paramètres\",\n authentication: \"Authentification\",\n basicFlow: \"Flux de base\",\n signIn: \"SS'identifier\",\n signUp: \"Inscrivez-vous\",\n passwordReset: \"Réinitialisation du mot de passe\",\n error404: \"Erreur 404\",\n error500: \"Erreur 500\",\n apps: \"Applications\",\n chat: \"Discuter\",\n privateChat: \"Discussion privée\",\n groupChat: \"Discussion de groupe\",\n drawerChat: \"Chat de tiroir\",\n widgets: \"Widgets\",\n widgetsLists: \"Listes\",\n widgetsStatistics: \"Statistiques\",\n widgetsCharts: \"Graphiques\",\n widgetsMixed: \"Mixte\",\n widgetsTables: \"Les tables\",\n widgetsFeeds: \"Flux\",\n changelog: \"Journal des modifications\",\n docsAndComponents: \"Documents & composants\",\n megaMenu: \"Méga Menu\",\n exampleLink: \"Exemple de lien\",\n modals: \"Modals\",\n general: \"Général\",\n inviteFriends: \"Inviter Des Amis\",\n viewUsers: \"Voir Les Utilisateurs\",\n upgradePlan: \"Plan De Mise À Niveau\",\n shareAndEarn: \"Partager Et Gagner\",\n forms: \"Formes\",\n newTarget: \"Nouvelle Cible\",\n newCard: \"Nouvelle Carte\",\n newAddress: \"Nouvelle Adresse\",\n createAPIKey: \"Créer Une Touche Api\",\n twoFactorAuth: \"Deux Facteurs D'Authentification\",\n createApp: \"Créer Une Application\",\n createAccount: \"Créer Un Compte\",\n activity: \"Activité\",\n documentation: \"Documentation\",\n components: \"Composants\",\n resources: \"Ressources\",\n },\n};\n\nconst i18n = createI18n({\n legacy: false,\n locale: \"en\",\n globalInjection: true,\n messages,\n});\n\nexport default i18n;\n","import { App } from \"vue\";\nimport VueApexCharts from \"vue3-apexcharts\";\n\n/**\n * Initialize VueApexChart component\n * @param app vue instance\n */\nexport function initApexCharts(app: App) {\n app.use(VueApexCharts);\n}\n","import { App } from \"vue\";\nimport InlineSvg from \"vue-inline-svg\";\n\n/**\n * Initialize Inline-Svg component\n * @param app vue instance\n */\nexport function initInlineSvg(app: App) {\n app.component(\"inline-svg\", InlineSvg);\n}\n","import { configure } from \"vee-validate\";\n\nexport function initVeeValidate() {\n // Updating default vee-validate configuration\n configure({\n validateOnBlur: true,\n validateOnChange: true,\n validateOnInput: true,\n validateOnModelUpdate: true,\n });\n}\n","import {\n MenuComponent,\n ScrollComponent,\n StickyComponent,\n ToggleComponent,\n SwapperComponent,\n} from \"@/assets/ts/components\";\n\n/**\n * Initialize KeenThemes custom components\n */\nsetTimeout(() => {\n ToggleComponent.bootstrap();\n StickyComponent.bootstrap();\n MenuComponent.bootstrap();\n ScrollComponent.bootstrap();\n SwapperComponent.bootstrap();\n}, 500);\n","import { createApp } from \"vue\";\nimport App from \"./App.vue\";\n\n// import VueTrix from 'vue-trix';\n\n/*\nTIP: To get started with clean router change path to @/router/clean.ts.\n */\nimport router from \"./router/clean\";\nimport store from \"./store\";\nimport ElementPlus from \"element-plus\";\nimport i18n from \"@/core/plugins/i18n\";\nimport VueLoading from \"vue-loading-overlay\";\nimport \"vue-loading-overlay/dist/vue-loading.css\";\n\nimport VueSweetalert2 from \"vue-sweetalert2\";\nimport \"sweetalert2/dist/sweetalert2.min.css\";\nimport VueQRCodeComponent from 'vue-qrcode-component';\nimport { QuillEditor } from '@vueup/vue-quill'\nimport '@vueup/vue-quill/dist/vue-quill.snow.css';\n\n// import VueQuillEditor from 'vue-quill-editor'\n \n// require styles\n// import 'quill/dist/quill.core.css'\n// import 'quill/dist/quill.snow.css'\n// import 'quill/dist/quill.bubble.css'\n\n\n\n//imports for app initialization\nimport MockAdapter from \"@/core/mock/MockService\";\nimport ApiService from \"@/core/services/ApiService\";\nimport { initApexCharts } from \"@/core/plugins/apexcharts\";\nimport { initInlineSvg } from \"@/core/plugins/inline-svg\";\nimport { initVeeValidate } from \"@/core/plugins/vee-validate\";\nimport { Settings} from 'luxon'\nimport { computed, ref } from 'vue'\n\nimport \"@/core/plugins/keenthemes\";\nimport \"@/core/plugins/prismjs\";\nimport \"bootstrap\";\n\nconst app = createApp(App);\n\nSettings.defaultZone = \"Asia/Bangkok\"\napp.use(store);\napp.use(router);\napp.use(ElementPlus);\napp.use(VueLoading, { color: \"#0095E8\" });\napp.use(VueSweetalert2);\napp.component('qr-code', VueQRCodeComponent) \napp.component('QuillEditor', QuillEditor)\n// app.use(VueQuillEditor, /* { default global options } */)\n// app.use(Vue2Editor);\n\n\nconst partnerCode = ref(\"\");\napp.config.globalProperties.$selectedPartnerCode = computed({\n get: () => partnerCode.value,\n set: value => partnerCode.value = value,\n})\n\nApiService.init(app);\n// MockAdapter.init(app);\ninitApexCharts(app);\ninitInlineSvg(app);\ninitVeeValidate();\n\napp.use(i18n);\n\napp.mount(\"#app\");\n","import {DataUtil, getUniqueIdWithPrefix, EventHandlerUtil} from '../_utils/index'\r\n// Helpers\r\nimport {CookieComponent} from './_CookieComponent'\r\n\r\nexport interface ToggleOptions {\r\n saveState: boolean\r\n targetState?: string\r\n toggleState?: string\r\n targetToggleMode?: string\r\n}\r\n\r\nconst defaultToggleOptions: ToggleOptions = {\r\n saveState: false,\r\n}\r\n\r\nclass ToggleComponent {\r\n element: HTMLElement\r\n instanceUid: string\r\n options: ToggleOptions\r\n state: string = ''\r\n target: HTMLElement | null = null\r\n attribute: string = ''\r\n\r\n constructor(_element: HTMLElement, options: ToggleOptions) {\r\n this.options = Object.assign(defaultToggleOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('toggle')\r\n this.element = _element\r\n\r\n const elementTargetAttr = this.element.getAttribute('data-kt-toggle-target')\r\n if (elementTargetAttr) {\r\n this.target = document.querySelector(elementTargetAttr)\r\n }\r\n const elementToggleAttr = this.element.getAttribute('data-kt-toggle-state')\r\n this.state = elementToggleAttr || ''\r\n this.attribute = 'data-kt-' + this.element.getAttribute('data-kt-toggle-name')\r\n\r\n // Event Handlers\r\n this._handlers()\r\n\r\n // Update Instance\r\n // Bind Instance\r\n DataUtil.set(this.element, 'toggle', this)\r\n }\r\n\r\n private _handlers = () => {\r\n this.element.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n this._toggle()\r\n })\r\n }\r\n\r\n // Event handlers\r\n private _toggle = () => {\r\n // Trigger \"after.toggle\" event\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.change')\r\n\r\n if (this._isEnabled()) {\r\n this._disable()\r\n } else {\r\n this._enable()\r\n }\r\n\r\n // Trigger \"before.toggle\" event\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.changed')\r\n return this\r\n }\r\n\r\n private _enable = () => {\r\n if (this._isEnabled()) {\r\n return\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.enable')\r\n this.target?.setAttribute(this.attribute, 'on')\r\n if (this.state.length > 0) {\r\n this.element.classList.add(this.state)\r\n }\r\n\r\n if (this.options.saveState) {\r\n CookieComponent.set(this.attribute, 'on', {})\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.enabled')\r\n return this\r\n }\r\n\r\n private _disable = () => {\r\n if (!this._isEnabled()) {\r\n return false\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.disable')\r\n this.target?.removeAttribute(this.attribute)\r\n\r\n if (this.state.length > 0) {\r\n this.element.classList.remove(this.state)\r\n }\r\n\r\n if (this.options.saveState) {\r\n CookieComponent.delete(this.attribute)\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.disabled')\r\n return this\r\n }\r\n\r\n private _isEnabled = () => {\r\n if (!this.target) {\r\n return false\r\n }\r\n\r\n return String(this.target.getAttribute(this.attribute)).toLowerCase() === 'on'\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n // Plugin API\r\n public toggle = () => {\r\n return this._toggle()\r\n }\r\n\r\n public enable = () => {\r\n return this._enable()\r\n }\r\n\r\n public disable = () => {\r\n return this._disable()\r\n }\r\n\r\n public isEnabled = () => {\r\n return this._isEnabled()\r\n }\r\n\r\n public goElement = () => {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event?: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (el: HTMLElement) => {\r\n const toggleElement = DataUtil.get(el, 'toggle')\r\n if (toggleElement) {\r\n return toggleElement\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (selector: string) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let toggleElement = ToggleComponent.getInstance(item)\r\n if (!toggleElement) {\r\n toggleElement = new ToggleComponent(item, defaultToggleOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: ToggleOptions = defaultToggleOptions\r\n ): ToggleComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let toggle = ToggleComponent.getInstance(item)\r\n if (!toggle) {\r\n toggle = new ToggleComponent(item, options)\r\n }\r\n return toggle\r\n }\r\n\r\n public static reinitialization = () => {\r\n ToggleComponent.createInstances('[data-kt-toggle]')\r\n }\r\n\r\n public static bootstrap = () => {\r\n ToggleComponent.createInstances('[data-kt-toggle]')\r\n }\r\n}\r\n\r\nexport {ToggleComponent, defaultToggleOptions}\r\n","import {\r\n DataUtil,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getAttributeValueByBreakpoint,\r\n getViewPort,\r\n isVisibleElement,\r\n throttle,\r\n getCSS,\r\n ElementStyleUtil,\r\n} from '../_utils/index'\r\nimport {CookieComponent} from './_CookieComponent'\r\n\r\nexport interface ScrollOptions {\r\n saveState?: boolean\r\n}\r\n\r\nconst defaultScrollOptions: ScrollOptions = {\r\n saveState: true,\r\n}\r\n\r\nclass ScrollComponent {\r\n element: HTMLElement\r\n options: ScrollOptions\r\n id: string\r\n\r\n constructor(_element: HTMLElement, options: ScrollOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultScrollOptions, options)\r\n this.id = this.element.getAttribute('id') || ''\r\n this.update()\r\n // this.element.setAttribute('data-kt-scrolltop', 'true')\r\n DataUtil.set(this.element, 'scroll', this)\r\n }\r\n\r\n private getOption = (name: string) => {\r\n if (this.element.hasAttribute('data-kt-scroll-' + name) === true) {\r\n const attr = this.element.getAttribute('data-kt-scroll-' + name) || ''\r\n let value: string | JSON | boolean = getAttributeValueByBreakpoint(attr)\r\n if (value !== null && String(value) === 'true') {\r\n value = true\r\n } else if (value !== null && String(value) === 'false') {\r\n value = false\r\n }\r\n\r\n return value\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n private getHeightType = () => {\r\n if (this.getOption('height')) {\r\n return 'height'\r\n }\r\n if (this.getOption('min-height')) {\r\n return 'min-height'\r\n }\r\n if (this.getOption('max-height')) {\r\n return 'max-height'\r\n }\r\n }\r\n\r\n private getAutoHeight = () => {\r\n let height: number | string = getViewPort().height\r\n const dependencies = this.getOption('dependencies')\r\n const wrappers = this.getOption('wrappers')\r\n const offset = this.getOption('offset')\r\n\r\n // Height dependencies\r\n if (dependencies !== null) {\r\n const elements = document.querySelectorAll(dependencies as string)\r\n if (elements && elements.length > 0) {\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n const element = elements[i] as HTMLElement\r\n if (isVisibleElement(element) === false) {\r\n continue\r\n }\r\n\r\n height = height - parseInt(getCSS(element, 'height'))\r\n height = height - parseInt(getCSS(element, 'margin-top'))\r\n height = height - parseInt(getCSS(element, 'margin-bottom'))\r\n\r\n const borderTop = getCSS(element, 'border-top')\r\n if (borderTop) {\r\n height = height - parseInt(borderTop)\r\n }\r\n\r\n const borderBottom = getCSS(element, 'border-bottom')\r\n if (borderBottom) {\r\n height = height - parseInt(borderBottom)\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Wrappers\r\n if (wrappers !== null) {\r\n var elements = document.querySelectorAll(wrappers as string)\r\n if (elements && elements.length > 0) {\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n const element = elements[i] as HTMLElement\r\n\r\n if (!isVisibleElement(element)) {\r\n continue\r\n }\r\n\r\n height = height - parseInt(getCSS(element, 'margin-top'))\r\n height = height - parseInt(getCSS(element, 'margin-bottom'))\r\n height = height - parseInt(getCSS(element, 'padding-top'))\r\n height = height - parseInt(getCSS(element, 'padding-bottom'))\r\n\r\n const borderTop = getCSS(element, 'border-top')\r\n if (borderTop) {\r\n height = height - parseInt(borderTop)\r\n }\r\n\r\n const borderBottom = getCSS(element, 'border-bottom')\r\n if (borderBottom) {\r\n height = height - parseInt(borderBottom)\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Custom offset\r\n if (offset !== null) {\r\n height = height - parseInt(offset as string)\r\n }\r\n\r\n height = height - parseInt(getCSS(this.element, 'margin-top'))\r\n height = height - parseInt(getCSS(this.element, 'margin-bottom'))\r\n\r\n const borderTop = getCSS(this.element, 'border-top')\r\n if (borderTop) {\r\n height = height - parseInt(borderTop)\r\n }\r\n\r\n const borderBottom = getCSS(this.element, 'border-bottom')\r\n if (borderBottom) {\r\n height = height - parseInt(borderBottom)\r\n }\r\n\r\n height = String(height) + 'px'\r\n\r\n return height\r\n }\r\n\r\n private setupHeight = () => {\r\n let height = this.getHeight()\r\n let heightType = this.getHeightType() as string\r\n\r\n // Set height\r\n if (height !== null && height.length > 0) {\r\n ElementStyleUtil.set(this.element, heightType, height)\r\n } else {\r\n ElementStyleUtil.set(this.element, heightType, '')\r\n }\r\n }\r\n\r\n private setupState = () => {\r\n if (this.getOption('save-state') === true && this.id) {\r\n const cookie = CookieComponent.get(this.id + 'st')\r\n if (cookie) {\r\n var pos = parseInt(cookie)\r\n\r\n if (pos > 0) {\r\n this.element.scrollTop = pos\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setupScrollHandler = () => {\r\n if (this.getOption('save-state') === true && this.id) {\r\n this.element.addEventListener('scroll', this.scrollHandler)\r\n } else {\r\n this.element.removeEventListener('scroll', this.scrollHandler)\r\n }\r\n }\r\n\r\n private scrollHandler = () => {\r\n const cookieId = this.id + 'st'\r\n CookieComponent.set(cookieId, this.element.scrollTop, {})\r\n }\r\n\r\n private destroyScrollHandler = () => {\r\n this.element.removeEventListener('scroll', this.scrollHandler)\r\n }\r\n\r\n private resetHeight = () => {\r\n const heghtType = this.getHeightType()\r\n if (heghtType) {\r\n ElementStyleUtil.set(this.element, heghtType, '')\r\n }\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public update = () => {\r\n // Activate/deactivate\r\n if (\r\n this.getOption('activate') === true ||\r\n !this.element.hasAttribute('data-kt-scroll-activate')\r\n ) {\r\n this.setupHeight()\r\n this.setupScrollHandler()\r\n this.setupState()\r\n } else {\r\n this.resetHeight()\r\n this.destroyScrollHandler()\r\n }\r\n }\r\n\r\n public getHeight = () => {\r\n const heightType = this.getHeightType()\r\n const height = this.getOption(heightType || '')\r\n if (height instanceof Function) {\r\n return height.call(height)\r\n } else if (height !== null && typeof height === 'string' && height.toLowerCase() === 'auto') {\r\n return this.getAutoHeight()\r\n } else {\r\n return height\r\n }\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n // Static methods\r\n public static hasInstace(element: HTMLElement) {\r\n return DataUtil.has(element, 'scroll')\r\n }\r\n\r\n public static getInstance(element: HTMLElement) {\r\n if (element !== null && ScrollComponent.hasInstace(element)) {\r\n return DataUtil.get(element, 'scroll')\r\n }\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string) {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element: Element) => {\r\n const item = element as HTMLElement\r\n let scroll = ScrollComponent.getInstance(item)\r\n if (!scroll) {\r\n scroll = new ScrollComponent(item, defaultScrollOptions)\r\n }\r\n })\r\n }\r\n\r\n public static destroyAll(attr: string = '[data-kt-scroll=\"true\"]') {}\r\n\r\n public static bootstrap(attr: string = '[data-kt-scroll=\"true\"]') {\r\n ScrollComponent.createInstances(attr)\r\n ScrollComponent.resize()\r\n }\r\n\r\n public static createInstance = (\r\n element: HTMLElement,\r\n options: ScrollOptions = defaultScrollOptions\r\n ): ScrollComponent | undefined => {\r\n let scroll = ScrollComponent.getInstance(element)\r\n if (!scroll) {\r\n scroll = new ScrollComponent(element, options)\r\n }\r\n return scroll\r\n }\r\n\r\n public static reinitialization(attr: string = '[data-kt-scroll=\"true\"]') {\r\n ScrollComponent.createInstances(attr)\r\n }\r\n\r\n public static updateAll(){\r\n const elements = document.body.querySelectorAll('[data-kt-scroll=\"true\"]')\r\n elements.forEach((element: Element) => {\r\n const instance = ScrollComponent.getInstance(element as HTMLElement)\r\n if (instance) {\r\n instance.update()\r\n }\r\n })\r\n }\r\n\r\n public static resize() {\r\n // Window Resize Handling\r\n window.addEventListener('resize', function () {\r\n let timer\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Drawer instances on window resize\r\n ScrollComponent.updateAll();\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n}\r\n\r\nexport {ScrollComponent, defaultScrollOptions}\r\n","import {\r\n getScrollTop,\r\n getAttributeValueByBreakpoint,\r\n throttle,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getUniqueIdWithPrefix,\r\n DataUtil,\r\n ElementAnimateUtil,\r\n} from '../_utils/index'\r\n\r\nexport interface IScrollTopOptions {\r\n offset: number\r\n speed: number\r\n}\r\n\r\nconst defaultScrollTopOptions: IScrollTopOptions = {\r\n offset: 200,\r\n speed: 600,\r\n}\r\n\r\nclass ScrollTopComponent {\r\n element: HTMLElement\r\n options: IScrollTopOptions\r\n instanceUid: string\r\n\r\n constructor(_element: HTMLElement, options: IScrollTopOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultScrollTopOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('scrolltop')\r\n\r\n // Event Handlers\r\n this._handlers()\r\n\r\n // Bind Instance\r\n DataUtil.set(this.element, 'scrolltop', this)\r\n }\r\n\r\n private _handlers = () => {\r\n let timer: number\r\n window.addEventListener('scroll', () => {\r\n throttle(timer, () => {\r\n this._scroll()\r\n })\r\n })\r\n\r\n this.element.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n this._go()\r\n })\r\n }\r\n\r\n private _scroll = () => {\r\n const offset = parseInt(this._getOption('offset') as string)\r\n const pos = getScrollTop() // current vertical position\r\n if (pos > offset) {\r\n if (!document.body.hasAttribute('data-kt-scrolltop')) {\r\n document.body.setAttribute('data-kt-scrolltop', 'on')\r\n }\r\n } else {\r\n if (document.body.hasAttribute('data-kt-scrolltop')) {\r\n document.body.removeAttribute('data-kt-scrolltop')\r\n }\r\n }\r\n }\r\n\r\n private _go = () => {\r\n const speed = parseInt(this._getOption('speed') as string)\r\n ElementAnimateUtil.scrollTop(0, speed)\r\n }\r\n\r\n private _getOption = (name: string) => {\r\n const attr = this.element.getAttribute(`data-kt-scrolltop-${name}`)\r\n if (attr) {\r\n const value = getAttributeValueByBreakpoint(attr)\r\n return value !== null && String(value) === 'true'\r\n }\r\n\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n }\r\n\r\n return null\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n public go = () => {\r\n return this._go()\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (el: HTMLElement) => {\r\n const scrollTop = DataUtil.get(el, 'scrolltop')\r\n if (scrollTop) {\r\n return scrollTop\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (selector: string) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let scrollTop = ScrollTopComponent.getInstance(item)\r\n if (!scrollTop) {\r\n scrollTop = new ScrollTopComponent(item, defaultScrollTopOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: IScrollTopOptions = defaultScrollTopOptions\r\n ): ScrollTopComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let scrollTop = ScrollTopComponent.getInstance(item)\r\n if (!scrollTop) {\r\n scrollTop = new ScrollTopComponent(item, options)\r\n }\r\n return scrollTop\r\n }\r\n\r\n public static bootstrap = () => {\r\n ScrollTopComponent.createInstances('[data-kt-scrolltop=\"true\"]')\r\n }\r\n\r\n public static reinitialization = () => {\r\n ScrollTopComponent.createInstances('[data-kt-scrolltop=\"true\"]')\r\n }\r\n\r\n public static goTop = () => {\r\n ElementAnimateUtil.scrollTop(0, defaultScrollTopOptions.speed)\r\n }\r\n}\r\nexport {ScrollTopComponent, defaultScrollTopOptions}\r\n"],"sourceRoot":""}