@homebridge-plugins/homebridge-matter 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +1 -1
- package/config.schema.json +9 -2
- package/dist/devices/AirQualitySensorAccessory.js +4 -2
- package/dist/devices/AirQualitySensorAccessory.js.map +1 -1
- package/dist/devices/BaseMatterAccessory.d.ts +2 -1
- package/dist/devices/BaseMatterAccessory.js +5 -2
- package/dist/devices/BaseMatterAccessory.js.map +1 -1
- package/dist/devices/ColorLightAccessory.js +8 -6
- package/dist/devices/ColorLightAccessory.js.map +1 -1
- package/dist/devices/ColorTemperatureLightAccessory.js +8 -6
- package/dist/devices/ColorTemperatureLightAccessory.js.map +1 -1
- package/dist/devices/ContactSensorAccessory.js +5 -3
- package/dist/devices/ContactSensorAccessory.js.map +1 -1
- package/dist/devices/DimmableLightAccessory.js +6 -4
- package/dist/devices/DimmableLightAccessory.js.map +1 -1
- package/dist/devices/DoorLockAccessory.js +7 -5
- package/dist/devices/DoorLockAccessory.js.map +1 -1
- package/dist/devices/ExtendedColorLightAccessory.js +8 -6
- package/dist/devices/ExtendedColorLightAccessory.js.map +1 -1
- package/dist/devices/FanAccessory.js +8 -6
- package/dist/devices/FanAccessory.js.map +1 -1
- package/dist/devices/GenericSwitchAccessory.d.ts +62 -0
- package/dist/devices/GenericSwitchAccessory.js +119 -0
- package/dist/devices/GenericSwitchAccessory.js.map +1 -0
- package/dist/devices/HumiditySensorAccessory.js +4 -2
- package/dist/devices/HumiditySensorAccessory.js.map +1 -1
- package/dist/devices/LeakSensorAccessory.js +5 -3
- package/dist/devices/LeakSensorAccessory.js.map +1 -1
- package/dist/devices/LightSensorAccessory.js +4 -2
- package/dist/devices/LightSensorAccessory.js.map +1 -1
- package/dist/devices/OccupancySensorAccessory.js +4 -2
- package/dist/devices/OccupancySensorAccessory.js.map +1 -1
- package/dist/devices/OnOffLightAccessory.js +5 -3
- package/dist/devices/OnOffLightAccessory.js.map +1 -1
- package/dist/devices/OnOffOutletAccessory.js +5 -3
- package/dist/devices/OnOffOutletAccessory.js.map +1 -1
- package/dist/devices/OnOffSwitchAccessory.js +5 -3
- package/dist/devices/OnOffSwitchAccessory.js.map +1 -1
- package/dist/devices/RoboticVacuumAccessory.js +4 -2
- package/dist/devices/RoboticVacuumAccessory.js.map +1 -1
- package/dist/devices/SmokeCOAlarmAccessory.js +4 -2
- package/dist/devices/SmokeCOAlarmAccessory.js.map +1 -1
- package/dist/devices/TemperatureSensorAccessory.js +4 -2
- package/dist/devices/TemperatureSensorAccessory.js.map +1 -1
- package/dist/devices/ThermostatAccessory.js +4 -2
- package/dist/devices/ThermostatAccessory.js.map +1 -1
- package/dist/devices/VenetianBlindAccessory.js +6 -4
- package/dist/devices/VenetianBlindAccessory.js.map +1 -1
- package/dist/devices/WindowBlindAccessory.js +5 -3
- package/dist/devices/WindowBlindAccessory.js.map +1 -1
- package/dist/devices/custom/PowerStripAccessory.js +13 -11
- package/dist/devices/custom/PowerStripAccessory.js.map +1 -1
- package/dist/devices/index.d.ts +1 -0
- package/dist/devices/index.js +1 -0
- package/dist/devices/index.js.map +1 -1
- package/dist/platform.d.ts +1 -0
- package/dist/platform.js +42 -32
- package/dist/platform.js.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.js +12 -0
- package/dist/utils.js.map +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@homebridge-plugins/homebridge-matter` will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## v1.4.0 (2026-05-05)
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- feat: add `GenericSwitch` example accessory
|
|
10
|
+
|
|
11
|
+
## v1.3.0 (2026-05-05)
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- chore: dependency updates
|
|
16
|
+
- docs: add `CLAUDE.md` to repo
|
|
17
|
+
- fix: update code for homebridge v2
|
|
18
|
+
|
|
5
19
|
## v1.2.0 (2026-04-05)
|
|
6
20
|
|
|
7
21
|
### Changed
|
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ This plugin provides example implementations of Matter device types in Homebridg
|
|
|
27
27
|
|
|
28
28
|
- To use this plugin, you will need to already have:
|
|
29
29
|
- [Node](https://nodejs.org): latest version of `v22` or `v24` - any other major version is not supported.
|
|
30
|
-
- [Homebridge](https://homebridge.io):
|
|
30
|
+
- [Homebridge](https://homebridge.io): `^2.0.0` - refer to link for more information and installation instructions.
|
|
31
31
|
|
|
32
32
|
### Getting Started
|
|
33
33
|
|
package/config.schema.json
CHANGED
|
@@ -52,6 +52,12 @@
|
|
|
52
52
|
"default": false,
|
|
53
53
|
"description": "Enable the on/off light switch example accessory (Matter Spec § 6.1)."
|
|
54
54
|
},
|
|
55
|
+
"enableGenericSwitch": {
|
|
56
|
+
"title": "Enable Generic Switch",
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"default": false,
|
|
59
|
+
"description": "Enable the generic switch (stateless remote/button) example accessory (Matter Spec § 6.6)."
|
|
60
|
+
},
|
|
55
61
|
"enableAirQualitySensor": {
|
|
56
62
|
"title": "Enable Air Quality Sensor",
|
|
57
63
|
"type": "boolean",
|
|
@@ -176,11 +182,12 @@
|
|
|
176
182
|
{
|
|
177
183
|
"type": "fieldset",
|
|
178
184
|
"title": "Section 6: Switches & Controllers",
|
|
179
|
-
"description": "Matter Specification § 6 - Input devices and control interfaces (
|
|
185
|
+
"description": "Matter Specification § 6 - Input devices and control interfaces (2 devices implemented).",
|
|
180
186
|
"expandable": true,
|
|
181
187
|
"expanded": false,
|
|
182
188
|
"items": [
|
|
183
|
-
"enableOnOffSwitch"
|
|
189
|
+
"enableOnOffSwitch",
|
|
190
|
+
"enableGenericSwitch"
|
|
184
191
|
]
|
|
185
192
|
},
|
|
186
193
|
{
|
|
@@ -8,14 +8,16 @@
|
|
|
8
8
|
* - Temperature
|
|
9
9
|
* - Relative Humidity
|
|
10
10
|
*/
|
|
11
|
+
import { getMatter } from '../utils.js';
|
|
11
12
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
12
13
|
export class AirQualitySensorAccessory extends BaseMatterAccessory {
|
|
13
14
|
constructor(api, log) {
|
|
14
15
|
const serialNumber = 'matter-air-quality-sensor';
|
|
16
|
+
const matter = getMatter(api);
|
|
15
17
|
super(api, log, {
|
|
16
|
-
UUID:
|
|
18
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
17
19
|
displayName: 'Air Quality Sensor',
|
|
18
|
-
deviceType:
|
|
20
|
+
deviceType: matter.deviceTypes.AirQualitySensor,
|
|
19
21
|
serialNumber,
|
|
20
22
|
manufacturer: 'Homebridge Matter',
|
|
21
23
|
model: 'HB-MATTER-SENSOR-AIR-QUALITY',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AirQualitySensorAccessory.js","sourceRoot":"","sources":["../../src/devices/AirQualitySensorAccessory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,yBAA0B,SAAQ,mBAAmB;IAChE,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,2BAA2B,CAAA;QAChD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"AirQualitySensorAccessory.js","sourceRoot":"","sources":["../../src/devices/AirQualitySensorAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Individual device types should extend this class and call super() with
|
|
8
8
|
* the required configuration.
|
|
9
9
|
*/
|
|
10
|
-
import type { API, ClusterStateMap, EndpointType, Logger, MatterAccessory } from 'homebridge';
|
|
10
|
+
import type { API, ClusterStateMap, EndpointType, Logger, MatterAccessory, MatterAPI } from 'homebridge';
|
|
11
11
|
export interface BaseMatterAccessoryConfig {
|
|
12
12
|
UUID: string;
|
|
13
13
|
displayName: string;
|
|
@@ -41,6 +41,7 @@ export declare abstract class BaseMatterAccessory implements MatterAccessory {
|
|
|
41
41
|
readonly parts?: MatterAccessory['parts'];
|
|
42
42
|
protected readonly api: API;
|
|
43
43
|
protected readonly log: Logger;
|
|
44
|
+
protected readonly matter: MatterAPI;
|
|
44
45
|
protected constructor(api: API, log: Logger, config: BaseMatterAccessoryConfig);
|
|
45
46
|
/**
|
|
46
47
|
* Update the accessory state
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* Individual device types should extend this class and call super() with
|
|
8
8
|
* the required configuration.
|
|
9
9
|
*/
|
|
10
|
+
import { getMatter } from '../utils.js';
|
|
10
11
|
/**
|
|
11
12
|
* Base class for all Matter accessories
|
|
12
13
|
* Implements the MatterAccessory interface and provides common methods
|
|
@@ -28,9 +29,11 @@ export class BaseMatterAccessory {
|
|
|
28
29
|
// Protected properties available to child classes
|
|
29
30
|
api;
|
|
30
31
|
log;
|
|
32
|
+
matter;
|
|
31
33
|
constructor(api, log, config) {
|
|
32
34
|
this.api = api;
|
|
33
35
|
this.log = log;
|
|
36
|
+
this.matter = getMatter(api);
|
|
34
37
|
// Set all required properties
|
|
35
38
|
this.UUID = config.UUID;
|
|
36
39
|
this.displayName = config.displayName;
|
|
@@ -54,11 +57,11 @@ export class BaseMatterAccessory {
|
|
|
54
57
|
};
|
|
55
58
|
}
|
|
56
59
|
async updateState(cluster, attributes, partId) {
|
|
57
|
-
await this.
|
|
60
|
+
await this.matter.updateAccessoryState(this.UUID, cluster, attributes, partId);
|
|
58
61
|
this.log.debug(`[${this.displayName}] Updated ${cluster} state:`, attributes);
|
|
59
62
|
}
|
|
60
63
|
async readState(cluster, partId) {
|
|
61
|
-
return await this.
|
|
64
|
+
return await this.matter.getAccessoryState(this.UUID, cluster, partId);
|
|
62
65
|
}
|
|
63
66
|
/**
|
|
64
67
|
* Log helper methods
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMatterAccessory.js","sourceRoot":"","sources":["../../src/devices/BaseMatterAccessory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"BaseMatterAccessory.js","sourceRoot":"","sources":["../../src/devices/BaseMatterAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Color Light Accessory Class (HS only)
|
|
3
3
|
* Hue and Saturation color control
|
|
4
4
|
*/
|
|
5
|
+
import { getMatter } from '../utils.js';
|
|
5
6
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
6
7
|
// Handler type approaches:
|
|
7
8
|
// 1. MatterRequests.* — raw matter.js request types (useful for some handlers like MoveToLevel)
|
|
@@ -10,10 +11,11 @@ import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
|
10
11
|
export class ColorLightAccessory extends BaseMatterAccessory {
|
|
11
12
|
constructor(api, log) {
|
|
12
13
|
const serialNumber = 'matter-colour-light';
|
|
14
|
+
const matter = getMatter(api);
|
|
13
15
|
super(api, log, {
|
|
14
|
-
UUID:
|
|
16
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
15
17
|
displayName: 'Colour Light (HS)',
|
|
16
|
-
deviceType:
|
|
18
|
+
deviceType: matter.deviceTypes.ExtendedColorLight,
|
|
17
19
|
serialNumber,
|
|
18
20
|
manufacturer: 'Homebridge Matter',
|
|
19
21
|
model: 'HB-MATTER-LIGHT-COLOUR-HS',
|
|
@@ -27,7 +29,7 @@ export class ColorLightAccessory extends BaseMatterAccessory {
|
|
|
27
29
|
maxLevel: 254,
|
|
28
30
|
},
|
|
29
31
|
colorControl: {
|
|
30
|
-
colorMode:
|
|
32
|
+
colorMode: matter.types.ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
|
|
31
33
|
currentHue: 0,
|
|
32
34
|
currentSaturation: 254,
|
|
33
35
|
currentX: 41942,
|
|
@@ -123,16 +125,16 @@ export class ColorLightAccessory extends BaseMatterAccessory {
|
|
|
123
125
|
// TODO: await myLightAPI.setColor(hueDegrees, saturationPercent, transitionTime)
|
|
124
126
|
}
|
|
125
127
|
async updateOnOffState(isOn) {
|
|
126
|
-
await this.updateState(this.
|
|
128
|
+
await this.updateState(this.matter.clusterNames.OnOff, { onOff: isOn });
|
|
127
129
|
}
|
|
128
130
|
async updateBrightness(percent) {
|
|
129
131
|
const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
|
|
130
|
-
await this.updateState(this.
|
|
132
|
+
await this.updateState(this.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
|
|
131
133
|
}
|
|
132
134
|
async updateHueSaturation(hue, saturation) {
|
|
133
135
|
const matterHue = Math.round((hue / 360) * 254);
|
|
134
136
|
const matterSat = Math.round((saturation / 100) * 254);
|
|
135
|
-
await this.updateState(this.
|
|
137
|
+
await this.updateState(this.matter.clusterNames.ColorControl, {
|
|
136
138
|
currentHue: matterHue,
|
|
137
139
|
currentSaturation: matterSat,
|
|
138
140
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorLightAccessory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,2BAA2B;AAC3B,gGAAgG;AAChG,8GAA8G;AAC9G,qGAAqG;AAErG,MAAM,OAAO,mBAAoB,SAAQ,mBAAmB;IAC1D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,qBAAqB,CAAA;QAC1C,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,16 @@
|
|
|
5
5
|
// 1. MatterRequests.* — raw matter.js request types (useful for some handlers like MoveToLevel)
|
|
6
6
|
// 2. ClusterHandlerMap — behavior-transformed types with automatic inference (recommended for color handlers)
|
|
7
7
|
// Both approaches work. Color handlers use inferred types since the behavior transforms the request.
|
|
8
|
+
import { getMatter } from '../utils.js';
|
|
8
9
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
9
10
|
export class ColorTemperatureLightAccessory extends BaseMatterAccessory {
|
|
10
11
|
constructor(api, log) {
|
|
11
12
|
const serialNumber = 'matter-colour-temp-light';
|
|
13
|
+
const matter = getMatter(api);
|
|
12
14
|
super(api, log, {
|
|
13
|
-
UUID:
|
|
15
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
14
16
|
displayName: 'Colour Temperature Light',
|
|
15
|
-
deviceType:
|
|
17
|
+
deviceType: matter.deviceTypes.ColorTemperatureLight,
|
|
16
18
|
serialNumber,
|
|
17
19
|
manufacturer: 'Homebridge Matter',
|
|
18
20
|
model: 'HB-MATTER-LIGHT-COLOUR-TEMP',
|
|
@@ -28,7 +30,7 @@ export class ColorTemperatureLightAccessory extends BaseMatterAccessory {
|
|
|
28
30
|
maxLevel: 254,
|
|
29
31
|
},
|
|
30
32
|
colorControl: {
|
|
31
|
-
colorMode:
|
|
33
|
+
colorMode: matter.types.ColorControl.ColorMode.ColorTemperatureMireds,
|
|
32
34
|
colorTemperatureMireds: 250,
|
|
33
35
|
colorTempPhysicalMinMireds: 147,
|
|
34
36
|
colorTempPhysicalMaxMireds: 454,
|
|
@@ -87,15 +89,15 @@ export class ColorTemperatureLightAccessory extends BaseMatterAccessory {
|
|
|
87
89
|
// TODO: await myLightAPI.setColorTemperature(kelvin, transitionTime)
|
|
88
90
|
}
|
|
89
91
|
async updateOnOffState(isOn) {
|
|
90
|
-
await this.updateState(this.
|
|
92
|
+
await this.updateState(this.matter.clusterNames.OnOff, { onOff: isOn });
|
|
91
93
|
}
|
|
92
94
|
async updateBrightness(percent) {
|
|
93
95
|
const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
|
|
94
|
-
await this.updateState(this.
|
|
96
|
+
await this.updateState(this.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
|
|
95
97
|
}
|
|
96
98
|
async updateColorTemperature(kelvin) {
|
|
97
99
|
const mireds = Math.round(1000000 / kelvin);
|
|
98
|
-
await this.updateState(this.
|
|
100
|
+
await this.updateState(this.matter.clusterNames.ColorControl, { colorTemperatureMireds: mireds });
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
//# sourceMappingURL=ColorTemperatureLightAccessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorTemperatureLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorTemperatureLightAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,2BAA2B;AAC3B,gGAAgG;AAChG,8GAA8G;AAC9G,qGAAqG;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,8BAA+B,SAAQ,mBAAmB;IACrE,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,0BAA0B,CAAA;QAC/C,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ColorTemperatureLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ColorTemperatureLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Contact Sensor Accessory Class
|
|
3
3
|
*/
|
|
4
|
+
import { getMatter } from '../utils.js';
|
|
4
5
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
5
6
|
export class ContactSensorAccessory extends BaseMatterAccessory {
|
|
6
7
|
constructor(api, log) {
|
|
7
8
|
const serialNumber = 'matter-contact-sensor';
|
|
9
|
+
const matter = getMatter(api);
|
|
8
10
|
super(api, log, {
|
|
9
|
-
UUID:
|
|
11
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
10
12
|
displayName: 'Contact Sensor',
|
|
11
|
-
deviceType:
|
|
13
|
+
deviceType: matter.deviceTypes.ContactSensor,
|
|
12
14
|
serialNumber,
|
|
13
15
|
manufacturer: 'Homebridge Matter',
|
|
14
16
|
model: 'HB-MATTER-SENSOR-CONTACT',
|
|
@@ -24,7 +26,7 @@ export class ContactSensorAccessory extends BaseMatterAccessory {
|
|
|
24
26
|
}
|
|
25
27
|
async updateContactState(isOpen) {
|
|
26
28
|
// Matter BooleanState: false = open/triggered, true = closed/normal (inverted!)
|
|
27
|
-
await this.updateState(this.
|
|
29
|
+
await this.updateState(this.matter.clusterNames.BooleanState, { stateValue: !isOpen });
|
|
28
30
|
this.logInfo(`contact state: ${isOpen ? 'OPEN' : 'CLOSED'}.`);
|
|
29
31
|
}
|
|
30
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/ContactSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,uBAAuB,CAAA;QAC5C,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ContactSensorAccessory.js","sourceRoot":"","sources":["../../src/devices/ContactSensorAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,uBAAuB,CAAA;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACxC,WAAW,EAAE,gBAAgB;YAC7B,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa;YAC5C,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,0BAA0B;YACjC,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,YAAY,EAAE;oBACZ,UAAU,EAAE,IAAI,EAAE,uDAAuD;iBAC1E;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,MAAe;QAC7C,gFAAgF;QAChF,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;QACtF,IAAI,CAAC,OAAO,CAAC,kBAAkB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC/D,CAAC;CACF"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Example of a more complex device with multiple clusters.
|
|
5
5
|
* Shows how to handle devices with on/off + level control.
|
|
6
6
|
*/
|
|
7
|
+
import { getMatter } from '../utils.js';
|
|
7
8
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
8
9
|
/**
|
|
9
10
|
* Dimmable Light Device Class
|
|
@@ -24,10 +25,11 @@ export class DimmableLightAccessory extends BaseMatterAccessory {
|
|
|
24
25
|
const model = 'HB-MATTER-LIGHT-DIMMABLE';
|
|
25
26
|
const firmwareRevision = '2.0.0';
|
|
26
27
|
const hardwareRevision = '1.0.0';
|
|
28
|
+
const matter = getMatter(api);
|
|
27
29
|
super(api, log, {
|
|
28
|
-
UUID:
|
|
30
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
29
31
|
displayName,
|
|
30
|
-
deviceType:
|
|
32
|
+
deviceType: matter.deviceTypes.DimmableLight,
|
|
31
33
|
serialNumber,
|
|
32
34
|
manufacturer,
|
|
33
35
|
model,
|
|
@@ -125,7 +127,7 @@ export class DimmableLightAccessory extends BaseMatterAccessory {
|
|
|
125
127
|
* Update on/off state from external source
|
|
126
128
|
*/
|
|
127
129
|
async updateOnOffState(isOn) {
|
|
128
|
-
await this.updateState(this.
|
|
130
|
+
await this.updateState(this.matter.clusterNames.OnOff, { onOff: isOn });
|
|
129
131
|
this.logInfo(`state synced: ${isOn ? 'ON' : 'OFF'}.`);
|
|
130
132
|
}
|
|
131
133
|
/**
|
|
@@ -141,7 +143,7 @@ export class DimmableLightAccessory extends BaseMatterAccessory {
|
|
|
141
143
|
// Convert percent to Matter level (1-254)
|
|
142
144
|
const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
|
|
143
145
|
this.currentLevel = matterLevel;
|
|
144
|
-
await this.updateState(this.
|
|
146
|
+
await this.updateState(this.matter.clusterNames.LevelControl, {
|
|
145
147
|
currentLevel: matterLevel,
|
|
146
148
|
});
|
|
147
149
|
this.logInfo(`brightness synced: ${percent}% (level: ${matterLevel}).`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DimmableLightAccessory.js","sourceRoot":"","sources":["../../src/devices/DimmableLightAccessory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAC7D,sBAAsB;IACd,YAAY,GAAW,GAAG,CAAA,CAAC,iBAAiB;IAEpD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,uBAAuB,CAAA;QAC5C,MAAM,WAAW,GAAG,gBAAgB,CAAA;QACpC,MAAM,YAAY,GAAG,mBAAmB,CAAA;QACxC,MAAM,KAAK,GAAG,0BAA0B,CAAA;QACxC,MAAM,gBAAgB,GAAG,OAAO,CAAA;QAChC,MAAM,gBAAgB,GAAG,OAAO,CAAA;QAEhC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"DimmableLightAccessory.js","sourceRoot":"","sources":["../../src/devices/DimmableLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Door Lock Accessory Class
|
|
3
3
|
*/
|
|
4
|
+
import { getMatter } from '../utils.js';
|
|
4
5
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
5
6
|
export class DoorLockAccessory extends BaseMatterAccessory {
|
|
6
7
|
constructor(api, log) {
|
|
7
8
|
const serialNumber = 'matter-door-lock';
|
|
9
|
+
const matter = getMatter(api);
|
|
8
10
|
super(api, log, {
|
|
9
|
-
UUID:
|
|
11
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
10
12
|
displayName: 'Door Lock',
|
|
11
|
-
deviceType:
|
|
13
|
+
deviceType: matter.deviceTypes.DoorLock,
|
|
12
14
|
serialNumber,
|
|
13
15
|
manufacturer: 'Homebridge Matter',
|
|
14
16
|
model: 'HB-MATTER-LOCK-DOOR',
|
|
@@ -16,10 +18,10 @@ export class DoorLockAccessory extends BaseMatterAccessory {
|
|
|
16
18
|
hardwareRevision: '1.0.0',
|
|
17
19
|
clusters: {
|
|
18
20
|
doorLock: {
|
|
19
|
-
lockState:
|
|
20
|
-
lockType:
|
|
21
|
+
lockState: matter.types.DoorLock.LockState.Unlocked,
|
|
22
|
+
lockType: matter.types.DoorLock.LockType.DeadBolt,
|
|
21
23
|
actuatorEnabled: true,
|
|
22
|
-
operatingMode:
|
|
24
|
+
operatingMode: matter.types.DoorLock.OperatingMode.Normal,
|
|
23
25
|
},
|
|
24
26
|
},
|
|
25
27
|
handlers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoorLockAccessory.js","sourceRoot":"","sources":["../../src/devices/DoorLockAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,iBAAkB,SAAQ,mBAAmB;IACxD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,kBAAkB,CAAA;QACvC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"DoorLockAccessory.js","sourceRoot":"","sources":["../../src/devices/DoorLockAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,iBAAkB,SAAQ,mBAAmB;IACxD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,kBAAkB,CAAA;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACxC,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ;YACvC,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,qBAAqB;YAC5B,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ;oBACnD,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;oBACjD,eAAe,EAAE,IAAI;oBACrB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM;iBAC1D;aACF;YAED,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;oBACvC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;iBAC5C;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QAE7B,kDAAkD;QAClD,yBAAyB;QACzB,+EAA+E;QAC/E,IAAI;QAEJ,qDAAqD;QACrD,gCAAgC;QAChC,sEAAsE;QACtE,IAAI;QAEJ,gDAAgD;QAChD,QAAQ;QACR,gDAAgD;QAChD,oBAAoB;QACpB,wCAAwC;QACxC,8EAA8E;QAC9E,MAAM;QACN,sCAAsC;QACtC,qFAAqF;QACrF,MAAM;QACN,gBAAgB;QAChB,IAAI;QAEJ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAE/B,kDAAkD;QAClD,uCAAuC;QACvC,uFAAuF;QACvF,IAAI;QAEJ,uDAAuD;QACvD,oCAAoC;QACpC,0FAA0F;QAC1F,IAAI;QAEJ,gDAAgD;QAChD,4CAA4C;QAC5C,6CAA6C;QAC7C,4FAA4F;QAC5F,IAAI;QAEJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,KAAgB;QAC3C,iDAAiD;QACjD,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAA;QAClE,IAAI,CAAC,OAAO,CAAC,eAAe,QAAQ,GAAG,CAAC,CAAA;IAC1C,CAAC;CACF"}
|
|
@@ -6,14 +6,16 @@
|
|
|
6
6
|
// 1. MatterRequests.* — raw matter.js request types (useful for some handlers like MoveToLevel)
|
|
7
7
|
// 2. ClusterHandlerMap — behavior-transformed types with automatic inference (recommended for color handlers)
|
|
8
8
|
// Both approaches work. Color handlers use inferred types since the behavior transforms the request.
|
|
9
|
+
import { getMatter } from '../utils.js';
|
|
9
10
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
10
11
|
export class ExtendedColorLightAccessory extends BaseMatterAccessory {
|
|
11
12
|
constructor(api, log) {
|
|
12
13
|
const serialNumber = 'matter-extended-colour-light';
|
|
14
|
+
const matter = getMatter(api);
|
|
13
15
|
super(api, log, {
|
|
14
|
-
UUID:
|
|
16
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
15
17
|
displayName: 'Extended Colour Light (HS+CCT)',
|
|
16
|
-
deviceType:
|
|
18
|
+
deviceType: matter.deviceTypes.ExtendedColorLight,
|
|
17
19
|
serialNumber,
|
|
18
20
|
manufacturer: 'Homebridge Matter',
|
|
19
21
|
model: 'HB-MATTER-LIGHT-EXTENDED-COLOUR',
|
|
@@ -27,7 +29,7 @@ export class ExtendedColorLightAccessory extends BaseMatterAccessory {
|
|
|
27
29
|
maxLevel: 254,
|
|
28
30
|
},
|
|
29
31
|
colorControl: {
|
|
30
|
-
colorMode:
|
|
32
|
+
colorMode: matter.types.ColorControl.ColorMode.CurrentHueAndCurrentSaturation,
|
|
31
33
|
currentHue: 0,
|
|
32
34
|
currentSaturation: 254,
|
|
33
35
|
currentX: 41942,
|
|
@@ -114,16 +116,16 @@ export class ExtendedColorLightAccessory extends BaseMatterAccessory {
|
|
|
114
116
|
// TODO: await myLightAPI.setColorTemperature(kelvin, transitionTime)
|
|
115
117
|
}
|
|
116
118
|
async updateOnOffState(isOn) {
|
|
117
|
-
await this.updateState(this.
|
|
119
|
+
await this.updateState(this.matter.clusterNames.OnOff, { onOff: isOn });
|
|
118
120
|
}
|
|
119
121
|
async updateBrightness(percent) {
|
|
120
122
|
const matterLevel = Math.max(1, Math.round((percent / 100) * 254));
|
|
121
|
-
await this.updateState(this.
|
|
123
|
+
await this.updateState(this.matter.clusterNames.LevelControl, { currentLevel: matterLevel });
|
|
122
124
|
}
|
|
123
125
|
async updateHueSaturation(hue, saturation) {
|
|
124
126
|
const matterHue = Math.round((hue / 360) * 254);
|
|
125
127
|
const matterSat = Math.round((saturation / 100) * 254);
|
|
126
|
-
await this.updateState(this.
|
|
128
|
+
await this.updateState(this.matter.clusterNames.ColorControl, {
|
|
127
129
|
currentHue: matterHue,
|
|
128
130
|
currentSaturation: matterSat,
|
|
129
131
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtendedColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ExtendedColorLightAccessory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,2BAA2B;AAC3B,gGAAgG;AAChG,8GAA8G;AAC9G,qGAAqG;AACrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,2BAA4B,SAAQ,mBAAmB;IAClE,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,8BAA8B,CAAA;QACnD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ExtendedColorLightAccessory.js","sourceRoot":"","sources":["../../src/devices/ExtendedColorLightAccessory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fan Accessory Class
|
|
3
3
|
*/
|
|
4
|
+
import { getMatter } from '../utils.js';
|
|
4
5
|
import { BaseMatterAccessory } from './BaseMatterAccessory.js';
|
|
5
6
|
export class FanAccessory extends BaseMatterAccessory {
|
|
6
7
|
constructor(api, log) {
|
|
7
8
|
const serialNumber = 'matter-fan';
|
|
9
|
+
const matter = getMatter(api);
|
|
8
10
|
super(api, log, {
|
|
9
|
-
UUID:
|
|
11
|
+
UUID: matter.uuid.generate(serialNumber),
|
|
10
12
|
displayName: 'Fan',
|
|
11
|
-
deviceType:
|
|
13
|
+
deviceType: matter.deviceTypes.Fan,
|
|
12
14
|
serialNumber,
|
|
13
15
|
manufacturer: 'Homebridge Matter',
|
|
14
16
|
model: 'HB-MATTER-FAN',
|
|
@@ -16,8 +18,8 @@ export class FanAccessory extends BaseMatterAccessory {
|
|
|
16
18
|
hardwareRevision: '1.0.0',
|
|
17
19
|
clusters: {
|
|
18
20
|
fanControl: {
|
|
19
|
-
fanMode:
|
|
20
|
-
fanModeSequence:
|
|
21
|
+
fanMode: matter.types.FanControl.FanMode.Off,
|
|
22
|
+
fanModeSequence: matter.types.FanControl.FanModeSequence.OffHigh,
|
|
21
23
|
percentSetting: 0,
|
|
22
24
|
percentCurrent: 0,
|
|
23
25
|
},
|
|
@@ -85,10 +87,10 @@ export class FanAccessory extends BaseMatterAccessory {
|
|
|
85
87
|
// TODO: await myFanAPI.setSpeed(percent)
|
|
86
88
|
}
|
|
87
89
|
async updateFanMode(mode) {
|
|
88
|
-
await this.updateState(this.
|
|
90
|
+
await this.updateState(this.matter.clusterNames.FanControl, { fanMode: mode });
|
|
89
91
|
}
|
|
90
92
|
async updateFanSpeed(percent) {
|
|
91
|
-
await this.updateState(this.
|
|
93
|
+
await this.updateState(this.matter.clusterNames.FanControl, {
|
|
92
94
|
percentSetting: percent,
|
|
93
95
|
percentCurrent: percent,
|
|
94
96
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FanAccessory.js","sourceRoot":"","sources":["../../src/devices/FanAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IACnD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;QACjC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"FanAccessory.js","sourceRoot":"","sources":["../../src/devices/FanAccessory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,MAAM,OAAO,YAAa,SAAQ,mBAAmB;IACnD,YAAY,GAAQ,EAAE,GAAW;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAA;QACjC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;YACd,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACxC,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG;YAClC,YAAY;YACZ,YAAY,EAAE,mBAAmB;YACjC,KAAK,EAAE,eAAe;YACtB,gBAAgB,EAAE,OAAO;YACzB,gBAAgB,EAAE,OAAO;YAEzB,QAAQ,EAAE;gBACR,UAAU,EAAE;oBACV,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG;oBAC5C,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO;oBAChE,cAAc,EAAE,CAAC;oBACjB,cAAc,EAAE,CAAC;iBAClB;aACF;YAED,QAAQ,EAAE;gBACR,UAAU,EAAE;oBACV,kEAAkE;oBAClE,aAAa,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;oBACjE,oBAAoB,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;iBAChF;aACF;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,OAAgD;QAChF,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1D,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACzE,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,OAAO,CAAC,OAAO,GAAG,CAAA;QAC7E,IAAI,CAAC,OAAO,CAAC,wBAAwB,QAAQ,GAAG,CAAC,CAAA;QAEjD,2DAA2D;QAC3D,uEAAuE;QACvE,mDAAmD;QACnD,0CAA0C;QAC1C,6DAA6D;QAC7D,MAAM;QACN,IAAI;QAEJ,uDAAuD;QACvD,qDAAqD;QACrD,2CAA2C;QAC3C,qDAAqD;QACrD,MAAM;QACN,IAAI;QAEJ,gDAAgD;IAClD,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,OAA4E;QACnH,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAA;QAC3C,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,CAAA;QAC3B,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;QAErD,+DAA+D;QAC/D,sCAAsC;QACtC,4CAA4C;QAC5C,sDAAsD;QACtD,MAAM;QACN,IAAI;QAEJ,wDAAwD;QACxD,qEAAqE;QACrE,0CAA0C;QAC1C,uFAAuF;QACvF,MAAM;QACN,IAAI;QAEJ,gDAAgD;QAChD,sBAAsB;QACtB,2CAA2C;QAC3C,4CAA4C;QAC5C,kDAAkD;QAClD,MAAM;QACN,IAAI;QAEJ,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;QACrD,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,yBAAyB,OAAO,IAAI,CAAC,CAAA;QACpD,CAAC;QACD,yCAAyC;IAC3C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAAY;QACrC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAChF,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,OAAe;QACzC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE;YAC1D,cAAc,EAAE,OAAO;YACvB,cAAc,EAAE,OAAO;SACxB,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,cAAc,OAAO,IAAI,CAAC,CAAA;IACzC,CAAC;CACF"}
|