@gravity-ui/dashkit 5.3.0 → 5.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.4.0](https://github.com/gravity-ui/dashkit/compare/v5.3.0...v5.4.0) (2023-04-13)
4
+
5
+
6
+ ### Features
7
+
8
+ * add widget defaults ([#52](https://github.com/gravity-ui/dashkit/issues/52)) ([a6e512d](https://github.com/gravity-ui/dashkit/commit/a6e512d132e6c9f0fc93d63527f233656863831e))
9
+ * clear default actionParams ([#55](https://github.com/gravity-ui/dashkit/issues/55)) ([4184b82](https://github.com/gravity-ui/dashkit/commit/4184b828228c6faae21a9c9731fee544f7dd5362))
10
+
3
11
  ## [5.3.0](https://github.com/gravity-ui/dashkit/compare/v5.2.0...v5.3.0) (2023-04-06)
4
12
 
5
13
 
@@ -69,4 +69,13 @@ export declare function hasActionParam(conf?: StringParams): boolean;
69
69
  * @param stateAndParams
70
70
  */
71
71
  export declare function hasActionParams(stateAndParams: ItemStateAndParams): boolean;
72
+ /**
73
+ * Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
74
+ * @param defaultWidgetParams
75
+ * @param queueWidgetParams
76
+ */
77
+ export declare function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }: {
78
+ defaultWidgetParams: StringParams;
79
+ queueWidgetParams: StringParams;
80
+ }): string[];
72
81
  export {};
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hasActionParams = exports.hasActionParam = exports.transformParamsToActionParams = exports.pickExceptActionParamsFromParams = exports.pickActionParamsFromParams = exports.deleteFromQueue = exports.addToQueue = exports.getInitialItemsStateAndParamsMeta = exports.mergeParamsWithAliases = exports.getMapItemsIgnores = exports.resolveItemInnerId = exports.formQueueData = exports.isItemWithTabs = exports.getCurrentVersion = exports.getItemsStateAndParamsMeta = exports.prerenderItems = void 0;
3
+ exports.getDefaultsActionParamsToClear = exports.hasActionParams = exports.hasActionParam = exports.transformParamsToActionParams = exports.pickExceptActionParamsFromParams = exports.pickActionParamsFromParams = exports.deleteFromQueue = exports.addToQueue = exports.getInitialItemsStateAndParamsMeta = exports.mergeParamsWithAliases = exports.getMapItemsIgnores = exports.resolveItemInnerId = exports.formQueueData = exports.isItemWithTabs = exports.getCurrentVersion = exports.getItemsStateAndParamsMeta = exports.prerenderItems = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const keyBy_1 = tslib_1.__importDefault(require("lodash/keyBy"));
6
6
  const get_1 = tslib_1.__importDefault(require("lodash/get"));
7
7
  const invert_1 = tslib_1.__importDefault(require("lodash/invert"));
8
8
  const isEmpty_1 = tslib_1.__importDefault(require("lodash/isEmpty"));
9
9
  const pick_1 = tslib_1.__importDefault(require("lodash/pick"));
10
+ const intersection_1 = tslib_1.__importDefault(require("lodash/intersection"));
10
11
  const constants_1 = require("../constants");
11
12
  function getNormalizedPlugins(plugins) {
12
13
  return (0, keyBy_1.default)(plugins, 'type');
@@ -259,3 +260,23 @@ function hasActionParams(stateAndParams) {
259
260
  return hasActionParam(stateAndParams.params);
260
261
  }
261
262
  exports.hasActionParams = hasActionParams;
263
+ /**
264
+ * Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
265
+ * @param defaultWidgetParams
266
+ * @param queueWidgetParams
267
+ */
268
+ function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }) {
269
+ const widgetDefaultsWithActionParams = hasActionParam(defaultWidgetParams)
270
+ ? pickActionParamsFromParams(defaultWidgetParams)
271
+ : null;
272
+ if (!widgetDefaultsWithActionParams) {
273
+ return [];
274
+ }
275
+ // clear default actionParams if some param with the same name without prefix affected on current widget
276
+ // ex.: queueWidgetParams contain {Year: 1970} and default actionParams contain {_ap_Year: 2000}
277
+ const actionParamKeyToClear = (0, intersection_1.default)(Object.keys(queueWidgetParams), Object.keys(widgetDefaultsWithActionParams));
278
+ return actionParamKeyToClear.length
279
+ ? actionParamKeyToClear.map((key) => `${constants_1.ACTION_PARAM_PREFIX}${key}`)
280
+ : [];
281
+ }
282
+ exports.getDefaultsActionParamsToClear = getDefaultsActionParamsToClear;
@@ -14,7 +14,7 @@ function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, i
14
14
  const queueData = isFirstVersion
15
15
  ? []
16
16
  : (0, helpers_1.formQueueData)({ items, itemsStateAndParams });
17
- // В будущем учитывать не только игноры, когда такой kind появится
17
+ // to consider other kind types in future (not only ignore)
18
18
  const mapItemsIgnores = (0, helpers_1.getMapItemsIgnores)({
19
19
  items,
20
20
  ignores: connections.filter(({ kind }) => kind === 'ignore'),
@@ -24,23 +24,33 @@ function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, i
24
24
  const groupByNamespace = (0, groupBy_1.default)(items, 'namespace');
25
25
  const itemsWithDefaultsByNamespace = Object.keys(groupByNamespace).reduce((acc, namespace) => {
26
26
  return Object.assign(Object.assign({}, acc), {
27
- // Сейчас дефолты только у Селектов, затем для виджетов нужно доставать из item.data.tabs[].defaults
28
- // но определиться с порядком их применения
27
+ // there are defaults only in selectors by now, need to get them from item.data.tabs[].defaults for widgets
28
+ // but make a decision about there's order first
29
29
  [namespace]: groupByNamespace[namespace].filter((item) => item.defaults) });
30
30
  }, {});
31
31
  return items.reduce((itemsParams, item) => {
32
- var _a;
32
+ var _a, _b;
33
33
  const { id, namespace } = item;
34
+ let defaultWidgetParams = {};
35
+ if ((0, helpers_1.isItemWithTabs)(item)) {
36
+ const currentWidgetTabId = (0, helpers_1.resolveItemInnerId)({ item, itemsStateAndParams });
37
+ const itemTabs = item.data.tabs;
38
+ defaultWidgetParams =
39
+ ((_a = itemTabs.find((tabItem) => (tabItem === null || tabItem === void 0 ? void 0 : tabItem.id) === currentWidgetTabId)) === null || _a === void 0 ? void 0 : _a.params) || {};
40
+ }
41
+ else {
42
+ defaultWidgetParams = item.defaults || {};
43
+ }
34
44
  const getMergedParams = (params, actionParams) => (0, helpers_1.mergeParamsWithAliases)({ aliases, namespace, params: params || {}, actionParams });
35
45
  const itemIgnores = mapItemsIgnores[id];
36
46
  const affectingItemsWithDefaults = itemsWithDefaultsByNamespace[namespace].filter((itemWithDefaults) => !itemIgnores.includes(itemWithDefaults.id));
37
47
  let itemParams = Object.assign({}, getMergedParams(defaultGlobalParams),
38
- // Стартовые дефолтные параметры
48
+ // default parameters to begin with
39
49
  affectingItemsWithDefaults.reduceRight((defaultParams, itemWithDefaults) => {
40
50
  return Object.assign(Object.assign({}, defaultParams), getMergedParams(itemWithDefaults.defaults || {}));
41
51
  }, {}), getMergedParams(globalParams));
42
52
  if (isFirstVersion) {
43
- itemParams = Object.assign(itemParams, ((_a = itemsStateAndParams === null || itemsStateAndParams === void 0 ? void 0 : itemsStateAndParams[id]) === null || _a === void 0 ? void 0 : _a.params) || {});
53
+ itemParams = Object.assign(itemParams, ((_b = itemsStateAndParams === null || itemsStateAndParams === void 0 ? void 0 : itemsStateAndParams[id]) === null || _b === void 0 ? void 0 : _b.params) || {});
44
54
  }
45
55
  else {
46
56
  // params according to queue of its applying
@@ -68,9 +78,16 @@ function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, i
68
78
  ? (0, helpers_1.pickActionParamsFromParams)(data.params, true)
69
79
  : {};
70
80
  }
81
+ const clearActionParams = (0, helpers_1.getDefaultsActionParamsToClear)({
82
+ defaultWidgetParams,
83
+ queueWidgetParams: queueDataItems,
84
+ });
85
+ if (clearActionParams.length) {
86
+ defaultWidgetParams = (0, omit_1.default)(defaultWidgetParams, clearActionParams);
87
+ }
71
88
  itemParams = Object.assign(itemParams, queueDataItems);
72
89
  }
73
- return Object.assign(Object.assign({}, itemsParams), { [id]: itemParams });
90
+ return Object.assign(Object.assign({}, itemsParams), { [id]: Object.assign(Object.assign({}, defaultWidgetParams), itemParams) });
74
91
  }, {});
75
92
  }
76
93
  exports.getItemsParams = getItemsParams;
@@ -274,6 +274,7 @@ const stateAndParamsForAP1 = {
274
274
  Q8: {
275
275
  params: {
276
276
  Country: '',
277
+ Year: '',
277
278
  _ap_Country: 'Italy',
278
279
  'd079937f-6bc4-4133-9171-40092bb20d6f': '',
279
280
  },
@@ -301,7 +302,11 @@ const stateAndParamsForAP2 = {
301
302
  state: {},
302
303
  },
303
304
  Q8: {
304
- params: { Country: 'Belgium', 'd079937f-6bc4-4133-9171-40092bb20d6f': 'Belgium' },
305
+ params: {
306
+ Country: 'Belgium',
307
+ Year: '',
308
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': 'Belgium',
309
+ },
305
310
  state: {},
306
311
  },
307
312
  al: {
@@ -327,6 +332,7 @@ const stateAndParamsForAP3 = {
327
332
  Q8: {
328
333
  params: {
329
334
  Country: '',
335
+ Year: '',
330
336
  'd079937f-6bc4-4133-9171-40092bb20d6f': '',
331
337
  },
332
338
  state: {},
@@ -357,6 +363,7 @@ const stateAndParamsForAP4 = {
357
363
  Q8: {
358
364
  params: {
359
365
  Country: '',
366
+ Year: '',
360
367
  _ap_Country: '',
361
368
  'd079937f-6bc4-4133-9171-40092bb20d6f': '',
362
369
  },
@@ -371,6 +378,38 @@ const stateAndParamsForAP4 = {
371
378
  },
372
379
  },
373
380
  };
381
+ const stateAndParamsForAP5 = {
382
+ in: {
383
+ Q8: { params: {} },
384
+ L5: { params: {} },
385
+ __meta__: { queue: [], version: 2 },
386
+ },
387
+ out: {
388
+ L5: {
389
+ params: {
390
+ Country: ['Italy', 'France'],
391
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
392
+ },
393
+ state: {},
394
+ },
395
+ Q8: {
396
+ params: {
397
+ Country: ['Italy', 'France'],
398
+ Year: '',
399
+ _ap_Country: 'Belgium',
400
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
401
+ },
402
+ state: {},
403
+ },
404
+ al: {
405
+ params: {
406
+ Country: ['Italy', 'France'],
407
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
408
+ },
409
+ state: {},
410
+ },
411
+ },
412
+ };
374
413
  const configs = configs_json_1.default.configs;
375
414
  describe('getItemsStateAndParamsDL', () => {
376
415
  describe('old version fallback', () => {
@@ -452,4 +491,15 @@ describe('getItemsStateAndParams actionParams variants check', () => {
452
491
  expect(resultItemsStateAndParams).toEqual((0, omit_1.default)(stateAndParamsForAP4.out, constants_1.META_KEY));
453
492
  });
454
493
  });
494
+ describe('action and params state 5', () => {
495
+ const resultItemsStateAndParams = (0, datalens_1.getItemsStateAndParamsDL)({
496
+ defaultGlobalParams: {},
497
+ globalParams: {},
498
+ config: configs[3],
499
+ itemsStateAndParams: stateAndParamsForAP5.in,
500
+ });
501
+ it('return stateAndParamsForAP5.out', () => {
502
+ expect(resultItemsStateAndParams).toEqual((0, omit_1.default)(stateAndParamsForAP5.out, constants_1.META_KEY));
503
+ });
504
+ });
455
505
  });
@@ -69,4 +69,13 @@ export declare function hasActionParam(conf?: StringParams): boolean;
69
69
  * @param stateAndParams
70
70
  */
71
71
  export declare function hasActionParams(stateAndParams: ItemStateAndParams): boolean;
72
+ /**
73
+ * Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
74
+ * @param defaultWidgetParams
75
+ * @param queueWidgetParams
76
+ */
77
+ export declare function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }: {
78
+ defaultWidgetParams: StringParams;
79
+ queueWidgetParams: StringParams;
80
+ }): string[];
72
81
  export {};
@@ -3,6 +3,7 @@ import get from 'lodash/get';
3
3
  import invert from 'lodash/invert';
4
4
  import isEmpty from 'lodash/isEmpty';
5
5
  import pick from 'lodash/pick';
6
+ import intersection from 'lodash/intersection';
6
7
  import { META_KEY, CURRENT_VERSION, ACTION_PARAM_PREFIX } from '../constants';
7
8
  function getNormalizedPlugins(plugins) {
8
9
  return keyBy(plugins, 'type');
@@ -239,3 +240,22 @@ export function hasActionParams(stateAndParams) {
239
240
  }
240
241
  return hasActionParam(stateAndParams.params);
241
242
  }
243
+ /**
244
+ * Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
245
+ * @param defaultWidgetParams
246
+ * @param queueWidgetParams
247
+ */
248
+ export function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }) {
249
+ const widgetDefaultsWithActionParams = hasActionParam(defaultWidgetParams)
250
+ ? pickActionParamsFromParams(defaultWidgetParams)
251
+ : null;
252
+ if (!widgetDefaultsWithActionParams) {
253
+ return [];
254
+ }
255
+ // clear default actionParams if some param with the same name without prefix affected on current widget
256
+ // ex.: queueWidgetParams contain {Year: 1970} and default actionParams contain {_ap_Year: 2000}
257
+ const actionParamKeyToClear = intersection(Object.keys(queueWidgetParams), Object.keys(widgetDefaultsWithActionParams));
258
+ return actionParamKeyToClear.length
259
+ ? actionParamKeyToClear.map((key) => `${ACTION_PARAM_PREFIX}${key}`)
260
+ : [];
261
+ }
@@ -2,7 +2,7 @@ import groupBy from 'lodash/groupBy';
2
2
  import intersection from 'lodash/intersection';
3
3
  import omit from 'lodash/omit';
4
4
  import { META_KEY } from '../constants';
5
- import { prerenderItems, formQueueData, getMapItemsIgnores, mergeParamsWithAliases, getCurrentVersion, pickActionParamsFromParams, hasActionParam, pickExceptActionParamsFromParams, transformParamsToActionParams, } from './helpers';
5
+ import { prerenderItems, formQueueData, getMapItemsIgnores, mergeParamsWithAliases, getCurrentVersion, pickActionParamsFromParams, hasActionParam, pickExceptActionParamsFromParams, transformParamsToActionParams, isItemWithTabs, resolveItemInnerId, getDefaultsActionParamsToClear, } from './helpers';
6
6
  export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, itemsStateAndParams, plugins, }) {
7
7
  const { aliases, connections } = config;
8
8
  const items = prerenderItems({ items: config.items, plugins });
@@ -10,7 +10,7 @@ export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, co
10
10
  const queueData = isFirstVersion
11
11
  ? []
12
12
  : formQueueData({ items, itemsStateAndParams });
13
- // В будущем учитывать не только игноры, когда такой kind появится
13
+ // to consider other kind types in future (not only ignore)
14
14
  const mapItemsIgnores = getMapItemsIgnores({
15
15
  items,
16
16
  ignores: connections.filter(({ kind }) => kind === 'ignore'),
@@ -20,23 +20,33 @@ export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, co
20
20
  const groupByNamespace = groupBy(items, 'namespace');
21
21
  const itemsWithDefaultsByNamespace = Object.keys(groupByNamespace).reduce((acc, namespace) => {
22
22
  return Object.assign(Object.assign({}, acc), {
23
- // Сейчас дефолты только у Селектов, затем для виджетов нужно доставать из item.data.tabs[].defaults
24
- // но определиться с порядком их применения
23
+ // there are defaults only in selectors by now, need to get them from item.data.tabs[].defaults for widgets
24
+ // but make a decision about there's order first
25
25
  [namespace]: groupByNamespace[namespace].filter((item) => item.defaults) });
26
26
  }, {});
27
27
  return items.reduce((itemsParams, item) => {
28
- var _a;
28
+ var _a, _b;
29
29
  const { id, namespace } = item;
30
+ let defaultWidgetParams = {};
31
+ if (isItemWithTabs(item)) {
32
+ const currentWidgetTabId = resolveItemInnerId({ item, itemsStateAndParams });
33
+ const itemTabs = item.data.tabs;
34
+ defaultWidgetParams =
35
+ ((_a = itemTabs.find((tabItem) => (tabItem === null || tabItem === void 0 ? void 0 : tabItem.id) === currentWidgetTabId)) === null || _a === void 0 ? void 0 : _a.params) || {};
36
+ }
37
+ else {
38
+ defaultWidgetParams = item.defaults || {};
39
+ }
30
40
  const getMergedParams = (params, actionParams) => mergeParamsWithAliases({ aliases, namespace, params: params || {}, actionParams });
31
41
  const itemIgnores = mapItemsIgnores[id];
32
42
  const affectingItemsWithDefaults = itemsWithDefaultsByNamespace[namespace].filter((itemWithDefaults) => !itemIgnores.includes(itemWithDefaults.id));
33
43
  let itemParams = Object.assign({}, getMergedParams(defaultGlobalParams),
34
- // Стартовые дефолтные параметры
44
+ // default parameters to begin with
35
45
  affectingItemsWithDefaults.reduceRight((defaultParams, itemWithDefaults) => {
36
46
  return Object.assign(Object.assign({}, defaultParams), getMergedParams(itemWithDefaults.defaults || {}));
37
47
  }, {}), getMergedParams(globalParams));
38
48
  if (isFirstVersion) {
39
- itemParams = Object.assign(itemParams, ((_a = itemsStateAndParams === null || itemsStateAndParams === void 0 ? void 0 : itemsStateAndParams[id]) === null || _a === void 0 ? void 0 : _a.params) || {});
49
+ itemParams = Object.assign(itemParams, ((_b = itemsStateAndParams === null || itemsStateAndParams === void 0 ? void 0 : itemsStateAndParams[id]) === null || _b === void 0 ? void 0 : _b.params) || {});
40
50
  }
41
51
  else {
42
52
  // params according to queue of its applying
@@ -64,9 +74,16 @@ export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, co
64
74
  ? pickActionParamsFromParams(data.params, true)
65
75
  : {};
66
76
  }
77
+ const clearActionParams = getDefaultsActionParamsToClear({
78
+ defaultWidgetParams,
79
+ queueWidgetParams: queueDataItems,
80
+ });
81
+ if (clearActionParams.length) {
82
+ defaultWidgetParams = omit(defaultWidgetParams, clearActionParams);
83
+ }
67
84
  itemParams = Object.assign(itemParams, queueDataItems);
68
85
  }
69
- return Object.assign(Object.assign({}, itemsParams), { [id]: itemParams });
86
+ return Object.assign(Object.assign({}, itemsParams), { [id]: Object.assign(Object.assign({}, defaultWidgetParams), itemParams) });
70
87
  }, {});
71
88
  }
72
89
  export function getItemsState({ config, itemsStateAndParams, }) {
@@ -270,6 +270,7 @@ const stateAndParamsForAP1 = {
270
270
  Q8: {
271
271
  params: {
272
272
  Country: '',
273
+ Year: '',
273
274
  _ap_Country: 'Italy',
274
275
  'd079937f-6bc4-4133-9171-40092bb20d6f': '',
275
276
  },
@@ -297,7 +298,11 @@ const stateAndParamsForAP2 = {
297
298
  state: {},
298
299
  },
299
300
  Q8: {
300
- params: { Country: 'Belgium', 'd079937f-6bc4-4133-9171-40092bb20d6f': 'Belgium' },
301
+ params: {
302
+ Country: 'Belgium',
303
+ Year: '',
304
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': 'Belgium',
305
+ },
301
306
  state: {},
302
307
  },
303
308
  al: {
@@ -323,6 +328,7 @@ const stateAndParamsForAP3 = {
323
328
  Q8: {
324
329
  params: {
325
330
  Country: '',
331
+ Year: '',
326
332
  'd079937f-6bc4-4133-9171-40092bb20d6f': '',
327
333
  },
328
334
  state: {},
@@ -353,6 +359,7 @@ const stateAndParamsForAP4 = {
353
359
  Q8: {
354
360
  params: {
355
361
  Country: '',
362
+ Year: '',
356
363
  _ap_Country: '',
357
364
  'd079937f-6bc4-4133-9171-40092bb20d6f': '',
358
365
  },
@@ -367,6 +374,38 @@ const stateAndParamsForAP4 = {
367
374
  },
368
375
  },
369
376
  };
377
+ const stateAndParamsForAP5 = {
378
+ in: {
379
+ Q8: { params: {} },
380
+ L5: { params: {} },
381
+ __meta__: { queue: [], version: 2 },
382
+ },
383
+ out: {
384
+ L5: {
385
+ params: {
386
+ Country: ['Italy', 'France'],
387
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
388
+ },
389
+ state: {},
390
+ },
391
+ Q8: {
392
+ params: {
393
+ Country: ['Italy', 'France'],
394
+ Year: '',
395
+ _ap_Country: 'Belgium',
396
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
397
+ },
398
+ state: {},
399
+ },
400
+ al: {
401
+ params: {
402
+ Country: ['Italy', 'France'],
403
+ 'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
404
+ },
405
+ state: {},
406
+ },
407
+ },
408
+ };
370
409
  const configs = mockConfigs.configs;
371
410
  describe('getItemsStateAndParamsDL', () => {
372
411
  describe('old version fallback', () => {
@@ -448,4 +487,15 @@ describe('getItemsStateAndParams actionParams variants check', () => {
448
487
  expect(resultItemsStateAndParams).toEqual(omit(stateAndParamsForAP4.out, META_KEY));
449
488
  });
450
489
  });
490
+ describe('action and params state 5', () => {
491
+ const resultItemsStateAndParams = getItemsStateAndParamsDL({
492
+ defaultGlobalParams: {},
493
+ globalParams: {},
494
+ config: configs[3],
495
+ itemsStateAndParams: stateAndParamsForAP5.in,
496
+ });
497
+ it('return stateAndParamsForAP5.out', () => {
498
+ expect(resultItemsStateAndParams).toEqual(omit(stateAndParamsForAP5.out, META_KEY));
499
+ });
500
+ });
451
501
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/dashkit",
3
- "version": "5.3.0",
3
+ "version": "5.4.0",
4
4
  "description": "Library for rendering dashboard grid layout",
5
5
  "license": "MIT",
6
6
  "repository": {