{"version":3,"sources":["webpack:///./src/assets/js/alga.js","webpack:///./src/views/util/PaginationUtill.ts"],"names":["isNumber","numArg","isNaN","Number","isPositive","Error","Math","sign","isNegative","isString","param","_typeof","obj","Symbol","iterator","constructor","prototype","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","Array","isArray","_arrayLikeToArray","iter","Object","from","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","value","length","err","o","minLen","n","toString","call","slice","name","test","len","arr2","TypeError","_createForOfIteratorHelper","allowArrayLike","it","F","s","e","f","normalCompletion","didErr","step","return","isObject","objArg","arg","isSuperset","oriArr","subArr","_step","set","Set","_iterator","sub","has","insert","fromArr","at","arguments","position","index","_len","restVal","_key","newArray","insertFirst","apply","concat","insertLast","insertBefore","insertAfter","_len2","_key2","fromArray","unshift","_len3","_key3","atIndex","_len4","_key4","indexBefore","splice","_len5","_key5","indexAfter","indexArr","options","key","indexedArray","resultNum","findIndex","_Object$entries","entries","_Object$entries$_i","val","toIndex","typeStr","resIndex","keys","map","item","randomIndex","fromIndexArr","ranInd","floor","random","replace","newObj","_i3","_obj2","prop","_i4","_Object$entries2","_Object$entries2$_i","update","setObj","whereArg","indexNum","ind","resMap","updateBy","whereArr","where","destroy","whereOpt","oriArray","_loop","opt","_whereOpt","indx","filter","selProp","newObject","sel","_step2","_iterator2","toggle","toggleFrom","toggleArr","includes","el","flatten","nestArr","flattenArray","flattenOptions","id","parent","children","parentArray","nestedArray","forEach","childrenArray","childArr","parentObj","nested","flatArr","nestedOptions","flattenArr","createNewObject","itemObj","childArray","filteredArray","unique","byProp","newSet","oriItem","add","search","searchStr","searchString","_searchStr","filterFromArr","toLowerCase","_i2","searchBy","queryArr","propArr","_loop2","query","_Array$from","indexOf","removeBy","fromObj","propVal","filterObj","ftrKey","ftrVal","isFunction","sort","sortStr","console","log","JSON","stringify","a","b","propA","propB","propRes","sortBy","propStr","sortWith","compareFunc","res","paginate","pageActive","limitPerPage","newArr","startPaginate","endPaginate","pages","divideLength","pageNumber","ceil","pageInfo","start","to","end","of","pagination","totalPages","positionOfEllipsis","maxPages","minPages","pageAddition","pageSubtraction","filterNegative","num","filterMax","sum","byObj","sumNum","numArray","reduce","accumulator","current","acc","union","restArg","flat","countDuplication","arrArg","setItem","tempArr","filterItem","arrItem","countBy","arrParam","callbackParam","intersection","difference","interArr","asymmetricDifference","temp","_restArg","complement","restArr","shift","without","transpose","_restArr","itemArr","zip","firstArr","varArr","_oriArr","newMap","Map","fromEntries","unzip","objKeys","_objKeys","values","range","startNum","endNum","stepNum","loopNum","result","move","indexes","removeCount","switched","fromIndex","withIndex","transfer","toArr","byIndex","varFromArr","varToArr","byInd","compact","argArr","chunk","sizeArg","stepArr","shuffle","sliceArr","group","callback","calculate","newProp","callBack","array","freeze","__proto__","select","hidden","filtered","sorted","show","calc","showPagination","allPages","currentPage","getElecColumn","sortable","getGasColumn","assetAdditionElectrcity","assetAdditionGas","assetMeterType","LastActualMeterReadElec","LastActualMeterReadGas","LastBilldateElec","LastBillDateGas","AccuralReportElec","AccuralReportgas","MeterTypeReport","PositiondataTableColNames","PositiondataTableGasColNames"],"mappings":"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","file":"js/chunk-2d0e9ae9.c8103b05.js","sourcesContent":["var random = function random() {\n var max = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 255;\n var maxNum = Number(max) + 1;\n return Math.floor(Math.random() * maxNum);\n};\n\nvar int = /*#__PURE__*/Object.freeze({\n __proto__: null,\n random: random\n});\n\nvar random$1 = function random() {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n\n if (typeof size !== 'number' && size <= 0) {\n throw new Error('You have to add a number at least 1');\n }\n\n var outputNum = '';\n var basicNum = '0123456789';\n\n for (var i = 0; i < size; i++) {\n outputNum += basicNum.charAt(Math.floor(Math.random() * basicNum.length));\n }\n\n return outputNum;\n};\n\nvar loop = function loop(fromNum, toNum) {\n if (typeof fromNum !== 'number' & fromNum <= -1) {\n throw new Error('Only accept number here, start from 0');\n }\n\n if (typeof toNum !== 'number' & toNum <= 0) {\n throw new Error('Only accept number here, start from 1');\n }\n\n var arrNum = [];\n\n while (fromNum <= toNum) {\n arrNum.push(fromNum++);\n }\n\n return arrNum;\n};\n\nvar isNumber = function isNumber(numArg) {\n return !isNaN(numArg) && typeof Number(numArg) === 'number' ? true : false;\n};\nvar isPositive = function isPositive(numArg) {\n if (typeof numArg !== 'number' && typeof numArg !== 'string') {\n throw new Error('You must input only number format here');\n }\n\n return Math.sign(numArg) === 1 ? true : false;\n};\nvar isNegative = function isNegative(numArg) {\n if (typeof numArg !== 'number' && typeof numArg !== 'string') {\n throw new Error('You must input only number format here');\n }\n\n return Math.sign(numArg) === -1 ? true : false;\n};\n\nvar isString = function isString(param) {\n return typeof param === 'string' ? true : false;\n};\n\nvar calc = function calc(leftOperand, rightOperand, operator) {\n if (!isNumber(leftOperand)) {\n throw new Error('This is left operand and must be in number type');\n }\n\n if (!isNumber(rightOperand)) {\n throw new Error('This is left operand and must be in number type');\n }\n\n if (!isString(operator)) {\n throw new Error('Operator must be one of these: add, subtract, multiply, divide, reminder or exponent');\n }\n\n var calcNumber = 0;\n\n if (operator === 'add' || operator === 'addition' || operator === 'plus' || operator === '+') {\n calcNumber = Number(leftOperand) + Number(rightOperand);\n } else if (operator === 'subtract' || operator === 'subtraction' || operator === 'minus' || operator === '-') {\n calcNumber = Number(leftOperand) - Number(rightOperand);\n } else if (operator === 'multiply' || operator === 'multiplication' || operator === '×' || operator === '*') {\n calcNumber = Number(leftOperand) * Number(rightOperand);\n } else if (operator === 'divide' || operator === 'division' || operator === '÷' || operator === '/') {\n calcNumber = Number(leftOperand) / Number(rightOperand);\n } else if (operator === 'remainder' || operator === 'modulo' || operator === '%') {\n // remainder/modulo: the left operand must be greater than the right one, the right operand will be calculate first to match the number of the left operand until they the same or below the left number and the left over will be the result, otherwise the left operand as a result if lower than the right operand\n calcNumber = Number(leftOperand) % Number(rightOperand);\n } else if (operator === 'exponent' || operator === 'exponentiation' || operator === '**') {\n calcNumber = Math.pow(Number(leftOperand), Number(rightOperand));\n }\n\n return calcNumber;\n};\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = o[Symbol.iterator]();\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nvar isObject = function isObject(objArg) {\n return _typeof(objArg) === 'object' && objArg !== null && Object.prototype.toString.call(objArg) === \"[object Object]\" ? true : false;\n};\nvar isObjectValues = function isObjectValues(objArg) {\n return Object.values(objArg).filter(function (objVal) {\n return objVal !== '' && objVal !== 0 && objVal !== {} && objVal !== [];\n }).join('') ? true : false;\n};\n\nvar currency = function currency(amount) {\n var ccy = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'USD';\n var locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en-US';\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (!isNumber(amount)) {\n throw new Error('Amount must be in a number type');\n }\n\n if (!isString(ccy) && ccy.length === 3) {\n throw new Error('Currency code must have at least 3 uppercase character');\n }\n\n if (!isString(locale)) {\n throw new Error('Locale code must contain 2 languages and 2 country code and separated by dash (-)');\n }\n\n if (!isObject(options)) {\n throw new Error('Currency options must be in object type');\n }\n\n return new Intl.NumberFormat(locale, _objectSpread2({\n style: 'currency',\n currency: ccy.toUpperCase()\n }, options)).format(amount);\n};\n\nvar number = /*#__PURE__*/Object.freeze({\n __proto__: null,\n random: random$1,\n loop: loop,\n isNumber: isNumber,\n isPositive: isPositive,\n isNegative: isNegative,\n calc: calc,\n currency: currency\n});\n\nvar random$2 = function random() {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 11;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'long';\n var output = '';\n var characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_~!@#$%^&*()+={}[]|:;<>,./?';\n\n if (type === 'short' || type === 'alphadash') {\n characters = characters.slice(0, 64);\n } else if (type === 'narrow' || type === 'alphanumeric') {\n characters = characters.slice(0, 62);\n } else if (type === 'alpha') {\n characters = characters.slice(10, 62);\n } else if (type === 'hex') {\n characters = characters.slice(0, 16);\n } else if (type === 'number' || type === 'numeric') {\n characters = characters.slice(0, 10);\n }\n\n for (var i = 0; i < size; i++) {\n output += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n\n return output;\n};\n\nvar char = /*#__PURE__*/Object.freeze({\n __proto__: null,\n random: random$2\n});\n\nvar split = function split(str) {\n var splitString = function splitString(start) {\n var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var strArray = [];\n\n if (typeof str === 'string') {\n if (start >= 1) {\n strArray.push(str.slice(0, start));\n }\n\n if (end !== null) {\n strArray.push(str.slice(start, end));\n strArray.push(str.slice(end));\n } else {\n strArray.push(str.slice(start));\n }\n }\n\n return strArray;\n };\n\n return splitString;\n};\n\nvar capitalize = function capitalize(str) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'single';\n if (typeof str !== 'string') return;\n var capStr = str;\n\n if (opt === 'multiple') {\n capStr = capStr.toLowerCase().replace(/\\w\\S*/g, function (w) {\n return w.replace(/^\\w/, function (c) {\n return c.toUpperCase();\n });\n });\n } else {\n capStr = capStr.trimStart().replace(/^\\w/, function (c) {\n return c.toUpperCase();\n });\n }\n\n return capStr;\n};\n\nvar includes = function includes(valueStr, searchStr) {\n var position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n return valueStr.indexOf(searchStr, position) !== -1 ? true : false;\n};\n\nvar string = /*#__PURE__*/Object.freeze({\n __proto__: null,\n split: split,\n capitalize: capitalize,\n includes: includes,\n isString: isString\n});\n\nvar isArray = function isArray(arg) {\n return _typeof(arg) === 'object' && arg !== null && Array.isArray(arg) ? true : false;\n};\nvar isSuperset = function isSuperset(oriArr, subArr) {\n if (!isArray(oriArr) && !isArray(subArr)) {\n throw new Error('The both of arguments must be in arrays');\n }\n\n var set = new Set(oriArr);\n\n var _iterator = _createForOfIteratorHelper(subArr),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var sub = _step.value;\n\n if (!set.has(sub)) {\n return false;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return true;\n};\n\nvar insert = function insert(fromArr) {\n var at = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n position: null,\n index: null\n };\n\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, only array accept here');\n }\n\n if (!isObject(at)) {\n throw new Error('On the second argument, only object with 2 properties (position and index property) accepted');\n }\n\n for (var _len = arguments.length, restVal = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restVal[_key - 2] = arguments[_key];\n }\n\n if (restVal.length < 1) {\n throw new Error('On the third or the next arguments, you have to enter at least one argument');\n }\n\n var newArray = [];\n\n if (at.position === 'first') {\n newArray = insertFirst.apply(void 0, [fromArr].concat(restVal));\n } else if (at.position === 'last') {\n newArray = insertLast.apply(void 0, [fromArr].concat(restVal));\n } else if (at.position === 'before') {\n newArray = insertBefore.apply(void 0, [fromArr, at.index].concat(restVal));\n } else if (at.position === 'after') {\n newArray = insertAfter.apply(void 0, [fromArr, at.index].concat(restVal));\n }\n\n return newArray;\n};\nvar insertFirst = function insertFirst(fromArr) {\n if (!isArray(fromArr)) {\n throw new Error('On the first argument must be in array type');\n }\n\n for (var _len2 = arguments.length, restVal = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n restVal[_key2 - 1] = arguments[_key2];\n }\n\n if (restVal.length < 1) {\n throw new Error('On the next arguments, you have to provide at least one argument');\n }\n\n var fromArray = Array.from(fromArr);\n fromArray.unshift.apply(fromArray, restVal);\n return fromArray;\n};\nvar insertLast = function insertLast(fromArr) {\n if (!isArray(fromArr)) {\n throw new Error('On the first argument must be in array type');\n }\n\n for (var _len3 = arguments.length, restVal = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n restVal[_key3 - 1] = arguments[_key3];\n }\n\n if (restVal.length < 1) {\n throw new Error('On the next arguments, you have to provide at least one argument');\n }\n\n var fromArray = Array.from(fromArr);\n fromArray.push.apply(fromArray, restVal);\n return fromArray;\n};\nvar insertBefore = function insertBefore(fromArr, atIndex) {\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, here only accept array type');\n }\n\n if (!isNumber(atIndex)) {\n throw new Error('On the second argument, accept only numeric or number type');\n }\n\n for (var _len4 = arguments.length, restVal = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n restVal[_key4 - 2] = arguments[_key4];\n }\n\n if (restVal.length < 1) {\n throw new Error('On the next arguments, you have to enter at least one value');\n }\n\n var fromArray = Array.from(fromArr);\n var indexBefore = isNaN(atIndex) ? 1 : atIndex;\n fromArray.splice.apply(fromArray, [Number(indexBefore) - 1, 0].concat(restVal));\n return fromArray;\n};\nvar insertAfter = function insertAfter(fromArr, atIndex) {\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, here only accept array type');\n }\n\n if (!isNumber(atIndex)) {\n throw new Error('On the second argument, accept only numeric or number type');\n }\n\n for (var _len5 = arguments.length, restVal = new Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {\n restVal[_key5 - 2] = arguments[_key5];\n }\n\n if (restVal.length < 1) {\n throw new Error('On the next arguments, you have to enter at least one value');\n }\n\n var fromArray = Array.from(fromArr);\n var indexAfter = isNaN(atIndex) ? 0 : atIndex;\n fromArray.splice.apply(fromArray, [Number(indexAfter) + 1, 0].concat(restVal));\n return fromArray;\n};\n\nvar index = function index(indexArr) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n key: 'id',\n value: 0\n };\n\n if (!isArray(indexArr)) {\n throw new Error('You must enter the first argument in array only');\n }\n\n var indexedArray = Array.from(indexArr);\n var resultNum = -1;\n\n if ('key' in options && 'value' in options) {\n resultNum = indexedArray.length >= 1 ? indexedArray.findIndex(function (obj) {\n return obj[options.key] === options.value;\n }) : -1;\n } else {\n if (indexedArray.length >= 1) {\n resultNum = indexedArray.findIndex(function (obj) {\n for (var _i = 0, _Object$entries = Object.entries(options); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n val = _Object$entries$_i[1];\n\n if (key in obj && obj[key] === val) {\n return true;\n }\n }\n });\n }\n }\n\n return resultNum;\n};\nvar toIndex = function toIndex(fromArr) {\n var typeStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'dense';\n\n if (!isArray(fromArr)) {\n throw new Error('You must enter the first argument in array only');\n }\n\n var resIndex = [];\n\n if (typeStr === 'sparse') {\n resIndex = Object.keys(fromArr).map(function (item) {\n return Number(item);\n });\n } else {\n resIndex = _toConsumableArray(fromArr.keys());\n }\n\n return resIndex;\n};\nvar randomIndex = function randomIndex(fromIndexArr) {\n if (!isArray(fromIndexArr)) {\n throw new Error('You must enter the argument in array only');\n }\n\n var indexArr = toIndex(fromIndexArr);\n var ranInd = Number(indexArr[Math.floor(Math.random() * indexArr.length)]);\n return ranInd;\n};\n\nvar merge = function merge() {\n for (var _len = arguments.length, obj = new Array(_len), _key = 0; _key < _len; _key++) {\n obj[_key] = arguments[_key];\n }\n\n if (!obj) return;\n var newObj = {};\n var newMap = new Map();\n\n for (var _i = 0, _obj = obj; _i < _obj.length; _i++) {\n var prop = _obj[_i];\n\n for (var _i2 = 0, _Object$entries = Object.entries(prop); _i2 < _Object$entries.length; _i2++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),\n key = _Object$entries$_i[0],\n val = _Object$entries$_i[1];\n\n if (!newMap.has(key)) {\n newMap.set(key, val);\n newObj[key] = val;\n }\n }\n }\n\n return newObj;\n};\n\nvar replace = function replace() {\n for (var _len2 = arguments.length, obj = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n obj[_key2] = arguments[_key2];\n }\n\n if (!obj) return;\n var newObj = {};\n\n for (var _i3 = 0, _obj2 = obj; _i3 < _obj2.length; _i3++) {\n var prop = _obj2[_i3];\n\n for (var _i4 = 0, _Object$entries2 = Object.entries(prop); _i4 < _Object$entries2.length; _i4++) {\n var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i4], 2),\n key = _Object$entries2$_i[0],\n val = _Object$entries2$_i[1];\n\n newObj[key] = val;\n }\n }\n\n return newObj;\n};\n\nvar update = function update(fromArr, setObj, whereArg) {\n if (!isArray(fromArr)) {\n throw new Error('You have to enter array only on the first argument');\n }\n\n if (!isObject(setObj)) {\n throw new Error('You must enter object only here on the second argument');\n }\n\n if (!isObject(whereArg) && !isNumber(whereArg)) {\n throw new Error('You must enter object only on the second argument');\n }\n\n var fromArray = Array.from(fromArr);\n var newArray = [];\n var indexNum = isObject(whereArg) ? index(fromArray, whereArg) : Number(whereArg);\n newArray = fromArray.map(function (obj, ind) {\n var resMap = obj;\n\n if (ind === indexNum) {\n resMap = replace(obj, setObj);\n }\n\n return resMap;\n });\n return newArray;\n};\nvar updateBy = function updateBy(fromArr, setObj, whereArr) {\n if (!isArray(fromArr)) {\n throw new Error('You have to enter array only on the first argument');\n }\n\n if (!isObject(setObj)) {\n throw new Error('You must enter object only here on the second argument');\n }\n\n if (!isArray(whereArr)) {\n throw new Error('You must enter array of objects or numbers on the second argument');\n }\n\n var fromArray = Array.from(fromArr);\n var newArray = [];\n newArray = fromArray.map(function (obj, ind) {\n var resMap = obj;\n\n var _iterator = _createForOfIteratorHelper(whereArr),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var where = _step.value;\n var indexNum = isObject(where) ? index(fromArray, where) : Number(where);\n\n if (ind === indexNum) {\n resMap = replace(obj, setObj);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return resMap;\n });\n return newArray;\n};\n\nvar destroy = function destroy(oriArr) {\n if (!isArray(oriArr)) {\n throw new Error('Please provide array that you want to remove its element');\n }\n\n for (var _len = arguments.length, whereOpt = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n whereOpt[_key - 1] = arguments[_key];\n }\n\n if (whereOpt.length < 1) {\n throw new Error('On the last of argument, you have to enter at least one argument');\n }\n\n var oriArray = Array.from(oriArr);\n var newArray = [];\n\n var _loop = function _loop() {\n var opt = _whereOpt[_i];\n\n if (typeof opt === 'string' && opt === 'first') {\n oriArray = oriArray.map(function (obj, ind) {\n if (ind === 0) {\n return null;\n } else {\n return obj;\n }\n });\n newArray = oriArray;\n } else if (typeof opt === 'string' && opt === 'last') {\n oriArray = oriArray.map(function (obj, ind) {\n if (ind === oriArray.length - 1) {\n return null;\n } else {\n return obj;\n }\n });\n newArray = oriArray;\n } else if (typeof opt === 'number') {\n oriArray = oriArray.map(function (obj, ind) {\n if (ind === opt) {\n return null;\n } else {\n return obj;\n }\n });\n newArray = oriArray;\n } else if (_typeof(opt) === 'object' && opt !== null) {\n var indx = index(oriArray, opt);\n oriArray = oriArray.map(function (obj, ind) {\n if (ind === indx) {\n return null;\n } else {\n return obj;\n }\n });\n newArray = oriArray;\n }\n };\n\n for (var _i = 0, _whereOpt = whereOpt; _i < _whereOpt.length; _i++) {\n _loop();\n }\n\n return newArray.filter(function (obj) {\n return obj !== null;\n });\n};\n\nvar select = function select(fromArr) {\n for (var _len = arguments.length, selProp = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n selProp[_key - 1] = arguments[_key];\n }\n\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, you have to provide array only');\n }\n\n if (selProp.length < 1) {\n throw new Error('On the second argument, you must enter at least one value');\n }\n\n var newArray = Array.from(fromArr);\n return newArray.map(function (item) {\n var newObject = {};\n\n var _iterator = _createForOfIteratorHelper(selProp),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var sel = _step.value;\n\n if (sel in item) {\n newObject[sel] = item[sel];\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return newObject;\n });\n};\nvar hidden = function hidden(fromArr) {\n for (var _len2 = arguments.length, selProp = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n selProp[_key2 - 1] = arguments[_key2];\n }\n\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, you have to provide array only');\n }\n\n if (selProp.length < 1) {\n throw new Error('On the second argument, you must enter at least one value');\n }\n\n var newArray = Array.from(fromArr);\n return newArray.map(function (item) {\n var newObject = item;\n\n var _iterator2 = _createForOfIteratorHelper(selProp),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var sel = _step2.value;\n\n if (sel in item) {\n delete newObject[sel];\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return newObject;\n });\n};\n\nvar toggle = function toggle(val) {\n var toggleFrom = function toggleFrom(arr) {\n var toggleArr = Array.from(arr);\n\n if (toggleArr.includes(val)) {\n var index = toggleArr.findIndex(function (el) {\n return el === val;\n });\n toggleArr.splice(index, 1);\n } else {\n toggleArr.push(val);\n }\n\n return toggleArr;\n };\n\n return toggleFrom;\n};\n\nvar flatten = function flatten(nestArr) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var flattenArray = [];\n var flattenOptions = {};\n flattenOptions.id = options.id || 'id';\n flattenOptions.parent = options.parent || 'parent';\n flattenOptions.children = options.children || 'children';\n\n var parentArray = function parentArray() {\n var nestedArray = Array.from(nestArr);\n nestedArray.forEach(function (item) {\n if (_typeof(item) === 'object' && item !== null) {\n var newObject = item;\n newObject[flattenOptions.parent] = '0';\n\n if (_typeof(newObject[flattenOptions.children]) === 'object' && Array.isArray(newObject[flattenOptions.children])) {\n childrenArray(newObject[flattenOptions.children], item);\n delete newObject[flattenOptions.children];\n }\n\n flattenArray.push(newObject);\n }\n });\n };\n\n var childrenArray = function childrenArray(childArr, parentObj) {\n if (childArr.length >= 1) {\n var nestedArray = Array.from(childArr);\n nestedArray.forEach(function (item) {\n if (_typeof(item) === 'object' && item !== null) {\n var newObject = item;\n newObject[flattenOptions.parent] = parentObj[flattenOptions.id];\n\n if (_typeof(newObject[flattenOptions.children]) === 'object' && Array.isArray(newObject[flattenOptions.children])) {\n childrenArray(newObject[flattenOptions.children], item);\n delete newObject[flattenOptions.children];\n }\n\n flattenArray.push(newObject);\n }\n });\n }\n };\n\n parentArray();\n return flattenArray;\n};\n\nvar nested = function nested(flatArr) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var nestedArray = [];\n var flattenArray = Array.from(flatArr);\n var nestedOptions = {};\n nestedOptions.id = options.id || 'id';\n nestedOptions.parent = options.parent || 'parent';\n nestedOptions.children = options.children || 'children';\n\n var parentArray = function parentArray(flattenArr) {\n flattenArr.forEach(function (item) {\n if (_typeof(item) === 'object' && item !== null) {\n var newObject = null;\n\n if (typeof item[nestedOptions.parent] === 'string' && item[nestedOptions.parent] === '0') {\n newObject = createNewObject(item);\n } else if (typeof item[nestedOptions.parent] === 'number' && item[nestedOptions.parent] === 0) {\n newObject = createNewObject(item);\n }\n\n if (newObject !== null) {\n nestedArray.push(newObject);\n }\n }\n });\n };\n\n var createNewObject = function createNewObject(itemObj) {\n var newObject = itemObj;\n\n if (itemObj[nestedOptions.children] === undefined || itemObj[nestedOptions.children] === null) {\n newObject[nestedOptions.children] = childrenArray(itemObj[nestedOptions.id]);\n\n if (newObject[nestedOptions.children].length <= 0) {\n delete newObject[nestedOptions.children];\n }\n }\n\n delete newObject[nestedOptions.parent];\n return newObject;\n };\n\n var childrenArray = function childrenArray(parent) {\n var childArray = [];\n\n if (filteredArray(parent).length >= 1) {\n filteredArray(parent).forEach(function (item) {\n childArray.push(createNewObject(item));\n });\n }\n\n return childArray;\n };\n\n var filteredArray = function filteredArray(parent) {\n return flattenArray.filter(function (item) {\n return item.parent === parent;\n });\n };\n\n parentArray(flattenArray);\n return nestedArray;\n};\n\nvar unique = function unique(fromArr) {\n var byProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n if (!isArray(fromArr)) {\n throw new Error('');\n }\n\n var fromArray = Array.from(fromArr);\n var newArray = [];\n\n if (typeof byProp === 'string') {\n var newSet = new Set();\n\n var _iterator = _createForOfIteratorHelper(fromArray),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var oriItem = _step.value;\n\n if (!newSet.has(oriItem[byProp])) {\n newSet.add(oriItem[byProp]);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n newArray = _toConsumableArray(newSet);\n } else {\n newArray = Array.from(new Set(fromArray));\n }\n\n return newArray;\n};\n\nvar search = function search(fromArr) {\n if (!isArray) {\n throw new Error('The first argument must be in array');\n }\n\n for (var _len = arguments.length, searchStr = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n searchStr[_key - 1] = arguments[_key];\n }\n\n if (searchStr.length < 1) {\n throw new Error('On the next arguments, you must provide at least one argument in either string or number');\n }\n\n var filteredArray = [];\n\n var _loop = function _loop() {\n var searchString = _searchStr[_i];\n var filterFromArr = Array.from(fromArr).filter(function (obj) {\n if (isNumber(obj) && Number(obj) === Number(searchString)) {\n return true;\n } else if (isString(obj) && obj.toLowerCase().includes(searchString.toLowerCase())) {\n return true;\n } else if (isObject(obj)) {\n for (var _i2 = 0, _Object$entries = Object.entries(obj); _i2 < _Object$entries.length; _i2++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),\n key = _Object$entries$_i[0],\n val = _Object$entries$_i[1];\n\n if (isNumber(obj[key]) && Number(val) === Number(searchString)) {\n return true;\n } else if (isString(obj[key]) && val.toLowerCase().includes(searchString.toLowerCase())) {\n return true;\n }\n }\n }\n\n return false;\n });\n filteredArray = unique(filteredArray.concat(filterFromArr));\n };\n\n for (var _i = 0, _searchStr = searchStr; _i < _searchStr.length; _i++) {\n _loop();\n }\n\n return filteredArray;\n};\nvar searchBy = function searchBy(fromArr, queryArr, propArr) {\n if (!isArray(fromArr)) {\n throw new Error('The first argument must be in array of objects and it is needed in order to be searched');\n }\n\n if (!isArray(queryArr) && queryArr.length < 1) {\n throw new Error('The second argument must have at least one argument either in a string or in a number');\n }\n\n if (!isArray(propArr) && propArr.length < 1) {\n throw new Error('The last argument required at least one argument either in a string or in a number');\n }\n\n var filteredArray = [];\n\n var _iterator = _createForOfIteratorHelper(queryArr),\n _step;\n\n try {\n var _loop2 = function _loop2() {\n var query = _step.value;\n var filterFromArr = Array.from(fromArr).filter(function (obj) {\n for (var _i3 = 0, _Array$from = Array.from(propArr); _i3 < _Array$from.length; _i3++) {\n var val = _Array$from[_i3];\n\n if (val in obj) {\n if (isNumber(obj[val]) && Number(obj[val]) === Number(query)) {\n return true;\n } else if (isString(obj[val]) && obj[val].toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n return true;\n }\n }\n }\n\n return false;\n });\n filteredArray = unique(filteredArray.concat(filterFromArr));\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop2();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return filteredArray;\n};\n\nvar remove = function remove(fromObj) {\n if (!isObject(fromObj)) {\n throw new Error('This is object helper, you must provide the first argument in an object');\n }\n\n for (var _len = arguments.length, propKey = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n propKey[_key - 1] = arguments[_key];\n }\n\n if (propKey.length < 1) {\n throw new Error('The next arguments must be in a string and at least one argument');\n }\n\n var newObj = Object.assign({}, fromObj);\n\n for (var _i = 0, _propKey = propKey; _i < _propKey.length; _i++) {\n var key = _propKey[_i];\n\n if (key in newObj) {\n delete newObj[key];\n }\n }\n\n return newObj;\n};\n\nvar removeBy = function removeBy(fromObj) {\n if (!isObject(fromObj)) {\n throw new Error('This is object helper, you must provide the first argument in an object');\n }\n\n for (var _len2 = arguments.length, propVal = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n propVal[_key2 - 1] = arguments[_key2];\n }\n\n if (propVal.length < 1) {\n throw new Error('The next arguments must be in a string or in a number and at least one argument');\n }\n\n var newObj = {};\n var newSet = new Set(propVal);\n\n for (var _i2 = 0, _Object$entries = Object.entries(fromObj); _i2 < _Object$entries.length; _i2++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 1),\n key = _Object$entries$_i[0];\n\n if (!newSet.has(fromObj[key])) {\n newObj[key] = fromObj[key];\n }\n }\n\n return newObj;\n};\n\nvar filter = function filter(fromArr, filterObj) {\n if (!isArray(fromArr)) {\n throw new Error('The first argument must be in array of objects');\n }\n\n if (!isObject(filterObj)) {\n throw new Error('The second argument must be in object type and must have at least one property');\n }\n\n var filteredArray = Array.from(fromArr);\n\n var _loop = function _loop() {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n ftrKey = _Object$entries$_i[0],\n ftrVal = _Object$entries$_i[1];\n\n var filterFromArr = filteredArray.filter(function (obj) {\n if (ftrKey in obj) {\n if (isNumber(obj[ftrKey]) && Number(obj[ftrKey]) === Number(ftrVal)) {\n return true;\n } else if (isString(obj[ftrKey]) && obj[ftrKey].toLowerCase().includes(ftrVal.toLowerCase())) {\n return true;\n }\n }\n\n return false;\n });\n filteredArray = filterFromArr;\n };\n\n for (var _i = 0, _Object$entries = Object.entries(removeBy(filterObj, '', 0)); _i < _Object$entries.length; _i++) {\n _loop();\n }\n\n return filteredArray;\n};\n\nvar isFunction = function isFunction(param) {\n return typeof param === 'function' ? true : false;\n};\n\n\n////////////////////////////\n\n\nvar sort = function sort(fromArr) {\n var sortStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'asc';\n\n if (!isArray(fromArr)) {\n throw new Error('Only array of strings or numbers accepted');\n }\n\n if (!isString(sortStr)) {\n throw new Error('The second argument must be in a string and a value either \"\", \"asc\" or \"desc\"');\n }\n\n var newArray = Array.from(fromArr);\n console.log(\"======>>\"+JSON.stringify(sortStr));\n if (sortStr === 'asc') {\n newArray.sort(function (a, b) {\n if (isNumber(a) && isNumber(b)) {\n return Number(a) - Number(b);\n } else if (isString(a) && isString(b)) {\n var propA = a.toLowerCase();\n var propB = b.toLowerCase();\n var propRes = 0;\n\n if (propA < propB) {\n propRes = -1;\n } else if (propA > propB) {\n propRes = 1;\n }\n\n return propRes;\n }\n });\n } else if (sortStr === 'desc') {\n newArray.sort(function (a, b) {\n if (isNumber(a) && isNumber(b)) {\n return Number(b) - Number(a);\n } else if (isString(a) && isString(b)) {\n var propA = a.toLowerCase();\n var propB = b.toLowerCase();\n var propRes = 0;\n\n if (propB < propA) {\n propRes = -1;\n } else if (propB > propA) {\n propRes = 1;\n }\n\n return propRes;\n }\n });\n }\nconsole.log('==newArray=='+JSON.stringify(newArray));\n return newArray;\n};\nvar sortBy = function sortBy(fromArr, propStr) {\n var sortStr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'asc';\n\n if (!isArray(fromArr)) {\n throw new Error('Only array of objects accepted');\n }\n\n if (!isString(propStr)) {\n console.log('==='+propStr);\n\n throw new Error('The second argument must be in a string and a value must be object property key or name');\n }\n\n if (!isString(sortStr)) {\n throw new Error('The third argument must be in a string and a value either \"\", \"asc\" or \"desc\"');\n }\n\n var newArray = Array.from(fromArr);\n\n if (sortStr === 'asc') {\n newArray.sort(function (a, b) {\n // if (propStr in a && propStr in b) {\n if (isNumber(a[propStr]) && isNumber(b[propStr])) {\n return Number(b[propStr]) - Number(a[propStr]);\n } else if (isString(a[propStr]) && isString(b[propStr])) {\n newArray.sort(function(a,b){\n if (a[propStr] < b[propStr])\n return -1;\n else if (a[propStr] == b[propStr])\n return 0;\n else\n return 1;\n });\n }\n //}\n }); \n \n //}\n \n } else if (sortStr === 'desc') {\n newArray.sort(function (a, b) {\n // if (propStr in a && propStr in b) {\n if (isNumber(a[propStr]) && isNumber(b[propStr])) {\n return Number(b[propStr]) - Number(a[propStr]);\n } else if (isString(a[propStr]) && isString(b[propStr])) {\n newArray.sort(function(a,b){\n if (a[propStr] < b[propStr])\n return -1;\n else if (a[propStr] == b[propStr])\n return 0;\n else\n return 1;\n });\n }\n //}\n });\n }\n\n console.log(\"====>>>>>>>\"+JSON.stringify(newArray))\n\n return newArray;\n};\nvar sortWith = function sortWith(fromArr, compareFunc) {\n if (!isArray(fromArr)) {\n throw new Error('The first argument must be in an array type');\n }\n\n if (!isFunction(compareFunc)) {\n throw new Error('The second argument is a compare or callback function');\n }\n\n var fromArray = Array.from(fromArr);\n fromArray.sort(function (a, b) {\n var res = 0;\n\n if (Math.sign(compareFunc(a, b)) === -1) {\n res = -1;\n } else {\n res = 1;\n }\n\n return res;\n });\n return fromArray;\n};\n\nvar paginate = function paginate(fromArr) {\n var pageActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var limitPerPage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, here only accept array');\n }\n\n if (!isNumber(pageActive)) {\n throw new Error('This is the page active number, please enter number only');\n }\n\n if (!isNumber(limitPerPage)) {\n throw new Error('This is the limit of entries in one page in a number, please enter number only');\n }\n\n var newArr = Array.from(fromArr);\n var startPaginate = Number(limitPerPage) * Number(pageActive) - (Number(limitPerPage) - 1);\n var endPaginate = Number(limitPerPage) * Number(pageActive);\n return newArr.slice(startPaginate - 1, endPaginate <= newArr.length ? endPaginate : newArr.length);\n};\nvar pages = function pages(fromArr) {\n var limitPerPage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, here only accept array');\n }\n\n if (!isNumber(limitPerPage)) {\n throw new Error('This is the limit of entries in one page in a number, please enter number only');\n }\n\n var newArr = Array.from(fromArr);\n var divideLength = newArr.length / Number(limitPerPage);\n var pageNumber = Math.ceil(divideLength); //(pageNumber === Number(limitPerPage)) ? 1 : pageNumber\n\n return pageNumber;\n};\nvar pageInfo = function pageInfo(fromArr) {\n var pageActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var limitPerPage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, here only accept array');\n }\n\n if (!isNumber(pageActive)) {\n throw new Error('This is the page active number, please enter number only');\n }\n\n if (!isNumber(limitPerPage)) {\n throw new Error('This is the limit of entries in one page in a number, please enter number only');\n }\n\n var newArr = Array.from(fromArr);\n var startPaginate = Number(limitPerPage) * Number(pageActive) - (Number(limitPerPage) - 1);\n var endPaginate = Number(limitPerPage) * Number(pageActive);\n return {\n from: newArr.length >= 1 ? startPaginate : 0,\n start: newArr.length >= 1 ? startPaginate : 0,\n to: endPaginate <= newArr.length ? endPaginate : newArr.length,\n end: endPaginate <= newArr.length ? endPaginate : newArr.length,\n of: newArr.length,\n length: newArr.length\n };\n};\nvar pagination = function pagination(totalPages) {\n var pageActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var positionOfEllipsis = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (!isNumber(totalPages)) {\n throw new Error('This is the total or all pages in numbers, please enter number only');\n }\n\n if (!isNumber(pageActive)) {\n throw new Error('This is the page active number, please enter number only');\n }\n\n if (!isNumber(positionOfEllipsis)) {\n throw new Error('This is the position of ellipsis [...], please enter number only');\n }\n\n var newArray = [];\n var maxPages = Number(totalPages) < Number(pageActive) ? Number(totalPages) : Number(pageActive);\n var minPages = Number(pageActive) < 1 ? 1 : Number(pageActive);\n var pageAddition = maxPages + Number(positionOfEllipsis);\n var pageSubtraction = minPages - Number(positionOfEllipsis);\n\n if (Number(positionOfEllipsis) === 0) {\n for (var i = 1; i <= Number(totalPages); i++) {\n newArray.push(i);\n }\n } else {\n if (minPages > 1) {\n for (var _i = pageSubtraction; _i < minPages; _i++) {\n newArray.push(_i);\n }\n }\n\n for (var _i2 = maxPages; _i2 < pageAddition; _i2++) {\n newArray.push(_i2);\n }\n }\nconsole.log('newArray '+newArray);\n var filterNegative = newArray.filter(function (num) {\n return num > 0;\n });\n var filterMax = filterNegative.filter(function (num) {\n return num <= Number(totalPages);\n });\n\n /*if (pageAddition < Number(totalPages) && Number(positionOfEllipsis) !== 0) {\n filterMax.push('...');\n }\n\n if (pageSubtraction > 1 && Number(positionOfEllipsis) !== 0) {\n filterMax.unshift('...');\n }*/\nconsole.log (JSON.stringify(filterMax));\n return filterMax;\n};\n\nvar sum = function sum(fromArr) {\n var byObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n if (!isArray(fromArr)) {\n throw new Error('In the first argument, you must enter a data in array');\n }\n\n var newArray = Array.from(fromArr);\n var sumNum = 0;\n\n if (newArray.length >= 1) {\n if (typeof byObj === 'string' && byObj !== '') {\n var numArray = newArray.map(function (item) {\n if (byObj in item) {\n return Number(item[byObj]);\n } else {\n return 0;\n }\n });\n sumNum = numArray.reduce(function (accumulator, current) {\n return Number(accumulator) + Number(current);\n });\n } else {\n sumNum = newArray.reduce(function (acc, val) {\n return Number(acc) + Number(val);\n });\n }\n }\n\n return sumNum;\n};\n\n// Union of Arrays (Set Theory/Operation) in JavaScript by Tedir Ghazali\nvar union = function union() {\n for (var _len = arguments.length, restArg = new Array(_len), _key = 0; _key < _len; _key++) {\n restArg[_key] = arguments[_key];\n }\n\n return Array.from(new Set(restArg.flat()));\n};\n\nvar countDuplication = function countDuplication(arrArg) {\n if (!isArray(arrArg)) {\n throw new Error('This argument only accept array');\n }\n\n var newObj = {};\n var newSet = new Set();\n\n var _iterator = _createForOfIteratorHelper(new Set(arrArg)),\n _step;\n\n try {\n var _loop = function _loop() {\n var setItem = _step.value;\n var tempArr = Array.from(arrArg).filter(function (filterItem) {\n return filterItem === setItem;\n });\n\n if (!newSet.has(tempArr.length)) {\n newSet.add(tempArr.length);\n newObj[tempArr.length] = [];\n }\n\n tempArr.forEach(function (arrItem) {\n newObj[tempArr.length].push(arrItem);\n });\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n _loop();\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return newObj;\n};\nvar countBy = function countBy(arrParam, callbackParam) {\n if (!isArray(arrParam)) {\n throw new Error('The first paramenter only accept array');\n }\n\n if (!isFunction(callbackParam)) {\n throw new Error('The second paramenter only accept callback function');\n }\n\n return arrParam.filter(function (item) {\n return callbackParam(item);\n }).length;\n};\n\nvar intersection = function intersection() {\n for (var _len = arguments.length, restArg = new Array(_len), _key = 0; _key < _len; _key++) {\n restArg[_key] = arguments[_key];\n }\n\n if (!restArg && restArg.length <= 1) {\n throw new Error('You have to provide here at least 2 arguments');\n }\n\n var newArr = [];\n var obj = {};\n restArg.forEach(function (arr, index) {\n if (isArray(arr)) {\n obj[index] = new Set(arr);\n } else {\n obj[index] = new Set().add(arr);\n }\n\n if (index !== 0) {\n var _iterator = _createForOfIteratorHelper(arr),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n\n if (obj[index - 1].has(item)) {\n newArr.push(item);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n });\n var filter = countDuplication(newArr);\n return Array.from(new Set(filter[restArg.length - 1]));\n};\n\nvar difference = function difference() {\n for (var _len = arguments.length, restArg = new Array(_len), _key = 0; _key < _len; _key++) {\n restArg[_key] = arguments[_key];\n }\n\n if (!restArg && restArg.length <= 1) {\n throw new Error('You have to provide here at least 2 arguments');\n }\n\n var set = new Set();\n var interArr = intersection.apply(void 0, restArg);\n restArg.forEach(function (arr) {\n if (!isArray(arr)) {\n throw new Error('Here only accept arrays from all arguments');\n }\n\n var _iterator = _createForOfIteratorHelper(arr),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n\n if (!interArr.includes(item) && !set.has(item)) {\n set.add(item);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n return Array.from(set);\n};\nvar asymmetricDifference = function asymmetricDifference() {\n for (var _len2 = arguments.length, restArg = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArg[_key2] = arguments[_key2];\n }\n\n if (!restArg && restArg.length <= 1) {\n throw new Error('You have to provide here at least 2 arguments');\n }\n\n var set = new Set();\n var temp = [];\n\n for (var _i = 0, _restArg = restArg; _i < _restArg.length; _i++) {\n var arr = _restArg[_i];\n\n if (!isArray(arr)) {\n throw new Error('Here only accept arrays from all arguments');\n }\n\n arr.forEach(function (item) {\n if (set.has(item)) {\n set[\"delete\"](item);\n temp.push(item);\n } else {\n if (!temp.includes(item)) {\n set.add(item);\n }\n }\n });\n }\n\n return Array.from(set);\n};\nvar complement = function complement() {\n for (var _len3 = arguments.length, restArg = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n restArg[_key3] = arguments[_key3];\n }\n\n if (!restArg && restArg.length <= 1) {\n throw new Error('You have to provide here at least 1 value');\n }\n\n var restArr = Array.from(restArg);\n restArr.shift();\n var set = new Set(without.apply(void 0, [restArg[0]].concat(_toConsumableArray(restArr))));\n return Array.from(set);\n};\nvar without = function without(arrArg) {\n for (var _len4 = arguments.length, restArg = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n restArg[_key4 - 1] = arguments[_key4];\n }\n\n if (!isArray(arrArg) && arrArg.length <= 0) {\n throw new Error('You need to provide more values to your array');\n }\n\n if (!restArg && restArg.length <= 0) {\n throw new Error('You have to provide here at least 1 value');\n }\n\n var arr = [];\n\n var _iterator2 = _createForOfIteratorHelper(arrArg),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var item = _step2.value;\n\n if (!restArg.flat().includes(item)) {\n arr.push(item);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return arr;\n};\n\nvar transpose = function transpose() {\n for (var _len = arguments.length, restArr = new Array(_len), _key = 0; _key < _len; _key++) {\n restArr[_key] = arguments[_key];\n }\n\n if (restArr.length < 2 && !isArray(restArr[0]) && !isArray(restArr[1]) && Number(restArr[0].length) !== Number(restArr[1].length)) {\n throw new Error('You have to provide at least 2 arguments, both in arrays with the same length');\n }\n\n var newArray = Array.from(restArr[0]).map(function (item) {\n item = [];\n return item;\n });\n\n for (var _i = 0, _restArr = restArr; _i < _restArr.length; _i++) {\n var itemArr = _restArr[_i];\n itemArr.forEach(function (item, index) {\n if (index in newArray) {\n newArray[index].push(item);\n }\n });\n }\n\n return newArray;\n};\n\nvar zip = function zip() {\n for (var _len = arguments.length, restArr = new Array(_len), _key = 0; _key < _len; _key++) {\n restArr[_key] = arguments[_key];\n }\n\n if (restArr.length < 2) {\n throw new Error('You have to provide at least 2 arguments, both in arrays with the same length');\n }\n\n var oriArr = Array.from(restArr);\n var newArr = [];\n var firstArr = oriArr.shift();\n\n var _loop = function _loop() {\n var varArr = _oriArr[_i];\n var newMap = new Map();\n varArr.forEach(function (item, ind) {\n if (firstArr[ind]) {\n newMap.set(firstArr[ind], item);\n }\n });\n newArr.push(Object.fromEntries(newMap));\n };\n\n for (var _i = 0, _oriArr = oriArr; _i < _oriArr.length; _i++) {\n _loop();\n }\n\n return newArr;\n};\n\nvar unzip = function unzip() {\n for (var _len = arguments.length, restArr = new Array(_len), _key = 0; _key < _len; _key++) {\n restArr[_key] = arguments[_key];\n }\n\n if (restArr.length < 2) {\n throw new Error('You have to provide at least 2 arguments, both in arrays with the same length');\n }\n\n var oriArr = Array.from(restArr);\n var objKeys = Object.keys(oriArr[0]);\n var newObj = {};\n\n for (var _i = 0, _objKeys = objKeys; _i < _objKeys.length; _i++) {\n var key = _objKeys[_i];\n newObj[key] = [];\n }\n\n for (var _i2 = 0, _oriArr = oriArr; _i2 < _oriArr.length; _i2++) {\n var obj = _oriArr[_i2];\n\n for (var prop in obj) {\n newObj[prop].push(obj[prop]);\n }\n }\n\n return [objKeys].concat(_toConsumableArray(transpose.apply(void 0, _toConsumableArray(Object.values(newObj)))));\n};\n\nvar range = function range() {\n if (arguments.length === 0 || arguments.length >= 4) {\n throw new Error('Here only accept 3 arguments, so you have to provide at least 1 argument');\n }\n\n var startNum = arguments.length === 1 ? 0 : Number(arguments.length <= 0 ? undefined : arguments[0]);\n var endNum = arguments.length >= 2 ? Number(arguments.length <= 1 ? undefined : arguments[1]) : Number(arguments.length <= 0 ? undefined : arguments[0]);\n var stepNum = arguments.length === 3 ? Number(arguments.length <= 2 ? undefined : arguments[2]) : 1;\n\n if (arguments.length < 3 && isNegative(endNum)) {\n stepNum = -1;\n }\n\n var newArr = [];\n var loopNum = 0;\n var result = 0;\n\n if (isNegative(startNum) && isPositive(endNum)) {\n loopNum = startNum - 1;\n } else if (isPositive(startNum) && isNegative(endNum)) {\n loopNum = startNum + 1;\n } else if (isPositive(startNum) && isPositive(endNum)) {\n loopNum = startNum - 1;\n } else if (isNegative(startNum) && isNegative(endNum)) {\n loopNum = startNum + 1;\n }\n\n if (loopNum < endNum) {\n while (loopNum < endNum) {\n loopNum++;\n\n if (stepNum > 1) {\n result += stepNum;\n\n if (result < endNum) {\n newArr.push(result);\n }\n } else {\n if (loopNum < endNum) {\n newArr.push(loopNum);\n }\n }\n }\n\n if (startNum === 0 && !newArr.includes(0)) {\n newArr.unshift(0);\n }\n } else if (loopNum > endNum) {\n while (loopNum > endNum) {\n loopNum--;\n\n if (stepNum < -1) {\n result -= stepNum;\n\n if (result > endNum) {\n newArr.unshift(result);\n }\n } else {\n if (loopNum > endNum) {\n newArr.unshift(loopNum);\n }\n }\n }\n\n if (startNum === 0 && !newArr.includes(0)) {\n newArr.push(0);\n }\n }\n\n return newArr.length === 1 && newArr[0] === 0 ? [] : newArr;\n};\n\nvar move = function move() {\n for (var _len = arguments.length, indexes = new Array(_len), _key = 0; _key < _len; _key++) {\n indexes[_key] = arguments[_key];\n }\n\n if (indexes.length === 0) {\n throw new Error('Only accept index of array elements and you must input at least one index in number type');\n }\n\n return function (fromArr, toIndex) {\n var removeCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n if (!isArray(fromArr)) {\n throw new Error('Please enter array only here');\n }\n\n if (!isNumber(toIndex)) {\n throw new Error('Input only index number here');\n }\n\n var oriArr = Array.from(fromArr);\n var tempArr = [];\n\n var _iterator = _createForOfIteratorHelper(indexes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var ind = _step.value;\n\n if (oriArr[Number(ind)] !== undefined) {\n tempArr.push(oriArr[Number(ind)]);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var newArr = destroy.apply(void 0, [oriArr].concat(indexes));\n newArr.splice.apply(newArr, [toIndex, removeCount].concat(tempArr));\n return newArr;\n };\n};\nvar switched = function switched() {\n for (var _len2 = arguments.length, fromIndex = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n fromIndex[_key2] = arguments[_key2];\n }\n\n if (fromIndex.length === 0) {\n throw new Error('Accept index of array elements only and you add at least one index in number');\n }\n\n return function (fromArr) {\n if (!isArray(fromArr)) {\n throw new Error('Please enter array only here');\n }\n\n for (var _len3 = arguments.length, withIndex = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n withIndex[_key3 - 1] = arguments[_key3];\n }\n\n if (withIndex.length === 0 && withIndex.length !== fromIndex.length && intersection(fromIndex, withIndex).length !== 0) {\n throw new Error('Only accept index of array elements and the number of the first indexes must be the same as the second indexes and also, both indexes must be different');\n }\n\n var oriArr = Array.from(fromArr);\n var newArr = Array.from(fromArr);\n\n for (var i = 0; i < fromIndex.length; i++) {\n if (fromIndex[i] !== undefined && withIndex[i] !== undefined) {\n newArr.splice(fromIndex[i], 1, oriArr[withIndex[i]]);\n newArr.splice(withIndex[i], 1, oriArr[fromIndex[i]]);\n }\n }\n\n return newArr;\n };\n};\nvar transfer = function transfer() {\n for (var _len4 = arguments.length, indexes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n indexes[_key4] = arguments[_key4];\n }\n\n if (indexes.length === 0) {\n throw new Error('Only accept index of array elements and you must enter at least one index in number type');\n }\n\n return function (fromArr, toArr) {\n var byIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!isArray(fromArr)) {\n throw new Error('Accept array only here');\n }\n\n if (!isArray(toArr)) {\n throw new Error('Accept array only here');\n }\n\n if (!isNumber(byIndex)) {\n throw new Error('Input only index number here');\n }\n\n var varFromArr = Array.from(fromArr);\n var varToArr = Array.from(toArr);\n var tempArr = [];\n\n var _iterator2 = _createForOfIteratorHelper(indexes),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var ind = _step2.value;\n\n if (varFromArr[Number(ind)] !== undefined) {\n tempArr.push(varFromArr[Number(ind)]);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n var byInd = byIndex === null ? Number(varToArr.length) : byIndex;\n varToArr.splice.apply(varToArr, [byInd, 0].concat(tempArr));\n var newArr = destroy.apply(void 0, [varFromArr].concat(indexes));\n return {\n from: newArr,\n to: varToArr\n };\n };\n};\n\nvar compact = function compact(argArr) {\n if (!isArray(argArr)) {\n throw new Error('Enter only array type here');\n }\n\n var newArr = Array.from(argArr);\n return newArr.filter(function (val) {\n return val !== undefined && val !== null && val !== false && !isNaN(val) && val !== \"\" && val > 0;\n });\n};\n\nvar chunk = function chunk(arrArg) {\n var sizeArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n if (!isArray(arrArg) && arrArg.length <= 2) {\n throw new Error('Please insert array only on the first argument and must have 3 values at least');\n }\n\n if (typeof sizeArg !== 'number') {\n throw new Error('On the second argument, you must input in a number type only');\n }\n\n var stepArr = range(sizeArg, arrArg.length, sizeArg);\n var newArr = [];\n\n var _iterator = _createForOfIteratorHelper(stepArr),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var step = _step.value;\n var childArr = arrArg.slice(Number(step) - Number(sizeArg), step);\n newArr.push(childArr);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (stepArr[Number(stepArr.length) - 1] <= arrArg.length) {\n newArr.push(arrArg.slice(stepArr[Number(stepArr.length) - 1], arrArg.length));\n }\n\n return newArr;\n};\n\nvar shuffle = function shuffle(arrArg) {\n if (!isArray(arrArg) && arrArg.length <= 2) {\n throw new Error('This shuffle method only work on data in array type');\n }\n\n var newArr = Array.from(arrArg);\n\n for (var i = Number(newArr.length) - 1; i > 2; i--) {\n var sliceArr = newArr.slice(0, Number(i) + 1);\n newArr = switched(i)(newArr, randomIndex(sliceArr));\n }\n\n return newArr;\n};\n\nvar group = function group(param, callback) {\n if (!isArray(param)) {\n throw new Error('You must enter array literal here');\n }\n\n if (!isFunction(callback)) {\n throw new Error('You have to enter a function or callback on the second argument');\n }\n\n var obj = {};\n\n var _iterator = _createForOfIteratorHelper(param),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var item = _step.value;\n\n if (obj[callback(item).toString()] === undefined) {\n obj[callback(item).toString()] = [];\n }\n\n obj[callback(item).toString()].push(item);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return obj;\n};\n\nvar calculate = function calculate(fromArr, newProp, callBack) {\n if (!isArray(fromArr)) {\n throw new Error('On the first argument, you have to provide array only');\n }\n\n if (!isString(newProp)) {\n throw new Error('New property must be in string type');\n }\n\n if (!isFunction(callBack)) {\n throw new Error('Callback must be in function or method');\n }\n\n var newArray = Array.from(fromArr);\n return newArray.map(function (item) {\n item[newProp] = callBack.apply(void 0, _toConsumableArray(Object.values(item).filter(function (i) {\n return isNaN(i) === false;\n })));\n return item;\n });\n};\n\nvar array = /*#__PURE__*/Object.freeze({\n __proto__: null,\n insert: insert,\n insertFirst: insertFirst,\n insertLast: insertLast,\n insertBefore: insertBefore,\n insertAfter: insertAfter,\n update: update,\n updateBy: updateBy,\n destroy: destroy,\n select: select,\n hidden: hidden,\n toggle: toggle,\n flatten: flatten,\n nested: nested,\n index: index,\n toIndex: toIndex,\n randomIndex: randomIndex,\n search: search,\n searchBy: searchBy,\n filter: filter,\n filtered: filter,\n sort: sort,\n sortBy: sortBy,\n sorted: sortBy,\n sortWith: sortWith,\n paginate: paginate,\n pages: pages,\n pageInfo: pageInfo,\n show: pageInfo,\n pagination: pagination,\n sum: sum,\n calculate: calculate,\n calc: calculate,\n unique: unique,\n isArray: isArray,\n isSuperset: isSuperset,\n union: union,\n intersection: intersection,\n difference: difference,\n asymmetricDifference: asymmetricDifference,\n complement: complement,\n without: without,\n transpose: transpose,\n zip: zip,\n unzip: unzip,\n range: range,\n move: move,\n switched: switched,\n transfer: transfer,\n compact: compact,\n chunk: chunk,\n shuffle: shuffle,\n group: group,\n countDuplication: countDuplication,\n countBy: countBy\n});\n\nvar invert = function invert(objArg) {\n if (!isObject(objArg)) {\n throw new Error('You have to input object only here');\n }\n\n var allKeys = Object.keys(objArg);\n var allValues = Object.values(objArg);\n return zip(allValues, allKeys)[0];\n};\n\nvar clone = function clone() {\n for (var _len = arguments.length, restArg = new Array(_len), _key = 0; _key < _len; _key++) {\n restArg[_key] = arguments[_key];\n }\n\n if (restArg.length < 1) {\n throw new Error('In this argument must have at least one argument and please provide it in object type');\n }\n\n return Object.assign.apply(Object, [{}].concat(restArg));\n};\n\nvar object = /*#__PURE__*/Object.freeze({\n __proto__: null,\n remove: remove,\n removeBy: removeBy,\n merge: merge,\n replace: replace,\n isObject: isObject,\n isObjectValues: isObjectValues,\n invert: invert,\n clone: clone\n});\n\nvar REGEX_PARSE_DATE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nvar REGEX_DATE_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|T|H{1,2}|h{1,2}|a|A|i{1,2}|s{1,2}|Z{1,2}|SSS/g;\n\nvar isYear = function isYear(yearParams) {\n return typeof yearParams === 'number' || typeof yearParams === 'string' ? true : false;\n}; // pengecekan bulan mulai dari tipenya sampai jumlahnya\n\nvar isMonth = function isMonth(monthParams) {\n return typeof monthParams === 'number' || typeof monthParams === 'string' ? true : false;\n}; // pengecekan tanggal dan hasilnya selalu dalam tipe boolean (true atau false)\n\nvar isDate = function isDate(dateParams) {\n return typeof dateParams === 'number' || typeof dateParams === 'string' ? true : false;\n}; // pengecekan tanggal, bulan dan tahun sekaligus\n\nvar isFullDate = function isFullDate(dateParams) {\n return _typeof(new Date(dateParams)) === 'object' && dateParams !== null || typeof dateParams === 'string' && new RegExp(REGEX_PARSE_DATE).test(dateParams) ? true : false;\n};\nvar isFormatDate = function isFormatDate(formatParams) {\n return typeof formatParams === 'string' && new RegExp(REGEX_DATE_FORMAT).test(formatParams) ? true : false;\n}; // cek tahun kabisat (leap year)\n\nvar isLeapYear = function isLeapYear(yearParams) {\n return yearParams % 400 === 0 || yearParams % 100 !== 0 && yearParams % 4 === 0 ? true : false;\n};\n\n// semua pesan untuk date helper saya kumpulkan disini\nvar msgDate = {\n yearMsg: 'Year must be in a number or a string type, the length of year either 4 or 2',\n monthMsg: 'Month must be in a number or a string type, the month number start from 1 to 12',\n dateMsg: 'Date must be in a number or a string type, the date number start from 1 to 31',\n fullDateMsg: 'Full date must be in string or array type'\n};\n\n// ambil pengecekan\n\nvar day = function day(yearParams) {\n var monthParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var dateParams = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var locale = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'en-US';\n var dayType = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'long';\n\n // pengecekan tahun, bulan, dan tangal, saya pisahkan dengan pesannya pada berkas lain\n if (!isYear(yearParams)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthParams)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isDate(dateParams)) {\n throw new Error(msgDate.dateMsg);\n } // disini kita ingin mendapatkan tanggal secara lokal\n\n\n var localDate = new Date(Date.UTC(Number(yearParams), Number(monthParams) - 1, Number(dateParams))); // kemudian kita ubah menjadi nama hari\n\n return new Intl.DateTimeFormat(locale, {\n weekday: dayType\n }).format(localDate);\n}; // fungsi ini untuk mendapatkan semua nama hari dalam tipe array\n\nvar days = function days() {\n var locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en-US';\n var dayType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'long';\n var daysArr = []; // melakukan iterasi dari tanggal 4 sampai 10 April 2021, kemudian kita isi nama harinya kedalam array\n\n for (var i = 4; i <= 10; i++) {\n var localDate = new Date(Date.UTC(2021, 3, i));\n daysArr.push(new Intl.DateTimeFormat(locale, {\n weekday: dayType\n }).format(localDate));\n }\n\n return daysArr;\n};\nvar daysInMonth = function daysInMonth(yearParams) {\n var monthParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n if (!isYear(yearParams)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthParams)) {\n throw new Error(msgDate.monthMsg);\n } // jumlah hari (rata-rata) dari setiap bulan\n\n\n var commonDays = [28, 29, 30, 31]; // ambil hari ini (angka)\n\n var numOfDays = new Date(Date.UTC(Number(yearParams), Number(monthParams), 0)).getUTCDate(); // kemudian saring atau cek apakah angkanya sesuai dari jumlah hari diatas, jika tidak maka hasilnya 31\n\n return commonDays.includes(numOfDays) ? numOfDays : 31;\n};\nvar daysInYear = function daysInYear(yearParams) {\n if (!isYear(yearParams)) {\n throw new Error(msgDate.yearMsg);\n } // jumlah hari dalam setahun\n\n\n return isLeapYear(yearParams) ? 366 : 365;\n};\nvar daysInBetween = function daysInBetween(firstDate, lastDate) {\n if (!isFullDate(firstDate)) {\n throw new Error('Error in the first argument: ' + msgDate.fullDateMsg);\n }\n\n if (!isFullDate(lastDate)) {\n throw new Error('Error in the second argument: ' + msgDate.fullDateMsg);\n }\n\n var startDate = new Date(firstDate);\n var endDate = new Date(lastDate); // hitung perbedaan waktu\n\n var timeDifference = Number(endDate.getTime()) - Number(startDate.getTime()); // hasilnya dapat dibagi dari perbedaan waktu dengan jumlah semua milisekon\n\n return timeDifference / (1000 * 60 * 60 * 24);\n};\n\nvar month = function month(yearParam, monthParam) {\n var locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en-US';\n var monthType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'long';\n\n if (!isYear(yearParam)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthParam)) {\n throw new Error(msgDate.monthMsg);\n }\n\n var currentMonth = Date.UTC(yearParam, Number(monthParam) - 1);\n return new Intl.DateTimeFormat(locale, {\n month: monthType\n }).format(new Date(currentMonth));\n};\nvar months = function months() {\n var locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en-US';\n var monthType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'long';\n var monthNames = [];\n\n for (var i = 0; i <= 11; i++) {\n var currentMonth = Date.UTC(2021, i);\n monthNames.push(new Intl.DateTimeFormat(locale, {\n month: monthType\n }).format(new Date(currentMonth)));\n }\n\n return monthNames;\n};\n\nvar format = function format(dateParam, formatStr) {\n var locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en-US';\n var dayType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'long';\n\n if (!isFullDate(dateParam)) {\n throw new Error('You\\'re entering the wrong date string, please use this statement \"new Date(\\'yourdateParam\\').toString()\" instead or array \"[year, monthIndex, dateNumber]\"');\n }\n\n if (!isFormatDate(formatStr)) {\n throw new Error('Please enter the correct date format');\n }\n\n var oriDate = new Date(dateParam);\n var formatDate = formatStr;\n var newDate = formatStr;\n var tokens = {\n YY: function YY() {\n var shortYear = oriDate.getFullYear().toString().slice(-2);\n var dateYear = oriDate.getFullYear();\n\n if (shortYear !== \"00\") {\n dateYear = Number(shortYear);\n }\n\n return dateYear;\n },\n YYYY: oriDate.getFullYear(),\n M: Number(oriDate.getMonth()) + 1,\n MM: function MM() {\n var dateMonth = Number(Number(oriDate.getMonth()) + 1).toString();\n\n if (dateMonth.length === 1) {\n var addZero = \"0\" + dateMonth;\n return addZero;\n } else {\n return dateMonth;\n }\n },\n m: months(locale, dayType)[oriDate.getMonth()].slice(0, 3),\n mm: months(locale, dayType)[oriDate.getMonth()],\n D: oriDate.getDate,\n DD: function DD() {\n var dateDay = oriDate.getDate().toString();\n var resDay = dateDay;\n\n if (dateDay.length === 1) {\n var addDayZero = \"0\" + dateDay;\n resDay = addDayZero;\n }\n\n return resDay;\n },\n d: days(locale, dayType)[oriDate.getDay()].slice(0, 3),\n dd: days(locale, dayType)[oriDate.getDay()],\n H: oriDate.getHours(),\n HH: function HH() {\n var dateHour = oriDate.getHours().toString();\n\n if (dateHour.length === 1) {\n var addHourZero = \"0\" + dateHour;\n return addHourZero;\n } else {\n return dateHour;\n }\n },\n h: function h() {\n var dateHour2 = Number(oriDate.getHours() + 1);\n var resetDateHour2 = dateHour2;\n\n if (dateHour2 > 12) {\n resetDateHour2 = dateHour2 - (dateHour2 - 1);\n }\n\n return resetDateHour2;\n },\n hh: function hh() {\n var dateHour2 = Number(oriDate.getHours() + 1);\n var resetDateHour2 = dateHour2;\n\n if (dateHour2 > 12) {\n resetDateHour2 = dateHour2 - (dateHour2 - 1);\n }\n\n var dateHour3 = resetDateHour2.toString();\n\n if (dateHour3.length === 1) {\n var addHour3Zero = \"0\" + dateHour3;\n return addHour3Zero;\n } else {\n return dateHour3;\n }\n },\n k: function k() {\n return Number(oriDate.getHours()) === 0 ? 24 : oriDate.getHours();\n },\n kk: function kk() {\n var dateHour4 = Number(oriDate.getHours()).toString();\n\n if (dateHour4.length === 1) {\n var addHour4Zero = \"0\" + dateHour4;\n return Number(addHour4Zero) === 0 ? 24 : addHour4Zero;\n } else {\n return Number(dateHour4) === 0 ? 24 : dateHour4;\n }\n },\n i: oriDate.getMinutes(),\n ii: function ii() {\n var dateMinute = oriDate.getMinutes().toString();\n\n if (dateMinute.length === 1) {\n var addMinuteZero = \"0\" + dateMinute;\n return addMinuteZero;\n } else {\n return dateMinute;\n }\n },\n s: oriDate.getSeconds(),\n ss: function ss() {\n var dateSecond = oriDate.getSeconds().toString();\n\n if (dateSecond.length === 1) {\n var addSecondZero = \"0\" + dateSecond;\n return addSecondZero;\n } else {\n return dateSecond;\n }\n },\n uuu: oriDate.getMilliseconds(),\n A: oriDate.getHours() < 12 ? 'AM' : 'PM',\n a: oriDate.getHours() < 12 ? 'am' : 'pm',\n Do: oriDate.getDate().toString() + 'st'\n };\n var splitFormat = formatDate.split(/-|\\/|\\.|:|\\s/);\n\n var _iterator = _createForOfIteratorHelper(splitFormat),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var sf = _step.value;\n\n if ('YY' === sf) {\n newDate = newDate.replace(sf, tokens.YY());\n } else if ('YYYY' === sf) {\n newDate = newDate.replace(sf, tokens.YYYY);\n } else if ('M' === sf) {\n newDate = newDate.replace(sf, tokens.M);\n } else if ('MM' === sf) {\n newDate = newDate.replace(sf, tokens.MM());\n } else if ('m' === sf) {\n newDate = newDate.replace(sf, tokens.m);\n } else if ('mm' === sf) {\n newDate = newDate.replace(sf, tokens.mm);\n } else if ('D' === sf) {\n newDate = newDate.replace(sf, tokens.D);\n } else if ('DD' === sf) {\n newDate = newDate.replace(sf, tokens.DD());\n } else if ('d' === sf) {\n newDate = newDate.replace(sf, tokens.d);\n } else if ('dd' === sf) {\n newDate = newDate.replace(sf, tokens.dd);\n } else if ('H' === sf) {\n newDate = newDate.replace(sf, tokens.H);\n } else if ('HH' === sf) {\n newDate = newDate.replace(sf, tokens.HH());\n } else if ('h' === sf) {\n newDate = newDate.replace(sf, tokens.h());\n } else if ('hh' === sf) {\n newDate = newDate.replace(sf, tokens.hh());\n } else if ('k' === sf) {\n newDate = newDate.replace(sf, tokens.k());\n } else if ('kk' === sf) {\n newDate = newDate.replace(sf, tokens.kk());\n } else if ('i' === sf) {\n newDate = newDate.replace(sf, tokens.i);\n } else if ('ii' === sf) {\n newDate = newDate.replace(sf, tokens.ii());\n } else if ('s' === sf) {\n newDate = newDate.replace(sf, tokens.s);\n } else if ('ss' === sf) {\n newDate = newDate.replace(sf, tokens.ss());\n } else if ('uuu' === sf) {\n newDate = newDate.replace(sf, tokens.uuu);\n } else if ('A' === sf) {\n newDate = newDate.replace(sf, tokens.A);\n } else if ('a' === sf) {\n newDate = newDate.replace(sf, tokens.a);\n } else if ('Do' === sf) {\n newDate = newDate.replace(sf, tokens.Do);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return newDate;\n};\n\nvar now = function now() {\n var dateFormat = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n var newDate = new Date().toString();\n\n if (typeof dateFormat === 'string') {\n newDate = format(newDate, dateFormat);\n }\n\n return newDate;\n};\nvar nowHijri = function nowHijri() {\n var locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en-US';\n var utcNowDate = Date.UTC(Number(new Date().getFullYear()), Number(new Date().getMonth()), Number(new Date().getDate()), Number(new Date().getHours()), Number(new Date().getMinutes()), Number(new Date().getSeconds()), Number(new Date().getMilliseconds()));\n var newDate = new Intl.DateTimeFormat(locale, {\n calendar: 'islamic',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hourCycle: 'h24'\n }).format(new Date(utcNowDate));\n return newDate;\n};\n\n//import * as dateVar from './dateVar.js'\nvar parse = function parse(dateStr, formatStr) {\n var locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en-US';\n var dayType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'long';\n\n if (!isFullDate(dateStr)) {\n throw new Error('On the first argument, you have to input only the correct date');\n }\n\n if (!isFormatDate(formatStr)) {\n throw new Error('For format date, you must always input the correct one by using characters like these: Y, M, m, D, d, H, h, k, i, S, s, A, a or Do');\n }\n\n var dateArr = dateStr.split(/-|\\/|\\.|T|Z|:|\\s/).filter(function (dt) {\n return dt.length >= 1 && dt !== \" \";\n }).map(function (word) {\n return word.trim();\n });\n var formatArr = formatStr.split(/-|\\/|\\.|T|Z|:|\\s/).filter(function (dt) {\n return dt.length >= 1 && dt !== \" \";\n }).map(function (word) {\n return word.trim();\n });\n var newDate = {\n year: new Date().getFullYear(),\n month: Number(new Date().getMonth()) + 1,\n day: new Date().getDate(),\n hour: new Date().getHours(),\n minute: new Date().getMinutes(),\n second: new Date().getSeconds(),\n millisecond: new Date().getMilliseconds()\n };\n\n if (dateArr.length === formatArr.length) {\n for (var i = 0; i < dateArr.length; i++) {\n if (dateArr[i].length === 4 && isNaN(dateArr[i]) === false && formatArr[i] === 'YYYY') {\n newDate.year = dateArr[i];\n } else if (dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 'YY') {\n newDate.year = dateArr[i];\n } else if (dateArr[i].length === 1 || dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 'M' || formatArr[i] === 'MM') {\n newDate.month = Number(dateArr[i]) - 1;\n } else if (dateArr[i].length === 3 && months(locale, dayType).map(function (mn) {\n return mn.slice(0, 3);\n }).includes(dateArr[i]) && formatArr[i] === 'm') {\n newDate.month = months(locale, dayType).map(function (mn) {\n return mn.slice(0, 3);\n }).findIndex(dateArr[i]);\n } else if (dateArr[i].length >= 3 && months(locale, dayType).includes(dateArr[i]) && formatArr[i] === 'mm') {\n newDate.month = months(locale, dayType).findIndex(dateArr[i]);\n } else if (dateArr[i].length === 1 || dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 'D' || formatArr[i] === 'DD') {\n newDate.day = dateArr[i];\n } else if (dateArr[i].length === 1 || dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 'H' || formatArr[i] === 'HH') {\n newDate.hour = dateArr[i];\n } else if (dateArr[i].length === 1 || dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 'h' || formatArr[i] === 'hh') {\n newDate.hour = dateArr[i] > 12 ? Number(dateArr[i]) - (Number(dateArr[i]) - 1) : dateArr[i];\n } else if (dateArr[i].length === 1 || dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 'k' || formatArr[i] === 'kk') {\n newDate.hour = Number(dateArr[i]) === 24 ? 0 : dateArr[i];\n } else if (dateArr[i].length === 1 || dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 'i' || formatArr[i] === 'ii') {\n newDate.minute = dateArr[i];\n } else if (dateArr[i].length === 1 || dateArr[i].length === 2 && isNaN(dateArr[i]) === false && formatArr[i] === 's' || formatArr[i] === 'ss') {\n newDate.second = dateArr[i];\n } else if (dateArr[i].length >= 3 && isNaN(dateArr[i]) === false && formatArr[i] === 'uuu') {\n newDate.millisecond = dateArr[i];\n } else if (dateArr[i].slice(-2) === 'st' || dateArr[i].slice(-2) === 'nd' || dateArr[i].slice(-2) === 'th' && formatArr[i] === 'Do') {\n newDate.second = Number(dateArr[i].slice(0, -2));\n }\n }\n } else {\n throw new Error('The numbers and the formats must be in place, so when we check the length of both of these arguments then the result will be the same');\n }\n\n return new Date(newDate.year, newDate.month, newDate.day, newDate.hour, newDate.minute, newDate.second, newDate.millisecond).toString();\n};\n\nvar utc = function utc() {\n return new Date(Date.UTC.apply(Date, arguments));\n};\n\nvar addDate = function addDate(dateParam, addNum) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!isFullDate(dateParam)) {\n throw new Error('Please enter a date in correct way, either in string or array type');\n }\n\n if (!isNumber(addNum)) {\n throw new Error('Only accept number type on second argument');\n }\n\n var newDate = new Date(dateParam); // tambah hari atau tanggal\n\n var addNewDate = Number(newDate.getDate()) + Number(addNum); // pastikan tanggal tidak melewati jumlah tanggal pada bulan tertentu\n\n var allDays = Number(daysInMonth(Number(newDate.getFullYear()), newDate.getMonth() + 1));\n\n if (addNewDate > allDays) {\n var restNewDate = addNewDate - allDays; // pastikan juga bulannya tidak bulan 12, kalau ya berati masuk tahun baru\n\n if (Number(newDate.getMonth()) === 11) {\n newDate = new Date(Number(newDate.getFullYear()) + 1, 0, restNewDate);\n } else {\n newDate = new Date(Number(newDate.getFullYear()), Number(newDate.getMonth()) + 1, restNewDate);\n }\n } else {\n newDate = new Date(Number(newDate.getFullYear()), Number(newDate.getMonth()), addNewDate);\n } // cek format\n\n\n var formatDate = formatParam !== null && isFormatDate(formatParam) !== false ? format(newDate, formatParam) : newDate;\n return formatDate;\n};\n\nvar subtractDate = function subtractDate(dateParam, subtractNum) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!isFullDate(dateParam)) {\n throw new Error('Please enter a date in correct way, either in string or array type');\n }\n\n if (!isNumber(subtractNum)) {\n throw new Error('Only accept number type on second argument');\n }\n\n var newDate = new Date(dateParam); // kurangi tanggal\n\n var subtractNewDate = Number(newDate.getDate()) - Number(subtractNum); // pastikan tanggal tidak melewati jumlah tanggal pada bulan tertentu\n\n var allDays = Number(daysInMonth(Number(newDate.getFullYear()), newDate.getMonth()));\n\n if (subtractNewDate < 1) {\n var restNewDate = allDays + (subtractNewDate - 1); // pastikan juga bulannya tidak bulan 1, kalau ya berati masuk tahun lama\n\n if (Number(newDate.getMonth()) === 0) {\n newDate = new Date(Number(newDate.getFullYear()) - 1, 0, restNewDate);\n } else {\n newDate = new Date(Number(newDate.getFullYear()), Number(newDate.getMonth()) + 1, restNewDate);\n }\n } else {\n newDate = new Date(Number(newDate.getFullYear()), Number(newDate.getMonth()), subtractNewDate);\n } // cek dan buat formatnya\n\n\n var formatDate = formatParam !== null && isFormatDate(formatParam) !== false ? format(newDate, formatParam) : newDate;\n return formatDate;\n};\n\nvar rangeDate = function rangeDate(startDate, endDate) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!isFullDate(firstDate)) {\n throw new Error('Error in the first argument: ' + msgDate.fullDateMsg);\n }\n\n if (!isFullDate(lastDate)) {\n throw new Error('Error in the second argument: ' + msgDate.fullDateMsg);\n }\n\n var firstDate = new Date(startDate);\n var lastDate = new Date(endDate);\n var arrayDate = [];\n var currentDate = firstDate; // iterasi tanggal dan push kedalam array\n\n while (currentDate <= lastDate) {\n var formatDate = formatParam !== null && isFormatDate(formatParam) !== false ? format(currentDate, formatParam) : currentDate;\n arrayDate.push(formatDate);\n currentDate = addDate(currentDate, 1);\n } // tanggal dalam array\n\n\n return arrayDate;\n};\n\nvar week = function week(yearParams, monthParams, dateParams) {\n // pengecekan tahun, bulan, dan tangal dan untuk pesan saya pisahkan pada berkas lain\n if (!isYear(yearParams)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthParams)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isDate(dateParams)) {\n throw new Error(msgDate.dateMsg);\n } // hitung jumlah hari yang telah dilalui dalam tahun ini\n\n\n var calcCurrentDays = daysInBetween(new Date(Number(yearParams), 0, 1), new Date(Number(yearParams), Number(monthParams) - 1, Number(dateParams))); // kurangi hari yang tidak dimulai dari hari ahad\n\n var getFirstDay = Number(new Date(yearParams, 0, 1).getDay());\n var subtractDay = 0;\n\n if (getFirstDay > 0) {\n subtractDay = 6 - (getFirstDay - 1);\n } // perlu penambahan jika tidak berakhir hari sabtu\n\n\n var getLastDay = Number(new Date(Number(yearParams), Number(monthParams) - 1, Number(dateParams)).getDay());\n var addDay = 0;\n\n if (getLastDay < 6) {\n addDay = 6 - getLastDay;\n }\n\n return Math.ceil((Number(calcCurrentDays) + addDay - subtractDay) / 7);\n};\nvar weeks = function weeks(yearParam, weekParam) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'YYYY-MM-DD';\n\n if (!isYear(yearParam)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isNumber(weekParam)) {\n throw new Error('You have to enter a number');\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n } // pengecekan posisi dari tanggal dan bulan pertama\n\n\n var getFirstDay = Number(new Date(Number(yearParam), 0, 1).getDay());\n var subtractDay = 0;\n\n if (getFirstDay > 0) {\n subtractDay = 6 - (getFirstDay - 1);\n } // ini akan menghasilkan object dengan angka setiap pekan sebagai property key dan tanggal mulai dan akhir dari sepekan dalam array\n\n\n var arrWeek = [];\n var startDay = subtractDay + 1;\n var startMonth = 0;\n var startYear = yearParam;\n\n for (var i = 1; i <= Number(weekParam); i++) {\n if (i === Number(weekParam)) {\n arrWeek.push(format(new Date(startYear, startMonth, startDay), formatParam));\n var j = 0;\n\n while (j < 6) {\n j++;\n arrWeek.push(format(addDate(new Date(startYear, startMonth, startDay), j), formatParam));\n }\n }\n\n startDay = startDay + 7;\n\n if (startMonth < 12 && startDay > Number(daysInMonth(yearParam, startMonth + 1))) {\n startDay = startDay - Number(daysInMonth(yearParam, startMonth + 1));\n\n if (startMonth !== 11) {\n startMonth = startMonth + 1;\n } else {\n startMonth = 1;\n startYear = startYear + 1;\n }\n }\n }\n\n return arrWeek;\n};\nvar weeksInMonth = function weeksInMonth(yearParam, monthParam) {\n if (!isYear(yearParam)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthParam)) {\n throw new Error(msgDate.monthMsg);\n } // cek bulan dari semua nilai pekan dalam setahun\n\n\n var getWeekNumbers = weeksOfYear(yearParam, 52, 'M');\n var resWeeks = [];\n\n for (var _i = 0, _Object$entries = Object.entries(getWeekNumbers); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n val = _Object$entries$_i[1];\n\n if (val.includes(monthParam.toString())) {\n resWeeks.push(key);\n }\n }\n\n return Number(monthParam) === 1 ? resWeeks.filter(function (w) {\n return w !== '52';\n }) : resWeeks;\n};\nvar weeksInYear = function weeksInYear(yearParams) {\n if (!isYear(yearParams)) {\n throw new Error(msgDate.yearMsg);\n } // cek posisi dari tanggal dan bulan pertama\n\n\n var getFirstDay = Number(new Date(Number(yearParams), 0, 1).getDay());\n var subtractDay = 0;\n\n if (getFirstDay > 0) {\n subtractDay = 6 - (getFirstDay - 1);\n } // cek posisi dari tanggal dan bulan terakhir\n\n\n var getLastDay = Number(new Date(Number(yearParams), 11, 31).getDay());\n var addDay = 0;\n\n if (getLastDay < 6) {\n addDay = 6 - getLastDay;\n } // hitung jumlah pekan dalam satu tahun\n\n\n var totalWeeks = Math.ceil((Number(daysInYear(yearParams)) + addDay - subtractDay) / 7);\n return totalWeeks;\n};\nvar weeksOfYear = function weeksOfYear(yearParam, weekParam) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'YYYY-MM-DD';\n\n if (!isYear(yearParam)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isNumber(weekParam)) {\n throw new Error('You have to enter a number');\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n } // pengecekan posisi dari tanggal dan bulan pertama\n\n\n var getFirstDay = Number(new Date(Number(yearParam), 0, 1).getDay());\n var subtractDay = 0;\n\n if (getFirstDay > 0) {\n subtractDay = 6 - (getFirstDay - 1);\n } // ini akan menghasilkan object dengan angka setiap pekan sebagai property key dan tanggal mulai dan akhir dari sepekan dalam array\n\n\n var objWeek = {};\n var startDay = subtractDay + 1;\n var startMonth = 0;\n var startYear = yearParam;\n\n for (var i = 1; i <= weekParam; i++) {\n objWeek[i.toString()] = [format(new Date(startYear, startMonth, startDay), formatParam), format(addDate(new Date(startYear, startMonth, startDay), 6), formatParam)];\n startDay = startDay + 7;\n\n if (startMonth < 12 && startDay > Number(daysInMonth(yearParam, startMonth + 1))) {\n startDay = startDay - Number(daysInMonth(yearParam, startMonth + 1));\n\n if (startMonth !== 11) {\n startMonth = startMonth + 1;\n } else {\n startMonth = 1;\n startYear = startYear + 1;\n }\n }\n }\n\n return objWeek;\n};\n\nvar calendar = function calendar(yearArg, monthArg) {\n var flatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var formatParam = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'YYYY-MM-DD';\n var locale = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'en-US';\n\n if (!isYear(yearArg)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthArg)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n } // ambil nama-nama hari\n\n\n var dayNames = days(locale); // rangekan dan hasilkan semua tanggal\n\n var currentMonth = rangeDate(new Date(yearArg, Number(monthArg) - 1, 1), new Date(yearArg, Number(monthArg) - 1, daysInMonth(yearArg, monthArg)), formatParam); // cek hari pertama, kurangi hari yang tidak dimulai dari hari ahad\n\n var getFirstDay = Number(new Date(yearArg, Number(monthArg) - 1, 1).getDay());\n var prevMonth = [];\n\n if (getFirstDay > 0) {\n var subtractPrevDay = getFirstDay - 1;\n prevMonth = rangeDate(new Date(yearArg, Number(monthArg) - 2, Number(daysInMonth(yearArg, Number(monthArg) - 1)) - subtractPrevDay), new Date(yearArg, Number(monthArg) - 2, daysInMonth(yearArg, Number(monthArg) - 1)), formatParam);\n } // cek hari terakhir, perlu penambahan jika tidak berakhir hari sabtu\n\n\n var getLastDay = Number(new Date(yearArg, Number(monthArg) - 1, daysInMonth(yearArg, monthArg)).getDay());\n var nextMonth = [];\n\n if (getLastDay < 6) {\n var addNextDay = 6 - (getLastDay + 1);\n nextMonth = rangeDate(new Date(yearArg, Number(monthArg), 1), new Date(yearArg, Number(monthArg), 1 + addNextDay), formatParam);\n }\n\n var newMonth = [dayNames, prevMonth, currentMonth, nextMonth];\n return flatParam === true ? newMonth.flat() : newMonth;\n};\nvar daysInCalendar = function daysInCalendar(yearArg, monthArg) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'YYYY-MM-DD';\n\n if (!isYear(yearArg)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthArg)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n } // rangekan dan hasilkan semua tanggal untuk bulan ini\n\n\n return rangeDate(new Date(yearArg, Number(monthArg) - 1, 1), new Date(yearArg, Number(monthArg) - 1, daysInMonth(yearArg, monthArg)), formatParam);\n};\nvar prevDaysInCalendar = function prevDaysInCalendar(yearArg, monthArg) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'YYYY-MM-DD';\n\n if (!isYear(yearArg)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthArg)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n } // cek hari pertama, kurangi hari yang tidak dimulai dari hari ahad\n\n\n var getFirstDay = Number(new Date(yearArg, Number(monthArg) - 1, 1).getDay());\n var restPrevMonth = [];\n\n if (getFirstDay > 0) {\n var subtractPrevDay = getFirstDay - 1;\n restPrevMonth = rangeDate(new Date(yearArg, Number(monthArg) - 2, Number(daysInMonth(yearArg, Number(monthArg) - 1)) - subtractPrevDay), new Date(yearArg, Number(monthArg) - 2, daysInMonth(yearArg, Number(monthArg) - 1)), formatParam);\n }\n\n return restPrevMonth;\n};\nvar nextDaysInCalendar = function nextDaysInCalendar(yearArg, monthArg) {\n var formatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'YYYY-MM-DD';\n\n if (!isYear(yearArg)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthArg)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n } // cek hari terakhir, perlu penambahan jika tidak berakhir hari sabtu\n\n\n var getLastDay = Number(new Date(yearArg, Number(monthArg) - 1, daysInMonth(yearArg, monthArg)).getDay());\n var restNextMonth = [];\n\n if (getLastDay < 6) {\n var addNextDay = 6 - (getLastDay + 1);\n restNextMonth = rangeDate(new Date(yearArg, Number(monthArg), 1), new Date(yearArg, Number(monthArg), 1 + addNextDay), formatParam);\n }\n\n return restNextMonth;\n};\nvar weeklyCalendar = function weeklyCalendar(yearParam, monthParam, dateParam) {\n var formatParam = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'YYYY-MM-DD';\n var locale = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'en-US';\n\n if (!isYear(yearParam)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthParam)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isDate(dateParam)) {\n throw new Error(msgDate.dateMsg);\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n }\n\n var dayNames = days(locale);\n var weekNumbers = week(yearParam, monthParam, dateParam);\n var weekDates = weeks(yearParam, weekNumbers, formatParam);\n return zip(dayNames, weekDates)[0];\n};\nvar calendarWithWeeks = function calendarWithWeeks(yearArg, monthArg) {\n var flatParam = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var formatParam = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'YYYY-MM-DD';\n var locale = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'en-US';\n\n if (!isYear(yearArg)) {\n throw new Error(msgDate.yearMsg);\n }\n\n if (!isMonth(monthArg)) {\n throw new Error(msgDate.monthMsg);\n }\n\n if (!isFormatDate(formatParam)) {\n throw new Error('Please enter a format of date correctly');\n } // ambil nama-nama hari\n\n\n var dayNames = days(locale); // ambil nomor pekan saja dari bulan ini\n\n var weekNumbers = weeksInMonth(yearArg, monthArg);\n var currentMonth = [];\n\n if (Number(new Date(yearArg, Number(monthArg) - 1, 1).getDay()) !== 0 && Number(monthArg) === 1) {\n currentMonth.push('52');\n currentMonth.push(weeks(Number(yearArg) - 1, 52, formatParam));\n }\n\n var _iterator = _createForOfIteratorHelper(weekNumbers),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var wn = _step.value;\n currentMonth.push(wn);\n currentMonth.push(weeks(yearArg, wn, formatParam));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n var newMonth = ['Week', dayNames].concat(currentMonth);\n return flatParam === true ? newMonth.flat() : newMonth;\n};\n\nvar dateToArray = function dateToArray(date) {\n if (!isFullDate(date)) {\n throw new Error('Please enter a valid date');\n }\n\n var newDate = new Date(date).toJSON();\n return newDate.replace('Z', '').split(/-|:|\\s|\\.|T/g);\n};\n\nvar date = /*#__PURE__*/Object.freeze({\n __proto__: null,\n now: now,\n nowHijri: nowHijri,\n parse: parse,\n parseDate: parse,\n utc: utc,\n addDate: addDate,\n subtractDate: subtractDate,\n rangeDate: rangeDate,\n day: day,\n days: days,\n daysInMonth: daysInMonth,\n daysInYear: daysInYear,\n daysInBetween: daysInBetween,\n week: week,\n weeks: weeks,\n weeksInMonth: weeksInMonth,\n weeksInYear: weeksInYear,\n month: month,\n months: months,\n isYear: isYear,\n isMonth: isMonth,\n isDate: isDate,\n isFullDate: isFullDate,\n isFormatDate: isFormatDate,\n isLeapYear: isLeapYear,\n calendar: calendar,\n daysInCalendar: daysInCalendar,\n prevDaysInCalendar: prevDaysInCalendar,\n nextDaysInCalendar: nextDaysInCalendar,\n weeklyCalendar: weeklyCalendar,\n calendarWithWeeks: calendarWithWeeks,\n dateToArray: dateToArray\n});\n\nvar size = function size(bytes, decimalPoint) {\n if (bytes === 0) return '0 Bytes';\n var k = 1000;\n var dm = decimalPoint || 1;\n var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n var i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n};\n\nvar name = function name(val) {\n if (typeof val === 'string') {\n if (val.indexOf('', 41) > 40) {\n return val.slice(0, 41) + \"...\";\n } else {\n return val;\n }\n }\n};\n\nvar type = function type(val) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'type';\n var arrFile = val.split('/');\n\n if (type == 'format') {\n arrFile.shift();\n } else {\n arrFile.pop();\n }\n\n return arrFile.join(\"\");\n};\n\nvar date$1 = function date(val) {\n return new Date(val).toDateString();\n};\n\nvar image = function image(_image) {\n if ('name' in _image && typeof _image.name === 'string') {\n return URL.createObjectURL(_image);\n }\n};\n\nvar loadImage = function loadImage(image) {\n if ('name' in image && typeof image.name === 'string') {\n URL.revokeObjectURL(image);\n }\n};\n/* Alternative */\n\n\nvar formatSize = function formatSize(file) {\n var nBytes = 0,\n oFiles = file,\n nFiles = oFiles.length;\n\n for (var nFileId = 0; nFileId < nFiles; nFileId++) {\n nBytes += oFiles[nFileId].size;\n }\n\n var sOutput = nBytes + \" bytes\";\n var aMultiples = [\"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n\n for (var nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) {\n sOutput = nApprox.toFixed(3) + \" \" + aMultiples[nMultiple] + \" (\" + nBytes + \" bytes)\";\n }\n\n return sOutput;\n};\n\nvar humanSize = function humanSize(bytes) {\n var si = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dp = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n var units = si ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n var u = -1;\n var r = Math.pow(10, dp);\n\n do {\n bytes /= thresh;\n ++u;\n } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);\n\n return bytes.toFixed(dp) + ' ' + units[u];\n};\n\nvar exported = function exported(oriArr, toFile) {\n if (_typeof(oriArr) !== 'object') return;\n if (typeof toFile !== 'string') return;\n var oriArray = Array.from(oriArr);\n var toStringFile = '';\n\n if (toFile.toLowerCase() === 'json') {\n toStringFile = 'data:application/json;charset=utf-8,' + JSON.stringify(oriArray, null, 2);\n } else if (toFile.toLowerCase() === 'csv') {\n var csvStr = '';\n\n var _iterator = _createForOfIteratorHelper(oriArray),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var csvObj = _step.value;\n\n for (var csvKey in csvObj) {\n csvStr += csvObj[csvKey] + ',';\n }\n\n csvStr = csvStr.trim().substring(0, csvStr.length - 1);\n csvStr += '\\n';\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n csvStr = csvStr.trim().substring(0, csvStr.length - 1);\n toStringFile = 'data:text/csv;charset=utf-8,' + csvStr;\n } else if (toFile.toLowerCase() === 'sql') {\n var sqlStr = 'INSERT INTO `export_table` (';\n\n for (var sqlKey in oriArray[0]) {\n sqlStr += '`' + sqlKey + '`,';\n }\n\n sqlStr = sqlStr.trim().substring(0, sqlStr.length - 1);\n sqlStr += ') VALUES ';\n\n var _iterator2 = _createForOfIteratorHelper(oriArray),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var sqlObj = _step2.value;\n sqlStr += '(';\n\n for (var _sqlKey in sqlObj) {\n sqlStr += '`' + sqlObj[_sqlKey] + '`,';\n }\n\n sqlStr = sqlStr.trim().substring(0, sqlStr.length - 1);\n sqlStr += '),';\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n sqlStr = sqlStr.trim().substring(0, sqlStr.length - 1);\n sqlStr += ';';\n toStringFile = 'data:application/sql;charset=utf-8,' + sqlStr;\n } else if (toFile.toLowerCase() === 'xml') {\n var xmlStr = '\\n';\n\n for (var xmlObj in oriArray) {\n xmlStr += '\\n ';\n\n for (var xmlKey in xmlObj) {\n xmlStr += '\\n <' + xmlKey + '`>' + xmlObj[xmlKey] + '';\n }\n\n xmlStr += '\\n ';\n }\n\n xmlStr += '\\n';\n toStringFile = 'data:application/xml;charset=utf-8,' + xmlStr;\n } else if (toFile.toLowerCase() === 'xhs') {\n var xhsStr = '//visit official site: http://xhs.glitch.me \\n(\"data\", [';\n\n var _iterator3 = _createForOfIteratorHelper(oriArray),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var xhsObj = _step3.value;\n xhsStr += '\\n (\"entry\", [';\n\n for (var xhsKey in xhsObj) {\n xhsStr += '\\n (\"' + xhsKey + '\", ';\n xhsStr += xhsObj[xhsKey] + '),';\n }\n\n xhsStr = xhsStr.trim().substring(0, xhsStr.length - 1);\n xhsStr += ']),';\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n xhsStr = xhsStr.trim().substring(0, xhsStr.length - 1);\n xhsStr = '])';\n toStringFile = 'data:application/xhs;charset=utf-8,' + xhsStr;\n }\n\n return toStringFile;\n};\n\nvar download = function download(strFile) {\n var asFile = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'txt';\n var nameFile = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'export-to';\n if (typeof strFile !== 'string') return;\n var fileName = nameFile + '.' + asFile.toLowerCase();\n var fileStr = encodeURI(strFile);\n var fileLink = document.createElement(\"a\");\n fileLink.href = fileStr;\n fileLink.download = fileName;\n document.body.appendChild(fileLink);\n fileLink.click();\n document.body.removeChild(fileLink);\n};\n\nvar printed = function printed(oriArr) {\n if (_typeof(oriArr) !== 'object') return;\n var oriArray = Array.from(oriArr);\n var table = document.createElement(\"table\");\n var thead = document.createElement(\"thead\");\n var tbody = document.createElement(\"tbody\");\n table.appendChild(thead);\n table.appendChild(tbody);\n var trow = document.createElement(\"tr\");\n\n for (var tableKey in oriArray[0]) {\n var tcol = document.createElement(\"th\");\n tcol.textContent = tableKey.replace(/^\\w/, function (c) {\n return c.toUpperCase();\n });\n trow.appendChild(tcol);\n }\n\n thead.appendChild(trow);\n\n for (var _i = 0, _oriArray = oriArray; _i < _oriArray.length; _i++) {\n var tableObj = _oriArray[_i];\n var tr = document.createElement(\"tr\");\n\n for (var _tableKey in tableObj) {\n var td = document.createElement(\"td\");\n td.textContent = tableObj[_tableKey];\n tr.appendChild(td);\n }\n\n tbody.appendChild(tr);\n }\n\n var w = window.open();\n w.document.body.appendChild(table);\n w.focus();\n w.print();\n};\n\nvar file = /*#__PURE__*/Object.freeze({\n __proto__: null,\n size: size,\n name: name,\n type: type,\n image: image,\n date: date$1,\n loadImage: loadImage,\n formatSize: formatSize,\n humanSize: humanSize,\n exported: exported,\n download: download,\n printed: printed\n});\n\nvar setCookie = function setCookie(name, value, days) {\n var expires;\n\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"expires=\" + date.toGMTString();\n } else {\n expires = \"\";\n }\n\n document.cookie = name + \"=\" + value + \"; SameSite=Lax;\" + expires + \"; path=/\";\n};\nvar getCookie = function getCookie(name) {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) === \" \") {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n\n return null;\n};\nvar hasCookie = function hasCookie(name) {\n return getCookie(name) ? true : false;\n};\nvar removeCookie = function removeCookie(name) {\n setCookie(name, \"\", -1);\n};\nvar clearCookie = function clearCookie() {\n var cookies = document.cookie.split(\";\");\n\n for (var i = 0; i < cookies.length; i++) {\n var cookie = cookies[i];\n var eqPos = cookie.indexOf(\"=\");\n var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n document.cookie = name + \"=;expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n }\n};\n\nvar isStorage = function isStorage(storageType) {\n return (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object' && \"\".concat(storageType, \"Storage\") in window ? true : false;\n};\nvar isCookie = function isCookie() {\n return (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && 'cookie' in document ? true : false;\n};\n\nvar setStorage = function setStorage(key, value) {\n var storageType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'local';\n if (!isStorage(storageType)) return;\n window[\"\".concat(storageType, \"Storage\")].setItem(key, value);\n};\nvar getStorage = function getStorage(key) {\n var storageType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'local';\n if (!isStorage(storageType)) return;\n return window[\"\".concat(storageType, \"Storage\")].getItem(key);\n};\nvar hasStorage = function hasStorage(key) {\n var storageType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'local';\n if (!isStorage(storageType)) return;\n return window[\"\".concat(storageType, \"Storage\")].getItem(key) ? true : false;\n};\nvar removeStorage = function removeStorage(key) {\n var storageType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'local';\n if (!isStorage(storageType)) return;\n\n if (hasStorage(key, storageType)) {\n window[\"\".concat(storageType, \"Storage\")].removeItem(key);\n }\n};\nvar clearStorage = function clearStorage() {\n var storageType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'local';\n if (!isStorage(storageType)) return;\n window[\"\".concat(storageType, \"Storage\")].clear();\n};\n\nvar storage = /*#__PURE__*/Object.freeze({\n __proto__: null,\n setCookie: setCookie,\n getCookie: getCookie,\n hasCookie: hasCookie,\n removeCookie: removeCookie,\n clearCookie: clearCookie,\n isStorage: isStorage,\n isCookie: isCookie,\n setStorage: setStorage,\n getStorage: getStorage,\n hasStorage: hasStorage,\n removeStorage: removeStorage,\n clearStorage: clearStorage\n});\n\nvar ternary = function ternary(cb1, cb2, cb3) {\n if (!isFunction(cb1) && !isFunction(cb2) && !isFunction(cb3)) {\n throw new Error('All arguments here only accept value in function');\n }\n\n return cb1() ? cb2() : cb3();\n};\n\nvar func = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ternary: ternary\n});\n\n\n\nexport { array as $array, char as $char, date as $date, file as $file, int as $int, number as $number, object as $object, string as $string, array, char, date, file, func, int, number, object, storage, string };\n","import { App } from \"vue\";\nimport { $array } from \"@/assets/js/alga.js\";\n\n/**\n * @description service to call HTTP request via Axios\n *\n *\n */\nclass PaginationUtill {\n public static getElecColumn: any = [\n { name: \"Location Id\", key: \"siteid\", sortable: true },\n { name: \"Detail Id \", key: \"electdetailsid\", sortable: true },\n { name: \"Energy Supplier\", key: \"suppliername\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"Address\", key: \"billingstreet\", sortable: true },\n { name: \"city\", key: \"billingcity\", sortable: true },\n { name: \"country\", key: \"billingcountry\", sortable: true },\n { name: \"post code\", key: \"billingpostcode\", sortable: true },\n { name: \"Meter Serial Number\", key: \"msn\", sortable: true },\n ];\n\n public static getGasColumn: any = [\n { name: \"location Id\", key: \"siteid\", sortable: true },\n { name: \"Detail Id\", key: \"gasdetailsid\", sortable: true },\n { name: \"Energy Supplier\", key: \"suppliername\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"Address\", key: \"billingstreet\", sortable: true },\n { name: \"City\", key: \"billingcity\", sortable: true },\n { name: \"Country\", key: \"billingcountry\", sortable: true },\n { name: \"post code\", key: \"billingpostcode\", sortable: true },\n { name: \"Meter Serial Number\", key: \"msn\", sortable: true },\n ];\n\n public static assetAdditionElectrcity: any = [\n { name: \"Customer Id\", key: \"accountid\", sortable: true },\n { name: \"Location Id\", key: \"SiteID\", sortable: true },\n { name: \"Detail Id\", key: \"electdetailsid\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"Address\", key: \"billingstreet\", sortable: true },\n { name: \"city\", key: \"billingcity\", sortable: true },\n { name: \"country\", key: \"billingcountry\", sortable: true },\n { name: \"post code\", key: \"billingpostcode\", sortable: true },\n { name: \"supplier name\", key: \"suppliername\", sortable: true },\n { name: \"Meter Serial Number\", key: \"msn\", sortable: true },\n { name: \"Addition Date\", key: \"startdate\", sortable: true },\n ];\n\n public static assetAdditionGas: any = [\n { name: \"Customer Id\", key: \"accountid\", sortable: true },\n { name: \"Location Id\", key: \"siteid\", sortable: true },\n { name: \"Detail Id\", key: \"gasdetailsid\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"Address\", key: \"billingstreet\", sortable: true },\n { name: \"state\", key: \"billingstate\", sortable: true },\n { name: \"city\", key: \"billingcity\", sortable: true },\n { name: \"country\", key: \"billingcountry\", sortable: true },\n { name: \"post code\", key: \"billingpostcode\", sortable: true },\n { name: \"Detail Ref\", key: \"suppliername\", sortable: true },\n { name: \"Meter Serial Number\", key: \"msn\", sortable: true },\n { name: \"Addition Date\", key: \"startdate\", sortable: true },\n ];\n\n public static assetMeterType: any = [\n // { name: \"Customer id\", key: \"accountid\", sortable: true },\n { name: \"Loction id\", key: \"siteid\", sortable: true },\n { name: \"siteref\", key: \"siteref\", sortable: true },\n // { name: \"vattype\", key: \"vattype\", sortable: true },\n { name: \"Address\", key: \"billingstreet\", sortable: true },\n { name: \"city\", key: \"billingcity\", sortable: true },\n { name: \"post code\", key: \"billingpostcode\", sortable: true },\n { name: \"state\", key: \"billingstate\", sortable: true },\n { name: \"country\", key: \"billingcountry\", sortable: true },\n { name: \"supplier\", key: \"supplier\", sortable: true },\n { name: \"suppliername\", key: \"suppliername\", sortable: true },\n { name: \"utility\", key: \"utility\", sortable: true },\n { name: \"detail id\", key: \"electdetailsid\", sortable: true },\n { name: \"Meter Serial number\", key: \"msn\", sortable: true },\n ];\n\n public static LastActualMeterReadElec: any = [\n { name: \"location id\", key: \"locationid\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"address\", key: \"address\", sortable: true },\n { name: \"city\", key: \"city\", sortable: true },\n { name: \"post code\", key: \"postcode\", sortable: true },\n { name: \"detail id\", key: \"detailid\", sortable: true },\n { name: \"msn\", key: \"msn\", sortable: true },\n { name: \"meter ref\", key: \"meterref\", sortable: true },\n {\n name: \"Supplier Name\",\n key: \"SupplierName\",\n sortable: true,\n },\n { name: \"day read\", key: \"dayread\", sortable: true },\n { name: \"night read\", key: \"nightread\", sortable: true },\n { name: \"evening read\", key: \"eveningread\", sortable: true },\n { name: \"other read\", key: \"otherread\", sortable: true },\n { name: \"peak read\", key: \"peakread\", sortable: true },\n { name: \"off peak read\", key: \"offpeakread\", sortable: true },\n { name: \"read type\", key: \"readtype\", sortable: true },\n { name: \"read date\", key: \"readdate\", sortable: true },\n { name: \"report id\", key: \"reportid\", sortable: true },\n { name: \"report date\", key: \"reportdate\", sortable: true },\n ];\n\n public static LastActualMeterReadGas: any = [\n { name: \"location id\", key: \"locationid\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"address\", key: \"address\", sortable: true },\n { name: \"city\", key: \"city\", sortable: true },\n { name: \"post code\", key: \"postcode\", sortable: true },\n { name: \"detail id\", key: \"detailid\", sortable: true },\n {\n name: \"meter serial number\",\n key: \"meterserialnumber\",\n sortable: true,\n },\n { name: \"meter ref\", key: \"meterref\", sortable: true },\n {\n name: \"supplier name\",\n key: \"suppliername\",\n sortable: true,\n },\n { name: \"day read\", key: \"dayread\", sortable: true },\n { name: \"read type\", key: \"readtype\", sortable: true },\n { name: \"read date\", key: \"readdate\", sortable: true },\n { name: \"report id\", key: \"reportid\", sortable: true },\n { name: \"report date\", key: \"reportdate\", sortable: true },\n ];\n\n public static LastBilldateElec: any = [\n { name: \"location Id\", key: \"locationid\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"address\", key: \"address\", sortable: true },\n { name: \"city\", key: \"city\", sortable: true },\n { name: \"post code\", key: \"postcode\", sortable: true },\n { name: \"detail Id\", key: \"detailid\", sortable: true },\n {\n name: \"meter serial number\",\n key: \"meterserialnumber\",\n sortable: true,\n },\n { name: \"meter ref\", key: \"meterref\", sortable: true },\n {\n name: \"supplier name\",\n key: \"suppliername\",\n sortable: true,\n },\n { name: \"day read\", key: \"dayread\", sortable: true },\n { name: \"night read\", key: \"nightread\", sortable: true },\n { name: \"evening read\", key: \"eveningread\", sortable: true },\n { name: \"peak read\", key: \"peakread\", sortable: true },\n { name: \"other read\", key: \"otherread\", sortable: true },\n { name: \"read type\", key: \"readtype\", sortable: true },\n { name: \"read date\", key: \"readdate\", sortable: true },\n { name: \"report id\", key: \"reportid\", sortable: true },\n { name: \"report date\", key: \"reportdate\", sortable: true },\n ];\n\n public static LastBillDateGas: any = [\n { name: \"location id\", key: \"locationid\", sortable: true },\n { name: \"site ref\", key: \"siteref\", sortable: true },\n { name: \"address\", key: \"address\", sortable: true },\n { name: \"city\", key: \"city\", sortable: true },\n { name: \"post code\", key: \"postcode\", sortable: true },\n { name: \"detail id\", key: \"detailid\", sortable: true },\n {\n name: \"meter serial number\",\n key: \"meterserialnumber\",\n sortable: true,\n },\n { name: \"meter ref\", key: \"meterref\", sortable: true },\n {\n name: \"supplier name\",\n key: \"suppliername\",\n sortable: true,\n },\n { name: \"day read\", key: \"dayread\", sortable: true },\n { name: \"read type\", key: \"readtype\", sortable: true },\n { name: \"read date\", key: \"readdate\", sortable: true },\n { name: \"report id\", key: \"reportid\", sortable: true },\n { name: \"report date\", key: \"reportdate\", sortable: true },\n ];\n\n public static AccuralReportElec: any = [\n { name: \"Site Id\", key: \"SiteId\", sortable: true },\n { name: \"Site Name\", key: \"SiteName\", sortable: true },\n { name: \"Elec Detail id\", key: \"DetailId\", sortable: true },\n { name: \"Period From\", key: \"StartDate\", sortable: true },\n { name: \"Period To\", key: \"EndDate\", sortable: true },\n { name: \"Meter Serial Number\", key: \"MSN\", sortable: true },\n { name: \"Available Bill Days\", key: \"TotalDaysBillAvailable\", sortable: true },\n { name: \"Total KWH\", key: \"KWHBilled\", sortable: true },\n { name: \"Total AmountExclVat (£)\", key: \"TotalAmountExclVAT\", sortable: true },\n { name: \"Gap Days\", key: \"GapDayswithTariff\", sortable: true },\n { name: \"Gap Days Consumption\", key: \"GapDayConsumption\", sortable: true },\n { name: \"GapDays Total AmountExclVat\", key: \"GapDaysAmount\", sortable: true },\n { name: \"VAT (£)\", key: \"VAT\", sortable: true },\n { name: \"Report Number\", key: \"ReportNo\", sortable: true },\n { name: \"Report Date\", key: \"ReportDate\", sortable: true },\n ];\n\n public static AccuralReportgas: any = [\n { name: \"Site Id\", key: \"SiteId\", sortable: true },\n { name: \"Site Name\", key: \"SiteName\", sortable: true },\n { name: \"Gas Detail id\", key: \"DetailId\", sortable: true },\n { name: \"Period From\", key: \"StartDate\", sortable: true },\n { name: \"Period To\", key: \"EndDate\", sortable: true },\n { name: \"Meter Serial Number\", key: \"MSN\", sortable: true },\n { name: \"Available Bill Days\", key: \"TotalDaysBillAvailable\", sortable: true },\n { name: \"Total KWH\", key: \"KWHBilled\", sortable: true },\n { name: \"Total AmountExclVat (£)\", key: \"TotalAmountExclVAT\", sortable: true },\n { name: \"Gap Days\", key: \"GapDayswithTariff\", sortable: true },\n { name: \"Gap Days Consumption\", key: \"GapDayConsumption\", sortable: true },\n { name: \"GapDays Total AmountExclVat\", key: \"GapDaysAmount\", sortable: true },\n { name: \"VAT (£)\", key: \"VAT\", sortable: true },\n { name: \"Report Number\", key: \"ReportNo\", sortable: true },\n { name: \"Report Date\", key: \"ReportDate\", sortable: true },\n ];\n\n public static MeterTypeReport: any = [\n // { name: \"Customer id\", key: \"accountid\", sortable: true },\n { name: \"Loction id\", key: \"siteid\", sortable: true },\n { name: \"siteref\", key: \"siteref\", sortable: true },\n // { name: \"vattype\", key: \"vattype\", sortable: true },\n { name: \"Address\", key: \"billingstreet\", sortable: true },\n { name: \"city\", key: \"billingcity\", sortable: true },\n { name: \"post code\", key: \"billingpostcode\", sortable: true },\n { name: \"state\", key: \"billingstate\", sortable: true },\n { name: \"country\", key: \"billingcountry\", sortable: true },\n { name: \"supplier\", key: \"supplier\", sortable: true },\n { name: \"suppliername\", key: \"suppliername\", sortable: true },\n { name: \"utility\", key: \"utility\", sortable: true },\n { name: \"detail id\", key: \"electdetailsid\", sortable: true },\n { name: \"Meter Serial number\", key: \"msn\", sortable: true },\n ];\n\n public static PositiondataTableColNames:any = [\n { name: \"Month\", key: \"month\", sortable: true },\n { name: \"Total MW\", key: \"total_mw\", sortable: true },\n { name: \"Fixed MW\", key: \"fixed_mw\", sortable: true },\n { name: \"Floating MW \", key: \"floating_mw\", sortable: true },\n { name: \"% Fixed\", key: \"fixed_per\", sortable: true },\n { name: \"Baseline £/MWh\", key: \"baseline\", sortable: true },\n { name: \"Budget £/MWh\", key: \"budget\", sortable: true },\n { name: \"Traded Price £/MWh\", key: \"traded\", sortable: true },\n { name: \"Market Price £/MWh\", key: \"market\", sortable: true },\n { name: \"MTM £/MWh\", key: \"mtm\", sortable: true },\n { name: \"MTM Cost\", key: \"mtm_cost\", sortable: true },\n { name: \"Savings V Baseline\", key: \"savings_baseline\", sortable: true },\n { name: \"Savings V Budget\", key: \"savings\", sortable: true },\n { name: \"Forecast Volume (KWh@NBP)\", key: \"forecast_vol\", sortable: true },\n { name: \"Forecast Energy Cost (£)\", key: \"forecast_energy_cost\", sortable: true },\n { name: \"Actual Volume (kWh@CT)\", key: \"actual_vol\", sortable: true },\n { name: \"Actual Energy Cost\", key: \"actual_energy_cost\", sortable: true },\n { name: \"Volume Saving\", key: \"vol_savings\", sortable: true },\n { name: \"Energy Rate (p/kWh@NBP)\", key: \"energyRatePKWh\", sortable: true },\n { name: \"Savings v Current Budget (£)\", key: \"savings_cbudget12\", sortable: true },\n { name: \"Savings v Original Budget (£)\", key: \"savings_obudget12\", sortable: true },\n { name: \"Baseline (p/kWh@NBP)\", key: \"baselinePKWh\", sortable: true },\n { name: \"Budget inc CaR (p/KWh@NBP)\", key: \"budgetPKWh\", sortable: true },\n ];\n\n public static PositiondataTableGasColNames:any = [\n { name: \"Month \", key: \"month\", sortable: true },\n { name: \"Total th/day \", key: \"total_mw\", sortable: true },\n { name: \"Fixed th/day \", key: \"fixed_mw\", sortable: true },\n { name: \"Floating th/day \", key: \"floating_mw\", sortable: true },\n { name: \"% Fixed \", key: \"fixed_per\", sortable: true },\n { name: \"Baseline p/th \", key: \"baseline\", sortable: true },\n { name: \"Budget p/th \", key: \"budget\", sortable: true },\n { name: \"Traded Price p/th \", key: \"traded\", sortable: true },\n { name: \"Market Price p/th \", key: \"market\", sortable: true },\n { name: \"MTM p/th \", key: \"mtm\", sortable: true },\n { name: \"MTM Cost \", key: \"mtm_cost\", sortable: true },\n { name: \"Savings V Baseline \", key: \"savings_baseline\", sortable: true },\n { name: \"Savings V Budget \", key: \"savings\", sortable: true },\n ];\n\n public static showPagination(allPages, currentPage) {\n console.log(\"inside method\");\n $array.pagination(allPages, currentPage, 1);\n }\n}\n\nexport default PaginationUtill;\n"],"sourceRoot":""}