{"version":3,"sources":["webpack://fair-labour/./assets/project/general/js/history-controller.js","webpack://fair-labour/./assets/project/general/js/object-helper.js","webpack://fair-labour/./assets/project/general/js/url-helper.js","webpack://fair-labour/./assets/project/general/js/api.ts"],"names":["HistoryController","_this","_classCallCheck","_defineProperty","event","prevId","get","prevState","id","prevInnerState","newInnerState","state","subscribers","cb","console","log","concat","window","history","title","url","historyState","_generateState","pushState","arguments","length","undefined","replaceState","this","init","key","value","addEventListener","_onPopstate","removeEventListener","Error","cloneDeep","historyController","removeEmptyKeys","obj","Object","keys","forEach","_typeof","Array","isArray","clone","object","JSON","parse","stringify","isEqual","arg1","arg2","isEqualLodash","isObject","addToAssociativeCollection","collection","name","arrayParseResult","match","isObj","test","push","getUrlByParams","params","defaultParams","paramsPrefix","indexOf","paramsString","searchableParams","result","p","parameter1","parameter2","isParametersValuesEqual","getSearchableParams","s","add","k","v","encodeURIComponent","buildParams","prefix","i","len","String","_key","join","param","getQueryStringByParams","getParamsFromQueryString","queryString","str","replace","parsedQueryParameters","split","keyValue","decodeURIComponent","_ref","_ref2","api","axios","timeout"],"mappings":"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","file":"8435.685653ecdaa9f4b7a812.js","sourcesContent":["import get from 'lodash/get';\nimport cloneDeep from 'lodash/cloneDeep';\n\nclass HistoryController {\n constructor() {\n this.prevState = window.history.state;\n this.subscribers = {};\n\n this.init();\n }\n\n init() {\n window.addEventListener('popstate', this._onPopstate);\n }\n\n destroy() {\n window.removeEventListener('popstate', this._onPopstate);\n }\n\n _onPopstate = (event) => {\n const prevId = get(this.prevState, 'id', null);\n const id = get(event, 'state.id', null);\n const prevInnerState = get(this.prevState, 'state', null);\n const newInnerState = get(event.state, 'state', null);\n\n // inform component to clean its state\n // return (prevInnerState, newInnerState, shouldClean)\n if (prevId !== id && this.subscribers[prevId]) {\n this.subscribers[prevId].cb(prevInnerState, newInnerState, true);\n }\n\n if (id && this.subscribers[id]) {\n this.subscribers[id].cb(prevInnerState, newInnerState, false);\n }\n\n this.prevState = event.state;\n };\n\n subscribeOnPopstate = (id, cb) => {\n if (this.subscribers[id]) {\n console.log(`Found registered component with id: ${id}. Data will be overridden.`);\n }\n\n this.subscribers[id] = { cb };\n\n return () => {\n delete this.subscribers[id];\n };\n };\n\n getState = () => get(window.history.state, 'state', null);\n\n _generateState(id, title, url, state = {}) {\n if (!id) {\n throw new Error('You must provide components id');\n }\n\n const historyState = {\n id,\n state: cloneDeep(state),\n };\n\n if (!historyState.state.url) {\n historyState.state.url = url;\n }\n\n return historyState;\n }\n\n pushState = (id, title, url, state) => {\n const historyState = this._generateState(id, title, url, state);\n\n window.history.pushState(historyState, title, url);\n this.prevState = window.history.state;\n };\n\n replaceState = (id, title, url, state = {}) => {\n const historyState = this._generateState(id, title, url, state);\n\n window.history.replaceState(historyState, title, url);\n };\n}\n\nexport const historyController = new HistoryController();\n","import isEqualLodash from 'lodash/isEqual';\nimport filter from 'lodash/filter';\nimport camelCase from 'lodash/camelCase';\nimport matches from 'lodash/matches';\n\nconst removeEmptyKeys = (obj) =>\n Object.keys(obj).forEach((key) => {\n if (\n obj[key] === '' ||\n obj[key] === null ||\n obj[key] === undefined ||\n (typeof obj[key] === 'object' && Array.isArray(obj[key]) && !obj[key].length)\n ) {\n delete obj[key];\n }\n });\n\nfunction clone(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\nfunction isEqual(arg1, arg2) {\n return isEqualLodash(arg1, arg2);\n}\n\nfunction isObject(value) {\n return typeof value === 'object';\n}\n\nfunction isPartialEqual(arr, obj) {\n return filter(arr, matches(obj));\n}\n\nfunction renameKey(obj, oldKey, newKey) {\n if (obj[oldKey] && oldKey !== newKey) {\n Object.defineProperty(obj, newKey, Object.getOwnPropertyDescriptor(obj, oldKey));\n delete obj[oldKey];\n return true;\n }\n return false;\n}\n\nfunction convertObjectsKeysToCamelCase(obj) {\n Object.keys(obj).forEach((key) => {\n renameKey(obj, key, camelCase(key));\n });\n}\n\n/**\n * This method parse names of the every collection entry and if the name is like \"name[]\"\n * we will build an array in the collection, if the name is \"name[test]\" we will add name as object\n *\n * @param collection\n * @param name\n * @param value\n */\nfunction addToAssociativeCollection(collection, name, value) {\n const arrayRegexp = /(.+)\\[(.*)\\]/;\n const arrayParseResult = name.match(arrayRegexp);\n if (arrayParseResult !== null) {\n name = arrayParseResult[1];\n const key = arrayParseResult[2];\n const isObj = key !== '' && !/^\\d+$/.test(key);\n if (!(name in collection)) {\n collection[name] = isObj ? {} : [];\n }\n if (isObj) {\n collection[name][key] = value;\n } else {\n collection[name].push(value);\n }\n } else {\n collection[name] = value;\n }\n}\n\nexport {\n isEqual,\n isObject,\n addToAssociativeCollection,\n renameKey,\n clone,\n isPartialEqual,\n convertObjectsKeysToCamelCase,\n removeEmptyKeys,\n};\n","import { isObject, isEqual, addToAssociativeCollection } from './object-helper';\n\n/**\n * Builds query string by passed key-value object and concatenates it properly to the origin url\n * @param url\n * @param params\n * @param defaultParams\n * @returns {string}\n */\nfunction getUrlByParams(url, params, defaultParams = {}) {\n const paramsPrefix = url.indexOf('?') === -1 ? '?' : '&';\n const paramsString = getQueryStringByParams(params, defaultParams);\n return `${url}` + (paramsString !== '' ? `${paramsPrefix}${paramsString}` : '');\n}\n\n/**\n * Build query string by the passed key-value object of the query parameters\n * The particular parameter won't be present in the final query string if its current value is equal to its default value from defaultParams\n * @param params\n * @param defaultParams\n * @returns {string}\n */\nfunction getQueryStringByParams(params, defaultParams = {}) {\n const searchableParams = getSearchableParams(params, defaultParams);\n return param(searchableParams);\n}\n\n/**\n * Filter params object by removing particular parameter if it has the value that is equal to its default value from defaultParams\n * @param params\n * @param defaultParams\n * @returns {{}}\n */\nfunction getSearchableParams(params, defaultParams = {}) {\n const result = {};\n Object.keys(params).forEach((p) => {\n if (!(p in defaultParams) || !isParametersValuesEqual(params[p], defaultParams[p])) {\n result[p] = params[p];\n }\n });\n return result;\n}\n\nfunction isParametersValuesEqual(parameter1, parameter2) {\n if (\n (Array.isArray(parameter1) && !Array.isArray(parameter2)) ||\n (!Array.isArray(parameter1) && Array.isArray(parameter2)) ||\n (isObject(parameter1) && !isObject(parameter2)) ||\n (!isObject(parameter1) && isObject(parameter2))\n ) {\n throw new Error('one of the arguments is Array or Object and another is not');\n } else if (\n (Array.isArray(parameter1) && Array.isArray(parameter2)) ||\n (isObject(parameter1) && isObject(parameter2))\n ) {\n return isEqual(parameter1, parameter2);\n }\n return parameter1 === parameter2;\n}\n\n/**\n * Returns the object of the query parameters of the passed location\n * @param location\n * @returns {*}\n */\nfunction getSearchFromLocation(location) {\n return getParamsFromQueryString(location.search.substring(1));\n}\n\n/**\n * Split the passed query string and returns key-value object of get parameters\n * @param queryString\n * @returns {{}}\n */\nfunction getParamsFromQueryString(queryString) {\n const str = queryString.replace(/\\/$/, '') || '';\n const result = {};\n const parsedQueryParameters = [];\n\n str.split('&').forEach((keyValue) => {\n if (keyValue) {\n let value = keyValue.split('=');\n const key = decodeURIComponent(value[0]);\n value = value[1] ? decodeURIComponent(value[1]) : '';\n parsedQueryParameters.push([key, value]);\n }\n });\n parsedQueryParameters.forEach(([key, value]) => addToAssociativeCollection(result, key, value));\n\n return result;\n}\n\n/**\n * Returns the value of the passed parameter name of the passed location.\n * Return null if paramName isn't present in the location's query string\n *\n * @param paramName\n * @param location\n * @returns {*}\n */\nfunction getParamFromLocation(paramName, location) {\n const params = getSearchFromLocation(location);\n if (paramName in params) {\n return params[paramName];\n }\n\n return null;\n}\n\nfunction getFullUrlWithAppliedParams(location, applyParams) {\n const params = getSearchFromLocation(location);\n\n function isMeaningfulValue(value) {\n return value !== undefined && value !== null;\n }\n\n const finalParams = {};\n\n Object.keys(params).forEach((key) => {\n if (key in applyParams) {\n if (isMeaningfulValue(applyParams[key])) {\n finalParams[key] = applyParams[key];\n }\n } else {\n finalParams[key] = params[key];\n }\n });\n\n Object.keys(applyParams).forEach((key) => {\n if (!(key in params) && isMeaningfulValue(applyParams[key])) {\n finalParams[key] = applyParams[key];\n }\n });\n\n return `${location.origin}${getUrlByParams(location.pathname, finalParams)}`;\n}\n\nfunction param(params) {\n const s = [];\n const add = function (k, v) {\n v = typeof v === 'function' ? v() : v;\n v = (v === null || v === undefined) ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n };\n const buildParams = function (prefix, obj) {\n let i;\n let len;\n\n if (prefix) {\n if (Array.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n buildParams(\n prefix + '[' + (typeof obj[i] === 'object' && obj[i] ? i : i) + ']',\n obj[i]\n );\n }\n } else if (String(obj) === '[object Object]') {\n Object.keys(obj).forEach((_key) => {\n buildParams(prefix + '[' + _key + ']', obj[_key]);\n });\n } else {\n add(prefix, obj);\n }\n } else if (Array.isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n Object.keys(obj).forEach((_key) => {\n buildParams(_key, obj[_key]);\n });\n }\n return s;\n };\n\n return buildParams('', params).join('&');\n}\n\nfunction transformRequestOptions(params) {\n let options = '';\n Object.keys(params).forEach((key) => {\n if (typeof params[key] !== 'object' && params[key]) {\n options += `${key}=${params[key]}&`;\n } else if (typeof params[key] === 'object' && params[key] && params[key].length) {\n params[key].forEach((el) => {\n options += `${key}=${el}&`;\n });\n }\n });\n\n return options ? options.slice(0, -1) : options;\n}\n\nexport {\n getUrlByParams,\n getQueryStringByParams,\n getSearchableParams,\n isParametersValuesEqual,\n getSearchFromLocation,\n getParamsFromQueryString,\n getParamFromLocation,\n getFullUrlWithAppliedParams,\n transformRequestOptions\n};\n","import axios from 'axios';\n\nconst api = axios.create({\n timeout: 120000,\n});\n\nexport { api };\n"],"sourceRoot":""}