@camstack/addon-provider-rademacher 0.2.105 → 0.2.106

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/dist/addon.js CHANGED
@@ -14501,6 +14501,70 @@ var LocationIconAssignmentSchema = object({
14501
14501
  locationKey: string(),
14502
14502
  icon: LocationIconIdSchema
14503
14503
  });
14504
+ /**
14505
+ * One (location, description) assignment as it travels.
14506
+ *
14507
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
14508
+ * reason: this lived for a while in the post-analysis addon's own settings,
14509
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
14510
+ * the Locations page carried the icon and silently orphaned the description —
14511
+ * two authorities for one thing, joined by two different rules. Now both hang
14512
+ * off the location itself, on `locationIconKey`.
14513
+ */
14514
+ var LocationDescriptionAssignmentSchema = object({
14515
+ locationKey: string(),
14516
+ description: string()
14517
+ });
14518
+ /**
14519
+ * A SITE ZONE — a named part of the property that several locations belong to.
14520
+ *
14521
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
14522
+ * kitchen. A camera belongs to exactly one location, and a location to at most
14523
+ * one zone, so a camera's zone is derived and never stored on the device: the
14524
+ * whole point of this entity is that grouping rooms touches no device row.
14525
+ *
14526
+ * ## Why not `zone`
14527
+ *
14528
+ * Because `zone` is already the most loaded word in this product: 612 source
14529
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
14530
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
14531
+ * set of rooms — and a reader who confuses them will look for a camera's
14532
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
14533
+ * word by calling the drawn one what it actually is: a detection zone.
14534
+ *
14535
+ * ## The key
14536
+ *
14537
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
14538
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
14539
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
14540
+ * silently-dropped location description.
14541
+ *
14542
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
14543
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
14544
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
14545
+ */
14546
+ /**
14547
+ * One zone as it travels: its key, the label the operator typed, its icon and
14548
+ * the locations inside it.
14549
+ *
14550
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
14551
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
14552
+ * here, rather than left to a second call, because every consumer wants both
14553
+ * at once and a viewer that asked twice could render a zone whose membership
14554
+ * it has not fetched yet.
14555
+ *
14556
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
14557
+ * of those two is a choice, and a picker has to draw them differently.
14558
+ */
14559
+ var SiteZoneSchema = object({
14560
+ zoneKey: string(),
14561
+ label: string(),
14562
+ icon: LocationIconIdSchema.nullable(),
14563
+ /** Folded location keys, sorted. A location listed here need not be
14564
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
14565
+ * the ones that most want grouping. */
14566
+ locationKeys: array(string())
14567
+ });
14504
14568
  var ProviderStatusSchema = object({
14505
14569
  connected: boolean(),
14506
14570
  deviceCount: number(),
@@ -15099,6 +15163,33 @@ method(object({
15099
15163
  }), _void(), {
15100
15164
  kind: "mutation",
15101
15165
  auth: "admin"
15166
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
15167
+ location: string(),
15168
+ description: string().max(400).nullable()
15169
+ }), _void(), {
15170
+ kind: "mutation",
15171
+ auth: "admin"
15172
+ }), method(_void(), array(SiteZoneSchema)), method(object({
15173
+ name: string(),
15174
+ icon: LocationIconIdSchema.nullable().optional()
15175
+ }), _void(), {
15176
+ kind: "mutation",
15177
+ auth: "admin"
15178
+ }), method(object({ name: string() }), _void(), {
15179
+ kind: "mutation",
15180
+ auth: "admin"
15181
+ }), method(object({
15182
+ from: string(),
15183
+ to: string()
15184
+ }), _void(), {
15185
+ kind: "mutation",
15186
+ auth: "admin"
15187
+ }), method(object({
15188
+ location: string(),
15189
+ zone: string().nullable()
15190
+ }), _void(), {
15191
+ kind: "mutation",
15192
+ auth: "admin"
15102
15193
  }), method(object({
15103
15194
  deviceId: number(),
15104
15195
  disabled: boolean()
@@ -38009,6 +38100,12 @@ Object.freeze({
38009
38100
  addonId: null,
38010
38101
  access: "view"
38011
38102
  },
38103
+ "deviceManager.listLocationDescriptions": {
38104
+ capName: "device-manager",
38105
+ capScope: "system",
38106
+ addonId: null,
38107
+ access: "view"
38108
+ },
38012
38109
  "deviceManager.listLocationIcons": {
38013
38110
  capName: "device-manager",
38014
38111
  capScope: "system",
@@ -38027,6 +38124,12 @@ Object.freeze({
38027
38124
  addonId: null,
38028
38125
  access: "view"
38029
38126
  },
38127
+ "deviceManager.listSiteZones": {
38128
+ capName: "device-manager",
38129
+ capScope: "system",
38130
+ addonId: null,
38131
+ access: "view"
38132
+ },
38030
38133
  "deviceManager.listWrappersForCap": {
38031
38134
  capName: "device-manager",
38032
38135
  capScope: "system",
@@ -38111,12 +38214,24 @@ Object.freeze({
38111
38214
  addonId: null,
38112
38215
  access: "delete"
38113
38216
  },
38217
+ "deviceManager.removeSiteZone": {
38218
+ capName: "device-manager",
38219
+ capScope: "system",
38220
+ addonId: null,
38221
+ access: "delete"
38222
+ },
38114
38223
  "deviceManager.renameLocation": {
38115
38224
  capName: "device-manager",
38116
38225
  capScope: "system",
38117
38226
  addonId: null,
38118
38227
  access: "create"
38119
38228
  },
38229
+ "deviceManager.renameSiteZone": {
38230
+ capName: "device-manager",
38231
+ capScope: "system",
38232
+ addonId: null,
38233
+ access: "create"
38234
+ },
38120
38235
  "deviceManager.runDeviceAction": {
38121
38236
  capName: "device-manager",
38122
38237
  capScope: "system",
@@ -38159,12 +38274,24 @@ Object.freeze({
38159
38274
  addonId: null,
38160
38275
  access: "create"
38161
38276
  },
38277
+ "deviceManager.setLocationDescription": {
38278
+ capName: "device-manager",
38279
+ capScope: "system",
38280
+ addonId: null,
38281
+ access: "create"
38282
+ },
38162
38283
  "deviceManager.setLocationIcon": {
38163
38284
  capName: "device-manager",
38164
38285
  capScope: "system",
38165
38286
  addonId: null,
38166
38287
  access: "create"
38167
38288
  },
38289
+ "deviceManager.setLocationZone": {
38290
+ capName: "device-manager",
38291
+ capScope: "system",
38292
+ addonId: null,
38293
+ access: "create"
38294
+ },
38168
38295
  "deviceManager.setMetadata": {
38169
38296
  capName: "device-manager",
38170
38297
  capScope: "system",
@@ -38195,6 +38322,12 @@ Object.freeze({
38195
38322
  addonId: null,
38196
38323
  access: "create"
38197
38324
  },
38325
+ "deviceManager.setSiteZone": {
38326
+ capName: "device-manager",
38327
+ capScope: "system",
38328
+ addonId: null,
38329
+ access: "create"
38330
+ },
38198
38331
  "deviceManager.setStreamProfileMap": {
38199
38332
  capName: "device-manager",
38200
38333
  capScope: "system",
package/dist/addon.mjs CHANGED
@@ -14500,6 +14500,70 @@ var LocationIconAssignmentSchema = object({
14500
14500
  locationKey: string(),
14501
14501
  icon: LocationIconIdSchema
14502
14502
  });
14503
+ /**
14504
+ * One (location, description) assignment as it travels.
14505
+ *
14506
+ * Same key discipline as {@link LocationIconAssignmentSchema}, and for the same
14507
+ * reason: this lived for a while in the post-analysis addon's own settings,
14508
+ * keyed by a HAND-TYPED label matched exactly and case-sensitively. A rename in
14509
+ * the Locations page carried the icon and silently orphaned the description —
14510
+ * two authorities for one thing, joined by two different rules. Now both hang
14511
+ * off the location itself, on `locationIconKey`.
14512
+ */
14513
+ var LocationDescriptionAssignmentSchema = object({
14514
+ locationKey: string(),
14515
+ description: string()
14516
+ });
14517
+ /**
14518
+ * A SITE ZONE — a named part of the property that several locations belong to.
14519
+ *
14520
+ * "Zona notte" holds every bedroom; "Zona giorno" the living room and the
14521
+ * kitchen. A camera belongs to exactly one location, and a location to at most
14522
+ * one zone, so a camera's zone is derived and never stored on the device: the
14523
+ * whole point of this entity is that grouping rooms touches no device row.
14524
+ *
14525
+ * ## Why not `zone`
14526
+ *
14527
+ * Because `zone` is already the most loaded word in this product: 612 source
14528
+ * files and 24 Italian strings where it means a DETECTION zone drawn on a
14529
+ * camera. The two are unrelated — one is a polygon in a frame, the other is a
14530
+ * set of rooms — and a reader who confuses them will look for a camera's
14531
+ * bedrooms. So the code says `siteZone` everywhere, and the UI frees the plain
14532
+ * word by calling the drawn one what it actually is: a detection zone.
14533
+ *
14534
+ * ## The key
14535
+ *
14536
+ * `siteZoneKey(label)` — trimmed, lower-cased, the SAME derivation locations
14537
+ * use (`locationIconKey`). Membership and the icon both hang off it, so a
14538
+ * case-only rename keeps them, which is exactly the orphaning that cost us a
14539
+ * silently-dropped location description.
14540
+ *
14541
+ * The icon vocabulary is the location one, unchanged: a zone is drawn on the
14542
+ * same two surfaces by the same glyph map, so a second vocabulary would be a
14543
+ * second thing to keep drawable (`scripts/check-location-icons-drawable.ts`).
14544
+ */
14545
+ /**
14546
+ * One zone as it travels: its key, the label the operator typed, its icon and
14547
+ * the locations inside it.
14548
+ *
14549
+ * The LABEL is carried alongside the key because the key is lossy on purpose —
14550
+ * a surface must show "Zona notte", not "zona notte". Locations are carried
14551
+ * here, rather than left to a second call, because every consumer wants both
14552
+ * at once and a viewer that asked twice could render a zone whose membership
14553
+ * it has not fetched yet.
14554
+ *
14555
+ * `icon: null` means nobody chose one, which is NOT the fallback pin: only one
14556
+ * of those two is a choice, and a picker has to draw them differently.
14557
+ */
14558
+ var SiteZoneSchema = object({
14559
+ zoneKey: string(),
14560
+ label: string(),
14561
+ icon: LocationIconIdSchema.nullable(),
14562
+ /** Folded location keys, sorted. A location listed here need not be
14563
+ * REGISTERED — devices carry labels nobody registered, and those rooms are
14564
+ * the ones that most want grouping. */
14565
+ locationKeys: array(string())
14566
+ });
14503
14567
  var ProviderStatusSchema = object({
14504
14568
  connected: boolean(),
14505
14569
  deviceCount: number(),
@@ -15098,6 +15162,33 @@ method(object({
15098
15162
  }), _void(), {
15099
15163
  kind: "mutation",
15100
15164
  auth: "admin"
15165
+ }), method(_void(), array(LocationDescriptionAssignmentSchema)), method(object({
15166
+ location: string(),
15167
+ description: string().max(400).nullable()
15168
+ }), _void(), {
15169
+ kind: "mutation",
15170
+ auth: "admin"
15171
+ }), method(_void(), array(SiteZoneSchema)), method(object({
15172
+ name: string(),
15173
+ icon: LocationIconIdSchema.nullable().optional()
15174
+ }), _void(), {
15175
+ kind: "mutation",
15176
+ auth: "admin"
15177
+ }), method(object({ name: string() }), _void(), {
15178
+ kind: "mutation",
15179
+ auth: "admin"
15180
+ }), method(object({
15181
+ from: string(),
15182
+ to: string()
15183
+ }), _void(), {
15184
+ kind: "mutation",
15185
+ auth: "admin"
15186
+ }), method(object({
15187
+ location: string(),
15188
+ zone: string().nullable()
15189
+ }), _void(), {
15190
+ kind: "mutation",
15191
+ auth: "admin"
15101
15192
  }), method(object({
15102
15193
  deviceId: number(),
15103
15194
  disabled: boolean()
@@ -38008,6 +38099,12 @@ Object.freeze({
38008
38099
  addonId: null,
38009
38100
  access: "view"
38010
38101
  },
38102
+ "deviceManager.listLocationDescriptions": {
38103
+ capName: "device-manager",
38104
+ capScope: "system",
38105
+ addonId: null,
38106
+ access: "view"
38107
+ },
38011
38108
  "deviceManager.listLocationIcons": {
38012
38109
  capName: "device-manager",
38013
38110
  capScope: "system",
@@ -38026,6 +38123,12 @@ Object.freeze({
38026
38123
  addonId: null,
38027
38124
  access: "view"
38028
38125
  },
38126
+ "deviceManager.listSiteZones": {
38127
+ capName: "device-manager",
38128
+ capScope: "system",
38129
+ addonId: null,
38130
+ access: "view"
38131
+ },
38029
38132
  "deviceManager.listWrappersForCap": {
38030
38133
  capName: "device-manager",
38031
38134
  capScope: "system",
@@ -38110,12 +38213,24 @@ Object.freeze({
38110
38213
  addonId: null,
38111
38214
  access: "delete"
38112
38215
  },
38216
+ "deviceManager.removeSiteZone": {
38217
+ capName: "device-manager",
38218
+ capScope: "system",
38219
+ addonId: null,
38220
+ access: "delete"
38221
+ },
38113
38222
  "deviceManager.renameLocation": {
38114
38223
  capName: "device-manager",
38115
38224
  capScope: "system",
38116
38225
  addonId: null,
38117
38226
  access: "create"
38118
38227
  },
38228
+ "deviceManager.renameSiteZone": {
38229
+ capName: "device-manager",
38230
+ capScope: "system",
38231
+ addonId: null,
38232
+ access: "create"
38233
+ },
38119
38234
  "deviceManager.runDeviceAction": {
38120
38235
  capName: "device-manager",
38121
38236
  capScope: "system",
@@ -38158,12 +38273,24 @@ Object.freeze({
38158
38273
  addonId: null,
38159
38274
  access: "create"
38160
38275
  },
38276
+ "deviceManager.setLocationDescription": {
38277
+ capName: "device-manager",
38278
+ capScope: "system",
38279
+ addonId: null,
38280
+ access: "create"
38281
+ },
38161
38282
  "deviceManager.setLocationIcon": {
38162
38283
  capName: "device-manager",
38163
38284
  capScope: "system",
38164
38285
  addonId: null,
38165
38286
  access: "create"
38166
38287
  },
38288
+ "deviceManager.setLocationZone": {
38289
+ capName: "device-manager",
38290
+ capScope: "system",
38291
+ addonId: null,
38292
+ access: "create"
38293
+ },
38167
38294
  "deviceManager.setMetadata": {
38168
38295
  capName: "device-manager",
38169
38296
  capScope: "system",
@@ -38194,6 +38321,12 @@ Object.freeze({
38194
38321
  addonId: null,
38195
38322
  access: "create"
38196
38323
  },
38324
+ "deviceManager.setSiteZone": {
38325
+ capName: "device-manager",
38326
+ capScope: "system",
38327
+ addonId: null,
38328
+ access: "create"
38329
+ },
38197
38330
  "deviceManager.setStreamProfileMap": {
38198
38331
  capName: "device-manager",
38199
38332
  capScope: "system",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-rademacher",
3
- "version": "0.2.105",
3
+ "version": "0.2.106",
4
4
  "description": "Rademacher HomePilot device-provider addon for CamStack — wraps the @apocaliss92/noderademacher local-hub client (roller shutters over the cover cap)",
5
5
  "keywords": [
6
6
  "camstack",