-
-
Notifications
You must be signed in to change notification settings - Fork 9.7k
/
utils.ts
42 lines (38 loc) · 1000 Bytes
/
utils.ts
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
export function isObject(o) {
return (
typeof o === 'object' &&
o !== null &&
o.constructor &&
Object.prototype.toString.call(o).slice(8, -1) === 'Object'
);
}
export function extend(target, src) {
Object.keys(src).forEach((key) => {
if (typeof target[key] === 'undefined') {
target[key] = src[key];
return;
}
if (target[key] && !src[key]) {
return;
}
if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {
extend(target[key], src[key]);
} else {
target[key] = src[key];
}
});
}
export function coerceBooleanProperty(value: any): boolean {
return value != null && `${value}` !== 'false';
}
export const ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];
export function setProperty(val, obj = {}) {
if (isObject(val)) {
return val;
}
const newValue = coerceBooleanProperty(val);
if (newValue === true) {
return obj;
}
return newValue;
}