@seamapi/react 2.20.0 → 3.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 (402) hide show
  1. package/README.md +4 -4
  2. package/dist/elements.js +19676 -25734
  3. package/dist/elements.js.map +1 -1
  4. package/lib/object.d.ts +5 -0
  5. package/lib/object.js +14 -0
  6. package/lib/object.js.map +1 -0
  7. package/lib/seam/SeamProvider.d.ts +5 -4
  8. package/lib/seam/SeamProvider.js.map +1 -1
  9. package/lib/seam/access-codes/use-access-code.d.ts +3 -2
  10. package/lib/seam/access-codes/use-access-code.js +2 -3
  11. package/lib/seam/access-codes/use-access-code.js.map +1 -1
  12. package/lib/seam/access-codes/use-access-codes.d.ts +3 -2
  13. package/lib/seam/access-codes/use-access-codes.js +3 -5
  14. package/lib/seam/access-codes/use-access-codes.js.map +1 -1
  15. package/lib/seam/access-codes/use-create-access-code.d.ts +4 -3
  16. package/lib/seam/access-codes/use-create-access-code.js +5 -4
  17. package/lib/seam/access-codes/use-create-access-code.js.map +1 -1
  18. package/lib/seam/access-codes/use-delete-access-code.d.ts +4 -6
  19. package/lib/seam/access-codes/use-delete-access-code.js +10 -8
  20. package/lib/seam/access-codes/use-delete-access-code.js.map +1 -1
  21. package/lib/seam/access-codes/use-generate-access-code-code.d.ts +4 -4
  22. package/lib/seam/access-codes/use-generate-access-code-code.js +3 -2
  23. package/lib/seam/access-codes/use-generate-access-code-code.js.map +1 -1
  24. package/lib/seam/access-codes/use-update-access-code.d.ts +4 -4
  25. package/lib/seam/access-codes/use-update-access-code.js +9 -7
  26. package/lib/seam/access-codes/use-update-access-code.js.map +1 -1
  27. package/lib/seam/client-sessions/use-client-session.d.ts +1 -1
  28. package/lib/seam/client-sessions/use-client-session.js +1 -1
  29. package/lib/seam/client-sessions/use-client-session.js.map +1 -1
  30. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.d.ts +1 -1
  31. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js +14 -6
  32. package/lib/seam/components/AccessCodeDetails/AccessCodeDetails.js.map +1 -1
  33. package/lib/seam/components/AccessCodeDetails/AccessCodeDevice.d.ts +1 -1
  34. package/lib/seam/components/AccessCodeDetails/AccessCodeDevice.js +9 -6
  35. package/lib/seam/components/AccessCodeDetails/AccessCodeDevice.js.map +1 -1
  36. package/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.d.ts +3 -4
  37. package/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.js.map +1 -1
  38. package/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.d.ts +3 -3
  39. package/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.js.map +1 -1
  40. package/lib/seam/components/AccessCodeTable/AccessCodeMenu.d.ts +3 -3
  41. package/lib/seam/components/AccessCodeTable/AccessCodeMenu.js +1 -1
  42. package/lib/seam/components/AccessCodeTable/AccessCodeMenu.js.map +1 -1
  43. package/lib/seam/components/AccessCodeTable/AccessCodeRow.d.ts +3 -3
  44. package/lib/seam/components/AccessCodeTable/AccessCodeRow.js.map +1 -1
  45. package/lib/seam/components/AccessCodeTable/AccessCodeTable.d.ts +2 -4
  46. package/lib/seam/components/AccessCodeTable/AccessCodeTable.js +1 -1
  47. package/lib/seam/components/AccessCodeTable/AccessCodeTable.js.map +1 -1
  48. package/lib/seam/components/AccessCodeTable/CodeDetails.d.ts +2 -2
  49. package/lib/seam/components/AccessCodeTable/CodeDetails.js +5 -2
  50. package/lib/seam/components/AccessCodeTable/CodeDetails.js.map +1 -1
  51. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.d.ts +1 -1
  52. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js +3 -1
  53. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.js.map +1 -1
  54. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.d.ts +1 -1
  55. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js +3 -1
  56. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.js.map +1 -1
  57. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.d.ts +1 -1
  58. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js +3 -3
  59. package/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.js.map +1 -1
  60. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.d.ts +3 -3
  61. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.js.map +1 -1
  62. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.d.ts +2 -2
  63. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.js.map +1 -1
  64. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.d.ts +2 -2
  65. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js +1 -1
  66. package/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.js.map +1 -1
  67. package/lib/seam/components/ConnectAccountButton/ConnectAccountButton.d.ts +1 -1
  68. package/lib/seam/components/ConnectAccountButton/ConnectAccountButton.js +2 -2
  69. package/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.d.ts +3 -3
  70. package/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.js +12 -9
  71. package/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.js.map +1 -1
  72. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.d.ts +1 -1
  73. package/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.js +1 -1
  74. package/lib/seam/components/DeviceDetails/DeviceDetails.d.ts +1 -1
  75. package/lib/seam/components/DeviceDetails/DeviceDetails.js +3 -1
  76. package/lib/seam/components/DeviceDetails/DeviceDetails.js.map +1 -1
  77. package/lib/seam/components/DeviceDetails/DeviceInfo.d.ts +3 -3
  78. package/lib/seam/components/DeviceDetails/DeviceInfo.js +3 -1
  79. package/lib/seam/components/DeviceDetails/DeviceInfo.js.map +1 -1
  80. package/lib/seam/components/DeviceDetails/DeviceModel.d.ts +3 -3
  81. package/lib/seam/components/DeviceDetails/LockDeviceDetails.d.ts +2 -2
  82. package/lib/seam/components/DeviceDetails/LockDeviceDetails.js +5 -5
  83. package/lib/seam/components/DeviceDetails/LockDeviceDetails.js.map +1 -1
  84. package/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.d.ts +2 -2
  85. package/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.js.map +1 -1
  86. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.d.ts +2 -2
  87. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js +3 -3
  88. package/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.js.map +1 -1
  89. package/lib/seam/components/DeviceTable/DeviceHealthBar.d.ts +3 -4
  90. package/lib/seam/components/DeviceTable/DeviceHealthBar.js.map +1 -1
  91. package/lib/seam/components/DeviceTable/DeviceRow.d.ts +4 -3
  92. package/lib/seam/components/DeviceTable/DeviceRow.js +2 -2
  93. package/lib/seam/components/DeviceTable/DeviceRow.js.map +1 -1
  94. package/lib/seam/components/DeviceTable/DeviceTable.d.ts +3 -6
  95. package/lib/seam/components/DeviceTable/DeviceTable.js +4 -2
  96. package/lib/seam/components/DeviceTable/DeviceTable.js.map +1 -1
  97. package/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.d.ts +1 -1
  98. package/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js +2 -2
  99. package/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.js.map +1 -1
  100. package/lib/seam/components/SupportedDeviceTable/FilterCategoryMenu.d.ts +1 -1
  101. package/lib/seam/components/SupportedDeviceTable/HiddenDevicesOverlay.d.ts +1 -1
  102. package/lib/seam/components/SupportedDeviceTable/ShowAllDevicesButton.d.ts +1 -1
  103. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.d.ts +1 -1
  104. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.js +2 -2
  105. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.js.map +1 -1
  106. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContentRows.d.ts +3 -3
  107. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceContentRows.js.map +1 -1
  108. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceManufacturerSection.d.ts +1 -1
  109. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceRow.d.ts +1 -1
  110. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceTable.d.ts +1 -1
  111. package/lib/seam/components/SupportedDeviceTable/SupportedDeviceTableManufacturerKeys.d.ts +1 -1
  112. package/lib/seam/components/SupportedDeviceTable/use-device-model.d.ts +2 -2
  113. package/lib/seam/components/SupportedDeviceTable/use-device-model.js +3 -4
  114. package/lib/seam/components/SupportedDeviceTable/use-device-model.js.map +1 -1
  115. package/lib/seam/components/SupportedDeviceTable/use-device-models.js +2 -4
  116. package/lib/seam/components/SupportedDeviceTable/use-device-models.js.map +1 -1
  117. package/lib/seam/components/SupportedDeviceTable/use-manufacturer.d.ts +2 -2
  118. package/lib/seam/components/SupportedDeviceTable/use-manufacturer.js +2 -3
  119. package/lib/seam/components/SupportedDeviceTable/use-manufacturer.js.map +1 -1
  120. package/lib/seam/components/SupportedDeviceTable/use-manufacturers.js +1 -3
  121. package/lib/seam/components/SupportedDeviceTable/use-manufacturers.js.map +1 -1
  122. package/lib/seam/components/common-props.d.ts +2 -2
  123. package/lib/seam/components/common-props.js.map +1 -1
  124. package/lib/seam/connect-webviews/use-create-connect-webview.d.ts +4 -3
  125. package/lib/seam/connect-webviews/use-create-connect-webview.js +3 -3
  126. package/lib/seam/connect-webviews/use-create-connect-webview.js.map +1 -1
  127. package/lib/seam/connected-accounts/use-connected-account.d.ts +3 -2
  128. package/lib/seam/connected-accounts/use-connected-account.js +2 -3
  129. package/lib/seam/connected-accounts/use-connected-account.js.map +1 -1
  130. package/lib/seam/devices/use-device-providers.d.ts +3 -2
  131. package/lib/seam/devices/use-device-providers.js.map +1 -1
  132. package/lib/seam/devices/use-device.d.ts +5 -4
  133. package/lib/seam/devices/use-device.js +2 -3
  134. package/lib/seam/devices/use-device.js.map +1 -1
  135. package/lib/seam/devices/use-devices.d.ts +4 -3
  136. package/lib/seam/devices/use-devices.js +2 -3
  137. package/lib/seam/devices/use-devices.js.map +1 -1
  138. package/lib/seam/events/use-events.d.ts +5 -4
  139. package/lib/seam/events/use-events.js +5 -5
  140. package/lib/seam/events/use-events.js.map +1 -1
  141. package/lib/seam/filters.d.ts +7 -7
  142. package/lib/seam/filters.js.map +1 -1
  143. package/lib/seam/locks/lock-device.d.ts +5 -0
  144. package/lib/seam/locks/lock-device.js +2 -0
  145. package/lib/seam/locks/lock-device.js.map +1 -0
  146. package/lib/seam/locks/use-toggle-lock.d.ts +16 -0
  147. package/lib/seam/locks/use-toggle-lock.js +59 -0
  148. package/lib/seam/locks/use-toggle-lock.js.map +1 -0
  149. package/lib/seam/noise-sensors/noise-sensor-device.d.ts +5 -0
  150. package/lib/seam/noise-sensors/noise-sensor-device.js +2 -0
  151. package/lib/seam/noise-sensors/noise-sensor-device.js.map +1 -0
  152. package/lib/seam/noise-sensors/use-noise-thresholds.d.ts +4 -3
  153. package/lib/seam/noise-sensors/use-noise-thresholds.js +2 -3
  154. package/lib/seam/noise-sensors/use-noise-thresholds.js.map +1 -1
  155. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.d.ts +3 -2
  156. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js +2 -10
  157. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.js.map +1 -1
  158. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.d.ts +3 -2
  159. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js +3 -4
  160. package/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.js.map +1 -1
  161. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.d.ts +5 -3
  162. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js +10 -6
  163. package/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.js.map +1 -1
  164. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.d.ts +5 -4
  165. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js +13 -13
  166. package/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.js.map +1 -1
  167. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.d.ts +5 -5
  168. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js +12 -17
  169. package/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.js.map +1 -1
  170. package/lib/{temperature-bounds.d.ts → seam/thermostats/temperature-bounds.d.ts} +1 -1
  171. package/lib/{temperature-bounds.js → seam/thermostats/temperature-bounds.js} +4 -4
  172. package/lib/seam/thermostats/temperature-bounds.js.map +1 -0
  173. package/lib/seam/thermostats/thermostat-device.d.ts +17 -0
  174. package/lib/seam/thermostats/thermostat-device.js +2 -0
  175. package/lib/seam/thermostats/thermostat-device.js.map +1 -0
  176. package/lib/seam/thermostats/unit-conversion.d.ts +19 -0
  177. package/lib/seam/thermostats/unit-conversion.js +43 -0
  178. package/lib/seam/thermostats/unit-conversion.js.map +1 -0
  179. package/lib/seam/thermostats/use-cool-thermostat.d.ts +10 -4
  180. package/lib/seam/thermostats/use-cool-thermostat.js +34 -27
  181. package/lib/seam/thermostats/use-cool-thermostat.js.map +1 -1
  182. package/lib/seam/thermostats/use-heat-cool-thermostat.d.ts +10 -4
  183. package/lib/seam/thermostats/use-heat-cool-thermostat.js +34 -22
  184. package/lib/seam/thermostats/use-heat-cool-thermostat.js.map +1 -1
  185. package/lib/seam/thermostats/use-heat-thermostat.d.ts +10 -4
  186. package/lib/seam/thermostats/use-heat-thermostat.js +34 -27
  187. package/lib/seam/thermostats/use-heat-thermostat.js.map +1 -1
  188. package/lib/seam/thermostats/use-set-thermostat-fan-mode.d.ts +12 -0
  189. package/lib/seam/thermostats/use-set-thermostat-fan-mode.js +46 -0
  190. package/lib/seam/thermostats/use-set-thermostat-fan-mode.js.map +1 -0
  191. package/lib/seam/thermostats/use-set-thermostat-off.d.ts +10 -4
  192. package/lib/seam/thermostats/use-set-thermostat-off.js +36 -25
  193. package/lib/seam/thermostats/use-set-thermostat-off.js.map +1 -1
  194. package/lib/seam/thermostats/use-update-thermostat.d.ts +5 -5
  195. package/lib/seam/thermostats/use-update-thermostat.js +28 -27
  196. package/lib/seam/thermostats/use-update-thermostat.js.map +1 -1
  197. package/lib/seam/use-seam-client.d.ts +3 -3
  198. package/lib/seam/use-seam-client.js +5 -21
  199. package/lib/seam/use-seam-client.js.map +1 -1
  200. package/lib/seam/use-seam-query-result.d.ts +2 -2
  201. package/lib/ui/AccessCodeForm/AccessCodeForm.d.ts +5 -7
  202. package/lib/ui/AccessCodeForm/AccessCodeForm.js +9 -14
  203. package/lib/ui/AccessCodeForm/AccessCodeForm.js.map +1 -1
  204. package/lib/ui/AccessCodeForm/AccessCodeFormDatePicker.d.ts +1 -1
  205. package/lib/ui/AccessCodeForm/AccessCodeFormTimeZonePicker.d.ts +1 -1
  206. package/lib/ui/AccessCodeForm/AccessCodeFormTimes.d.ts +1 -1
  207. package/lib/ui/Checkbox.d.ts +1 -1
  208. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.d.ts +2 -2
  209. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js +1 -1
  210. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.js.map +1 -1
  211. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.d.ts +1 -1
  212. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js +3 -3
  213. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.js.map +1 -1
  214. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.d.ts +1 -1
  215. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.js.map +1 -1
  216. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDeviceSelect.d.ts +1 -1
  217. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormNameAndSchedule.d.ts +1 -1
  218. package/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormTimeZonePicker.d.ts +1 -1
  219. package/lib/ui/ClimateSettingForm/set-point-bounds.d.ts +4 -0
  220. package/lib/ui/ClimateSettingForm/set-point-bounds.js +17 -0
  221. package/lib/ui/ClimateSettingForm/set-point-bounds.js.map +1 -0
  222. package/lib/ui/DateTimePicker/DateTimePicker.d.ts +1 -1
  223. package/lib/ui/FormField.d.ts +1 -1
  224. package/lib/ui/IconButton.d.ts +1 -1
  225. package/lib/ui/LoadingToast/LoadingToast.d.ts +1 -1
  226. package/lib/ui/RadioField/Radio.d.ts +1 -1
  227. package/lib/ui/RadioField/RadioField.d.ts +1 -1
  228. package/lib/ui/Snackbar/Snackbar.d.ts +1 -1
  229. package/lib/ui/Spinner/Spinner.d.ts +1 -1
  230. package/lib/ui/Switch/Switch.d.ts +1 -1
  231. package/lib/ui/TabSet.d.ts +1 -1
  232. package/lib/ui/Table/EmptyPlaceholder.d.ts +1 -1
  233. package/lib/ui/Table/TableCell.d.ts +1 -1
  234. package/lib/ui/Table/TableFilterBar/TableFilterBar.d.ts +1 -1
  235. package/lib/ui/Table/TableFilterBar/TableFilterItem.d.ts +1 -1
  236. package/lib/ui/Table/TableRow.d.ts +1 -1
  237. package/lib/ui/TextButton.d.ts +1 -1
  238. package/lib/ui/TextField/SearchTextField.d.ts +1 -1
  239. package/lib/ui/TimeZonePicker/TimeZonePicker.d.ts +1 -1
  240. package/lib/ui/clipboard.d.ts +1 -1
  241. package/lib/ui/clipboard.js +2 -2
  242. package/lib/ui/clipboard.js.map +1 -1
  243. package/lib/ui/device/BatteryStatusIndicator.d.ts +7 -0
  244. package/lib/ui/device/{BatteryStatus.js → BatteryStatusIndicator.js} +2 -2
  245. package/lib/ui/device/BatteryStatusIndicator.js.map +1 -0
  246. package/lib/ui/device/DeviceImage.d.ts +2 -2
  247. package/lib/ui/device/LockStatus.d.ts +3 -3
  248. package/lib/ui/device/LockStatus.js +1 -1
  249. package/lib/ui/device/LockStatus.js.map +1 -1
  250. package/lib/ui/device/NoiseLevelStatus.d.ts +2 -2
  251. package/lib/ui/device/NoiseLevelStatus.js +4 -4
  252. package/lib/ui/device/NoiseLevelStatus.js.map +1 -1
  253. package/lib/ui/device/OnlineStatus.d.ts +4 -4
  254. package/lib/ui/device/OnlineStatus.js.map +1 -1
  255. package/lib/ui/layout/ContentHeader.d.ts +1 -1
  256. package/lib/ui/layout/DotDivider.d.ts +1 -1
  257. package/lib/ui/noise-sensor/NoiseSensorActivityList.d.ts +2 -2
  258. package/lib/ui/noise-sensor/NoiseSensorActivityList.js +4 -2
  259. package/lib/ui/noise-sensor/NoiseSensorActivityList.js.map +1 -1
  260. package/lib/ui/noise-sensor/NoiseSensorEventItem.d.ts +6 -3
  261. package/lib/ui/noise-sensor/NoiseSensorEventItem.js +4 -7
  262. package/lib/ui/noise-sensor/NoiseSensorEventItem.js.map +1 -1
  263. package/lib/ui/noise-sensor/NoiseThresholdsList.d.ts +2 -2
  264. package/lib/ui/noise-sensor/NoiseThresholdsList.js.map +1 -1
  265. package/lib/ui/thermostat/ClimateModeMenu.d.ts +2 -2
  266. package/lib/ui/thermostat/ClimateModeMenu.js.map +1 -1
  267. package/lib/ui/thermostat/ClimateSettingControlGroup.d.ts +2 -2
  268. package/lib/ui/thermostat/ClimateSettingControlGroup.js.map +1 -1
  269. package/lib/ui/thermostat/ClimateSettingStatus.d.ts +2 -2
  270. package/lib/ui/thermostat/ClimateSettingStatus.js +2 -2
  271. package/lib/ui/thermostat/ClimateSettingStatus.js.map +1 -1
  272. package/lib/ui/thermostat/FanModeMenu.d.ts +2 -2
  273. package/lib/ui/thermostat/FanModeMenu.js.map +1 -1
  274. package/lib/ui/thermostat/Temperature.d.ts +1 -1
  275. package/lib/ui/thermostat/TemperatureControl.d.ts +1 -1
  276. package/lib/ui/thermostat/TemperatureControlGroup.d.ts +2 -2
  277. package/lib/ui/thermostat/TemperatureControlGroup.js +1 -1
  278. package/lib/ui/thermostat/TemperatureControlGroup.js.map +1 -1
  279. package/lib/ui/thermostat/ThermoModeMenuOption.d.ts +1 -1
  280. package/lib/ui/thermostat/ThermostatCard.d.ts +2 -2
  281. package/lib/ui/thermostat/ThermostatCard.js +5 -4
  282. package/lib/ui/thermostat/ThermostatCard.js.map +1 -1
  283. package/lib/ui/thermostat/ThermostatSelect.d.ts +1 -1
  284. package/lib/ui/thermostat/ThermostatSelect.js +2 -2
  285. package/lib/ui/thermostat/ThermostatSelect.js.map +1 -1
  286. package/lib/ui/typography/Title.d.ts +1 -1
  287. package/lib/version.d.ts +1 -1
  288. package/lib/version.js +1 -1
  289. package/lib/version.js.map +1 -1
  290. package/package.json +7 -8
  291. package/src/index.scss +1 -1
  292. package/src/lib/object.ts +13 -0
  293. package/src/lib/seam/SeamProvider.tsx +9 -4
  294. package/src/lib/seam/access-codes/use-access-code.ts +10 -16
  295. package/src/lib/seam/access-codes/use-access-codes.ts +11 -18
  296. package/src/lib/seam/access-codes/use-create-access-code.ts +21 -16
  297. package/src/lib/seam/access-codes/use-delete-access-code.ts +22 -22
  298. package/src/lib/seam/access-codes/use-generate-access-code-code.ts +17 -21
  299. package/src/lib/seam/access-codes/use-update-access-code.ts +33 -25
  300. package/src/lib/seam/client-sessions/use-client-session.ts +5 -10
  301. package/src/lib/seam/components/AccessCodeDetails/AccessCodeDetails.tsx +36 -23
  302. package/src/lib/seam/components/AccessCodeDetails/AccessCodeDevice.tsx +10 -7
  303. package/src/lib/seam/components/AccessCodeTable/AccessCodeHealthBar.tsx +2 -3
  304. package/src/lib/seam/components/AccessCodeTable/AccessCodeMainIcon.tsx +3 -2
  305. package/src/lib/seam/components/AccessCodeTable/AccessCodeMenu.tsx +5 -4
  306. package/src/lib/seam/components/AccessCodeTable/AccessCodeRow.tsx +3 -2
  307. package/src/lib/seam/components/AccessCodeTable/AccessCodeTable.tsx +3 -7
  308. package/src/lib/seam/components/AccessCodeTable/CodeDetails.tsx +12 -8
  309. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleCard.tsx +4 -4
  310. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDetails.tsx +3 -3
  311. package/src/lib/seam/components/ClimateSettingScheduleDetails/ClimateSettingScheduleDeviceBar.tsx +6 -4
  312. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRow.tsx +3 -2
  313. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleRowDetails.tsx +1 -1
  314. package/src/lib/seam/components/ClimateSettingScheduleTable/ClimateSettingScheduleTable.tsx +3 -6
  315. package/src/lib/seam/components/ConnectAccountButton/ConnectAccountButton.tsx +2 -2
  316. package/src/lib/seam/components/CreateAccessCodeForm/CreateAccessCodeForm.tsx +20 -16
  317. package/src/lib/seam/components/CreateClimateSettingScheduleForm/CreateClimateSettingScheduleForm.tsx +1 -1
  318. package/src/lib/seam/components/DeviceDetails/DeviceDetails.tsx +3 -2
  319. package/src/lib/seam/components/DeviceDetails/DeviceInfo.tsx +5 -3
  320. package/src/lib/seam/components/DeviceDetails/DeviceModel.tsx +2 -2
  321. package/src/lib/seam/components/DeviceDetails/LockDeviceDetails.tsx +6 -6
  322. package/src/lib/seam/components/DeviceDetails/NoiseSensorDeviceDetails.tsx +1 -1
  323. package/src/lib/seam/components/DeviceDetails/ThermostatDeviceDetails.tsx +7 -4
  324. package/src/lib/seam/components/DeviceTable/DeviceHealthBar.tsx +6 -3
  325. package/src/lib/seam/components/DeviceTable/DeviceRow.tsx +5 -7
  326. package/src/lib/seam/components/DeviceTable/DeviceTable.tsx +7 -14
  327. package/src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx +6 -7
  328. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceContent.tsx +3 -4
  329. package/src/lib/seam/components/SupportedDeviceTable/SupportedDeviceContentRows.tsx +3 -2
  330. package/src/lib/seam/components/SupportedDeviceTable/use-device-model.ts +9 -14
  331. package/src/lib/seam/components/SupportedDeviceTable/use-device-models.ts +5 -9
  332. package/src/lib/seam/components/SupportedDeviceTable/use-manufacturer.ts +7 -12
  333. package/src/lib/seam/components/SupportedDeviceTable/use-manufacturers.ts +4 -8
  334. package/src/lib/seam/components/common-props.tsx +8 -4
  335. package/src/lib/seam/connect-webviews/use-create-connect-webview.ts +15 -17
  336. package/src/lib/seam/connected-accounts/use-connected-account.ts +17 -21
  337. package/src/lib/seam/devices/use-device-providers.ts +8 -11
  338. package/src/lib/seam/devices/use-device.ts +9 -18
  339. package/src/lib/seam/devices/use-devices.ts +20 -26
  340. package/src/lib/seam/events/use-events.ts +12 -14
  341. package/src/lib/seam/filters.ts +9 -8
  342. package/src/lib/seam/locks/lock-device.ts +9 -0
  343. package/src/lib/seam/locks/use-toggle-lock.ts +103 -0
  344. package/src/lib/seam/noise-sensors/noise-sensor-device.ts +10 -0
  345. package/src/lib/seam/noise-sensors/use-noise-thresholds.ts +12 -15
  346. package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedule.ts +10 -23
  347. package/src/lib/seam/thermostats/climate-setting-schedules/use-climate-setting-schedules.ts +13 -13
  348. package/src/lib/seam/thermostats/climate-setting-schedules/use-create-climate-setting-schedule.ts +30 -25
  349. package/src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts +26 -28
  350. package/src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts +32 -41
  351. package/src/lib/{temperature-bounds.ts → seam/thermostats/temperature-bounds.ts} +8 -5
  352. package/src/lib/seam/thermostats/thermostat-device.ts +43 -0
  353. package/src/lib/seam/thermostats/unit-conversion.ts +89 -0
  354. package/src/lib/seam/thermostats/use-cool-thermostat.ts +77 -47
  355. package/src/lib/seam/thermostats/use-heat-cool-thermostat.ts +89 -40
  356. package/src/lib/seam/thermostats/use-heat-thermostat.ts +77 -47
  357. package/src/lib/seam/thermostats/use-set-thermostat-fan-mode.ts +95 -0
  358. package/src/lib/seam/thermostats/use-set-thermostat-off.ts +64 -40
  359. package/src/lib/seam/thermostats/use-update-thermostat.ts +47 -49
  360. package/src/lib/seam/use-seam-client.ts +11 -22
  361. package/src/lib/seam/use-seam-query-result.ts +2 -2
  362. package/src/lib/ui/AccessCodeForm/AccessCodeForm.tsx +18 -24
  363. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleForm.tsx +4 -4
  364. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormClimateSetting.tsx +6 -3
  365. package/src/lib/ui/ClimateSettingForm/ClimateSettingScheduleFormDefaultClimateSetting.tsx +1 -1
  366. package/src/lib/ui/ClimateSettingForm/set-point-bounds.ts +31 -0
  367. package/src/lib/ui/clipboard.ts +1 -1
  368. package/src/lib/ui/device/{BatteryStatus.tsx → BatteryStatusIndicator.tsx} +10 -5
  369. package/src/lib/ui/device/DeviceImage.tsx +2 -2
  370. package/src/lib/ui/device/LockStatus.tsx +3 -2
  371. package/src/lib/ui/device/NoiseLevelStatus.tsx +3 -3
  372. package/src/lib/ui/device/OnlineStatus.tsx +3 -3
  373. package/src/lib/ui/noise-sensor/NoiseSensorActivityList.tsx +15 -6
  374. package/src/lib/ui/noise-sensor/NoiseSensorEventItem.tsx +13 -9
  375. package/src/lib/ui/noise-sensor/NoiseThresholdsList.tsx +4 -3
  376. package/src/lib/ui/thermostat/ClimateModeMenu.tsx +1 -2
  377. package/src/lib/ui/thermostat/ClimateSettingControlGroup.tsx +1 -2
  378. package/src/lib/ui/thermostat/ClimateSettingStatus.tsx +2 -3
  379. package/src/lib/ui/thermostat/FanModeMenu.tsx +1 -2
  380. package/src/lib/ui/thermostat/TemperatureControlGroup.tsx +2 -2
  381. package/src/lib/ui/thermostat/ThermostatCard.tsx +11 -8
  382. package/src/lib/ui/thermostat/ThermostatSelect.tsx +4 -10
  383. package/src/lib/version.ts +1 -1
  384. package/lib/seam/devices/use-toggle-lock.d.ts +0 -5
  385. package/lib/seam/devices/use-toggle-lock.js +0 -56
  386. package/lib/seam/devices/use-toggle-lock.js.map +0 -1
  387. package/lib/seam/error-handlers.d.ts +0 -5
  388. package/lib/seam/error-handlers.js +0 -12
  389. package/lib/seam/error-handlers.js.map +0 -1
  390. package/lib/seam/thermostats/use-update-fan-mode.d.ts +0 -6
  391. package/lib/seam/thermostats/use-update-fan-mode.js +0 -42
  392. package/lib/seam/thermostats/use-update-fan-mode.js.map +0 -1
  393. package/lib/set-point-bounds.d.ts +0 -4
  394. package/lib/set-point-bounds.js +0 -24
  395. package/lib/set-point-bounds.js.map +0 -1
  396. package/lib/temperature-bounds.js.map +0 -1
  397. package/lib/ui/device/BatteryStatus.d.ts +0 -7
  398. package/lib/ui/device/BatteryStatus.js.map +0 -1
  399. package/src/lib/seam/devices/use-toggle-lock.ts +0 -84
  400. package/src/lib/seam/error-handlers.ts +0 -19
  401. package/src/lib/seam/thermostats/use-update-fan-mode.ts +0 -81
  402. package/src/lib/set-point-bounds.ts +0 -39
@@ -1,5 +1,6 @@
1
+ import type { SeamHttpApiError, ThermostatsClimateSettingSchedulesDeleteParams } from '@seamapi/http/connect';
1
2
  import { type UseMutationResult } from '@tanstack/react-query';
2
- import type { ClimateSettingScheduleDeleteRequest, ClimateSettingScheduleDeleteResponse, SeamError } from 'seamapi';
3
- export type UseDeleteClimateSettingScheduleMutationParams = ClimateSettingScheduleDeleteRequest;
4
- export type UseDeleteClimateSettingScheduleData = ClimateSettingScheduleDeleteResponse;
5
- export declare function useDeleteClimateSettingSchedule(): UseMutationResult<UseDeleteClimateSettingScheduleData, SeamError, UseDeleteClimateSettingScheduleMutationParams>;
3
+ export type UseDeleteClimateSettingScheduleParams = never;
4
+ export type UseDeleteClimateSettingScheduleData = undefined;
5
+ export type UseDeleteClimateSettingScheduleMutationVariables = ThermostatsClimateSettingSchedulesDeleteParams;
6
+ export declare function useDeleteClimateSettingSchedule(): UseMutationResult<UseDeleteClimateSettingScheduleData, SeamHttpApiError, UseDeleteClimateSettingScheduleMutationVariables>;
@@ -4,23 +4,23 @@ export function useDeleteClimateSettingSchedule() {
4
4
  const { client } = useSeamClient();
5
5
  const queryClient = useQueryClient();
6
6
  return useMutation({
7
- mutationFn: async (mutationParams) => {
7
+ mutationFn: async (variables) => {
8
8
  if (client === null)
9
9
  throw new NullSeamClientError();
10
- await client.thermostats.climateSettingSchedules.delete(mutationParams);
10
+ await client.thermostats.climateSettingSchedules.delete(variables);
11
11
  },
12
12
  onSuccess: (_data, variables) => {
13
- void queryClient.invalidateQueries([
14
- 'thermostats',
15
- 'climate_setting_schedules',
16
- 'get',
17
- { climate_setting_schedule_id: variables.climate_setting_schedule_id },
18
- ]);
19
- void queryClient.invalidateQueries([
20
- 'thermostats',
21
- 'climate_setting_schedules',
22
- 'list',
23
- ]);
13
+ void queryClient.invalidateQueries({
14
+ queryKey: [
15
+ 'thermostats',
16
+ 'climate_setting_schedules',
17
+ 'get',
18
+ { climate_setting_schedules: variables.climate_setting_schedule_id },
19
+ ],
20
+ });
21
+ void queryClient.invalidateQueries({
22
+ queryKey: ['thermostats', 'climate_setting_schedules', 'list'],
23
+ });
24
24
  },
25
25
  });
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-delete-climate-setting-schedule.js","sourceRoot":"","sources":["../../../../src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAO9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAQhF,MAAM,UAAU,+BAA+B;IAK7C,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EACf,cAA6D,EAC7D,EAAE;YACF,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YACpD,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACzE,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,aAAa;gBACb,2BAA2B;gBAC3B,KAAK;gBACL,EAAE,2BAA2B,EAAE,SAAS,CAAC,2BAA2B,EAAE;aACvE,CAAC,CAAA;YACF,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,aAAa;gBACb,2BAA2B;gBAC3B,MAAM;aACP,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"use-delete-climate-setting-schedule.js","sourceRoot":"","sources":["../../../../src/lib/seam/thermostats/climate-setting-schedules/use-delete-climate-setting-schedule.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAShF,MAAM,UAAU,+BAA+B;IAK7C,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YACpD,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACpE,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE;oBACR,aAAa;oBACb,2BAA2B;oBAC3B,KAAK;oBACL,EAAE,yBAAyB,EAAE,SAAS,CAAC,2BAA2B,EAAE;iBACrE;aACF,CAAC,CAAA;YACF,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,QAAQ,EAAE,CAAC,aAAa,EAAE,2BAA2B,EAAE,MAAM,CAAC;aAC/D,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
+ import type { SeamHttpApiError, ThermostatsClimateSettingSchedulesUpdateBody } from '@seamapi/http/connect';
1
2
  import { type UseMutationResult } from '@tanstack/react-query';
2
- import type { ClimateSettingScheduleUpdateRequest, ClimateSettingScheduleUpdateResponse, SeamError } from 'seamapi';
3
- type UseUpdateClimateSettingScheduleData = ClimateSettingScheduleUpdateResponse['climate_setting_schedule'];
4
- type UseUpdateClimateSettingScheduleMutationParams = ClimateSettingScheduleUpdateRequest;
5
- export declare function useUpdateClimateSettingSchedule(): UseMutationResult<UseUpdateClimateSettingScheduleData, SeamError, UseUpdateClimateSettingScheduleMutationParams>;
6
- export {};
3
+ export type UseUpdateClimateSettingScheduleParams = never;
4
+ export type UseUpdateClimateSettingScheduleData = undefined;
5
+ export type UseUpdateClimateSettingScheduleMutationVariables = ThermostatsClimateSettingSchedulesUpdateBody;
6
+ export declare function useUpdateClimateSettingSchedule(): UseMutationResult<UseUpdateClimateSettingScheduleData, SeamHttpApiError, UseUpdateClimateSettingScheduleMutationVariables>;
@@ -1,45 +1,40 @@
1
1
  import { useMutation, useQueryClient, } from '@tanstack/react-query';
2
- import { NullSeamClientError, useSeamClient } from '../../../../lib/index.js';
2
+ import { shake } from '../../../../lib/object.js';
3
+ import { NullSeamClientError, useSeamClient } from '../../../../lib/seam/use-seam-client.js';
3
4
  export function useUpdateClimateSettingSchedule() {
4
5
  const { client } = useSeamClient();
5
6
  const queryClient = useQueryClient();
6
7
  return useMutation({
7
- mutationFn: async (mutationPararms) => {
8
+ mutationFn: async (variables) => {
8
9
  if (client === null)
9
10
  throw new NullSeamClientError();
10
- return await client.thermostats.climateSettingSchedules.update(mutationPararms);
11
+ await client.thermostats.climateSettingSchedules.update(variables);
11
12
  },
12
- onSuccess: (updated) => {
13
+ onSuccess: (_data, variables) => {
13
14
  queryClient.setQueryData([
14
15
  'thermostats',
15
16
  'climate_setting_schedules',
16
17
  'get',
17
- {
18
- climate_setting_schedule_id: updated.climate_setting_schedule_id,
19
- },
18
+ { climate_setting_schedules: variables.climate_setting_schedule_id },
20
19
  ], (climateSettingSchedule) => {
21
20
  if (climateSettingSchedule == null) {
22
21
  return;
23
22
  }
24
23
  return {
25
24
  ...climateSettingSchedule,
26
- ...updated,
25
+ ...shake(variables),
27
26
  };
28
27
  });
29
- queryClient.setQueryData([
30
- 'thermostats',
31
- 'climate_setting_schedules',
32
- 'list',
33
- { device_id: updated.device_id },
34
- ], (climateSettingSchedules) => {
28
+ queryClient.setQueryData(['thermostats', 'climate_setting_schedules', 'list'], (climateSettingSchedules) => {
35
29
  if (climateSettingSchedules == null) {
36
- return [];
30
+ return climateSettingSchedules;
37
31
  }
38
32
  return climateSettingSchedules.map((climateSettingSchedule) => {
39
- if (climateSettingSchedule.device_id === updated.device_id) {
33
+ if (climateSettingSchedule.climate_setting_schedule_id ===
34
+ variables.climate_setting_schedule_id) {
40
35
  return {
41
36
  ...climateSettingSchedule,
42
- ...updated,
37
+ ...shake(variables),
43
38
  };
44
39
  }
45
40
  return climateSettingSchedule;
@@ -1 +1 @@
1
- {"version":3,"file":"use-update-climate-setting-schedule.js","sourceRoot":"","sources":["../../../../src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAS9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAOjE,MAAM,UAAU,+BAA+B;IAK7C,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EACf,eAA8D,EAC9D,EAAE;YACF,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YACpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAC5D,eAAe,CAChB,CAAA;QACH,CAAC;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,WAAW,CAAC,YAAY,CACtB;gBACE,aAAa;gBACb,2BAA2B;gBAC3B,KAAK;gBACL;oBACE,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;iBACjE;aACF,EACD,CAAC,sBAAsB,EAAE,EAAE;gBACzB,IAAI,sBAAsB,IAAI,IAAI,EAAE,CAAC;oBACnC,OAAM;gBACR,CAAC;gBAED,OAAO;oBACL,GAAG,sBAAsB;oBACzB,GAAG,OAAO;iBACX,CAAA;YACH,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CAGtB;gBACE,aAAa;gBACb,2BAA2B;gBAC3B,MAAM;gBACN,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;aACjC,EACD,CAAC,uBAAuB,EAA4B,EAAE;gBACpD,IAAI,uBAAuB,IAAI,IAAI,EAAE,CAAC;oBACpC,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,EAAE;oBAC5D,IAAI,sBAAsB,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;wBAC3D,OAAO;4BACL,GAAG,sBAAsB;4BACzB,GAAG,OAAO;yBACX,CAAA;oBACH,CAAC;oBAED,OAAO,sBAAsB,CAAA;gBAC/B,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"use-update-climate-setting-schedule.js","sourceRoot":"","sources":["../../../../src/lib/seam/thermostats/climate-setting-schedules/use-update-climate-setting-schedule.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAShF,MAAM,UAAU,+BAA+B;IAK7C,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YACpD,MAAM,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACpE,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB;gBACE,aAAa;gBACb,2BAA2B;gBAC3B,KAAK;gBACL,EAAE,yBAAyB,EAAE,SAAS,CAAC,2BAA2B,EAAE;aACrE,EACD,CAAC,sBAAsB,EAAE,EAAE;gBACzB,IAAI,sBAAsB,IAAI,IAAI,EAAE,CAAC;oBACnC,OAAM;gBACR,CAAC;gBAED,OAAO;oBACL,GAAG,sBAAsB;oBACzB,GAAG,KAAK,CAAC,SAAS,CAAC;iBACpB,CAAA;YACH,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,aAAa,EAAE,2BAA2B,EAAE,MAAM,CAAC,EACpD,CAAC,uBAAuB,EAAE,EAAE;gBAC1B,IAAI,uBAAuB,IAAI,IAAI,EAAE,CAAC;oBACpC,OAAO,uBAAuB,CAAA;gBAChC,CAAC;gBAED,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,EAAE;oBAC5D,IACE,sBAAsB,CAAC,2BAA2B;wBAClD,SAAS,CAAC,2BAA2B,EACrC,CAAC;wBACD,OAAO;4BACL,GAAG,sBAAsB;4BACzB,GAAG,KAAK,CAAC,SAAS,CAAC;yBACpB,CAAA;oBACH,CAAC;oBAED,OAAO,sBAAsB,CAAA;gBAC/B,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { HvacModeSetting, ThermostatDevice } from 'seamapi';
1
+ import type { HvacModeSetting, ThermostatDevice } from '../../../lib/seam/thermostats/thermostat-device.js';
2
2
  export interface ControlBounds {
3
3
  mode: Exclude<HvacModeSetting, 'off'>;
4
4
  minHeat: number;
@@ -15,12 +15,12 @@ export const getSupportedThermostatModes = (device) => {
15
15
  return allModes.filter((mode) => {
16
16
  switch (mode) {
17
17
  case 'cool':
18
- return device.properties.is_cooling_available;
18
+ return device.properties.is_cooling_available ?? false;
19
19
  case 'heat':
20
- return device.properties.is_heating_available;
20
+ return device.properties.is_heating_available ?? false;
21
21
  case 'heat_cool':
22
- return (device.properties.is_heating_available &&
23
- device.properties.is_cooling_available);
22
+ return ((device.properties.is_heating_available ?? false) &&
23
+ (device.properties.is_cooling_available ?? false));
24
24
  default:
25
25
  return true;
26
26
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temperature-bounds.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/temperature-bounds.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GAC0B,EAAU,EAAE;IAC3C,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAE7E,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,GAC0B,EAAU,EAAE;IAC3C,MAAM,aAAa,GACjB,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAE7E,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,aAA4B,EACT,EAAE,CAAC,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC;IAClC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC;CACnC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,MAAwB,EACL,EAAE;IACrB,MAAM,QAAQ,GAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAExE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,UAAU,CAAC,oBAAoB,IAAI,KAAK,CAAA;YACxD,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,UAAU,CAAC,oBAAoB,IAAI,KAAK,CAAA;YACxD,KAAK,WAAW;gBACd,OAAO,CACL,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,IAAI,KAAK,CAAC;oBACjD,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,IAAI,KAAK,CAAC,CAClD,CAAA;YACH;gBACE,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { Device } from '@seamapi/types/connect';
2
+ export type ThermostatDevice = Omit<Device, 'properties'> & {
3
+ properties: Device['properties'] & Required<Pick<Device['properties'], 'temperature_celsius' | 'temperature_fahrenheit' | 'is_heating' | 'is_cooling' | 'is_fan_running' | 'is_cooling_available' | 'is_heating_available' | 'available_hvac_mode_settings' | 'fan_mode_setting' | 'current_climate_setting'>>;
4
+ };
5
+ export type FanModeSetting = ThermostatDevice['properties']['fan_mode_setting'];
6
+ export type HvacModeSetting = ThermostatDevice['properties']['available_hvac_mode_settings'][number];
7
+ export interface ClimateSetting {
8
+ automatic_heating_enabled?: boolean;
9
+ automatic_cooling_enabled?: boolean;
10
+ hvac_mode_setting?: HvacModeSetting;
11
+ cooling_set_point_celsius?: number;
12
+ heating_set_point_celsius?: number;
13
+ cooling_set_point_fahrenheit?: number;
14
+ heating_set_point_fahrenheit?: number;
15
+ manual_override_allowed?: boolean;
16
+ }
17
+ export declare const isThermostatDevice: (device: Device) => device is ThermostatDevice;
@@ -0,0 +1,2 @@
1
+ export const isThermostatDevice = (device) => 'is_fan_running' in device.properties;
2
+ //# sourceMappingURL=thermostat-device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thermostat-device.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/thermostat-device.ts"],"names":[],"mappings":"AAwCA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAc,EACc,EAAE,CAAC,gBAAgB,IAAI,MAAM,CAAC,UAAU,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { Device } from '@seamapi/types/connect';
2
+ export declare const celsiusToFahrenheit: (t: number) => number;
3
+ export declare const fahrenheitToCelsius: (t: number) => number;
4
+ export declare const getCoolingSetPointCelsius: (variables: {
5
+ cooling_set_point_celsius?: number;
6
+ cooling_set_point_fahrenheit?: number;
7
+ }, device: Device) => number | undefined;
8
+ export declare const getCoolingSetPointFahrenheit: (variables: {
9
+ cooling_set_point_celsius?: number;
10
+ cooling_set_point_fahrenheit?: number;
11
+ }, device: Device) => number | undefined;
12
+ export declare const getHeatingSetPointCelsius: (variables: {
13
+ heating_set_point_celsius?: number;
14
+ heating_set_point_fahrenheit?: number;
15
+ }, device: Device) => number | undefined;
16
+ export declare const getHeatingSetPointFahrenheit: (variables: {
17
+ heating_set_point_celsius?: number;
18
+ heating_set_point_fahrenheit?: number;
19
+ }, device: Device) => number | undefined;
@@ -0,0 +1,43 @@
1
+ export const celsiusToFahrenheit = (t) => (t * 9) / 5 + 32;
2
+ export const fahrenheitToCelsius = (t) => (t - 32) * (5 / 9);
3
+ export const getCoolingSetPointCelsius = (variables, device) => {
4
+ if (variables.cooling_set_point_celsius != null) {
5
+ return variables.cooling_set_point_celsius;
6
+ }
7
+ if (variables.cooling_set_point_fahrenheit != null) {
8
+ return fahrenheitToCelsius(variables.cooling_set_point_fahrenheit);
9
+ }
10
+ return (device.properties.current_climate_setting?.cooling_set_point_celsius ??
11
+ undefined);
12
+ };
13
+ export const getCoolingSetPointFahrenheit = (variables, device) => {
14
+ if (variables.cooling_set_point_fahrenheit != null) {
15
+ return variables.cooling_set_point_fahrenheit;
16
+ }
17
+ if (variables.cooling_set_point_celsius != null) {
18
+ return celsiusToFahrenheit(variables.cooling_set_point_celsius);
19
+ }
20
+ return (device.properties.current_climate_setting?.cooling_set_point_fahrenheit ??
21
+ undefined);
22
+ };
23
+ export const getHeatingSetPointCelsius = (variables, device) => {
24
+ if (variables.heating_set_point_celsius != null) {
25
+ return variables.heating_set_point_celsius;
26
+ }
27
+ if (variables.heating_set_point_fahrenheit != null) {
28
+ return fahrenheitToCelsius(variables.heating_set_point_fahrenheit);
29
+ }
30
+ return (device.properties.current_climate_setting?.heating_set_point_celsius ??
31
+ undefined);
32
+ };
33
+ export const getHeatingSetPointFahrenheit = (variables, device) => {
34
+ if (variables.heating_set_point_fahrenheit != null) {
35
+ return variables.heating_set_point_fahrenheit;
36
+ }
37
+ if (variables.heating_set_point_celsius != null) {
38
+ return celsiusToFahrenheit(variables.heating_set_point_celsius);
39
+ }
40
+ return (device.properties.current_climate_setting?.heating_set_point_fahrenheit ??
41
+ undefined);
42
+ };
43
+ //# sourceMappingURL=unit-conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-conversion.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/unit-conversion.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAGC,EACD,MAAc,EACM,EAAE;IACtB,IAAI,SAAS,CAAC,yBAAyB,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC,yBAAyB,CAAA;IAC5C,CAAC;IAED,IAAI,SAAS,CAAC,4BAA4B,IAAI,IAAI,EAAE,CAAC;QACnD,OAAO,mBAAmB,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAA;IACpE,CAAC;IAED,OAAO,CACL,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,yBAAyB;QACpE,SAAS,CACV,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAGC,EACD,MAAc,EACM,EAAE;IACtB,IAAI,SAAS,CAAC,4BAA4B,IAAI,IAAI,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC,4BAA4B,CAAA;IAC/C,CAAC;IAED,IAAI,SAAS,CAAC,yBAAyB,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,mBAAmB,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAA;IACjE,CAAC;IAED,OAAO,CACL,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,4BAA4B;QACvE,SAAS,CACV,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAGC,EACD,MAAc,EACM,EAAE;IACtB,IAAI,SAAS,CAAC,yBAAyB,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC,yBAAyB,CAAA;IAC5C,CAAC;IAED,IAAI,SAAS,CAAC,4BAA4B,IAAI,IAAI,EAAE,CAAC;QACnD,OAAO,mBAAmB,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAA;IACpE,CAAC;IAED,OAAO,CACL,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,yBAAyB;QACpE,SAAS,CACV,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAGC,EACD,MAAc,EACM,EAAE;IACtB,IAAI,SAAS,CAAC,4BAA4B,IAAI,IAAI,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC,4BAA4B,CAAA;IAC/C,CAAC;IAED,IAAI,SAAS,CAAC,yBAAyB,IAAI,IAAI,EAAE,CAAC;QAChD,OAAO,mBAAmB,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAA;IACjE,CAAC;IAED,OAAO,CACL,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,4BAA4B;QACvE,SAAS,CACV,CAAA;AACH,CAAC,CAAA"}
@@ -1,6 +1,12 @@
1
+ import type { SeamActionAttemptFailedError, SeamActionAttemptTimeoutError, SeamHttpApiError, ThermostatsCoolBody } from '@seamapi/http/connect';
2
+ import type { ActionAttempt } from '@seamapi/types/connect';
1
3
  import { type UseMutationResult } from '@tanstack/react-query';
2
- import type { SeamError, ThermostatCoolRequest } from 'seamapi';
3
- type UseCoolThermostatData = Record<string, unknown>;
4
- type UseCoolThermostatMutationParams = ThermostatCoolRequest;
5
- export declare function useCoolThermostat(): UseMutationResult<UseCoolThermostatData, SeamError, UseCoolThermostatMutationParams>;
4
+ export type UseCoolThermostatParams = never;
5
+ export type UseCoolThermostatData = undefined;
6
+ export type UseCoolThermostatMutationVariables = Pick<ThermostatsCoolBody, 'device_id' | 'cooling_set_point_celsius' | 'cooling_set_point_fahrenheit'>;
7
+ type CoolThermostatActionAttempt = Extract<ActionAttempt, {
8
+ action_type: 'SET_COOL';
9
+ }>;
10
+ type MutationError = SeamHttpApiError | SeamActionAttemptFailedError<CoolThermostatActionAttempt> | SeamActionAttemptTimeoutError<CoolThermostatActionAttempt>;
11
+ export declare function useCoolThermostat(): UseMutationResult<UseCoolThermostatData, MutationError, UseCoolThermostatMutationVariables>;
6
12
  export {};
@@ -1,50 +1,57 @@
1
1
  import { useMutation, useQueryClient, } from '@tanstack/react-query';
2
+ import { getCoolingSetPointCelsius, getCoolingSetPointFahrenheit, } from '../../../lib/seam/thermostats/unit-conversion.js';
2
3
  import { NullSeamClientError, useSeamClient } from '../../../lib/seam/use-seam-client.js';
3
4
  export function useCoolThermostat() {
4
5
  const { client } = useSeamClient();
5
6
  const queryClient = useQueryClient();
6
7
  return useMutation({
7
- mutationFn: async (mutationParams) => {
8
+ mutationFn: async (variables) => {
8
9
  if (client === null)
9
10
  throw new NullSeamClientError();
10
- return await client.thermostats.cool(mutationParams);
11
+ await client.thermostats.cool(variables);
11
12
  },
12
13
  onSuccess: (_data, variables) => {
13
- queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (thermostat) => {
14
- if (thermostat == null) {
14
+ queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (device) => {
15
+ if (device == null) {
15
16
  return;
16
17
  }
17
- return getUpdatedThermostat(thermostat, variables);
18
+ return getUpdatedDevice(device, variables);
18
19
  });
19
- queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (thermostats) => {
20
- if (thermostats == null) {
20
+ queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (devices) => {
21
+ if (devices == null) {
21
22
  return [];
22
23
  }
23
- return thermostats.map((thermostat) => {
24
- if (thermostat.device_id === variables.device_id) {
25
- return getUpdatedThermostat(thermostat, variables);
24
+ return devices.map((device) => {
25
+ if (device.device_id === variables.device_id) {
26
+ return getUpdatedDevice(device, variables);
26
27
  }
27
- return thermostat;
28
+ return device;
28
29
  });
29
30
  });
30
31
  },
31
32
  });
32
33
  }
33
- function getUpdatedThermostat(thermostat, variables) {
34
- return {
35
- ...thermostat,
36
- properties: {
37
- ...thermostat.properties,
38
- current_climate_setting: {
39
- ...thermostat.properties.current_climate_setting,
40
- cooling_set_point_fahrenheit: variables.cooling_set_point_fahrenheit ??
41
- thermostat.properties.current_climate_setting
42
- .cooling_set_point_fahrenheit,
43
- cooling_set_point_celsius: variables.cooling_set_point_celsius ??
44
- thermostat.properties.current_climate_setting
45
- .cooling_set_point_celsius,
34
+ const getUpdatedDevice = (device, variables) => {
35
+ const { properties } = device;
36
+ if ('current_climate_setting' in properties &&
37
+ properties.current_climate_setting != null) {
38
+ return {
39
+ ...device,
40
+ properties: {
41
+ ...properties,
42
+ current_climate_setting: {
43
+ ...properties.current_climate_setting,
44
+ hvac_mode_setting: 'cool',
45
+ automatic_heating_enabled: false,
46
+ automatic_cooling_enabled: true,
47
+ heating_set_point_celsius: undefined,
48
+ heating_set_point_fahrenheit: undefined,
49
+ cooling_set_point_celsius: getCoolingSetPointCelsius(variables, device),
50
+ cooling_set_point_fahrenheit: getCoolingSetPointFahrenheit(variables, device),
51
+ },
46
52
  },
47
- },
48
- };
49
- }
53
+ };
54
+ }
55
+ return device;
56
+ };
50
57
  //# sourceMappingURL=use-cool-thermostat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-cool-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-cool-thermostat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,iBAAiB;IAK/B,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAA+C,EAAE,EAAE;YACpE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACtD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACtD,CAAC,UAAU,EAAE,EAAE;gBACb,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,OAAM;gBACR,CAAC;gBAED,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YACpD,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACvD,CAAC,WAAW,EAAsB,EAAE;gBAClC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;oBACxB,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACpC,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;wBACjD,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;oBACpD,CAAC;oBAED,OAAO,UAAU,CAAA;gBACnB,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA4B,EAC5B,SAA0C;IAE1C,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE;YACV,GAAG,UAAU,CAAC,UAAU;YACxB,uBAAuB,EAAE;gBACvB,GAAG,UAAU,CAAC,UAAU,CAAC,uBAAuB;gBAChD,4BAA4B,EAC1B,SAAS,CAAC,4BAA4B;oBACtC,UAAU,CAAC,UAAU,CAAC,uBAAuB;yBAC1C,4BAA4B;gBACjC,yBAAyB,EACvB,SAAS,CAAC,yBAAyB;oBACnC,UAAU,CAAC,UAAU,CAAC,uBAAuB;yBAC1C,yBAAyB;aAC/B;SACF;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"use-cool-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-cool-thermostat.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAqBhF,MAAM,UAAU,iBAAiB;IAK/B,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YACpD,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACtD,CAAC,MAAM,EAAE,EAAE;gBACT,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,OAAM;gBACR,CAAC;gBACD,OAAO,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YAC5C,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACvD,CAAC,OAAO,EAAY,EAAE;gBACpB,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;oBACpB,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;wBAC7C,OAAO,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;oBAC5C,CAAC;oBAED,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,CACvB,MAAc,EACd,SAA6C,EACrC,EAAE;IACV,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAC7B,IACE,yBAAyB,IAAI,UAAU;QACvC,UAAU,CAAC,uBAAuB,IAAI,IAAI,EAC1C,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE;gBACV,GAAG,UAAU;gBACb,uBAAuB,EAAE;oBACvB,GAAG,UAAU,CAAC,uBAAuB;oBACrC,iBAAiB,EAAE,MAAM;oBACzB,yBAAyB,EAAE,KAAK;oBAChC,yBAAyB,EAAE,IAAI;oBAC/B,yBAAyB,EAAE,SAAS;oBACpC,4BAA4B,EAAE,SAAS;oBACvC,yBAAyB,EAAE,yBAAyB,CAClD,SAAS,EACT,MAAM,CACP;oBACD,4BAA4B,EAAE,4BAA4B,CACxD,SAAS,EACT,MAAM,CACP;iBACF;aACF;SACF,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -1,6 +1,12 @@
1
+ import type { SeamActionAttemptFailedError, SeamActionAttemptTimeoutError, SeamHttpApiError, ThermostatsHeatCoolBody } from '@seamapi/http/connect';
2
+ import type { ActionAttempt } from '@seamapi/types/connect';
1
3
  import { type UseMutationResult } from '@tanstack/react-query';
2
- import type { SeamError, ThermostatHeatCoolRequest } from 'seamapi';
3
- type UseHeatCoolThermostatData = Record<string, unknown>;
4
- type UseHeatCoolThermostatMutationParams = ThermostatHeatCoolRequest;
5
- export declare function useHeatCoolThermostat(): UseMutationResult<UseHeatCoolThermostatData, SeamError, UseHeatCoolThermostatMutationParams>;
4
+ export type UseHeatCoolThermostatParams = never;
5
+ export type UseHeatCoolThermostatData = undefined;
6
+ export type UseHeatCoolThermostatMutationVariables = Pick<ThermostatsHeatCoolBody, 'device_id' | 'heating_set_point_celsius' | 'heating_set_point_fahrenheit' | 'cooling_set_point_celsius' | 'cooling_set_point_fahrenheit'>;
7
+ type HeatCoolThermostatActionAttempt = Extract<ActionAttempt, {
8
+ action_type: 'SET_HEAT_COOL';
9
+ }>;
10
+ type MutationError = SeamHttpApiError | SeamActionAttemptFailedError<HeatCoolThermostatActionAttempt> | SeamActionAttemptTimeoutError<HeatCoolThermostatActionAttempt>;
11
+ export declare function useHeatCoolThermostat(): UseMutationResult<UseHeatCoolThermostatData, MutationError, UseHeatCoolThermostatMutationVariables>;
6
12
  export {};
@@ -1,45 +1,57 @@
1
1
  import { useMutation, useQueryClient, } from '@tanstack/react-query';
2
+ import { getCoolingSetPointCelsius, getCoolingSetPointFahrenheit, getHeatingSetPointCelsius, getHeatingSetPointFahrenheit, } from '../../../lib/seam/thermostats/unit-conversion.js';
2
3
  import { NullSeamClientError, useSeamClient } from '../../../lib/seam/use-seam-client.js';
3
4
  export function useHeatCoolThermostat() {
4
5
  const { client } = useSeamClient();
5
6
  const queryClient = useQueryClient();
6
7
  return useMutation({
7
- mutationFn: async (mutationParams) => {
8
+ mutationFn: async (variables) => {
8
9
  if (client === null)
9
10
  throw new NullSeamClientError();
10
- return await client.thermostats.heatCool(mutationParams);
11
+ await client.thermostats.heatCool(variables);
11
12
  },
12
13
  onSuccess: (_data, variables) => {
13
- queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (thermostat) => {
14
- if (thermostat == null) {
14
+ queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (device) => {
15
+ if (device == null) {
15
16
  return;
16
17
  }
17
- return getUpdatedThermostat(thermostat, variables);
18
+ return getUpdatedDevice(device, variables);
18
19
  });
19
- queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (thermostats) => {
20
- if (thermostats == null) {
20
+ queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (devices) => {
21
+ if (devices == null) {
21
22
  return [];
22
23
  }
23
- return thermostats.map((thermostat) => {
24
- if (thermostat.device_id === variables.device_id) {
25
- return getUpdatedThermostat(thermostat, variables);
24
+ return devices.map((device) => {
25
+ if (device.device_id === variables.device_id) {
26
+ return getUpdatedDevice(device, variables);
26
27
  }
27
- return thermostat;
28
+ return device;
28
29
  });
29
30
  });
30
31
  },
31
32
  });
32
33
  }
33
- function getUpdatedThermostat(thermostat, variables) {
34
- return {
35
- ...thermostat,
36
- properties: {
37
- ...thermostat.properties,
38
- current_climate_setting: {
39
- ...thermostat.properties.current_climate_setting,
40
- ...variables,
34
+ const getUpdatedDevice = (device, variables) => {
35
+ const { properties } = device;
36
+ if ('current_climate_setting' in properties &&
37
+ properties.current_climate_setting != null) {
38
+ return {
39
+ ...device,
40
+ properties: {
41
+ ...properties,
42
+ current_climate_setting: {
43
+ ...properties.current_climate_setting,
44
+ hvac_mode_setting: 'heat_cool',
45
+ automatic_heating_enabled: true,
46
+ automatic_cooling_enabled: true,
47
+ heating_set_point_celsius: getHeatingSetPointCelsius(variables, device),
48
+ heating_set_point_fahrenheit: getHeatingSetPointFahrenheit(variables, device),
49
+ cooling_set_point_celsius: getCoolingSetPointCelsius(variables, device),
50
+ cooling_set_point_fahrenheit: getCoolingSetPointFahrenheit(variables, device),
51
+ },
41
52
  },
42
- },
43
- };
44
- }
53
+ };
54
+ }
55
+ return device;
56
+ };
45
57
  //# sourceMappingURL=use-heat-cool-thermostat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-heat-cool-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-heat-cool-thermostat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,qBAAqB;IAKnC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAAmD,EAAE,EAAE;YACxE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC1D,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACtD,CAAC,UAAU,EAAE,EAAE;gBACb,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,OAAM;gBACR,CAAC;gBAED,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YACpD,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACvD,CAAC,WAAW,EAAsB,EAAE;gBAClC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;oBACxB,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACpC,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;wBACjD,OAAO,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;oBACpD,CAAC;oBAED,OAAO,UAAU,CAAA;gBACnB,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA4B,EAC5B,SAA8C;IAE9C,OAAO;QACL,GAAG,UAAU;QACb,UAAU,EAAE;YACV,GAAG,UAAU,CAAC,UAAU;YACxB,uBAAuB,EAAE;gBACvB,GAAG,UAAU,CAAC,UAAU,CAAC,uBAAuB;gBAChD,GAAG,SAAS;aACb;SACF;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"use-heat-cool-thermostat.js","sourceRoot":"","sources":["../../../src/lib/seam/thermostats/use-heat-cool-thermostat.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAyBhF,MAAM,UAAU,qBAAqB;IAKnC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YACpD,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9C,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACtD,CAAC,MAAM,EAAE,EAAE;gBACT,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,OAAM;gBACR,CAAC;gBACD,OAAO,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YAC5C,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EACvD,CAAC,OAAO,EAAY,EAAE;gBACpB,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;oBACpB,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;wBAC7C,OAAO,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;oBAC5C,CAAC;oBAED,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,CACvB,MAAc,EACd,SAAiD,EACzC,EAAE;IACV,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;IAC7B,IACE,yBAAyB,IAAI,UAAU;QACvC,UAAU,CAAC,uBAAuB,IAAI,IAAI,EAC1C,CAAC;QACD,OAAO;YACL,GAAG,MAAM;YACT,UAAU,EAAE;gBACV,GAAG,UAAU;gBACb,uBAAuB,EAAE;oBACvB,GAAG,UAAU,CAAC,uBAAuB;oBACrC,iBAAiB,EAAE,WAAW;oBAC9B,yBAAyB,EAAE,IAAI;oBAC/B,yBAAyB,EAAE,IAAI;oBAC/B,yBAAyB,EAAE,yBAAyB,CAClD,SAAS,EACT,MAAM,CACP;oBACD,4BAA4B,EAAE,4BAA4B,CACxD,SAAS,EACT,MAAM,CACP;oBACD,yBAAyB,EAAE,yBAAyB,CAClD,SAAS,EACT,MAAM,CACP;oBACD,4BAA4B,EAAE,4BAA4B,CACxD,SAAS,EACT,MAAM,CACP;iBACF;aACF;SACF,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -1,6 +1,12 @@
1
+ import type { SeamActionAttemptFailedError, SeamActionAttemptTimeoutError, SeamHttpApiError, ThermostatsHeatBody } from '@seamapi/http/connect';
2
+ import type { ActionAttempt } from '@seamapi/types/connect';
1
3
  import { type UseMutationResult } from '@tanstack/react-query';
2
- import type { SeamError, ThermostatHeatRequest } from 'seamapi';
3
- type UseHeatThermostatData = Record<string, unknown>;
4
- type UseHeatThermostatMutationParams = ThermostatHeatRequest;
5
- export declare function useHeatThermostat(): UseMutationResult<UseHeatThermostatData, SeamError, UseHeatThermostatMutationParams>;
4
+ export type UseHeatThermostatParams = never;
5
+ export type UseHeatThermostatData = undefined;
6
+ export type UseHeatThermostatMutationVariables = Pick<ThermostatsHeatBody, 'device_id' | 'heating_set_point_celsius' | 'heating_set_point_fahrenheit'>;
7
+ type HeatThermostatActionAttempt = Extract<ActionAttempt, {
8
+ action_type: 'SET_HEAT';
9
+ }>;
10
+ type MutationError = SeamHttpApiError | SeamActionAttemptFailedError<HeatThermostatActionAttempt> | SeamActionAttemptTimeoutError<HeatThermostatActionAttempt>;
11
+ export declare function useHeatThermostat(): UseMutationResult<UseHeatThermostatData, MutationError, UseHeatThermostatMutationVariables>;
6
12
  export {};
@@ -1,50 +1,57 @@
1
1
  import { useMutation, useQueryClient, } from '@tanstack/react-query';
2
+ import { getHeatingSetPointCelsius, getHeatingSetPointFahrenheit, } from '../../../lib/seam/thermostats/unit-conversion.js';
2
3
  import { NullSeamClientError, useSeamClient } from '../../../lib/seam/use-seam-client.js';
3
4
  export function useHeatThermostat() {
4
5
  const { client } = useSeamClient();
5
6
  const queryClient = useQueryClient();
6
7
  return useMutation({
7
- mutationFn: async (mutationParams) => {
8
+ mutationFn: async (variables) => {
8
9
  if (client === null)
9
10
  throw new NullSeamClientError();
10
- return await client.thermostats.heat(mutationParams);
11
+ await client.thermostats.heat(variables);
11
12
  },
12
13
  onSuccess: (_data, variables) => {
13
- queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (thermostat) => {
14
- if (thermostat == null) {
14
+ queryClient.setQueryData(['devices', 'get', { device_id: variables.device_id }], (device) => {
15
+ if (device == null) {
15
16
  return;
16
17
  }
17
- return getUpdatedThermostat(thermostat, variables);
18
+ return getUpdatedDevice(device, variables);
18
19
  });
19
- queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (thermostats) => {
20
- if (thermostats == null) {
20
+ queryClient.setQueryData(['devices', 'list', { device_id: variables.device_id }], (devices) => {
21
+ if (devices == null) {
21
22
  return [];
22
23
  }
23
- return thermostats.map((thermostat) => {
24
- if (thermostat.device_id === variables.device_id) {
25
- return getUpdatedThermostat(thermostat, variables);
24
+ return devices.map((device) => {
25
+ if (device.device_id === variables.device_id) {
26
+ return getUpdatedDevice(device, variables);
26
27
  }
27
- return thermostat;
28
+ return device;
28
29
  });
29
30
  });
30
31
  },
31
32
  });
32
33
  }
33
- function getUpdatedThermostat(thermostat, variables) {
34
- return {
35
- ...thermostat,
36
- properties: {
37
- ...thermostat.properties,
38
- current_climate_setting: {
39
- ...thermostat.properties.current_climate_setting,
40
- heating_set_point_fahrenheit: variables.heating_set_point_fahrenheit ??
41
- thermostat.properties.current_climate_setting
42
- .heating_set_point_fahrenheit,
43
- heating_set_point_celsius: variables.heating_set_point_celsius ??
44
- thermostat.properties.current_climate_setting
45
- .heating_set_point_celsius,
34
+ const getUpdatedDevice = (device, variables) => {
35
+ const { properties } = device;
36
+ if ('current_climate_setting' in properties &&
37
+ properties.current_climate_setting != null) {
38
+ return {
39
+ ...device,
40
+ properties: {
41
+ ...properties,
42
+ current_climate_setting: {
43
+ ...properties.current_climate_setting,
44
+ hvac_mode_setting: 'heat',
45
+ automatic_heating_enabled: true,
46
+ automatic_cooling_enabled: false,
47
+ cooling_set_point_celsius: undefined,
48
+ cooling_set_point_fahrenheit: undefined,
49
+ heating_set_point_celsius: getHeatingSetPointCelsius(variables, device),
50
+ heating_set_point_fahrenheit: getHeatingSetPointFahrenheit(variables, device),
51
+ },
46
52
  },
47
- },
48
- };
49
- }
53
+ };
54
+ }
55
+ return device;
56
+ };
50
57
  //# sourceMappingURL=use-heat-thermostat.js.map