kui-utils 0.0.23 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DependencyList } from 'react';
3
+ import { Loader as Loader$1 } from 'kui-utils';
3
4
 
4
5
  declare function useForkRef<Instance>(...refs: Array<React.Ref<Instance> | undefined>): React.RefCallback<Instance> | null;
5
6
 
@@ -127,10 +128,7 @@ declare class MultistepForm<T extends object, U extends readonly string[] = []>
127
128
  updateFormFields: (fields: Partial<T>) => void;
128
129
  replaceFieldInArray: <V>(fieldName: keyof T, newValue: V, index: number) => void;
129
130
  addValueToField: (valueName: string, value: any, fieldName?: string | undefined) => void;
130
- getNestedField: (fieldName?: string | undefined) => {
131
- path: Partial<T>;
132
- fields: Partial<T>;
133
- };
131
+ getNestedField: (fieldName?: string | undefined) => Partial<T>;
134
132
  nextStep: () => void;
135
133
  prevStep: () => void;
136
134
  setStage: (stage: Values<U>) => void;
@@ -155,6 +153,13 @@ declare const toNumber: (value?: string | number | null | undefined) => number |
155
153
 
156
154
  declare const updateQueryParams: (newLink: string) => void;
157
155
 
156
+ declare function addToIndexDBWithQueue(db: any, storeName: string, data: any, loader: Loader$1): void;
157
+ declare const readFromIndexDB: (db: any, name: string, loader: Loader$1) => Promise<any>;
158
+ declare const initIndexDB: (dbName: string, onupgradeneeded: (db: any) => void, loader: Loader$1, setIndexDB: (db: any) => void) => void;
159
+ declare const addIndexDBStore: (db: any, name: string) => void;
160
+ declare const clearIndexStore: (db: any, name: string) => void;
161
+ declare const clearIndexStores: (db: any, stores: string[]) => void;
162
+
158
163
  declare type CookieOptions = {
159
164
  path?: string;
160
165
  "max-age"?: number;
@@ -211,4 +216,4 @@ declare class KUIUtilsSettings {
211
216
  }
212
217
  declare const kuiUtilsSettings: KUIUtilsSettings;
213
218
 
214
- export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, ObjectType, PaginationRes, Paginator, PhoneParams, ResHandlerParams, SortOrder, SortingFilter, Values, accountRegExp, addLeadZero, addToArrayByCondition, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearNotValidFields, copyInfo, corrAccountRegExp, _default as countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
219
+ export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, ObjectType, PaginationRes, Paginator, PhoneParams, ResHandlerParams, SortOrder, SortingFilter, Values, accountRegExp, addIndexDBStore, addLeadZero, addToArrayByCondition, addToIndexDBWithQueue, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearIndexStore, clearIndexStores, clearNotValidFields, copyInfo, corrAccountRegExp, _default as countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, initIndexDB, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, readFromIndexDB, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
package/index.js CHANGED
@@ -2,7 +2,8 @@ import * as React from 'react';
2
2
  import { useState, useMemo, useEffect } from 'react';
3
3
  import _ from 'lodash';
4
4
  import { useLocation } from 'react-router-dom';
5
- import { makeAutoObservable } from 'mobx';
5
+ import { isObservable, toJS, makeAutoObservable } from 'mobx';
6
+ import { DateTime } from 'luxon';
6
7
 
7
8
  function setRef(ref, value) {
8
9
  if (typeof ref === "function") {
@@ -2018,6 +2019,110 @@ var updateQueryParams = function (newLink) {
2018
2019
  window.history.pushState({ route: route }, "", route);
2019
2020
  };
2020
2021
 
2022
+ function cleanObjectForIndexDB(value) {
2023
+ if (typeof value === "undefined")
2024
+ return null;
2025
+ if (value instanceof File)
2026
+ return value;
2027
+ if (value instanceof DateTime)
2028
+ return value.toISO();
2029
+ if (isObservable(value)) {
2030
+ return cleanObjectForIndexDB(toJS(value));
2031
+ }
2032
+ if (Array.isArray(value)) {
2033
+ return value.map(function (item) { return cleanObjectForIndexDB(item); });
2034
+ }
2035
+ if (value !== null && typeof value === "object") {
2036
+ var plainObject = {};
2037
+ // eslint-disable-next-line no-restricted-syntax
2038
+ for (var key in value) {
2039
+ // eslint-disable-next-line no-prototype-builtins
2040
+ if (value.hasOwnProperty(key)) {
2041
+ var objectValue = value[key];
2042
+ if (typeof objectValue !== "function" && objectValue !== undefined) {
2043
+ plainObject[key] = cleanObjectForIndexDB(objectValue);
2044
+ }
2045
+ }
2046
+ }
2047
+ return plainObject;
2048
+ }
2049
+ return value;
2050
+ }
2051
+ var transactionQueue = Promise.resolve();
2052
+ function addToIndexDBWithQueue(db, storeName, data, loader) {
2053
+ transactionQueue = transactionQueue
2054
+ .then(function () {
2055
+ return new Promise(function (resolve, reject) {
2056
+ if (db && db.objectStoreNames.contains(storeName) && data) {
2057
+ var transaction = db.transaction(storeName, "readwrite");
2058
+ var store = transaction.objectStore(storeName);
2059
+ // eslint-disable-next-line no-param-reassign
2060
+ data.id = 1;
2061
+ var formattedData = cleanObjectForIndexDB(data);
2062
+ var request_1 = store.put(formattedData);
2063
+ request_1.onsuccess = function () {
2064
+ resolve(request_1);
2065
+ };
2066
+ request_1.onerror = function () {
2067
+ loader.setError("Не удалось сохранить данные в локальное хранилище");
2068
+ reject();
2069
+ };
2070
+ }
2071
+ });
2072
+ })
2073
+ .catch(function (error) {
2074
+ console.error("Ошибка в очереди транзакций:", error);
2075
+ });
2076
+ }
2077
+ var readFromIndexDB = function (db, name, loader) { return __awaiter(void 0, void 0, void 0, function () {
2078
+ var transaction, request_2;
2079
+ return __generator(this, function (_a) {
2080
+ if (db.objectStoreNames.contains(name)) {
2081
+ transaction = db.transaction(name, "readonly").objectStore(name);
2082
+ request_2 = transaction.getAll();
2083
+ return [2 /*return*/, new Promise(function (resolve, reject) {
2084
+ request_2.onerror = function () {
2085
+ reject();
2086
+ loader.setError("Не удалось сохранить данные в локальное хранилище");
2087
+ };
2088
+ request_2.onsuccess = function () {
2089
+ var _a;
2090
+ resolve((_a = request_2.result) === null || _a === void 0 ? void 0 : _a[0]);
2091
+ };
2092
+ })];
2093
+ }
2094
+ return [2 /*return*/, null];
2095
+ });
2096
+ }); };
2097
+ var initIndexDB = function (dbName, onupgradeneeded, loader, setIndexDB) {
2098
+ var dbRequest = indexedDB.open(dbName, 1);
2099
+ dbRequest.onerror = function () {
2100
+ loader.setError("Ошибка при открытии хранилища на устройстве. Данные не будут сохраняться локально");
2101
+ };
2102
+ dbRequest.onsuccess = function () {
2103
+ var db = dbRequest.result;
2104
+ setIndexDB(db);
2105
+ };
2106
+ dbRequest.onupgradeneeded = function () { return onupgradeneeded(dbRequest.result); };
2107
+ };
2108
+ var addIndexDBStore = function (db, name) {
2109
+ if (db && !db.objectStoreNames.contains(name)) {
2110
+ db.createObjectStore(name, { keyPath: "id" });
2111
+ }
2112
+ };
2113
+ var clearIndexStore = function (db, name) {
2114
+ if (db) {
2115
+ var transaction = db.transaction(name, "readwrite");
2116
+ var objectStore = transaction.objectStore(name);
2117
+ objectStore.clear();
2118
+ }
2119
+ };
2120
+ var clearIndexStores = function (db, stores) {
2121
+ Array.from(stores).forEach(function (name) {
2122
+ clearIndexStore(db, name);
2123
+ });
2124
+ };
2125
+
2021
2126
  function setCookie(name, value, options) {
2022
2127
  if (options === void 0) { options = {}; }
2023
2128
  var cookieOptions = __assign({ path: "/" }, options);
@@ -2238,9 +2343,8 @@ var MultistepForm = /** @class */ (function () {
2238
2343
  this.addValueToField = function (valueName, value, fieldName) {
2239
2344
  if (!_this.fields)
2240
2345
  _this.fields = {};
2241
- var _a = _this.getNestedField(fieldName), path = _a.path, fields = _a.fields;
2346
+ var path = _this.getNestedField(fieldName);
2242
2347
  path[valueName] = value;
2243
- _this.fields = fields;
2244
2348
  };
2245
2349
  this.getNestedField = function (fieldName) {
2246
2350
  if (!_this.fields)
@@ -2252,12 +2356,11 @@ var MultistepForm = /** @class */ (function () {
2252
2356
  // @ts-ignore
2253
2357
  _this.fields[fieldParts[0]] = [];
2254
2358
  }
2255
- var fields = _this.fields;
2256
- var path = fields;
2359
+ var path = _this.fields;
2257
2360
  fieldParts === null || fieldParts === void 0 ? void 0 : fieldParts.forEach(function (part) {
2258
2361
  path = path[part];
2259
2362
  });
2260
- return { path: path, fields: fields };
2363
+ return path;
2261
2364
  };
2262
2365
  this.nextStep = function () {
2263
2366
  _this.step += 1;
@@ -2337,5 +2440,5 @@ var simplePasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{10,
2337
2440
  var mediumPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{12,}$/;
2338
2441
  var strongPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{14,}$/;
2339
2442
 
2340
- export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, Paginator, SortingFilter, accountRegExp, addLeadZero, addToArrayByCondition, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearNotValidFields, copyInfo, corrAccountRegExp, countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
2443
+ export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, Paginator, SortingFilter, accountRegExp, addIndexDBStore, addLeadZero, addToArrayByCondition, addToIndexDBWithQueue, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearIndexStore, clearIndexStores, clearNotValidFields, copyInfo, corrAccountRegExp, countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, initIndexDB, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, readFromIndexDB, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
2341
2444
  //# sourceMappingURL=index.js.map