{"version":3,"sources":["webpack:///./src/@core/utils/filter.js","webpack:///./src/@core/utils/validations/validators.js","webpack:///./src/@core/utils/validations/validations.js","webpack:///./src/@core/utils/utils.js"],"names":["title","value","replacer","arguments","length","undefined","str","toString","arr","split","capitalizedArray","forEach","word","capitalized","charAt","toUpperCase","slice","push","join","avatarText","nameArray","map","validatorPositive","validatorPassword","password","regExp","validPassword","test","validatorCreditCard","creditnum","cRegExp","validCreditCard","validatorUrlValidator","val","re","required","extend","rule_required","email","rule_email","alphaNum","rule_min","rule_confirmed","rule_regex","rule_between","rule_alpha","rule_integer","rule_digits","rule_alpha_dash","rule_alpha_num","rule_length","validate","message","localize","en","messages","names","fields","min","ar","tr","isObject","obj","_typeof","isToday","date","today","Date","getDate","getMonth","getFullYear","useRouter","vm","getCurrentInstance","proxy","state","reactive","route","$route","watch","r","_objectSpread","toRefs","router","$router"],"mappings":"oVAKaA,EAAQ,SAACC,GAA0B,IAAnBC,EAAQC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IACtC,IAAKF,EAAO,MAAO,GACnB,IAAMK,EAAML,EAAMM,WAEZC,EAAMF,EAAIG,MAAMP,GAChBQ,EAAmB,GAKzB,OAJAF,EAAIG,SAAQ,SAACC,GACX,IAAMC,EAAcD,EAAKE,OAAO,GAAGC,cAAgBH,EAAKI,MAAM,GAC9DN,EAAiBO,KAAKJ,MAEjBH,EAAiBQ,KAAK,MAGlBC,EAAa,SAAClB,GACzB,IAAKA,EAAO,MAAO,GACnB,IAAMmB,EAAYnB,EAAMQ,MAAM,KAC9B,OAAOW,EAAUC,KAAI,SAACT,GAAI,OAAKA,EAAKE,OAAO,GAAGC,iBAAeG,KAAK,M,0MCrBvDI,G,oBAAoB,SAACrB,GAChC,OAAIA,GAAS,IAMFsB,EAAoB,SAACC,GAEhC,IAAMC,EAAS,uDAETC,EAAgBD,EAAOE,KAAKH,GAClC,OAAOE,GAGIE,EAAsB,SAACC,GAElC,IAAMC,EAAU,uBAEVC,EAAkBD,EAAQH,KAAKE,GACrC,OAAOE,GAGIC,EAAwB,SAACC,GACpC,QAAY5B,IAAR4B,GAA6B,OAARA,GAA+B,IAAfA,EAAI7B,OAC3C,OAAO,EAGT,IAAM8B,EACJ,4EAEF,OAAOA,EAAGP,KAAKM,ICAJE,EAAWC,eAAO,WAAYC,QAE9BC,EAAQF,eAAO,QAASG,QAkBxBC,GAhBMJ,eAAO,MAAOK,QAERL,eAAO,YAAaM,QAExBN,eAAO,QAASO,QAEdP,eAAO,UAAWQ,QAEpBR,eAAO,QAASS,QAEdT,eAAO,UAAWU,QAEnBV,eAAO,SAAUW,QAEdX,eAAO,aAAcY,QAEtBZ,eAAO,YAAaa,SAEtBb,eAAO,SAAUc,QAEfd,eAAO,WAAY,CACzCe,SAAU7B,EACV8B,QAAS,kCAGWhB,eAAO,cAAe,CAC1Ce,SAAUvB,EACVwB,QAAS,iCAGahB,eAAO,WAAY,CACzCe,SAAU5B,EACV6B,QACE,2GAGehB,eAAO,MAAO,CAC/Be,SAAUnB,EACVoB,QAAS,mBAIXC,eAAS,CACPC,GAAI,CACFC,SAAUD,EAAGC,SACbC,MAAO,CACLlB,MAAO,QACPd,SAAU,YAEZiC,OAAQ,CACNjC,SAAU,CACRkC,IAAK,qDAIXC,GAAI,CACFJ,SAAUI,EAAGJ,SACbC,MAAO,CACLlB,MAAO,oBACPd,SAAU,aAEZiC,OAAQ,CACNjC,SAAU,CACRkC,IAAK,uCAIXE,GAAI,CACFL,SAAUK,EAAGL,SACbC,MAAO,CACLlB,MAAO,QACPd,SAAU,SAEZiC,OAAQ,CACNjC,SAAU,CACRkC,IAAK,gE,4LCrGAG,EAAW,SAACC,GAAG,MAAoB,WAAfC,eAAOD,IAA4B,OAARA,GAE/CE,EAAU,SAACC,GACtB,IAAMC,EAAQ,IAAIC,KAClB,OAEEF,EAAKG,YAAcF,EAAME,WACzBH,EAAKI,aAAeH,EAAMG,YAC1BJ,EAAKK,gBAAkBJ,EAAMI,eAkBpBC,EAAY,WACvB,IAAMC,EAAKC,kCAAqBC,MAC1BC,EAAQC,sBAAS,CACrBC,MAAOL,EAAGM,SAUZ,OAPAC,oBACE,kBAAMP,EAAGM,UACT,SAACE,GACCL,EAAME,MAAQG,KAIlBC,8BAAA,GAAYC,oBAAOP,IAAM,IAAEQ,OAAQX,EAAGY","file":"js/chunk-2057b366.ccae0b7c.js","sourcesContent":["import { isToday } from \"./utils\";\n\nexport const kFormatter = (num) =>\n num > 999 ? `${(num / 1000).toFixed(1)}k` : num;\n\nexport const title = (value, replacer = \" \") => {\n if (!value) return \"\";\n const str = value.toString();\n\n const arr = str.split(replacer);\n const capitalizedArray = [];\n arr.forEach((word) => {\n const capitalized = word.charAt(0).toUpperCase() + word.slice(1);\n capitalizedArray.push(capitalized);\n });\n return capitalizedArray.join(\" \");\n};\n\nexport const avatarText = (value) => {\n if (!value) return \"\";\n const nameArray = value.split(\" \");\n return nameArray.map((word) => word.charAt(0).toUpperCase()).join(\"\");\n};\n\n/**\n * Format and return date in Humanize format\n * Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\n * Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\n * @param {String} value date to format\n * @param {Object} formatting Intl object to format with\n */\nexport const formatDate = (\n value,\n formatting = { month: \"short\", day: \"numeric\", year: \"numeric\" }\n) => {\n if (!value) return value;\n return new Intl.DateTimeFormat(\"en-US\", formatting).format(new Date(value));\n};\n\n/**\n * Return short human friendly month representation of date\n * Can also convert date to only time if date is of today (Better UX)\n * @param {String} value date to format\n * @param {Boolean} toTimeForCurrentDay Shall convert to time if day is today/current\n */\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\n const date = new Date(value);\n let formatting = { month: \"short\", day: \"numeric\" };\n\n if (toTimeForCurrentDay && isToday(date)) {\n formatting = { hour: \"numeric\", minute: \"numeric\" };\n }\n\n return new Intl.DateTimeFormat(\"en-US\", formatting).format(new Date(value));\n};\n\n// Strip all the tags from markup and return plain text\nexport const filterTags = (value) => value.replace(/<\\/?[^>]+(>|$)/g, \"\");\n","export const validatorPositive = (value) => {\n if (value >= 0) {\n return true;\n }\n return false;\n};\n\nexport const validatorPassword = (password) => {\n /* eslint-disable no-useless-escape */\n const regExp = /(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*()]).{8,}/;\n /* eslint-enable no-useless-escape */\n const validPassword = regExp.test(password);\n return validPassword;\n};\n\nexport const validatorCreditCard = (creditnum) => {\n /* eslint-disable no-useless-escape */\n const cRegExp = /^(?:3[47][0-9]{13})$/;\n /* eslint-enable no-useless-escape */\n const validCreditCard = cRegExp.test(creditnum);\n return validCreditCard;\n};\n\nexport const validatorUrlValidator = (val) => {\n if (val === undefined || val === null || val.length === 0) {\n return true;\n }\n /* eslint-disable no-useless-escape */\n const re =\n /^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}/;\n /* eslint-enable no-useless-escape */\n return re.test(val);\n};\n","import { extend, localize } from \"vee-validate\";\nimport {\n required as rule_required,\n email as rule_email,\n min as rule_min,\n confirmed as rule_confirmed,\n regex as rule_regex,\n between as rule_between,\n alpha as rule_alpha,\n integer as rule_integer,\n digits as rule_digits,\n alpha_dash as rule_alpha_dash,\n alpha_num as rule_alpha_num,\n length as rule_length,\n} from \"vee-validate/dist/rules\";\nimport ar from \"vee-validate/dist/locale/ar.json\";\nimport en from \"vee-validate/dist/locale/en.json\";\nimport tr from \"vee-validate/dist/locale/tr.json\";\n\n// eslint-disable-next-line object-curly-newline\nimport {\n validatorPositive,\n validatorUrlValidator,\n validatorPassword,\n validatorCreditCard,\n} from \"./validators\";\n\n// ////////////////////////////////////////////////////////\n// General\n// ////////////////////////////////////////////////////////\n\nexport const required = extend(\"required\", rule_required);\n\nexport const email = extend(\"email\", rule_email);\n\nexport const min = extend(\"min\", rule_min);\n\nexport const confirmed = extend(\"confirmed\", rule_confirmed);\n\nexport const regex = extend(\"regex\", rule_regex);\n\nexport const between = extend(\"between\", rule_between);\n\nexport const alpha = extend(\"alpha\", rule_alpha);\n\nexport const integer = extend(\"integer\", rule_integer);\n\nexport const digits = extend(\"digits\", rule_digits);\n\nexport const alphaDash = extend(\"alpha-dash\", rule_alpha_dash);\n\nexport const alphaNum = extend(\"alpha-num\", rule_alpha_num);\n\nexport const length = extend(\"length\", rule_length);\n\nexport const positive = extend(\"positive\", {\n validate: validatorPositive,\n message: \"Please enter positive number!\",\n});\n\nexport const credit = extend(\"credit-card\", {\n validate: validatorCreditCard,\n message: \"It is not valid credit card!\",\n});\n\nexport const password = extend(\"password\", {\n validate: validatorPassword,\n message:\n \"Your {_field_} must contain at least one uppercase, one lowercase, one special character and one digit\",\n});\n\nexport const url = extend(\"url\", {\n validate: validatorUrlValidator,\n message: \"URL is invalid\",\n});\n\n// Install English and Arabic localizations.\nlocalize({\n en: {\n messages: en.messages,\n names: {\n email: \"Email\",\n password: \"Password\",\n },\n fields: {\n password: {\n min: \"{_field_} is too short, you want to get hacked?\",\n },\n },\n },\n ar: {\n messages: ar.messages,\n names: {\n email: \"البريد الإلكتروني\",\n password: \"كلمة السر\",\n },\n fields: {\n password: {\n min: \"كلمة السر قصيرة جداً سيتم اختراقك\",\n },\n },\n },\n tr: {\n messages: tr.messages,\n names: {\n email: \"Email\",\n password: \"Şifre\",\n },\n fields: {\n password: {\n min: \"{_field_} çok kısa, lütfen daha uzun bir şifre giriniz.\",\n },\n },\n },\n});\n// ////////////////////////////////////////////////////////\n// NOTE:\n// Quasar validation for reference only\n// Remove this note once development is finished and make sure to\n// to convert all of them in veevalidate version\n// ////////////////////////////////////////////////////////\n\n// export const required = (val) => {\n// return (val && val.length > 0) || '*Field is required'\n// }\n\n// export const required_obj = (obj) => {\n// if (obj === null || obj === undefined) return '*Field is required'\n// return (Object.entries(obj).length > 0 && obj.constructor === Object) || '*Field is required'\n// }\n\n// export const no_blank_spaces_arr = (arr) => {\n// return arr.every(val => (val.trim() && val.trim().length > 0)) || 'Blank Spaces are not allowed'\n// }\n\n// export const url = val => {\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// // Used\n// // https://stackoverflow.com/questions/4314741/url-regex-validation\n\n// // Other\n// // https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n// // https://www.w3resource.com/javascript-exercises/javascript-regexp-exercise-9.php\n// // https://www.geeksforgeeks.org/how-to-validate-url-using-regular-expression-in-javascript/\n\n// /* eslint-disable no-useless-escape */\n// const re = /^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}/\n// /* eslint-enable no-useless-escape */\n// return re.test(val) || 'URL is invalid'\n// }\n\n// export const date = val => {\n\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// // https://github.com/quasarframework/quasar/blob/dev/ui/src/utils/patterns.js\n// return /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(val) || 'Date is invalid'\n// }\n\n// export const max = (val, max) => {\n\n// // If blank return\n// if (val === undefined || val === null) return true\n\n// return val.length <= max || `More than ${max} characters are not allowed`\n// }\n\n// export const max_arr = (val, max) => {\n// return val.length <= max || `More than ${max} values are not allowed`\n// }\n\n// export const min = (val, min) => {\n\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// return val.length >= min || `Minimum ${min} characters are required`\n// }\n\n// export const num_range = (val, min, max) => {\n\n// // If blank return\n// if (val === undefined || val === null || val.length === 0) return true\n\n// const msg = 'Value is invalid'\n// if (min === null) return val <= max || msg\n// else if (max === null) return val >= min || msg\n// else return (val >= min && val <= max) || msg\n// }\n","import router from \"@/router\";\n// eslint-disable-next-line object-curly-newline\nimport {\n reactive,\n getCurrentInstance,\n watch,\n toRefs,\n} from \"@vue/composition-api\";\n\nexport const isObject = (obj) => typeof obj === \"object\" && obj !== null;\n\nexport const isToday = (date) => {\n const today = new Date();\n return (\n /* eslint-disable operator-linebreak */\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n /* eslint-enable */\n );\n};\n\nconst getRandomFromArray = (array) =>\n array[Math.floor(Math.random() * array.length)];\n\n// ? Light and Dark variant is not included\n// prettier-ignore\nexport const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])\n\nexport const isDynamicRouteActive = (route) => {\n const { route: resolvedRoute } = router.resolve(route);\n return resolvedRoute.path === router.currentRoute.path;\n};\n\n// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1\nexport const useRouter = () => {\n const vm = getCurrentInstance().proxy;\n const state = reactive({\n route: vm.$route,\n });\n\n watch(\n () => vm.$route,\n (r) => {\n state.route = r;\n }\n );\n\n return { ...toRefs(state), router: vm.$router };\n};\n\n/**\n * This is just enhancement over Object.extend [Gives deep extend]\n * @param {target} a Object which contains values to be overridden\n * @param {source} b Object which contains values to override\n */\n// export const objectExtend = (a, b) => {\n// // Don't touch 'null' or 'undefined' objects.\n// if (a == null || b == null) {\n// return a\n// }\n\n// Object.keys(b).forEach(key => {\n// if (Object.prototype.toString.call(b[key]) === '[object Object]') {\n// if (Object.prototype.toString.call(a[key]) !== '[object Object]') {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = objectExtend(a[key], b[key])\n// }\n// } else {\n// // eslint-disable-next-line no-param-reassign\n// a[key] = b[key]\n// }\n// })\n\n// return a\n// }\n"],"sourceRoot":""}