{"version":3,"file":"chunks/802.chunk.762152585813afa235f7.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';\n\nexport const addPrefix = (obj: object, prefix: string) => {\n\treturn Object.entries(obj)\n\t\t.reduce((acc, [key, value]) => ({ ...acc, [`${prefix}${key}`]: value }), {});\n};\n\nexport const removePrefix = (obj: object, prefix: string) => {\n\treturn Object.entries(obj)\n\t\t.reduce((acc, [key, value]) => {\n\t\t\tif (key.indexOf(prefix) !== 0 || prefix === '') {\n\t\t\t\treturn { ...acc, [key]: value };\n\t\t\t}\n\t\t\treturn { ...acc, [key.slice(prefix.length)]: value };\n\t\t}, {});\n};\n\nexport const filterByPrefix = (obj: object, prefix: string) => {\n\treturn Object.entries(obj)\n\t\t.reduce((acc, [key, value]) => (\n\t\t\tkey.indexOf(prefix) !== 0\n\t\t\t\t? acc : { ...acc, [key]: value }\n\t\t), {});\n};\n\nexport const getKeysByPrefix = (obj: BaseParams, prefix?: string): BaseParams => {\n\tif (!prefix) {\n\t\treturn obj;\n\t}\n\n\treturn removePrefix(filterByPrefix(obj, prefix), prefix);\n};\n","import { WithId } from '@common/typescript/objects/WithId';\nimport { isUndefined } from '@common/react/utils/guards';\n\nexport interface Named {\n\tfirstName: string;\n\tlastName: string;\n}\n\ninterface Props {\n\touterArray: string;\n\tinnerArray: string;\n}\n\ntype PartialOnNullValue = {\n\t[P in keyof T]?: T[P] | null;\n};\n\nexport type ClearValue = {\n\t[P in keyof T]?: T[P] extends Array ? Array> : T[P] | null;\n};\n\ninterface NamedWithEmail extends Named {\n\temail: string;\n}\n\nexport const getUserName = (item: Named) => (item ? `${item.lastName || ''} ${item.firstName || ''}`.trim() : '');\n\nexport const getUserNameReverseOrder = (item: Named) => (item ? `${item.firstName || ''} ${item.lastName || ''}`.trim() : '');\n\nexport const getUserNameWithEmail = (item?: NamedWithEmail) => (item ? `${item.lastName || ''} ${item.firstName || ''} (${item.email})` : '');\n\nexport const imageSize = (s, size) => {\n\treturn s ? s.replace(/.(\\w+$)/, `${size}.$1`) : '';\n};\n\nexport const sortByStringField = (field: string) => (a, b) => {\n\tif (a[field] < b[field]) {\n\t\treturn -1;\n\t}\n\n\tif (a[field] > b[field]) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n};\n/* eslint-disable */\nexport const generateGUID = (): string => {\n\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n\t\tconst r = Math.random() * 16 | 0;\n\t\tconst v = c === 'x' ? r : (r & 0x3 | 0x8);\n\n\t\treturn v.toString(16);\n\t});\n};\n/* eslint-enable */\n\nexport const getQueryParams = (query: string, keys: Array): object => {\n\tconst params = new URLSearchParams(query);\n\tconst result = {};\n\tkeys.forEach((key) => result[key] = params.get(key));\n\n\treturn result;\n};\n\nexport const asInteger = (source: string | null, defaultValue: number = 1) => {\n\treturn (source && parseInt(source, 10)) || defaultValue;\n};\n\nexport const returnAfterSubmit = (\n\tvalues: TValues,\n\tfields: Array = [],\n\tresponse?: TResponse,\n\tproperties: Array = ['id'],\n): TValues | object => {\n\tif (!fields.length) {\n\t\treturn {};\n\t}\n\n\tconst isArrayOfObjects = (value): boolean => value instanceof Array && value[0] instanceof Object && value[0].id;\n\n\tconst valuesToReturn = {};\n\tfor (const item of fields) {\n\t\tconst isString = typeof item === 'string';\n\t\tconst key = (isString ? item : Object.keys(item)[0]) as string;\n\n\t\tvaluesToReturn[key] = values[key];\n\n\t\tif (response && isArrayOfObjects(valuesToReturn[key])) {\n\t\t\tvaluesToReturn[key] = valuesToReturn[key].filter((value) => !value.deleted).map((obj, index) => {\n\t\t\t\tif (response[key] && response[key][index]) {\n\t\t\t\t\tconst resultObj = {\n\t\t\t\t\t\t...obj,\n\t\t\t\t\t\t...(isString ? {} : returnAfterSubmit(obj, item[key], response[key][index], properties)),\n\t\t\t\t\t};\n\n\t\t\t\t\tObject.assign(resultObj, ...properties.filter((p) => !isUndefined(resultObj[p]))\n\t\t\t\t\t\t.map((p) => ({ [p]: response[key][index][p] })));\n\n\t\t\t\t\treturn resultObj;\n\t\t\t\t}\n\n\t\t\t\treturn obj;\n\t\t\t});\n\t\t}\n\t}\n\treturn valuesToReturn;\n};\n","import { NavigateFunction } from 'react-router-dom';\n\nimport { parseQuery } from '@common/typescript/utils/url';\nimport { BaseParams } from '@common/react/objects/BaseParams';\n\nexport const urlHandleItems = (searchObj: object, key: string, step: number = 0, prefix?: string) => {\n\tlet res: string = '';\n\n\tif (key === `${prefix || ''}column` && Array.isArray(searchObj[key])) {\n\t\tres = `${key}=[${searchObj[key].map((item) => `[${item ? Object.keys(item).map((col) => item[col]) : ''}]`)}]`;\n\t} else {\n\t\tres = Array.isArray(searchObj[key]) ? `${key}=[${searchObj[key]}]` : `${key}=${searchObj[key]}`;\n\t}\n\n\treturn res;\n};\n\nexport const handleUrl = (searchParams: object, location, navigate: NavigateFunction, page?: number, prefix?: string, pageInSearch?: boolean) => {\n\tconst searchObj = { ...parseQuery(location.search), ...searchParams };\n\n\tconst emptyValues = ['', 'undefined', '-1', undefined, -1];\n\n\tconst search = Object.keys(searchObj)\n\t\t.filter((k) => emptyValues.indexOf(searchObj[k]) === -1)\n\t\t.map((k) => urlHandleItems(searchObj, k, 0, prefix)).join('&');\n\n\tnavigate({\n\t\t...location,\n\t\tsearch,\n\t\tpathname: `${pageInSearch ? location.pathname : location.pathname.replace(/\\/-?\\d+/, `/${page || 1}`)}`,\n\t}, { replace: true });\n};\n\nexport const getSearchParamsFromUrl = (location, prefix?: string) => {\n\tconst searchObj: BaseParams = parseQuery(location.search);\n\n\tObject.keys(searchObj).forEach((key) => {\n\t\tconst value: string = searchObj[key];\n\n\t\tif (value === '') {\n\t\t\tsearchObj[key] = undefined;\n\t\t\treturn;\n\t\t}\n\n\t\tif (key === `${prefix || ''}column`) {\n\t\t\tconst matches = value.slice(1, value.length - 1).split(/[[\\]]{1,2}/).filter((q) => q.length > 3);\n\n\t\t\tif (matches && matches.length) {\n\t\t\t\tconst result: Array = [];\n\n\t\t\t\tmatches.map((match) => {\n\t\t\t\t\tconst values = match.split(',');\n\n\t\t\t\t\tif (values && values.length === 2) {\n\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\tcaption: values[0],\n\t\t\t\t\t\t\tdirection: values[1],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tsearchObj[key] = result;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (value === 'true') {\n\t\t\tsearchObj[key] = true;\n\t\t} else if (value === 'false') {\n\t\t\tsearchObj[key] = false;\n\t\t} else if (value === 'null') {\n\t\t\tsearchObj[key] = null;\n\t\t} else if (value[0] === '[' && value[value.length - 1] === ']') {\n\t\t\tif (value === '[]') {\n\t\t\t\tsearchObj[key] = [];\n\t\t\t} else {\n\t\t\t\tsearchObj[key] = value.slice(1, value.length - 1).split(',').map((v) => ((+v || +v === 0) ? +v : v));\n\t\t\t}\n\t\t} else if (+value || +value === 0) {\n\t\t\tsearchObj[key] = +value;\n\t\t}\n\t});\n\n\treturn searchObj;\n};\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, useNavigate, 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 add from a context is called without arguments. Sets default values for a new element\r\n\t * @param items - current items in ItemsProvider state. items can be useful when you need to put an index for a new element\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, loaders: (loading) => void) => 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, response: any) => 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\t/**\r\n\t * slice loaded list if count > pageSize. By default true\r\n\t */\r\n\tsliceResultListByPageSize?: boolean;\r\n\t/**\r\n\t * if true, then handleChange will send a request every time it is called.\r\n\t *\r\n\t * if false, only filters will be changed without sending a request\r\n\t *\r\n\t * used as default value for the second argument in handleChange\r\n\t *\r\n\t * By default true\r\n\t */\r\n\tsendRequestAtHandleChange?: 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, reloadHandler?: (p?: LoadData, resetFilters?: boolean) => Promise>) => 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 a new element to both items and edits. returns a new element. can be used to save\r\n\t * - The id of the new element will be replaced with generated temporary negative id, so for adding already saved item need to use setItems\r\n\t * @param item - set that item in ItemsProvider state. default value is determined from add props\r\n\t * @returns newItem\r\n\t */\r\n\tadd: (item?: Partial) => T;\r\n\t/**\r\n\t * function to change the state of edits in ItemsProvider. from the function you can set which elements are edited and what their values are.\r\n\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 or update item in edits.\r\n\t * - edits dictionary usually using to store elements in edit mode, so by this function you can set which element is being\r\n\t * edited and what its value is.\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 * behavior depends on second argument (default value is sendRequestAtHandleChange from props).\r\n\t *\r\n\t * if true:\r\n\t *\r\n\t * load new items and change filters\r\n\t *\r\n\t * if false:\r\n\t *\r\n\t * will change filters without sending a request\r\n\t *\r\n\t * Processes params before calling load if HandleChangeEventElement is passed\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 *\r\n\t * @param params - load filters or HandleChangeEventElement\r\n\t * @param sendRequest - determines whether the request will be sent\r\n\t */\r\n\thandleChange: (params?: BaseParams, sendRequest?) => 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\tsliceResultListByPageSize = true,\r\n\tsendRequestAtHandleChange = true,\r\n}: ItemsProviderProps) => {\r\n\tconst ItemsContext = createItemsProviderContext();\r\n\tconst location = useLocation();\r\n\tconst navigate = useNavigate();\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, navigate, _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\tnavigate({\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}, { replace: true });\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\r\n\t\t\t\t\t\t? sliceResultListByPageSize ? list.slice(0, newPageSize).reverse() : list.reverse()\r\n\t\t\t\t\t\t: sliceResultListByPageSize ? list?.slice(0, newPageSize) : list;\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, sendRequest = sendRequestAtHandleChange) => {\r\n\t\tif (!sendRequest) {\r\n\t\t\tconst { name, value } = params?.currentTarget ?? {};\r\n\t\t\tsetFilters((prev) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\t...(params?.currentTarget ? { [name]: value } : params),\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\t\t\treturn Promise.resolve({\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}\r\n\r\n\t\tif (params?.currentTarget) {\r\n\t\t\tconst { name, value } = params.currentTarget;\r\n\t\t\treturn loadDelay({ ..._filters, page: 1, [name]: value });\r\n\t\t}\r\n\t\treturn loadDelay({ ..._filters, ...params, page: params?.page ?? 1 });\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 = (record, requestName) => {\r\n\t\t\tconst _editedItem = _items.find((q) => q.id === record.id);\r\n\t\t\treturn beforeSave\r\n\t\t\t\t? beforeSave([modifiedRecord], _editedItem ? [_editedItem] : [], () => saveItem(record, requestName), setLoading)\r\n\t\t\t\t: saveItem(record, requestName);\r\n\t\t};\r\n\t\tif (!record.deleted && validationSchema && !skipValidation) {\r\n\t\t\treturn validationSchema?.validate(modifiedRecord, { abortEarly: false }).then(() => {\r\n\t\t\t\tif (refs.current[modifiedRecord.id]) {\r\n\t\t\t\t\tconst r = refs.current[modifiedRecord.id](modifiedRecord);\r\n\r\n\t\t\t\t\treturn r.validate()\r\n\t\t\t\t\t\t.then((results) => {\r\n\t\t\t\t\t\t\tif (typeof results !== 'undefined') {\r\n\t\t\t\t\t\t\t\treturn _saveItem(r.item, saveRequest);\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\t\t\t\treturn _saveItem(modifiedRecord, saveRequest);\r\n\t\t\t}).catch((err) => {\r\n\t\t\t\tif (err.inner) {\r\n\t\t\t\t\tconst er = {};\r\n\t\t\t\t\tfor (let i = 0; i < err.inner.length; i++) {\r\n\t\t\t\t\t\ter[err.inner[i].path] = err.inner[i].errors[0];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsetError(record.id, er, 1);\r\n\r\n\t\t\t\t\tonValidationError(record.id, er, err.inner);\r\n\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\t\t\t\t\t\treturn r.validate();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow err;\r\n\t\t\t\t}\r\n\t\t\t}) as Promise;\r\n\t\t}\r\n\r\n\t\treturn _saveItem(modifiedRecord, saveRequest);\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((response) => {\r\n\t\t\t\tsetEdits(mode === Mode.Edit ? initEdits(items, edits) : {});\r\n\r\n\t\t\t\tonSaveAll && onSaveAll(items, response);\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, reloadHandler: (p?: LoadData, resetFilters?: boolean) => Promise> = reload) => {\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 _saveItems = (items) => {\r\n\t\t\tconst _editItems = Object.keys(edits).map((key) => {\r\n\t\t\t\treturn edits[key];\r\n\t\t\t});\r\n\r\n\t\t\treturn beforeSave\r\n\t\t\t\t? beforeSave(_editItems, _items, () => saveItems(items, reloadHandler), setLoading)\r\n\t\t\t\t: saveItems(items, reloadHandler);\r\n\t\t};\r\n\t\tconst items: Array = [];\r\n\r\n\t\tif (validationSchema && !skipValidation) {\r\n\t\t\tclearError(edits, 1);\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\tlet item = edits[key];\r\n\r\n\t\t\t\tif (refs[item.id]) {\r\n\t\t\t\t\tconst r = refs[item.id](item);\r\n\r\n\t\t\t\t\titem = r.item;\r\n\r\n\t\t\t\t\tpromises.push(r.validate());\r\n\t\t\t\t}\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);\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\tPromise.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 _saveItems(items.sort((a, b) => (addedFirst ? 1 : -1) * (a.id - b.id)));\r\n\t\t\t\t\t}\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\r\n\t\t\treturn _saveItems(items.sort((a, b) => (addedFirst ? 1 : -1) * (a.id - b.id)));\r\n\t\t}\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';\n\nexport interface ButtonProps {\n\ttype?: 'submit' | 'button';\n\tclassName?: string;\n\tisLoading?: boolean;\n\tonClick?: (event: React.MouseEvent) => void;\n\ttitle?: string;\n\tdisabled?: boolean;\n\tother?: object;\n\tloadingNode?: React.ReactNode;\n}\n\nconst Button: React.FC = ({\n\ttype = 'submit',\n\tclassName = 'btn btn-primary',\n\tisLoading,\n\tonClick,\n\tchildren,\n\ttitle,\n\tdisabled = false,\n\tother = undefined,\n\tloadingNode = false,\n}) => {\n\treturn \n\t\t{!!loadingNode && isLoading && loadingNode}\n\t\t{children}\n\t;\n};\n\ninterface PreventDefaultButtonProps extends ButtonProps {\n\tonClick:() => void;\n}\n\nexport const PreventDefaultButton: React.FC = ({ onClick, children, ...rest }) =>\n\t;\n\nexport default Button;\n","import React from 'react';\n\nimport Button, { ButtonProps } from '@common/react/components/Forms/Button';\nimport { useItemsProviderContext } from '@common/react/components/Core/ItemsProvider/ItemsProvider';\n\ninterface Props extends ButtonProps {\n\tsilent?: boolean;\n\tpageSize?: number;\n\tafterLoad?: () => void;\n}\n\nconst LoadMoreButton: React.FC = ({\n\tchildren, silent, pageSize, afterLoad, ...props\n}) => {\n\tconst context = useItemsProviderContext();\n\tif (!context.state) throw 'Need ItemsProvider context!';\n\tconst { state: { loading, items, pagination }, actions: { loadMore } } = context;\n\tconst [isLoading, setIsLoading] = React.useState(false);\n\tif (items?.length === pagination?.total) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t\tsetIsLoading(true);\n\t\t\tloadMore({ pageSize }, false, silent)\n\t\t\t\t.then(() => {\n\t\t\t\t\tsetIsLoading(false);\n\t\t\t\t\tafterLoad && afterLoad();\n\t\t\t\t});\n\t\t}}\n\t>\n\t\t{children}\n\t;\n};\n\nexport default LoadMoreButton;\n","export const parseQuery = (queryString: string): {[key: string]: string} => {\n\tconst query = {};\n\tif (queryString) {\n\t\tconst pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\n\n\t\tfor (let i = 0; i < pairs.length; i++) {\n\t\t\tconst pair = pairs[i].split('=');\n\t\t\tquery[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\n\t\t}\n\t}\n\treturn query;\n};"],"names":["getKeysByPrefix","obj","prefix","Object","entries","reduce","acc","key","value","indexOf","slice","length","removePrefix","filterByPrefix","Mode","SortingDirection","handleUrl","searchParams","location","navigate","page","pageInSearch","searchObj","parseQuery","search","emptyValues","undefined","keys","filter","k","map","Array","isArray","item","col","urlHandleItems","join","pathname","replace","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","sliceResultListByPageSize","sendRequestAtHandleChange","ItemsContext","useLocation","useNavigate","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","_editedItem","validate","abortEarly","results","inner","er","p","update","saveItems","reloadHandler","validateAll","addSubmitCount","promises","all","some","setEdit","addItem","newItem","state","saveAll","_saveItems","_editItems","addRef","f","deleteItems","handleChange","currentTarget","name","loadMore","deleteAll","context","Provider","updateAndSave","Button","className","isLoading","onClick","title","disabled","other","loadingNode","afterLoad","props","setIsLoading","queryString","query","pairs","substr","pair","decodeURIComponent"],"sourceRoot":""}