@seamapi/react 3.1.1 → 4.0.0-beta.1

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.
Files changed (138) hide show
  1. package/README.md +2 -2
  2. package/dist/elements.js +9897 -10374
  3. package/dist/elements.js.map +1 -1
  4. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.d.ts +1 -1
  5. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +3 -3
  6. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
  7. package/lib/seam/components/AccessCodeTable/AccessCodeTable.d.ts +1 -1
  8. package/lib/seam/components/AccessCodeTable/AccessCodeTable.js +4 -4
  9. package/lib/seam/components/AccessCodeTable/AccessCodeTable.js.map +1 -1
  10. package/lib/seam/components/DeviceDetails/DeviceDetails.d.ts +1 -1
  11. package/lib/seam/components/DeviceDetails/DeviceDetails.js +1 -2
  12. package/lib/seam/components/DeviceDetails/DeviceDetails.js.map +1 -1
  13. package/lib/seam/components/DeviceDetails/LockDeviceDetails.d.ts +1 -1
  14. package/lib/seam/components/DeviceDetails/LockDeviceDetails.js +2 -2
  15. package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
  16. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.d.ts +1 -1
  17. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +2 -40
  18. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
  19. package/lib/seam/components/DeviceTable/DeviceTable.d.ts +1 -1
  20. package/lib/seam/components/DeviceTable/DeviceTable.js +2 -2
  21. package/lib/seam/components/DeviceTable/DeviceTable.js.map +1 -1
  22. package/lib/seam/components/common-props.d.ts +0 -1
  23. package/lib/seam/components/common-props.js.map +1 -1
  24. package/lib/seam/components/index.d.ts +0 -2
  25. package/lib/seam/components/index.js +0 -2
  26. package/lib/seam/components/index.js.map +1 -1
  27. package/lib/seam/index.d.ts +0 -2
  28. package/lib/seam/index.js +0 -2
  29. package/lib/seam/index.js.map +1 -1
  30. package/lib/ui/AccessCodeForm/AccessCodeForm.js +3 -3
  31. package/lib/ui/AccessCodeForm/AccessCodeForm.js.map +1 -1
  32. package/lib/ui/thermostat/FanModeMenu.js +1 -0
  33. package/lib/ui/thermostat/FanModeMenu.js.map +1 -1
  34. package/lib/version.d.ts +1 -1
  35. package/lib/version.js +1 -1
  36. package/lib/version.js.map +1 -1
  37. package/package.json +3 -3
  38. package/src/lib/element.tsx +0 -1
  39. package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +0 -3
  40. package/src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx +0 -4
  41. package/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx +0 -2
  42. package/src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx +0 -2
  43. package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +0 -137
  44. package/src/lib/seam/components/DeviceTable/DeviceTable.tsx +0 -2
  45. package/src/lib/seam/components/common-props.tsx +0 -1
  46. package/src/lib/seam/components/elements.ts +0 -2
  47. package/src/lib/seam/components/index.ts +0 -2
  48. package/src/lib/seam/index.ts +0 -2
  49. package/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx +3 -4
  50. package/src/lib/ui/thermostat/FanModeMenu.tsx +1 -0
  51. package/src/lib/version.ts +1 -1
  52. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.d.ts +0 -7
  53. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +0 -43
  54. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +0 -1
  55. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.d.ts +0 -7
  56. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js +0 -55
  57. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +0 -1
  58. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.d.ts +0 -5
  59. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +0 -31
  60. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +0 -1
  61. package/lib/seam/components/ClimateSettingScheduleDetails/dates.d.ts +0 -1
  62. package/lib/seam/components/ClimateSettingScheduleDetails/dates.js +0 -9
  63. package/lib/seam/components/ClimateSettingScheduleDetails/dates.js.map +0 -1
  64. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.d.ts +0 -8
  65. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js +0 -10
  66. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js.map +0 -1
  67. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.d.ts +0 -5
  68. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js +0 -28
  69. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +0 -1
  70. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.d.ts +0 -14
  71. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js +0 -80
  72. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js.map +0 -1
  73. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.d.ts +0 -5
  74. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js +0 -29
  75. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js.map +0 -1
  76. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.d.ts +0 -6
  77. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js +0 -16
  78. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js.map +0 -1
  79. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.d.ts +0 -6
  80. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js +0 -28
  81. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js.map +0 -1
  82. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.d.ts +0 -7
  83. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js +0 -25
  84. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js.map +0 -1
  85. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.d.ts +0 -6
  86. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js +0 -27
  87. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js.map +0 -1
  88. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.d.ts +0 -6
  89. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js +0 -46
  90. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js.map +0 -1
  91. package/lib/seam/thermostats/use-update-thermostat.d.ts +0 -6
  92. package/lib/seam/thermostats/use-update-thermostat.js +0 -51
  93. package/lib/seam/thermostats/use-update-thermostat.js.map +0 -1
  94. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.d.ts +0 -32
  95. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js +0 -85
  96. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js.map +0 -1
  97. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.d.ts +0 -13
  98. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js +0 -44
  99. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js.map +0 -1
  100. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.d.ts +0 -10
  101. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js +0 -24
  102. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js.map +0 -1
  103. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.d.ts +0 -10
  104. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js +0 -10
  105. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.js.map +0 -1
  106. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.d.ts +0 -15
  107. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js +0 -30
  108. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.js.map +0 -1
  109. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.d.ts +0 -9
  110. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js +0 -16
  111. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.js.map +0 -1
  112. package/lib/ui/ClimateSettingForm/set-point-bounds.d.ts +0 -4
  113. package/lib/ui/ClimateSettingForm/set-point-bounds.js +0 -17
  114. package/lib/ui/ClimateSettingForm/set-point-bounds.js.map +0 -1
  115. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +0 -107
  116. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.element.ts +0 -11
  117. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +0 -175
  118. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +0 -72
  119. package/src/lib/seam/components/ClimateSettingScheduleDetails/dates.ts +0 -10
  120. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.tsx +0 -35
  121. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx +0 -60
  122. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.element.ts +0 -17
  123. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx +0 -220
  124. package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.element.ts +0 -9
  125. package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx +0 -56
  126. package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.ts +0 -34
  127. package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.ts +0 -53
  128. package/src/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.ts +0 -53
  129. package/src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts +0 -51
  130. package/src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts +0 -83
  131. package/src/lib/seam/thermostats/use-update-thermostat.ts +0 -90
  132. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx +0 -189
  133. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx +0 -118
  134. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.tsx +0 -79
  135. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.tsx +0 -36
  136. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.tsx +0 -120
  137. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.tsx +0 -43
  138. package/src/lib/ui/ClimateSettingForm/set-point-bounds.ts +0 -31
@@ -1,79 +0,0 @@
1
- import { useState } from 'react'
2
-
3
- import { useDevice } from 'lib/seam/devices/use-device.js'
4
- import type { HvacModeSetting } from 'lib/seam/thermostats/thermostat-device.js'
5
- import { Button } from 'lib/ui/Button.js'
6
- import { InputLabel } from 'lib/ui/InputLabel.js'
7
- import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
8
- import { ClimateSettingControlGroup } from 'lib/ui/thermostat/ClimateSettingControlGroup.js'
9
-
10
- interface ClimateSettingScheduleFormDefaultClimateSettingProps {
11
- title: string
12
- deviceId: string
13
- onBack: () => void
14
- onCancel: (() => void) | undefined
15
- onSave: () => void
16
- }
17
-
18
- export function ClimateSettingScheduleFormDefaultClimateSetting({
19
- title,
20
- deviceId,
21
- onBack,
22
- onCancel,
23
- onSave,
24
- }: ClimateSettingScheduleFormDefaultClimateSettingProps): JSX.Element {
25
- const { device } = useDevice({
26
- device_id: deviceId,
27
- })
28
-
29
- const [mode, setMode] = useState<HvacModeSetting>('heat_cool')
30
- const [heatValue, setHeatValue] = useState(70)
31
- const [coolValue, setCoolValue] = useState(75)
32
-
33
- return (
34
- <>
35
- <ContentHeader
36
- title={title}
37
- onBack={onBack}
38
- subheading={device?.properties.name}
39
- />
40
- <div className='seam-main'>
41
- <div className='seam-climate-setting-schedule-form-default-climate-setting'>
42
- <div className='seam-content'>
43
- <div className='seam-default-climate-setting-message'>
44
- <p>{t.defaultClimateMessage}</p>
45
- </div>
46
- <div className='seam-control-group-title'>
47
- <InputLabel>{t.defaultClimate}</InputLabel>
48
- <span className='seam-label'>{t.defautClimateSubHeading}</span>
49
- </div>
50
- <ClimateSettingControlGroup
51
- mode={mode}
52
- onModeChange={setMode}
53
- heatValue={heatValue}
54
- onHeatValueChange={setHeatValue}
55
- coolValue={coolValue}
56
- onCoolValueChange={setCoolValue}
57
- />
58
- </div>
59
- </div>
60
- <div className='seam-actions'>
61
- <Button onClick={onCancel}>{t.cancel}</Button>
62
- <Button variant='solid' onClick={onSave}>
63
- {t.save}
64
- </Button>
65
- </div>
66
- </div>
67
- </>
68
- )
69
- }
70
-
71
- const t = {
72
- defaultClimate: 'Default Climate',
73
- defautClimateSubHeading:
74
- 'Choose the default mode and climate for this device',
75
- defaultClimateMessage:
76
- 'This device doesn’t have a default climate set up yet. Choose the climate you’d like the device to fall back to after scheduled climates reach their ends.',
77
- cancel: 'Cancel',
78
- save: 'Save',
79
- }
@@ -1,36 +0,0 @@
1
- import { type Control, Controller } from 'react-hook-form'
2
-
3
- import type { ClimateSettingScheduleFormFields } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js'
4
- import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
5
- import { ThermostatSelect } from 'lib/ui/thermostat/ThermostatSelect.js'
6
-
7
- interface ClimateSettingScheduleFormDeviceSelectProps {
8
- title: string
9
- control: Control<ClimateSettingScheduleFormFields>
10
- onBack: (() => void) | undefined
11
- }
12
-
13
- export function ClimateSettingScheduleFormDeviceSelect({
14
- title,
15
- control,
16
- onBack,
17
- }: ClimateSettingScheduleFormDeviceSelectProps): JSX.Element {
18
- return (
19
- <>
20
- <ContentHeader title={title} onBack={onBack} />
21
- <div className='seam-main'>
22
- <Controller
23
- name='deviceId'
24
- control={control}
25
- render={({ field: { onChange } }) => (
26
- <ThermostatSelect
27
- onSelect={(deviceId) => {
28
- onChange(deviceId)
29
- }}
30
- />
31
- )}
32
- />
33
- </div>
34
- </>
35
- )
36
- }
@@ -1,120 +0,0 @@
1
- import { type Control, Controller } from 'react-hook-form'
2
-
3
- import { formatTimeZone } from 'lib/dates.js'
4
- import { ChevronRightIcon } from 'lib/icons/ChevronRight.js'
5
- import { useDevice } from 'lib/seam/devices/use-device.js'
6
- import { Button } from 'lib/ui/Button.js'
7
- import type { ClimateSettingScheduleFormFields } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js'
8
- import { DateTimePicker } from 'lib/ui/DateTimePicker/DateTimePicker.js'
9
- import { FormField } from 'lib/ui/FormField.js'
10
- import { InputLabel } from 'lib/ui/InputLabel.js'
11
- import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
12
- import { TextField } from 'lib/ui/TextField/TextField.js'
13
-
14
- interface ClimateSettingScheduleFormNameAndScheduleProps {
15
- title: string
16
- control: Control<ClimateSettingScheduleFormFields>
17
- deviceId: string
18
- timeZone: string
19
- onBack: () => void
20
- onCancel: (() => void) | undefined
21
- onNext: () => void
22
- onChangeTimeZone: () => void
23
- }
24
-
25
- export function ClimateSettingScheduleFormNameAndSchedule({
26
- title,
27
- control,
28
- deviceId,
29
- timeZone,
30
- onBack,
31
- onCancel,
32
- onNext,
33
- onChangeTimeZone,
34
- }: ClimateSettingScheduleFormNameAndScheduleProps): JSX.Element {
35
- const { device } = useDevice({
36
- device_id: deviceId,
37
- })
38
-
39
- return (
40
- <>
41
- <ContentHeader
42
- title={title}
43
- onBack={onBack}
44
- subheading={device?.properties.name}
45
- />
46
- <div className='seam-main'>
47
- <div className='seam-climate-setting-schedule-form-name-and-schedule'>
48
- <div className='seam-content'>
49
- <FormField>
50
- <InputLabel>{t.nameInputLabel}</InputLabel>
51
- <Controller
52
- name='name'
53
- control={control}
54
- defaultValue=''
55
- render={({ field, fieldState: { invalid, error } }) => {
56
- return (
57
- <TextField
58
- {...field}
59
- size='large'
60
- clearable
61
- hasError={invalid}
62
- helperText={error?.message}
63
- />
64
- )
65
- }}
66
- />
67
- </FormField>
68
-
69
- <FormField>
70
- <InputLabel>{t.startTimeLabel}</InputLabel>
71
- <div className='seam-time-zone'>
72
- <span className='seam-label'>{t.selectedTimeZoneLabel}</span>
73
- <span className='seam-selected' onClick={onChangeTimeZone}>
74
- {formatTimeZone(timeZone)}
75
- <ChevronRightIcon />
76
- </span>
77
- </div>
78
- <Controller
79
- name='startDate'
80
- control={control}
81
- defaultValue=''
82
- render={({ field }) => (
83
- <DateTimePicker {...field} size='large' />
84
- )}
85
- />
86
- </FormField>
87
- <FormField>
88
- <InputLabel>{t.endTimeLabel}</InputLabel>
89
- <Controller
90
- name='endDate'
91
- control={control}
92
- defaultValue=''
93
- render={({ field }) => (
94
- <DateTimePicker {...field} size='large' />
95
- )}
96
- />
97
- </FormField>
98
- </div>
99
- </div>
100
- <div className='seam-actions'>
101
- <Button onClick={onCancel}>{t.cancel}</Button>
102
- <Button variant='solid' onClick={onNext}>
103
- {t.next}
104
- </Button>
105
- </div>
106
- </div>
107
- </>
108
- )
109
- }
110
-
111
- const t = {
112
- nameInputLabel: 'Name the climate setting schedule',
113
- startTimeLabel: 'Start time',
114
- endTimeLabel: 'End time',
115
- addNewClimateSettingSchedule: 'Add a climate setting schedule',
116
- cancel: 'Cancel',
117
- save: 'Save',
118
- next: 'Next',
119
- selectedTimeZoneLabel: 'All times in',
120
- }
@@ -1,43 +0,0 @@
1
- import { useState } from 'react'
2
- import { type Control, Controller } from 'react-hook-form'
3
-
4
- import type { ClimateSettingScheduleFormFields } from 'lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js'
5
- import { ContentHeader } from 'lib/ui/layout/ContentHeader.js'
6
- import { TimeZonePicker } from 'lib/ui/TimeZonePicker/TimeZonePicker.js'
7
-
8
- interface ClimateSettingScheduleFormTimeZonePickerProps {
9
- control: Control<ClimateSettingScheduleFormFields>
10
- onClose: () => void
11
- }
12
-
13
- export function ClimateSettingScheduleFormTimeZonePicker({
14
- control,
15
- onClose,
16
- }: ClimateSettingScheduleFormTimeZonePickerProps): JSX.Element {
17
- const [title, setTitle] = useState(t.titleAuto)
18
-
19
- return (
20
- <>
21
- <ContentHeader title={title} onBack={onClose} />
22
- <div className='seam-main'>
23
- <Controller
24
- name='timeZone'
25
- control={control}
26
- render={({ field }) => (
27
- <TimeZonePicker
28
- {...field}
29
- onManualTimeZoneSelected={(manualTimeZoneSelected) => {
30
- setTitle(manualTimeZoneSelected ? t.titleManual : t.titleAuto)
31
- }}
32
- />
33
- )}
34
- />
35
- </div>
36
- </>
37
- )
38
- }
39
-
40
- const t = {
41
- titleAuto: 'Time Zone (automatic)',
42
- titleManual: 'Time Zone (manual)',
43
- }
@@ -1,31 +0,0 @@
1
- import type { ThermostatDevice } from 'lib/seam/thermostats/thermostat-device.js'
2
- import type { TemperatureControlGroupProps } from 'lib/ui/thermostat/TemperatureControlGroup.js'
3
-
4
- export type SetPointBounds = Partial<
5
- Pick<
6
- TemperatureControlGroupProps,
7
- 'minCool' | 'maxCool' | 'minHeat' | 'maxHeat' | 'delta'
8
- >
9
- >
10
-
11
- export const getSetPointBounds = (device: ThermostatDevice): SetPointBounds => {
12
- const { properties } = device
13
-
14
- const setPointBounds: SetPointBounds = {}
15
-
16
- if (properties.available_hvac_mode_settings.includes('cool')) {
17
- setPointBounds.minCool = properties.min_cooling_set_point_fahrenheit
18
- setPointBounds.maxCool = properties.max_cooling_set_point_fahrenheit
19
- }
20
-
21
- if (properties.available_hvac_mode_settings.includes('heat')) {
22
- setPointBounds.minHeat = properties.min_heating_set_point_fahrenheit
23
- setPointBounds.maxHeat = properties.max_heating_set_point_fahrenheit
24
- }
25
-
26
- if (properties.available_hvac_mode_settings.includes('heat_cool')) {
27
- setPointBounds.delta = properties.min_heating_cooling_delta_fahrenheit
28
- }
29
-
30
- return setPointBounds
31
- }