km-card-layout-core 0.1.11 → 0.1.14
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/bindings.ts +84 -0
- package/data.ts +38 -0
- package/dist/bindings.js +73 -0
- package/dist/data.js +38 -0
- package/dist/helpers.js +72 -0
- package/dist/index.js +15 -392
- package/dist/layout.js +117 -0
- package/dist/ops/changeBackground.js +142 -0
- package/dist/render/builder.js +209 -0
- package/dist/utils.js +36 -129
- package/helpers.ts +76 -0
- package/index.ts +21 -511
- package/interface/data/payload.ts +1 -0
- package/layout.ts +129 -0
- package/ops/changeBackground.ts +179 -0
- package/package.json +1 -1
- package/render/builder.ts +287 -0
- package/types.d.ts +97 -7
- package/utils.ts +44 -141
package/utils.ts
CHANGED
|
@@ -1,141 +1,44 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
...el,
|
|
46
|
-
children: traverse(el.children || []),
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return applySpecialColor(el);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
...layout,
|
|
54
|
-
backgroundImage: bg.imgUrl,
|
|
55
|
-
fontColor: bg.fontColor || layout.fontColor,
|
|
56
|
-
children: traverse(layout.children || []),
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function stripLayoutBindings(
|
|
61
|
-
layouts: CardLayoutSchema[] = []
|
|
62
|
-
): CardLayoutSchema[] {
|
|
63
|
-
const targetLayouts = Array.isArray(layouts) ? layouts : [];
|
|
64
|
-
const stripElement = (el: CardElement): CardElement => {
|
|
65
|
-
const { binding: _b, defaultValue: _d, ...rest } = el as any;
|
|
66
|
-
if (el.type === 'layout-panel') {
|
|
67
|
-
return {
|
|
68
|
-
...rest,
|
|
69
|
-
children: (el.children || []).map(stripElement),
|
|
70
|
-
} as CardElement;
|
|
71
|
-
}
|
|
72
|
-
return rest as CardElement;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
return targetLayouts.map(layout => ({
|
|
76
|
-
...layout,
|
|
77
|
-
children: (layout.children || []).map(stripElement),
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* 应用元素数据绑定字段
|
|
83
|
-
* @param layouts 布局
|
|
84
|
-
* @param items 绑定元素数据
|
|
85
|
-
* @returns
|
|
86
|
-
*/
|
|
87
|
-
export function applyItemCollectBindings(
|
|
88
|
-
layouts: CardLayoutSchema[] = [],
|
|
89
|
-
items: TemplateItem[] = []
|
|
90
|
-
): CardLayoutSchema[] {
|
|
91
|
-
const targetLayouts = Array.isArray(layouts) ? layouts : [];
|
|
92
|
-
const metaMap = new Map<string, TemplateItem>();
|
|
93
|
-
const metaList = Array.isArray(items) ? items : [];
|
|
94
|
-
metaList.forEach(item => {
|
|
95
|
-
if (item && item.id !== undefined && item.id !== null) {
|
|
96
|
-
metaMap.set(String(item.id), item);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
const assignBinding = (el: CardElement): CardElement => {
|
|
101
|
-
const meta = metaMap.get(String(el.id));
|
|
102
|
-
const binding =
|
|
103
|
-
meta && meta.bind !== undefined && meta.bind !== null
|
|
104
|
-
? meta.bind
|
|
105
|
-
: el.binding;
|
|
106
|
-
const defaultValue =
|
|
107
|
-
meta && meta.default !== undefined ? meta.default : el.defaultValue;
|
|
108
|
-
const key = meta && meta.key !== undefined ? meta.key : el.key;
|
|
109
|
-
const base: any = { ...el };
|
|
110
|
-
if (binding !== undefined) base.binding = binding;
|
|
111
|
-
else delete base.binding;
|
|
112
|
-
if (defaultValue !== undefined) base.defaultValue = defaultValue;
|
|
113
|
-
else delete base.defaultValue;
|
|
114
|
-
if (key !== undefined) base.key = key;
|
|
115
|
-
else delete base.key;
|
|
116
|
-
|
|
117
|
-
if (el.type === 'layout-panel') {
|
|
118
|
-
return {
|
|
119
|
-
...base,
|
|
120
|
-
children: (el.children || []).map(assignBinding),
|
|
121
|
-
} as CardElement;
|
|
122
|
-
}
|
|
123
|
-
return base as CardElement;
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
return targetLayouts.map(layout => ({
|
|
127
|
-
...layout,
|
|
128
|
-
children: (layout.children || []).map(assignBinding),
|
|
129
|
-
}));
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export function getTemplateItems(ids: string, items: TemplateItem[]) {
|
|
133
|
-
const idArray = ids.split(',').map(id => id.trim());
|
|
134
|
-
return items.filter(item => idArray.includes(String(item.id)));
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
export function getTemplateBackgrounds(ids: string, items: TemplateBackground[]){
|
|
139
|
-
const idArray = ids.split(',').map(id => id.trim());
|
|
140
|
-
return items.filter(item => idArray.includes(String(item.id)));
|
|
141
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
applyItemCollectBindings,
|
|
3
|
+
backgroundChange,
|
|
4
|
+
CardLayoutSchema,
|
|
5
|
+
TemplateBackground,
|
|
6
|
+
TemplateItem,
|
|
7
|
+
} from 'km-card-layout-core';
|
|
8
|
+
import { setElementVisible } from './ops/changeBackground';
|
|
9
|
+
|
|
10
|
+
export * from './bindings';
|
|
11
|
+
export {
|
|
12
|
+
backgroundChange,
|
|
13
|
+
applySpecialStyle,
|
|
14
|
+
applyBackground,
|
|
15
|
+
updateElementsStyle,
|
|
16
|
+
resolveSpecialStyle,
|
|
17
|
+
DEFAULT_DECOR_COLOR,
|
|
18
|
+
} from './ops/changeBackground';
|
|
19
|
+
|
|
20
|
+
export type Config = {
|
|
21
|
+
showAvatar: boolean;
|
|
22
|
+
showLogo: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 当前背景 (0 为正面背景 1 为背面背景)
|
|
25
|
+
*/
|
|
26
|
+
currentBg: TemplateBackground[];
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
export const buildRenderData = (
|
|
31
|
+
layout: CardLayoutSchema[],
|
|
32
|
+
items: TemplateItem[],
|
|
33
|
+
dataInput: Record<string, any>,
|
|
34
|
+
config: Config
|
|
35
|
+
): CardLayoutSchema[] => {
|
|
36
|
+
// 绑定数据
|
|
37
|
+
let renderLayout = applyItemCollectBindings(layout, items);
|
|
38
|
+
// 设置显示逻辑
|
|
39
|
+
renderLayout = setElementVisible(renderLayout, 'avatar', config.showAvatar);
|
|
40
|
+
renderLayout = setElementVisible(renderLayout, 'logo', config.showLogo);
|
|
41
|
+
// 设置背景
|
|
42
|
+
renderLayout = renderLayout.map((la,index) => backgroundChange(config.currentBg[index], la));
|
|
43
|
+
return renderLayout;
|
|
44
|
+
};
|