{"version":3,"file":"chunks/802.chunk.a90cc62734aad9323007.js","mappings":"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","sources":["webpack://SMAesthetics/./common/react/utils/ObjectKeysPrefix/objectKeysPrefix.ts","webpack://SMAesthetics/./common/react/utils/utils.ts","webpack://SMAesthetics/./common/react/utils/FIltersParamsFromUrl/FiltersParamsFromUrl.tsx","webpack://SMAesthetics/./common/react/components/Core/ItemsProvider/ItemsProvider.tsx","webpack://SMAesthetics/./common/react/components/Forms/Button.tsx","webpack://SMAesthetics/./common/react/components/Core/ItemsProvider/LoadMoreButton.tsx","webpack://SMAesthetics/./common/typescript/utils/url.ts"],"sourcesContent":["import { BaseParams } from '@common/typescript/objects/BaseParams';\r\n\r\nexport function addPrefix(obj: object, prefix: string) {\r\n\treturn Object.entries(obj)\r\n\t\t.reduce((acc, [key, value]) => ({ ...acc, [`${prefix}${key}`]: value }), {});\r\n}\r\n\r\nexport function removePrefix(obj: object, prefix: string) {\r\n\treturn Object.entries(obj)\r\n\t\t.reduce((acc, [key, value]) => {\r\n\t\t\tif (key.indexOf(prefix) !== 0 || prefix === '') {\r\n\t\t\t\treturn { ...acc, [key]: value };\r\n\t\t\t}\r\n\t\t\treturn { ...acc, [key.slice(prefix.length)]: value };\r\n\t\t}, {});\r\n}\r\n\r\nexport function filterByPrefix(obj: object, prefix: string) {\r\n\treturn Object.entries(obj)\r\n\t\t.reduce((acc, [key, value]) => (\r\n\t\t\tkey.indexOf(prefix) !== 0\r\n\t\t\t\t? acc : { ...acc, [key]: value }\r\n\t\t), {});\r\n}\r\n\r\nexport function getKeysByPrefix(obj: BaseParams, prefix?: string): BaseParams {\r\n\tif (!prefix) {\r\n\t\treturn obj;\r\n\t}\r\n\r\n\treturn removePrefix(filterByPrefix(obj, prefix), prefix);\r\n}\r\n","import { WithId } from '@common/typescript/objects/WithId';\r\n\r\nexport interface Named {\r\n\tfirstName: string;\r\n\tlastName: string;\r\n}\r\n\r\ninterface Props {\r\n\touterArray: string;\r\n\tinnerArray: string;\r\n}\r\n\r\ntype PartialOnNullValue = {\r\n\t[P in keyof T]?: T[P] | null;\r\n};\r\n\r\nexport type ClearValue = {\r\n\t[P in keyof T]?: T[P] extends Array ? Array> : T[P] | null;\r\n};\r\n\r\ninterface NamedWithEmail extends Named {\r\n\temail: string;\r\n}\r\n\r\nexport const getUserName = (item: Named) => (item ? `${item.lastName || ''} ${item.firstName || ''}`.trim() : '');\r\n\r\nexport const getUserNameReverseOrder = (item: Named) => (item ? `${item.firstName || ''} ${item.lastName || ''}`.trim() : '');\r\n\r\nexport const getUserNameWithEmail = (item?: NamedWithEmail) => (item ? `${item.lastName || ''} ${item.firstName || ''} (${item.email})` : '');\r\n\r\nexport const imageSize = (s, size) => {\r\n\treturn s ? s.replace(/.(\\w+$)/, `${size}.$1`) : '';\r\n};\r\n\r\nexport const sortByStringField = (field: string) => (a, b) => {\r\n\tif (a[field] < b[field]) {\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tif (a[field] > b[field]) {\r\n\t\treturn 1;\r\n\t}\r\n\r\n\treturn 0;\r\n};\r\n/* eslint-disable */\r\nexport const generateGUID = (): string => {\r\n\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n\t\tconst r = Math.random() * 16 | 0;\r\n\t\tconst v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n\r\n\t\treturn v.toString(16);\r\n\t});\r\n};\r\n/* eslint-enable */\r\n\r\nexport const getQueryParams = (query: string, keys: Array): object => {\r\n\tconst params = new URLSearchParams(query);\r\n\tconst result = {};\r\n\tkeys.forEach((key) => result[key] = params.get(key));\r\n\r\n\treturn result;\r\n};\r\n\r\nexport const asInteger = (source: string | null, defaultValue: number = 1) => {\r\n\treturn (source && parseInt(source, 10)) || defaultValue;\r\n};\r\n\r\nexport const returnAfterSubmit = (\r\n\tvalues: TValues,\r\n\tfields: Array = [],\r\n\tresponse?: TResponse,\r\n): TValues | object => {\r\n\tif (!fields.length) {\r\n\t\treturn {};\r\n\t}\r\n\r\n\tconst isArrayOfObjects = (value): boolean => value instanceof Array && value[0] instanceof Object && value[0].id;\r\n\r\n\tconst valuesToReturn = {};\r\n\tfor (const item of fields) {\r\n\t\tconst isString = typeof item === 'string';\r\n\t\tconst key = (isString ? item : Object.keys(item)[0]) as string;\r\n\r\n\t\tvaluesToReturn[key] = values[key];\r\n\r\n\t\tif (response && isArrayOfObjects(valuesToReturn[key])) {\r\n\t\t\tvaluesToReturn[key] = valuesToReturn[key].filter((value) => !value.deleted).map((obj, index) =>\r\n\t\t\t\t(response[key] && response[key][index] ? {\r\n\t\t\t\t\t...obj,\r\n\t\t\t\t\t...(isString ? {} : returnAfterSubmit(obj, item[key], response[key][index])),\r\n\t\t\t\t\tid: response[key][index].id,\r\n\t\t\t\t} : obj));\r\n\t\t}\r\n\t}\r\n\treturn valuesToReturn;\r\n};\r\n","import { parseQuery } from '@common/typescript/utils/url';\r\nimport { BaseParams } from '@common/react/objects/BaseParams';\r\n\r\nexport const urlHandleItems = (searchObj: object, key: string, step: number = 0, prefix?: string) => {\r\n\tlet res: string = '';\r\n\r\n\tif (key === `${prefix || ''}column` && Array.isArray(searchObj[key])) {\r\n\t\tres = `${key}=[${searchObj[key].map((item) => `[${item ? Object.keys(item).map((col) => item[col]) : ''}]`)}]`;\r\n\t} else {\r\n\t\tres = Array.isArray(searchObj[key]) ? `${key}=[${searchObj[key]}]` : `${key}=${searchObj[key]}`;\r\n\t}\r\n\r\n\treturn res;\r\n};\r\n\r\nexport const handleUrl = (searchParams: object, location, history, page?: number, prefix?: string, pageInSearch?: boolean) => {\r\n\tconst searchObj = { ...parseQuery(location.search), ...searchParams };\r\n\r\n\tconst emptyValues = ['', 'undefined', '-1', undefined, -1];\r\n\r\n\tconst search = Object.keys(searchObj)\r\n\t\t.filter((k) => emptyValues.indexOf(searchObj[k]) === -1)\r\n\t\t.map((k) => urlHandleItems(searchObj, k, 0, prefix)).join('&');\r\n\r\n\thistory.replace({\r\n\t\t...history.location,\r\n\t\tsearch,\r\n\t\tpathname: `${pageInSearch ? location.pathname : location.pathname.replace(/\\/-?\\d+/, `/${page || 1}`)}`,\r\n\t});\r\n};\r\n\r\nexport const getSearchParamsFromUrl = (location, prefix?: string) => {\r\n\tconst searchObj: BaseParams = parseQuery(location.search);\r\n\r\n\tObject.keys(searchObj).forEach((key) => {\r\n\t\tconst value: string = searchObj[key];\r\n\r\n\t\tif (value === '') {\r\n\t\t\tsearchObj[key] = undefined;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (key === `${prefix || ''}column`) {\r\n\t\t\tconst matches = value.slice(1, value.length - 1).split(/[[\\]]{1,2}/).filter((q) => q.length > 3);\r\n\r\n\t\t\tif (matches && matches.length) {\r\n\t\t\t\tconst result: Array = [];\r\n\r\n\t\t\t\tmatches.map((match) => {\r\n\t\t\t\t\tconst values = match.split(',');\r\n\r\n\t\t\t\t\tif (values && values.length === 2) {\r\n\t\t\t\t\t\tresult.push({\r\n\t\t\t\t\t\t\tcaption: values[0],\r\n\t\t\t\t\t\t\tdirection: values[1],\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tsearchObj[key] = result;\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (value === 'true') {\r\n\t\t\tsearchObj[key] = true;\r\n\t\t} else if (value === 'false') {\r\n\t\t\tsearchObj[key] = false;\r\n\t\t} else if (value === 'null') {\r\n\t\t\tsearchObj[key] = null;\r\n\t\t} else if (value[0] === '[' && value[value.length - 1] === ']') {\r\n\t\t\tif (value === '[]') {\r\n\t\t\t\tsearchObj[key] = [];\r\n\t\t\t} else {\r\n\t\t\t\tsearchObj[key] = value.slice(1, value.length - 1).split(',').map((v) => ((+v || +v === 0) ? +v : v));\r\n\t\t\t}\r\n\t\t} else if (+value || +value === 0) {\r\n\t\t\tsearchObj[key] = +value;\r\n\t\t}\r\n\t});\r\n\r\n\treturn searchObj;\r\n};\r\n","/**\r\n * ## ItemsProvider.tsx ##\r\n * This file contains ItemsProvider component\r\n * @packageDocumentation\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { useLocation, useHistory, useParams } from 'react-router-dom';\r\n\r\nimport once from 'lodash/once';\r\nimport { AnySchema, ValidationError } from 'yup';\r\n\r\nimport { BaseParams } from '@common/typescript/objects/BaseParams';\r\nimport {\r\n\taddPrefix,\r\n\tgetKeysByPrefix,\r\n} from '@common/react/utils/ObjectKeysPrefix/objectKeysPrefix';\r\nimport { ClearValue, generateGUID } from '@common/react/utils/utils';\r\n\r\nimport { List } from '@common/typescript/objects/List';\r\nimport { WithDeleted } from '@common/typescript/objects/WithDeleted';\r\nimport { handleUrl, getSearchParamsFromUrl } from '@common/react/utils/FIltersParamsFromUrl/FiltersParamsFromUrl';\r\nimport useRequest from '@common/react/hooks/useRequest';\r\nimport { Nullable } from '@common/typescript/objects/Nullable';\r\nimport { useRequestProviderContext } from '@common/react/components/RequestProvider/RequestProvider';\r\nimport useAbortController from '@common/react/hooks/useAbortController';\r\n\r\nexport enum Mode {\r\n\tView,\r\n\tEdit\r\n}\r\n\r\nexport enum SortingDirection {\r\n\tDefault = 0,\r\n\tAscending = 1,\r\n\tDescending = 2\r\n}\r\n\r\n/**\r\n * used to define sorting\r\n */\r\nexport interface ColumnFilter {\r\n\tcaption: string;\r\n\tdirection: SortingDirection;\r\n}\r\n\r\nexport interface WithKey extends WithDeleted {\r\n\tkeyGUID?: string;\r\n}\r\n\r\ninterface Edits {\r\n\t[key: string]: T;\r\n}\r\n\r\ninterface Loaders {\r\n\t[key: string]: boolean;\r\n}\r\n\r\ninterface Errors {\r\n\t[key: string]: {\r\n\t\terr: BaseParams,\r\n\t\tsubmitCount: number;\r\n\t};\r\n}\r\n\r\ninterface FiltersRef {\r\n\tfilters: BaseParams;\r\n\tsilent?: boolean;\r\n\tconcatResult?: boolean;\r\n\tresetFilters?: boolean;\r\n}\r\n\r\n/**\r\n * defines pagination\r\n */\r\nexport interface PaginationState {\r\n\t/**\r\n\t * Current page number\r\n\t */\r\n\tcurrent: number;\r\n\t/**\r\n\t * Number of data items per page\r\n\t */\r\n\tpageSize: number;\r\n\t/**\r\n\t * Total number of data items\r\n\t */\r\n\ttotal: number;\r\n}\r\n\r\nexport type PaginationOptions = Partial\r\n\r\n/**\r\n * type of second argument RenderItem\r\n */\r\nexport interface RenderItemProps {\r\n\t/**\r\n\t * item loading state\r\n\t */\r\n\tloading: boolean;\r\n\t/**\r\n\t * callback to save the passed element\r\n\t * @param item - data that will replace the element and will be sent in the request\r\n\t * @param saveRequest - custom request name, if you need a request different from the request in ItemsProvider\r\n\t */\r\n\tsave: (item?: T, saveRequest?: string) => void;\r\n\t/**\r\n\t * update the current element without request\r\n\t * @param item - partial data that will replace the value in the element\r\n\t */\r\n\tupdate: (item: Partial) => void;\r\n\t/**\r\n\t * callback to update and save the current element\r\n\t * @param item - partial data that will replace the value in the element before sending the request\r\n\t * @param saveRequest - custom request name, if you need a request different from the request in ItemsProvider\r\n\t */\r\n\tupdateAndSave: (item: Partial, saveRequest?: string) => void;\r\n\t/**\r\n\t * callback to reload ItemsProvider data\r\n\t * @param pagination - new pagination options\r\n\t * @param resetFilters - determines whether filters need to be reset to default\r\n\t */\r\n\treload: (p: Partial, resetFilters?: boolean | undefined) => Promise>;\r\n\t/**\r\n\t * callback to add new items at ItemsProvider\r\n\t * @param item - new item data\r\n\t */\r\n\tadd: (item?: Partial) => void;\r\n}\r\n\r\ntype StringBoolNumber = string | boolean | number;\r\n\r\n/**\r\n * filter value change object\r\n */\r\nexport interface HandleChangeEventElement {\r\n\tcurrentTarget: {\r\n\t\tname: string;\r\n\t\tvalue: Nullable>;\r\n\t};\r\n}\r\n\r\n/**\r\n * @typeParam T - T Any WithKey entity\r\n * This is function type. Used to render the list element.\r\n * The function accepts tho argument - item and props.\r\n * item - The element for which the render is called.\r\n * props - The element state and action parameters\r\n */\r\nexport type RenderItem = (item: T, props: RenderItemProps) => React.ReactNode;\r\n\r\ntype LikeList = List\r\n\r\n/**\r\n * This is the description of the interface\r\n *\r\n * @interface ItemsProviderProps\r\n * @typeParam T - T Any WithKey entity\r\n */\r\nexport interface ItemsProviderProps {\r\n\t/**\r\n\t * determines by default which elements to load and how to save them\r\n\t */\r\n\ttype: string;\r\n\t/**\r\n\t * - 1. ReactElement to be wrapped in an ItemsProvider context\r\n\t * - 2. function with context ItemsProvider as first argument\r\n\t */\r\n\tchildren?: React.ReactNode | ((context: ItemsProviderContext) => React.ReactNode);\r\n\t/**\r\n\t * default ItemsProvider elements.\r\n\t * @default []\r\n\t */\r\n\titems?: Array;\r\n\t/**\r\n\t * default _OtherData value.\r\n\t * _OtherData is used when a load request returns something other than count, execution, offset and list.\r\n\t * Stores this data\r\n\t */\r\n\totherData?: Other;\r\n\t/**\r\n\t * default filters\r\n\t */\r\n\tfilters?: BaseParams;\r\n\t/**\r\n\t * load request name. The default is made up of type.\r\n\t */\r\n\tloadRequest?: string;\r\n\t/**\r\n\t * save request name. The default equal type.\r\n\t * @default type\r\n\t */\r\n\tsaveRequest?: string;\r\n\t/**\r\n\t * save request name.\r\n\t * @default ''\r\n\t */\r\n\tsaveAllRequest?: string;\r\n\t/**\r\n\t * default pagination value\r\n\t */\r\n\tpagination?: PaginationOptions;\r\n\t/**\r\n\t * add - used when addItem was called with no arguments. Sets default values or a new element\r\n\t * @param items - current items in ItemsProvider state\r\n\t * @returns T - new ItemsProvider element\r\n\t */\r\n\tadd?: (items: Array) => T;\r\n\t/**\r\n\t * defines whether it is allowed to edit several elements at the same time\r\n\t */\r\n\tmultiple?: boolean;\r\n\t/**\r\n\t * schema for checking elements before saving.\r\n\t */\r\n\tvalidationSchema?: AnySchema;\r\n\t/**\r\n\t * transform item before send to server\r\n\t */\r\n\tclearForSubmit?: (item: T) => ClearValue | T;\r\n\t/**\r\n\t * error handling function for all requests\r\n\t * @param error - error text\r\n\t */\r\n\tonRequestError?: ((error: string) => void);\r\n\t/**\r\n\t * error handling function for load request and will be used instead of onRequestError\r\n\t * @param error - error text\r\n\t */\r\n\tonLoadRequestError?: ((error: string) => void);\r\n\t/**\r\n\t * error handling function for save, saveAll and deleteAll requests and will be used instead of onRequestError\r\n\t * @param error - error text\r\n\t */\r\n\tonSaveRequestError?: ((error: string) => void);\r\n\t/**\r\n\t * Validation error handling function\r\n\t */\r\n\tonValidationError?: ((key, err, error: Error) => void);\r\n\tmode?: Mode;\r\n\t/**\r\n\t * key to store the functions of the child Item Provider\r\n\t */\r\n\tobjectKey?: string;\r\n\t/**\r\n\t * object key to save results after calling a function from ref\r\n\t */\r\n\tarrayName?: string;\r\n\t/**\r\n\t * load callback\r\n\t * @param res - request result\r\n\t */\r\n\tonLoad?: (res: List & Other) => void;\r\n\t/**\r\n\t * function to convert items after load\r\n\t * @param res - request result\r\n\t * @param filters - current filters\r\n\t */\r\n\ttransformItems?: (res: Array, filters: BaseParams) => Array;\r\n\t/**\r\n\t * filters that will not be put in the url. These filters are expected to be fixed\r\n\t */\r\n\tunhandledFilters?: BaseParams;\r\n\t/**\r\n\t * A parameter that determines whether to add filters to the url\r\n\t */\r\n\twithHandleUrl?: boolean;\r\n\t/**\r\n\t * filter processing before putting in url.\r\n\t */\r\n\ttransformFiltersBeforeHandleUrl?: (filters) => BaseParams;\r\n\t/**\r\n\t * url pathname\r\n\t */\r\n\tpath?: string;\r\n\tfiltersPrefix?: string;\r\n\t/**\r\n\t * how handle page in url.\r\n\t * `pathname/${page}` or `${pathname}?page=${page}`\r\n\t * @default false\r\n\t */\r\n\tpageInSearch?: boolean;\r\n\t/**\r\n\t * add new element as first or end\r\n\t * @default false\r\n\t */\r\n\taddedFirst?: boolean;\r\n\t/**\r\n\t * will set that filters if load called by resetFilters flag\r\n\t */\r\n\tdefaultFilters?: BaseParams;\r\n\t/**\r\n\t * callback used after load if resetFilters is true\r\n\t */\r\n\tafterResetFilters?: (filters?: BaseParams) => void; // for clear autocompletes or other filters\r\n\t/**\r\n\t * default edit items\r\n\t */\r\n\teditItems?: Edits;\r\n\t/**\r\n\t * that items will set in itemsProvider state\r\n\t * used as dependencies in useEffect\r\n\t */\r\n\tsyncItems?: Array;\r\n\t/**\r\n\t * wait in ms before sending a request\r\n\t */\r\n\tdelay?: number; // ms\r\n\t/**\r\n\t * callback. Called when items changed inside ItemsProvider\r\n\t */\r\n\tonItemsChange?: (items: Array, filters?: BaseParams, res?: List) => void;\r\n\tskipValidationAll?: boolean;\r\n\t/**\r\n\t * render one item\r\n\t */\r\n\trender?: RenderItem;\r\n\t/**\r\n\t * callback. Called before save one item\r\n\t */\r\n\tbeforeSave?: (item: Array, oldItem: Array, callSave: () => any) => any;\r\n\t/**\r\n\t * callback. Called after save one item\r\n\t */\r\n\tonSave?: (item: T, response?: T) => void;\r\n\t/**\r\n\t * callback. Called after save all edit items. After receiving a response, reloads the data\r\n\t */\r\n\tonSaveAll?: (items: Array) => void;\r\n\t/**\r\n\t * transform items after save\r\n\t */\r\n\ttransformAfterSave?: (prevItem: T, editedItem: T, response: T) => T;\r\n\t/**\r\n\t * init load option\r\n\t */\r\n\tskipInitLoad?: boolean;\r\n\t/**\r\n\t * get parameters from url\r\n\t */\r\n\tsearchParamsFromUrl?: (location, prefix?: string) => BaseParams;\r\n\t/**\r\n\t * delete all request name. filters object is used as request parameter\r\n\t * @default ''\r\n\t */\r\n\tdeleteAllRequest?: string;\r\n\t/**\r\n\t * time to live (ms) for cached response at RequestProvider if cache is available\r\n\t */\r\n\tttl?: number;\r\n\t/**\r\n\t * use when the response does not return a list. For example, we can convert an array to a list.\r\n\t *\r\n\t * - (res: Array) => ({ list: res, offset: 0, execution: 0, offset: 0 })\r\n\t *\r\n\t * or we can solve some value and put it in otherData. fields from the returned object will be placed in\r\n\t * otherData, excluding offset, execution, list, count. otherData type is Omit, 'list' | 'count' | 'execution' | 'offset'>\r\n\t *\r\n\t * - (res: Array) => ({ list: res, count: res.length, execution: 0, offset: 0 })\r\n\t */\r\n\ttransformResponse?: (res: any) => LikeList;\r\n\t/**\r\n\t* if the flag is true syncItems will be used as items directly without using useEffect\r\n\t* */\r\n\tuseSyncItemsInsteadHook?: boolean;\r\n}\r\n\r\n/**\r\n * This is the description of the interface\r\n *\r\n * @interface ItemsProviderContextState\r\n * @typeParam T - T Any WithKey entity\r\n */\r\nexport interface ItemsProviderContextState {\r\n\titems: Array;\r\n\t/**\r\n\t * ItemsProvider loading state\r\n\t */\r\n\tloading: boolean;\r\n\t/**\r\n\t * ItemsProvider pagination\r\n\t */\r\n\tpagination: PaginationState;\r\n\tfilters: BaseParams;\r\n\t/**\r\n\t * stores edit items, key is item id. if item is new id < 0\r\n\t */\r\n\tedits: Edits;\r\n\t/**\r\n\t * stores items validation errors and submit count\r\n\t */\r\n\terrors: Errors;\r\n\tloaders: Loaders;\r\n\t/**\r\n\t * defines whether it is allowed to edit several elements at the same time\r\n\t */\r\n\tmultiple: boolean;\r\n\ttype: string;\r\n\tselectedRows: Array;\r\n\t/**\r\n\t * OtherData is used when a load request returns something other than count, execution, offset and list.\r\n\t */\r\n\totherData: Other;\r\n\t/**\r\n\t * add new element as first or end. By default false\r\n\t */\r\n\taddedFirst?: boolean;\r\n\t/**\r\n\t * if wrapped by AdvancedItemsProvider\r\n\t */\r\n\tadvancedItems?: Array;\r\n\t/**\r\n\t * transform items after save\r\n\t */\r\n\ttransformAfterSave: (prevItem: T, editedItem: T, response: T) => T;\r\n\t/**\r\n\t * link to prevent reload from being called. For example, after deleting an element, if elements are updated from notifications\r\n\t */\r\n\tdeleting: React.MutableRefObject;\r\n\t/**\r\n\t * delete all request name. The default is ''.\r\n\t */\r\n\tdeleteAllRequest?: string;\r\n\t/**\r\n\t * error message\r\n\t */\r\n\terror: string;\r\n\t/**\r\n\t * save all request name.\r\n\t */\r\n\tsaveAllRequest?: string;\r\n}\r\n\r\nexport interface ItemsProviderContextActions {\r\n\t/**\r\n\t * load new items for ItemsProvider\r\n\t * @param data - Loading options such as filters, page number and number of items per page\r\n\t * @param silent - If true load new items without change 'loading' state\r\n\t * #for example if we want to update an element without showing a loading indicator\r\n\t * @param concatResult - Defines whether to replace old elements with new ones or add them to old ones.\r\n\t * #used in loadMore function\r\n\t * @param resetFilters - Determines whether filters should be reset to default or not\r\n\t * @param reverseResult - If true work as Array.reverse(items)\r\n\t * @param useResult - {use: boolean}. If need prevent setState after load, change use to false\r\n\t * # change as reference useResult.use = false\r\n\t * @param edits - edits after save\r\n\t * @return Promise>\r\n\t */\r\n\tload: (\r\n\t\tdata?: LoadData,\r\n\t\tsilent?: boolean,\r\n\t\tconcatResult?: boolean,\r\n\t\tresetFilters?: boolean,\r\n\t\treverseResult?: boolean,\r\n\t\tuseResult?: { use: boolean },\r\n\t\tedits?: Edits\r\n\t) => Promise>;\r\n\t/**\r\n\t * save item\r\n\t * @param record - data sent in the request\r\n\t * @param skipValidation - ignore validation or no. By default is undefined\r\n\t * @param saveRequest - requestName. By default used saveRequest from ItemsProvider props\r\n\t * @return Promise>\r\n\t */\r\n\tsave: (record, skipValidation?: boolean, saveRequest?: string) => Promise;\r\n\t/**\r\n\t * save all items\r\n\t * @param skipValidation - ignore validation or no. By default is undefined\r\n\t */\r\n\tsaveAll: (skipValidation?: boolean) => Promise | undefined;\r\n\t/**\r\n\t * update items\r\n\t * @param items - set that items in ItemsProvider state\r\n\t * @param resetEdits - reset edits or not. default true\r\n\t */\r\n\tupdate: (items: Array, resetEdits?: boolean) => void;\r\n\t/**\r\n\t * add new item in edits.\r\n\t * @param items - set that items in ItemsProvider state\r\n\t */\r\n\tadd: (item?: Partial) => T;\r\n\tsetEdits: React.Dispatch>>;\r\n\tsetErrors: React.Dispatch>;\r\n\t/**\r\n\t * reload items.\r\n\t * @param p - load params. By default use current page and pageSize.\r\n\t * @param resetFilters - Determines whether filters should be reset to default or not\r\n\t */\r\n\treload: (p?: LoadData, resetFilters?: boolean) => Promise>;\r\n\t/**\r\n\t * add new item in edits\r\n\t * @param record - item to be edited\r\n\t */\r\n\tsetEdit: (record: T) => void;\r\n\t/**\r\n\t * callback to update items\r\n\t * @param items - new items value\r\n\t * @param resetEdits - reset edits or not. default true\r\n\t */\r\n\tsetItems: (items: Array | ((items: Array) => Array), resetEdits?: boolean) => void;\r\n\taddRef: (key: string | number, f) => void;\r\n\t/**\r\n\t * callback to update items\r\n\t * @param items - new items value\r\n\t */\r\n\tsetSelectedRows: React.Dispatch>>;\r\n\t/**\r\n\t * callback to remove passed elements\r\n\t * @param items - values to be removed\r\n\t * @param reloadHandler - used to prevent reload if need. by default used 'reload' function\r\n\t */\r\n\tdeleteItems: (items: Array, reloadHandler?: (p?: LoadData, resetFilters?: boolean) => Promise>) => Promise;\r\n\t/**\r\n\t * load new items. Processes params before calling load if HandleChangeEventElement is passed\r\n\t *\r\n\t * This callback function handles filters returning HandleChangeEventElement (for example SimpleSearchInput or SelectFilter).\r\n\t * If you use load as props for this filter without processing, an error will occur.\r\n\t * @param params - load filters or HandleChangeEventElement\r\n\t */\r\n\thandleChange: (params?: BaseParams) => Promise | undefined>;\r\n\t/**\r\n\t * load new items and concat them with previous items\r\n\t * @param data - load filters\r\n\t * @param reverseResult - If true work as Array.reverse(items)\r\n\t * @param silent - If true load new items without change 'loading' state\r\n\t */\r\n\tloadMore: (data?: LoadData, reverseResult?: boolean, silent?: boolean) => Promise>;\r\n\t/**\r\n\t * save all edit items\r\n\t * @param items - items to be sent in the request\r\n\t * @param reloadHandler - used to prevent reload if need. by default used 'reload' function\r\n\t * @param silent - If true load new items without change 'loading' state\r\n\t */\r\n\tsaveItems: (items: Array, reloadHandler?: (p?: LoadData, resetFilters?: boolean) => Promise>) => void;\r\n\tsetLoading: React.Dispatch>;\r\n\tvalidateAll: (skipValidation?: boolean) => Promise | undefined>;\r\n\t/**\r\n\t update one item state\r\n\t * @param item - the new value of the item. result is {...prev, ...item};\r\n\t */\r\n\tupdateItem: (item: Omit, 'id'> & WithDeleted) => void;\r\n\t/**\r\n\t * delete all items\r\n\t * @param reloadHandler - used to prevent reload if need. by default used 'reload' function\r\n\t */\r\n\tdeleteAll: (reloadHandler?: (p?: LoadData, resetFilters?: boolean) => Promise>) => void;\r\n}\r\n\r\ninterface LoadData extends BaseParams {\r\n\tpage?: number;\r\n\tpageSize?: number;\r\n\toffset?: number;\r\n}\r\n\r\nexport interface ItemsProviderContext = ItemsProviderContextActions> {\r\n\tstate: ItemsProviderContextState;\r\n\tactions: A;\r\n}\r\n\r\nexport const createItemsProviderContext = once(\r\n\t = ItemsProviderContextActions>() =>\r\n\t\tReact.createContext({} as ItemsProviderContext),\r\n);\r\n\r\nexport const useItemsProviderContext = = ItemsProviderContextActions>()\r\n\t: ItemsProviderContext => React.useContext>(createItemsProviderContext());\r\n\r\n/**\r\n * addGUID - adds the keyGUID property to the elements of the array\r\n * @param items - Array\r\n * @returns res\r\n */\r\nconst addGUID = (items: Array) => items.map((item) => ({ ...item, keyGUID: generateGUID() }));\r\n\r\n/**\r\n * defaultTransformFiltersBeforeHandleUrl - transform filters\r\n * @param filters - BaseParams\r\n * @returns res\r\n */\r\nexport const defaultTransformFiltersBeforeHandleUrl = (filters) => ({\r\n\t...filters,\r\n\tpage: undefined,\r\n\tcount: undefined,\r\n\tcurrent: undefined,\r\n\tshowSizeChanger: undefined,\r\n\ttotal: undefined,\r\n\toffset: undefined,\r\n\tpageSizeOptions: undefined,\r\n\tpageSize: filters.pageSize || filters.count,\r\n});\r\n\r\n/**\r\n * ItemsProvider component.\r\n *\r\n * usage examples:\r\n * - {React.ReactNode}\r\n * - {(context) => React.ReactNode}\r\n * - SingleItem}/>\r\n *\r\n * @typeParam T - T Any {WithKey}\r\n * @param props - ItemsProviderProps\r\n * @type {React.FC}\r\n * @returns React.ReactElement\r\n */\r\nexport const ItemsProvider: (p: ItemsProviderProps) => React.ReactElement = ({\r\n\titems = [],\r\n\ttype,\r\n\tfilters = {},\r\n\tloadRequest = type.includes('Remote') ? `${type.replace('Remote', '')}ListRemote` : `${type}List`,\r\n\tsaveRequest = type,\r\n\tsaveAllRequest = '',\r\n\tdeleteAllRequest = '',\r\n\tchildren = null as React.ReactNode,\r\n\tpagination = {\r\n\t\tcurrent: 1, pageSize: 10, total: 0,\r\n\t},\r\n\tadd = (items) => ({ id: -1 } as T),\r\n\tmultiple = false,\r\n\tvalidationSchema = undefined,\r\n\tclearForSubmit = (item) => item,\r\n\tonRequestError = (error: string) => {\r\n\t\treturn undefined;\r\n\t},\r\n\tonLoadRequestError,\r\n\tonSaveRequestError,\r\n\tonValidationError = (key, err, error) => {\r\n\t\treturn undefined;\r\n\t},\r\n\tmode = Mode.View,\r\n\tobjectKey = '',\r\n\tarrayName = '',\r\n\tonLoad,\r\n\ttransformItems = (res, filters) => res,\r\n\tunhandledFilters = {},\r\n\ttransformFiltersBeforeHandleUrl = defaultTransformFiltersBeforeHandleUrl,\r\n\twithHandleUrl = false,\r\n\tfiltersPrefix = '',\r\n\tpath = '',\r\n\tpageInSearch = false,\r\n\tdefaultFilters = {} as BaseParams,\r\n\tafterResetFilters,\r\n\taddedFirst = false,\r\n\teditItems = undefined,\r\n\tsyncItems = undefined,\r\n\tdelay = 0,\r\n\tonItemsChange = undefined,\r\n\tskipValidationAll = false,\r\n\trender = undefined,\r\n\tskipInitLoad = true,\r\n\tonSave,\r\n\tbeforeSave,\r\n\tonSaveAll,\r\n\totherData = undefined,\r\n\ttransformAfterSave = (prevItem, editItem, response) => ({ ...prevItem, ...response, ...editItem }),\r\n\tsearchParamsFromUrl = getSearchParamsFromUrl,\r\n\tttl,\r\n\ttransformResponse = (res) => res,\r\n\tuseSyncItemsInsteadHook,\r\n}: ItemsProviderProps) => {\r\n\tconst ItemsContext = createItemsProviderContext();\r\n\tconst location = useLocation();\r\n\tconst history = useHistory();\r\n\tconst params = useParams<{page?: string}>();\r\n\r\n\tconst [edits, _setEdits] = React.useState>(editItems || {});\r\n\tconst [innerItems, _setItems] = React.useState>(items ? addGUID(transformItems(items, filters)) as Array : []);\r\n\tconst _items = useSyncItemsInsteadHook ? syncItems || [] : innerItems;\r\n\tconst [_otherData, setOtherData] = React.useState(otherData || {});\r\n\tconst [loaders, setLoaders] = React.useState({});\r\n\tconst [loading, setLoading] = React.useState(false);\r\n\tconst [error, _setError] = React.useState('');\r\n\tconst [_filters, setFilters] = React.useState({\r\n\t\t...filters,\r\n\t\tpageSize: pagination.pageSize,\r\n\t\tcurrent: pagination.current,\r\n\t\t...(withHandleUrl ? getKeysByPrefix(searchParamsFromUrl(location, filtersPrefix), filtersPrefix) : {}),\r\n\t});\r\n\tconst lastRequest = React.useRef> | null>(null);\r\n\tconst [_pagination, setPagination] = React.useState((withHandleUrl\r\n\t\t? {\r\n\t\t\t...pagination,\r\n\t\t\tcurrent: pageInSearch ? _filters.page || pagination.current : pagination.current,\r\n\t\t\tpageSize: _filters.pageSize || _filters.count || pagination.pageSize,\r\n\t\t}\r\n\t\t: {\r\n\t\t\t...pagination,\r\n\t\t}) as PaginationState);\r\n\tconst [errors, setErrors] = React.useState({});\r\n\tconst [id, setId] = React.useState(() => {\r\n\t\tif (items) {\r\n\t\t\tconst minId = Math.min(...items.map((item) => item.id));\r\n\t\t\tif (minId < 0) return minId;\r\n\t\t}\r\n\t\treturn -1;\r\n\t});\r\n\tconst [selectedRows, setSelectedRows] = React.useState>([]);\r\n\t// const [refs, setRef] = React.useState([]);\r\n\tconst filtersRef = React.useRef(null);\r\n\tconst request = useRequest();\r\n\tconst requestContext = useRequestProviderContext();\r\n\tconst deleting = React.useRef(false);\r\n\tconst [controller, setController] = useAbortController();\r\n\r\n\tconst clearError = (items, increment?) =>\r\n\t\tsetErrors(Object.keys(items)\r\n\t\t\t.reduce((acc, key) => ({\r\n\t\t\t\t...acc,\r\n\t\t\t\t[key]: { err: undefined, submitCount: (errors[key]?.submitCount || 0) + (increment || 0) },\r\n\t\t\t}), {}));\r\n\r\n\tconst setError = (key, err, increment?) =>\r\n\t\tsetErrors((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t[key]: { err, submitCount: (prev[key]?.submitCount || 0) + (increment || 0) },\r\n\t\t}));\r\n\r\n\tconst setEdits = (value) => {\r\n\t\t_setEdits((prev) => {\r\n\t\t\tconst newEdits = typeof value === 'function' ? value(prev) : value;\r\n\r\n\t\t\tclearError(newEdits);\r\n\r\n\t\t\treturn newEdits;\r\n\t\t});\r\n\t};\r\n\r\n\tconst refs = React.useRef({});\r\n\tconst setRef = (obj) => {\r\n\t\trefs.current = { ...refs.current, ...obj };\r\n\t};\r\n\r\n\tconst initEdits = (items, edits) => {\r\n\t\tlet _edits = edits;\r\n\r\n\t\tif (mode === Mode.Edit) {\r\n\t\t\tconst temp = {};\r\n\t\t\tlet unsavedItemsCount = 0;\r\n\r\n\t\t\tfor (let i = 0; i < items.length; i++) {\r\n\t\t\t\tconst edit = edits[items[i].id];\r\n\r\n\t\t\t\tif (!edit) {\r\n\t\t\t\t\tif (items[i].id < 0) {\r\n\t\t\t\t\t\titems[i].id = -1 - unsavedItemsCount;\r\n\t\t\t\t\t\tunsavedItemsCount++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttemp[items[i].id] = items[i];\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttemp[items[i].id] = { ...edit, ...items[i] };\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tsetId((prev) => {\r\n\t\t\t\tconst minId = Math.min(...items.map((item) => item.id));\r\n\t\t\t\tif (minId <= prev) return minId - 1;\r\n\t\t\t\treturn prev;\r\n\t\t\t});\r\n\r\n\t\t\t_edits = { ..._edits, ...temp };\r\n\t\t} else {\r\n\t\t\t_edits = {};\r\n\t\t}\r\n\r\n\t\treturn _edits;\r\n\t};\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (syncItems && !useSyncItemsInsteadHook) {\r\n\t\t\t_setItems(syncItems);\r\n\t\t\tsetEdits(initEdits(syncItems, edits));\r\n\t\t}\r\n\t}, [syncItems]); // syncItems should be memoized or kept in state to avoid endless re-renders\r\n\r\n\tReact.useEffect(() => {\r\n\t\tsetEdits(initEdits(!_items.length ? items : _items, editItems || edits));\r\n\t}, [mode, Object.keys(editItems || {}).sort().toString()]);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (withHandleUrl) {\r\n\t\t\tconst transformedFilters = {\r\n\t\t\t\t...transformFiltersBeforeHandleUrl(_filters),\r\n\t\t\t\tpage: pageInSearch ? _filters.page || _filters.current : undefined,\r\n\t\t\t};\r\n\t\t\tconst filters = filtersPrefix ? addPrefix(transformedFilters, filtersPrefix) : transformedFilters;\r\n\r\n\t\t\thandleUrl(filters, location, history, _filters.current, filtersPrefix, pageInSearch);\r\n\t\t}\r\n\t}, [_filters]);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (withHandleUrl && path && !params.page && location.search) {\r\n\t\t\thistory.replace({\r\n\t\t\t\t...location,\r\n\t\t\t\tpathname: `/${path.match(/\\/d+$/) ? path : `${path}/${_filters.current || ''}`}`,\r\n\t\t\t});\r\n\t\t}\r\n\t}, [_filters.current, location.search]);\r\n\r\n\tReact.useEffect(() => {\r\n\t\t!_items.length && items?.length && _setItems(items);\r\n\t\tsetEdits(initEdits(!_items.length ? items : _items, edits));\r\n\t}, []);\r\n\r\n\tReact.useEffect(() => {\r\n\t\t!skipInitLoad && reload(_pagination)\r\n\t\t\t.catch((err) => (typeof err !== 'string' || !err?.includes('aborted')) && console.log(err));\r\n\t\treturn () => {\r\n\t\t\tcontroller.abort();\r\n\t\t};\r\n\t}, []);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (skipInitLoad && items && requestContext?.actions?.updateCache) {\r\n\t\t\tconst pageSize = _pagination.pageSize;\r\n\t\t\tconst offset = _filters.offset || (pageSize !== _pagination.pageSize ? (_filters.current - 1) * +pageSize : 0);\r\n\t\t\trequestContext.actions.updateCache(\r\n\t\t\t\tloadRequest,\r\n\t\t\t\t{\r\n\t\t\t\t\t...unhandledFilters,\r\n\t\t\t\t\t..._filters,\r\n\t\t\t\t\tshowSizeChanger: undefined,\r\n\t\t\t\t\toffset,\r\n\t\t\t\t\tpage: _filters.offset ? undefined : _filters.current,\r\n\t\t\t\t\tcurrent: undefined,\r\n\t\t\t\t\tcount: pageSize,\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t...otherData,\r\n\t\t\t\t\tlist: items,\r\n\t\t\t\t\tcount: _pagination?.total,\r\n\t\t\t\t},\r\n\t\t\t\tttl,\r\n\t\t\t);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst setItems = (items, resetEdits: boolean = true) => {\r\n\t\t_setItems((prev) => {\r\n\t\t\tconst newItems = typeof items === 'function' ? items(prev) : items;\r\n\t\t\tonItemsChange && onItemsChange(newItems, _filters);\r\n\r\n\t\t\tresetEdits && setEdits((prev) => prev || initEdits(newItems, prev));\r\n\t\t\treturn newItems;\r\n\t\t});\r\n\t};\r\n\r\n\tconst updateItem = (item: Omit, 'id'> & WithDeleted) => {\r\n\t\tsetItems((prev) => prev.map((el) => (el.id === item.id ? { ...el, ...item, id: item.id } : el)));\r\n\t};\r\n\r\n\tconst resetItems = (items, filters, res?: List, edits?: Edits) => {\r\n\t\tlet transformedItems = transformItems(items, filters);\r\n\t\tif (multiple) {\r\n\t\t\ttransformedItems = addedFirst\r\n\t\t\t\t? Object.values(edits || {})\r\n\t\t\t\t\t.filter((item) => item.id < 0)\r\n\t\t\t\t\t.sort((a, b) => a.id - b.id)\r\n\t\t\t\t\t.concat(transformedItems)\r\n\t\t\t\t: transformedItems\r\n\t\t\t\t\t.concat(\r\n\t\t\t\t\t\tObject.values(edits || {})\r\n\t\t\t\t\t\t\t.filter((item) => item.id < 0)\r\n\t\t\t\t\t\t\t.sort((a, b) => b.id - a.id),\r\n\t\t\t\t\t);\r\n\t\t}\r\n\r\n\t\t_setItems(transformedItems);\r\n\t\tonItemsChange && onItemsChange(transformedItems, filters, res);\r\n\t\tsetEdits(edits || initEdits(transformedItems, {}));\r\n\t};\r\n\r\n\t// \"silent\" used for load without showing loading\r\n\r\n\tconst load = (\r\n\t\tdata: LoadData = { page: 1, pageSize: 10 },\r\n\t\tsilent?: boolean,\r\n\t\tconcatResult?: boolean,\r\n\t\tresetFilters?: boolean,\r\n\t\treverseResult?: boolean,\r\n\t\tuseResult: {use: boolean} = { use: true },\r\n\t\tedits?: Edits,\r\n\t) => {\r\n\t\tconst newPageSize = +(data.pageSize || _pagination.pageSize || 10);\r\n\r\n\t\tlet newFilters: BaseParams = { ..._filters };\r\n\t\tconst prevCurrent = newFilters.current;\r\n\t\tresetFilters && Object.keys(_filters).forEach((key) => newFilters[key] = undefined);\r\n\t\tnewFilters = {\r\n\t\t\t...newFilters,\r\n\t\t\t...(resetFilters ? { ...unhandledFilters, ...defaultFilters } : {}),\r\n\t\t\t...data,\r\n\t\t\tcurrent: data.page || 1,\r\n\t\t\tshowSizeChanger: undefined,\r\n\t\t\tcount: _filters.count ? newPageSize : undefined,\r\n\t\t};\r\n\r\n\t\tconst offset = concatResult\r\n\t\t\t? _items?.length\r\n\t\t\t: data.offset || (newPageSize !== _pagination.pageSize ? (newFilters.current - 1) * +newPageSize : 0);\r\n\r\n\t\tsetFilters(newFilters);\r\n\t\tresetFilters && afterResetFilters && afterResetFilters();\r\n\r\n\t\tconst promise = request>(loadRequest, {\r\n\t\t\t...unhandledFilters,\r\n\t\t\t...newFilters,\r\n\t\t\toffset,\r\n\t\t\tpage: data.offset ? undefined : newFilters.current,\r\n\t\t\tcurrent: undefined,\r\n\t\t\tcount: newPageSize,\r\n\t\t}, () => !silent && setLoading(true), ttl, controller.signal).then((res) => {\r\n\t\t\tif (lastRequest.current === promise && useResult.use) {\r\n\t\t\t\t!silent && setLoading(false);\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcount, execution, offset, list = [], ...otherData\r\n\t\t\t\t} = transformResponse(res);\r\n\t\t\t\tconst resultItems = concatResult\r\n\t\t\t\t\t? reverseResult ? list.reverse().concat(_items) : _items.concat(list)\r\n\t\t\t\t\t: reverseResult ? list.slice(0, newPageSize).reverse() : list?.slice(0, newPageSize);\r\n\r\n\t\t\t\tsetOtherData(otherData);\r\n\t\t\t\tresetItems(addGUID(resultItems), newFilters, res, mode === Mode.Edit ? initEdits(resultItems, edits) : edits);\r\n\t\t\t\t_setError('');\r\n\r\n\t\t\t\tsetPagination((prev) => ({\r\n\t\t\t\t\t...prev,\r\n\t\t\t\t\tcurrent: newFilters.current,\r\n\t\t\t\t\tpageSize: newPageSize,\r\n\t\t\t\t\ttotal: res.count,\r\n\t\t\t\t}));\r\n\t\t\t\tsetSelectedRows(silent ? selectedRows.filter((item: T) => list.find(({ id }) => item.id === id)) : []);\r\n\r\n\t\t\t\tonLoad && onLoad(res);\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t\tif (lastRequest.current === promise && !useResult.use) {\r\n\t\t\t\t!silent && setLoading(false);\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\texecution: 0,\r\n\t\t\t\tcount: pagination.total,\r\n\t\t\t\tlist: _items,\r\n\t\t\t\toffset: _filters.offset || (_pagination.pageSize * _pagination.current) - _items.length,\r\n\t\t\t} as List;\r\n\t\t}).catch((error) => {\r\n\t\t\tif (typeof error === 'string' && error.includes('aborted')) {\r\n\t\t\t\tthrow error;\r\n\t\t\t}\r\n\r\n\t\t\t!silent && setLoading(false);\r\n\t\t\t_setError(error);\r\n\r\n\t\t\tonLoadRequestError ? onLoadRequestError(error) : onRequestError(error);\r\n\r\n\t\t\tthrow error;\r\n\t\t});\r\n\t\tlastRequest.current = promise;\r\n\t\treturn promise;\r\n\t};\r\n\r\n\tconst loadDelay = (\r\n\t\tdata: LoadData = { page: 1, pageSize: 10 },\r\n\t\tsilent?: boolean,\r\n\t\tconcatResult?: boolean,\r\n\t\tresetFilters?: boolean,\r\n\t\treverseResult?: boolean,\r\n\t\tuseResult?: {use: boolean},\r\n\t\tedits: Edits = {},\r\n\t): Promise> => {\r\n\t\tif (delay) {\r\n\t\t\tfiltersRef.current = {\r\n\t\t\t\tfilters: { ...filtersRef.current?.filters, ...data },\r\n\t\t\t\tsilent,\r\n\t\t\t\tconcatResult,\r\n\t\t\t\tresetFilters,\r\n\t\t\t};\r\n\t\t\tsetFilters((prev) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\t...filtersRef.current?.filters,\r\n\t\t\t\tshowSizeChanger: undefined,\r\n\t\t\t\tcount: prev.count,\r\n\t\t\t\tpageSize: prev.pageSize,\r\n\t\t\t}));\r\n\r\n\t\t\treturn new Promise((resolve) => {\r\n\t\t\t\tsetTimeout(resolve, delay);\r\n\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tif (filtersRef.current !== null) {\r\n\t\t\t\t\t\tconst {\r\n\t\t\t\t\t\t\tfilters, silent, concatResult, resetFilters,\r\n\t\t\t\t\t\t} = filtersRef.current;\r\n\t\t\t\t\t\tfiltersRef.current = null;\r\n\t\t\t\t\t\treturn load(filters, silent, concatResult, resetFilters, reverseResult, useResult, edits);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\texecution: 0,\r\n\t\t\t\t\t\tcount: pagination.total,\r\n\t\t\t\t\t\tlist: _items,\r\n\t\t\t\t\t\toffset: _filters.offset || (_pagination.pageSize * _pagination.current) - _items.length,\r\n\t\t\t\t\t} as List;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn load(data, silent, concatResult, resetFilters, reverseResult, useResult, edits);\r\n\t};\r\n\r\n\tconst loadMore = (data?: LoadData, reverseResult?: boolean, silent?: boolean) => loadDelay(data, silent, true, false, reverseResult);\r\n\r\n\tconst handleChange = (params) => {\r\n\t\tif (params?.currentTarget) {\r\n\t\t\tconst { name, value } = params.currentTarget;\r\n\t\t\treturn loadDelay({ [name]: value });\r\n\t\t}\r\n\t\treturn loadDelay(params);\r\n\t};\r\n\r\n\tconst saveItem = (record, requestName = saveRequest) => {\r\n\t\tif (!requestName) {\r\n\t\t\tthrow 'Need saveRequest';\r\n\t\t}\r\n\r\n\t\tconst item = { ...record, ...clearForSubmit(record) };\r\n\r\n\t\tif (refs.current?.[item.id]) {\r\n\t\t\t/*\r\n\t\t\tconst r = refs[item.id](item);\r\n\r\n\t\t\titem = r.item;\r\n\r\n\t\t\tpromises.push(r.validate);\r\n\t\t\t*/\r\n\t\t}\r\n\r\n\t\tsetLoaders({ ...loaders, [record.id]: true });\r\n\r\n\t\treturn request(requestName, item).then((response) => {\r\n\t\t\tsetLoaders({ ...loaders, [record.id]: undefined });\r\n\r\n\t\t\tonSave && onSave(item, response);\r\n\r\n\t\t\treturn response;\r\n\t\t}).catch((error: string) => {\r\n\t\t\tsetLoaders({ ...loaders, [record.id]: undefined });\r\n\r\n\t\t\tonSaveRequestError ? onSaveRequestError(error) : onRequestError(error);\r\n\r\n\t\t\tthrow error;\r\n\t\t}).finally(() => setPagination((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\t..._pagination,\r\n\t\t})));\r\n\t};\r\n\r\n\tconst save = (record, skipValidation?: boolean, saveRequest?: string) => {\r\n\t\tconst modifiedRecord = { ...record, ...(record.deleted ? record : edits[record.id]) };\r\n\r\n\t\tconst _saveItem = () => {\r\n\t\t\tif (!record.deleted && validationSchema && !skipValidation) {\r\n\t\t\t\treturn validationSchema?.validate(modifiedRecord, { abortEarly: false }).then(() => {\r\n\t\t\t\t\tif (refs.current[modifiedRecord.id]) {\r\n\t\t\t\t\t\tconst r = refs.current[modifiedRecord.id](modifiedRecord);\r\n\r\n\t\t\t\t\t\treturn r.validate()\r\n\t\t\t\t\t\t\t.then((results) => {\r\n\t\t\t\t\t\t\t\tif (typeof results !== 'undefined') {\r\n\t\t\t\t\t\t\t\t\treturn saveItem(r.item, saveRequest);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn saveItem(modifiedRecord, saveRequest);\r\n\t\t\t\t}).catch((err) => {\r\n\t\t\t\t\tif (err.inner) {\r\n\t\t\t\t\t\tconst er = {};\r\n\t\t\t\t\t\tfor (let i = 0; i < err.inner.length; i++) {\r\n\t\t\t\t\t\t\ter[err.inner[i].path] = err.inner[i].errors[0];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsetError(record.id, er, 1);\r\n\r\n\t\t\t\t\t\tonValidationError(record.id, er, err.inner);\r\n\r\n\t\t\t\t\t\tif (refs.current[modifiedRecord.id]) {\r\n\t\t\t\t\t\t\tconst r = refs.current[modifiedRecord.id](modifiedRecord);\r\n\t\t\t\t\t\t\treturn r.validate();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow err;\r\n\t\t\t\t\t}\r\n\t\t\t\t}) as Promise;\r\n\t\t\t}\r\n\r\n\t\t\treturn saveItem(modifiedRecord, saveRequest);\r\n\t\t};\r\n\r\n\t\tconst _editedItem = _items.find((q) => q.id === record.id);\r\n\r\n\t\treturn beforeSave\r\n\t\t\t? beforeSave([modifiedRecord], _editedItem ? [_editedItem] : [], _saveItem)\r\n\t\t\t: _saveItem();\r\n\t};\r\n\r\n\tconst reload = (p, resetFilters?: boolean) => {\r\n\t\tconst page = p?.current || _pagination.current;\r\n\t\tconst pageSize = p?.pageSize || _pagination.pageSize;\r\n\r\n\t\treturn loadDelay({\r\n\t\t\t...p,\r\n\t\t\tpage: resetFilters ? 1 : page,\r\n\t\t\tpageSize,\r\n\t\t\tshowSizeChanger: (p || _pagination).showSizeChanger,\r\n\t\t}, false, false, resetFilters);\r\n\t};\r\n\r\n\tconst update = (items: Array, resetEdits = true) => {\r\n\t\tsetItems(items, resetEdits);\r\n\t};\r\n\r\n\t// const _add = () => add();\r\n\r\n\tconst saveItems = (items, reloadHandler: (p?: LoadData, resetFilters?: boolean) => Promise> = reload) => {\r\n\t\tif (saveAllRequest === '') throw 'save all request is not available';\r\n\r\n\t\tsetLoading(true);\r\n\r\n\t\treturn request>(saveAllRequest, items.map((value) => ({ ...value, ...clearForSubmit(value) })))\r\n\t\t\t.then(() => {\r\n\t\t\t\tsetEdits(mode === Mode.Edit ? initEdits(items, edits) : {});\r\n\r\n\t\t\t\tonSaveAll && onSaveAll(items);\r\n\t\t\t\treloadHandler(_pagination)\r\n\t\t\t\t\t.catch(onSaveRequestError || onRequestError)\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch((error: string) => {\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t\tonSaveRequestError ? onSaveRequestError(error) : onRequestError(error);\r\n\t\t\t\tthrow error;\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst deleteItems = (items, reloadHandler: (p?: LoadData, resetFilters?: boolean) => Promise> = reload) =>\r\n\t\tsaveItems(items.map((value) => ({ id: value.id, deleted: true })), reloadHandler);\r\n\r\n\tconst validateAll = (skipValidation?: boolean, addSubmitCount?: boolean) => {\r\n\t\tconst items: Array = [];\r\n\r\n\t\tif (validationSchema && !skipValidation) {\r\n\t\t\tclearError(edits);\r\n\r\n\t\t\tconst promises: Array> = [];\r\n\r\n\t\t\tfor (const key in edits) {\r\n\t\t\t\tconst item = edits[key];\r\n\r\n\t\t\t\titems.push({ ...item, ...clearForSubmit(item) });\r\n\r\n\t\t\t\tpromises.push(validationSchema?.validate(item, { abortEarly: false })\r\n\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\tif (err.inner) {\r\n\t\t\t\t\t\t\tconst er = {};\r\n\t\t\t\t\t\t\tfor (let i = 0; i < err.inner.length; i++) {\r\n\t\t\t\t\t\t\t\ter[err.inner[i].path] = err.inner[i].errors[0];\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tsetError(key, er, addSubmitCount ? 1 : 0);\r\n\r\n\t\t\t\t\t\t\tonValidationError(key, er, err);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow err;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}));\r\n\t\t\t}\r\n\r\n\t\t\tif (promises.length > 0) {\r\n\t\t\t\treturn Promise.all(promises).then((results) => {\r\n\t\t\t\t\tif (!results.some((q) => typeof q === 'undefined')) {\r\n\t\t\t\t\t\treturn Promise.resolve(items);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// console.log(errors);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (const key in edits) {\r\n\t\t\t\titems.push({ ...edits[key], ...clearForSubmit(edits[key]) });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve(items);\r\n\t};\r\n\r\n\tconst saveAll = (skipValidation) => {\r\n\t\tif (saveAllRequest === '') throw 'save all request is not available';\r\n\r\n\t\tif (Object.keys(edits).length <= 0) throw 'There are no edited items';\r\n\r\n\t\tconst _saveItem = () => {\r\n\t\t\tconst items: Array = [];\r\n\r\n\t\t\tif (validationSchema && !skipValidation) {\r\n\t\t\t\tclearError(edits, 1);\r\n\r\n\t\t\t\tconst promises: Array> = [];\r\n\r\n\t\t\t\tfor (const key in edits) {\r\n\t\t\t\t\tlet item = edits[key];\r\n\r\n\t\t\t\t\tif (refs[item.id]) {\r\n\t\t\t\t\t\tconst r = refs[item.id](item);\r\n\r\n\t\t\t\t\t\titem = r.item;\r\n\r\n\t\t\t\t\t\tpromises.push(r.validate());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titems.push({ ...item, ...clearForSubmit(item) });\r\n\r\n\t\t\t\t\tpromises.push(validationSchema?.validate(item, { abortEarly: false })\r\n\t\t\t\t\t\t.catch((err) => {\r\n\t\t\t\t\t\t\tif (err.inner) {\r\n\t\t\t\t\t\t\t\tconst er = {};\r\n\t\t\t\t\t\t\t\tfor (let i = 0; i < err.inner.length; i++) {\r\n\t\t\t\t\t\t\t\t\ter[err.inner[i].path] = err.inner[i].errors[0];\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tsetError(key, er);\r\n\r\n\t\t\t\t\t\t\t\tonValidationError(key, er, err);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthrow err;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (promises.length > 0) {\r\n\t\t\t\t\tPromise.all(promises).then((results) => {\r\n\t\t\t\t\t\tif (!results.some((q) => typeof q === 'undefined')) {\r\n\t\t\t\t\t\t\treturn saveItems(items.sort((a, b) => (addedFirst ? 1 : -1) * (a.id - b.id)));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (const key in edits) {\r\n\t\t\t\t\titems.push({ ...edits[key], ...clearForSubmit(edits[key]) });\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn saveItems(items.sort((a, b) => (addedFirst ? 1 : -1) * (a.id - b.id)));\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst _editItems = Object.keys(edits).map((key) => {\r\n\t\t\treturn edits[key];\r\n\t\t});\r\n\r\n\t\treturn beforeSave\r\n\t\t\t? beforeSave(_editItems, _items, _saveItem)\r\n\t\t\t: _saveItem();\r\n\t};\r\n\r\n\tconst deleteAll = (reloadHandler: (p?: LoadData, resetFilters?: boolean) => Promise> = reload) => {\r\n\t\tif (deleteAllRequest === '') throw 'delete all request is not available';\r\n\r\n\t\tsetLoading(true);\r\n\r\n\t\treturn request>(deleteAllRequest, { ...unhandledFilters, ..._filters })\r\n\t\t\t.then((response) => {\r\n\t\t\t\tsetEdits({});\r\n\r\n\t\t\t\treloadHandler({})\r\n\t\t\t\t\t.catch(onSaveRequestError || onRequestError)\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch((error: string) => {\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t\tonSaveRequestError ? onSaveRequestError(error) : onRequestError(error);\r\n\t\t\t\tthrow error;\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst setEdit = (record) => {\r\n\t\tsetEdits({ ...edits, [record.id]: record });\r\n\t};\r\n\r\n\tconst addItem = (item?: Partial) => {\r\n\t\tsetId((prev) => prev - 1);\r\n\r\n\t\tconst newItem = item ? { ...item, id } as T : { ...add(_items), id };\r\n\r\n\t\tupdate(addedFirst ? [newItem].concat(_items) : _items.concat(newItem));\r\n\r\n\t\tsetEdit(newItem);\r\n\t\treturn newItem;\r\n\t};\r\n\r\n\tconst addRef = (key, f) => {\r\n\t\tsetRef({ [key]: f });\r\n\t};\r\n\r\n\tconst value = {\r\n\t\tstate: {\r\n\t\t\titems: _items,\r\n\t\t\tloading,\r\n\t\t\tpagination: _pagination,\r\n\t\t\tfilters: _filters,\r\n\t\t\tedits,\r\n\t\t\terrors,\r\n\t\t\tloaders,\r\n\t\t\tmultiple,\r\n\t\t\ttype,\r\n\t\t\tselectedRows,\r\n\t\t\taddedFirst,\r\n\t\t\tsaveRequest,\r\n\t\t\totherData: _otherData,\r\n\t\t\ttransformAfterSave,\r\n\t\t\tdeleting,\r\n\t\t\tdeleteAllRequest,\r\n\t\t\terror,\r\n\t\t\tsaveAllRequest,\r\n\t\t},\r\n\t\tactions: {\r\n\t\t\tload: loadDelay,\r\n\t\t\tsave,\r\n\t\t\tsaveAll,\r\n\t\t\tupdate,\r\n\t\t\tadd: addItem,\r\n\t\t\tsetEdits,\r\n\t\t\tsetErrors,\r\n\t\t\treload,\r\n\t\t\tsetEdit,\r\n\t\t\tsetItems,\r\n\t\t\taddRef,\r\n\t\t\tsetSelectedRows,\r\n\t\t\tdeleteItems,\r\n\t\t\thandleChange,\r\n\t\t\tloadMore,\r\n\t\t\tsaveItems,\r\n\t\t\tsetLoading,\r\n\t\t\tvalidateAll,\r\n\t\t\tupdateItem,\r\n\t\t\tdeleteAll,\r\n\t\t},\r\n\t};\r\n\r\n\tconst context = useItemsProviderContext();\r\n\r\n\tif (context.state) {\r\n\t\t// ItemsProvider in ItemsProvider\r\n\r\n\t\tReact.useEffect(() => {\r\n\t\t\tobjectKey && arrayName && context.actions.addRef(objectKey, (item) => {\r\n\t\t\t\tconst items: Array = [];\r\n\r\n\t\t\t\tfor (const key in edits) {\r\n\t\t\t\t\titems.push({ ...edits[key], ...clearForSubmit(edits[key]) });\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn { item: { ...item, [arrayName]: items }, validate: () => validateAll(false, true) };\r\n\t\t\t});\r\n\t\t}, [edits, context?.state?.edits]);\r\n\t} else {\r\n\t\tReact.useEffect(() => {\r\n\t\t\t!skipValidationAll && validateAll(false);\r\n\t\t}, [edits]);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{render && \r\n\t\t\t\t{_items.map((item) => render(item, {\r\n\t\t\t\t\tloading,\r\n\t\t\t\t\treload,\r\n\t\t\t\t\tadd: addItem,\r\n\t\t\t\t\tupdate: (newItem) => updateItem({ ...newItem, id: (item.id || newItem.id) as number }),\r\n\t\t\t\t\tsave: (values, saveRequest) => save(values, false, saveRequest),\r\n\t\t\t\t\tupdateAndSave: (values, saveRequest) => save({ ...item, ...values, id: item.id }, false, saveRequest),\r\n\t\t\t\t}))}\r\n\t\t\t}\r\n\t\t\t{typeof children === 'function' ? children(value) : children}\r\n\t\t\r\n\t);\r\n};\r\n","import * as React from 'react';\r\n\r\nexport interface ButtonProps {\r\n\ttype?: 'submit' | 'button';\r\n\tclassName?: string;\r\n\tisLoading?: boolean;\r\n\tonClick?: (event: React.MouseEvent) => void;\r\n\ttitle?: string;\r\n\tdisabled?: boolean;\r\n\tother?: object;\r\n\tloadingNode?: React.ReactNode;\r\n}\r\n\r\nconst Button: React.FC = ({\r\n\ttype = 'submit',\r\n\tclassName = 'btn btn-primary',\r\n\tisLoading,\r\n\tonClick,\r\n\tchildren,\r\n\ttitle,\r\n\tdisabled = false,\r\n\tother = undefined,\r\n\tloadingNode = false,\r\n}) => {\r\n\treturn \r\n\t\t{!!loadingNode && isLoading && loadingNode}\r\n\t\t{children}\r\n\t;\r\n};\r\n\r\ninterface PreventDefaultButtonProps extends ButtonProps {\r\n\tonClick:() => void;\r\n}\r\n\r\nexport const PreventDefaultButton: React.FC = ({ onClick, children, ...rest }) =>\r\n\t;\r\n\r\nexport default Button;\r\n","import React from 'react';\r\n\r\nimport Button, { ButtonProps } from '@common/react/components/Forms/Button';\r\nimport { useItemsProviderContext } from '@common/react/components/Core/ItemsProvider/ItemsProvider';\r\n\r\ninterface Props extends ButtonProps {\r\n\tsilent?: boolean;\r\n}\r\n\r\nconst LoadMoreButton: React.FC = ({ children, silent, ...props }) => {\r\n\tconst context = useItemsProviderContext();\r\n\tif (!context.state) throw 'Need ItemsProvider context!';\r\n\tconst { state: { loading, items, pagination }, actions: { loadMore } } = context;\r\n\tconst [isLoading, setIsLoading] = React.useState(false);\r\n\tif (items?.length === pagination?.total) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn {\r\n\t\t\tsetIsLoading(true);\r\n\t\t\tloadMore({}, false, silent)\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t});\r\n\t\t}}\r\n\t>\r\n\t\t{children}\r\n\t;\r\n};\r\n\r\nexport default LoadMoreButton;\r\n","export const parseQuery = (queryString: string): {[key: string]: string} => {\r\n\tconst query = {};\r\n\tif (queryString) {\r\n\t\tconst pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\r\n\r\n\t\tfor (let i = 0; i < pairs.length; i++) {\r\n\t\t\tconst pair = pairs[i].split('=');\r\n\t\t\tquery[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\r\n\t\t}\r\n\t}\r\n\treturn query;\r\n};"],"names":["getKeysByPrefix","obj","prefix","Object","entries","reduce","acc","key","value","indexOf","slice","length","removePrefix","filterByPrefix","Mode","SortingDirection","handleUrl","searchParams","location","history","page","pageInSearch","searchObj","parseQuery","search","emptyValues","undefined","keys","filter","k","map","Array","isArray","item","col","urlHandleItems","join","replace","pathname","getSearchParamsFromUrl","forEach","split","v","matches","q","result","match","values","push","caption","direction","createItemsProviderContext","once","React","useItemsProviderContext","addGUID","items","keyGUID","c","r","Math","random","toString","defaultTransformFiltersBeforeHandleUrl","filters","count","current","showSizeChanger","total","offset","pageSizeOptions","pageSize","ItemsProvider","type","loadRequest","includes","saveRequest","saveAllRequest","deleteAllRequest","children","pagination","add","id","multiple","validationSchema","clearForSubmit","onRequestError","error","onLoadRequestError","onSaveRequestError","onValidationError","err","mode","View","objectKey","arrayName","onLoad","transformItems","res","unhandledFilters","transformFiltersBeforeHandleUrl","withHandleUrl","filtersPrefix","path","defaultFilters","afterResetFilters","addedFirst","editItems","syncItems","delay","onItemsChange","skipValidationAll","render","skipInitLoad","onSave","beforeSave","onSaveAll","otherData","transformAfterSave","prevItem","editItem","response","searchParamsFromUrl","ttl","transformResponse","useSyncItemsInsteadHook","ItemsContext","useLocation","useHistory","params","useParams","edits","_setEdits","innerItems","_setItems","_items","_otherData","setOtherData","loaders","setLoaders","loading","setLoading","_setError","_filters","setFilters","lastRequest","_pagination","setPagination","errors","setErrors","minId","min","setId","selectedRows","setSelectedRows","filtersRef","request","useRequest","requestContext","useRequestProviderContext","deleting","useAbortController","controller","clearError","increment","submitCount","setError","prev","setEdits","newEdits","refs","initEdits","_edits","Edit","temp","unsavedItemsCount","i","edit","sort","transformedFilters","reload","console","log","abort","actions","updateCache","list","setItems","resetEdits","newItems","updateItem","el","load","data","silent","concatResult","resetFilters","reverseResult","useResult","use","newPageSize","newFilters","promise","signal","then","execution","resultItems","reverse","concat","transformedItems","a","b","resetItems","find","loadDelay","Promise","resolve","setTimeout","saveItem","record","requestName","save","skipValidation","modifiedRecord","deleted","_saveItem","validate","abortEarly","results","inner","er","_editedItem","p","update","saveItems","reloadHandler","validateAll","addSubmitCount","promises","all","some","setEdit","addItem","newItem","state","saveAll","_editItems","addRef","f","deleteItems","handleChange","currentTarget","name","loadMore","deleteAll","context","Provider","updateAndSave","Button","className","isLoading","onClick","title","disabled","other","loadingNode","props","setIsLoading","queryString","query","pairs","substr","pair","decodeURIComponent"],"sourceRoot":""}