@switchbot/homebridge-switchbot 5.0.0-beta.110 → 5.0.0-beta.112

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 (57) hide show
  1. package/.github/copilot-instructions.md +39 -0
  2. package/dist/homebridge-ui/endpoints/devices.d.ts.map +1 -1
  3. package/dist/homebridge-ui/endpoints/devices.js +10 -1
  4. package/dist/homebridge-ui/endpoints/devices.js.map +1 -1
  5. package/dist/homebridge-ui/public/css/styles.css +111 -16
  6. package/dist/homebridge-ui/public/index.html +34 -60
  7. package/dist/homebridge-ui/public/js/api.d.ts +5 -1
  8. package/dist/homebridge-ui/public/js/api.d.ts.map +1 -1
  9. package/dist/homebridge-ui/public/js/api.js +13 -3
  10. package/dist/homebridge-ui/public/js/api.js.map +1 -1
  11. package/dist/homebridge-ui/public/js/api.ts +13 -3
  12. package/dist/homebridge-ui/public/js/app.js +338 -42
  13. package/dist/homebridge-ui/public/js/app.js.map +3 -3
  14. package/dist/homebridge-ui/public/js/devices.d.ts.map +1 -1
  15. package/dist/homebridge-ui/public/js/devices.js +12 -3
  16. package/dist/homebridge-ui/public/js/devices.js.map +1 -1
  17. package/dist/homebridge-ui/public/js/devices.ts +13 -3
  18. package/dist/homebridge-ui/public/js/discovery.d.ts.map +1 -1
  19. package/dist/homebridge-ui/public/js/discovery.js +37 -3
  20. package/dist/homebridge-ui/public/js/discovery.js.map +1 -1
  21. package/dist/homebridge-ui/public/js/discovery.ts +39 -2
  22. package/dist/homebridge-ui/public/js/modals.d.ts +5 -0
  23. package/dist/homebridge-ui/public/js/modals.d.ts.map +1 -1
  24. package/dist/homebridge-ui/public/js/modals.js +146 -0
  25. package/dist/homebridge-ui/public/js/modals.js.map +1 -1
  26. package/dist/homebridge-ui/public/js/modals.ts +167 -0
  27. package/dist/homebridge-ui/public/js/render.d.ts +3 -1
  28. package/dist/homebridge-ui/public/js/render.d.ts.map +1 -1
  29. package/dist/homebridge-ui/public/js/render.js +135 -32
  30. package/dist/homebridge-ui/public/js/render.js.map +1 -1
  31. package/dist/homebridge-ui/public/js/render.ts +145 -32
  32. package/dist/platform.d.ts.map +1 -1
  33. package/dist/platform.js +64 -109
  34. package/dist/platform.js.map +1 -1
  35. package/dist/utils.d.ts.map +1 -1
  36. package/dist/utils.js +2 -1
  37. package/dist/utils.js.map +1 -1
  38. package/docs/variables/default.html +1 -1
  39. package/package.json +9 -8
  40. package/src/homebridge-ui/endpoints/devices.ts +5 -2
  41. package/src/homebridge-ui/public/css/styles.css +111 -16
  42. package/src/homebridge-ui/public/index.html +34 -60
  43. package/src/homebridge-ui/public/js/api.ts +13 -3
  44. package/src/homebridge-ui/public/js/devices.ts +13 -3
  45. package/src/homebridge-ui/public/js/discovery.ts +39 -2
  46. package/src/homebridge-ui/public/js/modals.ts +167 -0
  47. package/src/homebridge-ui/public/js/render.ts +145 -32
  48. package/src/platform.ts +77 -109
  49. package/src/utils.ts +2 -1
  50. package/test/e2e/run-e2e.spec.ts +12 -10
  51. package/test/helpers/matter-harness.ts +2 -2
  52. package/test/matter-childbridge.spec.ts +5 -1
  53. package/test/matter-integration.spec.ts +41 -0
  54. package/test/utils.spec.ts +18 -2
  55. package/todo/COMPLETED.md +53 -0
  56. package/todo/TODO.md +13 -42
  57. package/switchbot-homebridge-switchbot-5.0.0.tgz +0 -0
@@ -1,6 +1,173 @@
1
1
  import { DEVICE_TYPES } from './constants.js'
2
2
  import { uiLog } from './logger.js'
3
3
 
4
+ export async function importDiscoveredDevice(device: any): Promise<{ configDeviceName: string, configDeviceType: string, address?: string } | null> {
5
+ return new Promise((resolve) => {
6
+ const div = document.createElement('div')
7
+ div.style.position = 'fixed'
8
+ div.style.top = '0'
9
+ div.style.left = '0'
10
+ div.style.width = '100%'
11
+ div.style.height = '100%'
12
+ div.style.background = 'rgba(0,0,0,0.7)'
13
+ div.style.display = 'flex'
14
+ div.style.alignItems = 'center'
15
+ div.style.justifyContent = 'center'
16
+ div.style.zIndex = '9999'
17
+
18
+ const modal = document.createElement('div')
19
+ modal.style.background = getComputedStyle(document.body).backgroundColor
20
+ modal.style.color = getComputedStyle(document.body).color
21
+ modal.style.padding = '0'
22
+ modal.style.borderRadius = '10px'
23
+ modal.style.minWidth = '440px'
24
+ modal.style.maxWidth = '90vw'
25
+ modal.style.boxShadow = '0 8px 32px rgba(0,0,0,0.35)'
26
+ modal.style.overflow = 'hidden'
27
+ modal.style.borderTop = '3px solid var(--switchbot-red, #ef4444)'
28
+
29
+ const title = document.createElement('h3')
30
+ title.textContent = 'Import Discovered Device'
31
+ title.style.marginTop = '0'
32
+ title.style.marginBottom = '16px'
33
+ title.style.padding = '20px 20px 0'
34
+ title.style.fontSize = '18px'
35
+ title.style.fontWeight = '600'
36
+ title.style.color = 'var(--switchbot-red, #ef4444)'
37
+ title.style.letterSpacing = '-0.02em'
38
+
39
+ const contentDiv = document.createElement('div')
40
+ contentDiv.style.padding = '0 20px 20px'
41
+
42
+ const nameLabel = document.createElement('label')
43
+ nameLabel.textContent = 'Device Name'
44
+ nameLabel.style.display = 'block'
45
+ nameLabel.style.marginBottom = '6px'
46
+ nameLabel.style.fontWeight = '500'
47
+ nameLabel.style.fontSize = '12px'
48
+ nameLabel.style.color = '#6b7280'
49
+
50
+ const nameInput = document.createElement('input')
51
+ nameInput.type = 'text'
52
+ nameInput.value = device.name || device.id || ''
53
+ nameInput.style.width = '100%'
54
+ nameInput.style.marginBottom = '12px'
55
+ nameInput.style.padding = '8px 10px'
56
+ nameInput.style.borderRadius = '6px'
57
+ nameInput.style.fontSize = '14px'
58
+ nameInput.style.boxSizing = 'border-box'
59
+
60
+ const typeLabel = document.createElement('label')
61
+ typeLabel.textContent = 'Config Device Type'
62
+ typeLabel.style.display = 'block'
63
+ typeLabel.style.marginBottom = '6px'
64
+ typeLabel.style.fontWeight = '500'
65
+ typeLabel.style.fontSize = '12px'
66
+ typeLabel.style.color = '#6b7280'
67
+
68
+ const typeSelect = document.createElement('select')
69
+ typeSelect.style.width = '100%'
70
+ typeSelect.style.padding = '8px 10px'
71
+ typeSelect.style.marginBottom = '12px'
72
+ typeSelect.style.borderRadius = '6px'
73
+ typeSelect.style.fontSize = '14px'
74
+ typeSelect.style.background = getComputedStyle(nameInput).background
75
+ typeSelect.style.color = getComputedStyle(nameInput).color
76
+ typeSelect.style.border = getComputedStyle(nameInput).border
77
+ typeSelect.style.boxSizing = 'border-box'
78
+
79
+ Object.keys(DEVICE_TYPES).forEach((categoryName) => {
80
+ const optgroup = document.createElement('optgroup')
81
+ optgroup.label = categoryName
82
+
83
+ DEVICE_TYPES[categoryName as keyof typeof DEVICE_TYPES].forEach((deviceType) => {
84
+ const opt = document.createElement('option')
85
+ opt.value = deviceType
86
+ opt.text = deviceType
87
+ const detectedType = (device.type || '').toLowerCase()
88
+ opt.selected = deviceType.toLowerCase() === detectedType
89
+ optgroup.appendChild(opt)
90
+ })
91
+
92
+ typeSelect.appendChild(optgroup)
93
+ })
94
+
95
+ const macLabel = document.createElement('label')
96
+ macLabel.textContent = 'BLE MAC Address (optional)'
97
+ macLabel.style.display = 'block'
98
+ macLabel.style.marginBottom = '6px'
99
+ macLabel.style.fontWeight = '500'
100
+ macLabel.style.fontSize = '12px'
101
+ macLabel.style.color = '#6b7280'
102
+
103
+ const macInput = document.createElement('input')
104
+ macInput.type = 'text'
105
+ macInput.value = device.address || ''
106
+ macInput.placeholder = 'AA:BB:CC:DD:EE:FF'
107
+ macInput.style.width = '100%'
108
+ macInput.style.marginBottom = '12px'
109
+ macInput.style.padding = '8px 10px'
110
+ macInput.style.borderRadius = '6px'
111
+ macInput.style.fontSize = '14px'
112
+ macInput.style.boxSizing = 'border-box'
113
+
114
+ const buttons = document.createElement('div')
115
+ buttons.style.display = 'flex'
116
+ buttons.style.gap = '10px'
117
+ buttons.style.justifyContent = 'flex-end'
118
+ buttons.style.marginTop = '18px'
119
+ buttons.style.paddingTop = '18px'
120
+ buttons.style.borderTop = '1px solid rgba(0, 0, 0, 0.08)'
121
+
122
+ const cancelBtn = document.createElement('button')
123
+ cancelBtn.textContent = 'Cancel'
124
+ cancelBtn.className = 'secondary'
125
+ cancelBtn.style.background = '#6b7280'
126
+ cancelBtn.style.padding = '8px 16px'
127
+ cancelBtn.style.fontSize = '13px'
128
+
129
+ const importBtn = document.createElement('button')
130
+ importBtn.textContent = 'Add to Config'
131
+ importBtn.style.background = 'var(--switchbot-red, #ef4444)'
132
+ importBtn.style.padding = '8px 20px'
133
+ importBtn.style.fontSize = '13px'
134
+
135
+ const cleanup = (result: { configDeviceName: string, configDeviceType: string, address?: string } | null) => {
136
+ div.remove()
137
+ resolve(result)
138
+ }
139
+
140
+ cancelBtn.onclick = () => cleanup(null)
141
+ importBtn.onclick = () => cleanup({
142
+ configDeviceName: nameInput.value || device.name || device.id,
143
+ configDeviceType: typeSelect.value || device.type,
144
+ address: macInput.value || undefined,
145
+ })
146
+
147
+ div.addEventListener('click', (event) => {
148
+ if (event.target === div) {
149
+ cleanup(null)
150
+ }
151
+ })
152
+
153
+ buttons.appendChild(cancelBtn)
154
+ buttons.appendChild(importBtn)
155
+ contentDiv.appendChild(nameLabel)
156
+ contentDiv.appendChild(nameInput)
157
+ contentDiv.appendChild(typeLabel)
158
+ contentDiv.appendChild(typeSelect)
159
+ contentDiv.appendChild(macLabel)
160
+ contentDiv.appendChild(macInput)
161
+ contentDiv.appendChild(buttons)
162
+
163
+ modal.appendChild(title)
164
+ modal.appendChild(contentDiv)
165
+ div.appendChild(modal)
166
+ document.body.appendChild(div)
167
+ nameInput.focus()
168
+ })
169
+ }
170
+
4
171
  export async function editDevice(device: any): Promise<void> {
5
172
  // Create modal dialog for editing
6
173
  const div = document.createElement('div')
@@ -25,7 +25,9 @@ export declare function renderSignalQualityBadge(rssi: number | undefined): HTML
25
25
  export declare function renderBadge(text: string, style: string): HTMLElement;
26
26
  export declare function renderConnectionBadge(connectionType: string): HTMLElement | null;
27
27
  export declare function renderIRBadge(): HTMLElement;
28
- export declare function renderDiscoveredDevices(devices: any[]): Promise<HTMLElement>;
28
+ export declare function renderDiscoveredDevices(devices: any[], options?: {
29
+ configuredIds?: Set<string>;
30
+ }): Promise<HTMLElement>;
29
31
  /**
30
32
  * Filter devices by connection type and search query
31
33
  * @param devices Discovered devices array
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/render.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG;IAC9D,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACzD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb,CA8CA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CA+BtE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAiB9E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAKpE;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAiBhF;AAED,wBAAgB,aAAa,IAAI,WAAW,CAK3C;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAsFlF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,GAAG,EAAE,EACd,cAAc,GAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAY,EAC7D,WAAW,SAAK,GACf,GAAG,EAAE,CAmCP;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,EAAE,EACd,MAAM,GAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAqB,GACzD,GAAG,EAAE,CA8CP;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI;IACzC,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACrD,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAA;IACjD,WAAW,EAAE,MAAM,CAAA;CACpB,CAeA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE;IACnD,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACrD,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAA;IACjD,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,IAAI,CAMP;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAuHlD"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/render.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG;IAC9D,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACzD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACb,CA8CA;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CA+BtE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAiB9E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAKpE;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAiBhF;AAED,wBAAgB,aAAa,IAAI,WAAW,CAK3C;AAwBD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,GAAG,EAAE,EACd,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAO,GAC5C,OAAO,CAAC,WAAW,CAAC,CA2JtB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,GAAG,EAAE,EACd,cAAc,GAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAY,EAC7D,WAAW,SAAK,GACf,GAAG,EAAE,CAmCP;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,EAAE,EACd,MAAM,GAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAqB,GACzD,GAAG,EAAE,CA8CP;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI;IACzC,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACrD,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAA;IACjD,WAAW,EAAE,MAAM,CAAA;CACpB,CAeA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE;IACnD,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACrD,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAA;IACjD,WAAW,EAAE,MAAM,CAAA;CACpB,GAAG,IAAI,CAMP;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CA0IlD"}
@@ -132,37 +132,70 @@ export function renderConnectionBadge(connectionType) {
132
132
  export function renderIRBadge() {
133
133
  return renderBadge('IR', 'background: #ff6b35; color: white; padding: 2px 6px; border-radius: 3px; font-size: 10px; font-weight: 600; margin-left: 8px;');
134
134
  }
135
- export async function renderDiscoveredDevices(devices) {
135
+ function normalizeId(value) {
136
+ return String(value ?? '').trim().toLowerCase();
137
+ }
138
+ function scrollToConfiguredDevice(deviceId) {
139
+ const normalizedId = normalizeId(deviceId);
140
+ const target = document.querySelector(`[data-device-id="${normalizedId}"]`);
141
+ if (!target) {
142
+ return;
143
+ }
144
+ target.scrollIntoView({ behavior: 'smooth', block: 'center' });
145
+ const originalOutline = target.style.outline;
146
+ const originalBackground = target.style.background;
147
+ target.style.outline = '2px solid var(--switchbot-red, #ef4444)';
148
+ target.style.background = 'rgba(239, 68, 68, 0.08)';
149
+ setTimeout(() => {
150
+ target.style.outline = originalOutline;
151
+ target.style.background = originalBackground;
152
+ }, 1800);
153
+ }
154
+ export async function renderDiscoveredDevices(devices, options = {}) {
136
155
  const ul = document.createElement('ul');
156
+ ul.className = 'device-grid';
137
157
  ul.style.maxHeight = '400px';
138
158
  ul.style.overflowY = 'auto';
139
159
  ul.style.marginTop = '12px';
140
160
  ul.style.padding = '0';
141
161
  ul.style.listStyle = 'none';
142
162
  const { addDeviceToConfig } = await import('./discovery.js');
163
+ const { loadConfiguredDevices } = await import('./devices.js');
164
+ const configuredIds = options.configuredIds ?? new Set();
143
165
  for (const d of devices) {
166
+ const deviceId = normalizeId(d.id);
167
+ const alreadyAdded = configuredIds.has(deviceId);
144
168
  const li = document.createElement('li');
145
169
  li.className = 'device-item';
146
170
  li.style.display = 'flex';
147
- li.style.alignItems = 'center';
148
- li.style.justifyContent = 'space-between';
149
- li.style.padding = '10px 12px';
150
- li.style.marginBottom = '6px';
151
- li.style.borderRadius = '6px';
171
+ li.style.flexDirection = 'column';
172
+ li.style.alignItems = 'stretch';
173
+ li.style.justifyContent = 'flex-start';
174
+ li.style.padding = '5px 8px';
175
+ li.style.marginBottom = '0';
176
+ li.style.borderRadius = '5px';
152
177
  li.style.transition = 'all 0.2s ease';
153
178
  const info = document.createElement('div');
154
- info.style.flex = '1';
179
+ info.style.flex = '1 1 auto';
180
+ info.style.width = '100%';
181
+ info.style.minWidth = '0';
155
182
  const nameContainer = document.createElement('div');
156
183
  nameContainer.style.display = 'flex';
157
184
  nameContainer.style.alignItems = 'center';
158
- nameContainer.style.marginBottom = '4px';
185
+ nameContainer.style.marginBottom = '0';
159
186
  nameContainer.style.flexWrap = 'wrap';
160
- nameContainer.style.gap = '6px';
187
+ nameContainer.style.gap = '4px';
161
188
  const name = document.createElement('div');
162
189
  name.style.fontWeight = '500';
163
- name.style.fontSize = '14px';
190
+ name.style.fontSize = '13px';
164
191
  name.textContent = d.name || d.id;
165
192
  nameContainer.appendChild(name);
193
+ const duplicateBadge = document.createElement('span');
194
+ duplicateBadge.textContent = alreadyAdded ? '✓ Already Added' : '➕ New Device';
195
+ duplicateBadge.style.cssText = alreadyAdded
196
+ ? 'background: #16a34a; color: white; padding: 1px 5px; border-radius: 3px; font-size: 9px; font-weight: 600;'
197
+ : 'background: #2563eb; color: white; padding: 1px 5px; border-radius: 3px; font-size: 9px; font-weight: 600;';
198
+ nameContainer.appendChild(duplicateBadge);
166
199
  // Add connection type badge
167
200
  if (d.connectionType) {
168
201
  const badge = renderConnectionBadge(d.connectionType);
@@ -180,10 +213,13 @@ export async function renderDiscoveredDevices(devices) {
180
213
  nameContainer.appendChild(renderSignalQualityBadge(d.rssi));
181
214
  }
182
215
  const details = document.createElement('div');
183
- details.style.fontSize = '11px';
216
+ details.style.fontSize = '10px';
184
217
  details.style.opacity = '0.7';
185
- details.style.marginTop = '4px';
218
+ details.style.marginTop = '0';
186
219
  details.style.fontFamily = 'monospace';
220
+ details.style.whiteSpace = 'normal';
221
+ details.style.overflowWrap = 'anywhere';
222
+ details.style.wordBreak = 'break-word';
187
223
  let detailsText = `ID: ${d.id} | Type: ${d.type} | Model: ${d.model || 'N/A'}`;
188
224
  if (d.hubDeviceId) {
189
225
  detailsText += ` | Hub: ${d.hubDeviceId}`;
@@ -195,17 +231,65 @@ export async function renderDiscoveredDevices(devices) {
195
231
  info.appendChild(nameContainer);
196
232
  info.appendChild(details);
197
233
  const addBtn = document.createElement('button');
198
- addBtn.textContent = '+ Add';
199
- addBtn.style.marginLeft = '8px';
200
- addBtn.style.padding = '6px 14px';
201
- addBtn.style.fontSize = '12px';
234
+ addBtn.textContent = alreadyAdded ? 'Already Added' : 'Add to Config';
235
+ addBtn.style.marginLeft = '0';
236
+ addBtn.style.marginTop = '2px';
237
+ addBtn.style.padding = '4px 9px';
238
+ addBtn.style.fontSize = '11px';
202
239
  addBtn.style.whiteSpace = 'nowrap';
203
240
  addBtn.style.flexShrink = '0';
241
+ addBtn.disabled = alreadyAdded;
242
+ if (alreadyAdded) {
243
+ addBtn.style.opacity = '0.65';
244
+ addBtn.style.cursor = 'not-allowed';
245
+ addBtn.style.background = '#6b7280';
246
+ }
204
247
  addBtn.onclick = async () => {
248
+ if (alreadyAdded) {
249
+ return;
250
+ }
205
251
  await addDeviceToConfig(d);
206
252
  };
253
+ if (alreadyAdded) {
254
+ const viewBtn = document.createElement('button');
255
+ viewBtn.textContent = 'View in Config';
256
+ viewBtn.className = 'secondary';
257
+ viewBtn.style.marginLeft = '0';
258
+ viewBtn.style.padding = '4px 9px';
259
+ viewBtn.style.fontSize = '11px';
260
+ viewBtn.onclick = async () => {
261
+ await loadConfiguredDevices();
262
+ scrollToConfiguredDevice(d.id);
263
+ };
264
+ li.appendChild(info);
265
+ const actions = document.createElement('div');
266
+ actions.className = 'device-actions';
267
+ actions.style.display = 'flex';
268
+ actions.style.alignItems = 'center';
269
+ actions.style.flexWrap = 'wrap';
270
+ actions.style.justifyContent = 'flex-start';
271
+ actions.style.marginLeft = '0';
272
+ actions.style.width = '100%';
273
+ actions.style.marginTop = '2px';
274
+ actions.style.gap = '5px';
275
+ actions.appendChild(viewBtn);
276
+ actions.appendChild(addBtn);
277
+ li.appendChild(actions);
278
+ ul.appendChild(li);
279
+ continue;
280
+ }
281
+ const actions = document.createElement('div');
282
+ actions.className = 'device-actions';
283
+ actions.style.display = 'flex';
284
+ actions.style.flexWrap = 'wrap';
285
+ actions.style.justifyContent = 'flex-start';
286
+ actions.style.marginLeft = '0';
287
+ actions.style.width = '100%';
288
+ actions.style.marginTop = '2px';
289
+ actions.style.gap = '5px';
290
+ actions.appendChild(addBtn);
207
291
  li.appendChild(info);
208
- li.appendChild(addBtn);
292
+ li.appendChild(actions);
209
293
  ul.appendChild(li);
210
294
  }
211
295
  return ul;
@@ -350,6 +434,7 @@ export function renderDeviceList(list) {
350
434
  return;
351
435
  }
352
436
  status.textContent = `Found ${list.length} device(s)`;
437
+ ul.classList.add('device-grid');
353
438
  ul.innerHTML = '';
354
439
  // Show remove all button when devices exist
355
440
  if (removeAllContainer) {
@@ -358,21 +443,33 @@ export function renderDeviceList(list) {
358
443
  for (const d of list) {
359
444
  const li = document.createElement('li');
360
445
  li.className = 'device-item';
446
+ li.setAttribute('data-device-id', normalizeId(d.id));
447
+ li.style.display = 'flex';
448
+ li.style.flexDirection = 'column';
449
+ li.style.alignItems = 'stretch';
450
+ li.style.marginBottom = '0';
361
451
  const info = document.createElement('div');
362
- info.style.flex = '1';
452
+ info.style.flex = '1 1 auto';
453
+ info.style.width = '100%';
454
+ info.style.minWidth = '0';
363
455
  const nameContainer = document.createElement('div');
364
456
  nameContainer.style.display = 'flex';
365
- nameContainer.style.alignItems = 'center';
366
- nameContainer.style.flexWrap = 'wrap';
367
- nameContainer.style.gap = '6px';
457
+ nameContainer.style.flexDirection = 'column';
458
+ nameContainer.style.alignItems = 'flex-start';
459
+ nameContainer.style.gap = '0';
368
460
  const name = document.createElement('div');
369
461
  name.style.fontWeight = '500';
462
+ name.style.fontSize = '13px';
370
463
  name.textContent = d.name || d.id;
371
464
  const code = document.createElement('code');
372
465
  code.textContent = d.id;
373
- code.style.fontSize = '12px';
466
+ code.style.fontSize = '10px';
374
467
  code.style.opacity = '0.75';
375
- code.style.marginLeft = '8px';
468
+ code.style.marginLeft = '0';
469
+ code.style.whiteSpace = 'normal';
470
+ code.style.overflowWrap = 'anywhere';
471
+ code.style.wordBreak = 'break-word';
472
+ code.style.maxWidth = '100%';
376
473
  nameContainer.appendChild(name);
377
474
  nameContainer.appendChild(code);
378
475
  // Add signal strength visualization if RSSI is available
@@ -382,8 +479,8 @@ export function renderDeviceList(list) {
382
479
  }
383
480
  const meta = document.createElement('div');
384
481
  meta.style.opacity = '0.75';
385
- meta.style.marginTop = '4px';
386
- meta.style.fontSize = '12px';
482
+ meta.style.marginTop = '0';
483
+ meta.style.fontSize = '11px';
387
484
  const typeText = d.type ? `type: ${d.type}` : '';
388
485
  const connText = d.connectionPreference ? `conn: ${d.connectionPreference}` : '';
389
486
  const roomText = d.room ? `room: ${d.room}` : '';
@@ -391,20 +488,26 @@ export function renderDeviceList(list) {
391
488
  info.appendChild(nameContainer);
392
489
  info.appendChild(meta);
393
490
  const buttons = document.createElement('div');
491
+ buttons.className = 'device-actions';
394
492
  buttons.style.display = 'flex';
395
- buttons.style.gap = '8px';
493
+ buttons.style.flexWrap = 'wrap';
494
+ buttons.style.justifyContent = 'flex-start';
495
+ buttons.style.marginLeft = '0';
496
+ buttons.style.width = '100%';
497
+ buttons.style.marginTop = '2px';
498
+ buttons.style.gap = '5px';
396
499
  const editBtn = document.createElement('button');
397
500
  editBtn.textContent = '✏️ Edit';
398
- editBtn.style.padding = '6px 12px';
399
- editBtn.style.fontSize = '12px';
501
+ editBtn.style.padding = '4px 9px';
502
+ editBtn.style.fontSize = '11px';
400
503
  editBtn.onclick = async () => {
401
504
  const { editDevice } = await import('./modals.js');
402
505
  await editDevice(d);
403
506
  };
404
507
  const copyBtn = document.createElement('button');
405
508
  copyBtn.textContent = 'Copy ID';
406
- copyBtn.style.padding = '6px 12px';
407
- copyBtn.style.fontSize = '12px';
509
+ copyBtn.style.padding = '4px 9px';
510
+ copyBtn.style.fontSize = '11px';
408
511
  copyBtn.addEventListener('click', async () => {
409
512
  try {
410
513
  await navigator.clipboard.writeText(d.id);
@@ -421,8 +524,8 @@ export function renderDeviceList(list) {
421
524
  });
422
525
  const deleteBtn = document.createElement('button');
423
526
  deleteBtn.textContent = '🗑️ Delete';
424
- deleteBtn.style.padding = '6px 12px';
425
- deleteBtn.style.fontSize = '12px';
527
+ deleteBtn.style.padding = '4px 9px';
528
+ deleteBtn.style.fontSize = '11px';
426
529
  deleteBtn.style.background = '#ef4444';
427
530
  deleteBtn.onclick = async () => {
428
531
  const { deleteDeviceFromConfig } = await import('./devices-delete.js');
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/render.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAO3D,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,yBAAyB;YACtC,IAAI,EAAE,CAAC;SACR,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAE5B,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,cAAc,GAAG,OAAO;YACrC,IAAI,EAAE,CAAC;SACR,CAAA;IACH,CAAC;SAAM,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;QACrB,OAAO;YACL,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS,GAAG,OAAO;YAChC,IAAI,EAAE,CAAC;SACR,CAAA;IACH,CAAC;SAAM,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;QACrB,OAAO;YACL,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS,GAAG,OAAO;YAChC,IAAI,EAAE,CAAC;SACR,CAAA;IACH,CAAC;SAAM,CAAC;QACN,OAAO;YACL,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS,GAAG,oBAAoB;YAC7C,IAAI,EAAE,CAAC;SACR,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAwB;IACvD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAE1C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAChD,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAA;IACvC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAA;IAC3B,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;IACrC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;IAClC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;IAEjC,gBAAgB;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC1C,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAA;QAC/B,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;QACvB,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;QAC9B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,OAAO,CAAC,KAAK,EAAE,CAAA;QAE/C,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAA;QAC3C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAA;QAC3C,CAAC;QAED,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,cAAc;IACd,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAA;IAErC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAwB;IAC/D,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAE1C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5C,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClF,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG;kBACN,OAAO,CAAC,KAAK;;;;;;;GAO5B,CAAA;IACD,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAA;IAEjC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAa;IACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;IAC3B,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IAE7C,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,KAAK,CAAC,OAAO;cACf,+HAA+H,CAAA;IACrI,CAAC;SAAM,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC,OAAO;cACf,+HAA+H,CAAA;IACrI,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,KAAK,CAAC,OAAO;cACf,+HAA+H,CAAA;IACrI,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAChB,IAAI,EACJ,+HAA+H,CAChI,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAc;IAC1D,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACvC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAA;IAC5B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;IAC3B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;IAC3B,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;IACtB,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;IAE3B,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAE5D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACvC,EAAE,CAAC,SAAS,GAAG,aAAa,CAAA;QAC5B,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QACzB,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;QAC9B,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,eAAe,CAAA;QACzC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,CAAA;QAC9B,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;QAC7B,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;QAC7B,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,eAAe,CAAA;QAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAA;QAErB,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACnD,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QACpC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;QACzC,aAAa,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;QACxC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QACrC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAA;QAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC5B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAA;QAEjC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAE/B,4BAA4B;QAC5B,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,qBAAqB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;YACrD,IAAI,KAAK,EAAE,CAAC;gBAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;QACjD,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,aAAa,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5D,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACnD,aAAa,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;QAC7B,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAA;QAC/B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAA;QAEtC,IAAI,WAAW,GAAG,OAAO,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,KAAK,IAAI,KAAK,EAAE,CAAA;QAC9E,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAAC,WAAW,IAAI,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;QAAC,CAAC;QAChE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAAC,WAAW,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,CAAA;QAAC,CAAC;QACxD,OAAO,CAAC,WAAW,GAAG,WAAW,CAAA;QAEjC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;QAC/B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAEzB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,CAAC,WAAW,GAAG,OAAO,CAAA;QAC5B,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;QAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAA;QACjC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC9B,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;QAClC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAA;QAC7B,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;YAC1B,MAAM,iBAAiB,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC,CAAA;QAED,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACpB,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QACtB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACpB,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAc,EACd,iBAAwD,KAAK,EAC7D,WAAW,GAAG,EAAE;IAEhB,IAAI,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;IAE3B,4BAA4B;IAC5B,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAA;YACxB,CAAC;YACD,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,CAAC,cAAc,KAAK,KAAK,IAAI,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;YACxE,CAAC;YACD,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC7B,OAAO,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,CAAC,cAAc,KAAK,KAAK,IAAI,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC1G,CAAC;YACD,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;gBAC9B,OAAO,CAAC,CAAC,cAAc,KAAK,MAAM,IAAI,CAAC,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC1E,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;QACvC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YACzC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YACrC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YACzC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;YAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACpG,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,OAAc,EACd,SAAoD,MAAM;IAE1D,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;IAE3B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,mDAAmD;YACnD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;gBACzB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;gBACzB,OAAO,KAAK,GAAG,KAAK,CAAA,CAAC,wCAAwC;YAC/D,CAAC,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,qCAAqC;YACrC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;gBACxD,OAAO,KAAK,CAAA;YACd,CAAC,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,yDAAyD;YACzD,MAAM,eAAe,GAA2B;gBAC9C,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,CAAC;gBACZ,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,CAAC;aACb,CAAA;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;gBAClE,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;gBAClE,OAAO,MAAM,GAAG,MAAM,CAAA;YACxB,CAAC,CAAC,CAAA;YACF,MAAK;QACP,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC;YACR,8BAA8B;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACjF,MAAK;QACP,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IAKrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;QAC3D,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,sBAAsB;IACxB,CAAC;IAED,OAAO;QACL,cAAc,EAAE,KAAK;QACrB,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,EAAE;KAChB,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAIvC;IACC,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;IAC3E,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,wBAAwB;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAW;IAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;IAExE,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAM;IAAC,CAAC;IAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,WAAW,GAAG,6BAA6B,CAAA;QAClD,EAAE,CAAC,SAAS,GAAG,EAAE,CAAA;QACjB,yCAAyC;QACzC,IAAI,kBAAkB,EAAE,CAAC;YACvB,kBAAkB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC3C,CAAC;QACD,OAAM;IACR,CAAC;IAED,MAAM,CAAC,WAAW,GAAG,SAAS,IAAI,CAAC,MAAM,YAAY,CAAA;IACrD,EAAE,CAAC,SAAS,GAAG,EAAE,CAAA;IAEjB,4CAA4C;IAC5C,IAAI,kBAAkB,EAAE,CAAC;QACvB,kBAAkB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;IAC5C,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACvC,EAAE,CAAC,SAAS,GAAG,aAAa,CAAA;QAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAA;QAErB,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACnD,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QACpC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAA;QACzC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QACrC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAA;QAE/B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;QAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAA;QAEjC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAA;QACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAA;QAE7B,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC/B,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAE/B,yDAAyD;QACzD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5D,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YACnD,aAAa,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QAE5B,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAChD,MAAM,QAAQ,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAChF,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAChD,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAE7E,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAEtB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC7C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAA;QAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAA;QAEzB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAChD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAA;QAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC/B,OAAO,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;YAC3B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YAClD,MAAM,UAAU,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC,CAAA;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAChD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAA;QAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QAC/B,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC3C,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACzC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAA;gBAC9B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAChC,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAA;oBAC/B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;gBACrC,CAAC,EAAE,IAAI,CAAC,CAAA;YACV,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACzB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAClD,SAAS,CAAC,WAAW,GAAG,YAAY,CAAA;QACpC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAA;QACpC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;QACjC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAA;QACtC,SAAS,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;YAC7B,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAA;YACtE,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;QACpD,CAAC,CAAA;QAED,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC5B,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC5B,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QAE9B,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACpB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACvB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/render.ts"],"names":[],"mappings":"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"}