@iobroker/adapter-react-v5 7.4.19 → 7.4.22
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/build/Components/Image.d.ts +1 -2
- package/build/Components/Image.js +1 -2
- package/build/Components/Image.js.map +1 -1
- package/build/Components/InfoBox.d.ts +37 -0
- package/build/Components/InfoBox.js +115 -0
- package/build/Components/InfoBox.js.map +1 -0
- package/build/Components/Logo.js +1 -0
- package/build/Components/Logo.js.map +1 -1
- package/build/Components/ObjectBrowser.js +3 -2
- package/build/Components/ObjectBrowser.js.map +1 -1
- package/build/Components/Utils.js +1 -0
- package/build/Components/Utils.js.map +1 -1
- package/build/GenericApp.d.ts +1 -0
- package/build/GenericApp.js +26 -20
- package/build/GenericApp.js.map +1 -1
- package/build/Theme.js +6 -6
- package/build/Theme.js.map +1 -1
- package/build/i18n/de.json +2 -0
- package/build/i18n/en.json +2 -0
- package/build/i18n/es.json +2 -0
- package/build/i18n/fr.json +2 -0
- package/build/i18n/it.json +2 -0
- package/build/i18n/nl.json +2 -0
- package/build/i18n/pl.json +2 -0
- package/build/i18n/pt.json +2 -0
- package/build/i18n/ru.json +2 -0
- package/build/i18n/uk.json +2 -0
- package/build/i18n/zh-cn.json +2 -0
- package/i18n/de.json +2 -0
- package/i18n/en.json +2 -0
- package/i18n/es.json +2 -0
- package/i18n/fr.json +2 -0
- package/i18n/it.json +2 -0
- package/i18n/nl.json +2 -0
- package/i18n/pl.json +2 -0
- package/i18n/pt.json +2 -0
- package/i18n/ru.json +2 -0
- package/i18n/uk.json +2 -0
- package/i18n/zh-cn.json +2 -0
- package/package.json +13 -13
package/build/GenericApp.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ declare global {
|
|
|
25
25
|
}
|
|
26
26
|
export declare class GenericApp<TProps extends GenericAppProps = GenericAppProps, TState extends GenericAppState = GenericAppState> extends Router<TProps, TState> {
|
|
27
27
|
protected socket: AdminConnection;
|
|
28
|
+
protected isIFrame: boolean;
|
|
28
29
|
protected readonly instance: number;
|
|
29
30
|
protected readonly adapterName: string;
|
|
30
31
|
protected readonly instanceId: string;
|
package/build/GenericApp.js
CHANGED
|
@@ -70,8 +70,17 @@ body {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
`;
|
|
73
|
+
function isIFrame() {
|
|
74
|
+
try {
|
|
75
|
+
return window.self !== window.top;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
73
81
|
export class GenericApp extends Router {
|
|
74
82
|
socket;
|
|
83
|
+
isIFrame = isIFrame();
|
|
75
84
|
instance;
|
|
76
85
|
adapterName;
|
|
77
86
|
instanceId;
|
|
@@ -538,12 +547,11 @@ export class GenericApp extends Router {
|
|
|
538
547
|
*/
|
|
539
548
|
onPrepareSave(settings) {
|
|
540
549
|
// here you can encode values
|
|
541
|
-
this.encryptedFields
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
});
|
|
550
|
+
this.encryptedFields?.forEach(attr => {
|
|
551
|
+
if (settings[attr]) {
|
|
552
|
+
settings[attr] = this.encrypt(settings[attr]);
|
|
553
|
+
}
|
|
554
|
+
});
|
|
547
555
|
return true;
|
|
548
556
|
}
|
|
549
557
|
/**
|
|
@@ -555,20 +563,18 @@ export class GenericApp extends Router {
|
|
|
555
563
|
*/
|
|
556
564
|
onPrepareLoad(settings, encryptedNative) {
|
|
557
565
|
// here you can encode values
|
|
558
|
-
this.encryptedFields
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
}
|
|
571
|
-
});
|
|
566
|
+
this.encryptedFields?.forEach(attr => {
|
|
567
|
+
if (settings[attr]) {
|
|
568
|
+
settings[attr] = this.decrypt(settings[attr]);
|
|
569
|
+
}
|
|
570
|
+
});
|
|
571
|
+
encryptedNative?.forEach(attr => {
|
|
572
|
+
this.encryptedFields = this.encryptedFields || [];
|
|
573
|
+
!this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);
|
|
574
|
+
if (settings[attr]) {
|
|
575
|
+
settings[attr] = this.decrypt(settings[attr]);
|
|
576
|
+
}
|
|
577
|
+
});
|
|
572
578
|
}
|
|
573
579
|
/**
|
|
574
580
|
* Gets the extendable instances.
|
package/build/GenericApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericApp.js","sourceRoot":"./src/","sources":["GenericApp.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAW9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAoB1C,wBAAwB;AACxB,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDhB,CAAC;AAEF,MAAM,OAAO,UAGX,SAAQ,MAAsB;IAClB,MAAM,CAAkB;IAEf,QAAQ,CAAS;IAEjB,WAAW,CAAS;IAEpB,UAAU,CAAS;IAEnB,QAAQ,CAAU;IAE3B,eAAe,CAAW;IAEjB,SAAS,CAAqB;IAEzC,mBAAmB,CAAU;IAE7B,OAAO,CAAqB;IAE1B,aAAa,CAA0C;IAEjE,qBAAqB;IACb,WAAW,CAAsB;IAE/B,MAAM,GAAmC,IAAI,CAAC;IAEhD,aAAa,GAAY,KAAK,CAAC;IAE/B,YAAY,GAAY,KAAK,CAAC;IAE9B,WAAW,GAAyC,IAAI,CAAC;IAEjE,YAAY,KAAa,EAAE,QAA6B;QACpD,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,UAAU;YACrC,QAAQ,EAAE,UAAU;YACpB,UAAU,CAAsC,CAAC;QACrD,qKAAqK;QAErK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,gCAAgC,CAAC,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACrD,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;YAC3D,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,gHAAgH;QAChH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtE,IAAI,CAAC;gBACD,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACrC,OAAO,MAAM,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,WAAW,EAAE,CAAC;QAEd,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,GAAqC,EAAE,CAAC;QAClD,KAAK;aACA,IAAI,EAAE;aACN,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACrB,OAAO,CAAC,CAAC,CAAC,EAAE;YACT,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;QAEP,4BAA4B;QAC5B,IAAI,CAAC,QAAQ;YACT,QAAQ,EAAE,QAAQ;gBAClB,KAAK,CAAC,QAAQ;gBACd,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;oBACxB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAkB,EAAE,EAAE,CAAC,IAAI,CAAC;oBAC5C,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,gCAAgC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW;YACZ,QAAQ,EAAE,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;QACrG,IAAI,CAAC,UAAU,GAAG,kBAAkB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,eAAe;QAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,QAAQ,CAAC,GAAG;YACR,QAAQ,CAAC,GAAG;gBACZ,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,CAAC;gBAC7F,EAAE,CAAC;QAEP,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CACtB,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,0BAA0B;QAC5C;YACI,WAAW,EACP,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,EAAE;YACvG,cAAc,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,oBAAoB,EAAE,EAAE;YACxB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC3C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC3C,aAAa,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK;YACtG,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE;YAC5B,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,EAAE;SACpB,CACM,CAAC;QAEZ,oBAAoB;QACpB,MAAM,YAAY,GAAuD,UAAU,CAAC;QAEpF,iBAAiB;QACjB,IAAI,QAAQ,EAAE,YAAY,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC9C,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;oBACxB,YAAY,CAAC,IAA0B,CAAC,GAAG,MAAM,CAAC,MAAM,CACpD,YAAY,CAAC,IAA0B,CAAC,EACxC,QAAQ,CAAC,YAAY,CAAC,IAA0B,CAAC,IAAI,EAAE,CAC1D,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC3C,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACrB,YAAY,CAAC,IAA0B,CAAC,GAAG,MAAM,CAAC,MAAM,CACpD,YAAY,CAAC,IAA0B,CAAC,EACxC,KAAK,CAAC,YAAY,CAAC,IAA0B,CAAC,IAAI,EAAE,CACvD,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEnC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,kCAAkC;QAEzD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,QAAQ,EAAE,eAAe,IAAI,EAAE,CAAC;QAEhF,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC;QAErE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACrG,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7F,MAAM,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1E,CAAC;QACL,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO;YACX,CAAC;YACD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC,CAAC;QAEF,iJAAiJ;QACjJ,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;YAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB;YAClD,UAAU,EAAE,CAAC,QAAkB,EAAE,EAAE;gBAC/B,IAAI,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxC,CAAC;qBAAM,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,EAAC,sBAAsB,EAAE,EAAE;gBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEzC,gDAAgD;gBAChD,IAAI,CAAC,MAAM;qBACN,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC;qBAC5D,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;qBAClC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,CAAC,OAAO;wBACR,CAAC,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC;oBACzF,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,MAAM,IAAK,EAAkC,CAAC;oBACxE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClD,CAAC,CAAC;qBACD,IAAI,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;oBACd,IAAI,WAAW,CAAC;oBAChB,MAAM,WAAW,GAA+C,GAGjD,CAAC;oBAEhB,MAAM,mBAAmB,GAAG,CACxB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,yBAAyB,CAAC,CAC1E,EAAE,GAAG,CAAC;oBAEP,MAAM,aAAa,GACf,mBAAmB,KAAK,KAAK;wBAC7B,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM;wBACnC,WAAW,EAAE,MAAM;wBACnB,WAAW,CAAC,MAAM,CAAC,IAAI;wBACvB,WAAW,CAAC,MAAM,CAAC,OAAO;wBAC1B,8MAA8M;wBAC9M,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB;wBACxC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC;oBAE9C,yBAAyB;oBACzB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC;wBACzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;wBAE1B,MAAM,CAAC,IAAI,CAAC;4BACR,GAAG,EAAE,IAAI,CAAC,SAAS;4BACnB,OAAO,EAAE,YAAY,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;4BAC5E,YAAY,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;yBAC7C,CAAC,CAAC;wBAEH,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBACtC,CAAC;oBAED,qCAAqC;oBACrC,8IAA8I;oBAC9I,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,aAAa,EAAE,CAAC;wBACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBAEzB,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;4BACnE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gCACnD,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;gCACvC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;4BAC/C,CAAC;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC;oBAED,WAAW,GAAG,WAAW,YAAY,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAE/E,KAAK,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;wBACvB,IAAI,WAAW,EAAE,CAAC;4BACd,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,MAAM,CAAC;4BAClC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB;4BAC1F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;4BAClE,IAAI,CAAC,QAAQ,CACT,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAC9E,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAC3D,CAAC;wBACN,CAAC;6BAAM,CAAC;4BACJ,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;4BAC9C,IAAI,CAAC,QAAQ,CACT;gCACI,MAAM,EAAE,EAAE;gCACV,MAAM,EAAE,IAAI;gCACZ,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;6BACnC,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAC3D,CAAC;wBACN,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK;QACR,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,IAA+C;QACtE,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAClF,IAAI,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC;YACV,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,OAAO;SACzB,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,OAAO,CACH,oBAAC,QAAQ,IACL,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO;gBAC7B,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE;gBAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;oBACnC,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE;oBAChC,CAAC,CAAC,SAAS,EAErB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACvB,gBAAgB,EAAE,IAAI,EACtB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EACnF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GACnC,CACL,CAAC;IACN,CAAC;IAED,qBAAqB,GAAG,CAAC,EAAU,EAAE,GAA0C,EAAQ,EAAE;QACrF,IAAI,GAAG,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAM,GAAmC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnF,IAAI,CAAC,MAAM,CAAC,UAAU,GAAI,GAAmC,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;gBACvF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,KAAK,CAAC,CAAE,GAAmC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;gBAChG,IAAI,CAAC,aAAa;oBACb,GAAmC,EAAE,MAAM,IAAK,EAAkC,CAAC;gBACxF,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,aAAa;oBACb,GAAmC,EAAE,MAAM,IAAK,EAAkC,CAAC;YAC5F,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF;;OAEG;IACH,iBAAiB;QACb,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACjE,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAChB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAEpE,uBAAuB;QACvB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAClC,OAAO,MAAM,CAAC,WAAW,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,oBAAoB,EAAE,CAAC;IACjC,CAAC;IAED,gBAAgB,GAAG,CAAC,OAAgC,EAAQ,EAAE;QAC1D,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAChB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;gBAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAEhD,IAAI,CAAC,QAAQ,CACT;oBACI,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;oBACtC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;iBACzC,EACD,GAAG,EAAE;oBACD,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;oBACnE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC7D,CAAC,CACJ,CAAC;YACN,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC7C,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAC7E,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvC,gCAAgC;gBAChC,OAAO,CAAC,KAAK,CACT,8BAA8B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,sCAAsC,CACnG,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,QAAQ;QACX;;;;WAIG;QAEH,MAAM,KAAK,GAA0B;YACjC,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,GAAG;YACP,EAAE,EAAE,GAAG;YACP,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,IAAI;SACX,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,GAAY,CAAC,CAAU,CAAC;QAE9E,OAAO,aAAa,IAAI,IAAI,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,kDAAkD;IAClD,WAAW,CAAC,IAAuB;QAC/B,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,kDAAkD;IAClD,YAAY,CAAC,YAAsB;QAC/B,OAAO,YAAY,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,kDAAkD;IAClD,YAAY,CAAC,YAAsB;QAC/B,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,kDAAkD;IAClD,cAAc,CAAC,aAAqB,IAAS,CAAC;IAE9C,kDAAkD;IAClD,kBAAkB,CAAC,WAAoB,IAAS,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,YAAwB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEvC,2CAA2C;QAC3C,YAAY;YACR,YAAY;gBACZ,CAAC,SAAS,KAAK,MAAM;oBACjB,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,SAAS,KAAK,MAAM;wBACpB,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,SAAS,KAAK,SAAS;4BACvB,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAEhD,IAAI,CAAC,QAAQ,CACT;gBACI,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACtC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aACzC,EACD,GAAG,EAAE;gBACD,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;gBAC9E,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;YACxE,CAAC,CACJ,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;IAC1G,CAAC;IAED;;;OAGG;IACH,kDAAkD;IAClD,iBAAiB,KAAU,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,KAAa;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,MAAM,CAAC,YAAY,CACzB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAC5E,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAa;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,MAAM,CAAC,YAAY,CACzB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAC5E,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,aAAa;QACT,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW,EAAE,KAAc;QACjC,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,EAAE,GAAG,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,QAA6B;QACvC,6BAA6B;QAC7B,IAAI,CAAC,eAAe;YAChB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC,CAAC,CAAC;QAEP,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,QAA6B,EAAE,eAA0B;QACnE,6BAA6B;QAC7B,IAAI,CAAC,eAAe;YAChB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC,CAAC,CAAC;QACP,eAAe;YACX,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;gBAClD,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB;QACxB,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CACnD,UAAU,EACV,iBAAiB,EACjB,uBAAuB,CAC1B,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAY;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3E,kBAAkB;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;QACrD,IAAI,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,IAAI,GAAG,oBAAoB,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,IAAI,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAiB;QACpB,IAAI,MAA+B,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAC9D,OAAO;QACX,CAAC;QAED,IAAI,CAAC,MAAM;aACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC1B,IAAI,CAAC,OAAO,CAAC,EAAE;YACZ,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;YAEpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAChC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBAC5B,CAAC;yBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxE,CAAC;yBAAM,CAAC;wBACJ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC/B,MAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACrD,CAAC;yBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC3C,MAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;oBACN,CAAC;yBAAM,CAAC;wBACJ,OAAQ,MAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrD,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC1D,CAAC;YAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YACjC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBACnC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH,oBAAC,QAAQ,IACL,YAAY,EAAE;gBACV,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,MAAM;aACrB,EACD,IAAI,EAAE,CAAC,CAAC,EACR,gBAAgB,EAAE,IAAI,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAC3C,YAAY,EAAE,EAAE,kBAAkB,EAAE,YAAY,EAAE,EAClD,OAAO,EAAE,8BAAM,EAAE,EAAC,YAAY,IAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAQ,EACxD,MAAM,EAAE;gBACJ,oBAAC,UAAU,IACP,GAAG,EAAC,OAAO,gBACA,OAAO,EAClB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAC3C,IAAI,EAAC,OAAO;oBAEZ,oBAAC,SAAS,OAAG,CACJ;aAChB,GACH,CACL,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO;QACV,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBACzF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH,oBAAC,WAAW,IACR,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,GACjD,CACL,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,MAA2B;QACpC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9E,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QAE/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,SAA8B;QACvC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,SAAiB;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAED;;OAEG;IACH,sBAAsB;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH;YACK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CACxB,oBAAC,gBAAgB,IACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,eAAe,EACX,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAEvF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,MAAM,EAAE,CAAC,OAAgB,EAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EACxD,OAAO,EAAE,GAAS,EAAE;oBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,OAAO,EAAE,CAAC;oBACzB,CAAC;gBACL,CAAC,EACD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAC1C,CACL,CAAC,CAAC,CAAC,IAAI;YACP,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CACvB,oBAAC,aAAa,IACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAClC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,EACrD,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EACxB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAC3B,OAAO,EAAE,CAAC,KAAc,EAAQ,EAAE,CAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,GAEjF,CACL,CAAC,CAAC,CAAC,IAAI,CACT,CACN,CAAC;IACN,CAAC;IAEO,kBAAkB,CAAC,GAAwB,EAAE,KAAwB,EAAE,KAAU;QACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAClB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAClB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,sBAAsB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAY,EAAE,KAAU,EAAE,EAAe;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;YACL,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAgC;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAiC;QACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB;QACf,OAAO,CACH;YACK,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CAC5B,CACN,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,oBAAC,MAAM,IAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAI,CAAC;QACvD,CAAC;QAED,OAAO,CACH,6BAAK,SAAS,EAAC,KAAK;YACf,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CACzB,CACT,CAAC;IACN,CAAC;CACJ","sourcesContent":["/**\n * Copyright 2018-2024 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { type JSX } from 'react';\nimport { PROGRESS, Connection, type AdminConnection } from '@iobroker/socket-client';\nimport * as Sentry from '@sentry/browser';\n\nimport { Snackbar, IconButton } from '@mui/material';\n\nimport { Close as IconClose } from '@mui/icons-material';\n\nimport { printPrompt } from './Prompt';\nimport { Theme } from './Theme';\nimport { Loader } from './Components/Loader';\nimport { Router } from './Components/Router';\nimport { Utils } from './Components/Utils';\nimport { SaveCloseButtons } from './Components/SaveCloseButtons';\nimport { DialogConfirm } from './Dialogs/Confirm';\nimport { I18n } from './i18n';\nimport { DialogError } from './Dialogs/Error';\nimport type {\n GenericAppProps,\n GenericAppState,\n GenericAppSettings,\n ThemeName,\n ThemeType,\n IobTheme,\n Width,\n} from './types';\n\nimport { dictionary } from './dictionary';\n\ndeclare global {\n /** If config has been changed */\n // eslint-disable-next-line no-var\n var changed: boolean;\n\n interface Window {\n io: any;\n SocketClient: any;\n adapterName: undefined | string;\n socketUrl: undefined | string;\n iobOldAlert: any;\n changed: boolean;\n $iframeDialog: {\n close?: () => void;\n };\n }\n}\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nexport class GenericApp<\n TProps extends GenericAppProps = GenericAppProps,\n TState extends GenericAppState = GenericAppState,\n> extends Router<TProps, TState> {\n protected socket: AdminConnection;\n\n protected readonly instance: number;\n\n protected readonly adapterName: string;\n\n protected readonly instanceId: string;\n\n protected readonly newReact: boolean;\n\n protected encryptedFields: string[];\n\n protected readonly sentryDSN: string | undefined;\n\n private alertDialogRendered: boolean;\n\n private _secret: string | undefined;\n\n protected _systemConfig: ioBroker.SystemConfigCommon | undefined;\n\n // it is not readonly\n private savedNative: Record<string, any>;\n\n protected common: ioBroker.InstanceCommon | null = null;\n\n private sentryStarted: boolean = false;\n\n private sentryInited: boolean = false;\n\n private resizeTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(props: TProps, settings?: GenericAppSettings) {\n const ConnectionClass = (props.Connection ||\n settings?.Connection ||\n Connection) as unknown as typeof AdminConnection;\n // const ConnectionClass = props.Connection === 'admin' || settings.Connection = 'admin' ? AdminConnection : (props.Connection || settings.Connection || Connection);\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!GenericApp.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n const query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n const args: Record<string, string | boolean> = {};\n query\n .trim()\n .split('&')\n .filter(t => t.trim())\n .forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance =\n settings?.instance ??\n props.instance ??\n (args.instance !== undefined\n ? parseInt(args.instance as string, 10) || 0\n : parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName =\n settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab =\n location.tab ||\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) ||\n '';\n\n const themeInstance = this.createTheme();\n\n this.state = Object.assign(\n this.state || {}, // keep the existing state\n {\n selectedTab:\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : props?.bottomButtons !== false,\n width: GenericApp.getWidth(),\n confirmClose: false,\n _alert: false,\n _alertType: 'info',\n _alertMessage: '',\n },\n ) as TState;\n\n // init translations\n const translations: Record<ioBroker.Languages, Record<string, string>> = dictionary;\n\n // merge together\n if (settings?.translations) {\n Object.keys(settings.translations).forEach(lang => {\n if (settings.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n settings.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => {\n if (props.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n props.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = (settings && settings.sentryDSN) || props.sentryDSN;\n\n if (window.socketUrl) {\n if (window.socketUrl.startsWith(':')) {\n window.socketUrl = `${window.location.protocol}//${window.location.hostname}${window.socketUrl}`;\n } else if (!window.socketUrl.startsWith('http://') && !window.socketUrl.startsWith('https://')) {\n window.socketUrl = `${window.location.protocol}//${window.socketUrl}`;\n }\n }\n\n this.alertDialogRendered = false;\n\n if (!window.iobOldAlert) {\n window.iobOldAlert = window.alert;\n }\n window.alert = message => {\n if (!this.alertDialogRendered) {\n window.iobOldAlert(message);\n return;\n }\n if (message?.toString().toLowerCase().includes('error')) {\n console.error(message);\n this.showAlert(message.toString(), 'error');\n } else {\n console.log(message);\n this.showAlert(message.toString(), 'info');\n }\n };\n\n // @ts-expect-error either make props in ConnectionProps required or the constructor needs to accept than as they are (means adapt socket-client)\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: (progress: PROGRESS) => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({ connected: false });\n } else if (progress === PROGRESS.READY) {\n this.setState({ connected: true });\n } else {\n this.setState({ connected: true });\n }\n },\n onReady: (/* objects, scripts */) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket\n .subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret =\n (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || ({} as ioBroker.SystemConfigCommon);\n return this.socket.getObject(this.instanceId);\n })\n .then(async obj => {\n let waitPromise;\n const instanceObj: ioBroker.InstanceObject | null | undefined = obj as\n | ioBroker.InstanceObject\n | null\n | undefined;\n\n const sentryPluginEnabled = (\n await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`)\n )?.val;\n\n const sentryEnabled =\n sentryPluginEnabled !== false &&\n this._systemConfig?.diag !== 'none' &&\n instanceObj?.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n // @ts-expect-error will be extended in js-controller TODO: (BF: 2024.05.30) this is redundant to state `${this.instanceId}.plugins.sentry.enabled`, remove this in future when admin sets the state correctly\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [Sentry.dedupeIntegration()],\n });\n\n console.log('Sentry initialized');\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from the above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid').then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n const scope = Sentry.getCurrentScope();\n scope.setUser({ id: uuidObj.native.uuid });\n }\n });\n }\n\n waitPromise = waitPromise instanceof Promise ? waitPromise : Promise.resolve();\n\n void waitPromise.then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState(\n { native: instanceObj.native, loaded: true, expertMode: this.getExpertMode() },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n } else {\n console.warn('Cannot load instance settings');\n this.setState(\n {\n native: {},\n loaded: true,\n expertMode: this.getExpertMode(),\n },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n }\n });\n })\n .catch(e => window.alert(`Cannot settings: ${e}`));\n },\n onError: (err: string) => {\n console.error(err);\n this.showError(err);\n },\n });\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n *\n * @returns True if running in a web adapter or in a socketio adapter.\n */\n static isWeb(): boolean {\n return window.socketUrl !== undefined;\n }\n\n showAlert(message: string, type?: 'info' | 'warning' | 'error' | 'success'): void {\n if (type !== 'error' && type !== 'warning' && type !== 'info' && type !== 'success') {\n type = 'info';\n }\n\n this.setState({\n _alert: true,\n _alertType: type,\n _alertMessage: message,\n });\n }\n\n renderAlertSnackbar(): JSX.Element {\n this.alertDialogRendered = true;\n\n return (\n <Snackbar\n style={\n this.state._alertType === 'error'\n ? { backgroundColor: '#f44336' }\n : this.state._alertType === 'success'\n ? { backgroundColor: '#4caf50' }\n : undefined\n }\n open={this.state._alert}\n autoHideDuration={6000}\n onClose={(_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false })}\n message={this.state._alertMessage}\n />\n );\n }\n\n onSystemConfigChanged = (id: string, obj: ioBroker.AnyObject | null | undefined): void => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== (obj as ioBroker.SystemConfigObject)?.common.language) {\n this.socket.systemLang = (obj as ioBroker.SystemConfigObject)?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig?.expertMode !== !!(obj as ioBroker.SystemConfigObject)?.common?.expertMode) {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n this.setState({ expertMode: this.getExpertMode() });\n } else {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n }\n }\n };\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount(): void {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n\n // restore window.alert\n if (window.iobOldAlert) {\n window.alert = window.iobOldAlert;\n delete window.iobOldAlert;\n }\n\n super.componentWillUnmount();\n }\n\n onReceiveMessage = (message: { data: string } | null): void => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName();\n Utils.setThemeName(Utils.getThemeName());\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n },\n );\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else if (message.data !== 'chartReady') {\n // if not \"echart ready\" message\n console.debug(\n `Received unknown message: \"${JSON.stringify(message.data)}\". May be it will be processed later`,\n );\n }\n }\n };\n\n private onResize = (): void => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({ width: GenericApp.getWidth() });\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n */\n static getWidth(): Width {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES: Record<Width, number> = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key as Width]) as Width;\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n *\n * @param name Theme name\n */\n // eslint-disable-next-line class-methods-use-this\n createTheme(name?: ThemeName | null): IobTheme {\n return Theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeName(currentTheme: IobTheme): ThemeName {\n return currentTheme.name;\n }\n\n /**\n * Get the theme type\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeType(currentTheme: IobTheme): ThemeType {\n return currentTheme.palette.mode;\n }\n\n // eslint-disable-next-line class-methods-use-this\n onThemeChanged(_newThemeName: string): void {}\n\n // eslint-disable-next-line class-methods-use-this\n onToggleExpertMode(_expertMode: boolean): void {}\n\n /**\n * Changes the current theme\n */\n toggleTheme(newThemeName?: ThemeName): void {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n newThemeName =\n newThemeName ||\n (themeName === 'dark'\n ? 'light'\n : themeName === 'blue'\n ? 'light'\n : themeName === 'colored'\n ? 'light'\n : 'dark');\n\n if (newThemeName !== themeName) {\n Utils.setThemeName(newThemeName);\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName || 'light');\n this.onThemeChanged && this.onThemeChanged(newThemeName || 'light');\n },\n );\n }\n }\n\n /**\n * Gets the system configuration.\n */\n getSystemConfig(): Promise<ioBroker.SystemConfigObject> {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n */\n getExpertMode(): boolean {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig?.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n // eslint-disable-next-line class-methods-use-this\n onConnectionReady(): void {}\n\n /**\n * Encrypts a string.\n */\n encrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n */\n decrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged(): void {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n */\n selectTab(tab: string, index?: number): void {\n ((window as any)._localStorage || window.localStorage).setItem(`${this.adapterName}-adapter`, tab);\n this.setState({ selectedTab: tab, selectedTabNum: index });\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n */\n onPrepareSave(settings: Record<string, any>): boolean {\n // here you can encode values\n this.encryptedFields &&\n this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n *\n * @param settings instance settings from native part\n * @param encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings: Record<string, any>, encryptedNative?: string[]): void {\n // here you can encode values\n this.encryptedFields &&\n this.encryptedFields.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative &&\n encryptedNative.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n */\n async getExtendableInstances(): Promise<ioBroker.InstanceObject[]> {\n try {\n const instances = await this.socket.getObjectViewSystem(\n 'instance',\n 'system.adapter.',\n 'system.adapter.\\u9999',\n );\n return Object.values(instances).filter(instance => !!instance?.common?.webExtendable);\n } catch {\n return [];\n }\n }\n\n /**\n * Gets the IP addresses of the given host.\n */\n async getIpAddresses(host: string): Promise<{ name: string; address: string; family: 'ipv4' | 'ipv6' }[]> {\n const ips = await this.socket.getHostByIp(host || this.common?.host || '');\n // translate names\n const ip4 = ips.find(ip => ip.address === '0.0.0.0');\n if (ip4) {\n ip4.name = `[IPv4] 0.0.0.0 - ${I18n.t('ra_Listen on all IPs')}`;\n }\n const ip6 = ips.find(ip => ip.address === '::');\n if (ip6) {\n ip6.name = `[IPv4] :: - ${I18n.t('ra_Listen on all IPs')}`;\n }\n return ips;\n }\n\n /**\n * Saves the settings to the server.\n *\n * @param isClose True if the user is closing the dialog.\n */\n onSave(isClose?: boolean): void {\n let oldObj: ioBroker.InstanceObject;\n if (this.state.isConfigurationError) {\n this.setState({ errorText: this.state.isConfigurationError });\n return;\n }\n\n this.socket\n .getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = (_oldObj || {}) as ioBroker.InstanceObject;\n\n for (const a in this.state.native) {\n if (Object.prototype.hasOwnProperty.call(this.state.native, a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n (oldObj as Record<string, any>).common[b] = null;\n } else if (this.state.common[b] !== undefined) {\n (oldObj as Record<string, any>).common[b] = JSON.parse(\n JSON.stringify(this.state.common[b]),\n );\n } else {\n delete (oldObj as Record<string, any>).common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n }\n\n return Promise.reject(new Error('Invalid configuration'));\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n try {\n window.parent.postMessage('nochange', '*');\n } catch {\n // ignore\n }\n\n this.setState({ changed: false }, () => {\n isClose && GenericApp.onClose();\n });\n })\n .catch(e => console.error(`Cannot save configuration: ${e}`));\n }\n\n /**\n * Renders the toast.\n */\n renderToast(): JSX.Element | null {\n if (!this.state.toast) {\n return null;\n }\n\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={!0}\n autoHideDuration={6000}\n onClose={() => this.setState({ toast: '' })}\n ContentProps={{ 'aria-describedby': 'message-id' }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={() => this.setState({ toast: '' })}\n size=\"large\"\n >\n <IconClose />\n </IconButton>,\n ]}\n />\n );\n }\n\n /**\n * Closes the dialog.\n */\n static onClose(): void {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n */\n renderError(): React.JSX.Element | null {\n if (!this.state.errorText) {\n return null;\n }\n\n return (\n <DialogError\n text={this.state.errorText}\n onClose={() => this.setState({ errorText: '' })}\n />\n );\n }\n\n /**\n * Checks if the configuration has changed.\n *\n * @param native the new state\n */\n getIsChanged(native: Record<string, any>): boolean {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n globalThis.changed = isChanged;\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n *\n * @param newNative The new configuration object.\n */\n onLoadConfig(newNative: Record<string, any>): void {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({ native: newNative, changed: this.getIsChanged(newNative) });\n }\n }\n\n /**\n * Sets the configuration error.\n */\n setConfigurationError(errorText: string): void {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({ isConfigurationError: errorText });\n }\n }\n\n /**\n * Renders the save and close buttons.\n */\n renderSaveCloseButtons(): React.JSX.Element | null {\n if (!this.state.confirmClose && !this.state.bottomButtons) {\n return null;\n }\n\n return (\n <>\n {this.state.bottomButtons ? (\n <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={\n this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'\n }\n changed={this.state.changed}\n onSave={(isClose: boolean): void => this.onSave(isClose)}\n onClose={(): void => {\n if (this.state.changed) {\n this.setState({ confirmClose: true });\n } else {\n GenericApp.onClose();\n }\n }}\n error={!!this.state.isConfigurationError}\n />\n ) : null}\n {this.state.confirmClose ? (\n <DialogConfirm\n title={I18n.t('ra_Please confirm')}\n text={I18n.t('ra_Some data are not stored. Discard?')}\n ok={I18n.t('ra_Discard')}\n cancel={I18n.t('ra_Cancel')}\n onClose={(isYes: boolean): void =>\n this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose())\n }\n />\n ) : null}\n </>\n );\n }\n\n private _updateNativeValue(obj: Record<string, any>, attrs: string | string[], value: any): boolean {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr: string = attrs.shift() || '';\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n return false;\n }\n if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n }\n\n return false;\n }\n\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error(`attribute ${attr} is no object, but ${typeof obj[attr]}`);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n\n /**\n * Update the native value\n *\n * @param attr The attribute name with dots as delimiter.\n * @param value The new value.\n * @param cb Callback which will be called upon completion.\n */\n updateNativeValue(attr: string, value: any, cb?: () => void): void {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n\n if (changed !== this.state.changed) {\n try {\n window.parent.postMessage(changed ? 'change' : 'nochange', '*');\n } catch {\n // ignore\n }\n }\n\n this.setState({ native, changed }, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n */\n showError(text: string | React.JSX.Element): void {\n this.setState({ errorText: text });\n }\n\n /**\n * Sets the toast to be shown.\n *\n * @param toast Text to be shown.\n */\n showToast(toast: string | React.JSX.Element): void {\n this.setState({ toast });\n }\n\n /**\n * Renders helper dialogs\n */\n renderHelperDialogs(): React.JSX.Element {\n return (\n <>\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </>\n );\n }\n\n /**\n * Renders this component.\n */\n render(): React.JSX.Element {\n if (!this.state.loaded) {\n return <Loader themeType={this.state.themeType} />;\n }\n\n return (\n <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </div>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GenericApp.js","sourceRoot":"./src/","sources":["GenericApp.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAW9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAoB1C,wBAAwB;AACxB,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDhB,CAAC;AAEF,SAAS,QAAQ;IACb,IAAI,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,OAAO,UAGX,SAAQ,MAAsB;IAClB,MAAM,CAAkB;IAExB,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAEb,QAAQ,CAAS;IAEjB,WAAW,CAAS;IAEpB,UAAU,CAAS;IAEnB,QAAQ,CAAU;IAE3B,eAAe,CAAW;IAEjB,SAAS,CAAqB;IAEzC,mBAAmB,CAAU;IAE7B,OAAO,CAAqB;IAE1B,aAAa,CAA0C;IAEjE,qBAAqB;IACb,WAAW,CAAsB;IAE/B,MAAM,GAAmC,IAAI,CAAC;IAEhD,aAAa,GAAY,KAAK,CAAC;IAE/B,YAAY,GAAY,KAAK,CAAC;IAE9B,WAAW,GAAyC,IAAI,CAAC;IAEjE,YAAY,KAAa,EAAE,QAA6B;QACpD,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,UAAU;YACrC,QAAQ,EAAE,UAAU;YACpB,UAAU,CAAsC,CAAC;QACrD,qKAAqK;QAErK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,gCAAgC,CAAC,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACrD,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;YAC3D,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,gHAAgH;QAChH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtE,IAAI,CAAC;gBACD,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACrC,OAAO,MAAM,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,WAAW,EAAE,CAAC;QAEd,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,GAAqC,EAAE,CAAC;QAClD,KAAK;aACA,IAAI,EAAE;aACN,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACrB,OAAO,CAAC,CAAC,CAAC,EAAE;YACT,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;QAEP,4BAA4B;QAC5B,IAAI,CAAC,QAAQ;YACT,QAAQ,EAAE,QAAQ;gBAClB,KAAK,CAAC,QAAQ;gBACd,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;oBACxB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAkB,EAAE,EAAE,CAAC,IAAI,CAAC;oBAC5C,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,gCAAgC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW;YACZ,QAAQ,EAAE,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;QACrG,IAAI,CAAC,UAAU,GAAG,kBAAkB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,eAAe;QAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,QAAQ,CAAC,GAAG;YACR,QAAQ,CAAC,GAAG;gBACZ,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,CAAC;gBAC7F,EAAE,CAAC;QAEP,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CACtB,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,0BAA0B;QAC5C;YACI,WAAW,EACP,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,EAAE;YACvG,cAAc,EAAE,CAAC,CAAC;YAClB,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,KAAK;YACb,oBAAoB,EAAE,EAAE;YACxB,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,aAAa;YACpB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC3C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC3C,aAAa,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK;YACtG,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE;YAC5B,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,MAAM;YAClB,aAAa,EAAE,EAAE;SACpB,CACM,CAAC;QAEZ,oBAAoB;QACpB,MAAM,YAAY,GAAuD,UAAU,CAAC;QAEpF,iBAAiB;QACjB,IAAI,QAAQ,EAAE,YAAY,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC9C,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;oBACxB,YAAY,CAAC,IAA0B,CAAC,GAAG,MAAM,CAAC,MAAM,CACpD,YAAY,CAAC,IAA0B,CAAC,EACxC,QAAQ,CAAC,YAAY,CAAC,IAA0B,CAAC,IAAI,EAAE,CAC1D,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC3C,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACrB,YAAY,CAAC,IAA0B,CAAC,GAAG,MAAM,CAAC,MAAM,CACpD,YAAY,CAAC,IAA0B,CAAC,EACxC,KAAK,CAAC,YAAY,CAAC,IAA0B,CAAC,IAAI,EAAE,CACvD,CAAC;gBACN,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEnC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,kCAAkC;QAEzD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,IAAI,QAAQ,EAAE,eAAe,IAAI,EAAE,CAAC;QAEhF,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC;QAErE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACrG,CAAC;iBAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7F,MAAM,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1E,CAAC;QACL,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO;YACX,CAAC;YACD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC,CAAC;QAEF,iJAAiJ;QACjJ,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC;YAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB;YAClD,UAAU,EAAE,CAAC,QAAkB,EAAE,EAAE;gBAC/B,IAAI,QAAQ,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxC,CAAC;qBAAM,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,EAAC,sBAAsB,EAAE,EAAE;gBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEzC,gDAAgD;gBAChD,IAAI,CAAC,MAAM;qBACN,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC;qBAC5D,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;qBAClC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,CAAC,OAAO;wBACR,CAAC,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC;oBACzF,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,MAAM,IAAK,EAAkC,CAAC;oBACxE,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClD,CAAC,CAAC;qBACD,IAAI,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;oBACd,IAAI,WAAW,CAAC;oBAChB,MAAM,WAAW,GAA+C,GAGjD,CAAC;oBAEhB,MAAM,mBAAmB,GAAG,CACxB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,yBAAyB,CAAC,CAC1E,EAAE,GAAG,CAAC;oBAEP,MAAM,aAAa,GACf,mBAAmB,KAAK,KAAK;wBAC7B,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM;wBACnC,WAAW,EAAE,MAAM;wBACnB,WAAW,CAAC,MAAM,CAAC,IAAI;wBACvB,WAAW,CAAC,MAAM,CAAC,OAAO;wBAC1B,8MAA8M;wBAC9M,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB;wBACxC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,gBAAgB,CAAC;oBAE9C,yBAAyB;oBACzB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC;wBACzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;wBAE1B,MAAM,CAAC,IAAI,CAAC;4BACR,GAAG,EAAE,IAAI,CAAC,SAAS;4BACnB,OAAO,EAAE,YAAY,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;4BAC5E,YAAY,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;yBAC7C,CAAC,CAAC;wBAEH,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBACtC,CAAC;oBAED,qCAAqC;oBACrC,8IAA8I;oBAC9I,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,aAAa,EAAE,CAAC;wBACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBAEzB,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;4BACnE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gCACnD,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;gCACvC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;4BAC/C,CAAC;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC;oBAED,WAAW,GAAG,WAAW,YAAY,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAE/E,KAAK,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;wBACvB,IAAI,WAAW,EAAE,CAAC;4BACd,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,MAAM,CAAC;4BAClC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAqB;4BAC1F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;4BAClE,IAAI,CAAC,QAAQ,CACT,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAC9E,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAC3D,CAAC;wBACN,CAAC;6BAAM,CAAC;4BACJ,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;4BAC9C,IAAI,CAAC,QAAQ,CACT;gCACI,MAAM,EAAE,EAAE;gCACV,MAAM,EAAE,IAAI;gCACZ,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;6BACnC,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAC3D,CAAC;wBACN,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK;QACR,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,IAA+C;QACtE,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAClF,IAAI,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC;YACV,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,OAAO;SACzB,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,OAAO,CACH,oBAAC,QAAQ,IACL,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO;gBAC7B,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE;gBAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;oBACnC,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE;oBAChC,CAAC,CAAC,SAAS,EAErB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACvB,gBAAgB,EAAE,IAAI,EACtB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EACnF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GACnC,CACL,CAAC;IACN,CAAC;IAED,qBAAqB,GAAG,CAAC,EAAU,EAAE,GAA0C,EAAQ,EAAE;QACrF,IAAI,GAAG,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAM,GAAmC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACnF,IAAI,CAAC,MAAM,CAAC,UAAU,GAAI,GAAmC,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;gBACvF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,KAAK,CAAC,CAAE,GAAmC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;gBAChG,IAAI,CAAC,aAAa;oBACb,GAAmC,EAAE,MAAM,IAAK,EAAkC,CAAC;gBACxF,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,aAAa;oBACb,GAAmC,EAAE,MAAM,IAAK,EAAkC,CAAC;YAC5F,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEF;;OAEG;IACH,iBAAiB;QACb,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACjE,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAChB,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAEpE,uBAAuB;QACvB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAClC,OAAO,MAAM,CAAC,WAAW,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,oBAAoB,EAAE,CAAC;IACjC,CAAC;IAED,gBAAgB,GAAG,CAAC,OAAgC,EAAQ,EAAE;QAC1D,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAChB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;gBAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAEhD,IAAI,CAAC,QAAQ,CACT;oBACI,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;oBACtC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;iBACzC,EACD,GAAG,EAAE;oBACD,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;oBACnE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC7D,CAAC,CACJ,CAAC;YACN,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC7C,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YAC7E,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvC,gCAAgC;gBAChC,OAAO,CAAC,KAAK,CACT,8BAA8B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,sCAAsC,CACnG,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IAEM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,QAAQ;QACX;;;;WAIG;QAEH,MAAM,KAAK,GAA0B;YACjC,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,GAAG;YACP,EAAE,EAAE,GAAG;YACP,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,IAAI;SACX,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,GAAY,CAAC,CAAU,CAAC;QAE9E,OAAO,aAAa,IAAI,IAAI,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,kDAAkD;IAClD,WAAW,CAAC,IAAuB;QAC/B,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,kDAAkD;IAClD,YAAY,CAAC,YAAsB;QAC/B,OAAO,YAAY,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,kDAAkD;IAClD,YAAY,CAAC,YAAsB;QAC/B,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,kDAAkD;IAClD,cAAc,CAAC,aAAqB,IAAS,CAAC;IAE9C,kDAAkD;IAClD,kBAAkB,CAAC,WAAoB,IAAS,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,YAAwB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEvC,2CAA2C;QAC3C,YAAY;YACR,YAAY;gBACZ,CAAC,SAAS,KAAK,MAAM;oBACjB,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,SAAS,KAAK,MAAM;wBACpB,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,SAAS,KAAK,SAAS;4BACvB,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,MAAM,CAAC,CAAC;QAEtB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAEhD,IAAI,CAAC,QAAQ,CACT;gBACI,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACtC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aACzC,EACD,GAAG,EAAE;gBACD,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;gBAC9E,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC;YACxE,CAAC,CACJ,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;IAC1G,CAAC;IAED;;;OAGG;IACH,kDAAkD;IAClD,iBAAiB,KAAU,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,KAAa;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,MAAM,CAAC,YAAY,CACzB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAC5E,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAa;QACjB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,IAAI,MAAM,CAAC,YAAY,CACzB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAC5E,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,aAAa;QACT,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW,EAAE,KAAc;QACjC,CAAE,MAAc,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,EAAE,GAAG,CAAC,CAAC;QACnG,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,QAA6B;QACvC,6BAA6B;QAC7B,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YACjC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,QAA6B,EAAE,eAA0B;QACnE,6BAA6B;QAC7B,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YACjC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC,CAAC,CAAC;QACH,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;YAClD,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB;QACxB,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CACnD,UAAU,EACV,iBAAiB,EACjB,uBAAuB,CAC1B,CAAC;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAY;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3E,kBAAkB;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;QACrD,IAAI,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,IAAI,GAAG,oBAAoB,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAChD,IAAI,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,IAAI,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAiB;QACpB,IAAI,MAA+B,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAC9D,OAAO;QACX,CAAC;QAED,IAAI,CAAC,MAAM;aACN,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAC1B,IAAI,CAAC,OAAO,CAAC,EAAE;YACZ,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;YAEpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAChC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBAC5B,CAAC;yBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxE,CAAC;yBAAM,CAAC;wBACJ,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAChC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC/B,MAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACrD,CAAC;yBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC3C,MAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;oBACN,CAAC;yBAAM,CAAC;wBACJ,OAAQ,MAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACrD,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC1D,CAAC;YAED,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YACjC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS;YACb,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBACnC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH,oBAAC,QAAQ,IACL,YAAY,EAAE;gBACV,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,MAAM;aACrB,EACD,IAAI,EAAE,CAAC,CAAC,EACR,gBAAgB,EAAE,IAAI,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAC3C,YAAY,EAAE,EAAE,kBAAkB,EAAE,YAAY,EAAE,EAClD,OAAO,EAAE,8BAAM,EAAE,EAAC,YAAY,IAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAQ,EACxD,MAAM,EAAE;gBACJ,oBAAC,UAAU,IACP,GAAG,EAAC,OAAO,gBACA,OAAO,EAClB,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAC3C,IAAI,EAAC,OAAO;oBAEZ,oBAAC,SAAS,OAAG,CACJ;aAChB,GACH,CACL,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO;QACV,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACxD,IAAI,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBACzF,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH,oBAAC,WAAW,IACR,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,GACjD,CACL,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,MAA2B;QACpC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9E,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QAE/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,SAA8B;QACvC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,SAAiB;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAED;;OAEG;IACH,sBAAsB;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH;YACK,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CACxB,oBAAC,gBAAgB,IACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,eAAe,EACX,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,EAEvF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,MAAM,EAAE,CAAC,OAAgB,EAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EACxD,OAAO,EAAE,GAAS,EAAE;oBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,OAAO,EAAE,CAAC;oBACzB,CAAC;gBACL,CAAC,EACD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAC1C,CACL,CAAC,CAAC,CAAC,IAAI;YACP,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CACvB,oBAAC,aAAa,IACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAClC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,EACrD,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,EACxB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAC3B,OAAO,EAAE,CAAC,KAAc,EAAQ,EAAE,CAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,GAEjF,CACL,CAAC,CAAC,CAAC,IAAI,CACT,CACN,CAAC;IACN,CAAC;IAEO,kBAAkB,CAAC,GAAwB,EAAE,KAAwB,EAAE,KAAU;QACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtD,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAClB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBAClB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,sBAAsB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAY,EAAE,KAAU,EAAE,EAAe;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACpE,CAAC;gBAAC,MAAM,CAAC;oBACL,SAAS;gBACb,CAAC;YACL,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAgC;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,KAAiC;QACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB;QACf,OAAO,CACH;YACK,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CAC5B,CACN,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,oBAAC,MAAM,IAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAI,CAAC;QACvD,CAAC;QAED,OAAO,CACH,6BAAK,SAAS,EAAC,KAAK;YACf,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,EAAE,CACzB,CACT,CAAC;IACN,CAAC;CACJ","sourcesContent":["/**\n * Copyright 2018-2024 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\nimport React, { type JSX } from 'react';\nimport { PROGRESS, Connection, type AdminConnection } from '@iobroker/socket-client';\nimport * as Sentry from '@sentry/browser';\n\nimport { Snackbar, IconButton } from '@mui/material';\n\nimport { Close as IconClose } from '@mui/icons-material';\n\nimport { printPrompt } from './Prompt';\nimport { Theme } from './Theme';\nimport { Loader } from './Components/Loader';\nimport { Router } from './Components/Router';\nimport { Utils } from './Components/Utils';\nimport { SaveCloseButtons } from './Components/SaveCloseButtons';\nimport { DialogConfirm } from './Dialogs/Confirm';\nimport { I18n } from './i18n';\nimport { DialogError } from './Dialogs/Error';\nimport type {\n GenericAppProps,\n GenericAppState,\n GenericAppSettings,\n ThemeName,\n ThemeType,\n IobTheme,\n Width,\n} from './types';\n\nimport { dictionary } from './dictionary';\n\ndeclare global {\n /** If config has been changed */\n // eslint-disable-next-line no-var\n var changed: boolean;\n\n interface Window {\n io: any;\n SocketClient: any;\n adapterName: undefined | string;\n socketUrl: undefined | string;\n iobOldAlert: any;\n changed: boolean;\n $iframeDialog: {\n close?: () => void;\n };\n }\n}\n\n// import './index.css';\nconst cssStyle = `\nhtml {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n/* scrollbar */\n::-webkit-scrollbar-track {\n background-color: #ccc;\n border-radius: 5px;\n}\n\n::-webkit-scrollbar {\n width: 5px;\n height: 5px;\n background-color: #ccc;\n}\n\n::-webkit-scrollbar-thumb {\n background-color: #575757;\n border-radius: 5px;\n}\n\n#root {\n height: 100%;\n}\n\n.App {\n height: 100%;\n}\n\n@keyframes glow {\n from {\n background-color: initial;\n }\n to {\n background-color: #58c458;\n }\n}\n`;\n\nfunction isIFrame(): boolean {\n try {\n return window.self !== window.top;\n } catch {\n return true;\n }\n}\n\nexport class GenericApp<\n TProps extends GenericAppProps = GenericAppProps,\n TState extends GenericAppState = GenericAppState,\n> extends Router<TProps, TState> {\n protected socket: AdminConnection;\n\n protected isIFrame = isIFrame();\n\n protected readonly instance: number;\n\n protected readonly adapterName: string;\n\n protected readonly instanceId: string;\n\n protected readonly newReact: boolean;\n\n protected encryptedFields: string[];\n\n protected readonly sentryDSN: string | undefined;\n\n private alertDialogRendered: boolean;\n\n private _secret: string | undefined;\n\n protected _systemConfig: ioBroker.SystemConfigCommon | undefined;\n\n // it is not readonly\n private savedNative: Record<string, any>;\n\n protected common: ioBroker.InstanceCommon | null = null;\n\n private sentryStarted: boolean = false;\n\n private sentryInited: boolean = false;\n\n private resizeTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(props: TProps, settings?: GenericAppSettings) {\n const ConnectionClass = (props.Connection ||\n settings?.Connection ||\n Connection) as unknown as typeof AdminConnection;\n // const ConnectionClass = props.Connection === 'admin' || settings.Connection = 'admin' ? AdminConnection : (props.Connection || settings.Connection || Connection);\n\n if (!window.document.getElementById('generic-app-iobroker-component')) {\n const style = window.document.createElement('style');\n style.setAttribute('id', 'generic-app-iobroker-component');\n style.innerHTML = cssStyle;\n window.document.head.appendChild(style);\n }\n\n // Remove `!Connection.isWeb() && window.adapterName !== 'material'` when iobroker.socket will support native ws\n if (!GenericApp.isWeb() && window.io && window.location.port === '3000') {\n try {\n const io = new window.SocketClient();\n delete window.io;\n window.io = io;\n } catch {\n // ignore\n }\n }\n\n super(props);\n\n printPrompt();\n\n const query = (window.location.search || '').replace(/^\\?/, '').replace(/#.*$/, '');\n const args: Record<string, string | boolean> = {};\n query\n .trim()\n .split('&')\n .filter(t => t.trim())\n .forEach(b => {\n const parts = b.split('=');\n args[parts[0]] = parts.length === 2 ? parts[1] : true;\n if (args[parts[0]] === 'true') {\n args[parts[0]] = true;\n } else if (args[parts[0]] === 'false') {\n args[parts[0]] = false;\n }\n });\n\n // extract instance from URL\n this.instance =\n settings?.instance ??\n props.instance ??\n (args.instance !== undefined\n ? parseInt(args.instance as string, 10) || 0\n : parseInt(window.location.search.slice(1), 10) || 0);\n // extract adapter name from URL\n const tmp = window.location.pathname.split('/');\n this.adapterName =\n settings?.adapterName || props.adapterName || window.adapterName || tmp[tmp.length - 2] || 'iot';\n this.instanceId = `system.adapter.${this.adapterName}.${this.instance}`;\n this.newReact = args.newReact === true; // it is admin5\n\n const location = Router.getLocation();\n location.tab =\n location.tab ||\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) ||\n '';\n\n const themeInstance = this.createTheme();\n\n this.state = Object.assign(\n this.state || {}, // keep the existing state\n {\n selectedTab:\n ((window as any)._localStorage || window.localStorage).getItem(`${this.adapterName}-adapter`) || '',\n selectedTabNum: -1,\n native: {},\n errorText: '',\n changed: false,\n connected: false,\n loaded: false,\n isConfigurationError: '',\n expertMode: false,\n toast: '',\n theme: themeInstance,\n themeName: this.getThemeName(themeInstance),\n themeType: this.getThemeType(themeInstance),\n bottomButtons: (settings && settings.bottomButtons) === false ? false : props?.bottomButtons !== false,\n width: GenericApp.getWidth(),\n confirmClose: false,\n _alert: false,\n _alertType: 'info',\n _alertMessage: '',\n },\n ) as TState;\n\n // init translations\n const translations: Record<ioBroker.Languages, Record<string, string>> = dictionary;\n\n // merge together\n if (settings?.translations) {\n Object.keys(settings.translations).forEach(lang => {\n if (settings.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n settings.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n } else if (props.translations) {\n Object.keys(props.translations).forEach(lang => {\n if (props.translations) {\n translations[lang as ioBroker.Languages] = Object.assign(\n translations[lang as ioBroker.Languages],\n props.translations[lang as ioBroker.Languages] || {},\n );\n }\n });\n }\n\n I18n.setTranslations(translations);\n\n this.savedNative = {}; // to detect if the config changed\n\n this.encryptedFields = props.encryptedFields || settings?.encryptedFields || [];\n\n this.sentryDSN = (settings && settings.sentryDSN) || props.sentryDSN;\n\n if (window.socketUrl) {\n if (window.socketUrl.startsWith(':')) {\n window.socketUrl = `${window.location.protocol}//${window.location.hostname}${window.socketUrl}`;\n } else if (!window.socketUrl.startsWith('http://') && !window.socketUrl.startsWith('https://')) {\n window.socketUrl = `${window.location.protocol}//${window.socketUrl}`;\n }\n }\n\n this.alertDialogRendered = false;\n\n if (!window.iobOldAlert) {\n window.iobOldAlert = window.alert;\n }\n window.alert = message => {\n if (!this.alertDialogRendered) {\n window.iobOldAlert(message);\n return;\n }\n if (message?.toString().toLowerCase().includes('error')) {\n console.error(message);\n this.showAlert(message.toString(), 'error');\n } else {\n console.log(message);\n this.showAlert(message.toString(), 'info');\n }\n };\n\n // @ts-expect-error either make props in ConnectionProps required or the constructor needs to accept than as they are (means adapt socket-client)\n this.socket = new ConnectionClass({\n ...(props?.socket || settings?.socket),\n name: this.adapterName,\n doNotLoadAllObjects: settings?.doNotLoadAllObjects,\n onProgress: (progress: PROGRESS) => {\n if (progress === PROGRESS.CONNECTING) {\n this.setState({ connected: false });\n } else if (progress === PROGRESS.READY) {\n this.setState({ connected: true });\n } else {\n this.setState({ connected: true });\n }\n },\n onReady: (/* objects, scripts */) => {\n I18n.setLanguage(this.socket.systemLang);\n\n // subscribe because of language and expert mode\n this.socket\n .subscribeObject('system.config', this.onSystemConfigChanged)\n .then(() => this.getSystemConfig())\n .then(obj => {\n this._secret =\n (typeof obj !== 'undefined' && obj.native && obj.native.secret) || 'Zgfr56gFe87jJOM';\n this._systemConfig = obj?.common || ({} as ioBroker.SystemConfigCommon);\n return this.socket.getObject(this.instanceId);\n })\n .then(async obj => {\n let waitPromise;\n const instanceObj: ioBroker.InstanceObject | null | undefined = obj as\n | ioBroker.InstanceObject\n | null\n | undefined;\n\n const sentryPluginEnabled = (\n await this.socket.getState(`${this.instanceId}.plugins.sentry.enabled`)\n )?.val;\n\n const sentryEnabled =\n sentryPluginEnabled !== false &&\n this._systemConfig?.diag !== 'none' &&\n instanceObj?.common &&\n instanceObj.common.name &&\n instanceObj.common.version &&\n // @ts-expect-error will be extended in js-controller TODO: (BF: 2024.05.30) this is redundant to state `${this.instanceId}.plugins.sentry.enabled`, remove this in future when admin sets the state correctly\n !instanceObj.common.disableDataReporting &&\n window.location.host !== 'localhost:3000';\n\n // activate sentry plugin\n if (!this.sentryStarted && this.sentryDSN && sentryEnabled) {\n this.sentryStarted = true;\n\n Sentry.init({\n dsn: this.sentryDSN,\n release: `iobroker.${instanceObj.common.name}@${instanceObj.common.version}`,\n integrations: [Sentry.dedupeIntegration()],\n });\n\n console.log('Sentry initialized');\n }\n\n // read UUID and init sentry with it.\n // for backward compatibility it will be processed separately from the above logic: some adapters could still have this.sentryDSN as undefined\n if (!this.sentryInited && sentryEnabled) {\n this.sentryInited = true;\n\n waitPromise = this.socket.getObject('system.meta.uuid').then(uuidObj => {\n if (uuidObj && uuidObj.native && uuidObj.native.uuid) {\n const scope = Sentry.getCurrentScope();\n scope.setUser({ id: uuidObj.native.uuid });\n }\n });\n }\n\n waitPromise = waitPromise instanceof Promise ? waitPromise : Promise.resolve();\n\n void waitPromise.then(() => {\n if (instanceObj) {\n this.common = instanceObj?.common;\n this.onPrepareLoad(instanceObj.native, instanceObj.encryptedNative); // decode all secrets\n this.savedNative = JSON.parse(JSON.stringify(instanceObj.native));\n this.setState(\n { native: instanceObj.native, loaded: true, expertMode: this.getExpertMode() },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n } else {\n console.warn('Cannot load instance settings');\n this.setState(\n {\n native: {},\n loaded: true,\n expertMode: this.getExpertMode(),\n },\n () => this.onConnectionReady && this.onConnectionReady(),\n );\n }\n });\n })\n .catch(e => window.alert(`Cannot settings: ${e}`));\n },\n onError: (err: string) => {\n console.error(err);\n this.showError(err);\n },\n });\n }\n\n /**\n * Checks if this connection is running in a web adapter and not in an admin.\n *\n * @returns True if running in a web adapter or in a socketio adapter.\n */\n static isWeb(): boolean {\n return window.socketUrl !== undefined;\n }\n\n showAlert(message: string, type?: 'info' | 'warning' | 'error' | 'success'): void {\n if (type !== 'error' && type !== 'warning' && type !== 'info' && type !== 'success') {\n type = 'info';\n }\n\n this.setState({\n _alert: true,\n _alertType: type,\n _alertMessage: message,\n });\n }\n\n renderAlertSnackbar(): JSX.Element {\n this.alertDialogRendered = true;\n\n return (\n <Snackbar\n style={\n this.state._alertType === 'error'\n ? { backgroundColor: '#f44336' }\n : this.state._alertType === 'success'\n ? { backgroundColor: '#4caf50' }\n : undefined\n }\n open={this.state._alert}\n autoHideDuration={6000}\n onClose={(_e, reason) => reason !== 'clickaway' && this.setState({ _alert: false })}\n message={this.state._alertMessage}\n />\n );\n }\n\n onSystemConfigChanged = (id: string, obj: ioBroker.AnyObject | null | undefined): void => {\n if (obj && id === 'system.config') {\n if (this.socket.systemLang !== (obj as ioBroker.SystemConfigObject)?.common.language) {\n this.socket.systemLang = (obj as ioBroker.SystemConfigObject)?.common.language || 'en';\n I18n.setLanguage(this.socket.systemLang);\n }\n\n if (this._systemConfig?.expertMode !== !!(obj as ioBroker.SystemConfigObject)?.common?.expertMode) {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n this.setState({ expertMode: this.getExpertMode() });\n } else {\n this._systemConfig =\n (obj as ioBroker.SystemConfigObject)?.common || ({} as ioBroker.SystemConfigCommon);\n }\n }\n };\n\n /**\n * Called immediately after a component is mounted. Setting state here will trigger re-rendering.\n */\n componentDidMount(): void {\n window.addEventListener('resize', this.onResize, true);\n window.addEventListener('message', this.onReceiveMessage, false);\n super.componentDidMount();\n }\n\n /**\n * Called immediately before a component is destroyed.\n */\n componentWillUnmount(): void {\n window.removeEventListener('resize', this.onResize, true);\n window.removeEventListener('message', this.onReceiveMessage, false);\n\n // restore window.alert\n if (window.iobOldAlert) {\n window.alert = window.iobOldAlert;\n delete window.iobOldAlert;\n }\n\n super.componentWillUnmount();\n }\n\n onReceiveMessage = (message: { data: string } | null): void => {\n if (message?.data) {\n if (message.data === 'updateTheme') {\n const newThemeName = Utils.getThemeName();\n Utils.setThemeName(Utils.getThemeName());\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName);\n this.onThemeChanged && this.onThemeChanged(newThemeName);\n },\n );\n } else if (message.data === 'updateExpertMode') {\n this.onToggleExpertMode && this.onToggleExpertMode(this.getExpertMode());\n } else if (message.data !== 'chartReady') {\n // if not \"echart ready\" message\n console.debug(\n `Received unknown message: \"${JSON.stringify(message.data)}\". May be it will be processed later`,\n );\n }\n }\n };\n\n private onResize = (): void => {\n this.resizeTimer && clearTimeout(this.resizeTimer);\n this.resizeTimer = setTimeout(() => {\n this.resizeTimer = null;\n this.setState({ width: GenericApp.getWidth() });\n }, 200);\n };\n\n /**\n * Gets the width depending on the window inner width.\n */\n static getWidth(): Width {\n /**\n * innerWidth |xs sm md lg xl\n * |-------|-------|-------|-------|------>\n * width | xs | sm | md | lg | xl\n */\n\n const SIZES: Record<Width, number> = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n };\n const width = window.innerWidth;\n const keys = Object.keys(SIZES).reverse();\n const widthComputed = keys.find(key => width >= SIZES[key as Width]) as Width;\n\n return widthComputed || 'xs';\n }\n\n /**\n * Get a theme\n *\n * @param name Theme name\n */\n // eslint-disable-next-line class-methods-use-this\n createTheme(name?: ThemeName | null): IobTheme {\n return Theme(Utils.getThemeName(name));\n }\n\n /**\n * Get the theme name\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeName(currentTheme: IobTheme): ThemeName {\n return currentTheme.name;\n }\n\n /**\n * Get the theme type\n */\n // eslint-disable-next-line class-methods-use-this\n getThemeType(currentTheme: IobTheme): ThemeType {\n return currentTheme.palette.mode;\n }\n\n // eslint-disable-next-line class-methods-use-this\n onThemeChanged(_newThemeName: string): void {}\n\n // eslint-disable-next-line class-methods-use-this\n onToggleExpertMode(_expertMode: boolean): void {}\n\n /**\n * Changes the current theme\n */\n toggleTheme(newThemeName?: ThemeName): void {\n const themeName = this.state.themeName;\n\n // dark => blue => colored => light => dark\n newThemeName =\n newThemeName ||\n (themeName === 'dark'\n ? 'light'\n : themeName === 'blue'\n ? 'light'\n : themeName === 'colored'\n ? 'light'\n : 'dark');\n\n if (newThemeName !== themeName) {\n Utils.setThemeName(newThemeName);\n\n const newTheme = this.createTheme(newThemeName);\n\n this.setState(\n {\n theme: newTheme,\n themeName: this.getThemeName(newTheme),\n themeType: this.getThemeType(newTheme),\n },\n () => {\n this.props.onThemeChange && this.props.onThemeChange(newThemeName || 'light');\n this.onThemeChanged && this.onThemeChanged(newThemeName || 'light');\n },\n );\n }\n }\n\n /**\n * Gets the system configuration.\n */\n getSystemConfig(): Promise<ioBroker.SystemConfigObject> {\n return this.socket.getSystemConfig();\n }\n\n /**\n * Get current expert mode\n */\n getExpertMode(): boolean {\n return window.sessionStorage.getItem('App.expertMode') === 'true' || !!this._systemConfig?.expertMode;\n }\n\n /**\n * Gets called when the socket.io connection is ready.\n * You can overload this function to execute own commands.\n */\n // eslint-disable-next-line class-methods-use-this\n onConnectionReady(): void {}\n\n /**\n * Encrypts a string.\n */\n encrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Decrypts a string.\n */\n decrypt(value: string): string {\n let result = '';\n if (this._secret) {\n for (let i = 0; i < value.length; i++) {\n result += String.fromCharCode(\n this._secret[i % this._secret.length].charCodeAt(0) ^ value.charCodeAt(i),\n );\n }\n }\n return result;\n }\n\n /**\n * Gets called when the navigation hash changes.\n * You may override this if needed.\n */\n onHashChanged(): void {\n const location = Router.getLocation();\n if (location.tab !== this.state.selectedTab) {\n this.selectTab(location.tab);\n }\n }\n\n /**\n * Selects the given tab.\n */\n selectTab(tab: string, index?: number): void {\n ((window as any)._localStorage || window.localStorage).setItem(`${this.adapterName}-adapter`, tab);\n this.setState({ selectedTab: tab, selectedTabNum: index });\n }\n\n /**\n * Gets called before the settings are saved.\n * You may override this if needed.\n */\n onPrepareSave(settings: Record<string, any>): boolean {\n // here you can encode values\n this.encryptedFields?.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.encrypt(settings[attr]);\n }\n });\n\n return true;\n }\n\n /**\n * Gets called after the settings are loaded.\n * You may override this if needed.\n *\n * @param settings instance settings from native part\n * @param encryptedNative optional list of fields to be decrypted\n */\n onPrepareLoad(settings: Record<string, any>, encryptedNative?: string[]): void {\n // here you can encode values\n this.encryptedFields?.forEach(attr => {\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n encryptedNative?.forEach(attr => {\n this.encryptedFields = this.encryptedFields || [];\n !this.encryptedFields.includes(attr) && this.encryptedFields.push(attr);\n if (settings[attr]) {\n settings[attr] = this.decrypt(settings[attr]);\n }\n });\n }\n\n /**\n * Gets the extendable instances.\n */\n async getExtendableInstances(): Promise<ioBroker.InstanceObject[]> {\n try {\n const instances = await this.socket.getObjectViewSystem(\n 'instance',\n 'system.adapter.',\n 'system.adapter.\\u9999',\n );\n return Object.values(instances).filter(instance => !!instance?.common?.webExtendable);\n } catch {\n return [];\n }\n }\n\n /**\n * Gets the IP addresses of the given host.\n */\n async getIpAddresses(host: string): Promise<{ name: string; address: string; family: 'ipv4' | 'ipv6' }[]> {\n const ips = await this.socket.getHostByIp(host || this.common?.host || '');\n // translate names\n const ip4 = ips.find(ip => ip.address === '0.0.0.0');\n if (ip4) {\n ip4.name = `[IPv4] 0.0.0.0 - ${I18n.t('ra_Listen on all IPs')}`;\n }\n const ip6 = ips.find(ip => ip.address === '::');\n if (ip6) {\n ip6.name = `[IPv4] :: - ${I18n.t('ra_Listen on all IPs')}`;\n }\n return ips;\n }\n\n /**\n * Saves the settings to the server.\n *\n * @param isClose True if the user is closing the dialog.\n */\n onSave(isClose?: boolean): void {\n let oldObj: ioBroker.InstanceObject;\n if (this.state.isConfigurationError) {\n this.setState({ errorText: this.state.isConfigurationError });\n return;\n }\n\n this.socket\n .getObject(this.instanceId)\n .then(_oldObj => {\n oldObj = (_oldObj || {}) as ioBroker.InstanceObject;\n\n for (const a in this.state.native) {\n if (Object.prototype.hasOwnProperty.call(this.state.native, a)) {\n if (this.state.native[a] === null) {\n oldObj.native[a] = null;\n } else if (this.state.native[a] !== undefined) {\n oldObj.native[a] = JSON.parse(JSON.stringify(this.state.native[a]));\n } else {\n delete oldObj.native[a];\n }\n }\n }\n\n if (this.state.common) {\n for (const b in this.state.common) {\n if (this.state.common[b] === null) {\n (oldObj as Record<string, any>).common[b] = null;\n } else if (this.state.common[b] !== undefined) {\n (oldObj as Record<string, any>).common[b] = JSON.parse(\n JSON.stringify(this.state.common[b]),\n );\n } else {\n delete (oldObj as Record<string, any>).common[b];\n }\n }\n }\n\n if (this.onPrepareSave(oldObj.native) !== false) {\n return this.socket.setObject(this.instanceId, oldObj);\n }\n\n return Promise.reject(new Error('Invalid configuration'));\n })\n .then(() => {\n this.savedNative = oldObj.native;\n globalThis.changed = false;\n try {\n window.parent.postMessage('nochange', '*');\n } catch {\n // ignore\n }\n\n this.setState({ changed: false }, () => {\n isClose && GenericApp.onClose();\n });\n })\n .catch(e => console.error(`Cannot save configuration: ${e}`));\n }\n\n /**\n * Renders the toast.\n */\n renderToast(): JSX.Element | null {\n if (!this.state.toast) {\n return null;\n }\n\n return (\n <Snackbar\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left',\n }}\n open={!0}\n autoHideDuration={6000}\n onClose={() => this.setState({ toast: '' })}\n ContentProps={{ 'aria-describedby': 'message-id' }}\n message={<span id=\"message-id\">{this.state.toast}</span>}\n action={[\n <IconButton\n key=\"close\"\n aria-label=\"Close\"\n color=\"inherit\"\n onClick={() => this.setState({ toast: '' })}\n size=\"large\"\n >\n <IconClose />\n </IconButton>,\n ]}\n />\n );\n }\n\n /**\n * Closes the dialog.\n */\n static onClose(): void {\n if (typeof window.parent !== 'undefined' && window.parent) {\n try {\n if (window.parent.$iframeDialog && typeof window.parent.$iframeDialog.close === 'function') {\n window.parent.$iframeDialog.close();\n } else {\n window.parent.postMessage('close', '*');\n }\n } catch {\n window.parent.postMessage('close', '*');\n }\n }\n }\n\n /**\n * Renders the error dialog.\n */\n renderError(): React.JSX.Element | null {\n if (!this.state.errorText) {\n return null;\n }\n\n return (\n <DialogError\n text={this.state.errorText}\n onClose={() => this.setState({ errorText: '' })}\n />\n );\n }\n\n /**\n * Checks if the configuration has changed.\n *\n * @param native the new state\n */\n getIsChanged(native: Record<string, any>): boolean {\n native = native || this.state.native;\n const isChanged = JSON.stringify(native) !== JSON.stringify(this.savedNative);\n\n globalThis.changed = isChanged;\n\n return isChanged;\n }\n\n /**\n * Gets called when loading the configuration.\n *\n * @param newNative The new configuration object.\n */\n onLoadConfig(newNative: Record<string, any>): void {\n if (JSON.stringify(newNative) !== JSON.stringify(this.state.native)) {\n this.setState({ native: newNative, changed: this.getIsChanged(newNative) });\n }\n }\n\n /**\n * Sets the configuration error.\n */\n setConfigurationError(errorText: string): void {\n if (this.state.isConfigurationError !== errorText) {\n this.setState({ isConfigurationError: errorText });\n }\n }\n\n /**\n * Renders the save and close buttons.\n */\n renderSaveCloseButtons(): React.JSX.Element | null {\n if (!this.state.confirmClose && !this.state.bottomButtons) {\n return null;\n }\n\n return (\n <>\n {this.state.bottomButtons ? (\n <SaveCloseButtons\n theme={this.state.theme}\n newReact={this.newReact}\n noTextOnButtons={\n this.state.width === 'xs' || this.state.width === 'sm' || this.state.width === 'md'\n }\n changed={this.state.changed}\n onSave={(isClose: boolean): void => this.onSave(isClose)}\n onClose={(): void => {\n if (this.state.changed) {\n this.setState({ confirmClose: true });\n } else {\n GenericApp.onClose();\n }\n }}\n error={!!this.state.isConfigurationError}\n />\n ) : null}\n {this.state.confirmClose ? (\n <DialogConfirm\n title={I18n.t('ra_Please confirm')}\n text={I18n.t('ra_Some data are not stored. Discard?')}\n ok={I18n.t('ra_Discard')}\n cancel={I18n.t('ra_Cancel')}\n onClose={(isYes: boolean): void =>\n this.setState({ confirmClose: false }, () => isYes && GenericApp.onClose())\n }\n />\n ) : null}\n </>\n );\n }\n\n private _updateNativeValue(obj: Record<string, any>, attrs: string | string[], value: any): boolean {\n if (typeof attrs !== 'object') {\n attrs = attrs.split('.');\n }\n const attr: string = attrs.shift() || '';\n if (!attrs.length) {\n if (value && typeof value === 'object') {\n if (JSON.stringify(obj[attr]) !== JSON.stringify(value)) {\n obj[attr] = value;\n return true;\n }\n return false;\n }\n if (obj[attr] !== value) {\n obj[attr] = value;\n return true;\n }\n\n return false;\n }\n\n obj[attr] = obj[attr] || {};\n if (typeof obj[attr] !== 'object') {\n throw new Error(`attribute ${attr} is no object, but ${typeof obj[attr]}`);\n }\n return this._updateNativeValue(obj[attr], attrs, value);\n }\n\n /**\n * Update the native value\n *\n * @param attr The attribute name with dots as delimiter.\n * @param value The new value.\n * @param cb Callback which will be called upon completion.\n */\n updateNativeValue(attr: string, value: any, cb?: () => void): void {\n const native = JSON.parse(JSON.stringify(this.state.native));\n if (this._updateNativeValue(native, attr, value)) {\n const changed = this.getIsChanged(native);\n\n if (changed !== this.state.changed) {\n try {\n window.parent.postMessage(changed ? 'change' : 'nochange', '*');\n } catch {\n // ignore\n }\n }\n\n this.setState({ native, changed }, cb);\n }\n }\n\n /**\n * Set the error text to be shown.\n */\n showError(text: string | React.JSX.Element): void {\n this.setState({ errorText: text });\n }\n\n /**\n * Sets the toast to be shown.\n *\n * @param toast Text to be shown.\n */\n showToast(toast: string | React.JSX.Element): void {\n this.setState({ toast });\n }\n\n /**\n * Renders helper dialogs\n */\n renderHelperDialogs(): React.JSX.Element {\n return (\n <>\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </>\n );\n }\n\n /**\n * Renders this component.\n */\n render(): React.JSX.Element {\n if (!this.state.loaded) {\n return <Loader themeType={this.state.themeType} />;\n }\n\n return (\n <div className=\"App\">\n {this.renderError()}\n {this.renderToast()}\n {this.renderSaveCloseButtons()}\n {this.renderAlertSnackbar()}\n </div>\n );\n }\n}\n"]}
|
package/build/Theme.js
CHANGED
|
@@ -11,14 +11,14 @@ function toInt(hex) {
|
|
|
11
11
|
b: 0,
|
|
12
12
|
};
|
|
13
13
|
if (hex.length === 7) {
|
|
14
|
-
rgb.r = parseInt(hex.
|
|
15
|
-
rgb.g = parseInt(hex.
|
|
16
|
-
rgb.b = parseInt(hex.
|
|
14
|
+
rgb.r = parseInt(hex.substring(1, 3), 16);
|
|
15
|
+
rgb.g = parseInt(hex.substring(3, 5), 16);
|
|
16
|
+
rgb.b = parseInt(hex.substring(5, 7), 16);
|
|
17
17
|
}
|
|
18
18
|
else if (hex.length === 4) {
|
|
19
|
-
const r = hex
|
|
20
|
-
const g = hex
|
|
21
|
-
const b = hex
|
|
19
|
+
const r = hex[1];
|
|
20
|
+
const g = hex[2];
|
|
21
|
+
const b = hex[3];
|
|
22
22
|
rgb.r = parseInt(r + r, 16);
|
|
23
23
|
rgb.g = parseInt(g + g, 16);
|
|
24
24
|
rgb.b = parseInt(b + b, 16);
|
package/build/Theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.js","sourceRoot":"./src/","sources":["Theme.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type CSSProperties } from 'react';\nimport { createTheme, alpha, type PaletteOptions as PaletteOptionsMui } from '@mui/material/styles';\nimport { orange, grey } from '@mui/material/colors';\n\nimport type { SimplePaletteColorOptions } from '@mui/material/styles/createPalette';\nimport type { ThemeOptions as ThemeOptionsMui } from '@mui/material/styles/createTheme';\nimport type { IobTheme, ThemeName, ThemeType } from './types';\n\nconst step = (16 - 5) / 23 / 100;\n\n/**\n * Convert hex color in the format '#rrggbb' or '#rgb' to an RGB object.\n */\nfunction toInt(hex: string): { r: number; g: number; b: number } {\n const rgb: { r: number; g: number; b: number } = {\n r: 0,\n g: 0,\n b: 0,\n };\n\n if (hex.length === 7) {\n rgb.r = parseInt(hex.substr(1, 2), 16);\n rgb.g = parseInt(hex.substr(3, 2), 16);\n rgb.b = parseInt(hex.substr(5, 2), 16);\n } else if (hex.length === 4) {\n const r = hex.substr(1, 1);\n const g = hex.substr(2, 1);\n const b = hex.substr(3, 1);\n\n rgb.r = parseInt(r + r, 16);\n rgb.g = parseInt(g + g, 16);\n rgb.b = parseInt(b + b, 16);\n }\n\n return rgb;\n}\n\n/**\n * Convert an RGB object to a hex color string in the format '#rrggbb'.\n */\nfunction toHex(int: { r: number; g: number; b: number }): string {\n return `#${Math.round(int.r).toString(16)}${Math.round(int.g).toString(16)}${Math.round(int.b).toString(16)}`;\n}\n\n/** Returns the hex color string in the format '#rrggbb' */\nfunction getElevation(\n /** color in the format '#rrggbb' or '#rgb' */\n color: string,\n /** overlay color in the format '#rrggbb' or '#rgb' */\n overlayColor: string,\n /** elevation as an integer starting with 1 */\n elevation: number,\n): string {\n const rgb: { r: number; g: number; b: number } = toInt(color);\n const overlay: { r: number; g: number; b: number } = toInt(overlayColor);\n\n rgb.r += overlay.r * (0.05 + step * (elevation - 1));\n rgb.g += overlay.g * (0.05 + step * (elevation - 1));\n rgb.b += overlay.b * (0.05 + step * (elevation - 1));\n\n return toHex(rgb);\n}\n\n/**\n * Get all 24 elevations of the given color and overlay.\n *\n * @param color color in the format '#rrggbb' or '#rgb'\n * @param overlay overlay color in the format '#rrggbb' or '#rgb'\n */\nfunction getElevations(color: string, overlay: string): Record<string, CSSProperties> {\n const elevations: Record<string, CSSProperties> = {};\n\n for (let i = 1; i <= 24; i++) {\n elevations[`elevation${i}`] = {\n backgroundColor: getElevation(color, overlay, i),\n };\n }\n\n return elevations;\n}\n\n// const buttonsPalette = () => ({\n// palette: {\n// // mode: \"dark\",\n// grey: {\n// main: grey[300],\n// dark: grey[400],\n// },\n// },\n// });\n\n// const buttonsTheme = theme => ({\n// components: {\n// MuiButton: {\n// variants: [\n// {\n// props: { variant: 'contained', color: 'grey' },\n// style: {\n// color: theme.palette.getContrastText(theme.palette.grey[300]),\n// },\n// },\n// {\n// props: { variant: 'outlined', color: 'grey' },\n// style: {\n// color: theme.palette.text.primary,\n// borderColor:\n// theme.palette.mode === 'light'\n// ? 'rgba(0, 0, 0, 0.23)'\n// : 'rgba(255, 255, 255, 0.23)',\n// '&.Mui-disabled': {\n// border: `1px solid ${theme.palette.action.disabledBackground}`,\n// },\n// '&:hover': {\n// borderColor:\n// theme.palette.mode === 'light'\n// ? 'rgba(0, 0, 0, 0.23)'\n// : 'rgba(255, 255, 255, 0.23)',\n// backgroundColor: alpha(\n// theme.palette.text.primary,\n// theme.palette.action.hoverOpacity,\n// ),\n// },\n// },\n// },\n// {\n// props: { color: 'grey', variant: 'text' },\n// style: {\n// color: 'black',\n// '&:hover': {\n// backgroundColor: alpha(\n// theme.palette.text.primary,\n// theme.palette.action.hoverOpacity,\n// ),\n// },\n// },\n// },\n// ],\n// },\n// },\n// });\n\ninterface PaletteOptions extends PaletteOptionsMui {\n mode: ThemeType;\n expert: string;\n grey?: {\n main?: string;\n dark?: string;\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n A100?: string;\n A200?: string;\n A400?: string;\n A700?: string;\n };\n}\n\ninterface ThemeOptions extends ThemeOptionsMui {\n name: ThemeName;\n palette?: PaletteOptions;\n toolbar?: CSSProperties;\n saveToolbar?: {\n background: string;\n button: CSSProperties;\n };\n}\n\n/**\n * The theme creation factory function.\n */\nexport function Theme(type: ThemeName, overrides?: Record<string, any>): IobTheme {\n let options: ThemeOptions;\n let localOverrides: Record<string, any>;\n\n if (type === 'dark') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#272727',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[200],\n '&:hover': {\n color: orange[100],\n },\n },\n },\n MuiPaper: getElevations('#121212', '#fff'),\n };\n\n options = {\n name: type,\n palette: {\n mode: 'dark',\n background: {\n paper: '#121212',\n default: '#121212',\n },\n primary: {\n main: '#4dabf5',\n },\n secondary: {\n main: '#436a93',\n },\n expert: '#14bb00',\n text: {\n primary: '#ffffff',\n secondary: '#ffffff',\n },\n },\n };\n } else if (type === 'blue') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#3399CC',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'dark',\n background: {\n paper: '#151d21',\n default: '#151d21',\n },\n primary: {\n main: '#4dabf5',\n },\n secondary: {\n main: '#436a93',\n },\n expert: '#14bb00',\n text: {\n primary: '#ffffff',\n secondary: '#ffffff',\n },\n },\n };\n } else if (type === 'colored') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#2a3135',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[200],\n '&:hover': {\n color: orange[100],\n },\n },\n },\n MuiPaper: getElevations('#151d21', '#fff'),\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#3399CC',\n },\n secondary: {\n main: '#164477',\n },\n expert: '#96fc96',\n },\n };\n } else if (type === 'PT') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#0F99DE',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#0F99DE',\n },\n secondary: {\n main: '#88A536',\n },\n expert: '#BD1B24',\n },\n };\n } else if (type === 'DX') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#a9a9a9',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#F5F5F7',\n },\n secondary: {\n main: '#a9a9a9',\n },\n expert: '#BD1B24',\n text: {\n primary: '#007AFE',\n secondary: '#007AFE',\n disabled: '#007AFEAA',\n },\n },\n };\n } else {\n localOverrides = {\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#3399CC',\n dark: '#256c97',\n light: '#76d0fd',\n },\n secondary: {\n main: '#164477',\n },\n expert: '#14bb00',\n },\n };\n }\n\n options.toolbar = {\n height: 48,\n };\n\n options.saveToolbar = {\n background: (options.palette?.primary as SimplePaletteColorOptions)?.main,\n button: {\n borderRadius: 3,\n height: 32,\n },\n };\n\n if (options.palette) {\n options.palette.grey = {\n main: grey[300],\n dark: grey[400],\n };\n }\n\n const theme: IobTheme = createTheme(options) as IobTheme;\n\n const palette: PaletteOptions = theme.palette as PaletteOptions;\n\n return createTheme(theme, {\n ...(overrides || undefined),\n components: {\n ...localOverrides,\n MuiButton: {\n variants: [\n {\n props: { variant: 'contained', color: 'grey' },\n style: {\n backgroundColor: palette.grey?.[300],\n color:\n palette.getContrastText && palette.grey?.[300]\n ? palette.getContrastText(palette.grey[300])\n : undefined,\n },\n },\n {\n props: { variant: 'outlined', color: 'grey' },\n style: {\n color: palette.text?.primary,\n borderColor: palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)',\n '&.Mui-disabled': {\n border: `1px solid ${palette.action?.disabledBackground}`,\n },\n '&:hover': {\n borderColor:\n palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)',\n backgroundColor: alpha(\n palette.text?.primary || '',\n palette.action?.hoverOpacity || 0.04,\n ),\n },\n },\n },\n {\n props: { variant: 'text', color: 'grey' },\n style: {\n color: palette.text?.primary,\n '&:hover': {\n backgroundColor: alpha(\n palette.text?.primary || '',\n palette.action?.hoverOpacity || 0.04,\n ),\n },\n },\n },\n ],\n },\n ...(overrides?.components || undefined),\n },\n }) as IobTheme;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Theme.js","sourceRoot":"./src/","sources":["Theme.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type CSSProperties } from 'react';\nimport { createTheme, alpha, type PaletteOptions as PaletteOptionsMui } from '@mui/material/styles';\nimport { orange, grey } from '@mui/material/colors';\n\nimport type { SimplePaletteColorOptions } from '@mui/material/styles/createPalette';\nimport type { ThemeOptions as ThemeOptionsMui } from '@mui/material/styles/createTheme';\nimport type { IobTheme, ThemeName, ThemeType } from './types';\n\nconst step = (16 - 5) / 23 / 100;\n\n/**\n * Convert hex color in the format '#rrggbb' or '#rgb' to an RGB object.\n */\nfunction toInt(hex: string): { r: number; g: number; b: number } {\n const rgb: { r: number; g: number; b: number } = {\n r: 0,\n g: 0,\n b: 0,\n };\n\n if (hex.length === 7) {\n rgb.r = parseInt(hex.substring(1, 3), 16);\n rgb.g = parseInt(hex.substring(3, 5), 16);\n rgb.b = parseInt(hex.substring(5, 7), 16);\n } else if (hex.length === 4) {\n const r = hex[1];\n const g = hex[2];\n const b = hex[3];\n\n rgb.r = parseInt(r + r, 16);\n rgb.g = parseInt(g + g, 16);\n rgb.b = parseInt(b + b, 16);\n }\n\n return rgb;\n}\n\n/**\n * Convert an RGB object to a hex color string in the format '#rrggbb'.\n */\nfunction toHex(int: { r: number; g: number; b: number }): string {\n return `#${Math.round(int.r).toString(16)}${Math.round(int.g).toString(16)}${Math.round(int.b).toString(16)}`;\n}\n\n/** Returns the hex color string in the format '#rrggbb' */\nfunction getElevation(\n /** color in the format '#rrggbb' or '#rgb' */\n color: string,\n /** overlay color in the format '#rrggbb' or '#rgb' */\n overlayColor: string,\n /** elevation as an integer starting with 1 */\n elevation: number,\n): string {\n const rgb: { r: number; g: number; b: number } = toInt(color);\n const overlay: { r: number; g: number; b: number } = toInt(overlayColor);\n\n rgb.r += overlay.r * (0.05 + step * (elevation - 1));\n rgb.g += overlay.g * (0.05 + step * (elevation - 1));\n rgb.b += overlay.b * (0.05 + step * (elevation - 1));\n\n return toHex(rgb);\n}\n\n/**\n * Get all 24 elevations of the given color and overlay.\n *\n * @param color color in the format '#rrggbb' or '#rgb'\n * @param overlay overlay color in the format '#rrggbb' or '#rgb'\n */\nfunction getElevations(color: string, overlay: string): Record<string, CSSProperties> {\n const elevations: Record<string, CSSProperties> = {};\n\n for (let i = 1; i <= 24; i++) {\n elevations[`elevation${i}`] = {\n backgroundColor: getElevation(color, overlay, i),\n };\n }\n\n return elevations;\n}\n\n// const buttonsPalette = () => ({\n// palette: {\n// // mode: \"dark\",\n// grey: {\n// main: grey[300],\n// dark: grey[400],\n// },\n// },\n// });\n\n// const buttonsTheme = theme => ({\n// components: {\n// MuiButton: {\n// variants: [\n// {\n// props: { variant: 'contained', color: 'grey' },\n// style: {\n// color: theme.palette.getContrastText(theme.palette.grey[300]),\n// },\n// },\n// {\n// props: { variant: 'outlined', color: 'grey' },\n// style: {\n// color: theme.palette.text.primary,\n// borderColor:\n// theme.palette.mode === 'light'\n// ? 'rgba(0, 0, 0, 0.23)'\n// : 'rgba(255, 255, 255, 0.23)',\n// '&.Mui-disabled': {\n// border: `1px solid ${theme.palette.action.disabledBackground}`,\n// },\n// '&:hover': {\n// borderColor:\n// theme.palette.mode === 'light'\n// ? 'rgba(0, 0, 0, 0.23)'\n// : 'rgba(255, 255, 255, 0.23)',\n// backgroundColor: alpha(\n// theme.palette.text.primary,\n// theme.palette.action.hoverOpacity,\n// ),\n// },\n// },\n// },\n// {\n// props: { color: 'grey', variant: 'text' },\n// style: {\n// color: 'black',\n// '&:hover': {\n// backgroundColor: alpha(\n// theme.palette.text.primary,\n// theme.palette.action.hoverOpacity,\n// ),\n// },\n// },\n// },\n// ],\n// },\n// },\n// });\n\ninterface PaletteOptions extends PaletteOptionsMui {\n mode: ThemeType;\n expert: string;\n grey?: {\n main?: string;\n dark?: string;\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n A100?: string;\n A200?: string;\n A400?: string;\n A700?: string;\n };\n}\n\ninterface ThemeOptions extends ThemeOptionsMui {\n name: ThemeName;\n palette?: PaletteOptions;\n toolbar?: CSSProperties;\n saveToolbar?: {\n background: string;\n button: CSSProperties;\n };\n}\n\n/**\n * The theme creation factory function.\n */\nexport function Theme(type: ThemeName, overrides?: Record<string, any>): IobTheme {\n let options: ThemeOptions;\n let localOverrides: Record<string, any>;\n\n if (type === 'dark') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#272727',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[200],\n '&:hover': {\n color: orange[100],\n },\n },\n },\n MuiPaper: getElevations('#121212', '#fff'),\n };\n\n options = {\n name: type,\n palette: {\n mode: 'dark',\n background: {\n paper: '#121212',\n default: '#121212',\n },\n primary: {\n main: '#4dabf5',\n },\n secondary: {\n main: '#436a93',\n },\n expert: '#14bb00',\n text: {\n primary: '#ffffff',\n secondary: '#ffffff',\n },\n },\n };\n } else if (type === 'blue') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#3399CC',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'dark',\n background: {\n paper: '#151d21',\n default: '#151d21',\n },\n primary: {\n main: '#4dabf5',\n },\n secondary: {\n main: '#436a93',\n },\n expert: '#14bb00',\n text: {\n primary: '#ffffff',\n secondary: '#ffffff',\n },\n },\n };\n } else if (type === 'colored') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#2a3135',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[200],\n '&:hover': {\n color: orange[100],\n },\n },\n },\n MuiPaper: getElevations('#151d21', '#fff'),\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#3399CC',\n },\n secondary: {\n main: '#164477',\n },\n expert: '#96fc96',\n },\n };\n } else if (type === 'PT') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#0F99DE',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#0F99DE',\n },\n secondary: {\n main: '#88A536',\n },\n expert: '#BD1B24',\n },\n };\n } else if (type === 'DX') {\n localOverrides = {\n MuiAppBar: {\n colorDefault: {\n backgroundColor: '#a9a9a9',\n },\n },\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#F5F5F7',\n },\n secondary: {\n main: '#a9a9a9',\n },\n expert: '#BD1B24',\n text: {\n primary: '#007AFE',\n secondary: '#007AFE',\n disabled: '#007AFEAA',\n },\n },\n };\n } else {\n localOverrides = {\n MuiLink: {\n root: {\n textTransform: 'uppercase',\n transition: 'color .3s ease',\n color: orange[400],\n '&:hover': {\n color: orange[300],\n },\n },\n },\n };\n\n options = {\n name: type,\n palette: {\n mode: 'light',\n primary: {\n main: '#3399CC',\n dark: '#256c97',\n light: '#76d0fd',\n },\n secondary: {\n main: '#164477',\n },\n expert: '#14bb00',\n },\n };\n }\n\n options.toolbar = {\n height: 48,\n };\n\n options.saveToolbar = {\n background: (options.palette?.primary as SimplePaletteColorOptions)?.main,\n button: {\n borderRadius: 3,\n height: 32,\n },\n };\n\n if (options.palette) {\n options.palette.grey = {\n main: grey[300],\n dark: grey[400],\n };\n }\n\n const theme: IobTheme = createTheme(options) as IobTheme;\n\n const palette: PaletteOptions = theme.palette as PaletteOptions;\n\n return createTheme(theme, {\n ...(overrides || undefined),\n components: {\n ...localOverrides,\n MuiButton: {\n variants: [\n {\n props: { variant: 'contained', color: 'grey' },\n style: {\n backgroundColor: palette.grey?.[300],\n color:\n palette.getContrastText && palette.grey?.[300]\n ? palette.getContrastText(palette.grey[300])\n : undefined,\n },\n },\n {\n props: { variant: 'outlined', color: 'grey' },\n style: {\n color: palette.text?.primary,\n borderColor: palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)',\n '&.Mui-disabled': {\n border: `1px solid ${palette.action?.disabledBackground}`,\n },\n '&:hover': {\n borderColor:\n palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)',\n backgroundColor: alpha(\n palette.text?.primary || '',\n palette.action?.hoverOpacity || 0.04,\n ),\n },\n },\n },\n {\n props: { variant: 'text', color: 'grey' },\n style: {\n color: palette.text?.primary,\n '&:hover': {\n backgroundColor: alpha(\n palette.text?.primary || '',\n palette.action?.hoverOpacity || 0.04,\n ),\n },\n },\n },\n ],\n },\n ...(overrides?.components || undefined),\n },\n }) as IobTheme;\n}\n"]}
|
package/build/i18n/de.json
CHANGED
|
@@ -251,6 +251,7 @@
|
|
|
251
251
|
"ra_dow_Tu": "Di",
|
|
252
252
|
"ra_dow_We": "Mi",
|
|
253
253
|
"ra_expertMode": "Expertenmodus",
|
|
254
|
+
"ra_false": "FALSCH",
|
|
254
255
|
"ra_fileType_all": "Alle Dateien",
|
|
255
256
|
"ra_fileType_audio": "Audio",
|
|
256
257
|
"ra_fileType_code": "Code/JSON",
|
|
@@ -319,6 +320,7 @@
|
|
|
319
320
|
"ra_tooltip_ts": "Zeitstempel",
|
|
320
321
|
"ra_tooltip_user": "Benutzer",
|
|
321
322
|
"ra_tooltip_value": "Wert",
|
|
323
|
+
"ra_true": "WAHR",
|
|
322
324
|
"ra_use seconds": "Sekunden benutzen",
|
|
323
325
|
"ra_val": "Wert",
|
|
324
326
|
"ra_via internet": "übers Internet",
|
package/build/i18n/en.json
CHANGED
|
@@ -251,6 +251,7 @@
|
|
|
251
251
|
"ra_dow_Tu": "Tu",
|
|
252
252
|
"ra_dow_We": "We",
|
|
253
253
|
"ra_expertMode": "Expert mode",
|
|
254
|
+
"ra_false": "FALSE",
|
|
254
255
|
"ra_fileType_all": "All files",
|
|
255
256
|
"ra_fileType_audio": "Audio",
|
|
256
257
|
"ra_fileType_code": "Code/JSON",
|
|
@@ -319,6 +320,7 @@
|
|
|
319
320
|
"ra_tooltip_ts": "Time stamp",
|
|
320
321
|
"ra_tooltip_user": "User",
|
|
321
322
|
"ra_tooltip_value": "Value",
|
|
323
|
+
"ra_true": "TRUE",
|
|
322
324
|
"ra_use seconds": "use seconds",
|
|
323
325
|
"ra_val": "Value",
|
|
324
326
|
"ra_via internet": "via internet",
|
package/build/i18n/es.json
CHANGED
|
@@ -251,6 +251,7 @@
|
|
|
251
251
|
"ra_dow_Tu": "Tu",
|
|
252
252
|
"ra_dow_We": "Nosotros",
|
|
253
253
|
"ra_expertMode": "Modo experto",
|
|
254
|
+
"ra_false": "FALSO",
|
|
254
255
|
"ra_fileType_all": "Todos los archivos",
|
|
255
256
|
"ra_fileType_audio": "Audio",
|
|
256
257
|
"ra_fileType_code": "Código/JSON",
|
|
@@ -319,6 +320,7 @@
|
|
|
319
320
|
"ra_tooltip_ts": "Sello de tiempo",
|
|
320
321
|
"ra_tooltip_user": "Usuario",
|
|
321
322
|
"ra_tooltip_value": "Valor",
|
|
323
|
+
"ra_true": "VERDADERO",
|
|
322
324
|
"ra_use seconds": "usar segundos",
|
|
323
325
|
"ra_val": "Valor",
|
|
324
326
|
"ra_via internet": "vía Internet",
|
package/build/i18n/fr.json
CHANGED
|
@@ -251,6 +251,7 @@
|
|
|
251
251
|
"ra_dow_Tu": "Tu",
|
|
252
252
|
"ra_dow_We": "Nous",
|
|
253
253
|
"ra_expertMode": "Mode expert",
|
|
254
|
+
"ra_false": "FAUX",
|
|
254
255
|
"ra_fileType_all": "Tous les fichiers",
|
|
255
256
|
"ra_fileType_audio": "l'audio",
|
|
256
257
|
"ra_fileType_code": "Code/JSON",
|
|
@@ -319,6 +320,7 @@
|
|
|
319
320
|
"ra_tooltip_ts": "Horodatage",
|
|
320
321
|
"ra_tooltip_user": "Utilisateur",
|
|
321
322
|
"ra_tooltip_value": "Valeur",
|
|
323
|
+
"ra_true": "VRAI",
|
|
322
324
|
"ra_use seconds": "utiliser les secondes",
|
|
323
325
|
"ra_val": "Valeur",
|
|
324
326
|
"ra_via internet": "par Internet",
|