@snack-uikit/utils 3.7.1-preview-74c13173.0 → 3.7.1-preview-d479ae3f.0

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/README.md CHANGED
@@ -75,15 +75,11 @@
75
75
  ### Props
76
76
  | name | type | default value | description |
77
77
  |------|------|---------------|-------------|
78
- | onLoadFilter* | `(filter: T) => void` | - | |
79
- | filter* | `T` | - | |
80
78
  | source | `BaseSource<T>` | - | |
81
79
  ## useSaveFilterState
82
80
  ### Props
83
81
  | name | type | default value | description |
84
82
  |------|------|---------------|-------------|
85
- | onLoadFilter* | `(filter: TFilter) => void` | - | |
86
- | filter* | `TFilter` | - | |
87
83
  | options | `FilterStateOptions<TFilter>` | - | |
88
84
  | parser | `(jsonFilter: string) => TFilter` | - | |
89
85
  | serializer | `(filter: TFilter) => string` | - | |
@@ -9,5 +9,8 @@ type FilterStateProps<TFilter> = Omit<StateProps<TFilter>, 'source'> & {
9
9
  parser?(jsonFilter: string): TFilter;
10
10
  serializer?(filter: TFilter): string;
11
11
  };
12
- export declare const useSaveFilterState: <TFilter>({ options, filter, onLoadFilter, parser, serializer, }: FilterStateProps<TFilter>) => void;
12
+ export declare const useSaveFilterState: <TFilter>({ options, parser, serializer }: FilterStateProps<TFilter>) => {
13
+ getDefaultFilter: () => NonNullable<TFilter> | null | undefined;
14
+ setDataToStorages: (data: TFilter) => void;
15
+ };
13
16
  export {};
@@ -9,48 +9,34 @@ const useSaveState_1 = require("./useSaveState");
9
9
  const useSaveFilterState = _ref => {
10
10
  let {
11
11
  options,
12
- filter,
13
- onLoadFilter,
14
12
  parser,
15
13
  serializer
16
14
  } = _ref;
17
- const [queryFilter, setQueryFilter] = (0, react_1.useState)(null);
18
- const [localStorageFilter, setLocalStorageFilter] = (0, react_1.useState)(null);
19
- const [isLoaded, setIsLoaded] = (0, react_1.useState)({
20
- localStorage: false,
21
- queryParams: false
22
- });
23
- const onLoadQueryParams = (0, react_1.useCallback)(value => {
24
- setQueryFilter(value);
25
- setIsLoaded(prev => Object.assign(Object.assign({}, prev), {
26
- queryParams: true
27
- }));
28
- }, []);
29
- const onLoadLocalStorage = (0, react_1.useCallback)(value => {
30
- setLocalStorageFilter(value);
31
- setIsLoaded(prev => Object.assign(Object.assign({}, prev), {
32
- localStorage: true
33
- }));
34
- }, []);
35
15
  const querySource = (0, react_1.useMemo)(() => options ? new useSaveState_1.QueryParamSource(options.filterQueryKey, options.validateData, parser, serializer) : undefined, [options, parser, serializer]);
36
16
  const localStorageSource = (0, react_1.useMemo)(() => options ? new useSaveState_1.LocalStorageSource(options.filterLocalStorageKey, options.validateData, parser, serializer) : undefined, [options, parser, serializer]);
37
- (0, useSaveState_1.useSaveState)({
38
- filter,
39
- onLoadFilter: onLoadQueryParams,
17
+ const {
18
+ getData: getLocalStorageData,
19
+ setData: setLocalStorageData
20
+ } = (0, useSaveState_1.useSaveState)({
40
21
  source: querySource
41
22
  });
42
- (0, useSaveState_1.useSaveState)({
43
- filter,
44
- onLoadFilter: onLoadLocalStorage,
23
+ const {
24
+ getData: getQueryParamsData,
25
+ setData: setQueryParamsData
26
+ } = (0, useSaveState_1.useSaveState)({
45
27
  source: localStorageSource
46
28
  });
47
- (0, react_1.useEffect)(() => {
48
- if (!options) {
49
- onLoadFilter(null);
50
- }
51
- if (isLoaded.localStorage && isLoaded.queryParams) {
52
- onLoadFilter(queryFilter ? queryFilter : localStorageFilter);
53
- }
54
- }, [queryFilter, onLoadFilter, localStorageFilter, isLoaded, options]);
29
+ const setDataToStorages = (0, react_1.useCallback)(data => {
30
+ setLocalStorageData(data);
31
+ setQueryParamsData(data);
32
+ }, [setLocalStorageData, setQueryParamsData]);
33
+ const getDefaultFilter = (0, react_1.useCallback)(() => {
34
+ const queryData = getQueryParamsData();
35
+ return queryData ? queryData : getLocalStorageData();
36
+ }, [getLocalStorageData, getQueryParamsData]);
37
+ return {
38
+ getDefaultFilter,
39
+ setDataToStorages
40
+ };
55
41
  };
56
42
  exports.useSaveFilterState = useSaveFilterState;
@@ -1,7 +1,8 @@
1
1
  import { BaseSource } from './sources/baseSource';
2
2
  export type StateProps<T> = {
3
- filter: T;
4
- onLoadFilter(filter: T | null): void;
5
3
  source?: BaseSource<T>;
6
4
  };
7
- export declare const useSaveState: <T>({ filter, onLoadFilter, source }: StateProps<T>) => void;
5
+ export declare const useSaveState: <T>({ source }: StateProps<T>) => {
6
+ getData: () => NonNullable<T> | null | undefined;
7
+ setData: (filter: T) => void;
8
+ };
@@ -7,23 +7,18 @@ exports.useSaveState = void 0;
7
7
  const react_1 = require("react");
8
8
  const useSaveState = _ref => {
9
9
  let {
10
- filter,
11
- onLoadFilter,
12
10
  source
13
11
  } = _ref;
14
- const [isLoaded, setIsLoaded] = (0, react_1.useState)(false);
15
- (0, react_1.useEffect)(() => {
12
+ const setData = (0, react_1.useCallback)(filter => {
16
13
  if (!source) {
17
14
  return;
18
15
  }
19
- onLoadFilter(source.getFilter());
20
- setIsLoaded(true);
21
- }, [onLoadFilter, source]);
22
- (0, react_1.useEffect)(() => {
23
- if (!source || !isLoaded) {
24
- return;
25
- }
26
16
  source.setFilter(filter);
27
- }, [filter, source, isLoaded]);
17
+ }, [source]);
18
+ const getData = (0, react_1.useCallback)(() => source === null || source === void 0 ? void 0 : source.getFilter(), [source]);
19
+ return {
20
+ getData,
21
+ setData
22
+ };
28
23
  };
29
24
  exports.useSaveState = useSaveState;
@@ -9,5 +9,8 @@ type FilterStateProps<TFilter> = Omit<StateProps<TFilter>, 'source'> & {
9
9
  parser?(jsonFilter: string): TFilter;
10
10
  serializer?(filter: TFilter): string;
11
11
  };
12
- export declare const useSaveFilterState: <TFilter>({ options, filter, onLoadFilter, parser, serializer, }: FilterStateProps<TFilter>) => void;
12
+ export declare const useSaveFilterState: <TFilter>({ options, parser, serializer }: FilterStateProps<TFilter>) => {
13
+ getDefaultFilter: () => NonNullable<TFilter> | null | undefined;
14
+ setDataToStorages: (data: TFilter) => void;
15
+ };
13
16
  export {};
@@ -1,34 +1,25 @@
1
- import { useCallback, useEffect, useMemo, useState } from 'react';
1
+ import { useCallback, useMemo } from 'react';
2
2
  import { LocalStorageSource, QueryParamSource, useSaveState } from './useSaveState';
3
- export const useSaveFilterState = ({ options, filter, onLoadFilter, parser, serializer, }) => {
4
- const [queryFilter, setQueryFilter] = useState(null);
5
- const [localStorageFilter, setLocalStorageFilter] = useState(null);
6
- const [isLoaded, setIsLoaded] = useState({
7
- localStorage: false,
8
- queryParams: false,
9
- });
10
- const onLoadQueryParams = useCallback((value) => {
11
- setQueryFilter(value);
12
- setIsLoaded(prev => (Object.assign(Object.assign({}, prev), { queryParams: true })));
13
- }, []);
14
- const onLoadLocalStorage = useCallback((value) => {
15
- setLocalStorageFilter(value);
16
- setIsLoaded(prev => (Object.assign(Object.assign({}, prev), { localStorage: true })));
17
- }, []);
3
+ export const useSaveFilterState = ({ options, parser, serializer }) => {
18
4
  const querySource = useMemo(() => options
19
5
  ? new QueryParamSource(options.filterQueryKey, options.validateData, parser, serializer)
20
6
  : undefined, [options, parser, serializer]);
21
7
  const localStorageSource = useMemo(() => options
22
8
  ? new LocalStorageSource(options.filterLocalStorageKey, options.validateData, parser, serializer)
23
9
  : undefined, [options, parser, serializer]);
24
- useSaveState({ filter, onLoadFilter: onLoadQueryParams, source: querySource });
25
- useSaveState({ filter, onLoadFilter: onLoadLocalStorage, source: localStorageSource });
26
- useEffect(() => {
27
- if (!options) {
28
- onLoadFilter(null);
29
- }
30
- if (isLoaded.localStorage && isLoaded.queryParams) {
31
- onLoadFilter(queryFilter ? queryFilter : localStorageFilter);
32
- }
33
- }, [queryFilter, onLoadFilter, localStorageFilter, isLoaded, options]);
10
+ const { getData: getLocalStorageData, setData: setLocalStorageData } = useSaveState({
11
+ source: querySource,
12
+ });
13
+ const { getData: getQueryParamsData, setData: setQueryParamsData } = useSaveState({
14
+ source: localStorageSource,
15
+ });
16
+ const setDataToStorages = useCallback((data) => {
17
+ setLocalStorageData(data);
18
+ setQueryParamsData(data);
19
+ }, [setLocalStorageData, setQueryParamsData]);
20
+ const getDefaultFilter = useCallback(() => {
21
+ const queryData = getQueryParamsData();
22
+ return queryData ? queryData : getLocalStorageData();
23
+ }, [getLocalStorageData, getQueryParamsData]);
24
+ return { getDefaultFilter, setDataToStorages };
34
25
  };
@@ -1,7 +1,8 @@
1
1
  import { BaseSource } from './sources/baseSource';
2
2
  export type StateProps<T> = {
3
- filter: T;
4
- onLoadFilter(filter: T | null): void;
5
3
  source?: BaseSource<T>;
6
4
  };
7
- export declare const useSaveState: <T>({ filter, onLoadFilter, source }: StateProps<T>) => void;
5
+ export declare const useSaveState: <T>({ source }: StateProps<T>) => {
6
+ getData: () => NonNullable<T> | null | undefined;
7
+ setData: (filter: T) => void;
8
+ };
@@ -1,17 +1,11 @@
1
- import { useEffect, useState } from 'react';
2
- export const useSaveState = ({ filter, onLoadFilter, source }) => {
3
- const [isLoaded, setIsLoaded] = useState(false);
4
- useEffect(() => {
1
+ import { useCallback } from 'react';
2
+ export const useSaveState = ({ source }) => {
3
+ const setData = useCallback((filter) => {
5
4
  if (!source) {
6
5
  return;
7
6
  }
8
- onLoadFilter(source.getFilter());
9
- setIsLoaded(true);
10
- }, [onLoadFilter, source]);
11
- useEffect(() => {
12
- if (!source || !isLoaded) {
13
- return;
14
- }
15
7
  source.setFilter(filter);
16
- }, [filter, source, isLoaded]);
8
+ }, [source]);
9
+ const getData = useCallback(() => source === null || source === void 0 ? void 0 : source.getFilter(), [source]);
10
+ return { getData, setData };
17
11
  };
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "Utils",
7
- "version": "3.7.1-preview-74c13173.0",
7
+ "version": "3.7.1-preview-d479ae3f.0",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
@@ -39,5 +39,5 @@
39
39
  "react-swipeable": "7.0.2",
40
40
  "uncontrollable": "8.0.4"
41
41
  },
42
- "gitHead": "a3a4d2281eb9a1143c3a60efd0ccca4daa5c246c"
42
+ "gitHead": "fbef57a916bd6bc34b52fe127004713a8228b795"
43
43
  }
@@ -1,4 +1,4 @@
1
- import { useCallback, useEffect, useMemo, useState } from 'react';
1
+ import { useCallback, useMemo } from 'react';
2
2
 
3
3
  import { LocalStorageSource, QueryParamSource, StateProps, useSaveState } from './useSaveState';
4
4
 
@@ -14,30 +14,7 @@ type FilterStateProps<TFilter> = Omit<StateProps<TFilter>, 'source'> & {
14
14
  serializer?(filter: TFilter): string;
15
15
  };
16
16
 
17
- export const useSaveFilterState = <TFilter>({
18
- options,
19
- filter,
20
- onLoadFilter,
21
- parser,
22
- serializer,
23
- }: FilterStateProps<TFilter>) => {
24
- const [queryFilter, setQueryFilter] = useState<TFilter | null>(null);
25
- const [localStorageFilter, setLocalStorageFilter] = useState<TFilter | null>(null);
26
- const [isLoaded, setIsLoaded] = useState<{ localStorage: boolean; queryParams: boolean }>({
27
- localStorage: false,
28
- queryParams: false,
29
- });
30
-
31
- const onLoadQueryParams = useCallback((value: TFilter | null) => {
32
- setQueryFilter(value);
33
- setIsLoaded(prev => ({ ...prev, queryParams: true }));
34
- }, []);
35
-
36
- const onLoadLocalStorage = useCallback((value: TFilter | null) => {
37
- setLocalStorageFilter(value);
38
- setIsLoaded(prev => ({ ...prev, localStorage: true }));
39
- }, []);
40
-
17
+ export const useSaveFilterState = <TFilter>({ options, parser, serializer }: FilterStateProps<TFilter>) => {
41
18
  const querySource = useMemo(
42
19
  () =>
43
20
  options
@@ -53,15 +30,25 @@ export const useSaveFilterState = <TFilter>({
53
30
  [options, parser, serializer],
54
31
  );
55
32
 
56
- useSaveState<TFilter>({ filter, onLoadFilter: onLoadQueryParams, source: querySource });
57
- useSaveState<TFilter>({ filter, onLoadFilter: onLoadLocalStorage, source: localStorageSource });
33
+ const { getData: getLocalStorageData, setData: setLocalStorageData } = useSaveState<TFilter>({
34
+ source: querySource,
35
+ });
36
+ const { getData: getQueryParamsData, setData: setQueryParamsData } = useSaveState<TFilter>({
37
+ source: localStorageSource,
38
+ });
39
+
40
+ const setDataToStorages = useCallback(
41
+ (data: TFilter) => {
42
+ setLocalStorageData(data);
43
+ setQueryParamsData(data);
44
+ },
45
+ [setLocalStorageData, setQueryParamsData],
46
+ );
47
+
48
+ const getDefaultFilter = useCallback(() => {
49
+ const queryData = getQueryParamsData();
50
+ return queryData ? queryData : getLocalStorageData();
51
+ }, [getLocalStorageData, getQueryParamsData]);
58
52
 
59
- useEffect(() => {
60
- if (!options) {
61
- onLoadFilter(null);
62
- }
63
- if (isLoaded.localStorage && isLoaded.queryParams) {
64
- onLoadFilter(queryFilter ? queryFilter : localStorageFilter);
65
- }
66
- }, [queryFilter, onLoadFilter, localStorageFilter, isLoaded, options]);
53
+ return { getDefaultFilter, setDataToStorages };
67
54
  };
@@ -1,28 +1,23 @@
1
- import { useEffect, useState } from 'react';
1
+ import { useCallback } from 'react';
2
2
 
3
3
  import { BaseSource } from './sources/baseSource';
4
4
 
5
5
  export type StateProps<T> = {
6
- filter: T;
7
- onLoadFilter(filter: T | null): void;
8
6
  source?: BaseSource<T>;
9
7
  };
10
8
 
11
- export const useSaveState = <T>({ filter, onLoadFilter, source }: StateProps<T>) => {
12
- const [isLoaded, setIsLoaded] = useState<boolean>(false);
9
+ export const useSaveState = <T>({ source }: StateProps<T>) => {
10
+ const setData = useCallback(
11
+ (filter: T) => {
12
+ if (!source) {
13
+ return;
14
+ }
15
+ source.setFilter(filter);
16
+ },
17
+ [source],
18
+ );
13
19
 
14
- useEffect(() => {
15
- if (!source) {
16
- return;
17
- }
18
- onLoadFilter(source.getFilter());
19
- setIsLoaded(true);
20
- }, [onLoadFilter, source]);
20
+ const getData = useCallback(() => source?.getFilter(), [source]);
21
21
 
22
- useEffect(() => {
23
- if (!source || !isLoaded) {
24
- return;
25
- }
26
- source.setFilter(filter);
27
- }, [filter, source, isLoaded]);
22
+ return { getData, setData };
28
23
  };