@ledvance/base 1.1.13 → 1.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/.prettierrc.js +0 -0
- package/package.json +1 -1
- package/src/api/native.ts +33 -0
- package/src/components/ColorsLine.tsx +48 -0
- package/src/components/MoodColorsLine.tsx +38 -0
- package/src/utils/Support.ts +85 -0
- package/src/utils/cctUtils.ts +111 -0
package/.prettierrc.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
package/src/api/native.ts
CHANGED
|
@@ -16,6 +16,8 @@ interface LDVDevicePanelManager {
|
|
|
16
16
|
formatNumber: (num: number, fixed: number) => string
|
|
17
17
|
getTimeZone: () => string
|
|
18
18
|
groupControl: (tyGroupId: number, dps: string, config: string) => Promise<NativeResult<any>>
|
|
19
|
+
getFeature: (deviceId: string, featureId: string, callback: (res: NativeResult<string>) => void) => void
|
|
20
|
+
putFeature: (deviceId: string, featureId: string, value: any, callback: (res: NativeResult<string>) => void) => void
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
const devicePanel: LDVDevicePanelManager = NativeModules.LDVDevicePanelManager
|
|
@@ -101,6 +103,37 @@ const setDps = <T>(deviceId: string, dps: any) => {
|
|
|
101
103
|
})
|
|
102
104
|
}
|
|
103
105
|
|
|
106
|
+
type GetFeatureResultType = (deviceId: string, featureId: string) => Promise<NativeResult<any>>;
|
|
107
|
+
type SetFeatureResultType = (
|
|
108
|
+
deviceId: string,
|
|
109
|
+
featureId: string,
|
|
110
|
+
value: any,
|
|
111
|
+
) => Promise<NativeResult<any>>;
|
|
112
|
+
|
|
113
|
+
export const getFeature: GetFeatureResultType = (deviceId: string, featureId: string) => {
|
|
114
|
+
return new Promise((resolve, _reject) => {
|
|
115
|
+
devicePanel.getFeature(deviceId, featureId, res => {
|
|
116
|
+
const result: NativeResult<any> = {
|
|
117
|
+
...res,
|
|
118
|
+
data: !!res.data ? JSON.parse(res.data).value : null,
|
|
119
|
+
}
|
|
120
|
+
resolve(result)
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export const putFeature: SetFeatureResultType = (
|
|
126
|
+
deviceId: string,
|
|
127
|
+
featureId: string,
|
|
128
|
+
value: any,
|
|
129
|
+
) => {
|
|
130
|
+
return new Promise((resolve, _reject) => {
|
|
131
|
+
devicePanel.putFeature(deviceId, featureId, JSON.stringify({ value }), res => {
|
|
132
|
+
resolve(res)
|
|
133
|
+
})
|
|
134
|
+
})
|
|
135
|
+
}
|
|
136
|
+
|
|
104
137
|
type DeleteDeviceResultType = (deviceId: string, isReset: boolean) => Promise<NativeResult<any>>
|
|
105
138
|
|
|
106
139
|
const deleteDevice: DeleteDeviceResultType = (deviceId: string, isReset: boolean) => {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { StyleProp, StyleSheet, View, ViewProps, ViewStyle } from 'react-native'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import { Utils } from 'tuya-panel-kit'
|
|
4
|
+
|
|
5
|
+
const cx = Utils.RatioUtils.convertX
|
|
6
|
+
|
|
7
|
+
interface ColorsLineProps extends ViewProps {
|
|
8
|
+
colors: string[]
|
|
9
|
+
nodeStyle?: StyleProp<ViewStyle>
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const ColorsLine = (props: ColorsLineProps) => {
|
|
13
|
+
return (
|
|
14
|
+
<View style={[styles.root, props.style]}>
|
|
15
|
+
{
|
|
16
|
+
props.colors.map((color, index) => {
|
|
17
|
+
return (
|
|
18
|
+
<View
|
|
19
|
+
key={`${index}`}
|
|
20
|
+
style={[
|
|
21
|
+
styles.colorNode,
|
|
22
|
+
{
|
|
23
|
+
backgroundColor: color,
|
|
24
|
+
marginStart: index === 0 ? 0 : cx(5),
|
|
25
|
+
},
|
|
26
|
+
props.nodeStyle,
|
|
27
|
+
]} />
|
|
28
|
+
)
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
</View>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const styles = StyleSheet.create({
|
|
36
|
+
root: {
|
|
37
|
+
flexDirection: 'row',
|
|
38
|
+
width: cx(295),
|
|
39
|
+
height: cx(24),
|
|
40
|
+
},
|
|
41
|
+
colorNode: {
|
|
42
|
+
flex: 1,
|
|
43
|
+
height: cx(24),
|
|
44
|
+
borderRadius: cx(8),
|
|
45
|
+
},
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
export default ColorsLine
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import LinearGradientLine from "./LinearGradientLine"
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import { Utils } from 'tuya-panel-kit'
|
|
4
|
+
import { StyleSheet } from 'react-native'
|
|
5
|
+
import ColorsLine from './ColorsLine'
|
|
6
|
+
|
|
7
|
+
const cx = Utils.RatioUtils.convertX
|
|
8
|
+
|
|
9
|
+
export type MoodColorsLineType = 'gradient' | 'separate'
|
|
10
|
+
|
|
11
|
+
interface MoodColorsLineProps {
|
|
12
|
+
width?: number
|
|
13
|
+
height?: number
|
|
14
|
+
type: MoodColorsLineType
|
|
15
|
+
colors: string[]
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default function MoodColorsLine(props: MoodColorsLineProps) {
|
|
19
|
+
const width = props.width || cx(295)
|
|
20
|
+
const height = props.height || cx(24)
|
|
21
|
+
if (props.type === 'separate' || props.colors.length < 2) {
|
|
22
|
+
return (<ColorsLine colors={props.colors} style={{ width, height }} />)
|
|
23
|
+
} else {
|
|
24
|
+
return (
|
|
25
|
+
<LinearGradientLine
|
|
26
|
+
width={width}
|
|
27
|
+
height={height}
|
|
28
|
+
style={styles.gradient}
|
|
29
|
+
colors={props.colors} />
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const styles = StyleSheet.create({
|
|
35
|
+
gradient: {
|
|
36
|
+
borderRadius: cx(8),
|
|
37
|
+
},
|
|
38
|
+
})
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// 判断是否是plug
|
|
2
|
+
export const isPlug = (dpCodes: Record<string,string>) =>{
|
|
3
|
+
return !!dpCodes.switch_1
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
// 玻璃灯:支持颜色和色温灯同时调节
|
|
7
|
+
export const isGlassRGBWLamp = (dpCodes: Record<string,string>) => {
|
|
8
|
+
return !!(
|
|
9
|
+
!dpCodes.mix_rgbcw &&
|
|
10
|
+
!dpCodes.temp_value &&
|
|
11
|
+
dpCodes.colour_data &&
|
|
12
|
+
dpCodes.bright_value
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
// 双灯泡吸顶灯:支持颜色和色温灯同时调节
|
|
16
|
+
export const isMixRGBWLamp = (dpCodes: Record<string,string>) => {
|
|
17
|
+
return !!(
|
|
18
|
+
dpCodes.mix_rgbcw &&
|
|
19
|
+
dpCodes.colour_data &&
|
|
20
|
+
dpCodes.temp_value &&
|
|
21
|
+
dpCodes.bright_value
|
|
22
|
+
);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// 支持调节:颜色/色温+亮度
|
|
26
|
+
export const isRGBWLamp = (dpCodes: Record<string,string>) => {
|
|
27
|
+
return !!(
|
|
28
|
+
!dpCodes.mix_rgbcw &&
|
|
29
|
+
dpCodes.colour_data &&
|
|
30
|
+
dpCodes.temp_value &&
|
|
31
|
+
dpCodes.bright_value
|
|
32
|
+
);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// 支持调节:颜色/单一色温亮度
|
|
36
|
+
export const isRGBLamp = (dpCodes: Record<string,string>) => {
|
|
37
|
+
return !!(
|
|
38
|
+
!dpCodes.mix_rgbcw &&
|
|
39
|
+
!dpCodes.temp_value &&
|
|
40
|
+
dpCodes.colour_data &&
|
|
41
|
+
dpCodes.bright_value
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// 支持调节:颜色
|
|
46
|
+
export const isOnlyRGBLamp = (dpCodes: Record<string,string>) => {
|
|
47
|
+
return !!(
|
|
48
|
+
!dpCodes.mix_rgbcw &&
|
|
49
|
+
!dpCodes.temp_value &&
|
|
50
|
+
!dpCodes.bright_value &&
|
|
51
|
+
dpCodes.colour_data
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
// 支持调节:色温+亮度
|
|
56
|
+
export const isTWLamp = (dpCodes: Record<string,string>) => {
|
|
57
|
+
return !!(
|
|
58
|
+
!dpCodes.mix_rgbcw &&
|
|
59
|
+
!dpCodes.colour_data &&
|
|
60
|
+
dpCodes.temp_value &&
|
|
61
|
+
dpCodes.bright_value
|
|
62
|
+
);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// 支持调节:单一色温亮度
|
|
66
|
+
export const isDIMLamp = (dpCodes: Record<string,string>) => {
|
|
67
|
+
return !!(
|
|
68
|
+
!dpCodes.mix_rgbcw &&
|
|
69
|
+
!dpCodes.colour_data &&
|
|
70
|
+
!dpCodes.temp_value &&
|
|
71
|
+
dpCodes.bright_value
|
|
72
|
+
);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// GARDOT灯具
|
|
76
|
+
export const isGARDOT = (dpCodes: Record<string,string>) => {
|
|
77
|
+
return !!(
|
|
78
|
+
dpCodes.switch_led &&
|
|
79
|
+
dpCodes.work_mode &&
|
|
80
|
+
dpCodes.colour_data &&
|
|
81
|
+
dpCodes.scene_data &&
|
|
82
|
+
dpCodes.countdown &&
|
|
83
|
+
dpCodes.control_data
|
|
84
|
+
);
|
|
85
|
+
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const ccts = {
|
|
2
|
+
"0": "rgb(254, 172, 91)",
|
|
3
|
+
"1": "rgb(254, 174, 94)",
|
|
4
|
+
"2": "rgb(253, 176, 97)",
|
|
5
|
+
"3": "rgb(253, 178, 101)",
|
|
6
|
+
"4": "rgb(253, 180, 105)",
|
|
7
|
+
"5": "rgb(253, 181, 109)",
|
|
8
|
+
"6": "rgb(252, 183, 112)",
|
|
9
|
+
"7": "rgb(252, 185, 116)",
|
|
10
|
+
"8": "rgb(252, 187, 120)",
|
|
11
|
+
"9": "rgb(252, 189, 123)",
|
|
12
|
+
"10": "rgb(251, 191, 127)",
|
|
13
|
+
"11": "rgb(251, 193, 131)",
|
|
14
|
+
"12": "rgb(251, 194, 134)",
|
|
15
|
+
"13": "rgb(251, 196, 138)",
|
|
16
|
+
"14": "rgb(250, 198, 142)",
|
|
17
|
+
"15": "rgb(250, 200, 146)",
|
|
18
|
+
"16": "rgb(250, 202, 149)",
|
|
19
|
+
"17": "rgb(250, 204, 153)",
|
|
20
|
+
"18": "rgb(249, 206, 157)",
|
|
21
|
+
"19": "rgb(249, 207, 160)",
|
|
22
|
+
"20": "rgb(249, 209, 164)",
|
|
23
|
+
"21": "rgb(249, 211, 167)",
|
|
24
|
+
"22": "rgb(250, 213, 170)",
|
|
25
|
+
"23": "rgb(250, 214, 173)",
|
|
26
|
+
"24": "rgb(250, 216, 176)",
|
|
27
|
+
"25": "rgb(250, 218, 179)",
|
|
28
|
+
"26": "rgb(251, 220, 182)",
|
|
29
|
+
"27": "rgb(251, 221, 185)",
|
|
30
|
+
"28": "rgb(251, 223, 188)",
|
|
31
|
+
"29": "rgb(251, 225, 191)",
|
|
32
|
+
"30": "rgb(252, 227, 194)",
|
|
33
|
+
"31": "rgb(252, 228, 197)",
|
|
34
|
+
"32": "rgb(252, 230, 199)",
|
|
35
|
+
"33": "rgb(252, 232, 203)",
|
|
36
|
+
"34": "rgb(253, 234, 206)",
|
|
37
|
+
"35": "rgb(253, 235, 209)",
|
|
38
|
+
"36": "rgb(253, 237, 211)",
|
|
39
|
+
"37": "rgb(253, 239, 214)",
|
|
40
|
+
"38": "rgb(254, 241, 217)",
|
|
41
|
+
"39": "rgb(254, 242, 220)",
|
|
42
|
+
"40": "rgb(254, 244, 223)",
|
|
43
|
+
"41": "rgb(254, 244, 224)",
|
|
44
|
+
"42": "rgb(254, 245, 225)",
|
|
45
|
+
"43": "rgb(254, 245, 226)",
|
|
46
|
+
"44": "rgb(254, 245, 227)",
|
|
47
|
+
"45": "rgb(253, 246, 228)",
|
|
48
|
+
"46": "rgb(253, 246, 229)",
|
|
49
|
+
"47": "rgb(253, 246, 230)",
|
|
50
|
+
"48": "rgb(253, 246, 231)",
|
|
51
|
+
"49": "rgb(253, 247, 232)",
|
|
52
|
+
"50": "rgb(253, 247, 233)",
|
|
53
|
+
"51": "rgb(253, 247, 234)",
|
|
54
|
+
"52": "rgb(253, 248, 234)",
|
|
55
|
+
"53": "rgb(253, 248, 235)",
|
|
56
|
+
"54": "rgb(253, 248, 236)",
|
|
57
|
+
"55": "rgb(252, 249, 237)",
|
|
58
|
+
"56": "rgb(252, 249, 238)",
|
|
59
|
+
"57": "rgb(252, 249, 239)",
|
|
60
|
+
"58": "rgb(252, 249, 240)",
|
|
61
|
+
"59": "rgb(252, 250, 241)",
|
|
62
|
+
"60": "rgb(252, 250, 242)",
|
|
63
|
+
"61": "rgb(251, 249, 242)",
|
|
64
|
+
"62": "rgb(249, 248, 243)",
|
|
65
|
+
"63": "rgb(248, 248, 243)",
|
|
66
|
+
"64": "rgb(247, 247, 243)",
|
|
67
|
+
"65": "rgb(246, 246, 243)",
|
|
68
|
+
"66": "rgb(244, 245, 244)",
|
|
69
|
+
"67": "rgb(243, 245, 244)",
|
|
70
|
+
"68": "rgb(241, 244, 244)",
|
|
71
|
+
"69": "rgb(240, 243, 245)",
|
|
72
|
+
"70": "rgb(239, 242, 245)",
|
|
73
|
+
"71": "rgb(238, 242, 245)",
|
|
74
|
+
"72": "rgb(236, 241, 246)",
|
|
75
|
+
"73": "rgb(235, 240, 246)",
|
|
76
|
+
"74": "rgb(234, 239, 246)",
|
|
77
|
+
"75": "rgb(232, 239, 247)",
|
|
78
|
+
"76": "rgb(231, 238, 247)",
|
|
79
|
+
"77": "rgb(230, 237, 247)",
|
|
80
|
+
"78": "rgb(228, 236, 247)",
|
|
81
|
+
"79": "rgb(227, 236, 248)",
|
|
82
|
+
"80": "rgb(226, 235, 248)",
|
|
83
|
+
"81": "rgb(224, 234, 248)",
|
|
84
|
+
"82": "rgb(223, 233, 249)",
|
|
85
|
+
"83": "rgb(221, 232, 249)",
|
|
86
|
+
"84": "rgb(219, 231, 249)",
|
|
87
|
+
"85": "rgb(218, 230, 250)",
|
|
88
|
+
"86": "rgb(216, 230, 250)",
|
|
89
|
+
"87": "rgb(215, 229, 250)",
|
|
90
|
+
"88": "rgb(213, 228, 250)",
|
|
91
|
+
"89": "rgb(212, 227, 251)",
|
|
92
|
+
"90": "rgb(210, 226, 251)",
|
|
93
|
+
"91": "rgb(208, 225, 251)",
|
|
94
|
+
"92": "rgb(207, 224, 252)",
|
|
95
|
+
"93": "rgb(205, 223, 252)",
|
|
96
|
+
"94": "rgb(203, 222, 252)",
|
|
97
|
+
"95": "rgb(202, 221, 253)",
|
|
98
|
+
"96": "rgb(200, 221, 253)",
|
|
99
|
+
"97": "rgb(199, 220, 253)",
|
|
100
|
+
"98": "rgb(197, 219, 253)",
|
|
101
|
+
"99": "rgb(196, 218, 254)",
|
|
102
|
+
"100": "rgb(194, 217, 254)"
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const cctToColor = (key: string | number, brightness?: string | number) => {
|
|
106
|
+
let color = ccts[String(key)]
|
|
107
|
+
if (color && (brightness || brightness === 0)) {
|
|
108
|
+
color = Number(brightness) === 0 ? 'rgb(0,0,0)' : `rgba(${color.slice(4, -1)}, ${Number(brightness) / 100 < 0.1 ? 0.1 : Number(brightness) / 100})`
|
|
109
|
+
}
|
|
110
|
+
return color
|
|
111
|
+
}
|