forked from alibaba/lowcode-engine
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathutils.ts
More file actions
59 lines (57 loc) · 1.29 KB
/
utils.ts
File metadata and controls
59 lines (57 loc) · 1.29 KB
1
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { IPublicTypeIconType, IPublicTypeTitleContent, TipContent } from '@felce/lowcode-types';
import { isI18nData, isTitleConfig } from '@felce/lowcode-utils';
import { isValidElement } from 'react';
export function composeTitle(
title?: IPublicTypeTitleContent,
icon?: IPublicTypeIconType,
tip?: TipContent,
tipAsTitle?: boolean,
noIcon?: boolean,
) {
let _title: IPublicTypeTitleContent | undefined;
if (!title) {
_title = {};
if (!icon || tipAsTitle) {
_title = {
label: tip,
};
tip = undefined;
}
} else {
_title = title;
}
if (icon || tip) {
if (typeof _title !== 'object' || isValidElement(_title) || isI18nData(_title)) {
if (isValidElement(_title)) {
if (_title.type === 'svg' || _title.type.getIcon) {
if (!icon) {
icon = _title;
}
if (tipAsTitle) {
_title = tip;
tip = null;
} else {
_title = undefined;
}
}
}
_title = {
label: _title,
icon,
tip,
};
} else {
_title = {
..._title,
icon,
tip,
};
}
}
if (isTitleConfig(_title) && noIcon) {
if (!isValidElement(_title)) {
_title.icon = undefined;
}
}
return _title;
}