{"version":3,"sources":["app/modules/auth/redux/AuthCRUD.ts","app/modules/auth/redux/AuthRedux.ts","_metronic/assets/ts/components/_CookieComponent.ts","_metronic/assets/ts/_utils/_ElementStyleUtil.ts","_metronic/assets/ts/_utils/_DataUtil.ts","_metronic/assets/ts/_utils/_TypesHelpers.ts","_metronic/assets/ts/_utils/_DOMEventHandlerUtil.ts","_metronic/assets/ts/_utils/ElementAnimateUtil.ts","_metronic/assets/ts/_utils/DomHelpers.ts","_metronic/assets/ts/_utils/EventHandlerUtil.ts","_metronic/assets/ts/components/_DrawerComponent.ts","_metronic/assets/ts/components/_FeedbackComponent.ts","_metronic/assets/ts/components/_ImageInputComponent.ts","_metronic/assets/ts/components/_ScrollComponent.ts","_metronic/assets/ts/components/_ScrollTopComponent.ts","_metronic/assets/ts/components/_StepperComponent.ts","_metronic/assets/ts/components/_StickyComponent.ts","_metronic/assets/ts/components/_ToggleComponent.ts","_metronic/assets/ts/components/_PasswordMeterComponent.ts","_metronic/assets/ts/components/_SwapperComponent.ts","_metronic/assets/ts/components/MenuComponent.ts","_metronic/assets/ts/components/SearchComponent.ts","app/modules/auth/components/Registration.tsx","app/modules/auth/components/ForgotPassword.tsx","_metronic/helpers/AssetHelpers.ts","_metronic/helpers/RouterHelpers.ts","_metronic/helpers/components/KTSVG.tsx","app/modules/auth/components/Login.tsx","_metronic/layout/core/DefaultLayoutConfig.ts","_metronic/layout/core/LayoutSetup.ts","_metronic/layout/core/LayoutProvider.tsx","_metronic/layout/core/PageData.tsx","_metronic/layout/core/MetronicSplashScreen.tsx","app/modules/auth/redux/AuthInit.tsx","setup/redux/RootReducer.ts","setup/redux/Store.ts","_metronic/i18n/Metronici18n.tsx","_metronic/layout/components/aside/AsideDefault.tsx","_metronic/layout/components/Footer.tsx","_metronic/layout/components/header/MenuItem.tsx","_metronic/layout/components/header/MenuInnerWithSub.tsx","_metronic/layout/components/header/MenuInner.tsx","_metronic/layout/components/header/Header.tsx","_metronic/layout/components/header/page-title/DefaultTitle.tsx","_metronic/layout/components/header/Topbar.tsx","_metronic/layout/components/header/HeaderWrapper.tsx","app/pages/media/kkdik-logo2.png","_metronic/layout/components/toolbar/Toolbar1.tsx","_metronic/layout/components/toolbar/Toolbar.tsx","_metronic/partials/layout/demos-drawer/DemosToggleDrawer.tsx","_metronic/partials/layout/RightToolbar.tsx","_metronic/layout/components/ScrollTop.tsx","_metronic/layout/components/Content.tsx","_metronic/partials/layout/header-menus/Languages.tsx","app/pages/components/ContactForm.tsx","app/pages/components/AdressCard.tsx","_metronic/partials/chat/ChatInner.tsx","_metronic/partials/layout/drawer-messenger/DrawerMessenger.tsx","_metronic/partials/content/activity/Item1.tsx","_metronic/partials/content/activity/Item2.tsx","_metronic/partials/content/activity/Item3.tsx","_metronic/partials/content/activity/Item4.tsx","_metronic/partials/content/activity/Item5.tsx","_metronic/partials/content/activity/Item6.tsx","_metronic/partials/content/activity/Item7.tsx","_metronic/partials/content/activity/Item8.tsx","_metronic/partials/layout/activity-drawer/ActivityDrawer.tsx","_metronic/partials/modals/create-app/Main.tsx","_metronic/partials/modals/invite-users/InviteUsers.tsx","_metronic/partials/modals/upgrade-plan/UpgradePlan.tsx","_metronic/layout/MasterLayout.tsx","app/pages/media/video.webm","app/pages/media/background1.webp","app/pages/media/background3.webp","app/pages/media/logo-kare.jpg","app/pages/Home.tsx","app/pages/About.tsx","app/pages/media/kkdik-logo.png","app/pages/Services.tsx","app/pages/Spage1.tsx","app/pages/Spage2.tsx","app/pages/Spage3.tsx","app/pages/Spage4.tsx","app/pages/kkdik_english.pdf","app/pages/Kkdik.tsx","app/pages/Treach.tsx","app/pages/Tpage1.tsx","app/pages/Tpage2.tsx","app/pages/components/GoogleMap.tsx","app/pages/Contact.tsx","app/routing/PrivateRoutes.tsx","app/modules/errors/components/Error500.tsx","app/modules/errors/components/Error404.tsx","app/modules/errors/ErrorsPage.tsx","_metronic/i18n/i18nProvider.tsx","_metronic/layout/MasterInit.tsx","app/App.tsx","app/routing/AppRoutes.tsx","setup/axios/SetupAxios.ts","index.tsx"],"names":["API_URL","process","GET_USER_BY_ACCESSTOKEN_URL","getUserByToken","token","axios","post","api_token","saga","actionTypes","initialAuthState","user","undefined","accessToken","reducer","persistReducer","storage","key","whitelist","state","action","type","payload","actions","login","register","logout","requestUser","fulfillUser","setUser","takeLatest","loginSaga","put","registerSaga","userRequested","getToken","auth","select","data","CookieComponent","name","matches","document","cookie","match","RegExp","replace","decodeURIComponent","value","cookieOptions","options","path","expires","Date","toUTCString","updatedCookie","encodeURIComponent","optionKey","optionValue","set","ElementStyleUtil","element","property","important","style","setProperty","attributeName","getPropertyValue","attibuteName","removeProperty","DataUtil","instance","instanceData","store","get","newMap","Map","delete","has","result","forEach","val","v","k","push","getObjectPropertyValueByKey","obj","map","Object","entries","hasOwnProperty","getUniqueIdWithPrefix","prefix","Math","floor","random","getTime","toString","stringSnakeToCamel","str","m","toUpperCase","DOMEventHandlerUtil","selector","eventName","callBack","eventId","e","targets","querySelectorAll","target","i","length","call","parentElement","addEventListener","funcFromStore","removeEventListener","calee","currentTarget","ElementAnimateUtil","from","to","duration","update","complete","easings","t","b","c","d","change","start","window","performance","now","requestAnimationFrame","loop","timestamp","time","animationName","animateClasses","split","cssClass","classList","add","one","remove","offset","targetPos","getElementOffset","top","scrollPos","pageYOffset","documentElement","scrollTop","body","animate","scrollTo","getCSS","el","styleProp","defaultView","ownerDocument","toLowerCase","getComputedStyle","getElementActualCss","prop","cache","css","getAttribute","cssText","offsetWidth","offsetHeight","setAttribute","parseFloat","attributeValue","getElementIndex","parentNode","children","getElementMatches","p","Element","prototype","f","webkitMatchesSelector","tagName","getClientRects","left","rect","getBoundingClientRect","win","pageXOffset","getScrollTop","scrollingElement","getViewPort","width","innerWidth","height","innerHeight","isVisibleElement","throttle","timer","func","delay","setTimeout","getElementChild","childNodes","child","nodeType","getElementChildren","slide","dir","speed","callback","calcHeight","getElementActualHeight","calcPaddingTop","calcPaddingBottom","parseInt","paddingTop","paddingBottom","display","overflow","getBreakpoint","breakpoint","variableName","hex","trim","getCSSVariableValue","getAttributeValueByBreakpoint","incomingAttr","jsonStr","join","matched","substring","JSON","parse","toJSON","resultKey","resultBreakpoint","EventHandlerUtil","metas","handlerId","meta","getEventMetasByName","setEventMetasByName","handerId","fired","getEventsMetaByHandlerId","setEventMetaByNameAndHandlerId","handler","this","setFiredByNameAndHandlerId","addEvent","removeEvent","on","DrawerStore","instanceId","drawerComponentObj","defaultDrawerOptions","overlay","baseClass","overlayClass","direction","DrawerComponent","_element","overlayElement","toggleElement","instanceUid","shown","lastWidth","closeElement","_handlers","togglers","_getOption","closers","preventDefault","getElementById","_toggle","_hide","_update","String","hasBaseClass","contains","bodyCanvasAttr","attr","optionName","option","trigger","_show","_deleteOverlay","removeAttribute","_createOverlay","createElement","elementZIndex","overlayZindex","append","overlayClassOption","removeChild","_getDirection","_getWidth","toggle","show","hide","isShown","goElement","off","event","assign","id","item","drawer","getInstance","hasInstace","elementId","hideAll","getAllInstances","dr","updateAll","handleDismiss","closest","bootstrap","createInstances","initGlobalHandlers","reinitialization","defaultImageInputOptions","defaultImageInputQueires","componentName","instanseQuery","inputQuery","wrapperQuery","cancelQuery","removeQuery","hiddenQuery","ImageInputComponent","_options","_queries","inputElement","wrapperElement","cancelElement","removeElement","hiddenElement","src","queries","uid","_change","files","reader","FileReader","onload","readAsDataURL","_cancel","_remove","querySelector","handlers","ImageInput","elements","createInsance","defaultScrollOptions","saveState","ScrollComponent","getOption","hasAttribute","getHeightType","getAutoHeight","dependencies","wrappers","len","borderTop","borderBottom","setupHeight","getHeight","heightType","setupState","pos","setupScrollHandler","scrollHandler","cookieId","destroyScrollHandler","resetHeight","heghtType","Function","getElement","scroll","resize","createInstance","defaultScrollTopOptions","ScrollTopComponent","_scroll","_go","go","goTop","defaultStepperOptions","startIndex","animation","animationSpeed","animationNextClass","animationPreviousClass","StepperComponent","steps","btnNext","btnPrev","btnSubmit","totatStepsNumber","passedStepIndex","currentStepIndex","_goTo","index","refreshUI","initHandlers","stepDirection","_getStepDirection","getStepContent","content","getLastStepIndex","getTotalStepsNumber","isLastStep","isFirstStep","animateClass","isBetweenStep","goto","goNext","getNextStepIndex","goPrev","getPrevStepIndex","goFirst","goLast","getCurrentStepIndex","getPassedStepIndex","destroy","console","log","stepper","defaultStickyOptions","reverse","animationClass","StickyComponent","instanceName","eventTriggerState","lastScrollTop","offsetNum","st","enable","disable","dataStickyAttr","attrValue","zindex","widthTarget","targetElement","offsetLeft","sticky","defaultToggleOptions","ToggleComponent","attribute","_isEnabled","_disable","_enable","isEnabled","elementTargetAttr","elementToggleAttr","defaultPasswordMeterOptions","minLength","checkUppercase","checkLowercase","checkDigit","checkChar","scoreHighlightClass","defaultPasswordMeterQueires","visibilityQuery","highlightQuery","PasswordMeterComponent","visibilityElement","highlightElement","score","checkSteps","reset","highlight","check","visitbility","visibleIcon","hiddenIcon","focus","test","count","items","slice","total","checkScore","getCheckScore","getScore","checkLength","checkLowerCase","passwordMeter","SwapperStore","defaultSwapperOptions","mode","defaultSwapperQueires","attrQuery","SwapperComponent","parentSelector","prepend","place","defaultMenuOptions","dropdown","hoverTimeout","accordion","slideSpeed","expand","MenuComponent","triggerElement","_setTriggerElement","_isTriggerElement","_getItemOption","_getItemElement","itemElement","sub","subItem","_getItemParentElement","parentItem","_getItemParentElements","parent","parents","buffer","unshift","_getDropdownPopperConfig","placementOption","placement","offsetValue","strategy","modifiers","flipVariations","_getItemChildElement","_getItemChildElements","_getItemSubElement","_getCss","_getItemSubType","_isItemSubShown","_isItemDropdownPermanent","_isItemParentShown","s","getElementParents","_isItemSubElement","_hasItemSub","_getItemLinkElement","_getItemToggleElement","_showDropdown","hideDropdowns","parentZindex","bufferNode","position","isNaN","getHighestZindex","initDropdownPopper","appendChild","reference","attach","popper","createPopper","_hideDropdown","referenceNode","insertBefore","nextSibling","insertAfterElement","destroyDropdownPopper","_showAccordion","_hideAccordions","subElement","_hideAccordion","itemsToHide","itemToHide","_reset","removeClass","_destroy","_mouseout","timeout","_mouseover","clearTimeout","_dismiss","itemSubType","_link","_click","click","link","dismiss","mouseover","mouseout","getItemTriggerType","getItemSubType","getItemLinkElement","getItemToggleElement","getItemSubElement","getItemParentElements","isItemSubShown","isItemParentShown","getTriggerElement","isItemDropdownPermanent","hideAccordions","elementMenu","menu","menuData","subMenu","skip","updateDropdowns","forceUpdate","menuItem","menuInstance","menuItems","menuObj","stopPropagation","defaultSearchOptions","keypress","enter","layout","showOnFocus","defaultSearchQueires","SearchComponent","contentElement","formElement","spinnerElement","clearElement","submitElement","toolbarElement","resultsElement","suggestionElement","emptyElement","processing","menuObject","_getElement","getResponsiveFormMode","responsive","blur","charCode","keyCode","search","input","clear","responsiveFormMode","isProcessing","getQuery","getMenu","getFormElement","context","Search","Yup","shape","firstname","min","max","required","email","lastname","password","changepassword","when","is","then","oneOf","acceptTerms","toAbsoluteUrl","pathname","checkIsActive","url","current","getCurrentUrl","indexOf","KTSVG","className","svgClassName","DefaultLayoutConfig","main","primaryColor","darkSkinEnabled","loader","scrolltop","header","fixed","desktop","tabletAndMobile","menuIcon","megaMenu","aside","theme","minimized","minimize","hoverable","toolbar","tabletAndMobileMode","layouts","toolbar1","heightAndTabletMobileMode","toolbar2","toolbar3","toolbar4","toolbar5","footer","pageTitle","breadCrumbs","description","responsiveBreakpoint","responsiveTarget","LAYOUT_CONFIG_KEY","getEmptyHTMLAttributes","asideMenu","headerMobile","headerMenu","headerContainer","getEmptyCSSVariables","LayoutSetup","classes","asideToggle","toolbarContainer","contentContainer","footerContainer","sidebar","attributes","cssVariables","config","Array","backgroundImage","class","typeOptions","bodyStyles","initLayout","initHeader","initPageTitle","initToolbar","initContent","initAside","initFooter","initAsideMenu","fieldsToUpdate","updatedConfig","initCSSClasses","initCSSVariables","initHTMLAttributes","isLoaded","initConfig","localStorage","setItem","stringify","er","error","setLayout","ls","getItem","getLayout","updatePartialConfig","LayoutContext","createContext","disableSplashScreen","splashScreen","LayoutProvider","useState","setConfig","setClasses","setAttributes","setCSSVariables","_themeConfig","enableSplashScreen","cl","useEffect","Provider","useLayout","useContext","PageDataContext","setPageTitle","_title","setPageBreadcrumbs","_breadcrumbs","setPageDescription","_description","PageDataProvider","pageDescription","pageBreadcrumbs","usePageData","MetronicSplashScreenContext","LayoutSplashScreen","visible","setCount","prev","connector","connect","props","didRequest","useRef","dispatch","useDispatch","showSplashScreen","setShowSplashScreen","useSelector","shallowEqual","a","rootSaga","rootReducer","combineReducers","all","sagaMiddleware","createSagaMiddleware","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","thunk","configureStore","devTools","enhancers","reduxBatch","persistor","persistStore","run","I18N_CONFIG_KEY","REACT_APP_I18N_CONFIG_KEY","initialState","selectedLang","I18nContext","useLang","MetronicI18nProvider","lang","getConfig","AsideDefault","Footer","location","backgroundColor","color","getFullYear","href","rel","MenuItem","title","icon","fontIcon","hasArrow","hasBullet","fontSize","clsx","MenuInnerWithSub","menuTrigger","menuPlacement","isMega","menuItemRef","useLocation","ref","active","MenuInner","Header","DefaultTitle","isSeparator","isActive","Topbar","HeaderWrapper","marginRight","alt","Toolbar1","Toolbar","DemosToggleDrawer","RightToolbar","zIndex","marginTop","ScrollTop","isFirstRun","reInitialization","stickyHeader","updateHeaderSticky","Content","SignupSchema","Name","Email","Subject","Message","ContactForm","btnRef","onClick","initialValues","validationSchema","onSubmit","values","setSubmitting","resetForm","response","res","StatusCode","Swal","fire","heightAuto","text","StatusText","confirmButtonText","confirmButtonColor","postData","errors","touched","htmlFor","placeholder","onInvalid","as","rows","AdressCard","head","minHeight","padding","ChatInner","DrawerMessenger","isDrawer","Item1","Item2","Item3","Item4","Item5","Item6","Item7","Item8","ActivityDrawer","inits","appName","category","framework","dbName","dbType","nameOnCard","cardNumber","cardExpiryMonth","cardExpiryYear","cardCvv","saveCard","createAppSchema","label","Main","stepperRef","currentSchema","setCurrentSchema","initValues","prevStep","noValidate","InviteUsers","access","charAt","defaultValue","plans","subTitle","priceMonth","priceAnnual","default","custom","features","supported","UpgradePlan","currentState","setCurrentState","selected","setSelected","plan","checked","onChange","feature","MasterLayout","AdaptiveHeight","slider","updateHeight","container","slides","track","details","Home","React","currentSlide","setCurrentSlide","loaded","setLoaded","useKeenSlider","defaultAnimation","easing","renderMode","rubberband","initial","slideChanged","created","range","align","vid","mouseOver","clearNextTimeout","nextTimeout","next","pause","play","scrollY","sliderRef","instanceRef","Helmet","minWidth","video","autoPlay","muted","background1","background3","Arrow","disabled","keys","idx","moveToIdx","textAlign","logokare","disabeld","xmlns","viewBox","About","Services","kkdiklogo","Spage1","Spage2","Spage3","Spage4","Kkdik","kkdik_english","download","Treach","Tpage1","Tpage2","GoogleMap","border","Contact","PrivateRoutes","Error500","Error404","ErrorsLayout","ErrorsPage","allMessages","de","en","es","fr","ja","zh","I18nProvider","locale","messages","MasterInit","App","fallback","AppRoutes","basename","defaults","headers","Accept","interceptors","request","use","getState","Authorization","err","Promise","reject","_redux","Chart","registerables","ReactDOM","render","loading"],"mappings":"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","file":"static/js/main.a922fff4.chunk.js","sourcesContent":["import axios from 'axios'\nimport {UserModel} from '../models/UserModel'\n\nconst API_URL = process.env.REACT_APP_API_URL\n\nexport const GET_USER_BY_ACCESSTOKEN_URL = `${API_URL}/verify_token`\nexport const LOGIN_URL = `${API_URL}/login`\nexport const REGISTER_URL = `${API_URL}/register`\nexport const REQUEST_PASSWORD_URL = `${API_URL}/forgot_password`\n\n// Server should return AuthModel\nexport function login(email: string, password: string) {\n return axios.post(LOGIN_URL, {\n email,\n password,\n })\n}\n\n// Server should return AuthModel\nexport function register(email: string, firstname: string, lastname: string, password: string, password_confirmation: string) {\n return axios.post(REGISTER_URL, {\n email,\n first_name: firstname,\n last_name: lastname,\n password,\n password_confirmation\n })\n}\n\n// Server should return object => { result: boolean } (Is Email in DB)\nexport function requestPassword(email: string) {\n return axios.post<{result: boolean}>(REQUEST_PASSWORD_URL, {\n email\n })\n}\n\nexport function getUserByToken(token:string) {\n return axios.post(GET_USER_BY_ACCESSTOKEN_URL, {\n api_token:token\n })\n}\n","import {Action} from '@reduxjs/toolkit'\nimport {persistReducer} from 'redux-persist'\nimport storage from 'redux-persist/lib/storage'\nimport {put, takeLatest, select} from 'redux-saga/effects'\nimport {UserModel} from '../models/UserModel'\nimport {getUserByToken} from \"./AuthCRUD\";\n\nexport interface ActionWithPayload extends Action {\n payload?: T\n}\n\nexport const actionTypes = {\n Login: '[Login] Action',\n Logout: '[Logout] Action',\n Register: '[Register] Action',\n UserRequested: '[Request User] Action',\n UserLoaded: '[Load User] Auth API',\n SetUser: '[Set User] Action',\n}\n\nconst initialAuthState: IAuthState = {\n user: undefined,\n accessToken: undefined,\n}\n\nexport interface IAuthState {\n user?: UserModel\n accessToken?: string\n}\n\nexport const reducer = persistReducer(\n {storage, key: 'v100-demo1-auth', whitelist: ['user', 'accessToken']},\n (state: IAuthState = initialAuthState, action: ActionWithPayload) => {\n switch (action.type) {\n case actionTypes.Login: {\n const accessToken = action.payload?.accessToken\n return {accessToken, user: undefined}\n }\n\n case actionTypes.Register: {\n const accessToken = action.payload?.accessToken\n return {accessToken, user: undefined}\n }\n\n case actionTypes.Logout: {\n return initialAuthState\n }\n\n case actionTypes.UserLoaded: {\n const user = action.payload?.user\n return {...state, user}\n }\n\n case actionTypes.SetUser: {\n const user = action.payload?.user\n return {...state, user}\n }\n\n default:\n return state\n }\n }\n)\n\nexport const actions = {\n login: (accessToken: string) => ({type: actionTypes.Login, payload: {accessToken}}),\n register: (accessToken: string) => ({\n type: actionTypes.Register,\n payload: {accessToken},\n }),\n logout: () => ({type: actionTypes.Logout}),\n requestUser: () => ({\n type: actionTypes.UserRequested,\n }),\n fulfillUser: (user: UserModel) => ({type: actionTypes.UserLoaded, payload: {user}}),\n setUser: (user: UserModel) => ({type: actionTypes.SetUser, payload: {user}})\n}\n\nexport function* saga() {\n yield takeLatest(actionTypes.Login, function* loginSaga() {\n yield put(actions.requestUser())\n })\n\n yield takeLatest(actionTypes.Register, function* registerSaga() {\n yield put(actions.requestUser())\n })\n\n yield takeLatest(actionTypes.UserRequested, function* userRequested() {\n // @ts-ignore\n const getToken = (state) => state.auth.accessToken;\n // @ts-ignore\n let token = yield select(getToken)\n const {data: user} = yield getUserByToken(token)\n yield put(actions.fulfillUser(user))\n })\n}\n","/* eslint-disable no-useless-escape */\n// DOCS: https://javascript.info/cookie\nexport class CookieComponent {\n /**\n * Returns the cookie with the given name, or undefined if not found\n *\n * @param {string} name - cookie name\n * @returns string | null\n */\n public static get(name: string): string | undefined {\n let matches = document.cookie.match(\n new RegExp('(?:^|; )' + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + '=([^;]*)')\n )\n return matches ? decodeURIComponent(matches[1]) : undefined\n }\n\n /**\n * Please note that a cookie value is encoded,\n * so getCookie uses a built-in decodeURIComponent function to decode it.\n *\n * @param {string} name - cookie name\n * @param {string | number | boolean} value - cookie value\n * @param {any} cookieOptions - cookie options\n * @returns void\n */\n public static set(name: string, value: string | number | boolean, cookieOptions: any): void {\n const options = {\n path: '/',\n // add other defaults here if necessary\n ...cookieOptions,\n }\n\n if (options.expires instanceof Date) {\n options.expires = options.expires.toUTCString()\n }\n\n let updatedCookie = encodeURIComponent(name) + '=' + encodeURIComponent(value)\n\n for (let optionKey in options) {\n updatedCookie += '; ' + optionKey\n let optionValue = options[optionKey]\n if (optionValue !== true) {\n updatedCookie += '=' + optionValue\n }\n }\n\n document.cookie = updatedCookie\n }\n\n /**\n * To delete a cookie, we can call it with a negative expiration date\n *\n * @param {string} name\n */\n public static delete(name: string): void {\n CookieComponent.set(name, '', {\n 'max-age': -1,\n })\n }\n}\n","export class ElementStyleUtil {\n public static set(element: HTMLElement, property: string, value?: any, important?: boolean) {\n if (important) {\n element.style.setProperty(property, value, 'important')\n } else {\n element.style.setProperty(property, value)\n }\n }\n\n public static get(element: HTMLElement, attributeName: string) {\n return element.style.getPropertyValue(attributeName)\n }\n\n public static remove(element: HTMLElement, attibuteName: string) {\n element.style.removeProperty(attibuteName)\n }\n}\n","export class DataUtil {\n static store: Map> = new Map()\n\n public static set(instance: HTMLElement | undefined, key: string, data: any): void {\n if (!instance) {\n return\n }\n\n const instanceData = DataUtil.store.get(instance)\n if (!instanceData) {\n const newMap = new Map().set(key, data)\n DataUtil.store.set(instance, newMap)\n return\n }\n\n instanceData.set(key, data)\n }\n\n public static get(instance: HTMLElement, key: string): any | undefined {\n const instanceData = DataUtil.store.get(instance)\n if (!instanceData) {\n return\n }\n\n return instanceData.get(key)\n }\n\n public static remove(instance: HTMLElement, key: string): void {\n const instanceData = DataUtil.store.get(instance)\n if (!instanceData) {\n return\n }\n\n instanceData.delete(key)\n }\n\n public static has(instance: HTMLElement, key: string): boolean {\n const instanceData = DataUtil.store.get(instance)\n if (instanceData) {\n return instanceData.has(key)\n }\n\n return false\n }\n\n public static getAllInstancesByKey(key: string) {\n const result: any[] = []\n DataUtil.store.forEach((val) => {\n val.forEach((v, k) => {\n if (k === key) {\n result.push(v)\n }\n })\n })\n return result\n }\n}\n","function getObjectPropertyValueByKey(obj: any, key: string): any | undefined {\n const map = new Map(Object.entries(obj))\n if (obj.hasOwnProperty(key) && map) {\n return map.get(key)\n }\n}\n\n/**\n * Generates unique ID for give prefix.\n * @param {string} prefix Prefix for generated ID\n * @returns {boolean}\n */\nfunction getUniqueIdWithPrefix(prefix: string | undefined): string {\n const result = Math.floor(Math.random() * new Date().getTime()).toString()\n if (!prefix) {\n return result\n }\n\n return `${prefix}${result}`\n}\n\n/* eslint-disable no-useless-escape */\nfunction stringSnakeToCamel(str: string): string {\n return str.replace(/(\\-\\w)/g, function (m) {\n return m[1].toUpperCase()\n })\n}\n\nfunction toJSON(value: string | JSON): JSON | undefined {\n if (typeof value !== 'string') {\n return value\n }\n\n if (!value) {\n return undefined\n }\n\n // (\"'\" => \"\\\"\");\n const result = value\n .toString()\n .split('')\n .map((el) => (el !== \"'\" ? el : '\"'))\n .join('')\n var jsonStr = result.replace(/(\\w+:)|(\\w+ :)/g, function (matched) {\n return '\"' + matched.substring(0, matched.length - 1) + '\":'\n })\n try {\n return JSON.parse(jsonStr)\n } catch {\n return undefined\n }\n}\n\nexport {getObjectPropertyValueByKey, getUniqueIdWithPrefix, stringSnakeToCamel, toJSON}\n","import {getUniqueIdWithPrefix} from './_TypesHelpers'\n\nexport class DOMEventHandlerUtil {\n public static store = new Map()\n\n public static on(\n element: HTMLElement,\n selector: string,\n eventName: string,\n callBack: any\n ): string {\n const eventId = getUniqueIdWithPrefix('DOMEvent')\n DOMEventHandlerUtil.store.set(eventId, (e: Event) => {\n const targets = element.querySelectorAll(selector)\n let target: HTMLElement | null = e.target as HTMLElement\n while (target && target !== element) {\n for (let i = 0; i < targets.length; i++) {\n if (target === targets[i]) {\n callBack.call(target, e)\n }\n }\n\n if (target.parentElement) {\n target = target.parentElement\n } else {\n target = null\n }\n }\n })\n element.addEventListener(eventName, DOMEventHandlerUtil.store.get(eventId))\n return eventId\n }\n\n public static off(element: HTMLElement, eventName: string, eventId: string): void {\n const funcFromStore = DOMEventHandlerUtil.store.get(eventId)\n if (!funcFromStore) {\n return\n }\n\n element.removeEventListener(eventName, funcFromStore)\n DOMEventHandlerUtil.store.delete(eventId)\n }\n\n public static one(element: HTMLElement, eventName: string, callBack: Function): void {\n element.addEventListener(eventName, function calee(e) {\n // remove event\n if (e.target && e.target.removeEventListener) {\n e.target.removeEventListener(e.type, calee)\n }\n\n if (element && e && e.currentTarget) {\n // if (element && element.removeEventListener && e && e.currentTarget) {\n e.currentTarget.removeEventListener(e.type, calee)\n }\n\n // call hander\n return callBack(e)\n })\n }\n}\n","import {DOMEventHandlerUtil} from './_DOMEventHandlerUtil'\nimport {ElementStyleUtil} from './_ElementStyleUtil'\nimport {getElementOffset} from './DomHelpers'\n\nexport class ElementAnimateUtil {\n public static animate(\n from: number,\n to: number,\n duration: number,\n update: Function,\n complete?: Function\n ) {\n /**\n * TinyAnimate.easings\n * Adapted from jQuery Easing\n */\n const easings = {\n linear: function (t: number, b: number, c: number, d: number) {\n return (c * t) / d + b\n },\n }\n\n // Create mock done() function if necessary\n if (!complete) {\n complete = function () {}\n }\n\n // Animation loop\n // let canceled = false;\n const change = to - from\n\n function loop(timestamp: number) {\n var time = (timestamp || +new Date()) - start\n\n if (time >= 0) {\n update(easings.linear(time, from, change, duration))\n }\n if (time >= 0 && time >= duration) {\n update(to)\n if (complete) {\n complete()\n }\n } else {\n window.requestAnimationFrame(loop)\n }\n }\n\n update(from)\n\n // Start animation loop\n const start =\n window.performance && window.performance.now ? window.performance.now() : +new Date()\n\n window.requestAnimationFrame(loop)\n }\n\n public static animateClass(\n element: HTMLElement,\n animationName: string,\n callBack?: Function\n ): void {\n const animateClasses = animationName.split(' ')\n animateClasses.forEach((cssClass) => element.classList.add(cssClass))\n DOMEventHandlerUtil.one(element, 'animationend', function () {\n animateClasses.forEach((cssClass) => element.classList.remove(cssClass))\n })\n\n if (callBack) {\n DOMEventHandlerUtil.one(element, 'animationend', callBack)\n }\n }\n\n public static transitionEnd(element: HTMLElement, callBack: Function) {\n DOMEventHandlerUtil.one(element, 'transitionend', callBack)\n }\n\n public static animationEnd(element: HTMLElement, callBack: Function) {\n DOMEventHandlerUtil.one(element, 'animationend', callBack)\n }\n\n public static animationDelay(element: HTMLElement, value: string) {\n ElementStyleUtil.set(element, 'animation-delay', value)\n }\n\n public static animationDuration(element: HTMLElement, value: string) {\n ElementStyleUtil.set(element, 'animation-duration', value)\n }\n\n public static scrollTo(element: HTMLElement | null, offset: number, duration: number = 500) {\n let targetPos = element ? getElementOffset(element).top : 0\n let scrollPos =\n window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0\n\n if (offset) {\n scrollPos += offset\n targetPos = targetPos - offset\n }\n\n const from = scrollPos\n const to = targetPos\n\n ElementAnimateUtil.animate(from, to, duration, function (value: number) {\n document.documentElement.scrollTop = value\n // document.body.parentNode.scrollTop = value;\n document.body.scrollTop = value\n }) //, easing, done\n }\n public static scrollTop(offset: number, duration: number) {\n ElementAnimateUtil.scrollTo(null, offset, duration)\n }\n}\n","import {OffsetModel} from './models/OffsetModel'\nimport {ViewPortModel} from './models/ViewPortModel'\nimport {ElementStyleUtil} from './_ElementStyleUtil'\nimport {DataUtil} from './_DataUtil'\nimport {ElementAnimateUtil} from './ElementAnimateUtil'\nimport {getObjectPropertyValueByKey, toJSON} from './_TypesHelpers'\n\nfunction getCSS(el: HTMLElement, styleProp: string) {\n const defaultView = (el.ownerDocument || document).defaultView\n\n if (!defaultView) {\n return ''\n }\n\n // sanitize property name to css notation\n // (hyphen separated words eg. font-Size)\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase()\n\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\n}\n\nfunction getCSSVariableValue(variableName: string) {\n let hex = getComputedStyle(document.documentElement).getPropertyValue(variableName)\n if (hex && hex.length > 0) {\n hex = hex.trim()\n }\n\n return hex\n}\n\nfunction getElementActualCss(el: HTMLElement, prop: any, cache: boolean) {\n let css = ''\n\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\n let value\n\n // the element is hidden so:\n // making the el block so we can meassure its height but still be hidden\n css = el.style.cssText\n el.style.cssText = 'position: absolute; visibility: hidden; display: block;'\n\n if (prop === 'width') {\n value = el.offsetWidth\n } else if (prop === 'height') {\n value = el.offsetHeight\n }\n\n el.style.cssText = css\n\n // store it in cache\n if (value !== undefined) {\n el.setAttribute('kt-hidden-' + prop, value.toString())\n return parseFloat(value.toString())\n }\n return 0\n } else {\n // store it in cache\n const attributeValue = el.getAttribute('kt-hidden-' + prop)\n if (attributeValue || attributeValue === '0') {\n return parseFloat(attributeValue)\n }\n }\n}\n\nfunction getElementActualHeight(el: HTMLElement) {\n return getElementActualCss(el, 'height', false)\n}\n\nfunction getElementActualWidth(el: HTMLElement, cache?: boolean) {\n return getElementActualCss(el, 'width', false)\n}\n\nfunction getElementIndex(element: HTMLElement) {\n if (element.parentNode) {\n const c = element.parentNode.children\n for (let i = 0; i < c.length; i++) {\n if (c[i] === element) return i\n }\n }\n return -1\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\nfunction getElementMatches(element: HTMLElement, selector: string) {\n const p = Element.prototype\n const f = p.matches || p.webkitMatchesSelector\n\n if (element && element.tagName) {\n return f.call(element, selector)\n } else {\n return false\n }\n}\n\nfunction getElementOffset(el: HTMLElement): OffsetModel {\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!el.getClientRects().length) {\n return {top: 0, left: 0}\n }\n\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n const rect = el.getBoundingClientRect()\n const win = el.ownerDocument.defaultView\n if (win) {\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset,\n }\n }\n\n return rect\n}\n\nfunction getElementParents(element: Element, selector: string) {\n // Element.matches() polyfill\n if (!Element.prototype.matches) {\n Element.prototype.matches = function (s) {\n const matches = (document || this.ownerDocument).querySelectorAll(s)\n let i = matches.length\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1\n }\n }\n\n // Set up a parent array\n const parents: Array = []\n\n let el: Element | null = element\n\n // Push each parent element to the array\n for (; el && el !== document.body; el = el.parentElement) {\n if (selector) {\n if (el.matches(selector)) {\n parents.push(el)\n }\n continue\n }\n parents.push(el)\n }\n\n // Return our parent array\n return parents\n}\n\nfunction getHighestZindex(el: HTMLElement) {\n let bufferNode: Node | null = el as Node\n let buffer = el\n while (bufferNode && bufferNode !== document) {\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\n // This makes behavior of this function consistent across browsers\n // WebKit always returns auto if the element is positioned\n const position = buffer.style.getPropertyValue('position')\n if (position === 'absolute' || position === 'relative' || position === 'fixed') {\n // IE returns 0 when zIndex is not specified\n // other browsers return a string\n // we ignore the case of nested elements with an explicit value of 0\n //
\n const value = parseInt(buffer.style.getPropertyValue('z-index'))\n if (!isNaN(value) && value !== 0) {\n return value\n }\n }\n\n bufferNode = bufferNode.parentNode\n buffer = bufferNode as HTMLElement\n }\n return null\n}\n\nfunction getScrollTop(): number {\n return (document.scrollingElement || document.documentElement).scrollTop\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth\nfunction getViewPort(): ViewPortModel {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n}\n\nfunction insertAfterElement(el: HTMLElement, referenceNode: HTMLElement) {\n return referenceNode.parentNode?.insertBefore(el, referenceNode.nextSibling)\n}\n\nfunction isElementHasClasses(element: HTMLElement, classesStr: string): boolean {\n const classes = classesStr.split(' ')\n for (let i = 0; i < classes.length; i++) {\n if (!element.classList.contains(classes[i])) {\n return false\n }\n }\n\n return true\n}\n\nfunction isVisibleElement(element: HTMLElement): boolean {\n return !(element.offsetWidth === 0 && element.offsetHeight === 0)\n}\n\n// Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds\nfunction throttle(timer: number | undefined, func: Function, delay?: number) {\n // If setTimeout is already scheduled, no need to do anything\n if (timer) {\n return\n }\n\n // Schedule a setTimeout after delay seconds\n timer = window.setTimeout(function () {\n func()\n\n // Once setTimeout function execution is finished, timerId = undefined so that in
\n // the next scroll event function execution can be scheduled by the setTimeout\n timer = undefined\n }, delay)\n}\n\nfunction getElementChildren(element: HTMLElement, selector: string): Array | null {\n if (!element || !element.childNodes) {\n return null\n }\n\n const result: Array = []\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i]\n // child.nodeType == 1 => Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference\n if (child.nodeType === 1 && getElementMatches(child as HTMLElement, selector)) {\n result.push(child as HTMLElement)\n }\n }\n\n return result\n}\n\nfunction getElementChild(element: HTMLElement, selector: string): HTMLElement | null {\n const children = getElementChildren(element, selector)\n return children ? children[0] : null\n}\n\nfunction isMobileDevice(): boolean {\n let test = getViewPort().width < +getBreakpoint('lg') ? true : false\n\n if (test === false) {\n // For use within normal web clients\n test = navigator.userAgent.match(/iPad/i) != null\n }\n\n return test\n}\n\nfunction slide(el: HTMLElement, dir: string, speed: number, callback: any) {\n if (\n !el ||\n (dir === 'up' && isVisibleElement(el) === false) ||\n (dir === 'down' && isVisibleElement(el) === true)\n ) {\n return\n }\n\n speed = speed ? speed : 600\n let calcHeight = getElementActualHeight(el)\n let calcPaddingTop: number = 0\n let calcPaddingBottom: number = 0\n\n if (ElementStyleUtil.get(el, 'padding-top') && DataUtil.get(el, 'slide-padding-top') !== true) {\n DataUtil.set(el, 'slide-padding-top', ElementStyleUtil.get(el, 'padding-top'))\n }\n\n if (\n ElementStyleUtil.get(el, 'padding-bottom') &&\n DataUtil.has(el, 'slide-padding-bottom') !== true\n ) {\n DataUtil.set(el, 'slide-padding-bottom', ElementStyleUtil.get(el, 'padding-bottom'))\n }\n\n if (DataUtil.has(el, 'slide-padding-top')) {\n calcPaddingTop = parseInt(DataUtil.get(el, 'slide-padding-top'))\n }\n\n if (DataUtil.has(el, 'slide-padding-bottom')) {\n calcPaddingBottom = parseInt(DataUtil.get(el, 'slide-padding-bottom'))\n }\n\n if (dir === 'up') {\n // up\n el.style.cssText = 'display: block; overflow: hidden;'\n\n if (calcPaddingTop) {\n ElementAnimateUtil.animate(0, calcPaddingTop, speed, function (value: number) {\n el.style.paddingTop = calcPaddingTop - value + 'px'\n })\n }\n\n if (calcPaddingBottom) {\n ElementAnimateUtil.animate(0, calcPaddingBottom, speed, function (value: number) {\n el.style.paddingBottom = calcPaddingBottom - value + 'px'\n })\n }\n\n ElementAnimateUtil.animate(\n 0,\n calcHeight || 0,\n speed,\n function (value: number) {\n el.style.height = (calcHeight || 0) - value + 'px'\n },\n function () {\n el.style.height = ''\n el.style.display = 'none'\n\n if (typeof callback === 'function') {\n callback()\n }\n }\n )\n } else if (dir === 'down') {\n // down\n el.style.cssText = 'display: block; overflow: hidden;'\n\n if (calcPaddingTop) {\n ElementAnimateUtil.animate(\n 0,\n calcPaddingTop,\n speed,\n function (value: number) {\n //\n el.style.paddingTop = value + 'px'\n },\n function () {\n el.style.paddingTop = ''\n }\n )\n }\n\n if (calcPaddingBottom) {\n ElementAnimateUtil.animate(\n 0,\n calcPaddingBottom,\n speed,\n function (value: number) {\n el.style.paddingBottom = value + 'px'\n },\n function () {\n el.style.paddingBottom = ''\n }\n )\n }\n\n ElementAnimateUtil.animate(\n 0,\n calcHeight || 0,\n speed,\n function (value: number) {\n el.style.height = value + 'px'\n },\n function () {\n el.style.height = ''\n el.style.display = ''\n el.style.overflow = ''\n\n if (typeof callback === 'function') {\n callback()\n }\n }\n )\n }\n}\n\nfunction slideUp(el: HTMLElement, speed: number, callback: any) {\n slide(el, 'up', speed, callback)\n}\n\nfunction slideDown(el: HTMLElement, speed: number, callback: any) {\n slide(el, 'down', speed, callback)\n}\n\nfunction getBreakpoint(breakpoint: string) {\n let value: number | string = getCSSVariableValue('--bs-' + breakpoint)\n if (value) {\n value = parseInt(value.trim())\n }\n\n return value\n}\n\nfunction getAttributeValueByBreakpoint(incomingAttr: string): string | JSON {\n let value = toJSON(incomingAttr)\n if (typeof value !== 'object') {\n return incomingAttr\n }\n\n const width = getViewPort().width\n let resultKey\n let resultBreakpoint = -1\n let breakpoint\n\n for (let key in value) {\n if (key === 'default') {\n breakpoint = 0\n } else {\n breakpoint = getBreakpoint(key) ? +getBreakpoint(key) : parseInt(key)\n }\n\n if (breakpoint <= width && breakpoint > resultBreakpoint) {\n resultKey = key\n resultBreakpoint = breakpoint\n }\n }\n\n return resultKey ? getObjectPropertyValueByKey(value, resultKey) : value\n}\n\nfunction colorLighten(color: string, amount: number) {\n const addLight = (_color: string, _amount: number) => {\n const cc = parseInt(_color, 16) + _amount\n const cNum = cc > 255 ? 255 : cc\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\n return c\n }\n\n color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color\n amount = parseInt(((255 * amount) / 100).toString())\n return (color = `#${addLight(color.substring(0, 2), amount)}${addLight(\n color.substring(2, 4),\n amount\n )}${addLight(color.substring(4, 6), amount)}`)\n}\n\nfunction colorDarken(color: string, amount: number) {\n const subtractLight = (_color: string, _amount: number) => {\n const cc = parseInt(color, 16) - amount\n const cNum = cc < 0 ? 0 : cc\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\n return c\n }\n\n color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color\n amount = parseInt(((255 * amount) / 100).toString())\n\n return (color = `#${subtractLight(color.substring(0, 2), amount)}${subtractLight(\n color.substring(2, 4),\n amount\n )}${subtractLight(color.substring(4, 6), amount)}`)\n}\n\nexport {\n getBreakpoint,\n getCSS,\n getCSSVariableValue,\n getElementActualCss,\n getElementActualHeight,\n getElementActualWidth,\n getElementIndex,\n getElementMatches,\n getElementOffset,\n getElementParents,\n getHighestZindex,\n getScrollTop,\n getViewPort,\n insertAfterElement,\n isElementHasClasses,\n isVisibleElement,\n throttle,\n getElementChildren,\n getElementChild,\n isMobileDevice,\n slide,\n slideUp,\n slideDown,\n getAttributeValueByBreakpoint,\n colorLighten,\n colorDarken,\n}\n","import {DataUtil} from './_DataUtil'\nimport {getUniqueIdWithPrefix} from './_TypesHelpers'\n\nexport interface EventMeta {\n name: string\n callback: Function\n one: boolean\n fired: boolean\n}\n\nexport class EventHandlerUtil {\n static store: Map> = new Map()\n\n private static setEventMetasByName(name: string, metas: Map): void {\n EventHandlerUtil.store.set(name, metas)\n }\n\n private static getEventMetasByName(name: string): Map | undefined {\n return EventHandlerUtil.store.get(name)\n }\n\n private static setEventMetaByNameAndHandlerId(\n name: string,\n handlerId: string,\n meta: EventMeta\n ): void {\n let metas = EventHandlerUtil.getEventMetasByName(name)\n if (!metas) {\n metas = new Map()\n }\n\n metas.set(handlerId, meta)\n EventHandlerUtil.setEventMetasByName(name, metas)\n }\n\n private static getEventsMetaByHandlerId(name: string, handlerId: string): EventMeta | undefined {\n const metas = EventHandlerUtil.store.get(name)\n if (!metas) {\n return\n }\n\n return metas.get(handlerId)\n }\n\n private static setFiredByNameAndHandlerId(name: string, handerId: string, fired: boolean): void {\n const meta = EventHandlerUtil.getEventsMetaByHandlerId(name, handerId)\n if (!meta) {\n return\n }\n\n meta.fired = fired\n EventHandlerUtil.setEventMetaByNameAndHandlerId(name, handerId, meta)\n }\n\n private static addEvent(\n element: HTMLElement,\n name: string,\n callback: Function,\n one: boolean = false\n ) {\n const handlerId = getUniqueIdWithPrefix('event')\n DataUtil.set(element, name, handlerId)\n const meta: EventMeta = {\n name: name,\n callback: callback,\n one: one,\n fired: false,\n }\n\n EventHandlerUtil.setEventMetaByNameAndHandlerId(name, handlerId, meta)\n }\n\n private static removeEvent(element: HTMLElement, name: string) {\n const handlerId = DataUtil.get(element, name)\n if (!handlerId) {\n return\n }\n\n const metas = EventHandlerUtil.getEventMetasByName(name)\n if (!metas) {\n return\n }\n\n metas.delete(handlerId)\n EventHandlerUtil.setEventMetasByName(name, metas)\n }\n\n public static trigger(element: HTMLElement, name: string, target?: any, e?: Event) {\n if (DataUtil.has(element, name)) {\n const handlerId = DataUtil.get(element, name)\n if (!handlerId) {\n return undefined\n }\n\n const handler = EventHandlerUtil.getEventsMetaByHandlerId(name, handlerId)\n if (handler) {\n if (handler.name === name) {\n if (handler.one === true) {\n if (handler.fired === false) {\n EventHandlerUtil.setFiredByNameAndHandlerId(name, handlerId, true)\n return handler.callback.call(this, target, e)\n }\n } else {\n return handler.callback.call(this, target, e)\n }\n }\n }\n }\n\n return null\n }\n\n public static on = function (element: HTMLElement, name: string, callBack: Function): void {\n EventHandlerUtil.addEvent(element, name, callBack, false)\n }\n\n public static one(element: HTMLElement, name: string, callBack: Function): void {\n EventHandlerUtil.addEvent(element, name, callBack, true)\n }\n\n public static off(element: HTMLElement, name: string): void {\n EventHandlerUtil.removeEvent(element, name)\n }\n}\n","import {\n EventHandlerUtil,\n getUniqueIdWithPrefix,\n getObjectPropertyValueByKey,\n stringSnakeToCamel,\n getAttributeValueByBreakpoint,\n throttle,\n getCSS,\n DOMEventHandlerUtil,\n ElementStyleUtil,\n} from '../_utils/index'\n\nexport class DrawerStore {\n static store: Map = new Map()\n\n public static set(instanceId: string, drawerComponentObj: DrawerComponent): void {\n if (DrawerStore.has(instanceId)) {\n return\n }\n\n DrawerStore.store.set(instanceId, drawerComponentObj)\n }\n\n public static get(instanceId: string): DrawerComponent | undefined {\n if (!DrawerStore.has(instanceId)) {\n return\n }\n return DrawerStore.store.get(instanceId)\n }\n\n public static remove(instanceId: string): void {\n if (!DrawerStore.has(instanceId)) {\n return\n }\n\n DrawerStore.store.delete(instanceId)\n }\n\n public static has(instanceId: string): boolean {\n return DrawerStore.store.has(instanceId)\n }\n\n public static getAllInstances() {\n return DrawerStore.store\n }\n}\n\nexport interface DrawerOptions {\n overlay: boolean\n baseClass: string\n overlayClass: string\n direction: string\n}\n\nconst defaultDrawerOptions: DrawerOptions = {\n overlay: true,\n baseClass: 'drawer',\n overlayClass: 'drawer-overlay',\n direction: 'end',\n}\n\nclass DrawerComponent {\n element: HTMLElement\n overlayElement: HTMLElement | null = null\n toggleElement: HTMLElement | null = null\n options: DrawerOptions\n instanceUid: string\n name: string = ''\n shown: boolean = false\n lastWidth: number = 0\n closeElement: HTMLElement | null = null\n\n constructor(_element: HTMLElement, options: DrawerOptions) {\n this.element = _element\n this.options = Object.assign(defaultDrawerOptions, options)\n this.instanceUid = getUniqueIdWithPrefix('drawer')\n this.overlayElement = null\n this.name = this.element.getAttribute('data-kt-drawer-name') || ''\n this.shown = false\n this.toggleElement = null\n // Event Handlers\n this._handlers()\n // Update Instance\n this._update()\n // Bind Instance\n DrawerStore.set(this.element.id, this)\n }\n\n private _handlers = () => {\n const togglers = this._getOption('toggle') as string\n const closers = this._getOption('close') as string\n\n if (togglers !== null && togglers.length > 0) {\n DOMEventHandlerUtil.on(document.body, togglers, 'click', (e: Event) => {\n e.preventDefault()\n this.toggleElement = document.getElementById(togglers)\n this._toggle()\n })\n }\n\n if (closers !== null && closers.length > 0) {\n DOMEventHandlerUtil.on(document.body, closers, 'click', (e: Event) => {\n e.preventDefault()\n this.closeElement = document.getElementById(closers)\n\n this._hide()\n })\n }\n }\n\n private _update = () => {\n const width = String(this._getOption('width'))\n const direction = String(this._getOption('direction'))\n\n // Reset state\n const hasBaseClass = this.element.classList.contains(`${this.options.baseClass}-on`)\n const bodyCanvasAttr = String(document.body.getAttribute(`data-kt-drawer-${this.name}-`))\n\n if (hasBaseClass === true && bodyCanvasAttr === 'on') {\n this.shown = true\n } else {\n this.shown = false\n }\n\n // Activate/deactivate\n if (this._getOption('activate') === true) {\n this.element.classList.add(this.options.baseClass)\n this.element.classList.add(`${this.options.baseClass}-${direction}`)\n ElementStyleUtil.set(this.element, 'width', width, true)\n\n this.lastWidth = parseInt(width)\n } else {\n ElementStyleUtil.set(this.element, 'width', '')\n this.element.classList.remove(this.options.baseClass)\n this.element.classList.remove(`${this.options.baseClass}-${direction}`)\n this._hide()\n }\n }\n\n private _getOption = (name: string) => {\n const attr = this.element.getAttribute(`data-kt-drawer-${name}`)\n if (attr) {\n let value = getAttributeValueByBreakpoint(attr)\n if (value !== null && String(value) === 'true') {\n return true\n } else {\n if (value !== null && String(value) === 'false') {\n return false\n }\n }\n\n return value\n } else {\n const optionName = stringSnakeToCamel(name)\n const option = getObjectPropertyValueByKey(this.options, optionName)\n if (option) {\n return getAttributeValueByBreakpoint(option)\n } else {\n return null\n }\n }\n }\n\n private _toggle = () => {\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.toggle') === false) {\n return\n }\n\n if (this.shown) {\n this._hide()\n } else {\n this._show()\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.drawer.toggled')\n }\n\n private _hide = () => {\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.hide') === false) {\n return\n }\n\n this.shown = false\n this._deleteOverlay()\n document.body.removeAttribute(`data-kt-drawer-${this.name}`)\n document.body.removeAttribute(`data-kt-drawer`)\n this.element.classList.remove(`${this.options.baseClass}-on`)\n if (this.toggleElement != null) {\n this.toggleElement.classList.remove('active')\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.drawer.after.hidden')\n }\n\n private _show = () => {\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.show') === false) {\n return\n }\n\n this.shown = true\n this._createOverlay()\n document.body.setAttribute(`data-kt-drawer-${this.name}`, 'on')\n document.body.setAttribute('data-kt-drawer', 'on')\n this.element.classList.add(`${this.options.baseClass}-on`)\n if (this.toggleElement !== null) {\n this.toggleElement.classList.add('active')\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.drawer.shown')\n }\n\n private _createOverlay = () => {\n if (this._getOption('overlay') === true) {\n this.overlayElement = document.createElement('DIV')\n const elementZIndex = getCSS(this.element, 'z-index')\n if (elementZIndex) {\n const overlayZindex = parseInt(elementZIndex) - 1\n ElementStyleUtil.set(this.overlayElement, 'z-index', overlayZindex) // update\n }\n document.body.append(this.overlayElement)\n const overlayClassOption = this._getOption('overlay-class')\n if (overlayClassOption) {\n this.overlayElement.classList.add(overlayClassOption.toString())\n }\n this.overlayElement.addEventListener('click', (e) => {\n e.preventDefault()\n this._hide()\n })\n }\n }\n\n private _deleteOverlay = () => {\n if (this.overlayElement !== null && this.overlayElement.parentNode) {\n this.overlayElement.parentNode.removeChild(this.overlayElement)\n }\n }\n\n private _getDirection = () => {\n return String(this._getOption('direction')) === 'left' ? 'left' : 'right'\n }\n\n private _getWidth = () => {\n let width = this._getOption('width')\n if (width && width === 'auto') {\n width = getCSS(this.element, 'width')\n }\n\n return width\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public toggle = () => {\n this._toggle()\n }\n\n public show = () => {\n this._show()\n }\n\n public hide = () => {\n this._hide()\n }\n\n public isShown = () => {\n return this.shown\n }\n\n public update = () => {\n this._update()\n }\n\n public goElement = () => {\n return this.element\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public trigger = (name: string, event: Event) => {\n return EventHandlerUtil.trigger(this.element, name, event)\n }\n\n // Static methods\n public static hasInstace = (elementId: string): boolean => {\n return DrawerStore.has(elementId)\n }\n\n public static getInstance = (elementId: string) => {\n return DrawerStore.get(elementId)\n }\n\n public static hideAll = () => {\n const oldInstances = DrawerStore.getAllInstances()\n oldInstances.forEach((dr) => {\n dr.hide()\n })\n }\n\n public static updateAll = () => {\n const oldInstances = DrawerStore.getAllInstances()\n oldInstances.forEach((dr) => {\n dr.update()\n })\n }\n\n // Create Instances\n public static createInstances(selector: string): void {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((element) => {\n const item = element as HTMLElement\n let drawer = DrawerComponent.getInstance(item.id)\n if (!drawer) {\n drawer = new DrawerComponent(item, defaultDrawerOptions)\n }\n drawer.element = item\n drawer.hide()\n })\n }\n\n // Dismiss instances\n public static handleDismiss = () => {\n // External drawer toggle handler\n DOMEventHandlerUtil.on(document.body, '[data-kt-drawer-dismiss=\"true\"]', 'click', () => {\n /* @ts-ignore */\n const element = this.closest('[data-kt-drawer=\"true\"]')\n if (element) {\n const drawer = DrawerComponent.getInstance(element)\n if (drawer && drawer.isShown()) {\n drawer.hide()\n }\n }\n })\n }\n\n // Global Initialization\n public static initGlobalHandlers(): void {\n // Window Resize Handling\n window.addEventListener('resize', function () {\n let timer: number | undefined\n throttle(\n timer,\n () => {\n // Locate and update Drawer instances on window resize\n const elements = document.body.querySelectorAll('[data-kt-drawer=\"true\"]')\n elements.forEach((el) => {\n const item = el as HTMLElement\n const instance = DrawerComponent.getInstance(item.id)\n if (instance) {\n instance.element = item\n instance.update()\n }\n })\n },\n 200\n )\n })\n }\n\n public static bootstrap = () => {\n DrawerComponent.createInstances('[data-kt-drawer=\"true\"]')\n DrawerComponent.initGlobalHandlers()\n DrawerComponent.handleDismiss()\n }\n\n public static reinitialization = () => {\n DrawerComponent.createInstances('[data-kt-drawer=\"true\"]')\n DrawerComponent.hideAll()\n DrawerComponent.updateAll()\n DrawerComponent.handleDismiss()\n }\n}\n\nexport {DrawerComponent, defaultDrawerOptions}\n","import {\n DataUtil,\n ElementStyleUtil,\n EventHandlerUtil,\n getUniqueIdWithPrefix,\n getAttributeValueByBreakpoint,\n} from '../_utils/index'\n\nexport interface FeedbackOptions {\n width?: number\n placement?: string\n content?: string\n type?: string\n}\n\nconst defaultFeedbackOptions: FeedbackOptions = {\n width: 100,\n placement: 'top-center',\n content: '',\n type: 'popup',\n}\n\nclass FeedbackComponent {\n element: HTMLElement\n options: FeedbackOptions\n instanceUid: string\n shown: boolean\n\n constructor(_element: HTMLElement, options: FeedbackOptions) {\n this.element = _element\n this.options = Object.assign(defaultFeedbackOptions, options)\n this.instanceUid = getUniqueIdWithPrefix('feedback')\n this.shown = false\n\n // Event handlers\n this._handlers() // will add in the show popup\n DataUtil.set(this.element, 'feedback', this)\n }\n\n private _handlers = () => {\n this.element.addEventListener('click', (e: Event) => {\n e.preventDefault()\n this._go()\n })\n }\n\n private _go = () => {}\n\n private showPopup = () => {\n this.element = document.createElement('DIV')\n\n this.element.classList.add('feedback feedback-popup')\n this.element.innerHTML = this.options.content || ''\n\n if (this.options.placement === 'top-center') {\n this.setPopupTopCenterPosition()\n }\n\n document.body.appendChild(this.element)\n this.element.classList.add('feedback-shown')\n this.shown = true\n }\n\n private setPopupTopCenterPosition = () => {\n const width = getAttributeValueByBreakpoint(this.options.width?.toString() || '0')\n const height = ElementStyleUtil.get(this.element, 'height')\n this.element.classList.add('feedback-top-center')\n ElementStyleUtil.set(this.element, 'width', width)\n ElementStyleUtil.set(this.element, 'left', '50%')\n ElementStyleUtil.set(this.element, 'top', '-' + height)\n }\n\n private hidePopup = () => {\n this.element.remove()\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public show = () => {\n if (EventHandlerUtil.trigger(this.element, 'kt.feedback.show') === false) {\n return\n }\n\n if (this.options.type === 'popup') {\n this.showPopup()\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.feedback.shown')\n\n return this\n }\n\n public hide = () => {\n if (EventHandlerUtil.trigger(this.element, 'kt.feedback.hide') === false) {\n return\n }\n\n if (this.options.type === 'popup') {\n this.hidePopup()\n }\n\n this.shown = false\n EventHandlerUtil.trigger(this.element, 'kt.feedback.hidden')\n return this\n }\n\n public isShown = () => {\n return this.isShown\n }\n\n public getElement = () => {\n return this.element\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public trigger = (name: string, event: Event) => {\n return EventHandlerUtil.trigger(this.element, name, event)\n }\n\n // Create Instances\n public static createInstances(selector: string) {\n throw new Error('not implemented')\n }\n\n // Static methods\n public static hasInstace(element: HTMLElement) {\n throw new Error('not implemented')\n }\n\n public static getInstance(element: HTMLElement) {\n throw new Error('not implemented')\n }\n\n public static bootstrap(attr: string = '[data-Feedback]') {\n throw new Error('not implemented')\n }\n}\n\nexport {FeedbackComponent, defaultFeedbackOptions}\n","import {EventHandlerUtil, DataUtil, getUniqueIdWithPrefix, getCSS} from '../_utils/index'\n\nexport interface IImageInputOptions {}\n\nexport interface IImageInputQueries {\n componentName: string\n instanseQuery: string\n inputQuery: string\n wrapperQuery: string\n cancelQuery: string\n removeQuery: string\n hiddenQuery: string\n}\n\nconst defaultImageInputOptions = {}\n\nconst defaultImageInputQueires: IImageInputQueries = {\n componentName: 'image-input',\n instanseQuery: '[data-kt-image-input]',\n inputQuery: 'input[type=\"file\"]',\n wrapperQuery: '.image-input-wrapper',\n cancelQuery: '[data-kt-image-input-action=\"cancel\"]',\n removeQuery: '[data-kt-image-input-action=\"remove\"]',\n hiddenQuery: 'input[type=\"hidden\"]',\n}\n\nclass ImageInputComponent {\n element: HTMLElement\n inputElement: HTMLInputElement | null\n wrapperElement: HTMLElement | null\n cancelElement: HTMLElement | null\n removeElement: HTMLElement | null\n hiddenElement: HTMLInputElement | null\n src: string = ''\n options: IImageInputOptions\n queries: IImageInputQueries\n uid: string\n value: string = ''\n\n constructor(_element: HTMLElement, _options: IImageInputOptions, _queries: IImageInputQueries) {\n // Variables\n this.options = Object.assign(defaultImageInputOptions, _options)\n this.queries = _queries\n this.uid = getUniqueIdWithPrefix(this.queries.componentName)\n\n // Elements\n this.element = _element\n this.inputElement = this.element.querySelector(this.queries.inputQuery)\n this.wrapperElement = this.element.querySelector(this.queries.wrapperQuery)\n this.cancelElement = this.element.querySelector(this.queries.cancelQuery)\n this.removeElement = this.element.querySelector(this.queries.removeQuery)\n this.hiddenElement = this.element.querySelector(this.queries.hiddenQuery)\n if (this.wrapperElement) {\n this.src = getCSS(this.wrapperElement, 'backgroundImage')\n }\n\n // Event Handlers\n this.handlers()\n\n DataUtil.set(this.element, this.queries.componentName, this)\n }\n\n private handlers(): void {\n this.element.addEventListener('change', this._change)\n if (this.cancelElement) {\n this.cancelElement.addEventListener('click', this._cancel)\n }\n\n if (this.removeElement) {\n this.removeElement.addEventListener('click', this._cancel)\n }\n }\n\n // Event Handlers\n private _change = (e: Event) => {\n e.preventDefault()\n\n if (this.inputElement !== null && this.inputElement.files && this.inputElement.files[0]) {\n // Fire change event\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.change', e) === false) {\n return\n }\n\n const reader = new FileReader()\n\n reader.onload = (e: ProgressEvent) => {\n if (this.wrapperElement && e.target) {\n this.wrapperElement.style.setProperty('background-image', `url('${e.target.result}')`)\n }\n }\n\n reader.readAsDataURL(this.inputElement.files[0])\n this.element.classList.add('image-input-changed')\n this.element.classList.remove('image-input-empty')\n\n // Fire removed event\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.changed', e)\n }\n }\n\n private _cancel = (e: Event) => {\n e.preventDefault()\n\n // Fire cancel event\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.cancel', e) === false) {\n return\n }\n\n this.element.classList.remove('image-input-changed')\n this.element.classList.remove('image-input-empty')\n this.element.style.setProperty('background-image', this.src)\n if (this.inputElement) {\n this.inputElement.value = ''\n }\n\n if (this.hiddenElement !== null) {\n this.hiddenElement.value = '0'\n }\n\n // Fire canceled event\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.canceled', e)\n }\n\n private _remove = (e: Event) => {\n e.preventDefault()\n\n // Fire remove event\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.remove', e) === false) {\n return\n }\n\n this.element.classList.remove('image-input-changed')\n this.element.classList.add('image-input-empty')\n if (this.wrapperElement) {\n this.wrapperElement.style.setProperty('background-image', 'none')\n }\n\n if (this.inputElement) {\n this.inputElement.value = ''\n }\n\n if (this.hiddenElement !== null) {\n this.hiddenElement.value = '1'\n }\n\n // Fire removed event\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.removed', e)\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public getInputElement(): HTMLInputElement | null {\n return this.inputElement\n }\n\n public getElement(): HTMLElement {\n return this.element\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public trigger = (name: string, event: Event) => {\n return EventHandlerUtil.trigger(this.element, name, event)\n }\n\n // Static methods\n public static getInstance = (\n el: HTMLElement,\n componentName: string = defaultImageInputQueires.componentName\n ) => {\n const ImageInput = DataUtil.get(el, componentName)\n if (ImageInput) {\n return ImageInput\n }\n\n return null\n }\n\n public static createInstances = (\n selector: string = defaultImageInputQueires.instanseQuery,\n options: IImageInputOptions = defaultImageInputOptions,\n queries: IImageInputQueries = defaultImageInputQueires\n ) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let ImageInput = ImageInputComponent.getInstance(item)\n if (!ImageInput) {\n ImageInput = new ImageInputComponent(item, options, queries)\n }\n })\n }\n\n public static createInsance = (\n selector: string = defaultImageInputQueires.instanseQuery,\n options: IImageInputOptions = defaultImageInputOptions,\n queries: IImageInputQueries = defaultImageInputQueires\n ): ImageInputComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let ImageInput = ImageInputComponent.getInstance(item)\n if (!ImageInput) {\n ImageInput = new ImageInputComponent(item, options, queries)\n }\n return ImageInput\n }\n\n public static bootstrap = (selector: string = defaultImageInputQueires.instanseQuery) => {\n ImageInputComponent.createInstances(selector)\n }\n\n public static reinitialization = (selector: string = defaultImageInputQueires.instanseQuery) => {\n ImageInputComponent.createInstances(selector)\n }\n}\nexport {ImageInputComponent, defaultImageInputOptions, defaultImageInputQueires}\n","import {\n DataUtil,\n getObjectPropertyValueByKey,\n stringSnakeToCamel,\n getAttributeValueByBreakpoint,\n getViewPort,\n isVisibleElement,\n throttle,\n getCSS,\n ElementStyleUtil,\n} from '../_utils/index'\nimport {CookieComponent} from './_CookieComponent'\n\nexport interface ScrollOptions {\n saveState?: boolean\n}\n\nconst defaultScrollOptions: ScrollOptions = {\n saveState: true,\n}\n\nclass ScrollComponent {\n element: HTMLElement\n options: ScrollOptions\n id: string\n\n constructor(_element: HTMLElement, options: ScrollOptions) {\n this.element = _element\n this.options = Object.assign(defaultScrollOptions, options)\n this.id = this.element.getAttribute('id') || ''\n this.update()\n // this.element.setAttribute('data-kt-scrolltop', 'true')\n DataUtil.set(this.element, 'scroll', this)\n }\n\n private getOption = (name: string) => {\n if (this.element.hasAttribute('data-kt-scroll-' + name) === true) {\n const attr = this.element.getAttribute('data-kt-scroll-' + name) || ''\n let value: string | JSON | boolean = getAttributeValueByBreakpoint(attr)\n if (value !== null && String(value) === 'true') {\n value = true\n } else if (value !== null && String(value) === 'false') {\n value = false\n }\n\n return value\n } else {\n const optionName = stringSnakeToCamel(name)\n const option = getObjectPropertyValueByKey(this.options, optionName)\n if (option) {\n return getAttributeValueByBreakpoint(option)\n } else {\n return null\n }\n }\n }\n\n private getHeightType = () => {\n if (this.getOption('height')) {\n return 'height'\n }\n if (this.getOption('min-height')) {\n return 'min-height'\n }\n if (this.getOption('max-height')) {\n return 'max-height'\n }\n }\n\n private getAutoHeight = () => {\n let height: number | string = getViewPort().height\n const dependencies = this.getOption('dependencies')\n const wrappers = this.getOption('wrappers')\n const offset = this.getOption('offset')\n\n // Height dependencies\n if (dependencies !== null) {\n const elements = document.querySelectorAll(dependencies as string)\n if (elements && elements.length > 0) {\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i] as HTMLElement\n if (isVisibleElement(element) === false) {\n continue\n }\n\n height = height - parseInt(getCSS(element, 'height'))\n height = height - parseInt(getCSS(element, 'margin-top'))\n height = height - parseInt(getCSS(element, 'margin-bottom'))\n\n const borderTop = getCSS(element, 'border-top')\n if (borderTop) {\n height = height - parseInt(borderTop)\n }\n\n const borderBottom = getCSS(element, 'border-bottom')\n if (borderBottom) {\n height = height - parseInt(borderBottom)\n }\n }\n }\n }\n\n // Wrappers\n if (wrappers !== null) {\n var elements = document.querySelectorAll(wrappers as string)\n if (elements && elements.length > 0) {\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i] as HTMLElement\n\n if (!isVisibleElement(element)) {\n continue\n }\n\n height = height - parseInt(getCSS(element, 'margin-top'))\n height = height - parseInt(getCSS(element, 'margin-bottom'))\n height = height - parseInt(getCSS(element, 'padding-top'))\n height = height - parseInt(getCSS(element, 'padding-bottom'))\n\n const borderTop = getCSS(element, 'border-top')\n if (borderTop) {\n height = height - parseInt(borderTop)\n }\n\n const borderBottom = getCSS(element, 'border-bottom')\n if (borderBottom) {\n height = height - parseInt(borderBottom)\n }\n }\n }\n }\n\n // Custom offset\n if (offset !== null) {\n height = height - parseInt(offset as string)\n }\n\n height = height - parseInt(getCSS(this.element, 'margin-top'))\n height = height - parseInt(getCSS(this.element, 'margin-bottom'))\n\n const borderTop = getCSS(this.element, 'border-top')\n if (borderTop) {\n height = height - parseInt(borderTop)\n }\n\n const borderBottom = getCSS(this.element, 'border-bottom')\n if (borderBottom) {\n height = height - parseInt(borderBottom)\n }\n\n height = String(height) + 'px'\n\n return height\n }\n\n private setupHeight = () => {\n let height = this.getHeight()\n let heightType = this.getHeightType() as string\n\n // Set height\n if (height !== null && height.length > 0) {\n ElementStyleUtil.set(this.element, heightType, height)\n } else {\n ElementStyleUtil.set(this.element, heightType, '')\n }\n }\n\n private setupState = () => {\n if (this.getOption('save-state') === true && this.id) {\n const cookie = CookieComponent.get(this.id + 'st')\n if (cookie) {\n var pos = parseInt(cookie)\n\n if (pos > 0) {\n this.element.scrollTop = pos\n }\n }\n }\n }\n\n private setupScrollHandler = () => {\n if (this.getOption('save-state') === true && this.id) {\n this.element.addEventListener('scroll', this.scrollHandler)\n } else {\n this.element.removeEventListener('scroll', this.scrollHandler)\n }\n }\n\n private scrollHandler = () => {\n const cookieId = this.id + 'st'\n CookieComponent.set(cookieId, this.element.scrollTop, {})\n }\n\n private destroyScrollHandler = () => {\n this.element.removeEventListener('scroll', this.scrollHandler)\n }\n\n private resetHeight = () => {\n const heghtType = this.getHeightType()\n if (heghtType) {\n ElementStyleUtil.set(this.element, heghtType, '')\n }\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public update = () => {\n // Activate/deactivate\n if (\n this.getOption('activate') === true ||\n !this.element.hasAttribute('data-kt-scroll-activate')\n ) {\n this.setupHeight()\n this.setupScrollHandler()\n this.setupState()\n } else {\n this.resetHeight()\n this.destroyScrollHandler()\n }\n }\n\n public getHeight = () => {\n const heightType = this.getHeightType()\n const height = this.getOption(heightType || '')\n if (height instanceof Function) {\n return height.call(height)\n } else if (height !== null && typeof height === 'string' && height.toLowerCase() === 'auto') {\n return this.getAutoHeight()\n } else {\n return height\n }\n }\n\n public getElement = () => {\n return this.element\n }\n\n // Static methods\n public static hasInstace(element: HTMLElement) {\n return DataUtil.has(element, 'scroll')\n }\n\n public static getInstance(element: HTMLElement) {\n if (element !== null && ScrollComponent.hasInstace(element)) {\n return DataUtil.get(element, 'scroll')\n }\n }\n\n // Create Instances\n public static createInstances(selector: string) {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((element: Element) => {\n const item = element as HTMLElement\n let scroll = ScrollComponent.getInstance(item)\n if (!scroll) {\n scroll = new ScrollComponent(item, defaultScrollOptions)\n }\n })\n }\n\n public static destroyAll(attr: string = '[data-kt-scroll=\"true\"]') {}\n\n public static bootstrap(attr: string = '[data-kt-scroll=\"true\"]') {\n ScrollComponent.createInstances(attr)\n ScrollComponent.resize()\n }\n\n public static createInstance = (\n element: HTMLElement,\n options: ScrollOptions = defaultScrollOptions\n ): ScrollComponent | undefined => {\n let scroll = ScrollComponent.getInstance(element)\n if (!scroll) {\n scroll = new ScrollComponent(element, options)\n }\n return scroll\n }\n\n public static reinitialization(attr: string = '[data-kt-scroll=\"true\"]') {\n ScrollComponent.createInstances(attr)\n }\n\n public static updateAll() {\n const elements = document.body.querySelectorAll('[data-kt-scroll=\"true\"]')\n elements.forEach((element: Element) => {\n const instance = ScrollComponent.getInstance(element as HTMLElement)\n if (instance) {\n instance.update()\n }\n })\n }\n\n public static resize() {\n // Window Resize Handling\n window.addEventListener('resize', function () {\n let timer\n throttle(\n timer,\n () => {\n // Locate and update Drawer instances on window resize\n ScrollComponent.updateAll()\n },\n 200\n )\n })\n }\n}\n\nexport {ScrollComponent, defaultScrollOptions}\n","import {\n getScrollTop,\n getAttributeValueByBreakpoint,\n throttle,\n getObjectPropertyValueByKey,\n stringSnakeToCamel,\n getUniqueIdWithPrefix,\n DataUtil,\n ElementAnimateUtil,\n} from '../_utils/index'\n\nexport interface IScrollTopOptions {\n offset: number\n speed: number\n}\n\nconst defaultScrollTopOptions: IScrollTopOptions = {\n offset: 200,\n speed: 600,\n}\n\nclass ScrollTopComponent {\n element: HTMLElement\n options: IScrollTopOptions\n instanceUid: string\n\n constructor(_element: HTMLElement, options: IScrollTopOptions) {\n this.element = _element\n this.options = Object.assign(defaultScrollTopOptions, options)\n this.instanceUid = getUniqueIdWithPrefix('scrolltop')\n\n // Event Handlers\n this._handlers()\n\n // Bind Instance\n DataUtil.set(this.element, 'scrolltop', this)\n }\n\n private _handlers = () => {\n let timer: number\n window.addEventListener('scroll', () => {\n throttle(timer, () => {\n this._scroll()\n })\n })\n\n this.element.addEventListener('click', (e: Event) => {\n e.preventDefault()\n this._go()\n })\n }\n\n private _scroll = () => {\n const offset = parseInt(this._getOption('offset') as string)\n const pos = getScrollTop() // current vertical position\n if (pos > offset) {\n if (!document.body.hasAttribute('data-kt-scrolltop')) {\n document.body.setAttribute('data-kt-scrolltop', 'on')\n }\n } else {\n if (document.body.hasAttribute('data-kt-scrolltop')) {\n document.body.removeAttribute('data-kt-scrolltop')\n }\n }\n }\n\n private _go = () => {\n const speed = parseInt(this._getOption('speed') as string)\n ElementAnimateUtil.scrollTop(0, speed)\n }\n\n private _getOption = (name: string) => {\n const attr = this.element.getAttribute(`data-kt-scrolltop-${name}`)\n if (attr) {\n const value = getAttributeValueByBreakpoint(attr)\n return value !== null && String(value) === 'true'\n }\n\n const optionName = stringSnakeToCamel(name)\n const option = getObjectPropertyValueByKey(this.options, optionName)\n if (option) {\n return getAttributeValueByBreakpoint(option)\n }\n\n return null\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n\n // Plugin API\n public go = () => {\n return this._go()\n }\n\n public getElement = () => {\n return this.element\n }\n\n // Static methods\n public static getInstance = (el: HTMLElement) => {\n const scrollTop = DataUtil.get(el, 'scrolltop')\n if (scrollTop) {\n return scrollTop\n }\n\n return null\n }\n\n public static createInstances = (selector: string) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let scrollTop = ScrollTopComponent.getInstance(item)\n if (!scrollTop) {\n scrollTop = new ScrollTopComponent(item, defaultScrollTopOptions)\n }\n })\n }\n\n public static createInsance = (\n selector: string,\n options: IScrollTopOptions = defaultScrollTopOptions\n ): ScrollTopComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let scrollTop = ScrollTopComponent.getInstance(item)\n if (!scrollTop) {\n scrollTop = new ScrollTopComponent(item, options)\n }\n return scrollTop\n }\n\n public static bootstrap = () => {\n ScrollTopComponent.createInstances('[data-kt-scrolltop=\"true\"]')\n }\n\n public static reinitialization = () => {\n ScrollTopComponent.createInstances('[data-kt-scrolltop=\"true\"]')\n }\n\n public static goTop = () => {\n ElementAnimateUtil.scrollTop(0, defaultScrollTopOptions.speed)\n }\n}\nexport {ScrollTopComponent, defaultScrollTopOptions}\n","import {\n getElementIndex,\n getUniqueIdWithPrefix,\n ElementAnimateUtil,\n EventHandlerUtil,\n DataUtil,\n DOMEventHandlerUtil,\n ElementStyleUtil,\n} from '../_utils/index'\n\nexport interface IStepperOptions {\n startIndex: number\n animation: boolean\n animationSpeed: string\n animationNextClass: string\n animationPreviousClass: string\n}\n\nconst defaultStepperOptions: IStepperOptions = {\n startIndex: 1,\n animation: false,\n animationSpeed: '0.3s',\n animationNextClass: 'animate__animated animate__slideInRight animate__fast',\n animationPreviousClass: 'animate__animated animate__slideInLeft animate__fast',\n}\n\nclass StepperComponent {\n element: HTMLElement\n options: IStepperOptions\n instanceUid: string\n steps: NodeListOf\n btnNext: HTMLElement | null\n btnPrev: HTMLElement | null\n btnSubmit: HTMLElement | null\n totatStepsNumber: number = 0\n passedStepIndex: number = 0\n currentStepIndex: number = 1\n\n constructor(_element: HTMLElement, options: IStepperOptions) {\n this.element = _element\n this.options = Object.assign(defaultStepperOptions, options)\n this.instanceUid = getUniqueIdWithPrefix('stepper')\n\n // Elements\n this.steps = this.element.querySelectorAll('[data-kt-stepper-element=\"nav\"]')\n this.btnNext = this.element.querySelector('[data-kt-stepper-action=\"next\"]')\n this.btnPrev = this.element.querySelector('[data-kt-stepper-action=\"previous\"]')\n this.btnSubmit = this.element.querySelector('[data-kt-stepper-action=\"submit\"]')\n\n // Variables\n this.totatStepsNumber = this.steps?.length | 0\n this.passedStepIndex = 0\n this.currentStepIndex = 1\n\n // Set Current Step\n if (this.options.startIndex > 1) {\n this._goTo(this.options.startIndex)\n }\n\n // Event Handlers\n this.initHandlers()\n\n // Bind Instance\n DataUtil.set(this.element, 'stepper', this)\n }\n\n private _goTo = (index: number) => {\n EventHandlerUtil.trigger(this.element, 'kt.stepper.change')\n // Skip if this step is already shown\n if (index === this.currentStepIndex || index > this.totatStepsNumber || index < 0) {\n return\n }\n\n // Validate step number\n index = parseInt(index.toString())\n // Set current step\n this.passedStepIndex = this.currentStepIndex\n this.currentStepIndex = index\n\n // Refresh elements\n this.refreshUI()\n\n EventHandlerUtil.trigger(this.element, 'kt.stepper.changed')\n }\n\n private initHandlers = () => {\n this.btnNext?.addEventListener('click', (e: Event) => {\n e.preventDefault()\n\n EventHandlerUtil.trigger(this.element, 'kt.stepper.next', e)\n })\n\n this.btnPrev?.addEventListener('click', (e: Event) => {\n e.preventDefault()\n\n EventHandlerUtil.trigger(this.element, 'kt.stepper.previous', e)\n })\n\n DOMEventHandlerUtil.on(this.element, '[data-kt-stepper-action=\"step\"]', 'click', (e: Event) => {\n e.preventDefault()\n\n if (this.steps && this.steps.length > 0) {\n for (let i = 0; i < this.steps.length; i++) {\n if ((this.steps[i] as HTMLElement) === this.element) {\n let index = i + 1\n\n const stepDirection = this._getStepDirection(index)\n EventHandlerUtil.trigger(this.element, `stepper.${stepDirection}`, e)\n return\n }\n }\n }\n })\n }\n\n private _getStepDirection = (index: number) => {\n return index > this.currentStepIndex ? 'next' : 'previous'\n }\n\n private getStepContent = (index: number) => {\n const content = this.element.querySelectorAll('[data-kt-stepper-element=\"content\"]')\n if (!content) {\n return false\n }\n\n if (content[index - 1]) {\n return content[index - 1]\n }\n\n return false\n }\n\n private getLastStepIndex = () => {\n return this.totatStepsNumber\n }\n\n private getTotalStepsNumber = () => {\n return this.totatStepsNumber\n }\n\n private refreshUI = () => {\n let state = ''\n\n if (this.isLastStep()) {\n state = 'last'\n } else if (this.isFirstStep()) {\n state = 'first'\n } else {\n state = 'between'\n }\n\n // Set state class\n this.element.classList.remove('last')\n this.element.classList.remove('first')\n this.element.classList.remove('between')\n\n this.element.classList.add(state)\n\n // Step Items\n const elements = this.element.querySelectorAll(\n '[data-kt-stepper-element=\"nav\"], [data-kt-stepper-element=\"content\"], [data-kt-stepper-element=\"info\"]'\n )\n\n if (!elements || elements.length <= 0) {\n return\n }\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var element = elements[i] as HTMLElement\n var index = getElementIndex(element) + 1\n\n element.classList.remove('current')\n element.classList.remove('completed')\n element.classList.remove('pending')\n\n if (index === this.currentStepIndex) {\n element.classList.add('current')\n\n if (\n this.options.animation !== false &&\n element.getAttribute('data-kt-stepper-element') === 'content'\n ) {\n ElementStyleUtil.set(element, 'animationDuration', this.options.animationSpeed)\n\n const animation =\n this._getStepDirection(this.passedStepIndex) === 'previous'\n ? this.options.animationPreviousClass\n : this.options.animationNextClass\n ElementAnimateUtil.animateClass(element, animation)\n }\n } else {\n if (index < this.currentStepIndex) {\n element.classList.add('completed')\n } else {\n element.classList.add('pending')\n }\n }\n }\n }\n\n private isLastStep = () => {\n return this.currentStepIndex === this.totatStepsNumber\n }\n\n private isFirstStep = () => {\n return this.currentStepIndex === 1\n }\n\n private isBetweenStep = () => {\n return this.isLastStep() === false && this.isFirstStep() === false\n }\n\n // ///////////////////////\n // // ** Public API ** //\n // ///////////////////////\n\n // // Plugin API\n public goto = (index: number) => {\n return this._goTo(index)\n }\n\n public goNext = () => {\n return this.goto(this.getNextStepIndex())\n }\n\n public goPrev = () => {\n return this.goto(this.getPrevStepIndex())\n }\n\n public goFirst = () => {\n return this.goto(1)\n }\n\n public goLast = () => {\n return this.goto(this.getLastStepIndex())\n }\n\n public getCurrentStepIndex = () => {\n return this.currentStepIndex\n }\n\n public getNextStepIndex = () => {\n if (this.totatStepsNumber >= this.currentStepIndex + 1) {\n return this.currentStepIndex + 1\n } else {\n return this.totatStepsNumber\n }\n }\n\n public getPassedStepIndex = () => {\n return this.passedStepIndex\n }\n\n public getPrevStepIndex = () => {\n if (this.currentStepIndex - 1 > 1) {\n return this.currentStepIndex - 1\n } else {\n return 1\n }\n }\n\n public getElement = (index: number) => {\n return this.element\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public destroy = () => {\n console.log('destroy stepper')\n }\n\n public trigger = (name: string, event: Event) => {\n return EventHandlerUtil.trigger(this.element, name, event)\n }\n\n // Static methods\n public static hasInstace(element: HTMLElement): boolean {\n return DataUtil.has(element, 'stepper')\n }\n\n public static getInstance(element: HTMLElement): StepperComponent | null {\n if (element !== null && StepperComponent.hasInstace(element)) {\n return DataUtil.get(element, 'stepper')\n }\n return null\n }\n\n // Create Instances\n public static createInstances(selector: string): void {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((element) => {\n const item = element as HTMLElement\n let stepper = StepperComponent.getInstance(item)\n if (!stepper) {\n stepper = new StepperComponent(item, defaultStepperOptions)\n }\n })\n }\n\n public static createInsance = (\n element: HTMLElement,\n options: IStepperOptions = defaultStepperOptions\n ): StepperComponent | null => {\n if (!element) {\n return null\n }\n let stepper = StepperComponent.getInstance(element)\n if (!stepper) {\n stepper = new StepperComponent(element, options)\n }\n return stepper\n }\n\n public static bootstrap(attr: string = '[data-kt-stepper]') {\n StepperComponent.createInstances(attr)\n }\n}\n\nexport {StepperComponent, defaultStepperOptions}\n","import {\n getElementOffset,\n getScrollTop,\n getAttributeValueByBreakpoint,\n getUniqueIdWithPrefix,\n getObjectPropertyValueByKey,\n stringSnakeToCamel,\n getCSS,\n DataUtil,\n ElementAnimateUtil,\n ElementStyleUtil,\n EventHandlerUtil,\n} from '../_utils/index'\n\nexport interface StickyOptions {\n offset: number\n reverse: boolean\n animation: boolean\n animationSpeed: string\n animationClass: string\n}\n\nconst defaultStickyOptions: StickyOptions = {\n offset: 200,\n reverse: false,\n animation: true,\n animationSpeed: '0.3s',\n animationClass: 'animation-slide-in-down',\n}\n\nclass StickyComponent {\n element: HTMLElement\n options: StickyOptions\n instanceUid: string\n instanceName: string | null = ''\n attributeName: string\n eventTriggerState: boolean\n lastScrollTop: number\n\n constructor(_element: HTMLElement, options: StickyOptions) {\n this.element = _element\n this.options = Object.assign(defaultStickyOptions, options)\n this.instanceUid = getUniqueIdWithPrefix('sticky')\n this.instanceName = this.element.getAttribute('data-kt-sticky-name')\n this.attributeName = 'data-kt-sticky-' + this.instanceName\n this.eventTriggerState = true\n this.lastScrollTop = 0\n\n // Event Handlers\n window.addEventListener('scroll', this.scroll)\n\n // Initial Launch\n this.scroll()\n\n DataUtil.set(this.element, 'sticky', this)\n }\n\n private scroll = () => {\n let offset = this.getOption('offset')\n let reverse = this.getOption('reverse')\n\n // Exit if false\n if (offset === false) {\n return\n }\n\n let offsetNum = 0\n if (typeof offset === 'string') {\n offsetNum = parseInt(offset)\n }\n\n const st = getScrollTop()\n\n // Reverse scroll mode\n if (reverse === true) {\n // Release on reverse scroll mode\n if (st > offsetNum && this.lastScrollTop < st) {\n if (document.body.hasAttribute(this.attributeName) === false) {\n this.enable()\n document.body.setAttribute(this.attributeName, 'on')\n }\n\n if (this.eventTriggerState === true) {\n EventHandlerUtil.trigger(this.element, 'kt.sticky.on')\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\n\n this.eventTriggerState = false\n }\n } else {\n // Back scroll mode\n if (document.body.hasAttribute(this.attributeName)) {\n this.disable()\n document.body.removeAttribute(this.attributeName)\n }\n\n if (this.eventTriggerState === false) {\n EventHandlerUtil.trigger(this.element, 'kt.sticky.off')\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\n\n this.eventTriggerState = true\n }\n }\n\n this.lastScrollTop = st\n return\n }\n\n // Classic scroll mode\n if (st > offsetNum) {\n if (document.body.hasAttribute(this.attributeName) === false) {\n this.enable()\n document.body.setAttribute(this.attributeName, 'on')\n }\n\n if (this.eventTriggerState === true) {\n EventHandlerUtil.trigger(this.element, 'kt.sticky.on')\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\n this.eventTriggerState = false\n }\n } else {\n // back scroll mode\n if (document.body.hasAttribute(this.attributeName) === true) {\n this.disable()\n document.body.removeAttribute(this.attributeName)\n }\n\n if (this.eventTriggerState === false) {\n EventHandlerUtil.trigger(this.element, 'kt.sticky.off')\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\n this.eventTriggerState = true\n }\n }\n }\n\n private getOption = (name: string) => {\n const dataStickyAttr = 'data-kt-sticky-' + name\n if (this.element.hasAttribute(dataStickyAttr) === true) {\n const attrValueInStr = this.element.getAttribute(dataStickyAttr)\n const attrValue = getAttributeValueByBreakpoint(attrValueInStr || '')\n if (attrValue !== null && String(attrValue) === 'true') {\n return true\n } else if (attrValue !== null && String(attrValue) === 'false') {\n return false\n }\n\n return attrValue\n } else {\n const optionName = stringSnakeToCamel(name)\n const option = getObjectPropertyValueByKey(this.options, optionName)\n if (option) {\n return getAttributeValueByBreakpoint(option)\n }\n }\n }\n\n private disable = () => {\n ElementStyleUtil.remove(this.element, 'top')\n ElementStyleUtil.remove(this.element, 'width')\n ElementStyleUtil.remove(this.element, 'left')\n ElementStyleUtil.remove(this.element, 'right')\n ElementStyleUtil.remove(this.element, 'z-index')\n ElementStyleUtil.remove(this.element, 'position')\n }\n\n private enable = (update: boolean = false) => {\n const top = this.getOption('top')\n const left = this.getOption('left')\n // const right = this.getOption(\"right\");\n let width = this.getOption('width')\n const zindex = this.getOption('zindex')\n\n if (update !== true && this.getOption('animation') === true) {\n ElementStyleUtil.set(this.element, 'animationDuration', this.getOption('animationSpeed'))\n ElementAnimateUtil.animateClass(this.element, 'animation ' + this.getOption('animationClass'))\n }\n\n if (zindex !== null) {\n ElementStyleUtil.set(this.element, 'z-index', zindex)\n ElementStyleUtil.set(this.element, 'position', 'fixed')\n }\n\n if (top !== null) {\n ElementStyleUtil.set(this.element, 'top', top)\n }\n\n if (width !== null && width !== undefined) {\n const widthTarget = getObjectPropertyValueByKey(width, 'target')\n if (widthTarget) {\n const targetElement = document.querySelector(widthTarget)\n if (targetElement) {\n width = getCSS(targetElement, 'width')\n }\n }\n ElementStyleUtil.set(this.element, 'width', width)\n }\n\n if (left !== null) {\n if (String(left).toLowerCase() === 'auto') {\n var offsetLeft = getElementOffset(this.element).left\n\n if (offsetLeft > 0) {\n ElementStyleUtil.set(this.element, 'left', String(offsetLeft) + 'px')\n }\n }\n }\n }\n\n public update = () => {\n if (document.body.hasAttribute(this.attributeName) === true) {\n this.disable()\n document.body.removeAttribute(this.attributeName)\n this.enable(true)\n document.body.setAttribute(this.attributeName, 'on')\n }\n }\n\n // Event API\n public on = (name: string, callBack: Function) => {\n return EventHandlerUtil.on(this.element, name, callBack)\n }\n\n public one = (name: string, callback: Function) => {\n return EventHandlerUtil.one(this.element, name, callback)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public trigger = (name: string) => {\n return EventHandlerUtil.trigger(this.element, name)\n }\n\n // Static methods\n public static hasInstace(element: HTMLElement) {\n return DataUtil.has(element, 'sticky')\n }\n\n public static getInstance(element: HTMLElement) {\n if (element !== null && StickyComponent.hasInstace(element)) {\n return DataUtil.get(element, 'sticky')\n }\n }\n\n // Create Instances\n public static createInstances(selector: string) {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((element) => {\n const item = element as HTMLElement\n let sticky = StickyComponent.getInstance(item)\n if (!sticky) {\n sticky = new StickyComponent(item, defaultStickyOptions)\n }\n })\n }\n\n public static createInsance = (\n selector: string,\n options: StickyOptions = defaultStickyOptions\n ): StickyComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let sticky = StickyComponent.getInstance(item)\n if (!sticky) {\n sticky = new StickyComponent(item, options)\n }\n return sticky\n }\n\n public static bootstrap(attr: string = '[data-kt-sticky=\"true\"]') {\n StickyComponent.createInstances(attr)\n }\n\n public static reInitialization(attr: string = '[data-kt-sticky=\"true\"]') {\n StickyComponent.createInstances(attr)\n }\n}\n\nexport {StickyComponent, defaultStickyOptions}\n","import {DataUtil, getUniqueIdWithPrefix, EventHandlerUtil} from '../_utils/index'\n// Helpers\nimport {CookieComponent} from './_CookieComponent'\n\nexport interface ToggleOptions {\n saveState: boolean\n targetState?: string\n toggleState?: string\n targetToggleMode?: string\n}\n\nconst defaultToggleOptions: ToggleOptions = {\n saveState: false,\n}\n\nclass ToggleComponent {\n element: HTMLElement\n instanceUid: string\n options: ToggleOptions\n state: string = ''\n target: HTMLElement | null = null\n attribute: string = ''\n\n constructor(_element: HTMLElement, options: ToggleOptions) {\n this.options = Object.assign(defaultToggleOptions, options)\n this.instanceUid = getUniqueIdWithPrefix('toggle')\n this.element = _element\n\n const elementTargetAttr = this.element.getAttribute('data-kt-toggle-target')\n if (elementTargetAttr) {\n this.target = document.querySelector(elementTargetAttr)\n }\n const elementToggleAttr = this.element.getAttribute('data-kt-toggle-state')\n this.state = elementToggleAttr || ''\n this.attribute = 'data-kt-' + this.element.getAttribute('data-kt-toggle-name')\n\n // Event Handlers\n this._handlers()\n\n // Update Instance\n // Bind Instance\n DataUtil.set(this.element, 'toggle', this)\n }\n\n private _handlers = () => {\n this.element.addEventListener('click', (e: Event) => {\n e.preventDefault()\n this._toggle()\n })\n }\n\n // Event handlers\n private _toggle = () => {\n // Trigger \"after.toggle\" event\n EventHandlerUtil.trigger(this.element, 'kt.toggle.change')\n\n if (this._isEnabled()) {\n this._disable()\n } else {\n this._enable()\n }\n\n // Trigger \"before.toggle\" event\n EventHandlerUtil.trigger(this.element, 'kt.toggle.changed')\n return this\n }\n\n private _enable = () => {\n if (this._isEnabled()) {\n return\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.toggle.enable')\n this.target?.setAttribute(this.attribute, 'on')\n if (this.state.length > 0) {\n this.element.classList.add(this.state)\n }\n\n if (this.options.saveState) {\n CookieComponent.set(this.attribute, 'on', {})\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.toggle.enabled')\n return this\n }\n\n private _disable = () => {\n if (!this._isEnabled()) {\n return false\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.toggle.disable')\n this.target?.removeAttribute(this.attribute)\n\n if (this.state.length > 0) {\n this.element.classList.remove(this.state)\n }\n\n if (this.options.saveState) {\n CookieComponent.delete(this.attribute)\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.toggle.disabled')\n return this\n }\n\n private _isEnabled = () => {\n if (!this.target) {\n return false\n }\n\n return String(this.target.getAttribute(this.attribute)).toLowerCase() === 'on'\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n\n // Plugin API\n // Plugin API\n public toggle = () => {\n return this._toggle()\n }\n\n public enable = () => {\n return this._enable()\n }\n\n public disable = () => {\n return this._disable()\n }\n\n public isEnabled = () => {\n return this._isEnabled()\n }\n\n public goElement = () => {\n return this.element\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public trigger = (name: string, event?: Event) => {\n return EventHandlerUtil.trigger(this.element, name, event)\n }\n\n // Static methods\n public static getInstance = (el: HTMLElement) => {\n const toggleElement = DataUtil.get(el, 'toggle')\n if (toggleElement) {\n return toggleElement\n }\n\n return null\n }\n\n public static createInstances = (selector: string) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let toggleElement = ToggleComponent.getInstance(item)\n if (!toggleElement) {\n toggleElement = new ToggleComponent(item, defaultToggleOptions)\n }\n })\n }\n\n public static createInsance = (\n selector: string,\n options: ToggleOptions = defaultToggleOptions\n ): ToggleComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let toggle = ToggleComponent.getInstance(item)\n if (!toggle) {\n toggle = new ToggleComponent(item, options)\n }\n return toggle\n }\n\n public static reinitialization = () => {\n ToggleComponent.createInstances('[data-kt-toggle]')\n }\n\n public static bootstrap = () => {\n ToggleComponent.createInstances('[data-kt-toggle]')\n }\n}\n\nexport {ToggleComponent, defaultToggleOptions}\n","/* eslint-disable array-callback-return */\n/* eslint-disable no-useless-escape */\nimport {DataUtil} from '../_utils/index'\n\nexport interface IPasswordMeterOptions {\n minLength: number\n checkUppercase: boolean\n checkLowercase: boolean\n checkDigit: boolean\n checkChar: boolean\n scoreHighlightClass: string\n}\n\nexport interface IPasswordMeterQueries {\n componentName: string\n instanseQuery: string\n inputQuery: string\n visibilityQuery: string\n highlightQuery: string\n}\n\nconst defaultPasswordMeterOptions = {\n minLength: 8,\n checkUppercase: true,\n checkLowercase: true,\n checkDigit: true,\n checkChar: true,\n scoreHighlightClass: 'active',\n}\n\nconst defaultPasswordMeterQueires: IPasswordMeterQueries = {\n componentName: 'password-meter',\n instanseQuery: '[data-kt-password-meter]',\n inputQuery: 'input[type]',\n visibilityQuery: '[data-kt-password-meter-control=\"visibility\"]',\n highlightQuery: '[data-kt-password-meter-control=\"highlight\"]',\n}\n\nclass PasswordMeterComponent {\n element: HTMLElement\n inputElement: HTMLInputElement | null\n visibilityElement: HTMLElement | null\n highlightElement: HTMLElement | null\n options: IPasswordMeterOptions\n queries: IPasswordMeterQueries\n score: number\n checkSteps: number\n\n constructor(\n _element: HTMLElement,\n _options: IPasswordMeterOptions,\n _queries: IPasswordMeterQueries\n ) {\n this.element = _element\n this.options = Object.assign(defaultPasswordMeterOptions, _options)\n this.queries = _queries\n this.score = 0\n this.checkSteps = 5\n\n // Elements\n this.inputElement = this.element.querySelector(this.queries.inputQuery)\n this.visibilityElement = this.element.querySelector(this.queries.visibilityQuery)\n this.highlightElement = this.element.querySelector(this.queries.highlightQuery)\n\n // Event Handlers\n this.handlers()\n\n DataUtil.set(this.element, this.queries.componentName, this)\n }\n\n private handlers(): void {\n if (this.inputElement) {\n this.inputElement.addEventListener('input', () => {\n this.check()\n })\n }\n\n if (this.visibilityElement) {\n this.visibilityElement.addEventListener('click', () => {\n this.visitbility()\n })\n }\n }\n\n private visitbility() {\n if (this.visibilityElement && this.inputElement) {\n const visibleIcon = this.visibilityElement.querySelector(\n 'i:not(.d-none), .svg-icon:not(.d-none)'\n )\n\n const hiddenIcon = this.visibilityElement.querySelector('i.d-none, .svg-icon.d-none')\n\n const typeAttr = this.inputElement.getAttribute('type') || ''\n\n if (typeAttr === 'password') {\n this.inputElement.setAttribute('type', 'text')\n } else {\n this.inputElement.setAttribute('type', 'password')\n }\n\n visibleIcon?.classList.add('d-none')\n hiddenIcon?.classList.remove('d-none')\n\n this.inputElement.focus()\n }\n }\n\n private checkScore(): number {\n return 0\n }\n\n private checkLength(): boolean {\n if (this.inputElement) {\n return this.inputElement.value.length >= this.options.minLength // 20 score\n }\n\n return false\n }\n\n private checkLowerCase(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[a-z]/.test(val) // 20 score\n }\n\n private checkUppercase(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[A-Z]/.test(val) // 20 score\n }\n\n private checkDigit(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[0-9]/.test(val) // 20 score\n }\n\n private checkChar(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g.test(val) // 20 score\n }\n\n private getCheckScore(): number {\n let count = 1\n if (this.options.checkUppercase) {\n count++\n }\n\n if (this.options.checkLowercase) {\n count++\n }\n\n if (this.options.checkDigit) {\n count++\n }\n\n if (this.options.checkChar) {\n count++\n }\n\n this.checkSteps = count\n return 100 / this.checkSteps\n }\n\n private highlight() {\n const items = this.highlightElement\n ? [].slice.call(this.highlightElement.querySelectorAll('div'))\n : []\n const total = items.length\n let index = 0\n const checkScore = this.getCheckScore()\n const score = this.getScore()\n\n items.map((item: HTMLElement) => {\n index++\n if (checkScore * index * (this.checkSteps / total) <= score) {\n item.classList.add('active')\n } else {\n item.classList.remove('active')\n }\n })\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public reset = () => {\n this.score = 0\n this.highlight()\n }\n\n public getScore() {\n return this.score\n }\n\n public check() {\n let score = 0\n const checkScore = this.getCheckScore()\n if (this.checkLength()) {\n score = score + checkScore\n }\n\n if (this.options.checkUppercase && this.checkLowerCase()) {\n score = score + checkScore\n }\n\n if (this.options.checkLowercase && this.checkUppercase()) {\n score = score + checkScore\n }\n\n if (this.options.checkDigit && this.checkDigit()) {\n score = score + checkScore\n }\n\n if (this.options.checkChar && this.checkChar()) {\n score = score + checkScore\n }\n\n this.score = score\n this.highlight()\n }\n\n // Static methods\n public static getInstance = (\n el: HTMLElement,\n componentName: string = defaultPasswordMeterQueires.componentName\n ) => {\n const passwordMeter = DataUtil.get(el, componentName)\n if (passwordMeter) {\n return passwordMeter\n }\n\n return null\n }\n\n public static createInstances = (\n selector: string = defaultPasswordMeterQueires.instanseQuery,\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\n ) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let passwordMeter = PasswordMeterComponent.getInstance(item)\n if (!passwordMeter) {\n passwordMeter = new PasswordMeterComponent(item, options, queries)\n }\n })\n }\n\n public static createInsance = (\n selector: string = defaultPasswordMeterQueires.instanseQuery,\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\n ): PasswordMeterComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let passwordMeter = PasswordMeterComponent.getInstance(item)\n if (!passwordMeter) {\n passwordMeter = new PasswordMeterComponent(item, options, queries)\n }\n return passwordMeter\n }\n\n public static bootstrap = (selector: string = defaultPasswordMeterQueires.instanseQuery) => {\n PasswordMeterComponent.createInstances(selector)\n }\n\n public static reinitialization = (\n selector: string = defaultPasswordMeterQueires.instanseQuery\n ) => {\n PasswordMeterComponent.createInstances(selector)\n }\n}\nexport {PasswordMeterComponent, defaultPasswordMeterOptions, defaultPasswordMeterQueires}\n","import {\n getAttributeValueByBreakpoint,\n stringSnakeToCamel,\n getObjectPropertyValueByKey,\n EventHandlerUtil,\n throttle,\n} from '../_utils/index'\n\nexport class SwapperStore {\n static store: Map = new Map()\n\n public static set(instanceId: string, drawerComponentObj: SwapperComponent): void {\n if (SwapperStore.has(instanceId)) {\n return\n }\n\n SwapperStore.store.set(instanceId, drawerComponentObj)\n }\n\n public static get(instanceId: string): SwapperComponent | undefined {\n if (!SwapperStore.has(instanceId)) {\n return\n }\n return SwapperStore.store.get(instanceId)\n }\n\n public static remove(instanceId: string): void {\n if (!SwapperStore.has(instanceId)) {\n return\n }\n\n SwapperStore.store.delete(instanceId)\n }\n\n public static has(instanceId: string): boolean {\n return SwapperStore.store.has(instanceId)\n }\n\n public static getAllInstances() {\n return SwapperStore.store\n }\n}\n\nexport interface ISwapperOptions {\n mode: string\n}\n\nexport interface ISwapperQueries {\n componentName: string\n instanseQuery: string\n attrQuery: string\n}\n\nconst defaultSwapperOptions: ISwapperOptions = {\n mode: 'append',\n}\n\nconst defaultSwapperQueires: ISwapperQueries = {\n componentName: 'swapper',\n instanseQuery: '[data-kt-swapper=\"true\"]',\n attrQuery: 'data-kt-swapper-',\n}\n\nclass SwapperComponent {\n element: HTMLElement\n options: ISwapperOptions\n queries: ISwapperQueries\n\n constructor(_element: HTMLElement, _options: ISwapperOptions, _queries: ISwapperQueries) {\n this.element = _element\n this.options = Object.assign(defaultSwapperOptions, _options)\n this.queries = _queries\n\n // Initial update\n this.update()\n\n SwapperStore.set(this.element.id, this)\n }\n\n private getOption(name: string) {\n const attr = this.element.getAttribute(`${this.queries.attrQuery}${name}`)\n if (attr) {\n let value = getAttributeValueByBreakpoint(attr)\n if (attr != null && String(value) === 'true') {\n return true\n } else if (value !== null && String(value) === 'false') {\n return false\n }\n return value\n } else {\n const optionName = stringSnakeToCamel(name)\n const option = getObjectPropertyValueByKey(this.options, optionName)\n if (option) {\n return getAttributeValueByBreakpoint(option)\n } else {\n return null\n }\n }\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public update = () => {\n const parentSelector = this.getOption('parent')?.toString()\n const mode = this.getOption('mode')\n const parentElement = parentSelector ? document.querySelector(parentSelector) : null\n\n if (parentElement && this.element.parentNode !== parentElement) {\n if (mode === 'prepend') {\n parentElement.prepend(this.element)\n } else if (mode === 'append') {\n parentElement.append(this.element)\n }\n }\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public trigger = (name: string, event: Event) => {\n return EventHandlerUtil.trigger(this.element, name, event)\n }\n\n // Static methods\n public static getInstance = (\n el: HTMLElement,\n componentName: string = defaultSwapperQueires.componentName\n ): SwapperComponent | null => {\n const place = SwapperStore.get(el.id)\n if (place) {\n return place as SwapperComponent\n }\n\n return null\n }\n\n public static createInstances = (\n selector: string = defaultSwapperQueires.instanseQuery,\n options: ISwapperOptions = defaultSwapperOptions,\n queries: ISwapperQueries = defaultSwapperQueires\n ) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let place = SwapperComponent.getInstance(item)\n if (!place) {\n place = new SwapperComponent(item, options, queries)\n }\n })\n }\n\n public static createInsance = (\n selector: string = defaultSwapperQueires.instanseQuery,\n options: ISwapperOptions = defaultSwapperOptions,\n queries: ISwapperQueries = defaultSwapperQueires\n ): SwapperComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let place = SwapperComponent.getInstance(item)\n if (!place) {\n place = new SwapperComponent(item, options, queries)\n }\n return place\n }\n\n public static bootstrap = (selector: string = defaultSwapperQueires.instanseQuery) => {\n SwapperComponent.createInstances(selector)\n }\n\n public static reinitialization = (selector: string = defaultSwapperQueires.instanseQuery) => {\n SwapperComponent.createInstances(selector)\n }\n}\n\n// Window resize handler\nwindow.addEventListener('resize', function () {\n let timer\n throttle(\n timer,\n () => {\n // Locate and update Offcanvas instances on window resize\n const elements = document.querySelectorAll(defaultSwapperQueires.instanseQuery)\n elements.forEach((el) => {\n const place = SwapperComponent.getInstance(el as HTMLElement)\n if (place) {\n place.update()\n }\n })\n },\n 200\n )\n})\n\nexport {SwapperComponent, defaultSwapperOptions, defaultSwapperQueires}\n","import {createPopper, VirtualElement} from '@popperjs/core'\nimport {\n getElementChild,\n getElementParents,\n getAttributeValueByBreakpoint,\n getUniqueIdWithPrefix,\n DataUtil,\n ElementStyleUtil,\n EventHandlerUtil,\n insertAfterElement,\n slideUp,\n slideDown,\n DOMEventHandlerUtil,\n throttle,\n getHighestZindex,\n} from '../_utils/index'\n\nexport interface MenuOptions {\n dropdown: {\n hoverTimeout: number\n zindex: number\n }\n accordion: {\n slideSpeed: number\n expand: boolean\n }\n}\n\nconst defaultMenuOptions: MenuOptions = {\n dropdown: {\n hoverTimeout: 200,\n zindex: 105,\n },\n accordion: {\n slideSpeed: 250,\n expand: false,\n },\n}\n\ntype PopperPlacement =\n | 'right'\n | 'auto'\n | 'auto-start'\n | 'auto-end'\n | 'top'\n | 'bottom'\n | 'left'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'right-start'\n | 'right-end'\n | 'left-start'\n | 'left-end'\n | undefined\n\nclass MenuComponent {\n element: HTMLElement\n options: MenuOptions\n instanceUid: string\n triggerElement: HTMLElement | null = null\n\n constructor(_element: HTMLElement, options: MenuOptions) {\n this.element = _element\n this.options = Object.assign(defaultMenuOptions, options)\n this.instanceUid = getUniqueIdWithPrefix('menu')\n // this.element.setAttribute('data-kt-menu', 'true')\n this._setTriggerElement()\n this._update()\n DataUtil.set(this.element, 'menu', this)\n return this\n }\n\n // Set external trigger element\n private _setTriggerElement = () => {\n const target = document.querySelector(\n `[data-kt-menu-target=\"#${this.element.getAttribute('id')}\"`\n )\n\n if (target) {\n this.triggerElement = target as HTMLElement\n } else if (this.element.closest('[data-kt-menu-trigger]')) {\n this.triggerElement = this.element.closest('[data-kt-menu-trigger]') as HTMLElement\n } else if (\n this.element.parentNode &&\n getElementChild(this.element.parentNode as HTMLElement, '[data-kt-menu-trigger]')\n ) {\n const child = getElementChild(\n this.element.parentNode as HTMLElement,\n '[data-kt-menu-trigger]'\n )\n if (child) {\n this.triggerElement = child\n }\n }\n\n if (this.triggerElement) {\n DataUtil.set(this.triggerElement, 'menu', this)\n }\n }\n\n // Test if menu has external trigger element\n private _isTriggerElement = (item: HTMLElement) => {\n return this.triggerElement === item\n }\n\n // Get item option(through html attributes)\n private _getItemOption = (item: HTMLElement, name: string) => {\n let value: string | JSON | null | boolean = null\n if (item && item.hasAttribute('data-kt-menu-' + name)) {\n const attr = item.getAttribute('data-kt-menu-' + name) || ''\n value = getAttributeValueByBreakpoint(attr)\n if (value !== null && String(value) === 'true') {\n value = true\n } else if (value !== null && String(value) === 'false') {\n value = false\n }\n }\n return value\n }\n\n // Get item element\n private _getItemElement = (_element: HTMLElement) => {\n // Element is the external trigger element\n if (this._isTriggerElement(_element)) {\n return _element\n }\n\n // Element has item toggler attribute\n if (_element.hasAttribute('data-kt-menu-trigger')) {\n return _element\n }\n\n // Element has item DOM reference in it's data storage\n const itemElement = DataUtil.get(_element, 'item')\n if (itemElement) {\n return itemElement\n }\n\n // Item is parent of element\n const item = _element.closest('.menu-item[data-kt-menu-trigger]')\n if (item) {\n return item\n }\n\n // Element's parent has item DOM reference in it's data storage\n const sub = _element.closest('.menu-sub')\n if (sub) {\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\n if (subItem) {\n return subItem\n }\n }\n }\n\n // Get item parent element\n private _getItemParentElement = (item: HTMLElement) => {\n const sub = item.closest('.menu-sub')\n if (!sub) {\n return null\n }\n\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\n if (subItem) {\n return subItem\n }\n\n const parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')\n if (sub && parentItem) {\n return parentItem\n }\n\n return null\n }\n\n // Get item parent elements\n private _getItemParentElements = (item: HTMLElement) => {\n const parents: Array = []\n let parent: Element\n let i = 0\n let buffer: HTMLElement = item\n\n do {\n parent = this._getItemParentElement(buffer)\n if (parent) {\n parents.push(parent)\n buffer = parent as HTMLElement\n }\n\n i++\n } while (parent !== null && i < 20)\n\n if (this.triggerElement) {\n parents.unshift(this.triggerElement)\n }\n\n return parents\n }\n\n // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/)\n private _getDropdownPopperConfig = (item: HTMLElement) => {\n // Placement\n const placementOption = this._getItemOption(item, 'placement')\n let placement: PopperPlacement = 'right'\n if (placementOption) {\n placement = placementOption as PopperPlacement\n }\n\n // Flip\n // const flipValue = this._getItemOption(item, 'flip')\n // const flip = flipValue ? flipValue.toString().split(',') : []\n\n // Offset\n const offsetValue = this._getItemOption(item, 'offset')\n const offset = offsetValue ? offsetValue.toString().split(',') : []\n\n // Strategy\n const strategy: 'absolute' | 'fixed' | undefined =\n this._getItemOption(item, 'overflow') === true ? 'absolute' : 'fixed'\n\n return {\n placement: placement,\n strategy: strategy,\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: offset,\n },\n },\n {\n name: 'preventOverflow',\n },\n {\n name: 'flip',\n options: {\n // altBoundary: true,\n // fallbackPlacements: flip,\n flipVariations: false,\n },\n },\n ],\n }\n }\n\n // Get item child element\n private _getItemChildElement = (item: HTMLElement) => {\n let selector = item\n\n const subItem = DataUtil.get(item, 'sub')\n if (subItem) {\n selector = subItem\n }\n\n if (selector) {\n //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]');\n const element = selector.querySelector('.menu-item[data-kt-menu-trigger]')\n if (element) {\n return element\n }\n }\n return null\n }\n\n // Get item child elements\n private _getItemChildElements = (item: HTMLElement) => {\n const children: Array = []\n let child: Element | null\n let i = 0\n let buffer = item\n do {\n child = this._getItemChildElement(buffer)\n if (child) {\n children.push(child)\n buffer = child as HTMLElement\n }\n\n i++\n } while (child !== null && i < 20)\n\n return children\n }\n\n // Get item sub element\n private _getItemSubElement = (item: HTMLElement) => {\n if (!item) {\n return null\n }\n\n if (this._isTriggerElement(item)) {\n return this.element\n }\n\n if (item.classList.contains('menu-sub')) {\n return item\n } else if (DataUtil.has(item, 'sub')) {\n return DataUtil.get(item, 'sub')\n } else {\n return getElementChild(item, '.menu-sub')\n }\n }\n\n private _getCss = (el: HTMLElement, styleProp: string) => {\n const defaultView = (el.ownerDocument || document).defaultView\n if (!defaultView) {\n return ''\n }\n\n // sanitize property name to css notation\n // (hyphen separated words eg. font-Size)\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase()\n\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\n }\n\n // Get item sub type\n private _getItemSubType = (element: HTMLElement) => {\n const sub = this._getItemSubElement(element)\n if (sub && parseInt(this._getCss(sub, 'z-index')) > 0) {\n return 'dropdown'\n } else {\n return 'accordion'\n }\n }\n\n // Test if item's sub is shown\n private _isItemSubShown = (item: HTMLElement) => {\n let sub = this._getItemSubElement(item)\n if (sub) {\n if (this._getItemSubType(item) === 'dropdown') {\n return sub.classList.contains('show') && sub.hasAttribute('data-popper-placement')\n } else {\n return item.classList.contains('show')\n }\n }\n\n return false\n }\n\n // Test if item dropdown is permanent\n private _isItemDropdownPermanent = (item: HTMLElement) => {\n return this._getItemOption(item, 'permanent') === true\n }\n\n // Test if item's parent is shown\n private _isItemParentShown = (item: HTMLElement) => {\n return getElementParents(item, '.menu-item.show').length > 0\n }\n\n // Test of it is item sub element\n private _isItemSubElement = (item: HTMLElement) => {\n return item.classList.contains('menu-sub')\n }\n\n // Test if item has sub\n private _hasItemSub = (item: HTMLElement) => {\n return item.classList.contains('menu-item') && item.hasAttribute('data-kt-menu-trigger')\n }\n\n // Get link element\n private _getItemLinkElement = (item: HTMLElement) => {\n return getElementChild(item, '.menu-link')\n }\n\n // Get toggle element\n private _getItemToggleElement = (item: HTMLElement) => {\n if (this.triggerElement) {\n return this.triggerElement\n }\n\n return this._getItemLinkElement(item)\n }\n\n // Show item dropdown\n private _showDropdown = (item: HTMLElement) => {\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.show') === false) {\n return\n }\n\n // Hide all currently shown dropdowns except current one\n MenuComponent.hideDropdowns(item)\n\n // const toggle = this._isTriggerElement(item) ? item : this._getItemLinkElement(item);\n const sub = this._getItemSubElement(item)\n const width = this._getItemOption(item, 'width')\n const height = this._getItemOption(item, 'height')\n\n let zindex = this.options.dropdown.zindex\n const parentZindex = getHighestZindex(item) // update\n // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update\n if (parentZindex !== null && parentZindex >= zindex) {\n zindex = parentZindex + 1\n }\n\n if (zindex) {\n ElementStyleUtil.set(sub, 'z-index', zindex)\n }\n\n if (width) {\n ElementStyleUtil.set(sub, 'width', width)\n }\n\n if (height) {\n ElementStyleUtil.set(sub, 'height', height)\n }\n\n this.initDropdownPopper(item, sub)\n\n item.classList.add('show')\n item.classList.add('menu-dropdown')\n sub.classList.add('show')\n\n // Append the sub the the root of the menu\n if (this._getItemOption(item, 'overflow') === true) {\n document.body.appendChild(sub)\n DataUtil.set(item, 'sub', sub)\n DataUtil.set(sub, 'item', item)\n DataUtil.set(sub, 'menu', this)\n } else {\n DataUtil.set(sub, 'item', item)\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.shown')\n }\n\n // Init dropdown popper(new)\n private initDropdownPopper = (item: HTMLElement, sub: HTMLElement) => {\n // Setup popper instance\n let reference\n const attach = this._getItemOption(item, 'attach') as string\n\n if (attach) {\n if (attach === 'parent') {\n reference = item.parentNode\n } else {\n reference = document.querySelector(attach)\n }\n } else {\n reference = item\n }\n\n if (reference) {\n const popper = createPopper(\n reference as Element | VirtualElement,\n sub,\n this._getDropdownPopperConfig(item)\n )\n DataUtil.set(item, 'popper', popper)\n }\n }\n\n // Hide item dropdown\n private _hideDropdown = (item: HTMLElement) => {\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hide') === false) {\n return\n }\n\n const sub = this._getItemSubElement(item)\n ElementStyleUtil.set(sub, 'z-index', '')\n ElementStyleUtil.set(sub, 'width', '')\n ElementStyleUtil.set(sub, 'height', '')\n item.classList.remove('show')\n item.classList.remove('menu-dropdown')\n sub.classList.remove('show')\n\n // Append the sub back to it's parent\n if (this._getItemOption(item, 'overflow') === true) {\n if (item.classList.contains('menu-item')) {\n item.appendChild(sub)\n } else {\n insertAfterElement(this.element, item)\n }\n\n DataUtil.remove(item, 'sub')\n DataUtil.remove(sub, 'item')\n DataUtil.remove(sub, 'menu')\n }\n\n if (DataUtil.has(item, 'popper') === true) {\n DataUtil.get(item, 'popper').destroy()\n DataUtil.remove(item, 'popper')\n }\n\n // Destroy popper(new)\n this.destroyDropdownPopper(item)\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\n }\n\n // Destroy dropdown popper(new)\n private destroyDropdownPopper = (item: HTMLElement) => {\n if (DataUtil.has(item, 'popper') === true) {\n DataUtil.get(item, 'popper').destroy()\n DataUtil.remove(item, 'popper')\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\n }\n\n private _showAccordion = (item: HTMLElement) => {\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.show') === false) {\n return\n }\n\n if (this.options.accordion.expand === false) {\n this._hideAccordions(item)\n }\n\n if (DataUtil.has(item, 'popper') === true) {\n this._hideDropdown(item)\n }\n\n item.classList.add('hover') // updateWW\n item.classList.add('showing')\n\n const subElement = this._getItemSubElement(item)\n if (subElement) {\n const sub = subElement as HTMLElement\n slideDown(sub, this.options.accordion.slideSpeed, () => {\n item.classList.remove('showing')\n item.classList.add('show')\n sub.classList.add('show')\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.shown')\n })\n }\n }\n\n private _hideAccordion = (item: HTMLElement) => {\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hide') === false) {\n return\n }\n\n const sub = this._getItemSubElement(item)\n item.classList.add('hiding')\n\n if (sub) {\n slideUp(sub, this.options.accordion.slideSpeed, () => {\n item.classList.remove('hiding')\n item.classList.remove('show')\n sub.classList.remove('show')\n item.classList.remove('hover') // update\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hidden')\n })\n }\n }\n\n // Hide all shown accordions of item\n private _hideAccordions = (item: HTMLElement) => {\n const itemsToHide = this.element.querySelectorAll('.show[data-kt-menu-trigger]')\n if (itemsToHide && itemsToHide.length > 0) {\n for (var i = 0, len = itemsToHide.length; i < len; i++) {\n const itemToHide = itemsToHide[i] as HTMLElement\n\n if (\n this._getItemSubType(itemToHide) === 'accordion' &&\n itemToHide !== item &&\n item.contains(itemToHide) === false &&\n itemToHide.contains(item) === false\n ) {\n this._hideAccordion(itemToHide)\n }\n }\n }\n }\n\n // Event Handlers\n // Reset item state classes if item sub type changed\n private _reset = (item: HTMLElement) => {\n if (this._hasItemSub(item) === false) {\n return\n }\n\n const sub = this._getItemSubElement(item)\n\n // Reset sub state if sub type is changed during the window resize\n if (DataUtil.has(item, 'type') && DataUtil.get(item, 'type') !== this._getItemSubType(item)) {\n // updated\n item.classList.remove('hover')\n item.classList.remove('show')\n item.classList.remove('show')\n if (sub && sub.removeClass) {\n sub.removeClass(sub, 'show')\n }\n } // updated\n }\n\n // TODO: not done\n private _destroy = () => {}\n\n // Update all item state classes if item sub type changed\n private _update = () => {\n const items = this.element.querySelectorAll('.menu-item[data-kt-menu-trigger]')\n items.forEach((el) => this._reset(el as HTMLElement))\n }\n\n // Hide item sub\n private _hide = (item: HTMLElement) => {\n if (!item) {\n return\n }\n\n if (this._isItemSubShown(item) === false) {\n return\n }\n\n if (this._getItemSubType(item) === 'dropdown') {\n this._hideDropdown(item)\n } else if (this._getItemSubType(item) === 'accordion') {\n this._hideAccordion(item)\n }\n }\n\n // Show item sub\n private _show = (item: HTMLElement) => {\n if (!item) {\n return\n }\n\n if (this._isItemSubShown(item) === true) {\n return\n }\n\n if (this._getItemSubType(item) === 'dropdown') {\n this._showDropdown(item) // // show current dropdown\n } else if (this._getItemSubType(item) === 'accordion') {\n this._showAccordion(item)\n }\n\n // Remember last submenu type\n\n DataUtil.set(item, 'type', this._getItemSubType(item)) // updated\n }\n\n // Toggle item sub\n private _toggle = (item: HTMLElement) => {\n if (!item) {\n return\n }\n\n if (this._isItemSubShown(item) === true) {\n this._hide(item)\n } else {\n this._show(item)\n }\n }\n\n // Mouseout handle\n private _mouseout = (element: HTMLElement, e: MouseEvent) => {\n const item = this._getItemElement(element)\n if (!item) {\n return\n }\n\n if (this._getItemOption(item, 'trigger') !== 'hover') {\n return\n }\n\n const timeout = setTimeout(() => {\n if (DataUtil.get(item, 'hover') === '1') {\n this._hide(item)\n }\n }, this.options.dropdown.hoverTimeout)\n\n DataUtil.set(item, 'hover', '1')\n DataUtil.set(item, 'timeout', timeout)\n }\n\n // Mouseover handle\n private _mouseover = (element: HTMLElement, e: MouseEvent) => {\n const item = this._getItemElement(element)\n if (!item) {\n return\n }\n\n if (this._getItemOption(item, 'trigger') !== 'hover') {\n return\n }\n\n if (DataUtil.get(item, 'hover') === '1') {\n clearTimeout(DataUtil.get(item, 'timeout'))\n DataUtil.remove(item, 'hover')\n DataUtil.remove(item, 'timeout')\n }\n\n this._show(item)\n }\n\n // Dismiss handler\n private _dismiss = (element: HTMLElement, e: Event) => {\n const item = this._getItemElement(element)\n const items = this._getItemChildElements(item)\n //if ( item !== null && _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\n const itemSubType = this._getItemSubType(item)\n if (item !== null && itemSubType === 'dropdown') {\n this._hide(item) // hide items dropdown\n\n // Hide all child elements as well\n if (items.length > 0) {\n for (let i = 0, len = items.length; i < len; i++) {\n //if ( _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\n if (items[i] !== null && this._getItemSubType(items[i] as HTMLElement) === 'dropdown') {\n this._hide(items[i] as HTMLElement)\n }\n }\n }\n }\n }\n\n // Link handler\n private _link = (element: HTMLElement, e: Event) => {\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.link.click') === false) {\n return\n }\n\n // Dismiss all shown dropdowns\n MenuComponent.hideDropdowns(undefined)\n EventHandlerUtil.trigger(this.element, 'kt.menu.link.clicked')\n }\n\n private _click = (element: HTMLElement, e: Event) => {\n e.preventDefault()\n const item = this._getItemElement(element)\n if (this._getItemOption(item, 'trigger') !== 'click') {\n return\n }\n\n if (this._getItemOption(item, 'toggle') === false) {\n this._show(item)\n } else {\n this._toggle(item)\n }\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public click = (element: HTMLElement, e: Event) => {\n return this._click(element, e)\n }\n\n public link = (element: HTMLElement, e: Event) => {\n return this._link(element, e)\n }\n\n public dismiss = (element: HTMLElement, e: Event) => {\n return this._dismiss(element, e)\n }\n\n public mouseover = (element: HTMLElement, e: Event) => {\n return this._mouseover(element, e as MouseEvent)\n }\n\n public mouseout = (element: HTMLElement, e: Event) => {\n return this._mouseout(element, e as MouseEvent)\n }\n\n // General Methods\n public getItemTriggerType = (item: HTMLElement) => {\n return this._getItemOption(item, 'trigger')\n }\n\n public getItemSubType = (element: HTMLElement) => {\n return this._getItemSubType(element)\n }\n\n public show = (item: HTMLElement) => {\n return this._show(item)\n }\n\n public hide = (item: HTMLElement) => {\n return this._hide(item)\n }\n\n public reset = (item: HTMLElement) => {\n return this._reset(item)\n }\n\n public update = () => {\n return this._update()\n }\n\n public getElement = () => {\n return this.element\n }\n\n public getItemLinkElement = (item: HTMLElement) => {\n return this._getItemLinkElement(item)\n }\n\n public getItemToggleElement = (item: HTMLElement) => {\n return this._getItemToggleElement(item)\n }\n\n public getItemSubElement = (item: HTMLElement) => {\n return this._getItemSubElement(item)\n }\n\n public getItemParentElements = (item: HTMLElement) => {\n return this._getItemParentElements(item)\n }\n\n public isItemSubShown = (item: HTMLElement) => {\n return this._isItemSubShown(item)\n }\n\n public isItemParentShown = (item: HTMLElement) => {\n return this._isItemParentShown(item)\n }\n\n public getTriggerElement = () => {\n return this.triggerElement\n }\n\n public isItemDropdownPermanent = (item: HTMLElement) => {\n return this._isItemDropdownPermanent(item)\n }\n\n // Accordion Mode Methods\n public hideAccordions = (item: HTMLElement) => {\n return this._hideAccordions(item)\n }\n\n // Event API\n public on = (name: string, handler: any) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: any) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n // public static methods\n // Get KTMenu instance by element\n public static getInstance = (element: HTMLElement) => {\n // Element has menu DOM reference in it's DATA storage\n const elementMenu = DataUtil.get(element, 'menu')\n if (elementMenu) {\n return elementMenu\n }\n\n // Element has .menu parent\n const menu = element.closest('.menu')\n if (menu) {\n const menuData = DataUtil.get(menu as HTMLElement, 'menu')\n if (menuData) {\n return menuData\n }\n }\n\n // Element has a parent with DOM reference to .menu in it's DATA storage\n if (element.classList.contains('menu-link')) {\n const sub = element.closest('.menu-sub')\n if (sub) {\n const subMenu = DataUtil.get(sub as HTMLElement, 'menu')\n if (subMenu) {\n return subMenu\n }\n }\n }\n\n return null\n }\n\n // Hide all dropdowns and skip one if provided\n public static hideDropdowns = (skip: HTMLElement | undefined) => {\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\n\n if (items && items.length > 0) {\n for (let i = 0, len = items.length; i < len; i++) {\n const item = items[i]\n const menu = MenuComponent.getInstance(item as HTMLElement)\n\n if (menu && menu.getItemSubType(item) === 'dropdown') {\n if (skip) {\n if (\n menu.getItemSubElement(item).contains(skip) === false &&\n item.contains(skip) === false &&\n item !== skip\n ) {\n menu.hide(item)\n }\n } else {\n menu.hide(item)\n }\n }\n }\n }\n }\n\n public static updateDropdowns = () => {\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\n if (items && items.length > 0) {\n for (var i = 0, len = items.length; i < len; i++) {\n var item = items[i]\n\n if (DataUtil.has(item as HTMLElement, 'popper')) {\n DataUtil.get(item as HTMLElement, 'popper').forceUpdate()\n }\n }\n }\n }\n\n // Global handlers\n public static createInstances = (selector: string) => {\n // Initialize menus\n document.querySelectorAll(selector).forEach((el) => {\n const menuItem = el as HTMLElement\n let menuInstance = MenuComponent.getInstance(menuItem)\n if (!menuInstance) {\n menuInstance = new MenuComponent(el as HTMLElement, defaultMenuOptions)\n }\n })\n }\n\n public static initGlobalHandlers = () => {\n // Dropdown handler\n document.addEventListener('click', (e) => {\n const menuItems = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\n if (menuItems && menuItems.length > 0) {\n for (let i = 0; i < menuItems.length; i++) {\n const item = menuItems[i] as HTMLElement\n const menuObj = MenuComponent.getInstance(item) as MenuComponent\n if (menuObj && menuObj.getItemSubType(item) === 'dropdown') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const menu = menuObj.getElement()\n const sub = menuObj.getItemSubElement(item) as HTMLElement\n if (item === e.target || item.contains(e.target as HTMLElement)) {\n continue\n }\n\n if (sub && (sub === e.target || sub.contains(e.target as HTMLElement))) {\n continue\n }\n menuObj.hide(item)\n }\n }\n }\n })\n\n // Sub toggle handler\n DOMEventHandlerUtil.on(\n document.body,\n '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger=\"auto\"])',\n 'click',\n function (this: HTMLElement, e: Event) {\n const menu = MenuComponent.getInstance(this) as MenuComponent\n if (menu) {\n return menu.click(this, e)\n }\n }\n )\n\n // // Link handler\n DOMEventHandlerUtil.on(\n document.body,\n '.menu-item:not([data-kt-menu-trigger]) > .menu-link',\n 'click',\n function (this: HTMLElement, e: Event) {\n e.stopPropagation()\n const menu = MenuComponent.getInstance(this)\n if (menu && menu.link) {\n return menu.link(this, e)\n }\n }\n )\n\n // Dismiss handler\n DOMEventHandlerUtil.on(\n document.body,\n '[data-kt-menu-dismiss=\"true\"]',\n 'click',\n function (this: HTMLElement, e: Event) {\n const menu = MenuComponent.getInstance(this) as MenuComponent\n if (menu) {\n return menu.dismiss(this, e)\n }\n }\n )\n\n // Mouseover handler\n DOMEventHandlerUtil.on(\n document.body,\n '[data-kt-menu-trigger], .menu-sub',\n 'mouseover',\n function (this: HTMLElement, e: Event) {\n const menu = MenuComponent.getInstance(this) as MenuComponent\n if (menu && menu.getItemSubType(this) === 'dropdown') {\n return menu.mouseover(this, e)\n }\n }\n )\n\n // Mouseout handler\n DOMEventHandlerUtil.on(\n document.body,\n '[data-kt-menu-trigger], .menu-sub',\n 'mouseout',\n function (this: HTMLElement, e: Event) {\n const menu = MenuComponent.getInstance(this) as MenuComponent\n if (menu && menu.getItemSubType(this) === 'dropdown') {\n return menu.mouseout(this, e)\n }\n }\n )\n\n // Resize handler\n window.addEventListener('resize', () => {\n let timer\n throttle(\n timer,\n () => {\n // Locate and update Drawer instances on window resize\n const elements = document.querySelectorAll('[data-kt-menu=\"true\"]')\n elements.forEach((el) => {\n const menu = MenuComponent.getInstance(el as HTMLElement)\n if (menu) {\n menu.update()\n }\n })\n },\n 200\n )\n })\n }\n\n public static bootstrap = () => {\n MenuComponent.initGlobalHandlers()\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\n }\n\n public static reinitialization = () => {\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\n }\n\n public static createInsance = (\n selector: string,\n options: MenuOptions = defaultMenuOptions\n ): MenuComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let menu = MenuComponent.getInstance(item)\n if (!menu) {\n menu = new MenuComponent(item, options)\n }\n return menu\n }\n}\n\nexport {MenuComponent, defaultMenuOptions}\n","import {\n EventHandlerUtil,\n DataUtil,\n getBreakpoint,\n getAttributeValueByBreakpoint,\n stringSnakeToCamel,\n getObjectPropertyValueByKey,\n getViewPort,\n isVisibleElement,\n throttle,\n} from '../_utils/index'\n\nimport {MenuComponent, defaultMenuOptions} from './MenuComponent'\n\nexport interface ISearchOptions {\n minLength: number // Miniam text lenght to query search\n keypress: boolean // Enable search on keypress\n enter: boolean // Enable search on enter key press\n layout: 'menu' | 'inline' // Use 'menu' or 'inline' layout options to display search results\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\n showOnFocus: boolean // Always show menu on input focus\n}\n\nexport interface ISearchQueries {\n componentName: string\n instanseQuery: string\n attrQuery: string\n}\n\nconst defaultSearchOptions: ISearchOptions = {\n minLength: 2, // Miniam text lenght to query search\n keypress: true, // Enable search on keypress\n enter: true, // Enable search on enter key press\n layout: 'menu', // Use 'menu' or 'inline' layout options to display search results\n showOnFocus: true, // Always show menu on input focus\n}\n\nconst defaultSearchQueires: ISearchQueries = {\n componentName: 'search',\n instanseQuery: '[data-kt-search]',\n attrQuery: 'data-kt-search-',\n}\n\nclass SearchComponent {\n element: HTMLElement\n contentElement: HTMLElement\n formElement: HTMLFormElement\n inputElement: HTMLInputElement\n spinnerElement: HTMLElement\n clearElement: HTMLElement\n toggleElement: HTMLElement\n submitElement: HTMLElement\n toolbarElement: HTMLElement\n resultsElement: HTMLElement\n suggestionElement: HTMLElement\n emptyElement: HTMLElement\n layout: any\n\n options: ISearchOptions\n queries: ISearchQueries\n\n processing: boolean = false\n menuObject: MenuComponent | undefined\n\n constructor(_element: HTMLElement, _options: ISearchOptions, _queries: ISearchQueries) {\n // Variables\n this.options = Object.assign(defaultSearchOptions, _options)\n this.queries = _queries\n\n // Elements\n this.element = _element\n this.contentElement = this._getElement('content') as HTMLElement\n this.formElement = this._getElement('form') as HTMLFormElement\n this.inputElement = this._getElement('input') as HTMLInputElement\n this.spinnerElement = this._getElement('spinner') as HTMLElement\n this.clearElement = this._getElement('clear') as HTMLElement\n this.toggleElement = this._getElement('toggle') as HTMLElement\n this.submitElement = this._getElement('submit') as HTMLElement\n this.toolbarElement = this._getElement('toolbar') as HTMLElement\n\n this.resultsElement = this._getElement('results') as HTMLElement\n this.suggestionElement = this._getElement('suggestion') as HTMLElement\n this.emptyElement = this._getElement('empty') as HTMLElement\n\n // Layout\n this.layout = this.getOption('layout')\n if (this.layout === 'menu') {\n this.menuObject = new MenuComponent(this.contentElement, defaultMenuOptions)\n }\n\n // Update\n this.update()\n\n // Event Handlers\n this.handlers()\n\n DataUtil.set(this.element, this.queries.componentName, this)\n }\n\n private _getElement = (name: string) => {\n return this.element.querySelector('[data-kt-search-element=\"' + name + '\"]')\n }\n\n // Get option\n private getOption = (name: string) => {\n const attr = this.element.getAttribute(`${this.queries.attrQuery}${name}`)\n if (attr) {\n let value = getAttributeValueByBreakpoint(attr)\n\n if (value !== null && String(value) === 'true') {\n return true\n } else if (value !== null && String(value) === 'false') {\n return false\n }\n\n return value\n } else {\n const optionName = stringSnakeToCamel(name)\n\n const option = getObjectPropertyValueByKey(this.options, optionName)\n if (option) {\n return getAttributeValueByBreakpoint(option)\n } else {\n return null\n }\n }\n }\n\n // Check if responsive form mode is enabled\n private getResponsiveFormMode = () => {\n const responsive = this.getOption('responsive') as string\n const width = getViewPort().width\n\n if (!responsive) {\n return null\n }\n\n const breakpoint = getBreakpoint(responsive)\n let breakPointNum = -1\n if (!breakpoint) {\n breakPointNum = parseInt(responsive)\n } else {\n breakPointNum = +breakpoint\n }\n\n if (width < breakPointNum) {\n return 'on'\n } else {\n return 'off'\n }\n }\n\n // Focus\n private focus = () => {\n this.element.classList.add('focus')\n\n if (\n this.getOption('show-on-focus') === true ||\n this.inputElement.value.length >= this.options.minLength\n ) {\n this.show()\n }\n }\n\n // Blur\n private blur = () => {\n this.element.classList.remove('focus')\n }\n\n // Enter\n private enter = (e: KeyboardEvent) => {\n const key = e.charCode || e.keyCode || 0\n\n if (key === 13) {\n e.preventDefault()\n\n this.search()\n }\n }\n\n // Input\n private input = () => {\n if (this.getOption('min-length')) {\n const minLength = parseInt(this.getOption('min-length') as string)\n\n if (this.inputElement.value.length >= minLength) {\n this.search()\n } else if (this.inputElement.value.length === 0) {\n this.clear()\n }\n }\n }\n\n private handlers(): void {\n const context = this\n\n // Focus\n this.inputElement.addEventListener('focus', this.focus)\n\n // Blur\n this.inputElement.addEventListener('blur', this.blur)\n\n // Keypress\n if (this.getOption('keypress') === true) {\n this.inputElement.addEventListener('input', this.input)\n }\n\n // Submit\n if (this.submitElement) {\n this.submitElement.addEventListener('click', this.search)\n }\n\n // Enter\n if (this.getOption('enter') === true) {\n this.inputElement.addEventListener('keypress', this.enter)\n }\n\n // Clear\n if (this.clearElement) {\n this.clearElement.addEventListener('click', this.clear)\n }\n\n // Menu\n if (this.menuObject) {\n // Toggle menu\n if (this.toggleElement) {\n this.toggleElement.addEventListener('click', this.show)\n\n this.menuObject.on('kt.menu.dropdown.show', function () {\n // @ts-ignore\n if (isVisibleElement(context.toggleElement)) {\n // @ts-ignore\n context.toggleElement.classList.add('active')\n // @ts-ignore\n context.toggleElement.classList.add('show')\n }\n })\n\n this.menuObject.on('kt.menu.dropdown.hide', function () {\n // @ts-ignore\n if (isVisibleElement(context.toggleElement)) {\n // @ts-ignore\n context.toggleElement.classList.remove('active')\n // @ts-ignore\n context.toggleElement.classList.remove('show')\n }\n })\n }\n\n this.menuObject.on('kt.menu.dropdown.shown', function () {\n // @ts-ignore\n context.inputElement.focus()\n })\n }\n\n // Window resize handling\n window.addEventListener('resize', () => {\n let timer\n\n throttle(\n timer,\n () => {\n this.update()\n },\n 200\n )\n })\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n // Update\n public update = () => {\n // Handle responsive form\n if (this.layout === 'menu') {\n let responsiveFormMode = this.getResponsiveFormMode()\n\n if (responsiveFormMode === 'on' && !this.contentElement.contains(this.formElement)) {\n this.contentElement.prepend(this.formElement)\n this.formElement.classList.remove('d-none')\n } else if (responsiveFormMode === 'off' && this.contentElement.contains(this.formElement)) {\n this.element.prepend(this.formElement)\n this.formElement.classList.add('d-none')\n }\n }\n }\n\n // Show menu\n public show = () => {\n if (this.menuObject) {\n this.update()\n\n this.menuObject.show(this.element)\n }\n }\n\n // Hide menu\n public hide = () => {\n if (this.menuObject) {\n this.update()\n\n this.menuObject.hide(this.element)\n }\n }\n\n // Search\n public search = () => {\n if (!this.processing) {\n // Show search spinner\n if (this.spinnerElement) {\n this.spinnerElement.classList.remove('d-none')\n }\n\n // Hide search clear button\n if (this.clearElement) {\n this.clearElement.classList.add('d-none')\n }\n\n // Hide search toolbar\n if (this.toolbarElement) {\n this.toolbarElement.classList.add('d-none')\n }\n\n // Focus input\n this.inputElement.focus()\n\n this.processing = true\n EventHandlerUtil.trigger(this.element, 'kt.search.process', this)\n }\n }\n\n // Complete\n public complete = () => {\n if (this.spinnerElement) {\n this.spinnerElement.classList.add('d-none')\n }\n\n // Show search toolbar\n if (this.clearElement) {\n this.clearElement.classList.remove('d-none')\n }\n\n if (this.inputElement.value.length === 0) {\n this.clear()\n }\n\n // Focus input\n this.inputElement.focus()\n\n this.show()\n\n this.processing = false\n }\n\n // Clear\n public clear = () => {\n if (EventHandlerUtil.trigger(this.element, 'kt.search.clear') === false) {\n return\n }\n\n // Clear and focus input\n this.inputElement.value = ''\n this.inputElement.focus()\n\n // Hide clear icon\n if (this.clearElement) {\n this.clearElement.classList.add('d-none')\n }\n\n // Show search toolbar\n if (this.toolbarElement) {\n this.toolbarElement.classList.remove('d-none')\n }\n\n // Hide menu\n if (this.getOption('show-on-focus') === false) {\n this.hide()\n }\n\n EventHandlerUtil.trigger(this.element, 'kt.search.cleared')\n }\n\n public isProcessing = () => {\n return this.processing\n }\n\n public getQuery = () => {\n return this.inputElement.value\n }\n\n public getMenu = () => {\n return this.menuObject\n }\n\n public getFormElement = () => {\n return this.formElement\n }\n\n public getInputElement(): HTMLInputElement {\n return this.inputElement\n }\n\n public getContentElement(): HTMLElement {\n return this.contentElement\n }\n\n public getElement(): HTMLElement {\n return this.element\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n // Static methods\n public static getInstance = (\n el: HTMLElement,\n componentName: string = defaultSearchQueires.componentName\n ) => {\n const Search = DataUtil.get(el, componentName)\n if (Search) {\n return Search\n }\n\n return null\n }\n\n public static createInstances = (\n selector: string = defaultSearchQueires.instanseQuery,\n options: ISearchOptions = defaultSearchOptions,\n queries: ISearchQueries = defaultSearchQueires\n ) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let Search = SearchComponent.getInstance(item)\n if (!Search) {\n Search = new SearchComponent(item, options, queries)\n }\n })\n }\n\n public static createInsance = (\n selector: string = defaultSearchQueires.instanseQuery,\n options: ISearchOptions = defaultSearchOptions,\n queries: ISearchQueries = defaultSearchQueires\n ): SearchComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let Search = SearchComponent.getInstance(item)\n if (!Search) {\n Search = new SearchComponent(item, options, queries)\n }\n return Search\n }\n\n public static bootstrap = (selector: string = defaultSearchQueires.instanseQuery) => {\n SearchComponent.createInstances(selector)\n }\n\n public static reinitialization = (selector: string = defaultSearchQueires.instanseQuery) => {\n SearchComponent.createInstances(selector)\n }\n}\nexport {SearchComponent, defaultSearchOptions, defaultSearchQueires}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, {useState, useEffect } from 'react'\nimport {useDispatch} from 'react-redux'\nimport {useFormik} from 'formik'\nimport * as Yup from 'yup'\nimport clsx from 'clsx'\nimport * as auth from '../redux/AuthRedux'\nimport {register} from '../redux/AuthCRUD'\nimport {Link} from 'react-router-dom'\n// import {toAbsoluteUrl} from '../../../../_metronic/helpers'\nimport { PasswordMeterComponent } from \"../../../../_metronic/assets/ts/components\";\n\nconst initialValues = {\n firstname: '',\n lastname: '',\n email: '',\n password: '',\n changepassword: '',\n acceptTerms: false,\n}\n\nconst registrationSchema = Yup.object().shape({\n firstname: Yup.string()\n .min(3, 'Minimum 3 symbols')\n .max(50, 'Maximum 50 symbols')\n .required('First name is required'),\n email: Yup.string()\n .email('Wrong email format')\n .min(3, 'Minimum 3 symbols')\n .max(50, 'Maximum 50 symbols')\n .required('Email is required'),\n lastname: Yup.string()\n .min(3, 'Minimum 3 symbols')\n .max(50, 'Maximum 50 symbols')\n .required('Last name is required'),\n password: Yup.string()\n .min(3, 'Minimum 3 symbols')\n .max(50, 'Maximum 50 symbols')\n .required('Password is required'),\n changepassword: Yup.string()\n .required('Password confirmation is required')\n .when('password', {\n is: (val: string) => (val && val.length > 0 ? true : false),\n then: Yup.string().oneOf([Yup.ref('password')], \"Password and Confirm Password didn't match\"),\n }),\n acceptTerms: Yup.bool().required('You must accept the terms and conditions'),\n})\n\nexport function Registration() {\n const [loading, setLoading] = useState(false)\n const dispatch = useDispatch()\n const formik = useFormik({\n initialValues,\n validationSchema: registrationSchema,\n onSubmit: (values, {setStatus, setSubmitting}) => {\n setLoading(true)\n setTimeout(() => {\n register(values.email, values.firstname, values.lastname, values.password, values.changepassword)\n .then(({data: {api_token}}) => {\n setLoading(false)\n console.log(api_token);\n dispatch(auth.actions.register(api_token))\n })\n .catch(() => {\n setLoading(false)\n setSubmitting(false)\n setStatus('Registration process has broken')\n })\n }, 1000)\n },\n })\n\n useEffect(()=>{\n PasswordMeterComponent.bootstrap();\n }, []);\n\n return (\n \n {/* begin::Heading */}\n
\n {/* begin::Title */}\n

Create an Account

\n {/* end::Title */}\n\n {/* begin::Link */}\n
\n Already have an account?\n \n Forgot Password ?\n \n
\n {/* end::Link */}\n
\n {/* end::Heading */}\n\n {/* begin::Action */}\n \n {/* end::Action */}\n\n
\n
\n OR\n
\n
\n\n {formik.status && (\n
\n
{formik.status}
\n
\n )}\n\n {/* begin::Form group Firstname */}\n
\n
\n \n \n {formik.touched.firstname && formik.errors.firstname && (\n
\n
\n {formik.errors.firstname}\n
\n
\n )}\n
\n
\n {/* begin::Form group Lastname */}\n
\n \n \n {formik.touched.lastname && formik.errors.lastname && (\n
\n
\n {formik.errors.lastname}\n
\n
\n )}\n
\n {/* end::Form group */}\n
\n
\n {/* end::Form group */}\n\n {/* begin::Form group Email */}\n
\n \n \n {formik.touched.email && formik.errors.email && (\n
\n
\n {formik.errors.email}\n
\n
\n )}\n
\n {/* end::Form group */}\n\n {/* begin::Form group Password */}\n
\n
\n \n
\n \n {formik.touched.password && formik.errors.password && (\n
\n
\n {formik.errors.password}\n
\n
\n )}\n
\n {/* begin::Meter */}\n \n
\n
\n \n \n \n {/* end::Meter */}\n \n
\n Use 8 or more characters with a mix of letters, numbers & symbols.\n
\n \n {/* end::Form group */}\n\n {/* begin::Form group Confirm password */}\n
\n \n \n {formik.touched.changepassword && formik.errors.changepassword && (\n
\n
\n {formik.errors.changepassword}\n
\n
\n )}\n
\n {/* end::Form group */}\n\n {/* begin::Form group */}\n
\n
\n \n \n I Agree the{' '}\n \n terms and conditions\n \n .\n \n {formik.touched.acceptTerms && formik.errors.acceptTerms && (\n
\n
\n {formik.errors.acceptTerms}\n
\n
\n )}\n
\n
\n {/* end::Form group */}\n\n {/* begin::Form group */}\n
\n \n {!loading && Submit}\n {loading && (\n \n Please wait...{' '}\n \n \n )}\n \n \n \n Cancel\n \n \n
\n {/* end::Form group */}\n \n )\n}\n","import React, {useState} from 'react'\nimport * as Yup from 'yup'\nimport clsx from 'clsx'\nimport {Link} from 'react-router-dom'\nimport {useFormik} from 'formik'\nimport {requestPassword} from '../redux/AuthCRUD'\n\nconst initialValues = {\n email: 'admin@demo.com',\n}\n\nconst forgotPasswordSchema = Yup.object().shape({\n email: Yup.string()\n .email('Wrong email format')\n .min(3, 'Minimum 3 symbols')\n .max(50, 'Maximum 50 symbols')\n .required('Email is required'),\n})\n\nexport function ForgotPassword() {\n const [loading, setLoading] = useState(false)\n const [hasErrors, setHasErrors] = useState(undefined)\n const formik = useFormik({\n initialValues,\n validationSchema: forgotPasswordSchema,\n onSubmit: (values, {setStatus, setSubmitting}) => {\n setLoading(true)\n setHasErrors(undefined)\n setTimeout(() => {\n requestPassword(values.email)\n .then(({data: {result}}) => {\n setHasErrors(false)\n setLoading(false)\n })\n .catch(() => {\n setHasErrors(true)\n setLoading(false)\n setSubmitting(false)\n setStatus('The login detail is incorrect')\n })\n }, 1000)\n },\n })\n\n return (\n <>\n \n
\n {/* begin::Title */}\n

Forgot Password ?

\n {/* end::Title */}\n\n {/* begin::Link */}\n
Enter your email to reset your password.
\n {/* end::Link */}\n
\n\n {/* begin::Title */}\n {hasErrors === true && (\n
\n
\n Sorry, looks like there are some errors detected, please try again.\n
\n
\n )}\n\n {hasErrors === false && (\n
\n
Sent password reset. Please check your email
\n
\n )}\n {/* end::Title */}\n\n {/* begin::Form group */}\n
\n \n \n {formik.touched.email && formik.errors.email && (\n
\n
\n {formik.errors.email}\n
\n
\n )}\n
\n {/* end::Form group */}\n\n {/* begin::Form group */}\n
\n \n Submit\n {loading && (\n \n Please wait...\n \n \n )}\n \n \n \n Cancel\n \n {' '}\n
\n {/* end::Form group */}\n \n \n )\n}\n","export const toAbsoluteUrl = (pathname: string) => process.env.PUBLIC_URL + pathname\n","export function getCurrentUrl(pathname: string) {\n return pathname.split(/[?#]/)[0]\n}\n\nexport function checkIsActive(pathname: string, url: string) {\n const current = getCurrentUrl(pathname)\n if (!current || !url) {\n return false\n }\n\n if (current === url) {\n return true\n }\n\n if (current.indexOf(url) > -1) {\n return true\n }\n\n return false\n}\n","import React from 'react'\nimport SVG from 'react-inlinesvg'\nimport {toAbsoluteUrl} from '../AssetHelpers'\ntype Props = {\n className?: string\n path: string\n svgClassName?: string\n}\n\nconst KTSVG: React.FC = ({className = '', path, svgClassName = 'mh-50px'}) => {\n return (\n \n \n \n )\n}\n\nexport {KTSVG}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {useState} from 'react'\nimport {useDispatch} from 'react-redux'\nimport * as Yup from 'yup'\nimport clsx from 'clsx'\nimport {Link} from 'react-router-dom'\nimport {useFormik} from 'formik'\nimport * as auth from '../redux/AuthRedux'\nimport {login} from '../redux/AuthCRUD'\nimport {toAbsoluteUrl} from '../../../../_metronic/helpers'\n\nconst loginSchema = Yup.object().shape({\n email: Yup.string()\n .email('Wrong email format')\n .min(3, 'Minimum 3 symbols')\n .max(50, 'Maximum 50 symbols')\n .required('Email is required'),\n password: Yup.string()\n .min(3, 'Minimum 3 symbols')\n .max(50, 'Maximum 50 symbols')\n .required('Password is required'),\n})\n\nconst initialValues = {\n email: 'admin@demo.com',\n password: 'demo',\n}\n\n/*\n Formik+YUP+Typescript:\n https://jaredpalmer.com/formik/docs/tutorial#getfieldprops\n https://medium.com/@maurice.de.beijer/yup-validation-and-typescript-and-formik-6c342578a20e\n*/\n\nexport function Login() {\n const [loading, setLoading] = useState(false)\n const dispatch = useDispatch()\n const formik = useFormik({\n initialValues,\n validationSchema: loginSchema,\n onSubmit: (values, {setStatus, setSubmitting}) => {\n setLoading(true)\n setTimeout(() => {\n login(values.email, values.password)\n .then(({data: {api_token}}) => {\n setLoading(false)\n dispatch(auth.actions.login(api_token))\n })\n .catch(() => {\n setLoading(false)\n setSubmitting(false)\n setStatus('The login detail is incorrect')\n })\n }, 1000)\n },\n })\n\n return (\n \n {/* begin::Heading */}\n
\n

Sign In to Metronic

\n
\n New Here?{' '}\n \n Create an Account\n \n
\n
\n {/* begin::Heading */}\n\n {formik.status ? (\n
\n
{formik.status}
\n
\n ) : (\n
\n
\n Use account admin@demo.com and password demo to\n continue.\n
\n
\n )}\n\n {/* begin::Form group */}\n
\n \n \n {formik.touched.email && formik.errors.email && (\n
\n {formik.errors.email}\n
\n )}\n
\n {/* end::Form group */}\n\n {/* begin::Form group */}\n
\n
\n
\n {/* begin::Label */}\n \n {/* end::Label */}\n {/* begin::Link */}\n \n Forgot Password ?\n \n {/* end::Link */}\n
\n
\n \n {formik.touched.password && formik.errors.password && (\n
\n
\n {formik.errors.password}\n
\n
\n )}\n
\n {/* end::Form group */}\n\n {/* begin::Action */}\n
\n \n {!loading && Continue}\n {loading && (\n \n Please wait...\n \n \n )}\n \n\n {/* begin::Separator */}\n
or
\n {/* end::Separator */}\n\n {/* begin::Google link */}\n \n {/* */}\n Continue with Google\n \n {/* end::Google link */}\n\n {/* begin::Google link */}\n \n \n Continue with Facebook\n \n {/* end::Google link */}\n\n {/* begin::Google link */}\n \n \n Continue with Apple\n \n {/* end::Google link */}\n
\n {/* end::Action */}\n \n )\n}\n","import {ILayout} from './LayoutModels'\n\nexport const DefaultLayoutConfig: ILayout = {\n main: {\n type: 'default',\n primaryColor: '#009EF7',\n darkSkinEnabled: true,\n },\n loader: {\n display: true,\n type: 'default', // Set default|spinner-message|spinner-logo to hide or show page loader\n },\n scrolltop: {\n display: true,\n },\n header: {\n display: true, // Set true|false to show or hide Header\n width: 'fluid', // Set fixed|fluid to change width type\n left: 'menu',\n fixed: {\n desktop: true, // Set true|false to set fixed Header for desktop mode\n tabletAndMobile: true, // Set true|false to set fixed Header for tablet and mobile modes\n },\n menuIcon: 'svg',\n },\n megaMenu: {\n display: true, // Set true|false to show or hide Mega Menu\n },\n aside: {\n display: true,\n theme: 'dark',\n menu: 'main',\n fixed: true,\n minimized: false,\n minimize: true,\n hoverable: true,\n menuIcon: 'svg',\n },\n content: {\n width: 'fixed', // Set fixed|fluid to change width\n layout: 'default',\n },\n toolbar: {\n display: true, // Display toolbar\n width: 'fluid', // Set fixed|fluid to change width type,\n fixed: {\n desktop: true,\n tabletAndMobileMode: true,\n },\n layout: 'toolbar1',\n layouts: {\n toolbar1: {\n height: '55px',\n heightAndTabletMobileMode: '55px',\n },\n toolbar2: {\n height: '75px',\n heightAndTabletMobileMode: '65px',\n },\n toolbar3: {\n height: '55px',\n heightAndTabletMobileMode: '55px',\n },\n toolbar4: {\n height: '65px',\n heightAndTabletMobileMode: '65px',\n },\n toolbar5: {\n height: '75px',\n heightAndTabletMobileMode: '65px',\n },\n },\n },\n footer: {\n width: 'fluid', // Set fixed|fluid to change width type\n },\n pageTitle: {\n display: true,\n breadCrumbs: true,\n description: false,\n layout: 'default',\n direction: 'row',\n responsive: true,\n responsiveBreakpoint: 'lg',\n responsiveTarget: '#kt_toolbar_container',\n },\n}\n","import {\n IAside,\n IContent,\n IFooter,\n IHeader,\n IToolbar,\n ILayout,\n ILayoutCSSClasses,\n ILayoutHTMLAttributes,\n ILayoutCSSVariables,\n IPageTitle,\n} from './LayoutModels'\nimport {DefaultLayoutConfig} from './DefaultLayoutConfig'\n\nconst LAYOUT_CONFIG_KEY = process.env.REACT_APP_BASE_LAYOUT_CONFIG_KEY || 'LayoutConfig'\n\nexport function getLayout(): ILayout {\n const ls = localStorage.getItem(LAYOUT_CONFIG_KEY)\n if (ls) {\n try {\n return JSON.parse(ls) as ILayout\n } catch (er) {\n console.error(er)\n }\n }\n return DefaultLayoutConfig\n}\n\nfunction setLayout(config: ILayout): void {\n try {\n localStorage.setItem(LAYOUT_CONFIG_KEY, JSON.stringify(config))\n } catch (er) {\n console.error(er)\n }\n}\n\nexport function getEmptyCssClasses() {\n return {\n header: [],\n headerContainer: [],\n headerMobile: [],\n headerMenu: [],\n aside: [],\n asideMenu: [],\n asideToggle: [],\n toolbar: [],\n toolbarContainer: [],\n content: [],\n contentContainer: [],\n footerContainer: [],\n sidebar: [],\n pageTitle: [],\n }\n}\n\nexport function getEmptyHTMLAttributes() {\n return {\n asideMenu: new Map(),\n headerMobile: new Map(),\n headerMenu: new Map(),\n headerContainer: new Map(),\n pageTitle: new Map(),\n }\n}\n\nexport function getEmptyCSSVariables() {\n return {\n body: new Map(),\n }\n}\n\nexport class LayoutSetup {\n public static isLoaded: boolean = false\n public static config: ILayout = getLayout()\n public static classes: ILayoutCSSClasses = getEmptyCssClasses()\n public static attributes: ILayoutHTMLAttributes = getEmptyHTMLAttributes()\n public static cssVariables: ILayoutCSSVariables = getEmptyCSSVariables()\n\n private static initCSSClasses(): void {\n LayoutSetup.classes = getEmptyCssClasses()\n }\n\n private static initHTMLAttributes(): void {\n LayoutSetup.attributes = Object.assign({}, getEmptyHTMLAttributes())\n }\n\n private static initCSSVariables(): void {\n LayoutSetup.cssVariables = getEmptyCSSVariables()\n }\n\n private static initLayout(config: ILayout): void {\n Array.from(document.body.attributes).forEach((attr) => {\n document.body.removeAttribute(attr.name)\n })\n document.body.setAttribute('style', '')\n document.body.setAttribute('id', 'kt_body')\n if (config.main?.body?.backgroundImage) {\n document.body.style.backgroundImage = `url('${config.main.body.backgroundImage}')`\n }\n\n if (config.main?.body?.class) {\n document.body.classList.add(config.main.body.class)\n }\n\n // if (config.loader.display) {\n // document.body.classList.add('page-loading')\n // document.body.classList.add('page-loading-enabled')\n // }\n }\n\n private static initHeader(config: IHeader): void {\n LayoutSetup.classes.headerContainer.push(\n config.width === 'fluid' ? 'container-fluid' : 'container'\n )\n\n if (config.fixed.desktop) {\n document.body.classList.add('header-fixed')\n }\n\n if (config.fixed.tabletAndMobile) {\n document.body.classList.add('header-tablet-and-mobile-fixed')\n }\n }\n\n private static initToolbar(config: IToolbar): void {\n if (!config.display) {\n return\n }\n\n document.body.classList.add('toolbar-enabled')\n LayoutSetup.classes.toolbarContainer.push(\n config.width === 'fluid' ? 'container-fluid' : 'container'\n )\n\n if (config.fixed.desktop) {\n document.body.classList.add('toolbar-fixed')\n }\n\n if (config.fixed.tabletAndMobileMode) {\n document.body.classList.add('toolbar-tablet-and-mobile-fixed')\n }\n\n // Height setup\n const type = config.layout\n const typeOptions = config.layouts[type]\n if (typeOptions) {\n let bodyStyles: string = ''\n if (typeOptions.height) {\n bodyStyles += ` --kt-toolbar-height: ${typeOptions.height};`\n }\n\n if (typeOptions.heightAndTabletMobileMode) {\n bodyStyles += ` --kt-toolbar-height-tablet-and-mobile: ${typeOptions.heightAndTabletMobileMode};`\n }\n document.body.setAttribute('style', bodyStyles)\n }\n }\n\n private static initPageTitle(config: IPageTitle): void {\n if (!config.display) {\n return\n }\n\n if (config.direction === 'column') {\n this.classes.pageTitle.push('flex-column')\n this.classes.pageTitle.push('align-items-start')\n } else {\n this.classes.pageTitle.push('align-items-center')\n this.classes.pageTitle.push('flex-wrap')\n }\n this.classes.pageTitle.push('me-3')\n\n if (config.responsive) {\n this.classes.pageTitle.push('mb-5')\n this.classes.pageTitle.push('mb-lg-0')\n\n LayoutSetup.attributes.pageTitle.set('data-kt-swapper', true)\n LayoutSetup.attributes.pageTitle.set('data-kt-swapper-mode', 'prepend')\n LayoutSetup.attributes.pageTitle.set(\n 'data-kt-swapper-parent',\n `{ default: '#kt_content_container', '${config.responsiveBreakpoint}': '${config.responsiveTarget}'}`\n )\n }\n }\n\n private static initContent(config: IContent): void {\n LayoutSetup.classes.contentContainer.push(\n config.width === 'fluid' ? 'container-fluid' : 'container'\n )\n // if (Theme::getOption('layout', 'content/container-class')) {\n // \tTheme::addHtmlClass('content-container', Theme::getOption('layout', 'content/container-class'));\n // }\n }\n\n private static initAside(config: IAside): void {\n // Check if aside is displayed\n if (!config.display) {\n return\n }\n\n // Enable Aside\n document.body.classList.add('aside-enabled')\n LayoutSetup.classes.aside.push(`aside-${config.theme}`)\n\n // Fixed Aside\n if (config.fixed) {\n document.body.classList.add('aside-fixed')\n }\n\n // Default minimized\n if (config.minimized) {\n document.body.setAttribute('data-kt-aside-minimize', 'on')\n }\n\n // Hoverable on minimize\n if (config.hoverable) {\n LayoutSetup.classes.aside.push('aside-hoverable')\n }\n }\n\n private static initAsideMenu(config: IAside): void {\n // if (Theme::getOption('layout', 'aside/menu') === 'documentation') {\n // \tself::$menu = new Menu( Theme::getOption('menu', 'documentation'), Theme::getPagePath() );\n // } else {\n // \tself::$menu = new Menu( Theme::getOption('menu', 'main'), Theme::getPagePath() );\n // }\n // if (Theme::getOption('layout', 'aside/menu-icons-display') === false) {\n // \tself::$menu->displayIcons(false);\n // }\n // self::$menu->setIconType(Theme::getOption('layout', 'aside/menu-icon'));\n }\n\n // private static initSidebar(sidebarConfig: ISidebarConfig): void {\n // // / Set Sidebar enabled class\n // if (sidebarConfig.display) {\n // document.body.classList.add('sidebar-enabled')\n // } else {\n // return\n // }\n\n // // Set Sidebar shown status\n // if (sidebarConfig.shown) {\n // document.body.setAttribute('data-sidebar', 'on')\n // }\n\n // // Set Sidebar background color class\n // ThemeSetup.classes.sidebar.push(sidebarConfig.bgColor)\n // }\n\n private static initFooter(config: IFooter): void {\n LayoutSetup.classes.footerContainer.push(`container${config.width === 'fluid' ? '-fluid' : ''}`)\n }\n\n private static initConfig(config: ILayout): void {\n if (config.main?.darkSkinEnabled) {\n document.body.classList.add('dark-skin')\n }\n\n // Init layout\n LayoutSetup.initLayout(config)\n if (config.main?.type !== 'default') {\n return\n }\n\n LayoutSetup.initHeader(config.header)\n LayoutSetup.initPageTitle(config.pageTitle as IPageTitle)\n LayoutSetup.initToolbar(config.toolbar)\n LayoutSetup.initContent(config.content)\n LayoutSetup.initAside(config.aside)\n LayoutSetup.initFooter(config.footer)\n LayoutSetup.initAsideMenu(config.aside)\n }\n\n public static updatePartialConfig(fieldsToUpdate: Partial): ILayout {\n const config = LayoutSetup.config\n const updatedConfig = {...config, ...fieldsToUpdate}\n LayoutSetup.initCSSClasses()\n LayoutSetup.initCSSVariables()\n LayoutSetup.initHTMLAttributes()\n LayoutSetup.isLoaded = false\n LayoutSetup.config = updatedConfig\n LayoutSetup.initConfig(Object.assign({}, updatedConfig))\n LayoutSetup.isLoaded = true // remove loading there\n return updatedConfig\n }\n\n public static setConfig(config: ILayout): void {\n setLayout(config)\n }\n\n public static bootstrap = (() => {\n LayoutSetup.updatePartialConfig(LayoutSetup.config)\n })()\n}\n","import React, {createContext, useContext, useState, useEffect} from 'react'\nimport {DefaultLayoutConfig} from './DefaultLayoutConfig'\nimport {\n getEmptyCssClasses,\n getEmptyCSSVariables,\n getEmptyHTMLAttributes,\n LayoutSetup,\n} from './LayoutSetup'\nimport {\n ILayout,\n ILayoutCSSVariables,\n ILayoutCSSClasses,\n ILayoutHTMLAttributes,\n} from './LayoutModels'\n\nexport interface LayoutContextModel {\n config: ILayout\n classes: ILayoutCSSClasses\n attributes: ILayoutHTMLAttributes\n cssVariables: ILayoutCSSVariables\n setLayout: (config: LayoutSetup) => void\n}\n\nconst LayoutContext = createContext({\n config: DefaultLayoutConfig,\n classes: getEmptyCssClasses(),\n attributes: getEmptyHTMLAttributes(),\n cssVariables: getEmptyCSSVariables(),\n setLayout: (config: LayoutSetup) => {},\n})\n\nconst enableSplashScreen = () => {\n const splashScreen = document.getElementById('splash-screen')\n if (splashScreen) {\n splashScreen.style.setProperty('display', 'flex')\n }\n}\n\nconst disableSplashScreen = () => {\n const splashScreen = document.getElementById('splash-screen')\n if (splashScreen) {\n splashScreen.style.setProperty('display', 'none')\n }\n}\n\nconst LayoutProvider: React.FC = ({children}) => {\n const [config, setConfig] = useState(LayoutSetup.config)\n const [classes, setClasses] = useState(LayoutSetup.classes)\n const [attributes, setAttributes] = useState(LayoutSetup.attributes)\n const [cssVariables, setCSSVariables] = useState(LayoutSetup.cssVariables)\n const setLayout = (_themeConfig: Partial) => {\n enableSplashScreen()\n const bodyClasses = Array.from(document.body.classList)\n bodyClasses.forEach((cl) => document.body.classList.remove(cl))\n LayoutSetup.updatePartialConfig(_themeConfig)\n setConfig(Object.assign({}, LayoutSetup.config))\n setClasses(LayoutSetup.classes)\n setAttributes(LayoutSetup.attributes)\n setCSSVariables(LayoutSetup.cssVariables)\n setTimeout(() => {\n disableSplashScreen()\n }, 500)\n }\n const value: LayoutContextModel = {\n config,\n classes,\n attributes,\n cssVariables,\n setLayout,\n }\n\n useEffect(() => {\n disableSplashScreen()\n }, [])\n\n return {children}\n}\n\nexport {LayoutContext, LayoutProvider}\n\nexport function useLayout() {\n return useContext(LayoutContext)\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, {FC, createContext, useContext, useEffect, useState} from 'react'\n\nexport interface PageLink {\n title: string\n path: string\n isActive: boolean\n isSeparator?: boolean\n}\n\nexport interface PageDataContextModel {\n pageTitle?: string\n setPageTitle: (_title: string) => void\n pageDescription?: string\n setPageDescription: (_description: string) => void\n pageBreadcrumbs?: Array\n setPageBreadcrumbs: (_breadcrumbs: Array) => void\n}\n\nconst PageDataContext = createContext({\n setPageTitle: (_title: string) => {},\n setPageBreadcrumbs: (_breadcrumbs: Array) => {},\n setPageDescription: (_description: string) => {},\n})\n\nconst PageDataProvider: React.FC = ({children}) => {\n const [pageTitle, setPageTitle] = useState('')\n const [pageDescription, setPageDescription] = useState('')\n const [pageBreadcrumbs, setPageBreadcrumbs] = useState>([])\n const value: PageDataContextModel = {\n pageTitle,\n setPageTitle,\n pageDescription,\n setPageDescription,\n pageBreadcrumbs,\n setPageBreadcrumbs,\n }\n return {children}\n}\n\nfunction usePageData() {\n return useContext(PageDataContext)\n}\n\ntype Props = {\n description?: string\n breadcrumbs?: Array\n}\n\nconst PageTitle: FC = ({children, description, breadcrumbs}) => {\n const {setPageTitle, setPageDescription, setPageBreadcrumbs} = usePageData()\n useEffect(() => {\n if (children) {\n setPageTitle(children.toString())\n }\n return () => {\n setPageTitle('')\n }\n }, [children])\n\n useEffect(() => {\n if (description) {\n setPageDescription(description)\n }\n return () => {\n setPageDescription('')\n }\n }, [description])\n\n useEffect(() => {\n if (breadcrumbs) {\n setPageBreadcrumbs(breadcrumbs)\n }\n return () => {\n setPageBreadcrumbs([])\n }\n }, [breadcrumbs])\n\n return <>\n}\n\nconst PageDescription: React.FC = ({children}) => {\n const {setPageDescription} = usePageData()\n useEffect(() => {\n if (children) {\n setPageDescription(children.toString())\n }\n return () => {\n setPageDescription('')\n }\n }, [children])\n return <>\n}\n\nexport {PageDescription, PageTitle, PageDataProvider, usePageData}\n","import React, {\n FC,\n createContext,\n useContext,\n useState,\n useEffect,\n SetStateAction,\n Dispatch,\n} from 'react'\n\nconst MetronicSplashScreenContext = createContext> | undefined>(\n undefined\n)\n\nconst MetronicSplashScreenProvider: FC = ({children}) => {\n const [count, setCount] = useState(0)\n let visible = count > 0\n\n useEffect(() => {\n const splashScreen = document.getElementById('splash-screen')\n\n // Show SplashScreen\n if (splashScreen && visible) {\n splashScreen.classList.remove('hidden')\n\n return () => {\n splashScreen.classList.add('hidden')\n }\n }\n\n // Hide SplashScreen\n let timeout: number\n if (splashScreen && !visible) {\n timeout = window.setTimeout(() => {\n splashScreen.classList.add('hidden')\n }, 3000)\n }\n\n return () => {\n clearTimeout(timeout)\n }\n }, [visible])\n\n return (\n \n {children}\n \n )\n}\n\nconst LayoutSplashScreen: FC<{visible?: boolean}> = ({visible = true}) => {\n // Everything are ready - remove splashscreen\n const setCount = useContext(MetronicSplashScreenContext)\n\n useEffect(() => {\n if (!visible) {\n return\n }\n\n if (setCount) {\n setCount((prev) => {\n return prev + 1\n })\n }\n\n return () => {\n if (setCount) {\n setCount((prev) => {\n return prev - 1\n })\n }\n }\n }, [setCount, visible])\n\n return null\n}\n\nexport {MetronicSplashScreenProvider, LayoutSplashScreen}\n","import {FC, useRef, useEffect, useState} from 'react'\nimport {shallowEqual, useSelector, connect, useDispatch, ConnectedProps} from 'react-redux'\nimport {LayoutSplashScreen} from '../../../../_metronic/layout/core'\nimport * as auth from './AuthRedux'\nimport {getUserByToken} from './AuthCRUD'\nimport {RootState} from '../../../../setup'\n\nconst mapState = (state: RootState) => ({auth: state.auth})\nconst connector = connect(mapState, auth.actions)\ntype PropsFromRedux = ConnectedProps\n\nconst AuthInit: FC = (props) => {\n const didRequest = useRef(false)\n const dispatch = useDispatch()\n const [showSplashScreen, setShowSplashScreen] = useState(true)\n const accessToken = useSelector(({auth}) => auth.accessToken, shallowEqual)\n\n // We should request user by authToken before rendering the application\n useEffect(() => {\n const requestUser = async () => {\n try {\n if (!didRequest.current) {\n const {data: user} = await getUserByToken(accessToken as string)\n dispatch(props.fulfillUser(user))\n }\n } catch (error) {\n console.error(error)\n if (!didRequest.current) {\n dispatch(props.logout())\n }\n } finally {\n setShowSplashScreen(false)\n }\n\n return () => (didRequest.current = true)\n }\n\n if (accessToken) {\n requestUser()\n } else {\n dispatch(props.logout())\n setShowSplashScreen(false)\n }\n // eslint-disable-next-line\n }, [])\n\n return showSplashScreen ? : <>{props.children}\n}\n\nexport default connector(AuthInit)\n","import {all} from 'redux-saga/effects'\nimport {combineReducers} from 'redux'\n\nimport * as auth from '../../app/modules/auth'\n\nexport const rootReducer = combineReducers({\n auth: auth.reducer,\n})\n\nexport type RootState = ReturnType\n\nexport function* rootSaga() {\n yield all([auth.saga()])\n}\n","import {configureStore, getDefaultMiddleware} from '@reduxjs/toolkit'\nimport createSagaMiddleware from 'redux-saga'\nimport {reduxBatch} from '@manaflair/redux-batch'\nimport {persistStore} from 'redux-persist'\nimport {rootReducer, rootSaga} from './RootReducer'\n\nconst sagaMiddleware = createSagaMiddleware()\nconst middleware = [\n ...getDefaultMiddleware({\n immutableCheck: false,\n serializableCheck: false,\n thunk: true,\n }),\n sagaMiddleware,\n]\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware,\n devTools: process.env.NODE_ENV !== 'production',\n enhancers: [reduxBatch],\n})\n\nexport type AppDispatch = typeof store.dispatch\n\n/**\n * @see https://github.com/rt2zz/redux-persist#persiststorestore-config-callback\n * @see https://github.com/rt2zz/redux-persist#persistor-object\n */\nexport const persistor = persistStore(store)\n\nsagaMiddleware.run(rootSaga)\n\nexport default store\n","import React, {FC, createContext, useContext} from 'react'\n\nconst I18N_CONFIG_KEY = process.env.REACT_APP_I18N_CONFIG_KEY || 'i18nConfig'\n\ntype Props = {\n selectedLang: 'de' | 'en' | 'es' | 'fr' | 'ja' | 'zh'\n}\nconst initialState: Props = {\n selectedLang: 'en',\n}\n\nfunction getConfig(): Props {\n const ls = localStorage.getItem(I18N_CONFIG_KEY)\n if (ls) {\n try {\n return JSON.parse(ls) as Props\n } catch (er) {\n console.error(er)\n }\n }\n return initialState\n}\n\n// Side effect\nexport function setLanguage(lang: string) {\n localStorage.setItem(I18N_CONFIG_KEY, JSON.stringify({selectedLang: lang}))\n window.location.reload()\n}\n\nconst I18nContext = createContext(initialState)\n\nconst useLang = () => {\n return useContext(I18nContext).selectedLang\n}\n\nconst MetronicI18nProvider: FC = ({children}) => {\n const lang = getConfig()\n return {children}\n}\n\nexport {MetronicI18nProvider, useLang}\n","/* eslint-disable react/jsx-no-target-blank */\n/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, {FC} from 'react'\n// import {Link} from 'react-router-dom'\n// import clsx from 'clsx'\n// import {useLayout} from '../../core'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n// import {AsideMenu} from './AsideMenu'\n\nconst AsideDefault: FC = () => {\n // const {config} = useLayout()\n // const {aside} = config\n\n return (\n <>\n // \n // {/* begin::Brand */}\n // \n // )}\n // {/* end::Aside toggler */}\n // \n // {/* end::Brand */}\n\n // {/* begin::Aside menu */}\n //
\n // \n //
\n // {/* end::Aside menu */}\n\n // {/* begin::Footer */}\n // \n // {/* end::Footer */}\n // \n )\n}\n\nexport {AsideDefault}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport { FC } from 'react'\n// import { useLayout } from '../core'\nimport { Link } from 'react-router-dom'\n\nconst Footer: FC = () => {\n // const { classes } = useLayout()\n\n const dFlex = {\n backgroundColor: \"#FF672B\",\n display: \"flex\"\n }\n\n const dNone = {\n backgroundColor: \"#FF672B\",\n display: \"none\"\n }\n\n if (window.location.pathname === \"/kkdik\") {\n var style;\n style = dNone\n } else {\n style = dFlex\n }\n\n return (\n \n {/* end::Container */}\n \n )\n}\n\nexport { Footer }\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n// import { useLocation } from 'react-router'\nimport clsx from 'clsx'\nimport { KTSVG } from '../../../helpers'\n\ntype Props = {\n to: string\n title: string\n icon?: string\n fontIcon?: string\n hasArrow?: boolean\n hasBullet?: boolean\n}\n\nconst MenuItem: React.FC = ({\n to,\n title,\n icon,\n fontIcon,\n hasArrow = false,\n hasBullet = false,\n}) => {\n // const { pathname } = useLocation();\n\n return (\n
\n \n {hasBullet && (\n \n \n \n )}\n\n {icon && (\n \n \n \n )}\n\n {fontIcon && (\n \n \n \n )}\n\n {title}\n\n {hasArrow && }\n \n
\n )\n}\n\nexport { MenuItem }\n","import React, { useRef, useEffect } from 'react'\nimport { useLocation } from 'react-router'\nimport clsx from 'clsx'\nimport { checkIsActive, KTSVG } from '../../../helpers'\n\ntype Props = {\n to: string\n title: string\n icon?: string\n fontIcon?: string\n menuTrigger?: 'click' | `{default:'click', lg: 'hover'}`\n menuPlacement?: 'right-start' | 'bottom-start'\n hasArrow?: boolean\n hasBullet?: boolean\n isMega?: boolean\n}\n\nconst MenuInnerWithSub: React.FC = ({\n children,\n to,\n title,\n icon,\n fontIcon,\n menuTrigger,\n menuPlacement,\n hasArrow = false,\n hasBullet = false,\n isMega = false,\n}) => {\n const menuItemRef = useRef(null)\n const { pathname } = useLocation()\n\n useEffect(() => {\n if (menuItemRef.current && menuTrigger && menuPlacement) {\n menuItemRef.current.setAttribute('data-kt-menu-trigger', menuTrigger)\n menuItemRef.current.setAttribute('data-kt-menu-placement', menuPlacement)\n }\n }, [menuTrigger, menuPlacement])\n\n return (\n
\n \n {hasBullet && (\n \n \n \n )}\n\n {icon && (\n \n \n \n )}\n\n {fontIcon && (\n \n \n \n )}\n\n {title}\n\n {hasArrow && }\n \n \n {children}\n
\n \n )\n}\n\nexport { MenuInnerWithSub }\n","import React from 'react'\nimport { MenuItem } from './MenuItem'\nimport { MenuInnerWithSub } from './MenuInnerWithSub'\n// import { MegaMenu } from './MegaMenu'\n// import { useIntl } from 'react-intl'\n\nexport function MenuInner() {\n // const intl = useIntl()\n return (\n <>\n \n \n {/* */}\n {/* */}\n\n \n \n\n \n\n \n\n \n\n \n\n \n \n\n \n\n \n\n \n\n \n\n \n\n \n\n {/* */}\n {/* PAGES */}\n {/* */}\n {/* \n \n \n \n \n \n */}\n {/* \n \n \n */}\n {/* */}\n\n {/* ACCOUNT */}\n {/* \n \n \n */}\n\n {/* ERRORS */}\n {/* \n \n \n */}\n\n {/* Widgets */}\n {/* \n \n \n \n \n \n \n */}\n {/* */}\n\n {/* */}\n {/* PAGES */}\n {/* \n \n \n \n */}\n {/* */}\n {/* \n \n */}\n \n )\n}\n","import React, { FC } from 'react'\nimport { MenuInner } from './MenuInner'\n\nconst Header: FC = () => {\n return (\n \n \n \n \n \n )\n}\n\nexport { Header }\n","import clsx from 'clsx'\nimport React, {FC} from 'react'\nimport {Link} from 'react-router-dom'\nimport {useLayout} from '../../../core/LayoutProvider'\nimport {usePageData} from '../../../core/PageData'\n\nconst DefaultTitle: FC = () => {\n const {pageTitle, pageDescription, pageBreadcrumbs} = usePageData()\n const {config, classes} = useLayout()\n return (\n \n {/* begin::Title */}\n {pageTitle && (\n

\n {pageTitle}\n {pageDescription && config.pageTitle && config.pageTitle.description && (\n <>\n \n {pageDescription}\n \n )}\n

\n )}\n {/* end::Title */}\n\n {pageBreadcrumbs &&\n pageBreadcrumbs.length > 0 &&\n config.pageTitle &&\n config.pageTitle.breadCrumbs && (\n <>\n {config.pageTitle.direction === 'row' && (\n \n )}\n
    \n {Array.from(pageBreadcrumbs).map((item, index) => (\n \n {!item.isSeparator ? (\n \n {item.title}\n \n ) : (\n \n )}\n \n ))}\n
  • {pageTitle}
  • \n
\n \n )}\n \n )\n}\n\nexport {DefaultTitle}\n","// import clsx from 'clsx'\nimport React, { FC } from 'react'\nimport { KTSVG } from '../../../helpers'\n// import { HeaderNotificationsMenu, QuickLinks } from '../../../partials'\nimport { useLayout } from '../../core'\n\n// const toolbarButtonMarginClass = 'ms-1 ms-lg-3',\n// toolbarButtonHeightClass = 'w-30px h-30px w-md-40px h-md-40px',\n// // toolbarUserAvatarHeightClass = 'symbol-30px symbol-md-40px',\n// toolbarButtonIconSizeClass = 'svg-icon-1'\n\nconst Topbar: FC = () => {\n const { config } = useLayout()\n\n return (\n
\n {/* Search */}\n {/*
\n \n
*/}\n {/* Activities */}\n {/*
*/}\n {/* begin::Drawer toggle */}\n {/* \n \n
*/}\n {/* end::Drawer toggle */}\n {/*
*/}\n\n {/* NOTIFICATIONS */}\n {/*
*/}\n {/* begin::Menu- wrapper */}\n {/* */}\n {/* */}\n {/*
\n */}\n {/* end::Menu wrapper */}\n {/* */}\n\n {/* CHAT */}\n {/*
*/}\n {/* begin::Menu wrapper */}\n {/* \n \n\n \n
*/}\n {/* end::Menu wrapper */}\n {/* */}\n\n {/* Quick links */}\n {/*
*/}\n {/* begin::Menu wrapper */}\n {/* */}\n {/* */}\n {/*
*/}\n {/* */}\n {/* end::Menu wrapper */}\n {/* */}\n\n {/* begin::User */}\n {/* */}\n {/* begin::Toggle */}\n {/* */}\n {/* metronic */}\n {/* */}\n {/* */}\n {/* end::Toggle */}\n {/* */}\n {/* end::User */}\n\n {/* begin::Aside Toggler */}\n {config.header.left === 'menu' && (\n
\n \n \n
\n \n )}\n \n )\n}\n\nexport { Topbar }\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport clsx from 'clsx'\nimport React from 'react'\nimport { Link } from 'react-router-dom'\nimport { useLayout } from '../../core'\nimport { Header } from './Header'\nimport { DefaultTitle } from './page-title/DefaultTitle'\nimport { Topbar } from './Topbar'\nimport kkdiklogo2 from '../../../../app/pages/media/kkdik-logo2.png'\n\nexport function HeaderWrapper() {\n const { config, classes, attributes } = useLayout()\n const { header, aside } = config\n\n return (\n \n \n {/* begin::Aside mobile toggle */}\n {/* {aside.display && (\n
\n \n \n
\n \n )} */}\n {/* end::Aside mobile toggle */}\n {/* begin::Logo */}\n {/* {!aside.display && (\n
\n \n Logo\n \n
\n )} */}\n {/* end::Logo */}\n\n {aside.display && (\n
\n \n Logo\n \n
\n )}\n\n {/* begin::Wrapper */}\n
\n {/* begin::Navbar */}\n {header.left === 'menu' && (\n
\n
\n
\n )}\n\n {header.left === 'page-title' && (\n
\n \n
\n )}\n\n
\n \n
\n
\n {/* end::Wrapper */}\n \n \n )\n}\n","export default \"data:image/png;base64,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\"","/* eslint-disable jsx-a11y/anchor-is-valid */\n// import clsx from 'clsx'\nimport React, {FC} from 'react'\n// import {KTSVG} from '../../../helpers'\n// import {useLayout} from '../../core'\n// import {DefaultTitle} from '../header/page-title/DefaultTitle'\n\nconst Toolbar1: FC = () => {\n // const {classes} = useLayout()\n\n return (\n <>\n //
\n // {/* begin::Container */}\n // \n // \n\n // {/* begin::Actions */}\n //
\n // {/* begin::Wrapper */}\n //
\n // {/* begin::Menu */}\n // \n // \n // Filter\n // \n\n // {/* end::Menu */}\n //
\n // {/* end::Wrapper */}\n\n // {/* begin::Button */}\n\n // \n // Create\n // \n // {/* end::Button */}\n //
\n // {/* end::Actions */}\n //
\n // {/* end::Container */}\n // \n )\n}\n\nexport {Toolbar1}\n","import React from 'react'\nimport {useLayout} from '../../core/LayoutProvider'\nimport {Toolbar1} from './Toolbar1'\n\nconst Toolbar = () => {\n const {config} = useLayout()\n\n switch (config.toolbar.layout) {\n case 'toolbar1':\n return \n\n default:\n return \n }\n}\n\nexport {Toolbar}\n","import React, { FC } from 'react'\n\nconst DemosToggleDrawer: FC = () => {\n\n const dFlex = {\n backgroundColor: \"#FF672B\",\n display: \"flex\"\n }\n\n const dNone = {\n backgroundColor: \"#FF672B\",\n display: \"none\"\n }\n\n if (window.location.pathname === \"/kkdik\") {\n var style;\n style = dNone\n } else {\n style = dFlex\n }\n return (\n \n\n \n Contact Us\n \n \n )\n}\n\nexport { DemosToggleDrawer }\n","import { FC } from \"react\";\nimport { DemosToggleDrawer } from \"./demos-drawer/DemosToggleDrawer\";\n// import {ToggleHelpDrawer} from \"./help-drawer/ToggleHelpDrawer\";\n// import {DemosDrawer} from \"./demos-drawer/DemosDrawer\";\n// import {HelpDrawer} from \"./help-drawer/HelpDrawer\";\n// import {PurchaseButton} from \"./purchase/PurchaseButton\";\n\nconst RightToolbar: FC = () => {\n return <>\n \n\n \n {/* */}\n {/* */}\n \n\n {/* */}\n {/* */}\n \n}\n\nexport { RightToolbar }","import React, { useEffect, useRef } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport {\n ScrollTopComponent,\n DrawerComponent,\n ToggleComponent,\n StickyComponent,\n} from '../../assets/ts/components'\nimport { KTSVG } from '../../helpers'\n\nexport function ScrollTop() {\n const { pathname } = useLocation()\n const isFirstRun = useRef(true)\n\n const pluginsReinitialization = () => {\n setTimeout(() => {\n StickyComponent.reInitialization()\n setTimeout(() => {\n ToggleComponent.reinitialization()\n DrawerComponent.reinitialization()\n }, 70)\n }, 140)\n }\n\n const scrollTop = () => {\n ScrollTopComponent.goTop()\n }\n\n const updateHeaderSticky = () => {\n const stickyHeader = document.body.querySelectorAll(`[data-kt-sticky-name=\"header\"]`)\n if (stickyHeader && stickyHeader.length > 0) {\n const sticky = StickyComponent.getInstance(stickyHeader[0] as HTMLElement)\n if (sticky) {\n sticky.update()\n }\n }\n }\n\n useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false\n } else {\n pluginsReinitialization()\n }\n\n updateHeaderSticky()\n setTimeout(() => {\n scrollTop()\n }, 0)\n }, [pathname])\n\n return (\n
\n \n
\n )\n}\n","import React, { useEffect } from 'react'\nimport { useLocation } from 'react-router'\n// import clsx from 'clsx'\n// import { useLayout } from '../core'\nimport { DrawerComponent } from '../../assets/ts/components'\n\nconst Content: React.FC = ({ children }) => {\n // const { classes } = useLayout()\n const location = useLocation()\n useEffect(() => {\n DrawerComponent.hideAll()\n }, [location])\n\n return (\n
\n {children}\n
\n )\n}\n\nexport { Content }\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport clsx from 'clsx'\nimport {FC} from 'react'\nimport {toAbsoluteUrl} from '../../../helpers'\nimport {useLang, setLanguage} from '../../../i18n/Metronici18n'\n\nconst languages = [\n {\n lang: 'en',\n name: 'English',\n flag: toAbsoluteUrl('/media/flags/united-states.svg'),\n },\n {\n lang: 'zh',\n name: 'Mandarin',\n flag: toAbsoluteUrl('/media/flags/china.svg'),\n },\n {\n lang: 'es',\n name: 'Spanish',\n flag: toAbsoluteUrl('/media/flags/spain.svg'),\n },\n {\n lang: 'ja',\n name: 'Japanese',\n flag: toAbsoluteUrl('/media/flags/japan.svg'),\n },\n {\n lang: 'de',\n name: 'German',\n flag: toAbsoluteUrl('/media/flags/germany.svg'),\n },\n {\n lang: 'fr',\n name: 'French',\n flag: toAbsoluteUrl('/media/flags/france.svg'),\n },\n]\n\nconst Languages: FC = () => {\n const lang = useLang()\n const currentLanguage = languages.find((x) => x.lang === lang)\n return (\n \n \n \n Language\n \n {currentLanguage?.name}{' '}\n \n \n \n \n\n
\n {languages.map((l) => (\n {\n setLanguage(l.lang)\n }}\n >\n \n \n metronic\n \n {l.name}\n \n
\n ))}\n \n \n )\n}\n\nexport {Languages}\n","import React from \"react\";\nimport { useRef } from \"react\";\nimport { Formik, Field, Form, FormikHelpers } from 'formik';\nimport axios from \"axios\"\n// import { KTSVG } from '../../_metronic/helpers'\nimport * as Yup from 'yup';\nimport Swal from 'sweetalert2'\n\nconst SignupSchema = Yup.object().shape({\n Name: Yup.string()\n .min(2, 'Too Short!')\n .max(50, 'Too Long!')\n .required('Required!'),\n Email: Yup.string().email('Invalid email').required('Required!').max(50, 'Too Long!'),\n Subject: Yup.string()\n .min(2, 'Too Short!')\n .max(200, 'Too Long!')\n .required('Required!'),\n Message: Yup.string()\n .min(5, 'Too Short!')\n .max(1500, 'Too Long!')\n .required('Required!'),\n});\n\nexport function ContactForm() {\n\n interface Values {\n Name: string;\n Email: string;\n Subject: string;\n Message: string;\n }\n const btnRef = useRef(null);\n const onClick = () => {\n };\n\n function postData(values: any, resetForm: any) {\n axios.post('/Mail/MailPost', values)\n .then(response => {\n var res = JSON.parse(response.data);\n btnRef.current?.removeAttribute(\"data-kt-indicator\");\n if (res.StatusCode === 1) {\n resetForm();\n Swal.fire({\n heightAuto: false,\n title: 'Success!',\n text: res.StatusText,\n icon: 'success',\n confirmButtonText: 'OK',\n confirmButtonColor: 'green'\n })\n } else {\n Swal.fire({\n heightAuto: false,\n title: 'Error!',\n text: res.StatusText,\n icon: 'error',\n confirmButtonText: 'OK',\n confirmButtonColor: 'red'\n })\n }\n });\n }\n\n return (\n ,\n\n ) => {\n\n btnRef.current?.setAttribute('data-kt-indicator', 'on');\n postData(values, resetForm);\n setSubmitting(false);\n }}\n\n on\n\n >\n\n {({ errors, touched }) => (\n
\n\n
\n \n {errors.Name && touched.Name ? (\n
{errors.Name}
\n ) : null}\n \n\n
\n\n
\n \n {errors.Email && touched.Email ?
{errors.Email}
: null}\n console.log(\"working!\")}\n className=\"form-control mb-4\"\n />\n\n
\n \n {errors.Subject && touched.Subject ? (\n
{errors.Subject}
\n ) : null}\n \n\n
\n
\n\n
\n \n {errors.Message && touched.Message ? (\n
{errors.Message}
\n ) : null}\n \n\n
\n\n \n\n
\n )}\n\n \n );\n}","import React from \"react\";\n\ntype Props = {\n head: string\n title: string\n body: string\n footer: string\n}\n\nconst AdressCard: React.FC = ({\n head,\n title,\n body,\n footer\n}) => {\n return (\n
\n
\n
\n \n
\n
\n

\n {head}\n

\n
\n
\n
\n
\n
\n

\n {title}\n

\n
\n
{body}
\n \n {footer}\n \n
\n
\n
\n );\n}\nexport { AdressCard }","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport { FC } from 'react'\n// import clsx from 'clsx'\n// import {\n// toAbsoluteUrl,\n// defaultMessages,\n// defaultUserInfos,\n// MessageModel,\n// UserInfoModel,\n// messageFromClient,\n// } from '../../helpers'\n// import { Formik, Field, Form, FormikHelpers } from 'formik';\n// import axios from \"axios\"\n// import { Contact } from \"../../../app/pages/Contact\"\nimport { ContactForm } from \"../../../app/pages/components/ContactForm\"\nimport { AdressCard } from \"../../../app/pages/components/AdressCard\"\n// import { GoogleMap } from \"../../../app/pages/GoogleMap\"\n\ntype Props = {\n isDrawer?: boolean\n}\n\nconst ChatInner: FC = () => {\n\n return (\n
\n
\n
\n
\n \n
\n\n {/*
\n \n
*/}\n
\n
\n );\n}\n\nexport { ChatInner }\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { FC } from 'react'\nimport { KTSVG } from '../../../helpers'\nimport { ChatInner } from '../../chat/ChatInner'\n\nconst DrawerMessenger: FC = () => (\n \n
\n
\n
\n
\n {/* \n Contact Us!\n */}\n\n {/*
*/}\n {/* */}\n {/* Active */}\n {/*
*/}\n
\n
\n\n
\n {/*
*/}\n {/* */}\n {/* */}\n {/* */}\n {/*
*/}\n\n
\n \n
\n
\n
\n\n \n
\n \n)\n\nexport { DrawerMessenger }\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {FC} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n\nconst Item1: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n
\n There are 2 new tasks for you in “AirPlus Mobile APp” project:\n
\n\n
\n
Added at 4:23 PM by
\n\n \n {/* img */}\n
\n
\n
\n\n
\n
\n \n Meeting with customer\n \n\n
\n Application Design\n
\n\n
\n
\n {/* img */}\n
\n\n
\n {/* img */}\n
\n\n
\n
A
\n
\n
\n\n
\n In Progress\n
\n\n \n View\n \n
\n\n
\n \n Project Delivery Preparation\n \n\n
\n CRM System Development\n
\n\n
\n
\n {/* img */}\n
\n\n
\n
B
\n
\n
\n\n
\n Completed\n
\n\n \n View\n \n
\n
\n
\n \n )\n}\n\nexport {Item1}\n","import {FC} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n\nconst Item2: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n
\n Invitation for crafting engaging designs that speak human workshop\n
\n\n
\n
Sent at 4:23 PM by
\n\n \n {/* img */}\n
\n
\n
\n
\n \n )\n}\n\nexport {Item2}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {FC} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n\nconst Item3: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n \n 3 New Incoming Project Files:\n \n\n
\n
Sent at 10:30 PM by
\n\n \n {/* img */}\n
\n
\n
\n\n
\n
\n
\n {/* */}\n\n \n
\n\n
\n {/* */}\n\n \n
\n\n
\n {/* */}\n\n
\n \n Finance Reports\n \n\n
20mb
\n
\n
\n
\n
\n
\n \n )\n}\n\nexport {Item3}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {FC} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n\nconst Item4: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n
\n Task{' '}\n \n #45890\n \n merged with{' '}\n \n #45890\n {' '}\n in “Ads Pro Admin Dashboard project:\n
\n\n
\n
Initiated at 4:23 PM by
\n\n \n {/* img */}\n
\n
\n
\n
\n \n )\n}\n\nexport {Item4}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {FC} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n\nconst Item5: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n
3 new application design concepts added:
\n\n
\n
Created at 4:23 PM by
\n\n \n {/* img */}\n
\n
\n
\n\n
\n
\n
\n
\n {/* */}\n
\n\n \n
\n\n
\n
\n {/* */}\n
\n\n \n
\n\n
\n
\n {/* */}\n
\n\n \n
\n
\n
\n
\n \n )\n}\n\nexport {Item5}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {FC} from 'react'\n// import {KTSVG} from '../../../helpers'\n\nconst Item6: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n
\n New case{' '}\n \n #67890\n \n is assigned to you in Multi-platform Database Design project\n
\n\n
\n
\n
Added at 4:23 PM by
\n\n \n Alice Tan\n \n
\n
\n
\n
\n
\n )\n}\n\nexport {Item6}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {FC} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n\nconst Item7: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n
You have received a new order:
\n\n
\n
Placed at 5:05 AM by
\n\n \n {/* img */}\n
\n
\n
\n\n
\n
\n {/* */}\n
\n
\n

Database Backup Process Completed!

\n
\n Login into Metronic Admin Dashboard to make sure the data integrity is OK\n
\n
\n \n Proceed\n \n
\n
\n
\n
\n \n )\n}\n\nexport {Item7}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {FC} from 'react'\n// import {KTSVG} from '../../../helpers'\n\nconst Item8: FC = () => {\n return (\n
\n
\n\n
\n
\n {/* */}\n
\n
\n\n
\n
\n
\n New order{' '}\n \n #67890\n \n is placed for Workshow Planning & Budget Estimation\n
\n\n
\n
Placed at 4:23 PM by
\n\n \n Jimmy Bold\n \n
\n
\n
\n
\n )\n}\n\nexport {Item8}\n","import React, {FC} from 'react'\nimport {Link} from 'react-router-dom'\n// import {KTSVG} from '../../../helpers'\nimport {Item1} from '../../content/activity/Item1'\nimport {Item2} from '../../content/activity/Item2'\nimport {Item3} from '../../content/activity/Item3'\nimport {Item4} from '../../content/activity/Item4'\nimport {Item5} from '../../content/activity/Item5'\nimport {Item6} from '../../content/activity/Item6'\nimport {Item7} from '../../content/activity/Item7'\nimport {Item8} from '../../content/activity/Item8'\n\nconst ActivityDrawer: FC = () => (\n \n
\n
\n

Activity Logs

\n\n
\n \n {/* */}\n \n
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n \n)\n\nexport {ActivityDrawer}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, {FC, useEffect, useRef, useState} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\nimport {Formik, Form, FormikValues, Field, ErrorMessage} from 'formik'\nimport * as Yup from 'yup'\nimport {StepperComponent} from '../../../assets/ts/components'\n\ninterface ICreateAccount {\n appName: string\n category: string\n framework: string\n dbName: string\n dbType: string\n nameOnCard: string\n cardNumber: string\n cardExpiryMonth: string\n cardExpiryYear: string\n cardCvv: string\n saveCard: string\n}\n\nconst inits: ICreateAccount = {\n appName: '',\n category: '1',\n framework: '1',\n dbName: '',\n dbType: '1',\n nameOnCard: 'Max Doe',\n cardNumber: '4111 1111 1111 1111',\n cardExpiryMonth: '1',\n cardExpiryYear: '2025',\n cardCvv: '123',\n saveCard: '1',\n}\n\nconst createAppSchema = [\n Yup.object({\n appName: Yup.string().required().label('App name'),\n category: Yup.string().required().label('Category'),\n }),\n Yup.object({\n framework: Yup.string().required().label('Framework'),\n }),\n Yup.object({\n dbName: Yup.string().required().label('Database name'),\n dbType: Yup.string().required().label('Database engine'),\n }),\n Yup.object({\n nameOnCard: Yup.string().required().label('Name'),\n cardNumber: Yup.string().required().label('Card Number'),\n cardExpiryMonth: Yup.string().required().label('Expiration Month'),\n cardExpiryYear: Yup.string().required().label('Expiration Year'),\n cardCvv: Yup.string().required().label('CVV'),\n }),\n]\n\nconst Main: FC = () => {\n const stepperRef = useRef(null)\n const stepper = useRef(null)\n const [currentSchema, setCurrentSchema] = useState(createAppSchema[0])\n const [initValues] = useState(inits)\n\n const loadStepper = () => {\n stepper.current = StepperComponent.createInsance(stepperRef.current as HTMLDivElement)\n }\n\n const prevStep = () => {\n if (!stepper.current) {\n return\n }\n\n stepper.current.goPrev()\n\n setCurrentSchema(createAppSchema[stepper.current.currentStepIndex - 1])\n }\n\n const submitStep = (values: ICreateAccount, actions: FormikValues) => {\n if (!stepper.current) {\n return\n }\n\n setCurrentSchema(createAppSchema[stepper.current.currentStepIndex])\n\n if (stepper.current.currentStepIndex !== stepper.current.totatStepsNumber) {\n stepper.current.goNext()\n } else {\n stepper.current.goto(1)\n actions.resetForm()\n }\n }\n\n useEffect(() => {\n if (!stepperRef.current) {\n return\n }\n\n loadStepper()\n }, [stepperRef])\n\n return (\n \n \n )\n}\n\nexport {Main}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, {FC} from 'react'\n// import {KTSVG, toAbsoluteUrl} from '../../../helpers'\n\nconst InviteUsers: FC = () => {\n const users = [\n // {\n // avatar: '/media/avatars/300-6.jpg',\n // name: 'Emma Smith',\n // email: 'e.smith@kpmg.com.au',\n // access: '1',\n // },\n {\n state: 'danger',\n name: 'Melody Macy',\n email: 'melody@altbox.com',\n access: '1',\n },\n // {\n // avatar: '/media/avatars/300-1.jpg',\n // name: 'Max Smith',\n // email: 'max@kt.com',\n // access: '3',\n // },\n // {\n // avatar: '/media/avatars/300-1.jpg',\n // name: 'Sean Bean',\n // email: 'sean@dellito.com',\n // access: '2',\n // },\n // {\n // avatar: '/media/avatars/300-25.jpg',\n // name: 'Brian Cox',\n // email: 'brian@exchange.com',\n // access: '3',\n // },\n {\n state: 'warning',\n name: 'Mikaela Collins',\n email: 'mikaela@pexcom.com',\n access: '2',\n },\n // {\n // avatar: '/media/avatars/300-9.jpg',\n // name: 'Francis Mitcham',\n // email: 'f.mitcham@kpmg.com.au',\n // access: '3',\n // },\n {\n state: 'danger',\n name: 'Olivia Wild',\n email: 'olivia@corpmail.com',\n access: '2',\n },\n {\n state: 'info',\n name: 'Neil Owen',\n email: 'owen.neil@gmail.com',\n access: '1',\n },\n // {\n // avatar: '/media/avatars/300-23.jpg',\n // name: 'Dan Wilson',\n // email: 'dam@consilting.com',\n // access: '3',\n // },\n {\n state: 'danger',\n name: 'Emma Bold',\n email: 'emma@intenso.com',\n access: '2',\n },\n // {\n // avatar: '/media/avatars/300-12.jpg',\n // name: 'Ana Crown',\n // email: 'ana.cf@limtel.com',\n // access: '1',\n // },\n {\n state: 'primary',\n name: 'Robert Doe',\n email: 'robert@benko.com',\n access: '3',\n },\n // {\n // avatar: '/media/avatars/300-13.jpg',\n // name: 'John Miller',\n // email: 'miller@mapple.com',\n // access: '3',\n // },\n {\n state: 'success',\n name: 'Lucy Kunic',\n email: 'lucy.m@fentech.com',\n access: '2',\n },\n // {\n // avatar: '/media/avatars/300-21.jpg',\n // name: 'Ethan Wilder',\n // email: 'ethan@loop.com.au',\n // access: '1',\n // },\n // {\n // avatar: '/media/avatars/300-12.jpg',\n // name: 'Ana Crown',\n // email: 'ana.cf@limtel.com',\n // access: '3',\n // },\n ]\n\n return (\n \n \n )\n}\n\nexport {InviteUsers}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, {FC, useState} from 'react'\n// import {KTSVG} from '../../../helpers'\n\nconst plans = [\n {\n title: 'Startup',\n subTitle: 'Best for startups',\n description: 'Optimal for 10+ team size and new startup',\n priceMonth: '39',\n priceAnnual: '399',\n default: true,\n custom: false,\n features: [\n {\n title: 'Up to 10 Active Users',\n supported: true,\n },\n {\n title: 'Up to 30 Project Integrations',\n supported: true,\n },\n {\n title: 'Analytics Module',\n supported: true,\n },\n {\n title: 'Finance Module',\n supported: false,\n },\n {\n title: 'Accounting Module',\n supported: false,\n },\n {\n title: 'Network Platform',\n supported: false,\n },\n {\n title: 'Unlimited Cloud Space',\n supported: false,\n },\n ],\n },\n\n {\n title: 'Advanced',\n subTitle: 'Best for 100+ team size',\n description: 'Optimal for 100+ team size and grown company',\n priceMonth: '339',\n priceAnnual: '3399',\n default: false,\n custom: false,\n features: [\n {\n title: 'Up to 10 Active Users',\n supported: true,\n },\n {\n title: 'Up to 30 Project Integrations',\n supported: true,\n },\n {\n title: 'Analytics Module',\n supported: true,\n },\n {\n title: 'Finance Module',\n supported: true,\n },\n {\n title: 'Accounting Module',\n supported: true,\n },\n {\n title: 'Network Platform',\n supported: false,\n },\n {\n title: 'Unlimited Cloud Space',\n supported: false,\n },\n ],\n },\n\n {\n title: 'Enterprise',\n subTitle: 'Best value for 1000+ team',\n description: 'Optimal for 1000+ team and enterpise',\n priceMonth: '999',\n priceAnnual: '9999',\n label: 'Most popular',\n default: false,\n custom: false,\n features: [\n {\n title: 'Up to 10 Active Users',\n supported: true,\n },\n {\n title: 'Up to 30 Project Integrations',\n supported: true,\n },\n {\n title: 'Analytics Module',\n supported: true,\n },\n {\n title: 'Finance Module',\n supported: true,\n },\n {\n title: 'Accounting Module',\n supported: true,\n },\n {\n title: 'Network Platform',\n supported: true,\n },\n {\n title: 'Unlimited Cloud Space',\n supported: true,\n },\n ],\n },\n\n {\n title: 'Custom',\n subTitle: 'Requet a custom license',\n default: false,\n custom: true,\n },\n]\n\nconst UpgradePlan: FC = () => {\n const [currentState, setCurrentState] = useState<'month' | 'annual'>('month')\n const [selected, setSelected] = useState('Startup')\n\n return (\n \n \n \n \n )\n}\n\nexport {UpgradePlan}\n","import { useEffect } from 'react'\nimport { Outlet } from 'react-router-dom'\nimport { AsideDefault } from './components/aside/AsideDefault'\nimport { Footer } from './components/Footer'\nimport { HeaderWrapper } from './components/header/HeaderWrapper'\nimport { Toolbar } from './components/toolbar/Toolbar'\nimport { RightToolbar } from '../partials/layout/RightToolbar'\nimport { ScrollTop } from './components/ScrollTop'\nimport { Content } from './components/Content'\nimport { PageDataProvider } from './core'\nimport { useLocation } from 'react-router-dom'\nimport { DrawerMessenger, ActivityDrawer, Main, InviteUsers, UpgradePlan } from '../partials'\nimport { MenuComponent } from '../assets/ts/components'\n// import { toAbsoluteUrl } from '../../_metronic/helpers'\n\nconst MasterLayout = () => {\n const location = useLocation()\n useEffect(() => {\n setTimeout(() => {\n MenuComponent.reinitialization()\n }, 500)\n }, [])\n\n useEffect(() => {\n setTimeout(() => {\n MenuComponent.reinitialization()\n }, 500)\n }, [location.key])\n\n return (\n \n
\n \n
\n \n\n
\n \n
\n \n \n \n
\n
\n
\n
\n
\n\n {/* begin:: Drawers */}\n \n \n \n {/* end:: Drawers */}\n\n {/* begin:: Modals */}\n
\n \n \n {/* end:: Modals */}\n \n \n )\n}\n\nexport { MasterLayout }\n","export default __webpack_public_path__ + \"static/media/video.172aaca4.webm\";","export default __webpack_public_path__ + \"static/media/background1.3cae1a8b.webp\";","export default __webpack_public_path__ + \"static/media/background3.4547435c.webp\";","export default __webpack_public_path__ + \"static/media/logo-kare.8b847f86.jpg\";","import React, { useState } from \"react\";\nimport { Link } from 'react-router-dom'\nimport { useKeenSlider, KeenSliderPlugin } from \"keen-slider/react\"\nimport \"keen-slider/keen-slider.min.css\"\nimport \"./styles.css\"\nimport video from \"./media/video.webm\"\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport background1 from \"./media/background1.webp\"\nimport background3 from \"./media/background3.webp\"\nimport logokare from \"./media/logo-kare.jpg\"\nimport { Helmet } from \"react-helmet\";\n\nconst AdaptiveHeight: KeenSliderPlugin = (slider) => {\n function updateHeight() {\n slider.container.style.height =\n slider.slides[slider.track.details.rel].offsetHeight + \"px\"\n }\n slider.on(\"created\", updateHeight)\n slider.on(\"slideChanged\", updateHeight)\n}\n\nexport function Home() {\n const [currentSlide, setCurrentSlide] = React.useState(0)\n const [loaded, setLoaded] = useState(false)\n const [sliderRef, instanceRef] = useKeenSlider(\n {\n defaultAnimation: {\n duration: 1000,\n easing: (t: number) => t\n },\n renderMode: \"performance\",\n rubberband: false,\n loop: true,\n initial: 0,\n slideChanged(s) {\n setCurrentSlide(s.track.details.rel)\n },\n created() {\n setLoaded(true)\n },\n range: {\n min: 0,\n align: true\n },\n },\n [\n AdaptiveHeight,\n (slider) => {\n var vid = document.querySelector(\"video\")\n let timeout: ReturnType\n let mouseOver = false\n var clearNextTimeout = () => {\n clearTimeout(timeout)\n }\n var nextTimeout = () => {\n clearTimeout(timeout)\n if (mouseOver) return\n timeout = setTimeout(() => {\n slider.next()\n }, 100000000000000000)\n }\n slider.on(\"created\", () => {\n slider.container.addEventListener(\"mouseover\", () => {\n mouseOver = true\n clearNextTimeout()\n })\n slider.container.addEventListener(\"mouseout\", () => {\n mouseOver = false\n nextTimeout()\n })\n nextTimeout()\n })\n slider.on(\"dragStarted\", () => {\n clearNextTimeout()\n })\n slider.on(\"updated\", nextTimeout)\n slider.on(\"animationStarted\", () => {\n vid?.pause()\n })\n slider.on(\"animationEnded\", () => {\n nextTimeout();\n\n if (slider.track.details.rel === 0) {\n vid?.play()\n }\n })\n window.addEventListener(\"scroll\", () => {\n if (window.scrollY > 50) {\n vid?.pause()\n } else {\n vid?.play()\n }\n })\n },\n ]\n )\n\n return (\n
\n \n Home | Kkdik Services\n \n \n\n
\n
\n
\n
\n \n\n\n
\n
\n

T-REACH

\n
\n
\n

Since 2013, Turkey harmonized major chemical regulations including CLP [OG 11.12.2013 – 28848] and REACH [OG 13.12.2014 – 29204 & OG 23.06.2017 – 30105] in effort to align its chemical regulatory status with the European Union (EU).

\n
\n
\n
\n\n
\n \"Ship\n\n
\n
\n

To place a product on the Turkish market, companies are now required to comply with an extensive list of legal obligations mainly pertaining to classification, labelling and packaging of chemicals. Managing your compliance needs in this evolving regulatory landscape might prove a complicated task and that’s where we come in.

\n
\n
\n
\n\n
\n \"Factory\n
\n
\n\n {loaded && instanceRef.current && (\n <>\n \n e.stopPropagation() || instanceRef.current?.prev()\n }\n disabled={currentSlide === 0}\n />\n\n \n e.stopPropagation() || instanceRef.current?.next()\n }\n disabled={\n currentSlide ===\n instanceRef.current.track.details.slides.length - 1\n }\n />\n \n )}\n
\n\n {loaded && instanceRef.current && (\n
\n {[\n ...Array(instanceRef.current.track.details.slides.length).keys(),\n ].map((idx) => {\n return (\n {\n instanceRef.current?.moveToIdx(idx)\n }}\n className={\"dot\" + (currentSlide === idx ? \" active\" : \"\")}\n >
\n )\n })}\n
\n )}\n\n {/*
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
*/}\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n

T-REACH (KKDIK) OR Service

\n
\n
\n
\n

KKDIK requires all companies manufacturing or placing a substance on Turkish market in quantities greater than 1t/year to register that substance with the MoEU. For legal reasons, only companies with a legal entity in Turkey are allowed to submit a registration; however, non-TR companies may submit registration by appointing a TR-based Only Representative to register on their behalf, in which case their importers will be regarded as downstream users and do not need to do registrations. Benefits of Appointing REACH Only Representative (OR) Relieve importers of their obligations to register and obtain continued market access in Turkey (many TR importers will try to avoid registrations by purchasing KKDIK registered chemicals); Avoid dependence on a single importer and keep market access should one TR importer cease trading; Gain advantages over other non-TR suppliers who do not appoint OR to register their substances; Note: Importers will be exempt from KKDIK registration if their non-TR suppliers have registered; however, importers need to confirm with their suppliers' Only Representative that they are included in the inventory of importers and their tonnage and uses are covered by the OR. This can be done by asking for KKDIK Certificate of Compliance and Tonnage Coverage Certificate from the only representative of their suppliers before they put chemicals on the TR market.

\n
\n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n \"Arrow\"\n

Contact Us

\n
\n
\n
\n \n Contact Us\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \"Logo\n
\n
\n
\n \n Visit Us!\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \"Magnifying\n

Explore KKDİK

\n
\n
\n
\n \n Explore KKDİK\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}\n\nfunction Arrow(props: {\n disabled: boolean\n left?: boolean\n onClick: (e: any) => void\n}) {\n const disabeld = props.disabled ? \" arrow--disabled\" : \"\"\n return (\n \n {props.left && (\n \n )}\n {!props.left && (\n \n )}\n \n )\n}\n","import React from \"react\";\nimport { Link } from 'react-router-dom'\nimport logokare from './media/logo-kare.jpg'\nimport { Helmet } from \"react-helmet\";\n\nexport function About() {\n return (\n <>\n \n About | Kkdik Services\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

About

\n
\n
\n
\n
\n \n \n \n
\n

\n DGROUTE provides services in the field of Only Representative, chemicals and dangerous goods logistics with expert staff certified by government agencies.\n\n DGROUTE provides service with its expert staff who Chemical Evaluation Specialist certificate. We provide Safety Data Sheet (MSDS/SDS) preparation and alignment services in 52 languages in compliance with current regulations.\n\n DGROUTE offers Only Representative services consultation on issues relating to KKDİK (Turkish REACH ), Pre-SIEF, SIEF& Consortia Management, SDS authoring solutions.\n\n Our company operates from its headquarters in the Scientific and Technological Research Council of Turkey campus. We carry out R&D studies in the fields of chemistry and dangerous goods logistics and develop software solutions.\n

\n\n

Our Mission

\n

\n DGROUTE is the reliable business partner of its customers with its service and software solutions in the field of chemical legislation management.\n

\n\n

Our Vision

\n

\n DGROUTE believes innovation and collaboration is an indispensable value. As a brand that develops customer-oriented approaches with its sustainable service quality, it is our target to be your solution partner.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","export default __webpack_public_path__ + \"static/media/kkdik-logo.74c8f3bd.png\";","import React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { Link } from 'react-router-dom'\nimport kkdiklogo from '../pages/media/kkdik-logo.png'\nimport logokare from '../pages/media/logo-kare.jpg'\n\nexport function Services() {\n return (\n <>\n \n Services | Kkdik Services\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Services

\n
\n
\n
\n\n
\n \n \n \n
\n\n

Turkish REACH Regulation

\n

Registration

\n

\n DGROUTE​ offers Turkey only representative services, Turkish SDS authoring, translation and compliance services for all chemical industry in Turkey and abroad. Many aspects of the Global Harmonized Systems (GHS) have already been implemented in Turkey for Turkey chemical industry.\n

\n The GHS Regulation came into force when The Turkey Official Gazette published the GHS Regulations with the set transitional periods in December 2014. The full implementation of the regulation has been implemented as of June 1, 2016 for both hazardous substances and mixtures. An SDS (formerly known as MSDS) includes information such as the properties of each chemical; the physical, health, and environmental health hazards; protective measures; and safety precautions for handling, storing, and transporting the chemical.\n

\n\n

Turkey OR services

\n

\n DGROUTE offers Turkey Only Representative services consultation on issues relating to KKDİK (Turkish REACH), Pre-SIEF, SIEF& Consortia Management, SDS authoring solutions.\n

\n\n
\n \n \n \n
\n\n

\n Do not hesitate to contact us for comprehensive information and offer about KKDIK Pre-Registration Service and Turkish REACH Regulations.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","import React from \"react\";\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport { Link } from 'react-router-dom'\nimport { Helmet } from \"react-helmet\";\n\nexport function Spage1() {\n return (\n <>\n \n KKDIK (T-REACH) Only Representative Services\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

KKDIK (T-REACH) Only Representative Services

\n
\n
\n
\n

\n A non-Turkish company cannot register substances under KKDIK (T-REACH). But they can appoint an Only Representative who is legally responsible for ensuring its non-Turkish companies substances are compliant with KKDIK. The appointment of an Only Representative has many advantages for the non-Turkish manufacturer:\n

\n
    \n
  • \n

    An independent third party takes on all obligations of the importers under KKDIK (T-REACH) . The Importers then become downstream users.

    \n
  • \n
  • \n

    If an importer registers a product the importing company will own the registration. It may then be more difficult for the manufacturer to expand or change the route to the Turkish market. With an OR the non-Turkish manufacturer owns the registration and can therefore export to as many different Turkish importers as they want.

    \n
  • \n
  • \n

    If an importer changes supplier the non-Turkish manufacturer may lose access to the Turkish market.\n

    \n
  • \n
\n
\n

Turkish REACH Regulation

\n

\n For substances the Only Representative will make, subject to certain conditions being fulfilled, a late pre-registration to the Ministry of Environment. The submission of a late pre-registration permits a non-Turkish manufactuer to supply into the Turkish and take advantage of the extended registration deadline program. Subsequently the Only Representative undertakes all duties as are necessary to maintain KKDIK compliance, including documentation, record keeping and preparation and submission of a registration dossier.\n

\n For substances the Only Representative will prepare an inquiry dossier and negotiate with MoEU or data holders to gain access to the data required to complete a registration. If any testing is prescribed by KKDIK (T-REACH) the Only Representative will organise and monitor this testing to ensure compliance. The Only Representative will prepare and submit the registration dossier to MoE. OR will be the first contact for any communication from MoEU or Member State Competent Authorities.\n

\n\n
\n \n \n \n
\n\n

\n Do not hesitate to contact us for comprehensive information and offer about Only Representative(OR services) and Turkish REACH Regulations.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","import React from \"react\";\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport { Link } from 'react-router-dom'\nimport { Helmet } from \"react-helmet\";\n\nexport function Spage2() {\n return (\n <>\n \n KKDIK SIEF Management\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

KKDIK SIEF Management

\n
\n
\n
\n

\n You are obliged to communicate on several issues in the supply chain and respectively in the SIEF (MBDF) under KKDİK regulation.​ SIEF management is also offered under KKDIK registration services.\n

\n
\n

KKDIK registration services

\n

\n DGROUTE, KKDIK registration services provide full support for the requirements of KKDIK registration. We offer a special service for KKDİK registration, pre-registration (pre-SIEF), SIEF participation, actors communication with supply chain, exposure scenarios, risk assessments, technical dossier preparation, chemical safety assessments (CSA), chemical safety reports (CSR) including for any stage of companies.\n

\n The principle is “one substance, one registration”.\n During joint submission process, the lead registrant or KKDİK (Turk REACH) consortium will do most of the work such as data collection, development of technical dossier and Chemical Safety Report (CSR), and submission of joint registration dossier to CRS.\n

\n Other co-registrants only need to pay the lead registrant or consortium a fee to refer to the joint registration dossier and then prepare the individual part of the registration dossier in Turkey Chemical Registration System.\n

\n In SIEF communication, quite a number of information especially relating to data needs to be collected from or fed back to pre-SIEF and co-registrants. You also need to agree on the substance Identify, the Lead registrant, on the classification and labelling, and crucial information needs to be communicated to the authorities.\n

\n DGROUTE​ helps you find out the intentions of your co-registrants, and it guarantees the best approach to contacting downstream users to gather information. It helps you store all communication and make sure information previously distributed is available, and communicate to the authorities, including MoEU and its different bodies.\n

\n MBDF : Madde Bilgi Değişim Forumu\n

\n KKDİK : KİMYASALLARIN KAYDI, DEĞERLENDİRİLMESİ, İZNİ VE KISITLANMASI (Registration, Evaluation, Authorization and Restriction of Chemicals)\n
\n SIEF : Substance Information Exchange Forum\n

\n\n
\n \n \n \n
\n\n

\n Do not hesitate to contact us for comprehensive information and offer about KKDIK Pre-Registration Service and Turkish REACH Regulations.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","import React from \"react\";\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport { Link } from 'react-router-dom'\nimport { Helmet } from \"react-helmet\";\n\nexport function Spage3() {\n return (\n <>\n \n KKDIK Pre-Registration Services\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

KKDIK Pre-Registration Services

\n
\n
\n
\n

\n On June 23, 2017 KKDIK – Turkish REACH regulation was published by the Turkish Republic Ministry of Environment in the Official Gazette No. 30105 and came into force on December 23, 2017.​ KKDIK Pre-Registration Service\n

\n KKDIK has been prepared on the basis of EU REACH Regulation and adapted to the Turkish Industry within the frame of compliance with the legislation of the European Union.\n

\n Registration, Restriction and Permission are similar processes within the scope of KKDIK – Turkish REACH.\n

\n Registration within the scope of KKDIK are divided into two process named as Pre-Registration and Registration\n

\n European REACH registration of substances shall not be applied in Turkey. Therefore, these substances should be registered under the KKDIK again.\n

\n The first step, the KKDIK Pre-Registration Process, will be held between 23 December 2017 to 31 December 2020. After the pre-registration process will be completed on 31 December 2020, the registration process will start.\n

\n We can brief critical dates for these processes as below;\n

\n
\n
    \n
  • \n

    23 December 2017- 31 December 2020: Pre-Registration will be held for the substances which are evaluated under KKDIK.

    \n
  • \n
  • \n

    01 January 2021 – Beyond: The main registration process will start for the substances evaluated under KKDIK. However, there are important dates that should be specified for this period.

    \n
  • \n
  • \n

    01 January 2021 – 31 December 2023: The registration process for substances evaluated under KKDIK will start. However, as the registration process continues, pre-registered substances can be produced or imported between these dates. Substances that are not previously registered may be produced or imported in the event of completion of the registration process.

    \n
  • \n
  • \n

    01 January 2024 – Beyond: The substances within the scope of KKDIK can be produced or imported on the condition that the registration process is completed from 01 January 2024.

    \n
  • \n
  • \n

    The restriction provisions came into force on 23 December 2017. Other provisions shall be effective as from this date. Furthermore, all restrictions shall be effective on 31 December 2023.

    \n
  • \n
\n
\n

KKDIK Registrations:

\n

\n In order to prepare for the registration process, the process defined as the pre-registration process is called the pre-Substance Information Exchange forum (pre-SIEF) in the KKDIK regulation.\n

\n Some of the relevant articles for Pre-Registration, that are mentioned as Pre-Substance Information Exchange Forum (pre-SIEF) in the KKDIK Regulation, are specified as follows;\n

\n TRANSITIONAL ARTICLE 1- (1) All registrants, shall send a pre-SIEF including below mentioned information to the Ministry through Chemicals Registration System in the website of Ministry until 31/12/2020:\n a) Substance identity according to Annex-6;\n b) Role in the supply chain\n

\n Entry into Force\n

\n ARTICLE 66- (1) ç) All other provisions will enter into force 6 months later the date of its publication on the Official Gazette.\n As stated in the KKDIK Regulation, it is obligatory to submit Pre-SIEF (Pre-Registration) for chemical substances with registration obligation under the scope of KKDIK. This obligation comes into force as of December 23, 2017. The deadline for submission of the Pre-SIEF to the Ministry’s assessment is 31 December 2020.\n

\n There is a Pre-Registration / Registration obligations for substances manufactured or imported in 1 ton or more per year in its own form or in the mixture.\n

\n\n
\n \n \n \n
\n\n

\n Do not hesitate to contact us for comprehensive information and offer about KKDIK Pre-Registration Service and Turkish REACH Regulations.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","import React from \"react\";\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport { Link } from 'react-router-dom'\nimport { Helmet } from \"react-helmet\";\n\nexport function Spage4() {\n return (\n <>\n \n Turkish SDS Authoring Service\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Turkish SDS Authoring Service

\n
\n
\n
\n

\n Turkey applies the SEA (Classification, Labelling, Packaging) Regulation, which is aligned with CLP (1272/2008 EC) and fully entered into force on 2016. This Regulation is available in Turkish only. Turkish SDS authoring service should comply with this legislation.\n

\n Similar to the EU CLP regulation, this regulation requires manufacturers and importers to notify the classification and labelling of hazardous substances and mixtures to the Turkish Classification and Labelling Inventory (C&L Notification).\n

\n Moreover, Turkey requires for SDSs to be:\n

\n
    \n
  • \n

    Authored in Turkish language and provided free of charge

    \n
  • \n
  • \n

    Submitted to Republic Of Turkey Ministry Of Environment And Urbanization

    \n
  • \n
  • \n

    Prepared by a certified SDS author in accordance with Turkish standards. The expert can be an employee of the company itself, who attended an eligible formation course and gained the appropriate certificate as Turkish SDS author or it could be an external collaborator who possesses the appropriate certification. This certificate is provided by the Turkish Standards Institution. SDS should include the contact details of the certified person who prepared the SDS. Certificate date and number of the preparer the SDS footer.

    \n
  • \n
\n

\n Therefore it is important to underline that provides a SDS model based on the CLP Regulation translated in Turkish, which can be further customised through a series of optional, Turkish SDS-specific functionalities that can be installed on demand in order to better align it with the customer’s needs. These functionalities make it possible to specify all necessary information regarding the certified SDS preparer.\n

\n
    \n
  • \n

    Regulation on Safety Data Sheets Regarding Hazardous Substances and Mixtures published in the Official Journal numbered 29204 on December 13, 2014

    \n
  • \n
  • \n

    Classification, Labelling and Packaging of Substances and Mixtures (SEA) Regulation published in the Official Journal numbered 28848 on December 11, 2013.

    \n
  • \n
  • \n

    Regulation on Health and Safety Precautions When Working with Chemical Substances published in the Official Journal numbered 28733 on August 12, 2013

    \n
  • \n
  • \n

    Regulation on Health and Safety Precautions When Working with Carcinogenic and Mutagenic Substances published in the Official Journal numbered 28730 on August 6, 2013

    \n
  • \n
  • \n

    Regulation on Transportation of Dangerous Goods by Road published in the Official Journal numbered 28801 on October 24, 2013

    \n
  • \n
  • \n

    Regulation (OG) 23.06.2017 – 30105

    \n
  • \n
\n\n
\n \n \n \n
\n\n

\n Do not hesitate to contact us for comprehensive information and offer about KKDIK Pre-Registration Service and Turkish REACH Regulations.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","export default __webpack_public_path__ + \"static/media/kkdik_english.4d9e588b.pdf\";","import React from \"react\";\nimport kkdik_english from './kkdik_english.pdf';\nimport { Helmet } from \"react-helmet\";\n\nexport function Kkdik() {\n\n return (\n <>\n \n KKDIK | Kkdik Services\n \n \n
\n \n
Your web browser doesn't have a PDF plugin.\n Instead you can click here to download the PDF file.\n
\n
\n
\n \n );\n}\n","import React from \"react\";\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport { Link } from 'react-router-dom'\nimport { Helmet } from \"react-helmet\";\n\nexport function Treach() {\n return (\n <>\n \n KKDIK (T-REACH)\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

KKDIK(T-REACH) | Kkdik Services

\n
\n
\n
\n

\n KKDIK(T-REACH) is a regulation of Republic of Turkey, adopted from REACH-EU to improve the protection of human health and the environment from the risks that can be posed by chemicals, while enhancing the competitiveness of Turkish chemicals industry. It also promotes alternative methods for the hazard assessment of substances in order to reduce the number of tests on animals.\n\n In principle, KKDIK(T-REACH) applies to all chemical substances; not only those used in industrial processes but also in our day-to-day lives, for example in cleaning products, paints as well as in articles such as clothes, furniture and electrical appliances. Therefore, the regulation has an impact on most companies across Turkey.\n\n KKDIK(T-REACH) places the burden of proof on companies. To comply with the regulation, companies must identify and manage the risks linked to the substances they manufacture and market in Turkey. They have to demonstrate to MoEU how the substance can be safely used, and they must communicate the risk management measures to the users. If the risks cannot be managed, authorities can restrict the use of substances in different ways. In the long run, the most hazardous substances should be substituted with less dangerous ones. KKDIK(T-REACH) stands for Registration, Evaluation, Authorisation and Restriction of Chemicals. It entered into force on 23 June 2017.\n

\n\n

How does KKDIK work?

\n

\n KKDIK(T-REACH) establishes procedures for collecting and assessing information on the properties and hazards of substances. Companies need to register their substances and to do this they need to work together with other companies who are registering the same substance. MoEU will receive and evaluate individual registrations for their compliance and evaluate selected substances to clarify initial concerns for human health or for the environment between 1 January 2021-31 December 2023. Turkey MoEU’s scientific committees assess whether the risks of substances can be managed. Authorities can ban hazardous substances if their risks are unmanageable. They can also decide to restrict a use or make it subject to a prior authorisation.\n

\n\n

KKDIK’s effect on companies

\n

\n KKDIK(T-REACH) impacts on a wide range of companies across many sectors, even those who may not think of themselves as being involved with chemicals. In general, under KKDIK(T-REACH) you may have one of these roles:\n

\n Manufacturer: If you make chemicals, either to use yourself or to supply to other people (even if it is for export), then you will probably have some important responsibilities under KKDIK(T-REACH) .\n

\n Importer: If you buy anything from outside Turkey, you are likely to have some responsibilities under KKDIK(T-REACH) . It may be individual chemicals, mixtures for onwards sale or finished products, like clothes, furniture or plastic goods.\n

\n Downstream users: Most companies use chemicals, sometimes even without realising it, therefore you need to check your obligations if you handle any chemicals in your industrial or professional activity. You might have some responsibilities under KKDIK(T-REACH).\n

\n Companies established outside Turkey: If you are a company established outside Turkey, you are not bound by the obligations of KKDIK(T-REACH) , even if you export their products into the customs territory of Turkey. The responsibility for fulfilling the requirements of KKDİK, such as registration lies with the importers established in Turkey, or with the only representative of a non-Turkish manufacturer established in Turkey.\n

\n\n
\n \n \n \n
\n\n

\n Do not hesitate to contact us for comprehensive information and offer about Only Representative Turkey and Turkish REACH Regulations.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","import React from 'react'\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport { Link } from 'react-router-dom'\nimport { Helmet } from 'react-helmet';\n\nexport function Tpage1() {\n\n return (\n <>\n \n About KKDIK\n \n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

About KKDIK

\n
\n
\n
\n

Turkish REACH regulation

\n\n
\n \n \n \n
\n\n

Registration

\n

\n According to the Turkish REACH regulation, Companies are responsible for collecting information on the properties and uses of the substances they manufacture or import above one tonne a year. They also have to assess the hazards and potential risks presented by the substance.\n

\n\n

Evaluation

\n

\n Evaluation under KKDIK focuses on three different areas:\n\n Examination of testing proposals submitted by registrants\n Compliance check of the dossiers submitted by registrants\n Substance evaluation\n

\n\n
    \n
  • \n

    Examination of testing proposals submitted by registrants

    \n
  • \n
  • \n

    Compliance check of the dossiers submitted by registrants

    \n
  • \n
  • \n

    Substance evaluation

    \n
  • \n
\n\n

Authorisation

\n

\n The authorisation process aims to ensure that substances of very high concern (SVHCs) are progressively replaced by less dangerous substances or technologies where technically and economically feasible alternatives are available.\n\n Substances with the following hazard properties may be identified as SVHCs:\n

\n\n
    \n
  • \n

    Substances meeting the criteria for classification as carcinogenic, mutagenic or toxic for reproduction (CMR) category 1A or 1B in accordance with the SEA Regulation.

    \n
  • \n
  • \n

    Substances which are persistent, bioaccumulative and toxic (PBT) or very persistent and very bioaccumulative (vPvB) according to KKDIK Annex XIII.

    \n
  • \n
  • \n

    Substances on a case-by-case basis, that cause an equivalent level of concern as CMR or PBT/vPvB substances.

    \n
  • \n
\n

\n The SVHC identification process includes a 45-day public consultation. Once a substance is identified as an SVHC, it is included in the Candidate List. The inclusion in the Candidate List brings immediate obligations for suppliers of the substance, such as:\n

\n
    \n
  • \n

    supplying a safety data sheet

    \n
  • \n
  • \n

    communicating on safe use

    \n
  • \n
  • \n

    responding to consumer requests within 45 days and

    \n
  • \n
  • \n

    notifying MOE if the article they produce contains an SVHC in quantities above one tonne per producer/importer per year and if the substance is present in those articles above a concentration of 0.1% (w/w).

    \n
  • \n
\n\n

Restriction

\n

\n Restrictions are an instrument to protect human health and the environment from unacceptable risks posed by chemicals. Restrictions are normally used to limit or ban the manufacture, placing on the market (including imports) or use of a substance, but can impose any relevant condition, such as requiring technical measures or specific labels.\n

\n\n

SCOPE

\n

\n On 23 June 2017, the Ministry of Environment and Urbanization (MoEU) in Turkey published its REACH similar KKDIK regulation. The KKDIK regulation came into force on 23 Dec 2017. “KKDIK” are the first letters of REACH written in Turkish. Like REACH-EU regulation, the KKDIK regulation requires companies to register all substances manufactured in Turkey or imported into Turkey with volume above 1t/y before a given deadline.\n
\n KKDIK will bring various Turkish chemicals legislation under one law.\n
\n It will replace three existing laws:\n\n

\n\n
    \n
  • \n

    Regulation on the Inventory and Control of Chemicals;

    \n
  • \n
  • \n

    Regulation on the Preparation and Distribution of Safety Datasheets for Hazardous Materials and Products; and

    \n
  • \n
  • \n

    Regulation on the Restrictions Relating to the Production, Supply to the Market and Use of Certain Hazardous Materials, Products and Goods.

    \n
  • \n
\n

You can review the relevant regulation for legal reference.

\n\n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","import React from \"react\";\nimport { toAbsoluteUrl } from '../../_metronic/helpers'\nimport { Link } from 'react-router-dom'\nimport { Helmet } from \"react-helmet\";\n\nexport function Tpage2() {\n return (\n <>\n \n What is KKDIK OR\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

What is KKDIK OR

\n
\n
\n
\n

\n Non-Turkish manufacturers are not permitted to submit KKDİK (Turkish REACH) registration dossiers to the Ministry of Environment (MoE). However, KKDİK provides for a non-Turkish manufacturer to appoint an Only Representative in order to fulfill the registration obligations on their behalf. DGROUTE is a Only representative in Turkey.\n

\n KKDIK requires all companies manufacturing or placing a substance on Turkish market in quantities greater than 1t/year to register that substance with the MoEU. For legal reasons, only companies with a legal entity in Turkey are allowed to submit a registration. However, non-TR companies may submit registration by appointing a TR-based Only Representative to register on their behalf, in which case their importers will be regarded as downstream users and do not need to do registrations.\n

\n\n ​Benefits of Appointing REACH Only Representative (OR)\n \n\n
    \n
  • \n

    Relieve importers of their obligations to register and obtain continued market access in Turkey (many TR importers will try to avoid registrations by purchasing KKDIK registered chemicals);

    \n
  • \n
  • \n

    Avoid dependence on a single importer and keep market access should one TR importer cease trading;

    \n
  • \n
  • \n

    Gain advantages over other non-TR suppliers who do not appoint OR to register their substances;

    \n
  • \n
\n\n

\n Note: Importers will be exempt from KKDIK registration if their non-TR suppliers have registered. However, importers need to confirm with their suppliers’ Only Representative that they are included in the inventory of importers and their tonnage and uses are covered by the OR. This can be done by asking for KKDIK Certificate of Compliance and Tonnage Coverage Certificate from the only representative of their suppliers before they put chemicals on the TR market.\n

\n The service provides the necessary legal presence and representation in Turkey including representation in MoE, technical management of KKDİK pre-registration and registration, and submission of information to the MoE to fulfill a company’s KKDİK obligations. Whether your company is entering Turkey market for the first time or your business is considering a change of OR, we can offer a comprehensive service tailored to your unique requirements.\n

\n\n
\n \n \n \n
\n\n

\n Do not hesitate to contact us for comprehensive information and offer about Only Representative Turkey and Turkish REACH Regulations.\n

\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n}","import React from \"react\";\n\nexport function GoogleMap() {\n return (\n
\n
\n \n
\n
\n );\n}","import 'react-app-polyfill/ie11';\nimport * as React from 'react';\nimport \"bootstrap/dist/js/bootstrap.min.js\"\nimport { toAbsoluteUrl } from '../../_metronic/helpers';\nimport { ContactForm } from \"../pages/components/ContactForm\"\nimport { AdressCard } from \"../pages/components/AdressCard\"\nimport { GoogleMap } from \"../pages/components/GoogleMap\"\nimport { Helmet } from 'react-helmet';\n// import img from '../pages/media/img.png';\n\nexport function Contact() {\n return (\n <>\n \n Contact | Kkdik Services\n \n \n\n
\n
\n
\n
\n
\n

\n Contact Us\n

\n \n
\n
\n \"Community\n
\n
\n\n
\n\n
\n\n
\n \n
\n\n {/*
\n \n
*/}\n\n
\n \n
\n
\n
\n
\n
\n \n );\n}","// import React, { useState } from 'react'\n// import TopBarProgress from 'react-topbar-progress-indicator'\n// import { DashboardWrapper } from '../pages/dashboard/DashboardWrapper'\n// import { MenuTestPage } from '../pages/MenuTestPage'\n// import { getCSSVariableValue } from \"../../_metronic/assets/ts/_utils\";\nimport { MasterLayout } from '../../_metronic/layout/MasterLayout'\nimport { Route, Routes, Navigate } from 'react-router-dom'\nimport { Home } from \"../pages/Home\"\nimport { About } from \"../pages/About\"\nimport { Services } from \"../pages/Services\"\nimport { Spage1 } from \"../pages/Spage1\"\nimport { Spage2 } from \"../pages/Spage2\"\nimport { Spage3 } from \"../pages/Spage3\"\nimport { Spage4 } from \"../pages/Spage4\"\nimport { Kkdik } from \"../pages/Kkdik\"\nimport { Treach } from \"../pages/Treach\"\nimport { Tpage1 } from \"../pages/Tpage1\"\nimport { Tpage2 } from \"../pages/Tpage2\"\nimport { Contact } from \"../pages/Contact\"\n\nconst PrivateRoutes = () => {\n // const BuilderPageWrapper = lazy(() => import('../pages/layout-builder/BuilderPageWrapper'))\n // const ProfilePage = lazy(() => import('../modules/profile/ProfilePage'))\n // const WizardsPage = lazy(() => import('../modules/wizards/WizardsPage'))\n // const AccountPage = lazy(() => import('../modules/accounts/AccountPage'))\n // const WidgetsPage = lazy(() => import('../modules/widgets/WidgetsPage'))\n // const ChatPage = lazy(() => import('../modules/apps/chat/ChatPage'))\n\n return (\n \n }>\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n {window.location.href === \"http://localhost:44478/rex\" &&\n } />\n }\n } />\n \n \n )\n}\n\nexport { PrivateRoutes }\n","import {FC} from 'react'\n\nconst Error500: FC = () => {\n return (\n <>\n

System Error

\n\n
\n Something went wrong!
Please try again later.\n
\n \n )\n}\n\nexport {Error500}\n","import { FC } from 'react'\n\nconst Error404: FC = () => {\n return (\n <>\n

Page Not Found

\n\n
\n The page you looked not found!\n
\n \n )\n}\n\nexport { Error404 }\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport { Route, Link, Routes, Outlet } from 'react-router-dom'\nimport { Error500 } from './components/Error500'\nimport { Error404 } from './components/Error404'\nimport kkdiklogo from '../../pages/media/kkdik-logo.png'\n\nconst ErrorsLayout = () => {\n return (\n
\n \n
\n \n \n \n
\n \n
\n \n Go to homepage\n \n
\n
\n
\n\n
\n
\n \n About\n \n \n Contact\n \n
\n
\n
\n \n )\n}\n\nconst ErrorsPage = () => (\n \n }>\n } />\n } />\n } />\n \n \n)\n\nexport { ErrorsPage }\n","import {FC} from 'react'\nimport {useLang} from './Metronici18n'\nimport {IntlProvider} from 'react-intl'\nimport '@formatjs/intl-relativetimeformat/polyfill'\nimport '@formatjs/intl-relativetimeformat/locale-data/en'\nimport '@formatjs/intl-relativetimeformat/locale-data/de'\nimport '@formatjs/intl-relativetimeformat/locale-data/es'\nimport '@formatjs/intl-relativetimeformat/locale-data/fr'\nimport '@formatjs/intl-relativetimeformat/locale-data/ja'\nimport '@formatjs/intl-relativetimeformat/locale-data/zh'\n\nimport deMessages from './messages/de.json'\nimport enMessages from './messages/en.json'\nimport esMessages from './messages/es.json'\nimport frMessages from './messages/fr.json'\nimport jaMessages from './messages/ja.json'\nimport zhMessages from './messages/zh.json'\n\nconst allMessages = {\n de: deMessages,\n en: enMessages,\n es: esMessages,\n fr: frMessages,\n ja: jaMessages,\n zh: zhMessages,\n}\n\nconst I18nProvider: FC = ({children}) => {\n const locale = useLang()\n const messages = allMessages[locale]\n\n return (\n \n {children}\n \n )\n}\n\nexport {I18nProvider}\n","import {useEffect, useRef} from 'react'\nimport {\n MenuComponent,\n DrawerComponent,\n ScrollComponent,\n ScrollTopComponent,\n StickyComponent,\n ToggleComponent,\n SwapperComponent,\n} from '../assets/ts/components'\n\nimport {useLayout} from './core'\n\nexport function MasterInit() {\n const {config} = useLayout()\n const isFirstRun = useRef(true)\n const pluginsInitialization = () => {\n isFirstRun.current = false\n setTimeout(() => {\n ToggleComponent.bootstrap()\n ScrollTopComponent.bootstrap()\n DrawerComponent.bootstrap()\n StickyComponent.bootstrap()\n MenuComponent.bootstrap()\n ScrollComponent.bootstrap()\n SwapperComponent.bootstrap()\n }, 500)\n }\n\n useEffect(() => {\n if (isFirstRun.current) {\n isFirstRun.current = false\n pluginsInitialization()\n }\n }, [config])\n\n return <>\n}\n","import { Suspense } from 'react'\nimport React from 'react'\nimport { Outlet } from 'react-router-dom'\nimport { I18nProvider } from '../_metronic/i18n/i18nProvider'\nimport { LayoutProvider, LayoutSplashScreen } from '../_metronic/layout/core'\nimport { MasterInit } from '../_metronic/layout/MasterInit'\nimport AuthInit from './modules/auth/redux/AuthInit'\n\nconst App = () => {\n return (\n }>\n \n \n \n \n \n \n \n \n \n )\n}\n\nexport { App }\n","/**\n * High level router.\n *\n * Note: It's recommended to compose related routes in internal router\n * components (e.g: `src/app/modules/Auth/pages/AuthPage`, `src/app/BasePage`).\n */\n\nimport { FC } from 'react'\nimport { Routes, Route, BrowserRouter } from 'react-router-dom'\n// import {shallowEqual, useSelector} from 'react-redux'\nimport { PrivateRoutes } from './PrivateRoutes'\nimport { ErrorsPage } from '../modules/errors/ErrorsPage'\n// import {Logout, AuthPage} from '../modules/auth'\n// import {RootState} from '../../setup'\nimport { App } from '../App'\n\n/**\n * Base URL of the website.\n *\n * @see https://facebook.github.io/create-react-app/docs/using-the-public-folder\n */\nconst { PUBLIC_URL } = process.env\n\nconst AppRoutes: FC = () => {\n return (\n \n \n }>\n } />\n } />\n \n \n \n )\n}\n\nexport { AppRoutes }\n","export default function setupAxios(axios: any, store: any) {\n axios.defaults.headers.Accept = 'application/json'\n axios.interceptors.request.use(\n (config: any) => {\n const {\n auth: {accessToken},\n } = store.getState()\n\n if (accessToken) {\n config.headers.Authorization = `Bearer ${accessToken}`\n }\n\n return config\n },\n (err: any) => Promise.reject(err)\n )\n}\n","import ReactDOM from 'react-dom'\n// Redux\n// https://github.com/rt2zz/redux-persist\nimport { PersistGate } from 'redux-persist/integration/react'\nimport { Provider } from 'react-redux'\nimport * as _redux from './setup'\nimport store, { persistor } from './setup/redux/Store'\n// Axios\nimport axios from 'axios'\nimport { Chart, registerables } from 'chart.js'\n\n// Apps\nimport { MetronicI18nProvider } from './_metronic/i18n/Metronici18n'\n/**\n * TIP: Replace this style import with dark styles to enable dark mode\n *\n * import './_metronic/assets/sass/style.dark.scss'\n *\n * TIP: Replace this style import with rtl styles to enable rtl mode\n *\n * import './_metronic/assets/css/style.rtl.css'\n **/\nimport './_metronic/assets/sass/style.scss'\nimport './_metronic/assets/sass/style.react.scss'\nimport { AppRoutes } from './app/routing/AppRoutes'\n\n/**\n * Creates `axios-mock-adapter` instance for provided `axios` instance, add\n * basic Metronic mocks and returns it.\n *\n * @see https://github.com/ctimmerm/axios-mock-adapter\n */\n\n/**\n * Inject Metronic interceptors for axios.\n *\n * @see https://github.com/axios/axios#interceptors\n */\n_redux.setupAxios(axios, store)\n\nChart.register(...registerables)\n\nReactDOM.render(\n \n \n {/* Asynchronously persist redux stores and show `SplashScreen` while it's loading. */}\n Loading...}>\n \n \n \n ,\n document.getElementById('root')\n)\n"],"sourceRoot":""}