@gravity-ui/dashkit 10.2.0 → 10.3.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 +95 -19
- package/build/cjs/components/DashKit/DashKit.d.ts +11 -1
- package/build/cjs/components/DashKit/DashKit.js +55 -7
- package/build/cjs/components/DashKit/DashKit.js.map +1 -1
- package/build/cjs/components/DashKit/__tests__/controlled-layout.test.d.ts +4 -0
- package/build/cjs/components/DashKit/__tests__/controlled-layout.test.js +196 -0
- package/build/cjs/components/DashKit/__tests__/controlled-layout.test.js.map +1 -0
- package/build/cjs/components/DashKit/__tests__/events.test.d.ts +1 -0
- package/build/cjs/components/DashKit/__tests__/events.test.js +227 -0
- package/build/cjs/components/DashKit/__tests__/events.test.js.map +1 -0
- package/build/cjs/components/DashKitView/DashKitView.d.ts +1 -1
- package/build/cjs/components/DashKitView/DashKitView.js +1 -3
- package/build/cjs/components/DashKitView/DashKitView.js.map +1 -1
- package/build/cjs/components/GridLayout/GroupLayout.js +2 -2
- package/build/cjs/components/GridLayout/GroupLayout.js.map +1 -1
- package/build/cjs/components/GridLayout/ReactGridLayout.d.ts +1 -0
- package/build/cjs/components/GridLayout/ReactGridLayout.js +37 -0
- package/build/cjs/components/GridLayout/ReactGridLayout.js.map +1 -1
- package/build/cjs/components/OverlayControls/OverlayControls.js +1 -1
- package/build/cjs/components/OverlayControls/OverlayControls.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/context/DashkitOverlayControlsContext.d.ts +1 -1
- package/build/cjs/context/DashkitOverlayControlsContext.js +2 -2
- package/build/cjs/context/DashkitOverlayControlsContext.js.map +1 -1
- package/build/cjs/hocs/withContext.d.ts +2 -2
- package/build/cjs/hocs/withContext.js +61 -31
- package/build/cjs/hocs/withContext.js.map +1 -1
- package/build/cjs/package.json +1 -1
- package/build/cjs/plugins/Text/Text.js +1 -1
- package/build/cjs/plugins/Text/Text.js.map +1 -1
- package/build/cjs/shared/types/config.d.ts +2 -0
- package/build/cjs/shared/types/config.js +9 -0
- package/build/cjs/shared/types/config.js.map +1 -1
- package/build/cjs/typings/events.d.ts +34 -0
- package/build/cjs/typings/events.js +3 -0
- package/build/cjs/typings/events.js.map +1 -0
- package/build/cjs/typings/index.d.ts +1 -0
- package/build/cjs/typings/index.js +1 -0
- package/build/cjs/typings/index.js.map +1 -1
- package/build/cjs/utils/__tests__/get-layout-patches.test.d.ts +1 -0
- package/build/cjs/utils/__tests__/get-layout-patches.test.js +51 -0
- package/build/cjs/utils/__tests__/get-layout-patches.test.js.map +1 -0
- package/build/cjs/utils/enrichLayoutWithDefaults.d.ts +5 -0
- package/build/cjs/utils/enrichLayoutWithDefaults.js +29 -0
- package/build/cjs/utils/enrichLayoutWithDefaults.js.map +1 -0
- package/build/cjs/utils/events.d.ts +10 -0
- package/build/cjs/utils/events.js +34 -0
- package/build/cjs/utils/events.js.map +1 -0
- package/build/cjs/utils/get-layout-patches.d.ts +3 -0
- package/build/cjs/utils/get-layout-patches.js +23 -0
- package/build/cjs/utils/get-layout-patches.js.map +1 -0
- package/build/cjs/utils/index.d.ts +3 -0
- package/build/cjs/utils/index.js +3 -0
- package/build/cjs/utils/index.js.map +1 -1
- package/build/cjs/utils/update-manager.js +2 -2
- package/build/cjs/utils/update-manager.js.map +1 -1
- package/build/esm/components/DashKit/DashKit.d.ts +11 -1
- package/build/esm/components/DashKit/DashKit.js +54 -6
- package/build/esm/components/DashKit/DashKit.js.map +1 -1
- package/build/esm/components/DashKit/__tests__/controlled-layout.test.d.ts +4 -0
- package/build/esm/components/DashKit/__tests__/controlled-layout.test.js +193 -0
- package/build/esm/components/DashKit/__tests__/controlled-layout.test.js.map +1 -0
- package/build/esm/components/DashKit/__tests__/events.test.d.ts +1 -0
- package/build/esm/components/DashKit/__tests__/events.test.js +225 -0
- package/build/esm/components/DashKit/__tests__/events.test.js.map +1 -0
- package/build/esm/components/DashKitView/DashKitView.d.ts +1 -1
- package/build/esm/components/DashKitView/DashKitView.js +1 -3
- package/build/esm/components/DashKitView/DashKitView.js.map +1 -1
- package/build/esm/components/GridLayout/GroupLayout.js +2 -2
- package/build/esm/components/GridLayout/GroupLayout.js.map +1 -1
- package/build/esm/components/GridLayout/ReactGridLayout.d.ts +1 -0
- package/build/esm/components/GridLayout/ReactGridLayout.js +37 -0
- package/build/esm/components/GridLayout/ReactGridLayout.js.map +1 -1
- package/build/esm/components/OverlayControls/OverlayControls.js +2 -2
- package/build/esm/components/OverlayControls/OverlayControls.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/context/DashkitOverlayControlsContext.d.ts +1 -1
- package/build/esm/context/DashkitOverlayControlsContext.js +1 -1
- package/build/esm/context/DashkitOverlayControlsContext.js.map +1 -1
- package/build/esm/hocs/withContext.d.ts +2 -2
- package/build/esm/hocs/withContext.js +64 -34
- package/build/esm/hocs/withContext.js.map +1 -1
- package/build/esm/package.json +1 -1
- package/build/esm/plugins/Text/Text.js +1 -1
- package/build/esm/plugins/Text/Text.js.map +1 -1
- package/build/esm/shared/types/config.d.ts +2 -0
- package/build/esm/shared/types/config.js +8 -1
- package/build/esm/shared/types/config.js.map +1 -1
- package/build/esm/typings/events.d.ts +34 -0
- package/build/esm/typings/events.js +2 -0
- package/build/esm/typings/events.js.map +1 -0
- package/build/esm/typings/index.d.ts +1 -0
- package/build/esm/typings/index.js +1 -0
- package/build/esm/typings/index.js.map +1 -1
- package/build/esm/utils/__tests__/get-layout-patches.test.d.ts +1 -0
- package/build/esm/utils/__tests__/get-layout-patches.test.js +49 -0
- package/build/esm/utils/__tests__/get-layout-patches.test.js.map +1 -0
- package/build/esm/utils/enrichLayoutWithDefaults.d.ts +5 -0
- package/build/esm/utils/enrichLayoutWithDefaults.js +25 -0
- package/build/esm/utils/enrichLayoutWithDefaults.js.map +1 -0
- package/build/esm/utils/events.d.ts +10 -0
- package/build/esm/utils/events.js +30 -0
- package/build/esm/utils/events.js.map +1 -0
- package/build/esm/utils/get-layout-patches.d.ts +3 -0
- package/build/esm/utils/get-layout-patches.js +19 -0
- package/build/esm/utils/get-layout-patches.js.map +1 -0
- package/build/esm/utils/index.d.ts +3 -0
- package/build/esm/utils/index.js +3 -0
- package/build/esm/utils/index.js.map +1 -1
- package/build/esm/utils/update-manager.js +3 -3
- package/build/esm/utils/update-manager.js.map +1 -1
- package/package.json +4 -1
- package/build/cjs/hooks/useCalcLayout.d.ts +0 -3
- package/build/cjs/hooks/useCalcLayout.js +0 -40
- package/build/cjs/hooks/useCalcLayout.js.map +0 -1
- package/build/esm/hooks/useCalcLayout.d.ts +0 -3
- package/build/esm/hooks/useCalcLayout.js +0 -35
- package/build/esm/hooks/useCalcLayout.js.map +0 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { getLayoutPatches } from "../get-layout-patches.js";
|
|
2
|
+
describe('getLayoutPatches', () => {
|
|
3
|
+
it('empty arrays returns empty patches', () => {
|
|
4
|
+
expect(getLayoutPatches([], [])).toEqual([]);
|
|
5
|
+
});
|
|
6
|
+
it('single item with x change returns patch', () => {
|
|
7
|
+
const previousLayout = [{ i: 'a', x: 0, y: 0, w: 2, h: 2 }];
|
|
8
|
+
const nextLayout = [{ i: 'a', x: 1, y: 0, w: 2, h: 2 }];
|
|
9
|
+
expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([
|
|
10
|
+
{ i: 'a', x: 1, y: 0, w: 2, h: 2 },
|
|
11
|
+
]);
|
|
12
|
+
});
|
|
13
|
+
it('single item with parent change returns patch', () => {
|
|
14
|
+
const previousLayout = [{ i: 'a', x: 0, y: 0, w: 2, h: 2, parent: 'g1' }];
|
|
15
|
+
const nextLayout = [{ i: 'a', x: 0, y: 0, w: 2, h: 2, parent: 'g2' }];
|
|
16
|
+
expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([
|
|
17
|
+
{ i: 'a', x: 0, y: 0, w: 2, h: 2, parent: 'g2' },
|
|
18
|
+
]);
|
|
19
|
+
});
|
|
20
|
+
it('single item with no changes returns empty patches', () => {
|
|
21
|
+
const previousLayout = [{ i: 'a', x: 0, y: 0, w: 2, h: 2 }];
|
|
22
|
+
const nextLayout = [{ i: 'a', x: 0, y: 0, w: 2, h: 2 }];
|
|
23
|
+
expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([]);
|
|
24
|
+
});
|
|
25
|
+
it('item in previousLayout but not in nextLayout returns empty patches', () => {
|
|
26
|
+
const previousLayout = [{ i: 'a', x: 0, y: 0, w: 2, h: 2 }];
|
|
27
|
+
const nextLayout = [];
|
|
28
|
+
expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([]);
|
|
29
|
+
});
|
|
30
|
+
it('item in nextLayout but not in previousLayout returns empty patches', () => {
|
|
31
|
+
const previousLayout = [];
|
|
32
|
+
const nextLayout = [{ i: 'a', x: 0, y: 0, w: 2, h: 2 }];
|
|
33
|
+
expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([]);
|
|
34
|
+
});
|
|
35
|
+
it('multiple items only changed ones in patches', () => {
|
|
36
|
+
const previousLayout = [
|
|
37
|
+
{ i: 'a', x: 0, y: 0, w: 2, h: 2 },
|
|
38
|
+
{ i: 'b', x: 2, y: 0, w: 2, h: 2 },
|
|
39
|
+
];
|
|
40
|
+
const nextLayout = [
|
|
41
|
+
{ i: 'a', x: 1, y: 0, w: 2, h: 2 },
|
|
42
|
+
{ i: 'b', x: 2, y: 0, w: 2, h: 2 },
|
|
43
|
+
];
|
|
44
|
+
expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([
|
|
45
|
+
{ i: 'a', x: 1, y: 0, w: 2, h: 2 },
|
|
46
|
+
]);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=get-layout-patches.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-layout-patches.test.js","sourceRoot":"../../../../src","sources":["utils/__tests__/get-layout-patches.test.ts"],"names":[],"mappings":"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","sourcesContent":["import type {ConfigLayout} from '../../shared';\nimport {getLayoutPatches} from '../get-layout-patches';\n\ndescribe('getLayoutPatches', () => {\n it('empty arrays returns empty patches', () => {\n expect(getLayoutPatches([], [])).toEqual([]);\n });\n\n it('single item with x change returns patch', () => {\n const previousLayout: ConfigLayout[] = [{i: 'a', x: 0, y: 0, w: 2, h: 2}];\n const nextLayout: ConfigLayout[] = [{i: 'a', x: 1, y: 0, w: 2, h: 2}];\n\n expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([\n {i: 'a', x: 1, y: 0, w: 2, h: 2},\n ]);\n });\n\n it('single item with parent change returns patch', () => {\n const previousLayout: ConfigLayout[] = [{i: 'a', x: 0, y: 0, w: 2, h: 2, parent: 'g1'}];\n const nextLayout: ConfigLayout[] = [{i: 'a', x: 0, y: 0, w: 2, h: 2, parent: 'g2'}];\n\n expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([\n {i: 'a', x: 0, y: 0, w: 2, h: 2, parent: 'g2'},\n ]);\n });\n\n it('single item with no changes returns empty patches', () => {\n const previousLayout: ConfigLayout[] = [{i: 'a', x: 0, y: 0, w: 2, h: 2}];\n const nextLayout: ConfigLayout[] = [{i: 'a', x: 0, y: 0, w: 2, h: 2}];\n\n expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([]);\n });\n\n it('item in previousLayout but not in nextLayout returns empty patches', () => {\n const previousLayout: ConfigLayout[] = [{i: 'a', x: 0, y: 0, w: 2, h: 2}];\n const nextLayout: ConfigLayout[] = [];\n\n expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([]);\n });\n\n it('item in nextLayout but not in previousLayout returns empty patches', () => {\n const previousLayout: ConfigLayout[] = [];\n const nextLayout: ConfigLayout[] = [{i: 'a', x: 0, y: 0, w: 2, h: 2}];\n\n expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([]);\n });\n\n it('multiple items only changed ones in patches', () => {\n const previousLayout: ConfigLayout[] = [\n {i: 'a', x: 0, y: 0, w: 2, h: 2},\n {i: 'b', x: 2, y: 0, w: 2, h: 2},\n ];\n const nextLayout: ConfigLayout[] = [\n {i: 'a', x: 1, y: 0, w: 2, h: 2},\n {i: 'b', x: 2, y: 0, w: 2, h: 2},\n ];\n\n expect(getLayoutPatches(previousLayout, nextLayout)).toEqual([\n {i: 'a', x: 1, y: 0, w: 2, h: 2},\n ]);\n });\n});\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WidgetLayout } from 'src/typings/common';
|
|
2
|
+
import { type Config, type ConfigLayout } from "../shared/index.js";
|
|
3
|
+
import type { RegisterManager } from "./register-manager.js";
|
|
4
|
+
export declare function enrichLayoutWithDefaults(config: Config, registerManager: RegisterManager): ConfigLayout[];
|
|
5
|
+
export declare function convertEnrichedLayoutToConfigLayout(layout: WidgetLayout[]): ConfigLayout[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getAllConfigItems } from "../shared/index.js";
|
|
2
|
+
export function enrichLayoutWithDefaults(config, registerManager) {
|
|
3
|
+
const configItems = getAllConfigItems(config);
|
|
4
|
+
return config.layout.reduce((acc, itemLayout, i) => {
|
|
5
|
+
const item = configItems[i];
|
|
6
|
+
const foundItem = item && item.id === itemLayout.i
|
|
7
|
+
? item
|
|
8
|
+
: configItems.find((configItem) => configItem.id === itemLayout.i);
|
|
9
|
+
if (foundItem) {
|
|
10
|
+
acc.push(Object.assign(Object.assign({}, registerManager.getItem(foundItem.type).defaultLayout), itemLayout));
|
|
11
|
+
}
|
|
12
|
+
return acc;
|
|
13
|
+
}, []);
|
|
14
|
+
}
|
|
15
|
+
export function convertEnrichedLayoutToConfigLayout(layout) {
|
|
16
|
+
return layout.map((i) => ({
|
|
17
|
+
i: i.i,
|
|
18
|
+
h: i.h,
|
|
19
|
+
w: i.w,
|
|
20
|
+
x: i.x,
|
|
21
|
+
y: i.y,
|
|
22
|
+
parent: i.parent,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=enrichLayoutWithDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrichLayoutWithDefaults.js","sourceRoot":"../../../src","sources":["utils/enrichLayoutWithDefaults.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,iBAAiB,EAAC,2BAAkB;AAI5E,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,eAAgC;IACrF,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE9C,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,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;AAED,MAAM,UAAU,mCAAmC,CAAC,MAAsB;IACtE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM;KACnB,CAAC,CAAC,CAAC;AACR,CAAC","sourcesContent":["import type {WidgetLayout} from 'src/typings/common';\n\nimport {type Config, type ConfigLayout, getAllConfigItems} from '../shared';\n\nimport type {RegisterManager} from './register-manager';\n\nexport function enrichLayoutWithDefaults(config: Config, registerManager: RegisterManager) {\n const configItems = getAllConfigItems(config);\n\n return config.layout.reduce<ConfigLayout[]>((acc, itemLayout, i) => {\n const item = 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 function convertEnrichedLayoutToConfigLayout(layout: WidgetLayout[]): ConfigLayout[] {\n return layout.map((i) => ({\n i: i.i,\n h: i.h,\n w: i.w,\n x: i.x,\n y: i.y,\n parent: i.parent,\n }));\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Config } from "../shared/index.js";
|
|
2
|
+
import type { DashKitEventMap, DashKitEventName } from "../typings/index.js";
|
|
3
|
+
export declare function emitDashKitChangeEvent({ config, newConfig, onChange, emitDashKitEvent, }: {
|
|
4
|
+
config: Config;
|
|
5
|
+
newConfig: Config;
|
|
6
|
+
onChange: (data: {
|
|
7
|
+
config: Config;
|
|
8
|
+
}) => void;
|
|
9
|
+
emitDashKitEvent: <T extends DashKitEventName>(eventName: T, event: DashKitEventMap[T]) => void;
|
|
10
|
+
}): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import isEqual from "lodash/isEqual.js";
|
|
2
|
+
import { getLayoutPatches } from "./get-layout-patches.js";
|
|
3
|
+
// Only fires when layout changes; other config mutations (item ordering, counter) do not trigger this event.
|
|
4
|
+
export function emitDashKitChangeEvent({ config, newConfig, onChange, emitDashKitEvent, }) {
|
|
5
|
+
if (!isEqual(newConfig.layout, config.layout)) {
|
|
6
|
+
let defaultPrevented = false;
|
|
7
|
+
let cachedPatches;
|
|
8
|
+
const event = {
|
|
9
|
+
get patches() {
|
|
10
|
+
if (!cachedPatches) {
|
|
11
|
+
cachedPatches = getLayoutPatches(config.layout, newConfig.layout);
|
|
12
|
+
}
|
|
13
|
+
return cachedPatches;
|
|
14
|
+
},
|
|
15
|
+
layout: newConfig.layout,
|
|
16
|
+
previousLayout: config.layout,
|
|
17
|
+
preventDefault() {
|
|
18
|
+
defaultPrevented = true;
|
|
19
|
+
},
|
|
20
|
+
get defaultPrevented() {
|
|
21
|
+
return defaultPrevented;
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
emitDashKitEvent('change', event);
|
|
25
|
+
if (!defaultPrevented) {
|
|
26
|
+
onChange({ config: newConfig });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"../../../src","sources":["utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,0BAAuB;AAUrC,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD,6GAA6G;AAC7G,MAAM,UAAU,sBAAsB,CAAC,EACnC,MAAM,EACN,SAAS,EACT,QAAQ,EACR,gBAAgB,GAMnB;IACG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,aAA+C,CAAC;QACpD,MAAM,KAAK,GAAuB;YAC9B,IAAI,OAAO;gBACP,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjB,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtE,CAAC;gBACD,OAAO,aAAa,CAAC;YACzB,CAAC;YACD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,cAAc,EAAE,MAAM,CAAC,MAAM;YAC7B,cAAc;gBACV,gBAAgB,GAAG,IAAI,CAAC;YAC5B,CAAC;YACD,IAAI,gBAAgB;gBAChB,OAAO,gBAAgB,CAAC;YAC5B,CAAC;SACJ,CAAC;QACF,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpB,QAAQ,CAAC,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;AACL,CAAC","sourcesContent":["import isEqual from 'lodash/isEqual';\n\nimport type {Config} from '../shared';\nimport type {\n DashKitChangeEvent,\n DashKitEventMap,\n DashKitEventName,\n DashKitLayoutPatch,\n} from '../typings';\n\nimport {getLayoutPatches} from './get-layout-patches';\n\n// Only fires when layout changes; other config mutations (item ordering, counter) do not trigger this event.\nexport function emitDashKitChangeEvent({\n config,\n newConfig,\n onChange,\n emitDashKitEvent,\n}: {\n config: Config;\n newConfig: Config;\n onChange: (data: {config: Config}) => void;\n emitDashKitEvent: <T extends DashKitEventName>(eventName: T, event: DashKitEventMap[T]) => void;\n}) {\n if (!isEqual(newConfig.layout, config.layout)) {\n let defaultPrevented = false;\n let cachedPatches: DashKitLayoutPatch[] | undefined;\n const event: DashKitChangeEvent = {\n get patches() {\n if (!cachedPatches) {\n cachedPatches = getLayoutPatches(config.layout, newConfig.layout);\n }\n return cachedPatches;\n },\n layout: newConfig.layout,\n previousLayout: config.layout,\n preventDefault() {\n defaultPrevented = true;\n },\n get defaultPrevented() {\n return defaultPrevented;\n },\n };\n emitDashKitEvent('change', event);\n\n if (!defaultPrevented) {\n onChange({config: newConfig});\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import pick from "lodash/pick.js";
|
|
2
|
+
import { CONFIG_LAYOUT_FIELDS } from "../shared/index.js";
|
|
3
|
+
export function getLayoutPatches(previousLayout, nextLayout) {
|
|
4
|
+
const prevById = new Map(previousLayout.map((item) => [item.i, item]));
|
|
5
|
+
return nextLayout.reduce((patches, nextItem) => {
|
|
6
|
+
const prevItem = prevById.get(nextItem.i);
|
|
7
|
+
if (!prevItem) {
|
|
8
|
+
return patches;
|
|
9
|
+
}
|
|
10
|
+
const nextPicked = pick(nextItem, CONFIG_LAYOUT_FIELDS);
|
|
11
|
+
const prevPicked = pick(prevItem, CONFIG_LAYOUT_FIELDS);
|
|
12
|
+
const changed = CONFIG_LAYOUT_FIELDS.some((key) => nextPicked[key] !== prevPicked[key]);
|
|
13
|
+
if (changed) {
|
|
14
|
+
patches.push(nextPicked);
|
|
15
|
+
}
|
|
16
|
+
return patches;
|
|
17
|
+
}, []);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=get-layout-patches.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-layout-patches.js","sourceRoot":"../../../src","sources":["utils/get-layout-patches.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,uBAAoB;AAE/B,OAAO,EAAC,oBAAoB,EAAC,2BAAkB;AAI/C,MAAM,UAAU,gBAAgB,CAC5B,cAA8B,EAC9B,UAA0B;IAE1B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvE,OAAO,UAAU,CAAC,MAAM,CAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAExD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAExF,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,UAAgC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["import pick from 'lodash/pick';\n\nimport {CONFIG_LAYOUT_FIELDS} from '../shared';\nimport type {ConfigLayout} from '../shared';\nimport type {DashKitLayoutPatch} from '../typings';\n\nexport function getLayoutPatches(\n previousLayout: ConfigLayout[],\n nextLayout: ConfigLayout[],\n): DashKitLayoutPatch[] {\n const prevById = new Map(previousLayout.map((item) => [item.i, item]));\n\n return nextLayout.reduce<DashKitLayoutPatch[]>((patches, nextItem) => {\n const prevItem = prevById.get(nextItem.i);\n if (!prevItem) {\n return patches;\n }\n\n const nextPicked = pick(nextItem, CONFIG_LAYOUT_FIELDS);\n const prevPicked = pick(prevItem, CONFIG_LAYOUT_FIELDS);\n\n const changed = CONFIG_LAYOUT_FIELDS.some((key) => nextPicked[key] !== prevPicked[key]);\n\n if (changed) {\n patches.push(nextPicked as DashKitLayoutPatch);\n }\n\n return patches;\n }, []);\n}\n"]}
|
package/build/esm/utils/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export * from "./register-manager.js";
|
|
2
2
|
export * from "./update-manager.js";
|
|
3
3
|
export * from "./group-helpers.js";
|
|
4
|
+
export * from "./get-layout-patches.js";
|
|
5
|
+
export * from "./events.js";
|
|
6
|
+
export * from "./enrichLayoutWithDefaults.js";
|
|
4
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["utils/index.ts"],"names":[],"mappings":"AAAA,sCAAmC;AACnC,oCAAiC;AACjC,mCAAgC","sourcesContent":["export * from './register-manager';\nexport * from './update-manager';\nexport * from './group-helpers';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../../../src","sources":["utils/index.ts"],"names":[],"mappings":"AAAA,sCAAmC;AACnC,oCAAiC;AACjC,mCAAgC;AAChC,wCAAqC;AACrC,4BAAyB;AACzB,8CAA2C","sourcesContent":["export * from './register-manager';\nexport * from './update-manager';\nexport * from './group-helpers';\nexport * from './get-layout-patches';\nexport * from './events';\nexport * from './enrichLayoutWithDefaults';\n"]}
|
|
@@ -2,7 +2,7 @@ import update, { extend } from 'immutability-helper';
|
|
|
2
2
|
import omit from "lodash/omit.js";
|
|
3
3
|
import pick from "lodash/pick.js";
|
|
4
4
|
import { DEFAULT_GROUP, DEFAULT_NAMESPACE } from "../constants/index.js";
|
|
5
|
-
import { META_KEY, addGroupToQueue, addToQueue, deleteFromQueue, getAllConfigItems, getCurrentVersion, getInitialItemsStateAndParamsMeta, getItemsStateAndParamsMeta, isItemWithGroup, isItemWithTabs, mergeParamsWithAliases, pickActionParamsFromParams, resolveItemInnerId, transformParamsToActionParams, } from "../shared/index.js";
|
|
5
|
+
import { CONFIG_LAYOUT_FIELDS, META_KEY, addGroupToQueue, addToQueue, deleteFromQueue, getAllConfigItems, getCurrentVersion, getInitialItemsStateAndParamsMeta, getItemsStateAndParamsMeta, isItemWithGroup, isItemWithTabs, mergeParamsWithAliases, pickActionParamsFromParams, resolveItemInnerId, transformParamsToActionParams, } from "../shared/index.js";
|
|
6
6
|
import { getNewId } from "./get-new-id.js";
|
|
7
7
|
import { bottom, compact } from "./grid-layout.js";
|
|
8
8
|
import { resolveLayoutGroup } from "./group-helpers.js";
|
|
@@ -259,7 +259,7 @@ export function reflowLayout({ newLayoutItem, layout, reflowLayoutOptions, }) {
|
|
|
259
259
|
return memo.concat(layoutItems);
|
|
260
260
|
}
|
|
261
261
|
const compactedList = compact(layoutItems, reflowOptions.compactType, reflowOptions.cols).map((item) => {
|
|
262
|
-
const cleanCopy = pick(item,
|
|
262
|
+
const cleanCopy = pick(item, CONFIG_LAYOUT_FIELDS);
|
|
263
263
|
if (groupId === DEFAULT_GROUP) {
|
|
264
264
|
return cleanCopy;
|
|
265
265
|
}
|
|
@@ -412,7 +412,7 @@ export class UpdateManager {
|
|
|
412
412
|
static updateLayout({ layout, config }) {
|
|
413
413
|
return update(config, {
|
|
414
414
|
layout: {
|
|
415
|
-
$set: layout.map((item) => pick(item,
|
|
415
|
+
$set: layout.map((item) => pick(item, CONFIG_LAYOUT_FIELDS)),
|
|
416
416
|
},
|
|
417
417
|
});
|
|
418
418
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-manager.js","sourceRoot":"../../../src","sources":["utils/update-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import update, {CustomCommands, Spec, extend} from 'immutability-helper';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\n\nimport {DEFAULT_GROUP, DEFAULT_NAMESPACE} from '../constants';\nimport {\n ConfigLayout,\n META_KEY,\n addGroupToQueue,\n addToQueue,\n deleteFromQueue,\n getAllConfigItems,\n getCurrentVersion,\n getInitialItemsStateAndParamsMeta,\n getItemsStateAndParamsMeta,\n isItemWithGroup,\n isItemWithTabs,\n mergeParamsWithAliases,\n pickActionParamsFromParams,\n resolveItemInnerId,\n transformParamsToActionParams,\n} from '../shared';\nimport type {\n Config,\n ConfigItem,\n ConfigItemGroup,\n ConfigItemWithGroup,\n ItemStateAndParams,\n ItemStateAndParamsChangeOptions,\n ItemsStateAndParams,\n ItemsStateAndParamsBase,\n StateAndParamsMetaData,\n StringParams,\n} from '../shared';\nimport type {\n AddConfigItem,\n AddNewItemOptions,\n ReflowLayoutOptions,\n SetItemOptions,\n} from '../typings';\n\nimport {getNewId} from './get-new-id';\nimport {bottom, compact} from './grid-layout';\nimport {resolveLayoutGroup} from './group-helpers';\nimport {RegisterManagerPluginLayout} from './register-manager';\n\nextend('$auto', (value, object) => (object ? update(object, value) : update({}, value)));\ntype AutoExtendCommand = CustomCommands<{$auto: object}>;\n\ninterface RemoveItemArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n}\n\nfunction removeItemVersion1({id, config, itemsStateAndParams}: RemoveItemArg) {\n const configItems = getAllConfigItems(config);\n const itemIndex = configItems.findIndex((item) => item.id === id);\n const removeItem = configItems[itemIndex];\n const {defaults = {}} = removeItem;\n const itemParamsKeys = Object.keys(defaults);\n const getParams = (excludeId: string, items: ConfigItem[]) => {\n return Object.keys(\n items.reduce((acc: StringParams, item) => {\n if (item.id !== excludeId) {\n Object.assign(acc, item.defaults);\n }\n return acc;\n }, {}),\n );\n };\n const allParamsKeys = getParams(id, configItems);\n const allNamespaceParamsKeys = getParams(\n id,\n configItems.filter((item) => item.namespace === removeItem.namespace),\n );\n const uniqParamsKeys = itemParamsKeys.filter((key) => !allParamsKeys.includes(key));\n const uniqNamespaceParamsKeys = itemParamsKeys.filter(\n (key) => !allNamespaceParamsKeys.includes(key),\n );\n const withoutUniqItemsParams = Object.keys(itemsStateAndParams)\n .filter((key) => key !== id)\n .reduce(\n (acc, key) => {\n const {params} = (itemsStateAndParams as ItemsStateAndParamsBase)[key];\n // в state из урла могут быть элементы, которых нет в config.items\n const item = configItems.find((configItem) => configItem.id === key);\n if (params && item) {\n const {namespace} = item;\n const currentUniqParamsKeys =\n namespace === removeItem.namespace\n ? uniqNamespaceParamsKeys\n : uniqParamsKeys;\n const resultParams: StringParams = omit(params, currentUniqParamsKeys);\n if (Object.keys(params).length !== Object.keys(resultParams).length) {\n acc[key] = {\n params: {\n $set: resultParams,\n },\n };\n }\n }\n return acc;\n },\n {} as Record<string, Spec<{params: StringParams}>>,\n );\n const newItemsStateAndParams = update(itemsStateAndParams, {\n $unset: [id],\n ...withoutUniqItemsParams,\n });\n const connections = config.connections.filter(({from, to}) => id !== from && id !== to);\n const newConfig = update(config, {\n items: {\n $splice: [[itemIndex, 1]],\n },\n layout: {\n $splice: [[itemIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n });\n return {\n config: newConfig,\n itemsStateAndParams: newItemsStateAndParams,\n };\n}\n\nfunction getAllowableChangedParams(\n item: ConfigItem | ConfigItemGroup,\n stateAndParams: ItemStateAndParams,\n itemsStateAndParams: ItemsStateAndParams,\n paramsSettings?: {\n type?: 'params' | 'actionParams';\n returnPrefix: boolean;\n },\n): StringParams {\n const paramsTypeName = paramsSettings?.type || 'params';\n const isActionParamsMode = paramsTypeName === 'actionParams';\n\n let allowedParams: StringParams = {};\n if (isActionParamsMode) {\n allowedParams = pickActionParamsFromParams(stateAndParams.params, false);\n return paramsSettings?.returnPrefix\n ? transformParamsToActionParams(allowedParams)\n : allowedParams;\n }\n\n const stateParamsConf = stateAndParams.params;\n\n // check if structure is StringParams or Record<string, StringParams>\n // if it's Record<string, StringParams>, then this is a group application of params\n // and checking for comparison of allowedParams and stateParamsConf is not necessary\n const isGroupParamsApply =\n typeof stateParamsConf?.[item.id] === 'object' &&\n stateParamsConf?.[item.id] !== null &&\n !Array.isArray(stateParamsConf?.[item.id]);\n\n if (isItemWithTabs(item)) {\n let tab;\n if ('state' in stateAndParams && stateAndParams.state?.tabId) {\n tab = item.data.tabs.find(({id}) => id === stateAndParams.state?.tabId);\n }\n if (!tab) {\n const tabId = resolveItemInnerId({item, itemsStateAndParams});\n tab = item.data.tabs.find(({id}) => id === tabId);\n }\n allowedParams = pick(stateParamsConf, Object.keys(tab?.params || {})) as StringParams;\n } else {\n const paramsConf = isGroupParamsApply ? stateParamsConf[item.id] : stateParamsConf;\n allowedParams = pick(paramsConf, Object.keys(item.defaults || {})) as StringParams;\n }\n\n if (\n !isGroupParamsApply &&\n Object.keys(allowedParams || {}).length !== Object.keys(stateParamsConf || {}).length\n ) {\n console.warn('Параметры, которых нет в defaults, будут проигнорированы!');\n }\n return allowedParams;\n}\n\ninterface ChangeStateAndParamsArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n options?: ItemStateAndParamsChangeOptions;\n}\n\nfunction changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n}: ChangeStateAndParamsArg) {\n const allConfigItems = getAllConfigItems(config);\n const hasState = 'state' in stateAndParams;\n const {aliases} = config;\n if ('params' in stateAndParams) {\n const initiatorItem = allConfigItems.find(({id}) => id === initiatorId) as ConfigItem;\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n const allowableParamsWithAliases = mergeParamsWithAliases({\n aliases,\n namespace: initiatorItem.namespace,\n params: allowableParams,\n });\n const ignoresInitiatorIds = config.connections\n .filter(({to}) => to === initiatorId)\n .map(({from}) => from);\n\n const updateIds = allConfigItems\n .filter(\n (item) =>\n item.namespace === initiatorItem.namespace &&\n !ignoresInitiatorIds.includes(item.id) &&\n (!isItemWithTabs(item) ||\n (isItemWithTabs(item) &&\n item.data.tabs.every(({id}) => !ignoresInitiatorIds.includes(id)))),\n )\n .map(({id}) => id);\n return update(\n itemsStateAndParams,\n updateIds.reduce(\n (acc, currentId) => {\n acc[currentId] = {\n $auto: {\n params: {\n [(itemsStateAndParams as ItemsStateAndParamsBase)[currentId]?.params\n ? '$merge'\n : '$set']: allowableParamsWithAliases,\n },\n ...(hasState && currentId === initiatorId\n ? {state: {$set: stateAndParams.state}}\n : {}),\n },\n };\n return acc;\n },\n {} as Record<string, Spec<ItemsStateAndParams, AutoExtendCommand>>,\n ),\n );\n } else if (hasState) {\n return update(itemsStateAndParams, {\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n },\n },\n });\n } else {\n return itemsStateAndParams;\n }\n}\n\ntype GetNewItemDataArgs = {\n item: AddConfigItem | ConfigItem;\n config: Config;\n salt: Config['salt'];\n counter: Config['counter'];\n options: SetItemOptions;\n};\n\nfunction getNewItemData({item, config, counter: argsCounter, salt, options}: GetNewItemDataArgs) {\n const excludeIds = [...(options.excludeIds || [])];\n let counter = argsCounter;\n\n let data = item.data;\n\n if (isItemWithTabs(item)) {\n const tabs = item.data.tabs.map((tab) => {\n if (tab.id) {\n return tab;\n }\n\n const newIdTabData = getNewId({config, salt, counter, excludeIds});\n counter = newIdTabData.counter;\n excludeIds.push(newIdTabData.id);\n\n return {...tab, id: newIdTabData.id};\n });\n\n data = {...item.data, tabs};\n }\n\n if (isItemWithGroup(item)) {\n const group = item.data.group.map((groupItem) => {\n if (groupItem.id) {\n return groupItem;\n }\n\n const newIdGroupData = getNewId({config, salt, counter, excludeIds});\n counter = newIdGroupData.counter;\n excludeIds.push(newIdGroupData.id);\n\n return {\n ...groupItem,\n id: newIdGroupData.id,\n namespace: groupItem.namespace || DEFAULT_NAMESPACE,\n };\n });\n\n data = {...item.data, group};\n }\n\n return {data, counter, excludeIds};\n}\n\nexport const getChangedParams = ({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n}: {\n initiatorItem: ConfigItem | ConfigItemGroup;\n stateAndParams: ItemStateAndParams;\n itemsStateAndParams: ItemsStateAndParams;\n}) => {\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n\n const allowableActionParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n {type: 'actionParams', returnPrefix: true},\n );\n\n return {...allowableParams, ...allowableActionParams};\n};\n\nfunction changeGroupParams({\n groupItemIds,\n initiatorId,\n initiatorItem,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n}: {\n groupItemIds: string[];\n initiatorId: string;\n initiatorItem: ConfigItemWithGroup;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n unusedIds: string[];\n}) {\n const meta: StateAndParamsMetaData = addGroupToQueue({\n id: initiatorId,\n groupItemIds,\n config,\n itemsStateAndParams,\n });\n const updatedItems: Record<string, StringParams> = {};\n const currentItemParams = (itemsStateAndParams as ItemsStateAndParamsBase)[initiatorId]\n ?.params as Record<string, StringParams> | undefined;\n\n for (const groupItem of initiatorItem.data.group) {\n if (groupItemIds.includes(groupItem.id)) {\n const changedParams = getChangedParams({\n initiatorItem: groupItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n updatedItems[groupItem.id] = changedParams;\n\n continue;\n }\n\n if (currentItemParams && currentItemParams[groupItem.id]) {\n updatedItems[groupItem.id] = currentItemParams[groupItem.id];\n }\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n $set: updatedItems,\n },\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n}\n\nexport function reflowLayout({\n newLayoutItem,\n layout,\n reflowLayoutOptions,\n}: {\n newLayoutItem?: ConfigLayout;\n layout: ConfigLayout[];\n reflowLayoutOptions: ReflowLayoutOptions;\n}) {\n const byGroup: Record<string, ConfigLayout[]> = {};\n const reducer = (\n memo: Record<string, number>,\n item: ConfigLayout,\n i: number,\n _items: ConfigLayout[],\n isNewItem?: boolean,\n ) => {\n memo[item.i] = i;\n const parent = resolveLayoutGroup(item);\n\n if (byGroup[parent]) {\n if (isNewItem) {\n byGroup[parent].unshift(item);\n } else {\n byGroup[parent].push(item);\n }\n } else {\n byGroup[parent] = [item];\n }\n\n return memo;\n };\n\n const orderById = layout.reduce<Record<string, number>>(reducer, {});\n\n if (newLayoutItem) {\n reducer(orderById, newLayoutItem, layout.length, layout, true);\n }\n\n const {defaultProps} = reflowLayoutOptions;\n\n return Object.entries(byGroup)\n .reduce<ConfigLayout[]>((memo, [groupId, layoutItems]) => {\n let reflowOptions = defaultProps;\n if (reflowLayoutOptions?.groups?.[groupId]) {\n reflowOptions = reflowLayoutOptions?.groups[groupId];\n }\n\n if (reflowOptions.compactType === null) {\n return memo.concat(layoutItems);\n }\n\n const compactedList = compact(\n layoutItems,\n reflowOptions.compactType,\n reflowOptions.cols,\n ).map((item) => {\n const cleanCopy = pick(item, ['i', 'h', 'w', 'x', 'y', 'parent']) as ConfigLayout;\n\n if (groupId === DEFAULT_GROUP) {\n return cleanCopy;\n }\n\n return {...cleanCopy, parent: groupId};\n });\n\n return memo.concat(compactedList);\n }, [])\n .sort((a, b) => orderById[a.i] - orderById[b.i]);\n}\n\nexport class UpdateManager {\n static addItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n layout,\n config,\n options = {},\n }: {\n item: AddConfigItem;\n namespace: string;\n layout: RegisterManagerPluginLayout;\n config: Config;\n options?: AddNewItemOptions;\n }) {\n const salt = config.salt;\n\n const newItemData = getNewItemData({item, config, salt, counter: config.counter, options});\n let counter = newItemData.counter;\n\n const newIdData = getNewId({config, salt, counter, excludeIds: newItemData.excludeIds});\n counter = newIdData.counter;\n\n const newItem = {...item, id: newIdData.id, data: newItemData.data, namespace};\n const saveDefaultLayout = pick(layout, ['h', 'w', 'x', 'y', 'parent']);\n\n const updateActions = {\n counter: {$set: counter},\n ...(options.useGlobalItems\n ? {globalItems: config.globalItems ? {$push: [newItem]} : {$set: [newItem]}}\n : {items: {$push: [newItem]}}),\n };\n\n if (options.updateLayout) {\n const byId = options.updateLayout.reduce<Record<string, ConfigLayout>>((memo, t) => {\n memo[t.i] = t;\n return memo;\n }, {});\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [\n ...config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n {...saveDefaultLayout, i: newItem.id},\n ];\n }\n\n return update(config, {\n ...updateActions,\n layout: {$set: newLayout},\n });\n } else if (isFinite(layout.y)) {\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout,\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [...config.layout, newLayoutItem];\n }\n\n return update(config, {\n ...updateActions,\n layout: {$set: newLayout},\n });\n } else {\n const layoutY = bottom(config.layout);\n const newLayoutItem = {...saveDefaultLayout, y: layoutY, i: newItem.id};\n\n return update(config, {\n ...updateActions,\n layout: {$push: [newLayoutItem]},\n });\n }\n }\n\n static editItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n config,\n options = {},\n }: {\n item: ConfigItem;\n namespace: string;\n config: Config;\n options?: SetItemOptions;\n }) {\n const globalItemIndex = config.globalItems\n ? config.globalItems.findIndex(({id}) => item.id === id)\n : -1;\n const itemIndex = config.items.findIndex(({id}) => item.id === id);\n\n const shouldBeGlobalItem = options.useGlobalItems;\n const isCurrentlyInGlobalItems = globalItemIndex !== -1;\n const isCurrentlyInItems = itemIndex !== -1;\n\n const {counter, data} = getNewItemData({\n item,\n config,\n salt: config.salt,\n counter: config.counter,\n options,\n });\n\n const updatedItem = {...item, data, namespace};\n\n // Determine if we need to move the item between arrays\n if (shouldBeGlobalItem && isCurrentlyInItems) {\n // Move from items to globalItems\n return update(config, {\n items: {$splice: [[itemIndex, 1]]},\n globalItems: config.globalItems ? {$push: [updatedItem]} : {$set: [updatedItem]},\n counter: {$set: counter},\n });\n } else if (!shouldBeGlobalItem && isCurrentlyInGlobalItems) {\n // Move from globalItems to items\n return update(config, {\n globalItems: {$splice: [[globalItemIndex, 1]]},\n items: {$push: [updatedItem]},\n counter: {$set: counter},\n });\n } else {\n // Update in current location\n const updateAction = isCurrentlyInGlobalItems\n ? {globalItems: {[globalItemIndex]: {$set: updatedItem}}}\n : {items: {[itemIndex]: {$set: updatedItem}}};\n\n return update(config, {\n ...updateAction,\n counter: {$set: counter},\n });\n }\n }\n\n static removeItem({id, config, itemsStateAndParams = {}}: RemoveItemArg): {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n } {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return removeItemVersion1({id, config, itemsStateAndParams});\n }\n const globalItemIndex = config.globalItems\n ? config.globalItems.findIndex((item) => item.id === id)\n : -1;\n const itemIndex = config.items.findIndex((item) => item.id === id);\n const layoutIndex = config.layout.findIndex((item) => item.i === id);\n const item = config.items[itemIndex] || config.globalItems?.[globalItemIndex];\n\n let itemIds = [id];\n if (isItemWithTabs(item)) {\n itemIds = [id].concat(item.data.tabs.map((tab) => tab.id));\n }\n if (isItemWithGroup(item)) {\n itemIds = [id].concat(item.data.group.map((groupItem) => groupItem.id));\n }\n const connections = config.connections.filter(\n ({from, to}) => !itemIds.includes(from) && !itemIds.includes(to),\n );\n\n const updateAction: {[key: string]: Spec<ConfigItem[], never>} =\n globalItemIndex === -1\n ? {\n items: {\n $splice: [[itemIndex, 1]],\n },\n }\n : {globalItems: {$splice: [[globalItemIndex, 1]]}};\n\n return {\n config: update(config, {\n layout: {\n $splice: [[layoutIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n ...updateAction,\n }),\n itemsStateAndParams: update(itemsStateAndParams, {\n $unset: [id],\n [META_KEY]: {\n $set: deleteFromQueue({\n id,\n itemsStateAndParams,\n config,\n }),\n },\n }),\n };\n }\n\n static updateLayout({layout, config}: {layout: ConfigLayout[]; config: Config}) {\n return update(config, {\n layout: {\n $set: layout.map((item) => pick(item, ['i', 'h', 'w', 'x', 'y', 'parent'])),\n },\n });\n }\n\n static changeStateAndParams({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n options,\n }: ChangeStateAndParamsArg): ItemsStateAndParams {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n });\n }\n\n const action = options?.action;\n const hasState = 'state' in stateAndParams;\n const items = getAllConfigItems(config);\n const itemsIds = items.map(({id: itemId}) => itemId);\n const itemsStateAndParamsIds = Object.keys(omit(itemsStateAndParams, [META_KEY]));\n const unusedIds = itemsStateAndParamsIds.filter((id) => !itemsIds.includes(id));\n const initiatorItem = items.find(({id}) => id === initiatorId) as ConfigItem;\n const newTabId: string | undefined = stateAndParams.state?.tabId;\n const isTabSwitched = isItemWithTabs(initiatorItem) && Boolean(newTabId);\n const currentMeta = getItemsStateAndParamsMeta(itemsStateAndParams);\n const groupItemIds = options?.groupItemIds;\n\n if (action === 'removeItem') {\n return update(itemsStateAndParams, {\n $unset: [...unusedIds, initiatorId],\n [META_KEY]: {\n $set: currentMeta\n ? deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n })\n : getInitialItemsStateAndParamsMeta(),\n },\n });\n }\n\n if (isItemWithGroup(initiatorItem) && groupItemIds) {\n return changeGroupParams({\n initiatorId,\n initiatorItem,\n groupItemIds,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n });\n }\n\n if ('params' in stateAndParams) {\n const changedParams = getChangedParams({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n const tabId: string | undefined = isItemWithTabs(initiatorItem)\n ? newTabId || resolveItemInnerId({item: initiatorItem, itemsStateAndParams})\n : undefined;\n const meta = addToQueue({\n id: initiatorId,\n tabId,\n config,\n itemsStateAndParams,\n });\n let commandUpdateParams: string = (itemsStateAndParams as ItemsStateAndParamsBase)[\n initiatorId\n ]?.params\n ? '$merge'\n : '$set';\n if (isTabSwitched || action === 'setParams') {\n commandUpdateParams = '$set';\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n [commandUpdateParams]: changedParams,\n },\n ...(hasState ? {state: {$set: stateAndParams.state}} : {}),\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n } else if (hasState) {\n let metaSpec: Spec<ItemsStateAndParams> = {};\n if (currentMeta && isTabSwitched) {\n metaSpec = {\n [META_KEY]: {\n $set: deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n }),\n },\n };\n }\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n ...(isTabSwitched ? {$unset: ['params']} : {}),\n },\n },\n ...(currentMeta\n ? metaSpec\n : {[META_KEY]: {$set: getInitialItemsStateAndParamsMeta()}}),\n });\n } else {\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n ...(currentMeta\n ? {}\n : {\n [META_KEY]: {$set: getInitialItemsStateAndParamsMeta()},\n }),\n });\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"update-manager.js","sourceRoot":"../../../src","sources":["utils/update-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import update, {CustomCommands, Spec, extend} from 'immutability-helper';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\n\nimport {DEFAULT_GROUP, DEFAULT_NAMESPACE} from '../constants';\nimport {\n CONFIG_LAYOUT_FIELDS,\n ConfigLayout,\n META_KEY,\n addGroupToQueue,\n addToQueue,\n deleteFromQueue,\n getAllConfigItems,\n getCurrentVersion,\n getInitialItemsStateAndParamsMeta,\n getItemsStateAndParamsMeta,\n isItemWithGroup,\n isItemWithTabs,\n mergeParamsWithAliases,\n pickActionParamsFromParams,\n resolveItemInnerId,\n transformParamsToActionParams,\n} from '../shared';\nimport type {\n Config,\n ConfigItem,\n ConfigItemGroup,\n ConfigItemWithGroup,\n ItemStateAndParams,\n ItemStateAndParamsChangeOptions,\n ItemsStateAndParams,\n ItemsStateAndParamsBase,\n StateAndParamsMetaData,\n StringParams,\n} from '../shared';\nimport type {\n AddConfigItem,\n AddNewItemOptions,\n ReflowLayoutOptions,\n SetItemOptions,\n} from '../typings';\n\nimport {getNewId} from './get-new-id';\nimport {bottom, compact} from './grid-layout';\nimport {resolveLayoutGroup} from './group-helpers';\nimport {RegisterManagerPluginLayout} from './register-manager';\n\nextend('$auto', (value, object) => (object ? update(object, value) : update({}, value)));\ntype AutoExtendCommand = CustomCommands<{$auto: object}>;\n\ninterface RemoveItemArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n}\n\nfunction removeItemVersion1({id, config, itemsStateAndParams}: RemoveItemArg) {\n const configItems = getAllConfigItems(config);\n const itemIndex = configItems.findIndex((item) => item.id === id);\n const removeItem = configItems[itemIndex];\n const {defaults = {}} = removeItem;\n const itemParamsKeys = Object.keys(defaults);\n const getParams = (excludeId: string, items: ConfigItem[]) => {\n return Object.keys(\n items.reduce((acc: StringParams, item) => {\n if (item.id !== excludeId) {\n Object.assign(acc, item.defaults);\n }\n return acc;\n }, {}),\n );\n };\n const allParamsKeys = getParams(id, configItems);\n const allNamespaceParamsKeys = getParams(\n id,\n configItems.filter((item) => item.namespace === removeItem.namespace),\n );\n const uniqParamsKeys = itemParamsKeys.filter((key) => !allParamsKeys.includes(key));\n const uniqNamespaceParamsKeys = itemParamsKeys.filter(\n (key) => !allNamespaceParamsKeys.includes(key),\n );\n const withoutUniqItemsParams = Object.keys(itemsStateAndParams)\n .filter((key) => key !== id)\n .reduce(\n (acc, key) => {\n const {params} = (itemsStateAndParams as ItemsStateAndParamsBase)[key];\n // в state из урла могут быть элементы, которых нет в config.items\n const item = configItems.find((configItem) => configItem.id === key);\n if (params && item) {\n const {namespace} = item;\n const currentUniqParamsKeys =\n namespace === removeItem.namespace\n ? uniqNamespaceParamsKeys\n : uniqParamsKeys;\n const resultParams: StringParams = omit(params, currentUniqParamsKeys);\n if (Object.keys(params).length !== Object.keys(resultParams).length) {\n acc[key] = {\n params: {\n $set: resultParams,\n },\n };\n }\n }\n return acc;\n },\n {} as Record<string, Spec<{params: StringParams}>>,\n );\n const newItemsStateAndParams = update(itemsStateAndParams, {\n $unset: [id],\n ...withoutUniqItemsParams,\n });\n const connections = config.connections.filter(({from, to}) => id !== from && id !== to);\n const newConfig = update(config, {\n items: {\n $splice: [[itemIndex, 1]],\n },\n layout: {\n $splice: [[itemIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n });\n return {\n config: newConfig,\n itemsStateAndParams: newItemsStateAndParams,\n };\n}\n\nfunction getAllowableChangedParams(\n item: ConfigItem | ConfigItemGroup,\n stateAndParams: ItemStateAndParams,\n itemsStateAndParams: ItemsStateAndParams,\n paramsSettings?: {\n type?: 'params' | 'actionParams';\n returnPrefix: boolean;\n },\n): StringParams {\n const paramsTypeName = paramsSettings?.type || 'params';\n const isActionParamsMode = paramsTypeName === 'actionParams';\n\n let allowedParams: StringParams = {};\n if (isActionParamsMode) {\n allowedParams = pickActionParamsFromParams(stateAndParams.params, false);\n return paramsSettings?.returnPrefix\n ? transformParamsToActionParams(allowedParams)\n : allowedParams;\n }\n\n const stateParamsConf = stateAndParams.params;\n\n // check if structure is StringParams or Record<string, StringParams>\n // if it's Record<string, StringParams>, then this is a group application of params\n // and checking for comparison of allowedParams and stateParamsConf is not necessary\n const isGroupParamsApply =\n typeof stateParamsConf?.[item.id] === 'object' &&\n stateParamsConf?.[item.id] !== null &&\n !Array.isArray(stateParamsConf?.[item.id]);\n\n if (isItemWithTabs(item)) {\n let tab;\n if ('state' in stateAndParams && stateAndParams.state?.tabId) {\n tab = item.data.tabs.find(({id}) => id === stateAndParams.state?.tabId);\n }\n if (!tab) {\n const tabId = resolveItemInnerId({item, itemsStateAndParams});\n tab = item.data.tabs.find(({id}) => id === tabId);\n }\n allowedParams = pick(stateParamsConf, Object.keys(tab?.params || {})) as StringParams;\n } else {\n const paramsConf = isGroupParamsApply ? stateParamsConf[item.id] : stateParamsConf;\n allowedParams = pick(paramsConf, Object.keys(item.defaults || {})) as StringParams;\n }\n\n if (\n !isGroupParamsApply &&\n Object.keys(allowedParams || {}).length !== Object.keys(stateParamsConf || {}).length\n ) {\n console.warn('Параметры, которых нет в defaults, будут проигнорированы!');\n }\n return allowedParams;\n}\n\ninterface ChangeStateAndParamsArg {\n id: string;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n options?: ItemStateAndParamsChangeOptions;\n}\n\nfunction changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n}: ChangeStateAndParamsArg) {\n const allConfigItems = getAllConfigItems(config);\n const hasState = 'state' in stateAndParams;\n const {aliases} = config;\n if ('params' in stateAndParams) {\n const initiatorItem = allConfigItems.find(({id}) => id === initiatorId) as ConfigItem;\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n const allowableParamsWithAliases = mergeParamsWithAliases({\n aliases,\n namespace: initiatorItem.namespace,\n params: allowableParams,\n });\n const ignoresInitiatorIds = config.connections\n .filter(({to}) => to === initiatorId)\n .map(({from}) => from);\n\n const updateIds = allConfigItems\n .filter(\n (item) =>\n item.namespace === initiatorItem.namespace &&\n !ignoresInitiatorIds.includes(item.id) &&\n (!isItemWithTabs(item) ||\n (isItemWithTabs(item) &&\n item.data.tabs.every(({id}) => !ignoresInitiatorIds.includes(id)))),\n )\n .map(({id}) => id);\n return update(\n itemsStateAndParams,\n updateIds.reduce(\n (acc, currentId) => {\n acc[currentId] = {\n $auto: {\n params: {\n [(itemsStateAndParams as ItemsStateAndParamsBase)[currentId]?.params\n ? '$merge'\n : '$set']: allowableParamsWithAliases,\n },\n ...(hasState && currentId === initiatorId\n ? {state: {$set: stateAndParams.state}}\n : {}),\n },\n };\n return acc;\n },\n {} as Record<string, Spec<ItemsStateAndParams, AutoExtendCommand>>,\n ),\n );\n } else if (hasState) {\n return update(itemsStateAndParams, {\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n },\n },\n });\n } else {\n return itemsStateAndParams;\n }\n}\n\ntype GetNewItemDataArgs = {\n item: AddConfigItem | ConfigItem;\n config: Config;\n salt: Config['salt'];\n counter: Config['counter'];\n options: SetItemOptions;\n};\n\nfunction getNewItemData({item, config, counter: argsCounter, salt, options}: GetNewItemDataArgs) {\n const excludeIds = [...(options.excludeIds || [])];\n let counter = argsCounter;\n\n let data = item.data;\n\n if (isItemWithTabs(item)) {\n const tabs = item.data.tabs.map((tab) => {\n if (tab.id) {\n return tab;\n }\n\n const newIdTabData = getNewId({config, salt, counter, excludeIds});\n counter = newIdTabData.counter;\n excludeIds.push(newIdTabData.id);\n\n return {...tab, id: newIdTabData.id};\n });\n\n data = {...item.data, tabs};\n }\n\n if (isItemWithGroup(item)) {\n const group = item.data.group.map((groupItem) => {\n if (groupItem.id) {\n return groupItem;\n }\n\n const newIdGroupData = getNewId({config, salt, counter, excludeIds});\n counter = newIdGroupData.counter;\n excludeIds.push(newIdGroupData.id);\n\n return {\n ...groupItem,\n id: newIdGroupData.id,\n namespace: groupItem.namespace || DEFAULT_NAMESPACE,\n };\n });\n\n data = {...item.data, group};\n }\n\n return {data, counter, excludeIds};\n}\n\nexport const getChangedParams = ({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n}: {\n initiatorItem: ConfigItem | ConfigItemGroup;\n stateAndParams: ItemStateAndParams;\n itemsStateAndParams: ItemsStateAndParams;\n}) => {\n const allowableParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n );\n\n const allowableActionParams = getAllowableChangedParams(\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n {type: 'actionParams', returnPrefix: true},\n );\n\n return {...allowableParams, ...allowableActionParams};\n};\n\nfunction changeGroupParams({\n groupItemIds,\n initiatorId,\n initiatorItem,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n}: {\n groupItemIds: string[];\n initiatorId: string;\n initiatorItem: ConfigItemWithGroup;\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n stateAndParams: ItemStateAndParams;\n unusedIds: string[];\n}) {\n const meta: StateAndParamsMetaData = addGroupToQueue({\n id: initiatorId,\n groupItemIds,\n config,\n itemsStateAndParams,\n });\n const updatedItems: Record<string, StringParams> = {};\n const currentItemParams = (itemsStateAndParams as ItemsStateAndParamsBase)[initiatorId]\n ?.params as Record<string, StringParams> | undefined;\n\n for (const groupItem of initiatorItem.data.group) {\n if (groupItemIds.includes(groupItem.id)) {\n const changedParams = getChangedParams({\n initiatorItem: groupItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n updatedItems[groupItem.id] = changedParams;\n\n continue;\n }\n\n if (currentItemParams && currentItemParams[groupItem.id]) {\n updatedItems[groupItem.id] = currentItemParams[groupItem.id];\n }\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n $set: updatedItems,\n },\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n}\n\nexport function reflowLayout({\n newLayoutItem,\n layout,\n reflowLayoutOptions,\n}: {\n newLayoutItem?: ConfigLayout;\n layout: ConfigLayout[];\n reflowLayoutOptions: ReflowLayoutOptions;\n}) {\n const byGroup: Record<string, ConfigLayout[]> = {};\n const reducer = (\n memo: Record<string, number>,\n item: ConfigLayout,\n i: number,\n _items: ConfigLayout[],\n isNewItem?: boolean,\n ) => {\n memo[item.i] = i;\n const parent = resolveLayoutGroup(item);\n\n if (byGroup[parent]) {\n if (isNewItem) {\n byGroup[parent].unshift(item);\n } else {\n byGroup[parent].push(item);\n }\n } else {\n byGroup[parent] = [item];\n }\n\n return memo;\n };\n\n const orderById = layout.reduce<Record<string, number>>(reducer, {});\n\n if (newLayoutItem) {\n reducer(orderById, newLayoutItem, layout.length, layout, true);\n }\n\n const {defaultProps} = reflowLayoutOptions;\n\n return Object.entries(byGroup)\n .reduce<ConfigLayout[]>((memo, [groupId, layoutItems]) => {\n let reflowOptions = defaultProps;\n if (reflowLayoutOptions?.groups?.[groupId]) {\n reflowOptions = reflowLayoutOptions?.groups[groupId];\n }\n\n if (reflowOptions.compactType === null) {\n return memo.concat(layoutItems);\n }\n\n const compactedList = compact(\n layoutItems,\n reflowOptions.compactType,\n reflowOptions.cols,\n ).map((item) => {\n const cleanCopy = pick(item, CONFIG_LAYOUT_FIELDS) as ConfigLayout;\n\n if (groupId === DEFAULT_GROUP) {\n return cleanCopy;\n }\n\n return {...cleanCopy, parent: groupId};\n });\n\n return memo.concat(compactedList);\n }, [])\n .sort((a, b) => orderById[a.i] - orderById[b.i]);\n}\n\nexport class UpdateManager {\n static addItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n layout,\n config,\n options = {},\n }: {\n item: AddConfigItem;\n namespace: string;\n layout: RegisterManagerPluginLayout;\n config: Config;\n options?: AddNewItemOptions;\n }) {\n const salt = config.salt;\n\n const newItemData = getNewItemData({item, config, salt, counter: config.counter, options});\n let counter = newItemData.counter;\n\n const newIdData = getNewId({config, salt, counter, excludeIds: newItemData.excludeIds});\n counter = newIdData.counter;\n\n const newItem = {...item, id: newIdData.id, data: newItemData.data, namespace};\n const saveDefaultLayout = pick(layout, ['h', 'w', 'x', 'y', 'parent']);\n\n const updateActions = {\n counter: {$set: counter},\n ...(options.useGlobalItems\n ? {globalItems: config.globalItems ? {$push: [newItem]} : {$set: [newItem]}}\n : {items: {$push: [newItem]}}),\n };\n\n if (options.updateLayout) {\n const byId = options.updateLayout.reduce<Record<string, ConfigLayout>>((memo, t) => {\n memo[t.i] = t;\n return memo;\n }, {});\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [\n ...config.layout.map((t) => ({...t, ...(byId[t.i] || {})})),\n {...saveDefaultLayout, i: newItem.id},\n ];\n }\n\n return update(config, {\n ...updateActions,\n layout: {$set: newLayout},\n });\n } else if (isFinite(layout.y)) {\n let newLayout;\n const newLayoutItem = {...saveDefaultLayout, i: newItem.id};\n\n if (options.reflowLayoutOptions) {\n newLayout = reflowLayout({\n newLayoutItem,\n layout: config.layout,\n reflowLayoutOptions: options.reflowLayoutOptions,\n });\n } else {\n newLayout = [...config.layout, newLayoutItem];\n }\n\n return update(config, {\n ...updateActions,\n layout: {$set: newLayout},\n });\n } else {\n const layoutY = bottom(config.layout);\n const newLayoutItem = {...saveDefaultLayout, y: layoutY, i: newItem.id};\n\n return update(config, {\n ...updateActions,\n layout: {$push: [newLayoutItem]},\n });\n }\n }\n\n static editItem({\n item,\n namespace = DEFAULT_NAMESPACE,\n config,\n options = {},\n }: {\n item: ConfigItem;\n namespace: string;\n config: Config;\n options?: SetItemOptions;\n }) {\n const globalItemIndex = config.globalItems\n ? config.globalItems.findIndex(({id}) => item.id === id)\n : -1;\n const itemIndex = config.items.findIndex(({id}) => item.id === id);\n\n const shouldBeGlobalItem = options.useGlobalItems;\n const isCurrentlyInGlobalItems = globalItemIndex !== -1;\n const isCurrentlyInItems = itemIndex !== -1;\n\n const {counter, data} = getNewItemData({\n item,\n config,\n salt: config.salt,\n counter: config.counter,\n options,\n });\n\n const updatedItem = {...item, data, namespace};\n\n // Determine if we need to move the item between arrays\n if (shouldBeGlobalItem && isCurrentlyInItems) {\n // Move from items to globalItems\n return update(config, {\n items: {$splice: [[itemIndex, 1]]},\n globalItems: config.globalItems ? {$push: [updatedItem]} : {$set: [updatedItem]},\n counter: {$set: counter},\n });\n } else if (!shouldBeGlobalItem && isCurrentlyInGlobalItems) {\n // Move from globalItems to items\n return update(config, {\n globalItems: {$splice: [[globalItemIndex, 1]]},\n items: {$push: [updatedItem]},\n counter: {$set: counter},\n });\n } else {\n // Update in current location\n const updateAction = isCurrentlyInGlobalItems\n ? {globalItems: {[globalItemIndex]: {$set: updatedItem}}}\n : {items: {[itemIndex]: {$set: updatedItem}}};\n\n return update(config, {\n ...updateAction,\n counter: {$set: counter},\n });\n }\n }\n\n static removeItem({id, config, itemsStateAndParams = {}}: RemoveItemArg): {\n config: Config;\n itemsStateAndParams: ItemsStateAndParams;\n } {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return removeItemVersion1({id, config, itemsStateAndParams});\n }\n const globalItemIndex = config.globalItems\n ? config.globalItems.findIndex((item) => item.id === id)\n : -1;\n const itemIndex = config.items.findIndex((item) => item.id === id);\n const layoutIndex = config.layout.findIndex((item) => item.i === id);\n const item = config.items[itemIndex] || config.globalItems?.[globalItemIndex];\n\n let itemIds = [id];\n if (isItemWithTabs(item)) {\n itemIds = [id].concat(item.data.tabs.map((tab) => tab.id));\n }\n if (isItemWithGroup(item)) {\n itemIds = [id].concat(item.data.group.map((groupItem) => groupItem.id));\n }\n const connections = config.connections.filter(\n ({from, to}) => !itemIds.includes(from) && !itemIds.includes(to),\n );\n\n const updateAction: {[key: string]: Spec<ConfigItem[], never>} =\n globalItemIndex === -1\n ? {\n items: {\n $splice: [[itemIndex, 1]],\n },\n }\n : {globalItems: {$splice: [[globalItemIndex, 1]]}};\n\n return {\n config: update(config, {\n layout: {\n $splice: [[layoutIndex, 1]],\n },\n connections: {\n $set: connections,\n },\n ...updateAction,\n }),\n itemsStateAndParams: update(itemsStateAndParams, {\n $unset: [id],\n [META_KEY]: {\n $set: deleteFromQueue({\n id,\n itemsStateAndParams,\n config,\n }),\n },\n }),\n };\n }\n\n static updateLayout({layout, config}: {layout: ConfigLayout[]; config: Config}) {\n return update(config, {\n layout: {\n $set: layout.map((item) => pick(item, CONFIG_LAYOUT_FIELDS)),\n },\n });\n }\n\n static changeStateAndParams({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n options,\n }: ChangeStateAndParamsArg): ItemsStateAndParams {\n if (getCurrentVersion(itemsStateAndParams) === 1) {\n return changeStateAndParamsVersion1({\n id: initiatorId,\n config,\n stateAndParams,\n itemsStateAndParams,\n });\n }\n\n const action = options?.action;\n const hasState = 'state' in stateAndParams;\n const items = getAllConfigItems(config);\n const itemsIds = items.map(({id: itemId}) => itemId);\n const itemsStateAndParamsIds = Object.keys(omit(itemsStateAndParams, [META_KEY]));\n const unusedIds = itemsStateAndParamsIds.filter((id) => !itemsIds.includes(id));\n const initiatorItem = items.find(({id}) => id === initiatorId) as ConfigItem;\n const newTabId: string | undefined = stateAndParams.state?.tabId;\n const isTabSwitched = isItemWithTabs(initiatorItem) && Boolean(newTabId);\n const currentMeta = getItemsStateAndParamsMeta(itemsStateAndParams);\n const groupItemIds = options?.groupItemIds;\n\n if (action === 'removeItem') {\n return update(itemsStateAndParams, {\n $unset: [...unusedIds, initiatorId],\n [META_KEY]: {\n $set: currentMeta\n ? deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n })\n : getInitialItemsStateAndParamsMeta(),\n },\n });\n }\n\n if (isItemWithGroup(initiatorItem) && groupItemIds) {\n return changeGroupParams({\n initiatorId,\n initiatorItem,\n groupItemIds,\n itemsStateAndParams,\n stateAndParams,\n config,\n unusedIds,\n });\n }\n\n if ('params' in stateAndParams) {\n const changedParams = getChangedParams({\n initiatorItem,\n stateAndParams,\n itemsStateAndParams,\n });\n\n const tabId: string | undefined = isItemWithTabs(initiatorItem)\n ? newTabId || resolveItemInnerId({item: initiatorItem, itemsStateAndParams})\n : undefined;\n const meta = addToQueue({\n id: initiatorId,\n tabId,\n config,\n itemsStateAndParams,\n });\n let commandUpdateParams: string = (itemsStateAndParams as ItemsStateAndParamsBase)[\n initiatorId\n ]?.params\n ? '$merge'\n : '$set';\n if (isTabSwitched || action === 'setParams') {\n commandUpdateParams = '$set';\n }\n\n const obj = {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n params: {\n [commandUpdateParams]: changedParams,\n },\n ...(hasState ? {state: {$set: stateAndParams.state}} : {}),\n },\n },\n [META_KEY]: {$set: meta},\n };\n return update(itemsStateAndParams, obj);\n } else if (hasState) {\n let metaSpec: Spec<ItemsStateAndParams> = {};\n if (currentMeta && isTabSwitched) {\n metaSpec = {\n [META_KEY]: {\n $set: deleteFromQueue({\n id: initiatorId,\n itemsStateAndParams,\n config,\n }),\n },\n };\n }\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n [initiatorId]: {\n $auto: {\n state: {$set: stateAndParams.state},\n ...(isTabSwitched ? {$unset: ['params']} : {}),\n },\n },\n ...(currentMeta\n ? metaSpec\n : {[META_KEY]: {$set: getInitialItemsStateAndParamsMeta()}}),\n });\n } else {\n return update(itemsStateAndParams, {\n $unset: unusedIds,\n ...(currentMeta\n ? {}\n : {\n [META_KEY]: {$set: getInitialItemsStateAndParamsMeta()},\n }),\n });\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gravity-ui/dashkit",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.3.0",
|
|
4
4
|
"description": "Library for rendering dashboard grid layout",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -100,6 +100,8 @@
|
|
|
100
100
|
"@storybook/preset-scss": "^1.0.3",
|
|
101
101
|
"@storybook/react": "^7.6.15",
|
|
102
102
|
"@storybook/react-webpack5": "^7.6.15",
|
|
103
|
+
"@testing-library/dom": "^10.4.1",
|
|
104
|
+
"@testing-library/react": "^16.3.2",
|
|
103
105
|
"@types/jest": "^29.5.14",
|
|
104
106
|
"@types/lodash": "^4.14.170",
|
|
105
107
|
"@types/react": "^19.2.16",
|
|
@@ -113,6 +115,7 @@
|
|
|
113
115
|
"gulp-sourcemaps": "^3.0.0",
|
|
114
116
|
"husky": "^9.0.11",
|
|
115
117
|
"jest": "^29.7.0",
|
|
118
|
+
"jest-environment-jsdom": "^30.4.1",
|
|
116
119
|
"lint-staged": "^13.0.3",
|
|
117
120
|
"npm-run-all": "^4.1.5",
|
|
118
121
|
"postcss": "^8.4.12",
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useCalcPropsLayout = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
-
const isEqual_1 = tslib_1.__importDefault(require("lodash/isEqual.js"));
|
|
7
|
-
const shared_1 = require("../shared/index.js");
|
|
8
|
-
function onUpdatePropsConfig(config, registerManager) {
|
|
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
|
-
}, []);
|
|
20
|
-
}
|
|
21
|
-
const useCalcPropsLayout = (config, registerManager) => {
|
|
22
|
-
const [prevConfig, setPrevConfig] = react_1.default.useState(config);
|
|
23
|
-
const [layout, updateLayout] = react_1.default.useState(onUpdatePropsConfig(config, registerManager));
|
|
24
|
-
if (!(0, isEqual_1.default)(prevConfig.layout, config.layout)) {
|
|
25
|
-
setPrevConfig(config);
|
|
26
|
-
updateLayout(onUpdatePropsConfig(config, registerManager));
|
|
27
|
-
}
|
|
28
|
-
return layout;
|
|
29
|
-
};
|
|
30
|
-
exports.useCalcPropsLayout = useCalcPropsLayout;
|
|
31
|
-
// export const useManageLayout = (config: Config, registerManager: RegisterManager) => {
|
|
32
|
-
// const propsLayout = useCalcPropsLayout(config, registerManager);
|
|
33
|
-
// // так как мы не хотим хранить параметры виджета с активированной автовысотой в сторе и на сервере, актуальный
|
|
34
|
-
// // (видимый юзером в конкретный момент времени) лэйаут (массив объектов с данными о ширине, высоте,
|
|
35
|
-
// // расположении конкретного виджета на сетке) будет храниться в стейте, но, для того, чтобы в стор попадал
|
|
36
|
-
// // лэйаут без учета вижетов с активированной автовысотой, в момент "подстройки" высоты виджета значение h
|
|
37
|
-
// // (высота) из конфига будет запоминаться в originalLayouts, новое значение высоты в adjustedLayouts
|
|
38
|
-
// const [currentLayout, setCurrentLayout] = React.useState(propsLayout);
|
|
39
|
-
// };
|
|
40
|
-
//# sourceMappingURL=useCalcLayout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import isEqual from "lodash/isEqual.js";
|
|
3
|
-
import { getAllConfigItems } from "../shared/index.js";
|
|
4
|
-
function onUpdatePropsConfig(config, registerManager) {
|
|
5
|
-
const configItems = getAllConfigItems(config);
|
|
6
|
-
return config.layout.reduce((acc, itemLayout, i) => {
|
|
7
|
-
const item = configItems[i];
|
|
8
|
-
const foundItem = item && item.id === itemLayout.i
|
|
9
|
-
? item
|
|
10
|
-
: configItems.find((configItem) => configItem.id === itemLayout.i);
|
|
11
|
-
if (foundItem) {
|
|
12
|
-
acc.push(Object.assign(Object.assign({}, registerManager.getItem(foundItem.type).defaultLayout), itemLayout));
|
|
13
|
-
}
|
|
14
|
-
return acc;
|
|
15
|
-
}, []);
|
|
16
|
-
}
|
|
17
|
-
export const useCalcPropsLayout = (config, registerManager) => {
|
|
18
|
-
const [prevConfig, setPrevConfig] = React.useState(config);
|
|
19
|
-
const [layout, updateLayout] = React.useState(onUpdatePropsConfig(config, registerManager));
|
|
20
|
-
if (!isEqual(prevConfig.layout, config.layout)) {
|
|
21
|
-
setPrevConfig(config);
|
|
22
|
-
updateLayout(onUpdatePropsConfig(config, registerManager));
|
|
23
|
-
}
|
|
24
|
-
return layout;
|
|
25
|
-
};
|
|
26
|
-
// export const useManageLayout = (config: Config, registerManager: RegisterManager) => {
|
|
27
|
-
// const propsLayout = useCalcPropsLayout(config, registerManager);
|
|
28
|
-
// // так как мы не хотим хранить параметры виджета с активированной автовысотой в сторе и на сервере, актуальный
|
|
29
|
-
// // (видимый юзером в конкретный момент времени) лэйаут (массив объектов с данными о ширине, высоте,
|
|
30
|
-
// // расположении конкретного виджета на сетке) будет храниться в стейте, но, для того, чтобы в стор попадал
|
|
31
|
-
// // лэйаут без учета вижетов с активированной автовысотой, в момент "подстройки" высоты виджета значение h
|
|
32
|
-
// // (высота) из конфига будет запоминаться в originalLayouts, новое значение высоты в adjustedLayouts
|
|
33
|
-
// const [currentLayout, setCurrentLayout] = React.useState(propsLayout);
|
|
34
|
-
// };
|
|
35
|
-
//# sourceMappingURL=useCalcLayout.js.map
|