@gravity-ui/dashkit 9.1.3 → 9.2.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/build/cjs/components/GridLayout/GridLayout.js +3 -3
- package/build/cjs/components/GridLayout/GridLayout.js.map +1 -1
- package/build/cjs/components/MobileLayout/MobileLayout.js +4 -4
- package/build/cjs/components/MobileLayout/MobileLayout.js.map +1 -1
- package/build/cjs/components/MobileLayout/helpers.d.ts +1 -1
- package/build/cjs/components/MobileLayout/helpers.js +2 -2
- package/build/cjs/components/MobileLayout/helpers.js.map +1 -1
- package/build/cjs/context/DashKitContext.d.ts +1 -0
- package/build/cjs/context/DashKitContext.js.map +1 -1
- package/build/cjs/hocs/withContext.js +7 -3
- package/build/cjs/hocs/withContext.js.map +1 -1
- package/build/cjs/hooks/useCalcLayout.d.ts +2 -13
- package/build/cjs/hooks/useCalcLayout.js +12 -4
- package/build/cjs/hooks/useCalcLayout.js.map +1 -1
- package/build/cjs/shared/modules/__tests__/global-items.test.d.ts +1 -0
- package/build/cjs/shared/modules/__tests__/global-items.test.js +372 -0
- package/build/cjs/shared/modules/__tests__/global-items.test.js.map +1 -0
- package/build/cjs/shared/modules/helpers.d.ts +1 -0
- package/build/cjs/shared/modules/helpers.js +10 -2
- package/build/cjs/shared/modules/helpers.js.map +1 -1
- package/build/cjs/shared/modules/state-and-params.js +7 -2
- package/build/cjs/shared/modules/state-and-params.js.map +1 -1
- package/build/cjs/shared/modules/uniq-id.js +1 -1
- package/build/cjs/shared/modules/uniq-id.js.map +1 -1
- package/build/cjs/shared/types/config.d.ts +1 -0
- package/build/cjs/shared/types/config.js.map +1 -1
- package/build/cjs/typings/config.d.ts +1 -0
- package/build/cjs/typings/config.js.map +1 -1
- package/build/cjs/utils/update-manager.js +66 -36
- package/build/cjs/utils/update-manager.js.map +1 -1
- package/build/esm/components/GridLayout/GridLayout.js +3 -3
- package/build/esm/components/GridLayout/GridLayout.js.map +1 -1
- package/build/esm/components/MobileLayout/MobileLayout.js +4 -4
- package/build/esm/components/MobileLayout/MobileLayout.js.map +1 -1
- package/build/esm/components/MobileLayout/helpers.d.ts +1 -1
- package/build/esm/components/MobileLayout/helpers.js +2 -2
- package/build/esm/components/MobileLayout/helpers.js.map +1 -1
- package/build/esm/context/DashKitContext.d.ts +1 -0
- package/build/esm/context/DashKitContext.js.map +1 -1
- package/build/esm/hocs/withContext.js +8 -4
- package/build/esm/hocs/withContext.js.map +1 -1
- package/build/esm/hooks/useCalcLayout.d.ts +2 -13
- package/build/esm/hooks/useCalcLayout.js +12 -4
- package/build/esm/hooks/useCalcLayout.js.map +1 -1
- package/build/esm/shared/modules/__tests__/global-items.test.d.ts +1 -0
- package/build/esm/shared/modules/__tests__/global-items.test.js +370 -0
- package/build/esm/shared/modules/__tests__/global-items.test.js.map +1 -0
- package/build/esm/shared/modules/helpers.d.ts +1 -0
- package/build/esm/shared/modules/helpers.js +9 -2
- package/build/esm/shared/modules/helpers.js.map +1 -1
- package/build/esm/shared/modules/state-and-params.js +8 -3
- package/build/esm/shared/modules/state-and-params.js.map +1 -1
- package/build/esm/shared/modules/uniq-id.js +2 -2
- package/build/esm/shared/modules/uniq-id.js.map +1 -1
- package/build/esm/shared/types/config.d.ts +1 -0
- package/build/esm/shared/types/config.js.map +1 -1
- package/build/esm/typings/config.d.ts +1 -0
- package/build/esm/typings/config.js.map +1 -1
- package/build/esm/utils/update-manager.js +67 -37
- package/build/esm/utils/update-manager.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Config, type ConfigLayout } from "../shared/index.js";
|
|
2
2
|
import { RegisterManager } from "../utils/index.js";
|
|
3
|
-
export declare const useCalcPropsLayout: (config: Config, registerManager: RegisterManager) =>
|
|
4
|
-
i: string;
|
|
5
|
-
h: number;
|
|
6
|
-
w: number;
|
|
7
|
-
x: number;
|
|
8
|
-
y: number;
|
|
9
|
-
parent?: string;
|
|
10
|
-
minW?: number;
|
|
11
|
-
minH?: number;
|
|
12
|
-
maxW?: number | undefined;
|
|
13
|
-
maxH?: number | undefined;
|
|
14
|
-
}[];
|
|
3
|
+
export declare const useCalcPropsLayout: (config: Config, registerManager: RegisterManager) => ConfigLayout[];
|
|
@@ -4,11 +4,19 @@ exports.useCalcPropsLayout = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
6
|
const isEqual_1 = tslib_1.__importDefault(require("lodash/isEqual.js"));
|
|
7
|
+
const shared_1 = require("../shared/index.js");
|
|
7
8
|
function onUpdatePropsConfig(config, registerManager) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
const configItems = (0, shared_1.getAllConfigItems)(config);
|
|
10
|
+
return config.layout.reduce((acc, itemLayout, i) => {
|
|
11
|
+
const item = configItems[i];
|
|
12
|
+
const foundItem = item && item.id === itemLayout.i
|
|
13
|
+
? item
|
|
14
|
+
: configItems.find((configItem) => configItem.id === itemLayout.i);
|
|
15
|
+
if (foundItem) {
|
|
16
|
+
acc.push(Object.assign(Object.assign({}, registerManager.getItem(foundItem.type).defaultLayout), itemLayout));
|
|
17
|
+
}
|
|
18
|
+
return acc;
|
|
19
|
+
}, []);
|
|
12
20
|
}
|
|
13
21
|
const useCalcPropsLayout = (config, registerManager) => {
|
|
14
22
|
const [prevConfig, setPrevConfig] = react_1.default.useState(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCalcLayout.js","sourceRoot":"../../../src","sources":["hooks/useCalcLayout.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,wEAAqC;
|
|
1
|
+
{"version":3,"file":"useCalcLayout.js","sourceRoot":"../../../src","sources":["hooks/useCalcLayout.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,wEAAqC;AAErC,+CAA6F;AAG7F,SAAS,mBAAmB,CAAC,MAAc,EAAE,eAAgC;IACzE,MAAM,WAAW,GAAG,IAAA,0BAAiB,EAAC,MAAM,CAAC,CAAC;IAE9C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,IAAI,GAA2B,WAAW,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,SAAS,GACX,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YAC5B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;QAE3E,IAAI,SAAS,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,iCACD,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,aAAa,GACrD,UAAU,EACf,CAAC;QACP,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAEM,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,eAAgC,EAAE,EAAE;IACnF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3D,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAE5F,IAAI,CAAC,IAAA,iBAAO,EAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,YAAY,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAXW,QAAA,kBAAkB,sBAW7B;AAEF,yFAAyF;AACzF,uEAAuE;AAEvE,qHAAqH;AACrH,0GAA0G;AAC1G,iHAAiH;AACjH,gHAAgH;AAChH,2GAA2G;AAC3G,6EAA6E;AAE7E,KAAK","sourcesContent":["import React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport {type Config, type ConfigItem, type ConfigLayout, getAllConfigItems} from '../shared';\nimport {RegisterManager} from '../utils';\n\nfunction onUpdatePropsConfig(config: Config, registerManager: RegisterManager) {\n const configItems = getAllConfigItems(config);\n\n return config.layout.reduce<ConfigLayout[]>((acc, itemLayout, i) => {\n const item: ConfigItem | undefined = configItems[i];\n const foundItem =\n item && item.id === itemLayout.i\n ? item\n : configItems.find((configItem) => configItem.id === itemLayout.i);\n\n if (foundItem) {\n acc.push({\n ...registerManager.getItem(foundItem.type).defaultLayout,\n ...itemLayout,\n });\n }\n\n return acc;\n }, []);\n}\n\nexport const useCalcPropsLayout = (config: Config, registerManager: RegisterManager) => {\n const [prevConfig, setPrevConfig] = React.useState(config);\n\n const [layout, updateLayout] = React.useState(onUpdatePropsConfig(config, registerManager));\n\n if (!isEqual(prevConfig.layout, config.layout)) {\n setPrevConfig(config);\n updateLayout(onUpdatePropsConfig(config, registerManager));\n }\n\n return layout;\n};\n\n// export const useManageLayout = (config: Config, registerManager: RegisterManager) => {\n// const propsLayout = useCalcPropsLayout(config, registerManager);\n\n// // так как мы не хотим хранить параметры виджета с активированной автовысотой в сторе и на сервере, актуальный\n// // (видимый юзером в конкретный момент времени) лэйаут (массив объектов с данными о ширине, высоте,\n// // расположении конкретного виджета на сетке) будет храниться в стейте, но, для того, чтобы в стор попадал\n// // лэйаут без учета вижетов с активированной автовысотой, в момент \"подстройки\" высоты виджета значение h\n// // (высота) из конфига будет запоминаться в originalLayouts, новое значение высоты в adjustedLayouts\n// const [currentLayout, setCurrentLayout] = React.useState(propsLayout);\n\n// };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../../constants/index.js");
|
|
4
|
+
const helpers_1 = require("../helpers.js");
|
|
5
|
+
const state_and_params_1 = require("../state-and-params.js");
|
|
6
|
+
const NAMESPACE = 'default';
|
|
7
|
+
const GROUP_CONTROL_TYPE = 'group-control';
|
|
8
|
+
const GLOBAL_ITEM_ID = 'globalItem1';
|
|
9
|
+
const REGULAR_ITEM_ID = 'regularItem1';
|
|
10
|
+
const GROUP_ITEM_ID = 'groupItem1';
|
|
11
|
+
const GROUP_ITEM_ID_2 = 'groupItem2';
|
|
12
|
+
const getMockedControlItem = (props) => {
|
|
13
|
+
const { id = REGULAR_ITEM_ID, groupItemIds = [GROUP_ITEM_ID], defaults } = props || {};
|
|
14
|
+
return {
|
|
15
|
+
id,
|
|
16
|
+
defaults,
|
|
17
|
+
data: {
|
|
18
|
+
group: groupItemIds.map((groupItemId) => ({
|
|
19
|
+
id: groupItemId,
|
|
20
|
+
namespace: NAMESPACE,
|
|
21
|
+
defaults,
|
|
22
|
+
})),
|
|
23
|
+
},
|
|
24
|
+
type: GROUP_CONTROL_TYPE,
|
|
25
|
+
namespace: NAMESPACE,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
const getMockedConfig = ({ items = [], globalItems = [], }) => ({
|
|
29
|
+
items,
|
|
30
|
+
globalItems,
|
|
31
|
+
salt: '0.9021043992843898',
|
|
32
|
+
counter: 124,
|
|
33
|
+
layout: [],
|
|
34
|
+
aliases: {},
|
|
35
|
+
connections: [],
|
|
36
|
+
});
|
|
37
|
+
describe('globalItems functionality in config', () => {
|
|
38
|
+
describe('addToQueue with globalItems', () => {
|
|
39
|
+
it('should include globalItems when filtering actual IDs', () => {
|
|
40
|
+
const globalItem = getMockedControlItem({ id: GLOBAL_ITEM_ID });
|
|
41
|
+
const regularItem = getMockedControlItem();
|
|
42
|
+
const config = getMockedConfig({
|
|
43
|
+
items: [regularItem],
|
|
44
|
+
globalItems: [globalItem],
|
|
45
|
+
});
|
|
46
|
+
const itemsStateAndParams = {
|
|
47
|
+
[constants_1.META_KEY]: {
|
|
48
|
+
queue: [{ id: 'nonExistentItem' }, { id: GLOBAL_ITEM_ID }],
|
|
49
|
+
version: 2,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const result = (0, helpers_1.addToQueue)({
|
|
53
|
+
id: REGULAR_ITEM_ID,
|
|
54
|
+
config,
|
|
55
|
+
itemsStateAndParams,
|
|
56
|
+
});
|
|
57
|
+
// Should filter out non-existent items and add the new item
|
|
58
|
+
expect(result.queue).toEqual([{ id: GLOBAL_ITEM_ID }, { id: REGULAR_ITEM_ID }]);
|
|
59
|
+
});
|
|
60
|
+
it('should handle empty globalItems array', () => {
|
|
61
|
+
const regularItem = getMockedControlItem();
|
|
62
|
+
const config = getMockedConfig({
|
|
63
|
+
items: [regularItem],
|
|
64
|
+
globalItems: [],
|
|
65
|
+
});
|
|
66
|
+
const itemsStateAndParams = {
|
|
67
|
+
[constants_1.META_KEY]: {
|
|
68
|
+
queue: [],
|
|
69
|
+
version: 2,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
const result = (0, helpers_1.addToQueue)({
|
|
73
|
+
id: REGULAR_ITEM_ID,
|
|
74
|
+
config,
|
|
75
|
+
itemsStateAndParams,
|
|
76
|
+
});
|
|
77
|
+
expect(result.queue).toEqual([{ id: REGULAR_ITEM_ID }]);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('addGroupToQueue with globalItems', () => {
|
|
81
|
+
it('should include globalItems when filtering actual IDs for group items', () => {
|
|
82
|
+
const globalGroupItemId = 'globalGroupItem';
|
|
83
|
+
const globalGroupSubItemId = 'globalGroupSubItem';
|
|
84
|
+
const globalGroupSubItemId2 = 'globalGroupSubItem2';
|
|
85
|
+
const globalGroupItem = getMockedControlItem({
|
|
86
|
+
id: globalGroupItemId,
|
|
87
|
+
groupItemIds: [globalGroupSubItemId, globalGroupSubItemId2],
|
|
88
|
+
});
|
|
89
|
+
const regularItem = getMockedControlItem();
|
|
90
|
+
const config = getMockedConfig({
|
|
91
|
+
items: [regularItem],
|
|
92
|
+
globalItems: [globalGroupItem],
|
|
93
|
+
});
|
|
94
|
+
const itemsStateAndParams = {
|
|
95
|
+
[constants_1.META_KEY]: {
|
|
96
|
+
queue: [
|
|
97
|
+
{ id: globalGroupItemId, groupItemId: globalGroupSubItemId },
|
|
98
|
+
{ id: 'nonExistentGroup', groupItemId: 'nonExistentSubItem' },
|
|
99
|
+
],
|
|
100
|
+
version: 2,
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
const result = (0, helpers_1.addGroupToQueue)({
|
|
104
|
+
id: globalGroupItemId,
|
|
105
|
+
groupItemIds: [globalGroupSubItemId2],
|
|
106
|
+
config,
|
|
107
|
+
itemsStateAndParams,
|
|
108
|
+
});
|
|
109
|
+
// Should preserve existing global group item and add new one
|
|
110
|
+
expect(result.queue).toEqual([
|
|
111
|
+
{ id: globalGroupItemId, groupItemId: globalGroupSubItemId },
|
|
112
|
+
{ id: globalGroupItemId, groupItemId: globalGroupSubItemId2 },
|
|
113
|
+
]);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
describe('formQueueData with globalItems', () => {
|
|
117
|
+
it('should process globalItems in queue data formation', () => {
|
|
118
|
+
const globalItem = getMockedControlItem({
|
|
119
|
+
id: GLOBAL_ITEM_ID,
|
|
120
|
+
groupItemIds: [GROUP_ITEM_ID],
|
|
121
|
+
defaults: {
|
|
122
|
+
size: 'l',
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
const regularItem = getMockedControlItem({
|
|
126
|
+
id: REGULAR_ITEM_ID,
|
|
127
|
+
groupItemIds: [GROUP_ITEM_ID_2],
|
|
128
|
+
defaults: { view: 'normal' },
|
|
129
|
+
});
|
|
130
|
+
const itemsStateAndParams = {
|
|
131
|
+
[GLOBAL_ITEM_ID]: {
|
|
132
|
+
params: {
|
|
133
|
+
[GROUP_ITEM_ID]: {
|
|
134
|
+
size: 'xl',
|
|
135
|
+
color: 'red',
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
[REGULAR_ITEM_ID]: {
|
|
140
|
+
params: {
|
|
141
|
+
[GROUP_ITEM_ID_2]: {
|
|
142
|
+
view: 'contrast',
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
[constants_1.META_KEY]: {
|
|
147
|
+
queue: [
|
|
148
|
+
{ id: GLOBAL_ITEM_ID, groupItemId: GROUP_ITEM_ID },
|
|
149
|
+
{ id: REGULAR_ITEM_ID, groupItemId: GROUP_ITEM_ID_2 },
|
|
150
|
+
],
|
|
151
|
+
version: 2,
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
const result = (0, helpers_1.formQueueData)({
|
|
155
|
+
items: [regularItem, globalItem],
|
|
156
|
+
itemsStateAndParams,
|
|
157
|
+
});
|
|
158
|
+
expect(result).toEqual([
|
|
159
|
+
{
|
|
160
|
+
id: GROUP_ITEM_ID,
|
|
161
|
+
namespace: NAMESPACE,
|
|
162
|
+
params: { size: 'xl' },
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: GROUP_ITEM_ID_2,
|
|
166
|
+
namespace: NAMESPACE,
|
|
167
|
+
params: { view: 'contrast' },
|
|
168
|
+
},
|
|
169
|
+
]);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
describe('getItemsParams with globalItems', () => {
|
|
173
|
+
it('should process globalItems when getting items parameters', () => {
|
|
174
|
+
const globalParam = 'globalParam';
|
|
175
|
+
const overriddenParam = 'overriddenValue';
|
|
176
|
+
const regularParam = 'regularValue';
|
|
177
|
+
const globalItem = getMockedControlItem({ id: GLOBAL_ITEM_ID, defaults: { globalParam } });
|
|
178
|
+
const regularItem = getMockedControlItem({
|
|
179
|
+
id: REGULAR_ITEM_ID,
|
|
180
|
+
groupItemIds: [GROUP_ITEM_ID_2],
|
|
181
|
+
defaults: {
|
|
182
|
+
regularParam,
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
const config = getMockedConfig({
|
|
186
|
+
items: [regularItem],
|
|
187
|
+
globalItems: [globalItem],
|
|
188
|
+
});
|
|
189
|
+
const itemsStateAndParams = {
|
|
190
|
+
[GLOBAL_ITEM_ID]: {
|
|
191
|
+
params: {
|
|
192
|
+
[GROUP_ITEM_ID]: {
|
|
193
|
+
globalParam: overriddenParam,
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
[constants_1.META_KEY]: {
|
|
198
|
+
queue: [{ id: GLOBAL_ITEM_ID, groupItemId: GROUP_ITEM_ID }],
|
|
199
|
+
version: 2,
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
const result = (0, state_and_params_1.getItemsParams)({
|
|
203
|
+
defaultGlobalParams: {},
|
|
204
|
+
globalParams: {},
|
|
205
|
+
config,
|
|
206
|
+
itemsStateAndParams,
|
|
207
|
+
plugins: [
|
|
208
|
+
{
|
|
209
|
+
type: GROUP_CONTROL_TYPE,
|
|
210
|
+
},
|
|
211
|
+
],
|
|
212
|
+
});
|
|
213
|
+
expect(result[GLOBAL_ITEM_ID]).toEqual({
|
|
214
|
+
[GROUP_ITEM_ID]: {
|
|
215
|
+
globalParam: overriddenParam,
|
|
216
|
+
regularParam,
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
expect(result[REGULAR_ITEM_ID]).toEqual({
|
|
220
|
+
[GROUP_ITEM_ID_2]: {
|
|
221
|
+
globalParam: overriddenParam,
|
|
222
|
+
regularParam,
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
describe('getItemsStateAndParams with globalItems', () => {
|
|
228
|
+
it('should handle globalItems in state and params processing', () => {
|
|
229
|
+
const initialValue = 'value';
|
|
230
|
+
const globalParam = 'globalValue';
|
|
231
|
+
const regularParam = 'regularValue';
|
|
232
|
+
const globalState = 'globalStateValue';
|
|
233
|
+
const regularState = 'regularStateValue';
|
|
234
|
+
const globalItem = getMockedControlItem({
|
|
235
|
+
id: GLOBAL_ITEM_ID,
|
|
236
|
+
defaults: { globalDefault: initialValue },
|
|
237
|
+
});
|
|
238
|
+
const regularItem = getMockedControlItem({
|
|
239
|
+
id: REGULAR_ITEM_ID,
|
|
240
|
+
groupItemIds: [GROUP_ITEM_ID_2],
|
|
241
|
+
defaults: {
|
|
242
|
+
regularDefault: initialValue,
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
const config = getMockedConfig({
|
|
246
|
+
items: [regularItem],
|
|
247
|
+
globalItems: [globalItem],
|
|
248
|
+
});
|
|
249
|
+
// globalParam and regularParam are not included in conrols defaults so they must be ignored
|
|
250
|
+
const itemsStateAndParams = {
|
|
251
|
+
[GLOBAL_ITEM_ID]: {
|
|
252
|
+
params: { globalParam },
|
|
253
|
+
state: { globalState },
|
|
254
|
+
},
|
|
255
|
+
[REGULAR_ITEM_ID]: {
|
|
256
|
+
params: { regularParam },
|
|
257
|
+
state: { regularState },
|
|
258
|
+
},
|
|
259
|
+
[constants_1.META_KEY]: {
|
|
260
|
+
queue: [{ id: GLOBAL_ITEM_ID }, { id: REGULAR_ITEM_ID }],
|
|
261
|
+
version: 2,
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
const result = (0, state_and_params_1.getItemsStateAndParams)({
|
|
265
|
+
defaultGlobalParams: {},
|
|
266
|
+
globalParams: {},
|
|
267
|
+
config,
|
|
268
|
+
itemsStateAndParams,
|
|
269
|
+
plugins: [
|
|
270
|
+
{
|
|
271
|
+
type: GROUP_CONTROL_TYPE,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
});
|
|
275
|
+
expect(result[GLOBAL_ITEM_ID]).toEqual({
|
|
276
|
+
params: {
|
|
277
|
+
[GROUP_ITEM_ID]: {
|
|
278
|
+
globalDefault: initialValue,
|
|
279
|
+
regularDefault: initialValue,
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
state: { globalState },
|
|
283
|
+
});
|
|
284
|
+
expect(result[REGULAR_ITEM_ID]).toEqual({
|
|
285
|
+
params: {
|
|
286
|
+
[GROUP_ITEM_ID_2]: {
|
|
287
|
+
globalDefault: initialValue,
|
|
288
|
+
regularDefault: initialValue,
|
|
289
|
+
},
|
|
290
|
+
},
|
|
291
|
+
state: { regularState },
|
|
292
|
+
});
|
|
293
|
+
expect(result[constants_1.META_KEY]).toEqual({
|
|
294
|
+
queue: [{ id: GLOBAL_ITEM_ID }, { id: REGULAR_ITEM_ID }],
|
|
295
|
+
version: 2,
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
it('should correctly handle config without globalItems', () => {
|
|
299
|
+
const initialValue = 'value';
|
|
300
|
+
const regularParam = 'regularValue';
|
|
301
|
+
const regularState = 'regularStateValue';
|
|
302
|
+
const regularItem = getMockedControlItem({
|
|
303
|
+
id: REGULAR_ITEM_ID,
|
|
304
|
+
defaults: {
|
|
305
|
+
regularParam: initialValue,
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
const config = getMockedConfig({
|
|
309
|
+
items: [regularItem],
|
|
310
|
+
globalItems: undefined,
|
|
311
|
+
});
|
|
312
|
+
const itemsStateAndParams = {
|
|
313
|
+
[REGULAR_ITEM_ID]: {
|
|
314
|
+
params: { regularParam: initialValue },
|
|
315
|
+
state: { regularState },
|
|
316
|
+
},
|
|
317
|
+
[constants_1.META_KEY]: {
|
|
318
|
+
queue: [{ id: REGULAR_ITEM_ID, groupItemId: GROUP_ITEM_ID }],
|
|
319
|
+
version: 2,
|
|
320
|
+
},
|
|
321
|
+
};
|
|
322
|
+
const result = (0, state_and_params_1.getItemsStateAndParams)({
|
|
323
|
+
defaultGlobalParams: {},
|
|
324
|
+
globalParams: { regularParam },
|
|
325
|
+
config,
|
|
326
|
+
itemsStateAndParams,
|
|
327
|
+
plugins: [
|
|
328
|
+
{
|
|
329
|
+
type: GROUP_CONTROL_TYPE,
|
|
330
|
+
},
|
|
331
|
+
],
|
|
332
|
+
});
|
|
333
|
+
expect(result[REGULAR_ITEM_ID]).toEqual({
|
|
334
|
+
params: {
|
|
335
|
+
[GROUP_ITEM_ID]: {
|
|
336
|
+
regularParam,
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
state: { regularState },
|
|
340
|
+
});
|
|
341
|
+
expect(result[constants_1.META_KEY]).toEqual({
|
|
342
|
+
queue: [{ id: REGULAR_ITEM_ID, groupItemId: GROUP_ITEM_ID }],
|
|
343
|
+
version: 2,
|
|
344
|
+
});
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
describe('edge cases with globalItems', () => {
|
|
348
|
+
it('should handle config with only globalItems and no regular items', () => {
|
|
349
|
+
const globalItemId1 = 'global1';
|
|
350
|
+
const globalItemId2 = 'global2';
|
|
351
|
+
const globalItem1 = getMockedControlItem({ id: globalItemId1 });
|
|
352
|
+
const globalItem2 = getMockedControlItem({ id: globalItemId2 });
|
|
353
|
+
const config = getMockedConfig({
|
|
354
|
+
items: [],
|
|
355
|
+
globalItems: [globalItem1, globalItem2],
|
|
356
|
+
});
|
|
357
|
+
const itemsStateAndParams = {
|
|
358
|
+
[constants_1.META_KEY]: {
|
|
359
|
+
queue: [{ id: globalItemId1 }],
|
|
360
|
+
version: 2,
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
const result = (0, helpers_1.addToQueue)({
|
|
364
|
+
id: globalItemId2,
|
|
365
|
+
config,
|
|
366
|
+
itemsStateAndParams,
|
|
367
|
+
});
|
|
368
|
+
expect(result.queue).toEqual([{ id: globalItemId1 }, { id: globalItemId2 }]);
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
//# sourceMappingURL=global-items.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-items.test.js","sourceRoot":"../../../../../src","sources":["shared/modules/__tests__/global-items.test.ts"],"names":[],"mappings":";;AAAA,wDAAyC;AAQzC,2CAAsE;AACtE,6DAA2E;AAE3E,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAE3C,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC,MAAM,oBAAoB,GAAG,CAAC,KAI7B,EAAc,EAAE;IACb,MAAM,EAAC,EAAE,GAAG,eAAe,EAAE,YAAY,GAAG,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAC,GAAG,KAAK,IAAI,EAAE,CAAC;IACrF,OAAO;QACH,EAAE;QACF,QAAQ;QACR,IAAI,EAAE;YACF,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACtC,EAAE,EAAE,WAAW;gBACf,SAAS,EAAE,SAAS;gBACpB,QAAQ;aACX,CAAC,CAAC;SACN;QACD,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,SAAS;KACvB,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EACrB,KAAK,GAAG,EAAE,EACV,WAAW,GAAG,EAAE,GAInB,EAAU,EAAE,CAAC,CAAC;IACX,KAAK;IACL,WAAW;IACX,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;CAClB,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACjD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC5D,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAC,EAAE,EAAE,cAAc,EAAC,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;gBACpB,WAAW,EAAE,CAAC,UAAU,CAAC;aAC5B,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,iBAAiB,EAAC,EAAE,EAAC,EAAE,EAAE,cAAc,EAAC,CAAC;oBACtD,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC;gBACtB,EAAE,EAAE,eAAe;gBACnB,MAAM;gBACN,mBAAmB;aACtB,CAAC,CAAC;YAEH,4DAA4D;YAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,EAAE,EAAE,cAAc,EAAC,EAAE,EAAC,EAAE,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC7C,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;gBACpB,WAAW,EAAE,EAAE;aAClB,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC;gBACtB,EAAE,EAAE,eAAe;gBACnB,MAAM;gBACN,mBAAmB;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,EAAE,EAAE,eAAe,EAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC5E,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;YAC5C,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;YAClD,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;YACpD,MAAM,eAAe,GAAG,oBAAoB,CAAC;gBACzC,EAAE,EAAE,iBAAiB;gBACrB,YAAY,EAAE,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;aAC9D,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;gBACpB,WAAW,EAAE,CAAC,eAAe,CAAC;aACjC,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE;wBACH,EAAC,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAC;wBAC1D,EAAC,EAAE,EAAE,kBAAkB,EAAE,WAAW,EAAE,oBAAoB,EAAC;qBAC9D;oBACD,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC;gBAC3B,EAAE,EAAE,iBAAiB;gBACrB,YAAY,EAAE,CAAC,qBAAqB,CAAC;gBACrC,MAAM;gBACN,mBAAmB;aACtB,CAAC,CAAC;YAEH,6DAA6D;YAC7D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBACzB,EAAC,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAC;gBAC1D,EAAC,EAAE,EAAE,iBAAiB,EAAE,WAAW,EAAE,qBAAqB,EAAC;aAC9D,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC1D,MAAM,UAAU,GAAG,oBAAoB,CAAC;gBACpC,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE,CAAC,aAAa,CAAC;gBAC7B,QAAQ,EAAE;oBACN,IAAI,EAAE,GAAG;iBACZ;aACJ,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,oBAAoB,CAAC;gBACrC,EAAE,EAAE,eAAe;gBACnB,YAAY,EAAE,CAAC,eAAe,CAAC;gBAC/B,QAAQ,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;aAC7B,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,cAAc,CAAC,EAAE;oBACd,MAAM,EAAE;wBACJ,CAAC,aAAa,CAAC,EAAE;4BACb,IAAI,EAAE,IAAI;4BACV,KAAK,EAAE,KAAK;yBACf;qBACJ;iBACJ;gBACD,CAAC,eAAe,CAAC,EAAE;oBACf,MAAM,EAAE;wBACJ,CAAC,eAAe,CAAC,EAAE;4BACf,IAAI,EAAE,UAAU;yBACnB;qBACJ;iBACJ;gBACD,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE;wBACH,EAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAC;wBAChD,EAAC,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAC;qBACtD;oBACD,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC;gBACzB,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;gBAChC,mBAAmB;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB;oBACI,EAAE,EAAE,aAAa;oBACjB,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC;iBACvB;gBACD;oBACI,EAAE,EAAE,eAAe;oBACnB,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;iBAC7B;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAChE,MAAM,WAAW,GAAG,aAAa,CAAC;YAClC,MAAM,eAAe,GAAG,iBAAiB,CAAC;YAC1C,MAAM,YAAY,GAAG,cAAc,CAAC;YACpC,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAC,EAAC,CAAC,CAAC;YACvF,MAAM,WAAW,GAAG,oBAAoB,CAAC;gBACrC,EAAE,EAAE,eAAe;gBACnB,YAAY,EAAE,CAAC,eAAe,CAAC;gBAC/B,QAAQ,EAAE;oBACN,YAAY;iBACf;aACJ,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;gBACpB,WAAW,EAAE,CAAC,UAAU,CAAC;aAC5B,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,cAAc,CAAC,EAAE;oBACd,MAAM,EAAE;wBACJ,CAAC,aAAa,CAAC,EAAE;4BACb,WAAW,EAAE,eAAe;yBAC/B;qBACJ;iBACJ;gBACD,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAC,CAAC;oBACzD,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,iCAAc,EAAC;gBAC1B,mBAAmB,EAAE,EAAE;gBACvB,YAAY,EAAE,EAAE;gBAChB,MAAM;gBACN,mBAAmB;gBACnB,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,kBAAkB;qBAC3B;iBACJ;aACJ,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;gBACnC,CAAC,aAAa,CAAC,EAAE;oBACb,WAAW,EAAE,eAAe;oBAC5B,YAAY;iBACf;aACJ,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpC,CAAC,eAAe,CAAC,EAAE;oBACf,WAAW,EAAE,eAAe;oBAC5B,YAAY;iBACf;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAChE,MAAM,YAAY,GAAG,OAAO,CAAC;YAC7B,MAAM,WAAW,GAAG,aAAa,CAAC;YAClC,MAAM,YAAY,GAAG,cAAc,CAAC;YACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC;YACvC,MAAM,YAAY,GAAG,mBAAmB,CAAC;YACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC;gBACpC,EAAE,EAAE,cAAc;gBAClB,QAAQ,EAAE,EAAC,aAAa,EAAE,YAAY,EAAC;aAC1C,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,oBAAoB,CAAC;gBACrC,EAAE,EAAE,eAAe;gBACnB,YAAY,EAAE,CAAC,eAAe,CAAC;gBAC/B,QAAQ,EAAE;oBACN,cAAc,EAAE,YAAY;iBAC/B;aACJ,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;gBACpB,WAAW,EAAE,CAAC,UAAU,CAAC;aAC5B,CAAC,CAAC;YAEH,4FAA4F;YAC5F,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,cAAc,CAAC,EAAE;oBACd,MAAM,EAAE,EAAC,WAAW,EAAC;oBACrB,KAAK,EAAE,EAAC,WAAW,EAAC;iBACvB;gBACD,CAAC,eAAe,CAAC,EAAE;oBACf,MAAM,EAAE,EAAC,YAAY,EAAC;oBACtB,KAAK,EAAE,EAAC,YAAY,EAAC;iBACxB;gBACD,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,cAAc,EAAC,EAAE,EAAC,EAAE,EAAE,eAAe,EAAC,CAAC;oBACpD,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,yCAAsB,EAAC;gBAClC,mBAAmB,EAAE,EAAE;gBACvB,YAAY,EAAE,EAAE;gBAChB,MAAM;gBACN,mBAAmB;gBACnB,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,kBAAkB;qBAC3B;iBACJ;aACJ,CAA4B,CAAC;YAE9B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE;oBACJ,CAAC,aAAa,CAAC,EAAE;wBACb,aAAa,EAAE,YAAY;wBAC3B,cAAc,EAAE,YAAY;qBAC/B;iBACJ;gBACD,KAAK,EAAE,EAAC,WAAW,EAAC;aACvB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpC,MAAM,EAAE;oBACJ,CAAC,eAAe,CAAC,EAAE;wBACf,aAAa,EAAE,YAAY;wBAC3B,cAAc,EAAE,YAAY;qBAC/B;iBACJ;gBACD,KAAK,EAAE,EAAC,YAAY,EAAC;aACxB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,oBAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC7B,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,cAAc,EAAC,EAAE,EAAC,EAAE,EAAE,eAAe,EAAC,CAAC;gBACpD,OAAO,EAAE,CAAC;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC1D,MAAM,YAAY,GAAG,OAAO,CAAC;YAC7B,MAAM,YAAY,GAAG,cAAc,CAAC;YACpC,MAAM,YAAY,GAAG,mBAAmB,CAAC;YAEzC,MAAM,WAAW,GAAG,oBAAoB,CAAC;gBACrC,EAAE,EAAE,eAAe;gBACnB,QAAQ,EAAE;oBACN,YAAY,EAAE,YAAY;iBAC7B;aACJ,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;gBACpB,WAAW,EAAE,SAAS;aACzB,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,eAAe,CAAC,EAAE;oBACf,MAAM,EAAE,EAAC,YAAY,EAAE,YAAY,EAAC;oBACpC,KAAK,EAAE,EAAC,YAAY,EAAC;iBACxB;gBACD,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAC,CAAC;oBAC1D,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,yCAAsB,EAAC;gBAClC,mBAAmB,EAAE,EAAE;gBACvB,YAAY,EAAE,EAAC,YAAY,EAAC;gBAC5B,MAAM;gBACN,mBAAmB;gBACnB,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,kBAAkB;qBAC3B;iBACJ;aACJ,CAA4B,CAAC;YAE9B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpC,MAAM,EAAE;oBACJ,CAAC,aAAa,CAAC,EAAE;wBACb,YAAY;qBACf;iBACJ;gBACD,KAAK,EAAE,EAAC,YAAY,EAAC;aACxB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,oBAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC7B,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAC,CAAC;gBAC1D,OAAO,EAAE,CAAC;aACb,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACvE,MAAM,aAAa,GAAG,SAAS,CAAC;YAChC,MAAM,aAAa,GAAG,SAAS,CAAC;YAChC,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAC,EAAE,EAAE,aAAa,EAAC,CAAC,CAAC;YAC9D,MAAM,WAAW,GAAG,oBAAoB,CAAC,EAAC,EAAE,EAAE,aAAa,EAAC,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC3B,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;aAC1C,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAwB;gBAC7C,CAAC,oBAAQ,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,aAAa,EAAC,CAAC;oBAC5B,OAAO,EAAE,CAAC;iBACb;aACJ,CAAC;YAEF,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC;gBACtB,EAAE,EAAE,aAAa;gBACjB,MAAM;gBACN,mBAAmB;aACtB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,EAAE,EAAE,aAAa,EAAC,EAAE,EAAC,EAAE,EAAE,aAAa,EAAC,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import {META_KEY} from '../../constants';\nimport {\n Config,\n ConfigItem,\n ItemsStateAndParams,\n ItemsStateAndParamsBase,\n StringParams,\n} from '../../types';\nimport {addGroupToQueue, addToQueue, formQueueData} from '../helpers';\nimport {getItemsParams, getItemsStateAndParams} from '../state-and-params';\n\nconst NAMESPACE = 'default';\nconst GROUP_CONTROL_TYPE = 'group-control';\n\nconst GLOBAL_ITEM_ID = 'globalItem1';\nconst REGULAR_ITEM_ID = 'regularItem1';\nconst GROUP_ITEM_ID = 'groupItem1';\nconst GROUP_ITEM_ID_2 = 'groupItem2';\n\nconst getMockedControlItem = (props?: {\n id: string;\n groupItemIds?: string[];\n defaults?: StringParams;\n}): ConfigItem => {\n const {id = REGULAR_ITEM_ID, groupItemIds = [GROUP_ITEM_ID], defaults} = props || {};\n return {\n id,\n defaults,\n data: {\n group: groupItemIds.map((groupItemId) => ({\n id: groupItemId,\n namespace: NAMESPACE,\n defaults,\n })),\n },\n type: GROUP_CONTROL_TYPE,\n namespace: NAMESPACE,\n };\n};\n\nconst getMockedConfig = ({\n items = [],\n globalItems = [],\n}: {\n items?: ConfigItem[];\n globalItems?: ConfigItem[];\n}): Config => ({\n items,\n globalItems,\n salt: '0.9021043992843898',\n counter: 124,\n layout: [],\n aliases: {},\n connections: [],\n});\n\ndescribe('globalItems functionality in config', () => {\n describe('addToQueue with globalItems', () => {\n it('should include globalItems when filtering actual IDs', () => {\n const globalItem = getMockedControlItem({id: GLOBAL_ITEM_ID});\n const regularItem = getMockedControlItem();\n const config = getMockedConfig({\n items: [regularItem],\n globalItems: [globalItem],\n });\n\n const itemsStateAndParams: ItemsStateAndParams = {\n [META_KEY]: {\n queue: [{id: 'nonExistentItem'}, {id: GLOBAL_ITEM_ID}],\n version: 2,\n },\n };\n\n const result = addToQueue({\n id: REGULAR_ITEM_ID,\n config,\n itemsStateAndParams,\n });\n\n // Should filter out non-existent items and add the new item\n expect(result.queue).toEqual([{id: GLOBAL_ITEM_ID}, {id: REGULAR_ITEM_ID}]);\n });\n\n it('should handle empty globalItems array', () => {\n const regularItem = getMockedControlItem();\n const config = getMockedConfig({\n items: [regularItem],\n globalItems: [],\n });\n\n const itemsStateAndParams: ItemsStateAndParams = {\n [META_KEY]: {\n queue: [],\n version: 2,\n },\n };\n\n const result = addToQueue({\n id: REGULAR_ITEM_ID,\n config,\n itemsStateAndParams,\n });\n\n expect(result.queue).toEqual([{id: REGULAR_ITEM_ID}]);\n });\n });\n\n describe('addGroupToQueue with globalItems', () => {\n it('should include globalItems when filtering actual IDs for group items', () => {\n const globalGroupItemId = 'globalGroupItem';\n const globalGroupSubItemId = 'globalGroupSubItem';\n const globalGroupSubItemId2 = 'globalGroupSubItem2';\n const globalGroupItem = getMockedControlItem({\n id: globalGroupItemId,\n groupItemIds: [globalGroupSubItemId, globalGroupSubItemId2],\n });\n const regularItem = getMockedControlItem();\n const config = getMockedConfig({\n items: [regularItem],\n globalItems: [globalGroupItem],\n });\n\n const itemsStateAndParams: ItemsStateAndParams = {\n [META_KEY]: {\n queue: [\n {id: globalGroupItemId, groupItemId: globalGroupSubItemId},\n {id: 'nonExistentGroup', groupItemId: 'nonExistentSubItem'},\n ],\n version: 2,\n },\n };\n\n const result = addGroupToQueue({\n id: globalGroupItemId,\n groupItemIds: [globalGroupSubItemId2],\n config,\n itemsStateAndParams,\n });\n\n // Should preserve existing global group item and add new one\n expect(result.queue).toEqual([\n {id: globalGroupItemId, groupItemId: globalGroupSubItemId},\n {id: globalGroupItemId, groupItemId: globalGroupSubItemId2},\n ]);\n });\n });\n\n describe('formQueueData with globalItems', () => {\n it('should process globalItems in queue data formation', () => {\n const globalItem = getMockedControlItem({\n id: GLOBAL_ITEM_ID,\n groupItemIds: [GROUP_ITEM_ID],\n defaults: {\n size: 'l',\n },\n });\n const regularItem = getMockedControlItem({\n id: REGULAR_ITEM_ID,\n groupItemIds: [GROUP_ITEM_ID_2],\n defaults: {view: 'normal'},\n });\n\n const itemsStateAndParams: ItemsStateAndParams = {\n [GLOBAL_ITEM_ID]: {\n params: {\n [GROUP_ITEM_ID]: {\n size: 'xl',\n color: 'red',\n },\n },\n },\n [REGULAR_ITEM_ID]: {\n params: {\n [GROUP_ITEM_ID_2]: {\n view: 'contrast',\n },\n },\n },\n [META_KEY]: {\n queue: [\n {id: GLOBAL_ITEM_ID, groupItemId: GROUP_ITEM_ID},\n {id: REGULAR_ITEM_ID, groupItemId: GROUP_ITEM_ID_2},\n ],\n version: 2,\n },\n };\n\n const result = formQueueData({\n items: [regularItem, globalItem],\n itemsStateAndParams,\n });\n\n expect(result).toEqual([\n {\n id: GROUP_ITEM_ID,\n namespace: NAMESPACE,\n params: {size: 'xl'},\n },\n {\n id: GROUP_ITEM_ID_2,\n namespace: NAMESPACE,\n params: {view: 'contrast'},\n },\n ]);\n });\n });\n\n describe('getItemsParams with globalItems', () => {\n it('should process globalItems when getting items parameters', () => {\n const globalParam = 'globalParam';\n const overriddenParam = 'overriddenValue';\n const regularParam = 'regularValue';\n const globalItem = getMockedControlItem({id: GLOBAL_ITEM_ID, defaults: {globalParam}});\n const regularItem = getMockedControlItem({\n id: REGULAR_ITEM_ID,\n groupItemIds: [GROUP_ITEM_ID_2],\n defaults: {\n regularParam,\n },\n });\n\n const config = getMockedConfig({\n items: [regularItem],\n globalItems: [globalItem],\n });\n\n const itemsStateAndParams: ItemsStateAndParams = {\n [GLOBAL_ITEM_ID]: {\n params: {\n [GROUP_ITEM_ID]: {\n globalParam: overriddenParam,\n },\n },\n },\n [META_KEY]: {\n queue: [{id: GLOBAL_ITEM_ID, groupItemId: GROUP_ITEM_ID}],\n version: 2,\n },\n };\n\n const result = getItemsParams({\n defaultGlobalParams: {},\n globalParams: {},\n config,\n itemsStateAndParams,\n plugins: [\n {\n type: GROUP_CONTROL_TYPE,\n },\n ],\n });\n\n expect(result[GLOBAL_ITEM_ID]).toEqual({\n [GROUP_ITEM_ID]: {\n globalParam: overriddenParam,\n regularParam,\n },\n });\n expect(result[REGULAR_ITEM_ID]).toEqual({\n [GROUP_ITEM_ID_2]: {\n globalParam: overriddenParam,\n regularParam,\n },\n });\n });\n });\n\n describe('getItemsStateAndParams with globalItems', () => {\n it('should handle globalItems in state and params processing', () => {\n const initialValue = 'value';\n const globalParam = 'globalValue';\n const regularParam = 'regularValue';\n const globalState = 'globalStateValue';\n const regularState = 'regularStateValue';\n const globalItem = getMockedControlItem({\n id: GLOBAL_ITEM_ID,\n defaults: {globalDefault: initialValue},\n });\n const regularItem = getMockedControlItem({\n id: REGULAR_ITEM_ID,\n groupItemIds: [GROUP_ITEM_ID_2],\n defaults: {\n regularDefault: initialValue,\n },\n });\n\n const config = getMockedConfig({\n items: [regularItem],\n globalItems: [globalItem],\n });\n\n // globalParam and regularParam are not included in conrols defaults so they must be ignored\n const itemsStateAndParams: ItemsStateAndParams = {\n [GLOBAL_ITEM_ID]: {\n params: {globalParam},\n state: {globalState},\n },\n [REGULAR_ITEM_ID]: {\n params: {regularParam},\n state: {regularState},\n },\n [META_KEY]: {\n queue: [{id: GLOBAL_ITEM_ID}, {id: REGULAR_ITEM_ID}],\n version: 2,\n },\n };\n\n const result = getItemsStateAndParams({\n defaultGlobalParams: {},\n globalParams: {},\n config,\n itemsStateAndParams,\n plugins: [\n {\n type: GROUP_CONTROL_TYPE,\n },\n ],\n }) as ItemsStateAndParamsBase;\n\n expect(result[GLOBAL_ITEM_ID]).toEqual({\n params: {\n [GROUP_ITEM_ID]: {\n globalDefault: initialValue,\n regularDefault: initialValue,\n },\n },\n state: {globalState},\n });\n\n expect(result[REGULAR_ITEM_ID]).toEqual({\n params: {\n [GROUP_ITEM_ID_2]: {\n globalDefault: initialValue,\n regularDefault: initialValue,\n },\n },\n state: {regularState},\n });\n\n expect(result[META_KEY]).toEqual({\n queue: [{id: GLOBAL_ITEM_ID}, {id: REGULAR_ITEM_ID}],\n version: 2,\n });\n });\n\n it('should correctly handle config without globalItems', () => {\n const initialValue = 'value';\n const regularParam = 'regularValue';\n const regularState = 'regularStateValue';\n\n const regularItem = getMockedControlItem({\n id: REGULAR_ITEM_ID,\n defaults: {\n regularParam: initialValue,\n },\n });\n\n const config = getMockedConfig({\n items: [regularItem],\n globalItems: undefined,\n });\n\n const itemsStateAndParams: ItemsStateAndParams = {\n [REGULAR_ITEM_ID]: {\n params: {regularParam: initialValue},\n state: {regularState},\n },\n [META_KEY]: {\n queue: [{id: REGULAR_ITEM_ID, groupItemId: GROUP_ITEM_ID}],\n version: 2,\n },\n };\n\n const result = getItemsStateAndParams({\n defaultGlobalParams: {},\n globalParams: {regularParam},\n config,\n itemsStateAndParams,\n plugins: [\n {\n type: GROUP_CONTROL_TYPE,\n },\n ],\n }) as ItemsStateAndParamsBase;\n\n expect(result[REGULAR_ITEM_ID]).toEqual({\n params: {\n [GROUP_ITEM_ID]: {\n regularParam,\n },\n },\n state: {regularState},\n });\n\n expect(result[META_KEY]).toEqual({\n queue: [{id: REGULAR_ITEM_ID, groupItemId: GROUP_ITEM_ID}],\n version: 2,\n });\n });\n });\n\n describe('edge cases with globalItems', () => {\n it('should handle config with only globalItems and no regular items', () => {\n const globalItemId1 = 'global1';\n const globalItemId2 = 'global2';\n const globalItem1 = getMockedControlItem({id: globalItemId1});\n const globalItem2 = getMockedControlItem({id: globalItemId2});\n\n const config = getMockedConfig({\n items: [],\n globalItems: [globalItem1, globalItem2],\n });\n\n const itemsStateAndParams: ItemsStateAndParams = {\n [META_KEY]: {\n queue: [{id: globalItemId1}],\n version: 2,\n },\n };\n\n const result = addToQueue({\n id: globalItemId2,\n config,\n itemsStateAndParams,\n });\n\n expect(result.queue).toEqual([{id: globalItemId1}, {id: globalItemId2}]);\n });\n });\n});\n"]}
|
|
@@ -78,4 +78,5 @@ export declare function hasActionParam(conf?: StringParams | Record<string, Stri
|
|
|
78
78
|
* @param stateAndParams
|
|
79
79
|
*/
|
|
80
80
|
export declare function hasActionParams(stateAndParams: ItemStateAndParams): boolean;
|
|
81
|
+
export declare function getAllConfigItems(config: Config): ConfigItem[];
|
|
81
82
|
export {};
|
|
@@ -18,6 +18,7 @@ exports.pickExceptActionParamsFromParams = pickExceptActionParamsFromParams;
|
|
|
18
18
|
exports.transformParamsToActionParams = transformParamsToActionParams;
|
|
19
19
|
exports.hasActionParam = hasActionParam;
|
|
20
20
|
exports.hasActionParams = hasActionParams;
|
|
21
|
+
exports.getAllConfigItems = getAllConfigItems;
|
|
21
22
|
const tslib_1 = require("tslib");
|
|
22
23
|
const get_1 = tslib_1.__importDefault(require("lodash/get.js"));
|
|
23
24
|
const invert_1 = tslib_1.__importDefault(require("lodash/invert.js"));
|
|
@@ -202,7 +203,8 @@ function addToQueue({ id, tabId, config, itemsStateAndParams, }) {
|
|
|
202
203
|
if (!meta) {
|
|
203
204
|
return { queue: [queueItem], version: constants_1.CURRENT_VERSION };
|
|
204
205
|
}
|
|
205
|
-
const
|
|
206
|
+
const configItems = getAllConfigItems(config);
|
|
207
|
+
const actualIds = getActualItemsIds(configItems);
|
|
206
208
|
const metaQueue = meta.queue || [];
|
|
207
209
|
const notCurrent = (item) => {
|
|
208
210
|
if (item.groupItemId) {
|
|
@@ -226,7 +228,8 @@ function addGroupToQueue({ id, groupItemIds, config, itemsStateAndParams, }) {
|
|
|
226
228
|
if (!meta) {
|
|
227
229
|
return { queue: queueItems, version: constants_1.CURRENT_VERSION };
|
|
228
230
|
}
|
|
229
|
-
const
|
|
231
|
+
const configItems = getAllConfigItems(config);
|
|
232
|
+
const actualIds = getActualItemsIds(configItems);
|
|
230
233
|
const metaQueue = meta.queue || [];
|
|
231
234
|
const notCurrent = (item) => {
|
|
232
235
|
if (item.groupItemId) {
|
|
@@ -319,4 +322,9 @@ function hasActionParams(stateAndParams) {
|
|
|
319
322
|
}
|
|
320
323
|
return hasActionParam(stateAndParams.params);
|
|
321
324
|
}
|
|
325
|
+
// Combines regular items and global items from config into a single array
|
|
326
|
+
// For global usage across the project
|
|
327
|
+
function getAllConfigItems(config) {
|
|
328
|
+
return [...config.items, ...(config.globalItems || [])];
|
|
329
|
+
}
|
|
322
330
|
//# sourceMappingURL=helpers.js.map
|