homebridge-config-ui-x 5.3.1-beta.26 → 5.3.1-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +4 -2
  2. package/dist/bin/standalone.d.ts +2 -0
  3. package/dist/bin/standalone.js +58 -0
  4. package/dist/bin/standalone.js.map +1 -0
  5. package/package.json +2 -2
  6. package/public/assets/accessory-icons/fan.svg +15 -0
  7. package/public/assets/accessory-icons/washing-machine.svg +34 -0
  8. package/public/{chunk-7HBZFR4A.js → chunk-2WFU5UWQ.js} +1 -1
  9. package/public/{chunk-E6GLUWVP.js → chunk-37I6732R.js} +1 -1
  10. package/public/{chunk-U3S5RZBK.js → chunk-3JNJJOX6.js} +1 -1
  11. package/public/{chunk-ZOGFYOYS.js → chunk-3MPUN7MQ.js} +1 -1
  12. package/public/{chunk-RCWSDUTV.js → chunk-3QBYXJ7T.js} +1 -1
  13. package/public/{chunk-FQQGND3N.js → chunk-3RHFAIM4.js} +1 -1
  14. package/public/{chunk-YQHXDX7G.js → chunk-4AQF2VXO.js} +1 -1
  15. package/public/{chunk-QBXYVMHH.js → chunk-4GQVDJI4.js} +1 -1
  16. package/public/{chunk-2SOOCZGU.js → chunk-5ULCDCE3.js} +1 -1
  17. package/public/{chunk-QTMVIN3B.js → chunk-5WP5UENH.js} +1 -1
  18. package/public/chunk-645YHJEQ.js +4 -0
  19. package/public/{chunk-N2MZ5ZJS.js → chunk-6DSBHZMK.js} +1 -1
  20. package/public/{chunk-QIW6M5VR.js → chunk-6HJHVJPI.js} +1 -1
  21. package/public/{chunk-BLGOON7A.js → chunk-6ZB2FUYJ.js} +1 -1
  22. package/public/{chunk-RAVPJLVK.js → chunk-7K7BJHJU.js} +1 -1
  23. package/public/{chunk-LNBO7O6W.js → chunk-7NOVMKEN.js} +1 -1
  24. package/public/{chunk-ZFCQQKNY.js → chunk-A4WPYMAW.js} +1 -1
  25. package/public/{chunk-LDNNWMBH.js → chunk-BAIRJJTH.js} +1 -1
  26. package/public/{chunk-Z6H3VVU4.js → chunk-BFITMTBT.js} +1 -1
  27. package/public/{chunk-LDVMS4VQ.js → chunk-CMX4BYOI.js} +1 -1
  28. package/public/{chunk-FLJ5YMEV.js → chunk-DYB33NRF.js} +1 -1
  29. package/public/{chunk-J22IEQTF.js → chunk-ELAU62KH.js} +1 -1
  30. package/public/chunk-EMJNWLZL.js +1 -0
  31. package/public/{chunk-IGFUGROT.js → chunk-EQHN6CPG.js} +1 -1
  32. package/public/{chunk-UDOP7QLF.js → chunk-EX4O2HCN.js} +1 -1
  33. package/public/{chunk-P2O254HB.js → chunk-EZQF5CUM.js} +1 -1
  34. package/public/{chunk-L4M37VGP.js → chunk-FQHUIMUU.js} +1 -1
  35. package/public/{chunk-64744JZO.js → chunk-FRL2OXFR.js} +1 -1
  36. package/public/{chunk-HCP4JDTX.js → chunk-FYDO54CR.js} +1 -1
  37. package/public/{chunk-SXLEIQ7L.js → chunk-FYI7RHOJ.js} +1 -1
  38. package/public/{chunk-JUH32N6L.js → chunk-G3L3JDI4.js} +1 -1
  39. package/public/{chunk-L6QEXIU2.js → chunk-G6KV6PYE.js} +1 -1
  40. package/public/{chunk-M72NJSKI.js → chunk-GE53RDFQ.js} +1 -1
  41. package/public/{chunk-JJO65VHV.js → chunk-GO4TMQRR.js} +2 -2
  42. package/public/{chunk-AGG2PKOU.js → chunk-HHGB2T2Q.js} +1 -1
  43. package/public/{chunk-CWQ6ZSGE.js → chunk-HO4UVRDI.js} +1 -1
  44. package/public/{chunk-N434RGBN.js → chunk-JAEFMKXH.js} +1 -1
  45. package/public/{chunk-4IO5CZNO.js → chunk-JCYDPJQ5.js} +1 -1
  46. package/public/chunk-KLQ6BEKS.js +2 -0
  47. package/public/{chunk-5SOYD2TJ.js → chunk-KYB236MX.js} +1 -1
  48. package/public/{chunk-GH4LZN3L.js → chunk-M4QDQWSG.js} +1 -1
  49. package/public/{chunk-LJMCK7ZF.js → chunk-MZ37YOAB.js} +1 -1
  50. package/public/{chunk-JYTOQ2ZK.js → chunk-NMGY72QX.js} +1 -1
  51. package/public/{chunk-M7WJTWSJ.js → chunk-PD6LM7OJ.js} +1 -1
  52. package/public/{chunk-XLR7XHSG.js → chunk-PF4U4YAA.js} +1 -1
  53. package/public/{chunk-KLI57AF4.js → chunk-PPSFRNJC.js} +1 -1
  54. package/public/{chunk-GQ3PEIT4.js → chunk-QQSA5BKO.js} +1 -1
  55. package/public/{chunk-JMX2472F.js → chunk-R7MBTTW2.js} +1 -1
  56. package/public/{chunk-UX7QMJXV.js → chunk-RATM5R6S.js} +1 -1
  57. package/public/{chunk-UDZCOX6Z.js → chunk-RCYYU6LQ.js} +1 -1
  58. package/public/{chunk-G72Y7MYT.js → chunk-RGXCQLZU.js} +1 -1
  59. package/public/{chunk-2HQZ67OQ.js → chunk-RZ4UMDVF.js} +1 -1
  60. package/public/{chunk-CJXGALYF.js → chunk-S7UWOYRE.js} +1 -1
  61. package/public/chunk-SR2D76ES.js +1 -0
  62. package/public/{chunk-MJ262XQL.js → chunk-TMBYX6CF.js} +1 -1
  63. package/public/{chunk-DBSTKYJ4.js → chunk-U2SN3UGF.js} +1 -1
  64. package/public/{chunk-7V52ZKYV.js → chunk-U6FEWV5B.js} +1 -1
  65. package/public/chunk-UK2Y27IV.js +1 -0
  66. package/public/{chunk-RORN44IG.js → chunk-ULWO2VVV.js} +1 -1
  67. package/public/{chunk-OLXFPSMK.js → chunk-UMY3CIWB.js} +1 -1
  68. package/public/{chunk-BICPFHAC.js → chunk-V35TPDVW.js} +1 -1
  69. package/public/{chunk-KD7XNAO4.js → chunk-VVS3WVIZ.js} +1 -1
  70. package/public/{chunk-XXIXFFU3.js → chunk-WHWBODGZ.js} +1 -1
  71. package/public/chunk-WWOOIYDM.js +1 -0
  72. package/public/{chunk-H4UP7EHF.js → chunk-X2DGVP23.js} +1 -1
  73. package/public/{chunk-Z4TAOAH5.js → chunk-X5VC6SUM.js} +1 -1
  74. package/public/{chunk-G7E37DYS.js → chunk-Y2J4HNCY.js} +1 -1
  75. package/public/{chunk-Z76YHX7W.js → chunk-YASHUVE3.js} +1 -1
  76. package/public/{chunk-XBOU2AQU.js → chunk-ZGWJCAAY.js} +1 -1
  77. package/public/index.html +2 -2
  78. package/public/main-7OIXO52A.js +1 -0
  79. package/public/{styles-BGRI5E4A.css → styles-XESJTHVW.css} +1 -1
  80. package/public/assets/hap-icons/fan-off.svg +0 -25
  81. package/public/assets/hap-icons/fan-on.svg +0 -25
  82. package/public/chunk-5JILMEI2.js +0 -1
  83. package/public/chunk-KKKV333R.js +0 -1
  84. package/public/chunk-P7EB6VJT.js +0 -1
  85. package/public/chunk-QCNH7NQG.js +0 -1
  86. package/public/chunk-TIL3AXXZ.js +0 -4
  87. package/public/chunk-WBXDUV2S.js +0 -2
  88. package/public/main-4YAXKTAY.js +0 -1
package/CHANGELOG.md CHANGED
@@ -6,6 +6,7 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file.
6
6
 
7
7
  ### UI Changes
8
8
 
9
+ - updates to the `th.json` language file (#2520) (@tomzt)
9
10
  - json config editor to offer child bridge restarts where possible
10
11
  - improvements to the restore config file modal
11
12
  - terminal session persistence and macos shell optimization (#2493) (@seidnerj)
@@ -31,11 +32,12 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file.
31
32
  - thermostat accessory: show target slider when available
32
33
  - updated icon for door, window and window covering services
33
34
  - revert back to font-awesome v6 for compatibility
34
- - accessory info: show characteristic props with chevrons
35
+ - accessory info: show props on characteristic click
36
+ - custom types: expose a switch/outlet as a washing machine
37
+ - fan icon: updated to the new icon format
35
38
 
36
39
  ### Other Changes
37
40
 
38
- - remove now unused `standalone.ts` file
39
41
  - update `@homebridge/node-pty-prebuilt-multiarch` to `0.14.1-beta`
40
42
  - added `arm` runners to the ui workflows for testing
41
43
  - make 'keep orphans' setting available in ui settings service
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const node_os_1 = require("node:os");
41
+ const node_path_1 = require("node:path");
42
+ const node_process_1 = __importDefault(require("node:process"));
43
+ const commander_1 = require("commander");
44
+ node_process_1.default.title = 'homebridge-config-ui-x';
45
+ commander_1.program
46
+ .allowUnknownOption()
47
+ .allowExcessArguments()
48
+ .option('-U, --user-storage-path [path]', '', p => node_process_1.default.env.UIX_STORAGE_PATH = p)
49
+ .option('-P, --plugin-path [path]', '', p => node_process_1.default.env.UIX_CUSTOM_PLUGIN_PATH = p)
50
+ .option('-I, --insecure', '', () => node_process_1.default.env.UIX_INSECURE_MODE = '1')
51
+ .option('-T, --no-timestamp', '', () => node_process_1.default.env.UIX_LOG_NO_TIMESTAMPS = '1')
52
+ .parse(node_process_1.default.argv);
53
+ if (!node_process_1.default.env.UIX_STORAGE_PATH) {
54
+ node_process_1.default.env.UIX_STORAGE_PATH = (0, node_path_1.resolve)((0, node_os_1.homedir)(), '.homebridge');
55
+ }
56
+ node_process_1.default.env.UIX_CONFIG_PATH = (0, node_path_1.resolve)(node_process_1.default.env.UIX_STORAGE_PATH, 'config.json');
57
+ Promise.resolve().then(() => __importStar(require('../main')));
58
+ //# sourceMappingURL=standalone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone.js","sourceRoot":"","sources":["../../src/bin/standalone.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAiC;AACjC,yCAAmC;AACnC,gEAAkC;AAElC,yCAAmC;AAEnC,sBAAO,CAAC,KAAK,GAAG,wBAAwB,CAAA;AAExC,mBAAO;KACJ,kBAAkB,EAAE;KACpB,oBAAoB,EAAE;KACtB,MAAM,CAAC,gCAAgC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC;KACnF,MAAM,CAAC,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,CAAC;KACnF,MAAM,CAAC,gBAAgB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC;KACvE,MAAM,CAAC,oBAAoB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,sBAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC;KAC/E,KAAK,CAAC,sBAAO,CAAC,IAAI,CAAC,CAAA;AAEtB,IAAI,CAAC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAA,mBAAO,EAAC,IAAA,iBAAO,GAAE,EAAE,aAAa,CAAC,CAAA;AAClE,CAAC;AAED,sBAAO,CAAC,GAAG,CAAC,eAAe,GAAG,IAAA,mBAAO,EAAC,sBAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAA;AAElF,kDAAO,SAAS,IAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "homebridge-config-ui-x",
3
3
  "displayName": "Homebridge UI",
4
- "version": "5.3.1-beta.26",
4
+ "version": "5.3.1-beta.28",
5
5
  "description": "A web based management, configuration and control platform for Homebridge.",
6
6
  "author": "oznu <dev@oz.nu>",
7
7
  "license": "MIT",
@@ -140,7 +140,7 @@
140
140
  "ts-loader": "^9.5.2",
141
141
  "ts-node": "^10.9.2",
142
142
  "tsconfig-paths": "^4.2.0",
143
- "typescript": "^5.8.3",
143
+ "typescript": "^5.9.2",
144
144
  "unplugin-swc": "^1.5.5",
145
145
  "vitest": "^3.2.4"
146
146
  },
@@ -0,0 +1,15 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- fan icon -->
3
+ <g transform="translate(1.28, 1.28) scale(0.92)">
4
+ <path
5
+ class="fan-blades"
6
+ fill="#7f7f7f"
7
+ fill-rule="evenodd"
8
+ clip-rule="evenodd"
9
+ d="M20.988 10.265c.382-.596.951-1.424 1.844-2.71C25.462 3.61 23.456 0 18 0c-6.263 0-10.09 5.649-6.835 11.923-.594-.382-1.416-.948-2.682-1.826-3.945-2.63-7.555-.625-7.555 4.832 0 6.308 5.73 10.145 12.057 6.763-.383.599-.958 1.436-1.872 2.753C8.485 28.39 10.49 32 15.947 32c6.267 0 10.095-5.655 6.83-11.932.593.382 1.412.946 2.668 1.818 3.945 2.63 7.555.625 7.555-4.832 0-6.293-5.703-10.127-12.012-6.788Zm-.407 2.602C26.101 8.924 31 11.805 31 17.053c0 3.877-1.845 4.902-4.445 3.169-2.525-1.761-3.46-2.385-4.406-2.763a7.87 7.87 0 0 0-1.01-.317c.105-.382.161-.785.161-1.2 0-1.327-.919-3.134-.919-3.134ZM18.405 10.85c.378-.946 1.001-1.88 2.763-4.405C22.902 3.845 21.877 2 18 2c-5.247 0-8.129 4.899-4.186 10.419 0 0 1.89-.919 3.186-.919.398 0 .783.052 1.15.149.064-.269.149-.533.255-.798ZM11.78 14.524c-.946-.378-1.88-1.001-4.405-2.763-2.6-1.734-4.445-.709-4.445 3.168 0 5.247 4.899 8.129 10.419 4.186 0 0-.848-1.812-.848-3.115 0-.416.057-.819.163-1.201a7.81 7.81 0 0 0-1.183-.275Zm3.763 6.625c-.378.946-1.001 1.88-2.763 4.405-1.734 2.6-.709 4.445 3.168 4.445 5.248 0 8.13-4.899 4.187-10.419 0 0-1.831.919-3.133.919-.416 0-.819-.057-1.201-.162a7.802 7.802 0 0 0-.258.812ZM17 19.5c-1.933 0-3.5-1.567-3.5-3.5s1.567-3.5 3.5-3.5 3.5 1.567 3.5 3.5-1.567 3.5-3.5 3.5Z"
10
+ />
11
+ </g>
12
+
13
+ <!-- middle circle -->
14
+ <circle cx="17" cy="16" r="3.5" stroke="#7f7f7f" stroke-width="0.6" fill="#1976d2" fill-opacity="0.5" />
15
+ </svg>
@@ -0,0 +1,34 @@
1
+ <svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- outer casing -->
3
+ <rect x="3" y="1" width="25" height="30" rx="2" stroke="#7f7f7f" fill="none" stroke-width="1.2" />
4
+
5
+ <!-- top drawer -->
6
+ <rect x="6" y="4" width="5" rx="0.5" height="4" stroke="#7f7f7f" fill="none" stroke-width="0.5" />
7
+ <rect x="7" y="6" width="3" rx="0.25" height="1" stroke="#7f7f7f" fill="none" stroke-width="0.25" />
8
+
9
+ <!-- control panel + buttons -->
10
+ <rect x="14" y="4" width="11" height="4" rx="0.5" fill="none" stroke="#7f7f7f" stroke-width="0.5" />
11
+ <rect
12
+ x="19"
13
+ y="5"
14
+ width="5"
15
+ height="2"
16
+ rx="0.25"
17
+ fill="#1976d2"
18
+ fill-opacity="0.5"
19
+ stroke="#7f7f7f"
20
+ stroke-width="0.25"
21
+ />
22
+ <rect x="15" y="5" width="1" height="1" rx="0.25" fill="none" stroke="#7f7f7f" stroke-width="0.25" />
23
+ <rect x="16" y="5" width="1" height="1" rx="0.25" fill="none" stroke="#7f7f7f" stroke-width="0.25" />
24
+ <rect x="17" y="5" width="1" height="1" rx="0.25" fill="none" stroke="#7f7f7f" stroke-width="0.25" />
25
+ <rect x="15" y="6" width="1" height="1" rx="0.25" fill="none" stroke="#7f7f7f" stroke-width="0.25" />
26
+ <rect x="16" y="6" width="1" height="1" rx="0.25" fill="none" stroke="#7f7f7f" stroke-width="0.25" />
27
+ <rect x="17" y="6" width="1" height="1" rx="0.25" fill="none" stroke="#7f7f7f" stroke-width="0.25" />
28
+
29
+ <!-- drum handle -->
30
+ <rect class="handle" x="19" y="15.5" rx="1" width="3" height="3" fill="#7f7f7f" />
31
+
32
+ <!-- drum -->
33
+ <circle cx="15.5" cy="17" r="6.5" stroke="#7f7f7f" fill="none" stroke-width="1.2" />
34
+ </svg>
@@ -1 +1 @@
1
- import{A as Q,c as $,d as C,e as B,f as O,g as T,j as w,m as q,p as z,q as D,w as H,x as A,z as G}from"./chunk-5SOYD2TJ.js";import{b as K}from"./chunk-E6GLUWVP.js";import{d as U}from"./chunk-QIW6M5VR.js";import{b as J}from"./chunk-ZOGFYOYS.js";import{m as W}from"./chunk-Z76YHX7W.js";import{b as j}from"./chunk-HCP4JDTX.js";import"./chunk-WBXDUV2S.js";import{Ad as P,Dc as f,Ib as u,Ic as l,Jb as c,Jc as d,M as I,Ob as m,Pb as r,Qb as a,Rb as s,Tc as b,Vc as L,Xa as x,ab as i,bc as E,dc as M,h as y,jd as N,kc as v,la as p,lc as F,mb as k,md as V,qc as g,rc as h,sc as R,w as S}from"./chunk-TIL3AXXZ.js";var Y=["password"],Z=["username"],ee=["otp"],te=e=>({background:e}),ie=e=>({anim:e}),X=e=>({"is-invalid":e});function ne(e,_){if(e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",13),a(),s(3,"input",14,0),l(5,"translate"),a(),r(6,"div",8)(7,"span",12),s(8,"i",15),a(),s(9,"input",16,1),l(11,"translate"),a()),e&2){let n=M();i(3),m("placeholder",d(5,4,"users.label_username"))("ngClass",f(8,X,n.form.controls.username.dirty&&n.form.controls.username.errors)),i(6),m("placeholder",d(11,6,"users.label_password"))("ngClass",f(10,X,n.form.controls.password.dirty&&n.form.controls.password.errors))}}function oe(e,_){e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",17),a(),s(3,"input",18,2),l(5,"translate"),a()),e&2&&(i(3),m("placeholder",d(5,1,"login.label_2fa_code")))}function ae(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_credentials")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}function re(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_code")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}var _e=(()=>{class e{$auth=p(K);$cdr=p(L);$router=p(U);$settings=p(J);targetRoute;validNonAdminRoutes=["/accessories","/plugins","/logs","/support"];passwordInput=b("password");usernameInput=b("username");otpInput=b("otp");backgroundStyle;invalidCredentials=!1;invalid2faCode=!1;twoFactorCodeRequired=!1;inProgress=!1;form;ngOnInit(){this.form=new T({username:new w(""),password:new w("")}),this.form.valueChanges.pipe(I(500)).subscribe(n=>{let o=this.passwordInput()?.nativeElement.value;o&&o!==n.password&&this.form.controls.password.setValue(o)}),this.targetRoute=window.sessionStorage.getItem("target_route")||"",this.setBackground()}ngAfterViewChecked(){this.$cdr.detectChanges()}onSubmit(){return y(this,null,function*(){this.invalidCredentials=!1,this.invalid2faCode=!1,this.inProgress=!0,document.getElementById("submit-button")?.blur();let n=this.passwordInput()?.nativeElement.value;n&&n!==this.form.get("password").value&&this.form.controls.password.setValue(n);let o=this.usernameInput()?.nativeElement.value;if(o&&o!==this.form.get("username").value&&this.form.controls.username.setValue(o),this.twoFactorCodeRequired){let t=this.otpInput()?.nativeElement.value;t&&t!==this.form.get("otp").value&&this.form.controls.username.setValue(t)}try{yield this.$auth.login(this.form.getRawValue()),!this.$auth.user.admin&&!this.validNonAdminRoutes.includes(this.targetRoute)&&(this.targetRoute="/"),this.$router.navigateByUrl(this.targetRoute),window.sessionStorage.removeItem("target_route")}catch(t){t.status===412?(this.form.controls.otp?(this.form.controls.otp.setErrors(["Invalid Code"]),this.invalid2faCode=!0):this.form.addControl("otp",new w("",[C.required,C.minLength(6),C.maxLength(6)])),this.twoFactorCodeRequired=!0,setTimeout(()=>{document.getElementById("form-ota").focus()},100)):this.invalidCredentials=!0}this.inProgress=!1})}setBackground(){return y(this,null,function*(){if(this.$settings.settingsLoaded||(yield S(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let n=`${W.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle=`url('${n}') center/cover`}})}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],viewQuery:function(o,t){o&1&&(v(t.passwordInput,Y,5),v(t.usernameInput,Z,5),v(t.otpInput,ee,5)),o&2&&F(3)},decls:15,vars:18,consts:[["username",""],["password",""],["otp",""],[1,"login-container","gradient","d-flex","align-items-start","justify-content-center",3,"ngStyle","ngClass"],[1,"w-100","login-card","d-flex","py-4","flex-column"],["ngSrc","/assets/homebridge-color-round.svg","alt","Homebridge Logo","height","100","width","100","priority","true",1,"homebridge-logo","mx-auto","my-3"],["novalidate","",3,"ngSubmit","formGroup"],[1,"mb-4","text-center"],[1,"input-group","mb-4"],[1,"input-group","no-border","mb-4"],[1,"text-center"],["tabindex","3","id","submit-button","type","submit",1,"btn","btn-primary","mb-2",3,"disabled"],[1,"input-group-text","custom-input"],[1,"fas","fa-fw","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none","tabindex","1","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","current-password","tabindex","2","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-key","primary-text","fa-lg"],["formControlName","otp","type","text","id","form-ota","autofocus","","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*","tabindex","1",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-fw","fa-exclamation-triangle","pink-text","fa-lg"],[1,"form-control","custom-input"],[1,"small","grey-text","fw-semibold"],[1,"small","grey-text",3,"innerHTML"]],template:function(o,t){o&1&&(r(0,"div",3)(1,"div",4),s(2,"img",5),r(3,"form",6),E("ngSubmit",function(){return t.onSubmit()}),r(4,"h4",7),g(5),l(6,"translate"),a(),u(7,ne,12,12),u(8,oe,6,3,"div",8),u(9,ae,9,6,"div",9),u(10,re,9,6,"div",9),r(11,"div",10)(12,"button",11),g(13),l(14,"translate"),a()()()()()),o&2&&(m("ngStyle",f(14,te,t.backgroundStyle))("ngClass",f(16,ie,!t.backgroundStyle)),i(3),m("formGroup",t.form),i(2),h(d(6,10,"setup.welcome_to_homebridge")),i(2),c(t.twoFactorCodeRequired?-1:7),i(),c(t.twoFactorCodeRequired?8:-1),i(),c(t.invalidCredentials?9:-1),i(),c(t.invalid2faCode?10:-1),i(2),m("disabled",t.form.invalid),i(),R(" ",d(14,12,"form.button_continue")," "))},dependencies:[V,G,q,$,B,O,H,A,Q,z,D,N,P,j],styles:["body{overflow:scroll!important} body.dark-mode .login-card{background-color:#2b2b2b;color:#fff}.login-container[_ngcontent-%COMP%]{z-index:-1;padding-top:2em;padding-bottom:2em;min-height:100%;background-size:300% 300%}.anim[_ngcontent-%COMP%]{-webkit-animation:_ngcontent-%COMP%_gradient 20s ease infinite;-moz-animation:gradient 20s ease infinite;-o-animation:gradient 20s ease infinite;animation:_ngcontent-%COMP%_gradient 20s ease infinite}@keyframes _ngcontent-%COMP%_gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.login-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.login-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 575px){.login-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}"]})}return e})();export{_e as LoginComponent};
1
+ import{A as Q,c as $,d as C,e as B,f as O,g as T,j as w,m as q,p as z,q as D,w as H,x as A,z as G}from"./chunk-KYB236MX.js";import{b as K}from"./chunk-37I6732R.js";import{d as U}from"./chunk-6HJHVJPI.js";import{b as J}from"./chunk-3MPUN7MQ.js";import{m as W}from"./chunk-YASHUVE3.js";import{b as j}from"./chunk-FYDO54CR.js";import"./chunk-KLQ6BEKS.js";import{Ad as P,Dc as f,Ib as u,Ic as l,Jb as c,Jc as d,M as I,Ob as m,Pb as r,Qb as a,Rb as s,Tc as b,Vc as L,Xa as x,ab as i,bc as E,dc as M,h as y,jd as N,kc as v,la as p,lc as F,mb as k,md as V,qc as g,rc as h,sc as R,w as S}from"./chunk-645YHJEQ.js";var Y=["password"],Z=["username"],ee=["otp"],te=e=>({background:e}),ie=e=>({anim:e}),X=e=>({"is-invalid":e});function ne(e,_){if(e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",13),a(),s(3,"input",14,0),l(5,"translate"),a(),r(6,"div",8)(7,"span",12),s(8,"i",15),a(),s(9,"input",16,1),l(11,"translate"),a()),e&2){let n=M();i(3),m("placeholder",d(5,4,"users.label_username"))("ngClass",f(8,X,n.form.controls.username.dirty&&n.form.controls.username.errors)),i(6),m("placeholder",d(11,6,"users.label_password"))("ngClass",f(10,X,n.form.controls.password.dirty&&n.form.controls.password.errors))}}function oe(e,_){e&1&&(r(0,"div",8)(1,"span",12),s(2,"i",17),a(),s(3,"input",18,2),l(5,"translate"),a()),e&2&&(i(3),m("placeholder",d(5,1,"login.label_2fa_code")))}function ae(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_credentials")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}function re(e,_){e&1&&(r(0,"div",9)(1,"div",12),s(2,"i",19),a(),r(3,"div",20)(4,"div",21),g(5),l(6,"translate"),a(),s(7,"div",22),l(8,"translate"),a()()),e&2&&(i(5),h(d(6,2,"login.invalid_code")),i(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),x))}var _e=(()=>{class e{$auth=p(K);$cdr=p(L);$router=p(U);$settings=p(J);targetRoute;validNonAdminRoutes=["/accessories","/plugins","/logs","/support"];passwordInput=b("password");usernameInput=b("username");otpInput=b("otp");backgroundStyle;invalidCredentials=!1;invalid2faCode=!1;twoFactorCodeRequired=!1;inProgress=!1;form;ngOnInit(){this.form=new T({username:new w(""),password:new w("")}),this.form.valueChanges.pipe(I(500)).subscribe(n=>{let o=this.passwordInput()?.nativeElement.value;o&&o!==n.password&&this.form.controls.password.setValue(o)}),this.targetRoute=window.sessionStorage.getItem("target_route")||"",this.setBackground()}ngAfterViewChecked(){this.$cdr.detectChanges()}onSubmit(){return y(this,null,function*(){this.invalidCredentials=!1,this.invalid2faCode=!1,this.inProgress=!0,document.getElementById("submit-button")?.blur();let n=this.passwordInput()?.nativeElement.value;n&&n!==this.form.get("password").value&&this.form.controls.password.setValue(n);let o=this.usernameInput()?.nativeElement.value;if(o&&o!==this.form.get("username").value&&this.form.controls.username.setValue(o),this.twoFactorCodeRequired){let t=this.otpInput()?.nativeElement.value;t&&t!==this.form.get("otp").value&&this.form.controls.username.setValue(t)}try{yield this.$auth.login(this.form.getRawValue()),!this.$auth.user.admin&&!this.validNonAdminRoutes.includes(this.targetRoute)&&(this.targetRoute="/"),this.$router.navigateByUrl(this.targetRoute),window.sessionStorage.removeItem("target_route")}catch(t){t.status===412?(this.form.controls.otp?(this.form.controls.otp.setErrors(["Invalid Code"]),this.invalid2faCode=!0):this.form.addControl("otp",new w("",[C.required,C.minLength(6),C.maxLength(6)])),this.twoFactorCodeRequired=!0,setTimeout(()=>{document.getElementById("form-ota").focus()},100)):this.invalidCredentials=!0}this.inProgress=!1})}setBackground(){return y(this,null,function*(){if(this.$settings.settingsLoaded||(yield S(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let n=`${W.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle=`url('${n}') center/cover`}})}static \u0275fac=function(o){return new(o||e)};static \u0275cmp=k({type:e,selectors:[["ng-component"]],viewQuery:function(o,t){o&1&&(v(t.passwordInput,Y,5),v(t.usernameInput,Z,5),v(t.otpInput,ee,5)),o&2&&F(3)},decls:15,vars:18,consts:[["username",""],["password",""],["otp",""],[1,"login-container","gradient","d-flex","align-items-start","justify-content-center",3,"ngStyle","ngClass"],[1,"w-100","login-card","d-flex","py-4","flex-column"],["ngSrc","/assets/homebridge-color-round.svg","alt","Homebridge Logo","height","100","width","100","priority","true",1,"homebridge-logo","mx-auto","my-3"],["novalidate","",3,"ngSubmit","formGroup"],[1,"mb-4","text-center"],[1,"input-group","mb-4"],[1,"input-group","no-border","mb-4"],[1,"text-center"],["tabindex","3","id","submit-button","type","submit",1,"btn","btn-primary","mb-2",3,"disabled"],[1,"input-group-text","custom-input"],[1,"fas","fa-fw","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none","tabindex","1","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","current-password","tabindex","2","required","",1,"form-control","custom-input",3,"placeholder","ngClass"],[1,"fas","fa-fw","fa-key","primary-text","fa-lg"],["formControlName","otp","type","text","id","form-ota","autofocus","","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*","tabindex","1",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-fw","fa-exclamation-triangle","pink-text","fa-lg"],[1,"form-control","custom-input"],[1,"small","grey-text","fw-semibold"],[1,"small","grey-text",3,"innerHTML"]],template:function(o,t){o&1&&(r(0,"div",3)(1,"div",4),s(2,"img",5),r(3,"form",6),E("ngSubmit",function(){return t.onSubmit()}),r(4,"h4",7),g(5),l(6,"translate"),a(),u(7,ne,12,12),u(8,oe,6,3,"div",8),u(9,ae,9,6,"div",9),u(10,re,9,6,"div",9),r(11,"div",10)(12,"button",11),g(13),l(14,"translate"),a()()()()()),o&2&&(m("ngStyle",f(14,te,t.backgroundStyle))("ngClass",f(16,ie,!t.backgroundStyle)),i(3),m("formGroup",t.form),i(2),h(d(6,10,"setup.welcome_to_homebridge")),i(2),c(t.twoFactorCodeRequired?-1:7),i(),c(t.twoFactorCodeRequired?8:-1),i(),c(t.invalidCredentials?9:-1),i(),c(t.invalid2faCode?10:-1),i(2),m("disabled",t.form.invalid),i(),R(" ",d(14,12,"form.button_continue")," "))},dependencies:[V,G,q,$,B,O,H,A,Q,z,D,N,P,j],styles:["body{overflow:scroll!important} body.dark-mode .login-card{background-color:#2b2b2b;color:#fff}.login-container[_ngcontent-%COMP%]{z-index:-1;padding-top:2em;padding-bottom:2em;min-height:100%;background-size:300% 300%}.anim[_ngcontent-%COMP%]{-webkit-animation:_ngcontent-%COMP%_gradient 20s ease infinite;-moz-animation:gradient 20s ease infinite;-o-animation:gradient 20s ease infinite;animation:_ngcontent-%COMP%_gradient 20s ease infinite}@keyframes _ngcontent-%COMP%_gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.login-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.login-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width: 575px){.login-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}"]})}return e})();export{_e as LoginComponent};
@@ -1 +1 @@
1
- import{a as _,b as D}from"./chunk-ZOGFYOYS.js";import{m as c,n as S}from"./chunk-Z76YHX7W.js";import{f as x}from"./chunk-WBXDUV2S.js";import{C as v,g as O,ga as h,h as a,ha as E,ja as y,ka as l,la as f,nb as I,r as p,va as j,w as d,x as T,z as w}from"./chunk-TIL3AXXZ.js";var g=new y("JWT_OPTIONS"),m=(()=>{class r{constructor(e=null){this.tokenGetter=e&&e.tokenGetter||function(){}}urlBase64Decode(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:{t+="==";break}case 3:{t+="=";break}default:throw new Error("Illegal base64url string!")}return this.b64DecodeUnicode(t)}b64decode(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="";if(e=String(e).replace(/=+$/,""),e.length%4===1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(let i=0,s,n,b=0;n=e.charAt(b++);~n&&(s=i%4?s*64+n:n,i++%4)?o+=String.fromCharCode(255&s>>(-2*i&6)):0)n=t.indexOf(n);return o}b64DecodeUnicode(e){return decodeURIComponent(Array.prototype.map.call(this.b64decode(e),t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)).join(""))}decodeToken(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._decodeToken(t)):this._decodeToken(e)}_decodeToken(e){if(!e||e==="")return null;let t=e.split(".");if(t.length!==3)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");let o=this.urlBase64Decode(t[1]);if(!o)throw new Error("Cannot decode the token.");return JSON.parse(o)}getTokenExpirationDate(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._getTokenExpirationDate(t)):this._getTokenExpirationDate(e)}_getTokenExpirationDate(e){let t;if(t=this.decodeToken(e),!t||!t.hasOwnProperty("exp"))return null;let o=new Date(0);return o.setUTCSeconds(t.exp),o}isTokenExpired(e=this.tokenGetter(),t){return e instanceof Promise?e.then(o=>this._isTokenExpired(o,t)):this._isTokenExpired(e,t)}_isTokenExpired(e,t){if(!e||e==="")return!0;let o=this.getTokenExpirationDate(e);return t=t||0,o===null?!1:!(o.valueOf()>new Date().valueOf()+t*1e3)}getAuthScheme(e,t){return typeof e=="function"?e(t):e}}return r.\u0275fac=function(e){return new(e||r)(l(g))},r.\u0275prov=h({token:r,factory:r.\u0275fac}),r})(),$=r=>r instanceof Promise?v(()=>r):p(r),R=(()=>{class r{constructor(e,t,o){this.jwtHelper=t,this.document=o,this.standardPorts=["80","443"],this.tokenGetter=e.tokenGetter,this.headerName=e.headerName||"Authorization",this.authScheme=e.authScheme||e.authScheme===""?e.authScheme:"Bearer ",this.allowedDomains=e.allowedDomains||[],this.disallowedRoutes=e.disallowedRoutes||[],this.throwNoTokenError=e.throwNoTokenError||!1,this.skipWhenExpired=e.skipWhenExpired}isAllowedDomain(e){let t=new URL(e.url,this.document.location.origin);if(t.host===this.document.location.host)return!0;let o=`${t.hostname}${t.port&&!this.standardPorts.includes(t.port)?":"+t.port:""}`;return this.allowedDomains.findIndex(i=>typeof i=="string"?i===o:i instanceof RegExp?i.test(o):!1)>-1}isDisallowedRoute(e){let t=new URL(e.url,this.document.location.origin);return this.disallowedRoutes.findIndex(o=>{if(typeof o=="string"){let i=new URL(o,this.document.location.origin);return i.hostname===t.hostname&&i.pathname===t.pathname}return o instanceof RegExp?o.test(e.url):!1})>-1}handleInterception(e,t,o){let i=this.jwtHelper.getAuthScheme(this.authScheme,t);if(!e&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");let s=p(!1);return this.skipWhenExpired&&(s=e?$(this.jwtHelper.isTokenExpired(e)):p(!0)),e?s.pipe(T(n=>n&&this.skipWhenExpired?t.clone():t.clone({setHeaders:{[this.headerName]:`${i}${e}`}})),w(n=>o.handle(n))):o.handle(t)}intercept(e,t){if(!this.isAllowedDomain(e)||this.isDisallowedRoute(e))return t.handle(e);let o=this.tokenGetter(e);return $(o).pipe(w(i=>this.handleInterception(i,e,t)))}}return r.\u0275fac=function(e){return new(e||r)(l(g),l(m),l(j))},r.\u0275prov=h({token:r,factory:r.\u0275fac}),r})(),F=(()=>{class r{constructor(e){if(e)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}static forRoot(e){return{ngModule:r,providers:[{provide:x,useClass:R,multi:!0},e.jwtOptionsProvider||{provide:g,useValue:e.config},m]}}}return r.\u0275fac=function(e){return new(e||r)(l(r,12))},r.\u0275mod=I({type:r}),r.\u0275inj=E({}),r})();var k=O(_(),1);var q=(()=>{class r{$api=f(S);$jwtHelper=f(m);$settings=f(D);token;user={};logoutTimer;constructor(){this.loadToken()}login(e){return a(this,null,function*(){let t=yield d(this.$api.post("/auth/login",e));if(!this.validateToken(t.access_token))throw new Error("Invalid username or password.");window.localStorage.setItem(c.jwt.tokenKey,t.access_token),yield this.$settings.getAppSettings()})}noauth(){return a(this,null,function*(){let e=yield d(this.$api.post("/auth/noauth",{}));if(this.validateToken(e.access_token))window.localStorage.setItem(c.jwt.tokenKey,e.access_token),yield this.$settings.getAppSettings();else throw new Error("Invalid username or password.")})}logout(){this.user=null,this.token=null,window.localStorage.removeItem(c.jwt.tokenKey),window.location.reload()}loadToken(){return a(this,null,function*(){this.$settings.settingsLoaded||(yield d(this.$settings.onSettingsLoaded));let e=window.localStorage.getItem(c.jwt.tokenKey);e&&this.validateToken(e)})}checkToken(){return a(this,null,function*(){try{return yield d(this.$api.get("/auth/check"))}catch(e){e.status===401&&(console.error("Current token is not valid"),this.logout())}})}isLoggedIn(){return this.$settings.env.instanceId!==this.user.instanceId?(console.error("Token does not match instance"),!1):this.user&&this.token&&!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)}validateToken(e){try{return this.$jwtHelper.isTokenExpired(e,this.$settings.serverTimeOffset)&&this.logout(),this.user=this.$jwtHelper.decodeToken(e),this.token=e,this.setLogoutTimer(),!0}catch{return window.localStorage.removeItem(c.jwt.tokenKey),this.token=null,!1}}setLogoutTimer(){if(clearTimeout(this.logoutTimer),!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)){let t=(0,k.default)(this.$jwtHelper.getTokenExpirationDate(this.token)).diff((0,k.default)().add(this.$settings.serverTimeOffset,"s"),"millisecond");t<=2147483647&&(this.logoutTimer=setTimeout(()=>a(this,null,function*(){this.$settings.formAuth===!1?(yield this.noauth(),window.location.reload()):this.logout()}),t))}}static \u0275fac=function(t){return new(t||r)};static \u0275prov=h({token:r,factory:r.\u0275fac})}return r})();export{F as a,q as b};
1
+ import{a as _,b as D}from"./chunk-3MPUN7MQ.js";import{m as c,n as S}from"./chunk-YASHUVE3.js";import{f as x}from"./chunk-KLQ6BEKS.js";import{C as v,g as O,ga as h,h as a,ha as E,ja as y,ka as l,la as f,nb as I,r as p,va as j,w as d,x as T,z as w}from"./chunk-645YHJEQ.js";var g=new y("JWT_OPTIONS"),m=(()=>{class r{constructor(e=null){this.tokenGetter=e&&e.tokenGetter||function(){}}urlBase64Decode(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:{t+="==";break}case 3:{t+="=";break}default:throw new Error("Illegal base64url string!")}return this.b64DecodeUnicode(t)}b64decode(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="";if(e=String(e).replace(/=+$/,""),e.length%4===1)throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");for(let i=0,s,n,b=0;n=e.charAt(b++);~n&&(s=i%4?s*64+n:n,i++%4)?o+=String.fromCharCode(255&s>>(-2*i&6)):0)n=t.indexOf(n);return o}b64DecodeUnicode(e){return decodeURIComponent(Array.prototype.map.call(this.b64decode(e),t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)).join(""))}decodeToken(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._decodeToken(t)):this._decodeToken(e)}_decodeToken(e){if(!e||e==="")return null;let t=e.split(".");if(t.length!==3)throw new Error("The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.");let o=this.urlBase64Decode(t[1]);if(!o)throw new Error("Cannot decode the token.");return JSON.parse(o)}getTokenExpirationDate(e=this.tokenGetter()){return e instanceof Promise?e.then(t=>this._getTokenExpirationDate(t)):this._getTokenExpirationDate(e)}_getTokenExpirationDate(e){let t;if(t=this.decodeToken(e),!t||!t.hasOwnProperty("exp"))return null;let o=new Date(0);return o.setUTCSeconds(t.exp),o}isTokenExpired(e=this.tokenGetter(),t){return e instanceof Promise?e.then(o=>this._isTokenExpired(o,t)):this._isTokenExpired(e,t)}_isTokenExpired(e,t){if(!e||e==="")return!0;let o=this.getTokenExpirationDate(e);return t=t||0,o===null?!1:!(o.valueOf()>new Date().valueOf()+t*1e3)}getAuthScheme(e,t){return typeof e=="function"?e(t):e}}return r.\u0275fac=function(e){return new(e||r)(l(g))},r.\u0275prov=h({token:r,factory:r.\u0275fac}),r})(),$=r=>r instanceof Promise?v(()=>r):p(r),R=(()=>{class r{constructor(e,t,o){this.jwtHelper=t,this.document=o,this.standardPorts=["80","443"],this.tokenGetter=e.tokenGetter,this.headerName=e.headerName||"Authorization",this.authScheme=e.authScheme||e.authScheme===""?e.authScheme:"Bearer ",this.allowedDomains=e.allowedDomains||[],this.disallowedRoutes=e.disallowedRoutes||[],this.throwNoTokenError=e.throwNoTokenError||!1,this.skipWhenExpired=e.skipWhenExpired}isAllowedDomain(e){let t=new URL(e.url,this.document.location.origin);if(t.host===this.document.location.host)return!0;let o=`${t.hostname}${t.port&&!this.standardPorts.includes(t.port)?":"+t.port:""}`;return this.allowedDomains.findIndex(i=>typeof i=="string"?i===o:i instanceof RegExp?i.test(o):!1)>-1}isDisallowedRoute(e){let t=new URL(e.url,this.document.location.origin);return this.disallowedRoutes.findIndex(o=>{if(typeof o=="string"){let i=new URL(o,this.document.location.origin);return i.hostname===t.hostname&&i.pathname===t.pathname}return o instanceof RegExp?o.test(e.url):!1})>-1}handleInterception(e,t,o){let i=this.jwtHelper.getAuthScheme(this.authScheme,t);if(!e&&this.throwNoTokenError)throw new Error("Could not get token from tokenGetter function.");let s=p(!1);return this.skipWhenExpired&&(s=e?$(this.jwtHelper.isTokenExpired(e)):p(!0)),e?s.pipe(T(n=>n&&this.skipWhenExpired?t.clone():t.clone({setHeaders:{[this.headerName]:`${i}${e}`}})),w(n=>o.handle(n))):o.handle(t)}intercept(e,t){if(!this.isAllowedDomain(e)||this.isDisallowedRoute(e))return t.handle(e);let o=this.tokenGetter(e);return $(o).pipe(w(i=>this.handleInterception(i,e,t)))}}return r.\u0275fac=function(e){return new(e||r)(l(g),l(m),l(j))},r.\u0275prov=h({token:r,factory:r.\u0275fac}),r})(),F=(()=>{class r{constructor(e){if(e)throw new Error("JwtModule is already loaded. It should only be imported in your application's main module.")}static forRoot(e){return{ngModule:r,providers:[{provide:x,useClass:R,multi:!0},e.jwtOptionsProvider||{provide:g,useValue:e.config},m]}}}return r.\u0275fac=function(e){return new(e||r)(l(r,12))},r.\u0275mod=I({type:r}),r.\u0275inj=E({}),r})();var k=O(_(),1);var q=(()=>{class r{$api=f(S);$jwtHelper=f(m);$settings=f(D);token;user={};logoutTimer;constructor(){this.loadToken()}login(e){return a(this,null,function*(){let t=yield d(this.$api.post("/auth/login",e));if(!this.validateToken(t.access_token))throw new Error("Invalid username or password.");window.localStorage.setItem(c.jwt.tokenKey,t.access_token),yield this.$settings.getAppSettings()})}noauth(){return a(this,null,function*(){let e=yield d(this.$api.post("/auth/noauth",{}));if(this.validateToken(e.access_token))window.localStorage.setItem(c.jwt.tokenKey,e.access_token),yield this.$settings.getAppSettings();else throw new Error("Invalid username or password.")})}logout(){this.user=null,this.token=null,window.localStorage.removeItem(c.jwt.tokenKey),window.location.reload()}loadToken(){return a(this,null,function*(){this.$settings.settingsLoaded||(yield d(this.$settings.onSettingsLoaded));let e=window.localStorage.getItem(c.jwt.tokenKey);e&&this.validateToken(e)})}checkToken(){return a(this,null,function*(){try{return yield d(this.$api.get("/auth/check"))}catch(e){e.status===401&&(console.error("Current token is not valid"),this.logout())}})}isLoggedIn(){return this.$settings.env.instanceId!==this.user.instanceId?(console.error("Token does not match instance"),!1):this.user&&this.token&&!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)}validateToken(e){try{return this.$jwtHelper.isTokenExpired(e,this.$settings.serverTimeOffset)&&this.logout(),this.user=this.$jwtHelper.decodeToken(e),this.token=e,this.setLogoutTimer(),!0}catch{return window.localStorage.removeItem(c.jwt.tokenKey),this.token=null,!1}}setLogoutTimer(){if(clearTimeout(this.logoutTimer),!this.$jwtHelper.isTokenExpired(this.token,this.$settings.serverTimeOffset)){let t=(0,k.default)(this.$jwtHelper.getTokenExpirationDate(this.token)).diff((0,k.default)().add(this.$settings.serverTimeOffset,"s"),"millisecond");t<=2147483647&&(this.logoutTimer=setTimeout(()=>a(this,null,function*(){this.$settings.formAuth===!1?(yield this.noauth(),window.location.reload()):this.logout()}),t))}}static \u0275fac=function(t){return new(t||r)};static \u0275prov=h({token:r,factory:r.\u0275fac})}return r})();export{F as a,q as b};
@@ -1 +1 @@
1
- import{Ca as xe,Fa as Se,H as ee,e as $,g as yt,ga as we,gb as te,ha as Me,i as Q,ka as ye,n as Z,nb as Oe,ob as ke,ub as Ie,x as Ce}from"./chunk-TIL3AXXZ.js";var $e=$((Jt,De)=>{De.exports=function(r,a){return Array.prototype.slice.call(r,a)}});var Ne=$((Qt,Re)=>{var xt=typeof setImmediate=="function",re;xt?re=function(e){setImmediate(e)}:re=function(e){setTimeout(e,0)};Re.exports=re});var Ye=$((Zt,Xe)=>{"use strict";var St=Ne();Xe.exports=function(r,a,t){r&&St(function(){r.apply(t||null,a||[])})}});var Be=$((er,je)=>{"use strict";var Fe=$e(),Ot=Ye();je.exports=function(r,a){var t=a||{},n={};return r===void 0&&(r={}),r.on=function(i,u){return n[i]?n[i].push(u):n[i]=[u],r},r.once=function(i,u){return u._once=!0,r.on(i,u),r},r.off=function(i,u){var s=arguments.length;if(s===1)delete n[i];else if(s===0)n={};else{var d=n[i];if(!d)return r;d.splice(d.indexOf(u),1)}return r},r.emit=function(){var i=Fe(arguments);return r.emitterSnapshot(i.shift()).apply(this,i)},r.emitterSnapshot=function(i){var u=(n[i]||[]).slice(0);return function(){var s=Fe(arguments),d=this||r;if(i==="error"&&t.throws!==!1&&!u.length)throw s.length===1?s[0]:s;return u.forEach(function(p){t.async?Ot(p,s,d):p.apply(d,s),p._once&&r.off(i,p)}),r}},r}});var qe=$((tr,Ae)=>{var Pe=global.CustomEvent;function kt(){try{var e=new Pe("cat",{detail:{foo:"bar"}});return e.type==="cat"&&e.detail.foo==="bar"}catch{}return!1}Ae.exports=kt()?Pe:typeof document<"u"&&typeof document.createEvent=="function"?function(r,a){var t=document.createEvent("CustomEvent");return a?t.initCustomEvent(r,a.bubbles,a.cancelable,a.detail):t.initCustomEvent(r,!1,!1,void 0),t}:function(r,a){var t=document.createEventObject();return t.type=r,a?(t.bubbles=!!a.bubbles,t.cancelable=!!a.cancelable,t.detail=a.detail):(t.bubbles=!1,t.cancelable=!1,t.detail=void 0),t}});var Ge=$((rr,Ve)=>{"use strict";var Te=[],ne="",It=/^on/;for(ne in global)It.test(ne)&&Te.push(ne.slice(2));Ve.exports=Te});var Ke=$((nr,ze)=>{"use strict";var Dt=qe(),$t=Ge(),H=global.document,He=Rt,Le=Xt,q=[];global.addEventListener||(He=Nt,Le=Yt);ze.exports={add:He,remove:Le,fabricate:Ft};function Rt(e,r,a,t){return e.addEventListener(r,a,t)}function Nt(e,r,a){return e.attachEvent("on"+r,Bt(e,r,a))}function Xt(e,r,a,t){return e.removeEventListener(r,a,t)}function Yt(e,r,a){var t=_e(e,r,a);if(t)return e.detachEvent("on"+r,t)}function Ft(e,r,a){var t=$t.indexOf(r)===-1?i():n();e.dispatchEvent?e.dispatchEvent(t):e.fireEvent("on"+r,t);function n(){var u;return H.createEvent?(u=H.createEvent("Event"),u.initEvent(r,!0,!0)):H.createEventObject&&(u=H.createEventObject()),u}function i(){return new Dt(r,{detail:a})}}function jt(e,r,a){return function(n){var i=n||global.event;i.target=i.target||i.srcElement,i.preventDefault=i.preventDefault||function(){i.returnValue=!1},i.stopPropagation=i.stopPropagation||function(){i.cancelBubble=!0},i.which=i.which||i.keyCode,a.call(e,i)}}function Bt(e,r,a){var t=_e(e,r,a)||jt(e,r,a);return q.push({wrapper:t,element:e,type:r,fn:a}),t}function _e(e,r,a){var t=Pt(e,r,a);if(t){var n=q[t].wrapper;return q.splice(t,1),n}}function Pt(e,r,a){var t,n;for(t=0;t<q.length;t++)if(n=q[t],n.element===e&&n.type===r&&n.fn===a)return t}});var Qe=$((ir,Je)=>{"use strict";var Ue={},At="(?:^|\\s)",qt="(?:\\s|$)";function We(e){var r=Ue[e];return r?r.lastIndex=0:Ue[e]=r=new RegExp(At+e+qt,"g"),r}function Tt(e,r){var a=e.className;a.length?We(r).test(a)||(e.className+=" "+r):e.className=r}function Vt(e,r){e.className=e.className.replace(We(r)," ").trim()}Je.exports={add:Tt,rm:Vt}});var ut=$((or,st)=>{"use strict";var Gt=Be(),P=Ke(),X=Qe(),A=document,D=A.documentElement;function Ht(e,r){var a=arguments.length;a===1&&Array.isArray(e)===!1&&(r=e,e=[]);var t,n,i,u,s,d,b,p,w,h,C,M=null,O,c=r||{};c.moves===void 0&&(c.moves=rt),c.accepts===void 0&&(c.accepts=rt),c.invalid===void 0&&(c.invalid=ht),c.containers===void 0&&(c.containers=e||[]),c.isContainer===void 0&&(c.isContainer=_t),c.copy===void 0&&(c.copy=!1),c.copySortSource===void 0&&(c.copySortSource=!1),c.revertOnSpill===void 0&&(c.revertOnSpill=!1),c.removeOnSpill===void 0&&(c.removeOnSpill=!1),c.direction===void 0&&(c.direction="vertical"),c.ignoreInputTextSelection===void 0&&(c.ignoreInputTextSelection=!0),c.mirrorContainer===void 0&&(c.mirrorContainer=A.body);var g=Gt({containers:c.containers,start:vt,end:fe,cancel:pe,remove:me,destroy:ct,canMove:ft,dragging:!1});return c.removeOnSpill===!0&&g.on("over",mt).on("out",pt),ue(),g;function L(o){return g.containers.indexOf(o)!==-1||c.isContainer(o)}function ue(o){var l=o?"remove":"add";T(D,l,"mousedown",lt),T(D,l,"mouseup",K)}function _(o){var l=o?"remove":"add";T(D,l,"mousemove",dt)}function ce(o){var l=o?"remove":"add";P[l](D,"selectstart",le),P[l](D,"click",le)}function ct(){ue(!0),K({})}function le(o){O&&o.preventDefault()}function lt(o){d=o.clientX,b=o.clientY;var l=Ze(o)!==1||o.metaKey||o.ctrlKey;if(!l){var f=o.target,m=z(f);m&&(O=m,_(),o.type==="mousedown"&&(ot(f)?f.focus():o.preventDefault()))}}function dt(o){if(O){if(Ze(o)===0){K({});return}if(!(o.clientX!==void 0&&Math.abs(o.clientX-d)<=(c.slideFactorX||0)&&o.clientY!==void 0&&Math.abs(o.clientY-b)<=(c.slideFactorY||0))){if(c.ignoreInputTextSelection){var l=Y("clientX",o)||0,f=Y("clientY",o)||0,m=A.elementFromPoint(l,f);if(ot(m))return}var x=O;_(!0),ce(),fe(),de(x);var E=Lt(i);u=Y("pageX",o)-E.left,s=Y("pageY",o)-E.top,X.add(h||i,"gu-transit"),gt(),J(o)}}}function z(o){if(!(g.dragging&&t)&&!L(o)){for(var l=o;S(o)&&L(S(o))===!1;)if(c.invalid(o,l)||(o=S(o),!o))return;var f=S(o);if(f&&!c.invalid(o,l)){var m=c.moves(o,f,l,V(o));if(m)return{item:o,source:f}}}}function ft(o){return!!z(o)}function vt(o){var l=z(o);l&&de(l)}function de(o){Et(o.item,o.source)&&(h=o.item.cloneNode(!0),g.emit("cloned",h,o.item,"copy")),n=o.source,i=o.item,p=w=V(o.item),g.dragging=!0,g.emit("drag",i,n)}function ht(){return!1}function fe(){if(g.dragging){var o=h||i;he(o,S(o))}}function ve(){O=!1,_(!0),ce(!0)}function K(o){if(ve(),!!g.dragging){var l=h||i,f=Y("clientX",o)||0,m=Y("clientY",o)||0,x=tt(t,f,m),E=ge(x,f,m);E&&(h&&c.copySortSource||!h||E!==n)?he(l,E):c.removeOnSpill?me():pe()}}function he(o,l){var f=S(o);h&&c.copySortSource&&l===n&&f.removeChild(i),W(l)?g.emit("cancel",o,n,n):g.emit("drop",o,l,n,w),U()}function me(){if(g.dragging){var o=h||i,l=S(o);l&&l.removeChild(o),g.emit(h?"cancel":"remove",o,l,n),U()}}function pe(o){if(g.dragging){var l=arguments.length>0?o:c.revertOnSpill,f=h||i,m=S(f),x=W(m);x===!1&&l&&(h?m&&m.removeChild(h):n.insertBefore(f,p)),x||l?g.emit("cancel",f,n,n):g.emit("drop",f,m,n,w),U()}}function U(){var o=h||i;ve(),bt(),o&&X.rm(o,"gu-transit"),C&&clearTimeout(C),g.dragging=!1,M&&g.emit("out",o,M,n),g.emit("dragend",o),n=i=h=p=w=C=M=null}function W(o,l){var f;return l!==void 0?f=l:t?f=w:f=V(h||i),o===n&&f===p}function ge(o,l,f){for(var m=o;m&&!x();)m=S(m);return m;function x(){var E=L(m);if(E===!1)return!1;var B=be(m,o),y=Ee(m,B,l,f),R=W(m,y);return R?!0:c.accepts(i,m,n,y)}}function J(o){if(!t)return;o.preventDefault();var l=Y("clientX",o)||0,f=Y("clientY",o)||0,m=l-u,x=f-s;t.style.left=m+"px",t.style.top=x+"px";var E=h||i,B=tt(t,l,f),y=ge(B,l,f),R=y!==null&&y!==M;(R||y===null)&&(wt(),M=y,Ct());var k=S(E);if(y===n&&h&&!c.copySortSource){k&&k.removeChild(E);return}var I,F=be(y,B);if(F!==null)I=Ee(y,F,l,f);else if(c.revertOnSpill===!0&&!h)I=p,y=n;else{h&&k&&k.removeChild(E);return}(I===null&&R||I!==E&&I!==V(E))&&(w=I,y.insertBefore(E,I),g.emit("shadow",E,y,n));function N(Mt){g.emit(Mt,E,M,n)}function Ct(){R&&N("over")}function wt(){M&&N("out")}}function mt(o){X.rm(o,"gu-hide")}function pt(o){g.dragging&&X.add(o,"gu-hide")}function gt(){if(!t){var o=i.getBoundingClientRect();t=i.cloneNode(!0),t.style.width=nt(o)+"px",t.style.height=it(o)+"px",X.rm(t,"gu-transit"),X.add(t,"gu-mirror"),c.mirrorContainer.appendChild(t),T(D,"add","mousemove",J),X.add(c.mirrorContainer,"gu-unselectable"),g.emit("cloned",t,i,"mirror")}}function bt(){t&&(X.rm(c.mirrorContainer,"gu-unselectable"),T(D,"remove","mousemove",J),S(t).removeChild(t),t=null)}function be(o,l){for(var f=l;f!==o&&S(f)!==o;)f=S(f);return f===D?null:f}function Ee(o,l,f,m){var x=c.direction==="horizontal",E=l!==o?y():B();return E;function B(){var k=o.children.length,I,F,N;for(I=0;I<k;I++)if(F=o.children[I],N=F.getBoundingClientRect(),x&&N.left+N.width/2>f||!x&&N.top+N.height/2>m)return F;return null}function y(){var k=l.getBoundingClientRect();return R(x?f>k.left+nt(k)/2:m>k.top+it(k)/2)}function R(k){return k?V(l):l}}function Et(o,l){return typeof c.copy=="boolean"?c.copy:c.copy(o,l)}}function T(e,r,a,t){var n={mouseup:"touchend",mousedown:"touchstart",mousemove:"touchmove"},i={mouseup:"pointerup",mousedown:"pointerdown",mousemove:"pointermove"},u={mouseup:"MSPointerUp",mousedown:"MSPointerDown",mousemove:"MSPointerMove"};global.navigator.pointerEnabled?P[r](e,i[a],t):global.navigator.msPointerEnabled?P[r](e,u[a],t):(P[r](e,n[a],t),P[r](e,a,t))}function Ze(e){if(e.touches!==void 0)return e.touches.length;if(e.which!==void 0&&e.which!==0)return e.which;if(e.buttons!==void 0)return e.buttons;var r=e.button;if(r!==void 0)return r&1?1:r&2?3:r&4?2:0}function Lt(e){var r=e.getBoundingClientRect();return{left:r.left+et("scrollLeft","pageXOffset"),top:r.top+et("scrollTop","pageYOffset")}}function et(e,r){return typeof global[r]<"u"?global[r]:D.clientHeight?D[e]:A.body[e]}function tt(e,r,a){e=e||{};var t=e.className||"",n;return e.className+=" gu-hide",n=A.elementFromPoint(r,a),e.className=t,n}function _t(){return!1}function rt(){return!0}function nt(e){return e.width||e.right-e.left}function it(e){return e.height||e.bottom-e.top}function S(e){return e.parentNode===A?null:e.parentNode}function ot(e){return e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||at(e)}function at(e){return!e||e.contentEditable==="false"?!1:e.contentEditable==="true"?!0:at(S(e))}function V(e){return e.nextElementSibling||r();function r(){var a=e;do a=a.nextSibling;while(a&&a.nodeType!==1);return a}}function zt(e){return e.targetTouches&&e.targetTouches.length?e.targetTouches[0]:e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e}function Y(e,r){var a=zt(r),t={pageX:"clientX",pageY:"clientY"};return e in t&&!(e in a)&&t[e]in a&&(e=t[e]),a[e]}st.exports=Ht});var se=yt(ut(),1),ie=class{constructor(r,a,t){this.name=r,this.drake=a,this.options=t,this.initEvents=!1}},v=function(e){return e.Cancel="cancel",e.Cloned="cloned",e.Drag="drag",e.DragEnd="dragend",e.Drop="drop",e.Out="out",e.Over="over",e.Remove="remove",e.Shadow="shadow",e.DropModel="dropModel",e.RemoveModel="removeModel",e}(v||{}),Kt=Object.keys(v).map(e=>v[e]),Ut=se.default||se,G=class{constructor(r=Ut){this.build=r}},j=(e,r,a)=>t=>t.pipe(ee(({event:n,name:i})=>n===e&&(r===void 0||i===r)),Ce(({name:n,args:i})=>a(n,i))),Wt=(e,[r,a,t])=>({name:e,el:r,container:a,source:t}),oe=(()=>{let r=class r{constructor(t){this.drakeFactory=t,this.groups={},this.dispatch$=new Z,this.elContainerSource=n=>i=>this.dispatch$.pipe(j(n,i,Wt)),this.cancel=this.elContainerSource(v.Cancel),this.remove=this.elContainerSource(v.Remove),this.shadow=this.elContainerSource(v.Shadow),this.over=this.elContainerSource(v.Over),this.out=this.elContainerSource(v.Out),this.drag=n=>this.dispatch$.pipe(j(v.Drag,n,(i,[u,s])=>({name:i,el:u,source:s}))),this.dragend=n=>this.dispatch$.pipe(j(v.DragEnd,n,(i,[u])=>({name:i,el:u}))),this.drop=n=>this.dispatch$.pipe(j(v.Drop,n,(i,[u,s,d,b])=>({name:i,el:u,target:s,source:d,sibling:b}))),this.cloned=n=>this.dispatch$.pipe(j(v.Cloned,n,(i,[u,s,d])=>({name:i,clone:u,original:s,cloneType:d}))),this.dropModel=n=>this.dispatch$.pipe(j(v.DropModel,n,(i,[u,s,d,b,p,w,h,C,M])=>({name:i,el:u,target:s,source:d,sibling:b,item:p,sourceModel:w,targetModel:h,sourceIndex:C,targetIndex:M}))),this.removeModel=n=>this.dispatch$.pipe(j(v.RemoveModel,n,(i,[u,s,d,b,p,w])=>({name:i,el:u,container:s,source:d,item:b,sourceModel:p,sourceIndex:w}))),(this.drakeFactory===null||this.drakeFactory===void 0)&&(this.drakeFactory=new G)}add(t){if(this.find(t.name))throw new Error('Group named: "'+t.name+'" already exists.');return this.groups[t.name]=t,this.handleModels(t),this.setupEvents(t),t}find(t){return this.groups[t]}destroy(t){let n=this.find(t);n&&(n.drake&&n.drake.destroy(),delete this.groups[t])}createGroup(t,n){return this.add(new ie(t,this.drakeFactory.build([],n),n))}handleModels({name:t,drake:n,options:i}){let u,s,d;n.on("remove",(b,p,w)=>{if(!n.models)return;let h=n.models[n.containers.indexOf(w)];h=h.slice(0);let C=h.splice(s,1)[0];this.dispatch$.next({event:v.RemoveModel,name:t,args:[b,p,w,C,h,s]})}),n.on("drag",(b,p)=>{n.models&&(u=b,s=this.domIndexOf(b,p))}),n.on("drop",(b,p,w,h)=>{if(!n.models||!p)return;d=this.domIndexOf(b,p);let C=n.models[n.containers.indexOf(w)],M=n.models[n.containers.indexOf(p)],O;if(p===w)C=C.slice(0),O=C.splice(s,1)[0],C.splice(d,0,O),M=C;else{let c=u!==b;if(O=C[s],c){if(!i.copyItem)throw new Error("If you have enabled `copy` on a group, you must provide a `copyItem` function.");O=i.copyItem(O)}if(c||(C=C.slice(0),C.splice(s,1)),M=M.slice(0),M.splice(d,0,O),c)try{p.removeChild(b)}catch{}}this.dispatch$.next({event:v.DropModel,name:t,args:[b,p,w,h,O,C,M,s,d]})})}setupEvents(t){if(t.initEvents)return;t.initEvents=!0;let n=t.name,i=this,u=s=>{switch(s){case v.Drag:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.Drop:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.DragEnd:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.Cancel:case v.Remove:case v.Shadow:case v.Over:case v.Out:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.Cloned:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.DropModel:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.RemoveModel:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;default:break}};Kt.forEach(u)}domIndexOf(t,n){if(n)return Array.prototype.indexOf.call(n.children,t)}};r.\u0275fac=function(n){return new(n||r)(ye(G,8))},r.\u0275prov=we({token:r,factory:r.\u0275fac,providedIn:"root"});let e=r;return e})(),pr=(()=>{let r=class r{get container(){return this.el&&this.el.nativeElement}constructor(t,n){this.el=t,this.dragulaService=n,this.dragulaModelChange=new Ie}ngOnChanges(t){if(t&&t.dragula){let{previousValue:n,currentValue:i,firstChange:u}=t.dragula,s=!!n,d=!!i;s&&this.teardown(n),d&&this.setup()}else if(t&&t.dragulaModel){let{previousValue:n,currentValue:i,firstChange:u}=t.dragulaModel,s=this.group?.drake;if(this.dragula&&s){s.models=s.models||[];let d=s.models.indexOf(n);d!==-1?(s.models.splice(d,1),i&&s.models.splice(d,0,i)):i&&s.models.push(i)}}}setup(){let t=i=>{this.dragulaModel&&(i.drake?.models?i.drake?.models?.push(this.dragulaModel):i.drake&&(i.drake.models=[this.dragulaModel]))};if(!this.dragula)return;let n=this.dragulaService.find(this.dragula);if(!n){let i={};n=this.dragulaService.createGroup(this.dragula,i)}t(n),n.drake?.containers.push(this.container),this.subscribe(this.dragula),this.group=n}subscribe(t){this.subs=new Q,this.subs.add(this.dragulaService.dropModel(t).subscribe(({source:n,target:i,sourceModel:u,targetModel:s})=>{n===this.el.nativeElement?this.dragulaModelChange.emit(u):i===this.el.nativeElement&&this.dragulaModelChange.emit(s)})),this.subs.add(this.dragulaService.removeModel(t).subscribe(({source:n,sourceModel:i})=>{n===this.el.nativeElement&&this.dragulaModelChange.emit(i)}))}teardown(t){this.subs&&this.subs.unsubscribe();let n=this.dragulaService.find(t);if(n){let i=n.drake?.containers.indexOf(this.el.nativeElement);if(i!==-1&&n.drake?.containers.splice(i,1),this.dragulaModel&&n.drake&&n.drake.models){let u=n.drake.models.indexOf(this.dragulaModel);u!==-1&&n.drake.models.splice(u,1)}}}ngOnDestroy(){this.dragula&&this.teardown(this.dragula)}};r.\u0275fac=function(n){return new(n||r)(te(Se),te(oe))},r.\u0275dir=ke({type:r,selectors:[["","dragula",""]],inputs:{dragula:"dragula",dragulaModel:"dragulaModel"},outputs:{dragulaModelChange:"dragulaModelChange"},standalone:!1,features:[xe]});let e=r;return e})(),gr=(()=>{let r=class r{static forRoot(){return{ngModule:r,providers:[oe]}}};r.\u0275fac=function(n){return new(n||r)},r.\u0275mod=Oe({type:r}),r.\u0275inj=Me({providers:[oe]});let e=r;return e})(),br=new G((e,r)=>new ae(e,r)),ae=class{constructor(r=[],a={},t){this.containers=r,this.options=a,this.models=t,this.emitter$=new Z,this.subs=new Q,this.dragging=!1}on(r,a){this.subs.add(this.emitter$.pipe(ee(({eventType:t})=>t===r)).subscribe(({eventType:t,args:n})=>{if(t===v.Drag){let i=Array.from(n),u=i[0],s=i[1];a(u,s);return}if(t===v.Drop){let i=Array.from(n),u=i[0],s=i[1],d=i[2],b=i[3];a(u,s,d,b);return}if(t===v.Remove){let i=Array.from(n),u=i[0],s=i[1],d=i[2];a(u,s,d);return}a(n)}))}start(r){this.dragging=!0}end(){this.dragging=!1}cancel(r){this.dragging=!1}canMove(r){return this.options.accepts?this.options.accepts(r):!1}remove(){this.dragging=!1}destroy(){this.subs.unsubscribe()}emit(r,...a){this.emitter$.next({eventType:r,args:a})}};export{oe as a,pr as b,gr as c};
1
+ import{Ca as xe,Fa as Se,H as ee,e as $,g as yt,ga as we,gb as te,ha as Me,i as Q,ka as ye,n as Z,nb as Oe,ob as ke,ub as Ie,x as Ce}from"./chunk-645YHJEQ.js";var $e=$((Jt,De)=>{De.exports=function(r,a){return Array.prototype.slice.call(r,a)}});var Ne=$((Qt,Re)=>{var xt=typeof setImmediate=="function",re;xt?re=function(e){setImmediate(e)}:re=function(e){setTimeout(e,0)};Re.exports=re});var Ye=$((Zt,Xe)=>{"use strict";var St=Ne();Xe.exports=function(r,a,t){r&&St(function(){r.apply(t||null,a||[])})}});var Be=$((er,je)=>{"use strict";var Fe=$e(),Ot=Ye();je.exports=function(r,a){var t=a||{},n={};return r===void 0&&(r={}),r.on=function(i,u){return n[i]?n[i].push(u):n[i]=[u],r},r.once=function(i,u){return u._once=!0,r.on(i,u),r},r.off=function(i,u){var s=arguments.length;if(s===1)delete n[i];else if(s===0)n={};else{var d=n[i];if(!d)return r;d.splice(d.indexOf(u),1)}return r},r.emit=function(){var i=Fe(arguments);return r.emitterSnapshot(i.shift()).apply(this,i)},r.emitterSnapshot=function(i){var u=(n[i]||[]).slice(0);return function(){var s=Fe(arguments),d=this||r;if(i==="error"&&t.throws!==!1&&!u.length)throw s.length===1?s[0]:s;return u.forEach(function(p){t.async?Ot(p,s,d):p.apply(d,s),p._once&&r.off(i,p)}),r}},r}});var qe=$((tr,Ae)=>{var Pe=global.CustomEvent;function kt(){try{var e=new Pe("cat",{detail:{foo:"bar"}});return e.type==="cat"&&e.detail.foo==="bar"}catch{}return!1}Ae.exports=kt()?Pe:typeof document<"u"&&typeof document.createEvent=="function"?function(r,a){var t=document.createEvent("CustomEvent");return a?t.initCustomEvent(r,a.bubbles,a.cancelable,a.detail):t.initCustomEvent(r,!1,!1,void 0),t}:function(r,a){var t=document.createEventObject();return t.type=r,a?(t.bubbles=!!a.bubbles,t.cancelable=!!a.cancelable,t.detail=a.detail):(t.bubbles=!1,t.cancelable=!1,t.detail=void 0),t}});var Ge=$((rr,Ve)=>{"use strict";var Te=[],ne="",It=/^on/;for(ne in global)It.test(ne)&&Te.push(ne.slice(2));Ve.exports=Te});var Ke=$((nr,ze)=>{"use strict";var Dt=qe(),$t=Ge(),H=global.document,He=Rt,Le=Xt,q=[];global.addEventListener||(He=Nt,Le=Yt);ze.exports={add:He,remove:Le,fabricate:Ft};function Rt(e,r,a,t){return e.addEventListener(r,a,t)}function Nt(e,r,a){return e.attachEvent("on"+r,Bt(e,r,a))}function Xt(e,r,a,t){return e.removeEventListener(r,a,t)}function Yt(e,r,a){var t=_e(e,r,a);if(t)return e.detachEvent("on"+r,t)}function Ft(e,r,a){var t=$t.indexOf(r)===-1?i():n();e.dispatchEvent?e.dispatchEvent(t):e.fireEvent("on"+r,t);function n(){var u;return H.createEvent?(u=H.createEvent("Event"),u.initEvent(r,!0,!0)):H.createEventObject&&(u=H.createEventObject()),u}function i(){return new Dt(r,{detail:a})}}function jt(e,r,a){return function(n){var i=n||global.event;i.target=i.target||i.srcElement,i.preventDefault=i.preventDefault||function(){i.returnValue=!1},i.stopPropagation=i.stopPropagation||function(){i.cancelBubble=!0},i.which=i.which||i.keyCode,a.call(e,i)}}function Bt(e,r,a){var t=_e(e,r,a)||jt(e,r,a);return q.push({wrapper:t,element:e,type:r,fn:a}),t}function _e(e,r,a){var t=Pt(e,r,a);if(t){var n=q[t].wrapper;return q.splice(t,1),n}}function Pt(e,r,a){var t,n;for(t=0;t<q.length;t++)if(n=q[t],n.element===e&&n.type===r&&n.fn===a)return t}});var Qe=$((ir,Je)=>{"use strict";var Ue={},At="(?:^|\\s)",qt="(?:\\s|$)";function We(e){var r=Ue[e];return r?r.lastIndex=0:Ue[e]=r=new RegExp(At+e+qt,"g"),r}function Tt(e,r){var a=e.className;a.length?We(r).test(a)||(e.className+=" "+r):e.className=r}function Vt(e,r){e.className=e.className.replace(We(r)," ").trim()}Je.exports={add:Tt,rm:Vt}});var ut=$((or,st)=>{"use strict";var Gt=Be(),P=Ke(),X=Qe(),A=document,D=A.documentElement;function Ht(e,r){var a=arguments.length;a===1&&Array.isArray(e)===!1&&(r=e,e=[]);var t,n,i,u,s,d,b,p,w,h,C,M=null,O,c=r||{};c.moves===void 0&&(c.moves=rt),c.accepts===void 0&&(c.accepts=rt),c.invalid===void 0&&(c.invalid=ht),c.containers===void 0&&(c.containers=e||[]),c.isContainer===void 0&&(c.isContainer=_t),c.copy===void 0&&(c.copy=!1),c.copySortSource===void 0&&(c.copySortSource=!1),c.revertOnSpill===void 0&&(c.revertOnSpill=!1),c.removeOnSpill===void 0&&(c.removeOnSpill=!1),c.direction===void 0&&(c.direction="vertical"),c.ignoreInputTextSelection===void 0&&(c.ignoreInputTextSelection=!0),c.mirrorContainer===void 0&&(c.mirrorContainer=A.body);var g=Gt({containers:c.containers,start:vt,end:fe,cancel:pe,remove:me,destroy:ct,canMove:ft,dragging:!1});return c.removeOnSpill===!0&&g.on("over",mt).on("out",pt),ue(),g;function L(o){return g.containers.indexOf(o)!==-1||c.isContainer(o)}function ue(o){var l=o?"remove":"add";T(D,l,"mousedown",lt),T(D,l,"mouseup",K)}function _(o){var l=o?"remove":"add";T(D,l,"mousemove",dt)}function ce(o){var l=o?"remove":"add";P[l](D,"selectstart",le),P[l](D,"click",le)}function ct(){ue(!0),K({})}function le(o){O&&o.preventDefault()}function lt(o){d=o.clientX,b=o.clientY;var l=Ze(o)!==1||o.metaKey||o.ctrlKey;if(!l){var f=o.target,m=z(f);m&&(O=m,_(),o.type==="mousedown"&&(ot(f)?f.focus():o.preventDefault()))}}function dt(o){if(O){if(Ze(o)===0){K({});return}if(!(o.clientX!==void 0&&Math.abs(o.clientX-d)<=(c.slideFactorX||0)&&o.clientY!==void 0&&Math.abs(o.clientY-b)<=(c.slideFactorY||0))){if(c.ignoreInputTextSelection){var l=Y("clientX",o)||0,f=Y("clientY",o)||0,m=A.elementFromPoint(l,f);if(ot(m))return}var x=O;_(!0),ce(),fe(),de(x);var E=Lt(i);u=Y("pageX",o)-E.left,s=Y("pageY",o)-E.top,X.add(h||i,"gu-transit"),gt(),J(o)}}}function z(o){if(!(g.dragging&&t)&&!L(o)){for(var l=o;S(o)&&L(S(o))===!1;)if(c.invalid(o,l)||(o=S(o),!o))return;var f=S(o);if(f&&!c.invalid(o,l)){var m=c.moves(o,f,l,V(o));if(m)return{item:o,source:f}}}}function ft(o){return!!z(o)}function vt(o){var l=z(o);l&&de(l)}function de(o){Et(o.item,o.source)&&(h=o.item.cloneNode(!0),g.emit("cloned",h,o.item,"copy")),n=o.source,i=o.item,p=w=V(o.item),g.dragging=!0,g.emit("drag",i,n)}function ht(){return!1}function fe(){if(g.dragging){var o=h||i;he(o,S(o))}}function ve(){O=!1,_(!0),ce(!0)}function K(o){if(ve(),!!g.dragging){var l=h||i,f=Y("clientX",o)||0,m=Y("clientY",o)||0,x=tt(t,f,m),E=ge(x,f,m);E&&(h&&c.copySortSource||!h||E!==n)?he(l,E):c.removeOnSpill?me():pe()}}function he(o,l){var f=S(o);h&&c.copySortSource&&l===n&&f.removeChild(i),W(l)?g.emit("cancel",o,n,n):g.emit("drop",o,l,n,w),U()}function me(){if(g.dragging){var o=h||i,l=S(o);l&&l.removeChild(o),g.emit(h?"cancel":"remove",o,l,n),U()}}function pe(o){if(g.dragging){var l=arguments.length>0?o:c.revertOnSpill,f=h||i,m=S(f),x=W(m);x===!1&&l&&(h?m&&m.removeChild(h):n.insertBefore(f,p)),x||l?g.emit("cancel",f,n,n):g.emit("drop",f,m,n,w),U()}}function U(){var o=h||i;ve(),bt(),o&&X.rm(o,"gu-transit"),C&&clearTimeout(C),g.dragging=!1,M&&g.emit("out",o,M,n),g.emit("dragend",o),n=i=h=p=w=C=M=null}function W(o,l){var f;return l!==void 0?f=l:t?f=w:f=V(h||i),o===n&&f===p}function ge(o,l,f){for(var m=o;m&&!x();)m=S(m);return m;function x(){var E=L(m);if(E===!1)return!1;var B=be(m,o),y=Ee(m,B,l,f),R=W(m,y);return R?!0:c.accepts(i,m,n,y)}}function J(o){if(!t)return;o.preventDefault();var l=Y("clientX",o)||0,f=Y("clientY",o)||0,m=l-u,x=f-s;t.style.left=m+"px",t.style.top=x+"px";var E=h||i,B=tt(t,l,f),y=ge(B,l,f),R=y!==null&&y!==M;(R||y===null)&&(wt(),M=y,Ct());var k=S(E);if(y===n&&h&&!c.copySortSource){k&&k.removeChild(E);return}var I,F=be(y,B);if(F!==null)I=Ee(y,F,l,f);else if(c.revertOnSpill===!0&&!h)I=p,y=n;else{h&&k&&k.removeChild(E);return}(I===null&&R||I!==E&&I!==V(E))&&(w=I,y.insertBefore(E,I),g.emit("shadow",E,y,n));function N(Mt){g.emit(Mt,E,M,n)}function Ct(){R&&N("over")}function wt(){M&&N("out")}}function mt(o){X.rm(o,"gu-hide")}function pt(o){g.dragging&&X.add(o,"gu-hide")}function gt(){if(!t){var o=i.getBoundingClientRect();t=i.cloneNode(!0),t.style.width=nt(o)+"px",t.style.height=it(o)+"px",X.rm(t,"gu-transit"),X.add(t,"gu-mirror"),c.mirrorContainer.appendChild(t),T(D,"add","mousemove",J),X.add(c.mirrorContainer,"gu-unselectable"),g.emit("cloned",t,i,"mirror")}}function bt(){t&&(X.rm(c.mirrorContainer,"gu-unselectable"),T(D,"remove","mousemove",J),S(t).removeChild(t),t=null)}function be(o,l){for(var f=l;f!==o&&S(f)!==o;)f=S(f);return f===D?null:f}function Ee(o,l,f,m){var x=c.direction==="horizontal",E=l!==o?y():B();return E;function B(){var k=o.children.length,I,F,N;for(I=0;I<k;I++)if(F=o.children[I],N=F.getBoundingClientRect(),x&&N.left+N.width/2>f||!x&&N.top+N.height/2>m)return F;return null}function y(){var k=l.getBoundingClientRect();return R(x?f>k.left+nt(k)/2:m>k.top+it(k)/2)}function R(k){return k?V(l):l}}function Et(o,l){return typeof c.copy=="boolean"?c.copy:c.copy(o,l)}}function T(e,r,a,t){var n={mouseup:"touchend",mousedown:"touchstart",mousemove:"touchmove"},i={mouseup:"pointerup",mousedown:"pointerdown",mousemove:"pointermove"},u={mouseup:"MSPointerUp",mousedown:"MSPointerDown",mousemove:"MSPointerMove"};global.navigator.pointerEnabled?P[r](e,i[a],t):global.navigator.msPointerEnabled?P[r](e,u[a],t):(P[r](e,n[a],t),P[r](e,a,t))}function Ze(e){if(e.touches!==void 0)return e.touches.length;if(e.which!==void 0&&e.which!==0)return e.which;if(e.buttons!==void 0)return e.buttons;var r=e.button;if(r!==void 0)return r&1?1:r&2?3:r&4?2:0}function Lt(e){var r=e.getBoundingClientRect();return{left:r.left+et("scrollLeft","pageXOffset"),top:r.top+et("scrollTop","pageYOffset")}}function et(e,r){return typeof global[r]<"u"?global[r]:D.clientHeight?D[e]:A.body[e]}function tt(e,r,a){e=e||{};var t=e.className||"",n;return e.className+=" gu-hide",n=A.elementFromPoint(r,a),e.className=t,n}function _t(){return!1}function rt(){return!0}function nt(e){return e.width||e.right-e.left}function it(e){return e.height||e.bottom-e.top}function S(e){return e.parentNode===A?null:e.parentNode}function ot(e){return e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||at(e)}function at(e){return!e||e.contentEditable==="false"?!1:e.contentEditable==="true"?!0:at(S(e))}function V(e){return e.nextElementSibling||r();function r(){var a=e;do a=a.nextSibling;while(a&&a.nodeType!==1);return a}}function zt(e){return e.targetTouches&&e.targetTouches.length?e.targetTouches[0]:e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e}function Y(e,r){var a=zt(r),t={pageX:"clientX",pageY:"clientY"};return e in t&&!(e in a)&&t[e]in a&&(e=t[e]),a[e]}st.exports=Ht});var se=yt(ut(),1),ie=class{constructor(r,a,t){this.name=r,this.drake=a,this.options=t,this.initEvents=!1}},v=function(e){return e.Cancel="cancel",e.Cloned="cloned",e.Drag="drag",e.DragEnd="dragend",e.Drop="drop",e.Out="out",e.Over="over",e.Remove="remove",e.Shadow="shadow",e.DropModel="dropModel",e.RemoveModel="removeModel",e}(v||{}),Kt=Object.keys(v).map(e=>v[e]),Ut=se.default||se,G=class{constructor(r=Ut){this.build=r}},j=(e,r,a)=>t=>t.pipe(ee(({event:n,name:i})=>n===e&&(r===void 0||i===r)),Ce(({name:n,args:i})=>a(n,i))),Wt=(e,[r,a,t])=>({name:e,el:r,container:a,source:t}),oe=(()=>{let r=class r{constructor(t){this.drakeFactory=t,this.groups={},this.dispatch$=new Z,this.elContainerSource=n=>i=>this.dispatch$.pipe(j(n,i,Wt)),this.cancel=this.elContainerSource(v.Cancel),this.remove=this.elContainerSource(v.Remove),this.shadow=this.elContainerSource(v.Shadow),this.over=this.elContainerSource(v.Over),this.out=this.elContainerSource(v.Out),this.drag=n=>this.dispatch$.pipe(j(v.Drag,n,(i,[u,s])=>({name:i,el:u,source:s}))),this.dragend=n=>this.dispatch$.pipe(j(v.DragEnd,n,(i,[u])=>({name:i,el:u}))),this.drop=n=>this.dispatch$.pipe(j(v.Drop,n,(i,[u,s,d,b])=>({name:i,el:u,target:s,source:d,sibling:b}))),this.cloned=n=>this.dispatch$.pipe(j(v.Cloned,n,(i,[u,s,d])=>({name:i,clone:u,original:s,cloneType:d}))),this.dropModel=n=>this.dispatch$.pipe(j(v.DropModel,n,(i,[u,s,d,b,p,w,h,C,M])=>({name:i,el:u,target:s,source:d,sibling:b,item:p,sourceModel:w,targetModel:h,sourceIndex:C,targetIndex:M}))),this.removeModel=n=>this.dispatch$.pipe(j(v.RemoveModel,n,(i,[u,s,d,b,p,w])=>({name:i,el:u,container:s,source:d,item:b,sourceModel:p,sourceIndex:w}))),(this.drakeFactory===null||this.drakeFactory===void 0)&&(this.drakeFactory=new G)}add(t){if(this.find(t.name))throw new Error('Group named: "'+t.name+'" already exists.');return this.groups[t.name]=t,this.handleModels(t),this.setupEvents(t),t}find(t){return this.groups[t]}destroy(t){let n=this.find(t);n&&(n.drake&&n.drake.destroy(),delete this.groups[t])}createGroup(t,n){return this.add(new ie(t,this.drakeFactory.build([],n),n))}handleModels({name:t,drake:n,options:i}){let u,s,d;n.on("remove",(b,p,w)=>{if(!n.models)return;let h=n.models[n.containers.indexOf(w)];h=h.slice(0);let C=h.splice(s,1)[0];this.dispatch$.next({event:v.RemoveModel,name:t,args:[b,p,w,C,h,s]})}),n.on("drag",(b,p)=>{n.models&&(u=b,s=this.domIndexOf(b,p))}),n.on("drop",(b,p,w,h)=>{if(!n.models||!p)return;d=this.domIndexOf(b,p);let C=n.models[n.containers.indexOf(w)],M=n.models[n.containers.indexOf(p)],O;if(p===w)C=C.slice(0),O=C.splice(s,1)[0],C.splice(d,0,O),M=C;else{let c=u!==b;if(O=C[s],c){if(!i.copyItem)throw new Error("If you have enabled `copy` on a group, you must provide a `copyItem` function.");O=i.copyItem(O)}if(c||(C=C.slice(0),C.splice(s,1)),M=M.slice(0),M.splice(d,0,O),c)try{p.removeChild(b)}catch{}}this.dispatch$.next({event:v.DropModel,name:t,args:[b,p,w,h,O,C,M,s,d]})})}setupEvents(t){if(t.initEvents)return;t.initEvents=!0;let n=t.name,i=this,u=s=>{switch(s){case v.Drag:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.Drop:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.DragEnd:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.Cancel:case v.Remove:case v.Shadow:case v.Over:case v.Out:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.Cloned:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.DropModel:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;case v.RemoveModel:t.drake.on(s,(...d)=>{this.dispatch$.next({event:s,name:n,args:d})});break;default:break}};Kt.forEach(u)}domIndexOf(t,n){if(n)return Array.prototype.indexOf.call(n.children,t)}};r.\u0275fac=function(n){return new(n||r)(ye(G,8))},r.\u0275prov=we({token:r,factory:r.\u0275fac,providedIn:"root"});let e=r;return e})(),pr=(()=>{let r=class r{get container(){return this.el&&this.el.nativeElement}constructor(t,n){this.el=t,this.dragulaService=n,this.dragulaModelChange=new Ie}ngOnChanges(t){if(t&&t.dragula){let{previousValue:n,currentValue:i,firstChange:u}=t.dragula,s=!!n,d=!!i;s&&this.teardown(n),d&&this.setup()}else if(t&&t.dragulaModel){let{previousValue:n,currentValue:i,firstChange:u}=t.dragulaModel,s=this.group?.drake;if(this.dragula&&s){s.models=s.models||[];let d=s.models.indexOf(n);d!==-1?(s.models.splice(d,1),i&&s.models.splice(d,0,i)):i&&s.models.push(i)}}}setup(){let t=i=>{this.dragulaModel&&(i.drake?.models?i.drake?.models?.push(this.dragulaModel):i.drake&&(i.drake.models=[this.dragulaModel]))};if(!this.dragula)return;let n=this.dragulaService.find(this.dragula);if(!n){let i={};n=this.dragulaService.createGroup(this.dragula,i)}t(n),n.drake?.containers.push(this.container),this.subscribe(this.dragula),this.group=n}subscribe(t){this.subs=new Q,this.subs.add(this.dragulaService.dropModel(t).subscribe(({source:n,target:i,sourceModel:u,targetModel:s})=>{n===this.el.nativeElement?this.dragulaModelChange.emit(u):i===this.el.nativeElement&&this.dragulaModelChange.emit(s)})),this.subs.add(this.dragulaService.removeModel(t).subscribe(({source:n,sourceModel:i})=>{n===this.el.nativeElement&&this.dragulaModelChange.emit(i)}))}teardown(t){this.subs&&this.subs.unsubscribe();let n=this.dragulaService.find(t);if(n){let i=n.drake?.containers.indexOf(this.el.nativeElement);if(i!==-1&&n.drake?.containers.splice(i,1),this.dragulaModel&&n.drake&&n.drake.models){let u=n.drake.models.indexOf(this.dragulaModel);u!==-1&&n.drake.models.splice(u,1)}}}ngOnDestroy(){this.dragula&&this.teardown(this.dragula)}};r.\u0275fac=function(n){return new(n||r)(te(Se),te(oe))},r.\u0275dir=ke({type:r,selectors:[["","dragula",""]],inputs:{dragula:"dragula",dragulaModel:"dragulaModel"},outputs:{dragulaModelChange:"dragulaModelChange"},standalone:!1,features:[xe]});let e=r;return e})(),gr=(()=>{let r=class r{static forRoot(){return{ngModule:r,providers:[oe]}}};r.\u0275fac=function(n){return new(n||r)},r.\u0275mod=Oe({type:r}),r.\u0275inj=Me({providers:[oe]});let e=r;return e})(),br=new G((e,r)=>new ae(e,r)),ae=class{constructor(r=[],a={},t){this.containers=r,this.options=a,this.models=t,this.emitter$=new Z,this.subs=new Q,this.dragging=!1}on(r,a){this.subs.add(this.emitter$.pipe(ee(({eventType:t})=>t===r)).subscribe(({eventType:t,args:n})=>{if(t===v.Drag){let i=Array.from(n),u=i[0],s=i[1];a(u,s);return}if(t===v.Drop){let i=Array.from(n),u=i[0],s=i[1],d=i[2],b=i[3];a(u,s,d,b);return}if(t===v.Remove){let i=Array.from(n),u=i[0],s=i[1],d=i[2];a(u,s,d);return}a(n)}))}start(r){this.dragging=!0}end(){this.dragging=!1}cancel(r){this.dragging=!1}canMove(r){return this.options.accepts?this.options.accepts(r):!1}remove(){this.dragging=!1}destroy(){this.subs.unsubscribe()}emit(r,...a){this.emitter$.next({eventType:r,args:a})}};export{oe as a,pr as b,gr as c};
@@ -1 +1 @@
1
- import{k as et,n as it}from"./chunk-Z76YHX7W.js";import{a as tt}from"./chunk-HCP4JDTX.js";import{m as X}from"./chunk-WBXDUV2S.js";import{T as G,e as ut,g as ct,ga as R,h as P,la as Y,n as Q,w as N}from"./chunk-TIL3AXXZ.js";var st=ut((J,K)=>{(function(w,D){typeof J=="object"&&typeof K<"u"?K.exports=D():typeof define=="function"&&define.amd?define(D):(w=typeof globalThis<"u"?globalThis:w||self).dayjs=D()})(J,function(){"use strict";var w=1e3,D=6e4,n=36e5,h="millisecond",d="second",m="minute",M="hour",y="day",f="week",b="month",E="quarter",S="year",x="date",Z="Invalid Date",nt=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,rt=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,ot={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(r){var i=["th","st","nd","rd"],t=r%100;return"["+r+(i[(t-20)%10]||i[t]||i[0])+"]"}},F=function(r,i,t){var s=String(r);return!s||s.length>=i?r:""+Array(i+1-s.length).join(t)+r},at={s:F,z:function(r){var i=-r.utcOffset(),t=Math.abs(i),s=Math.floor(t/60),e=t%60;return(i<=0?"+":"-")+F(s,2,"0")+":"+F(e,2,"0")},m:function r(i,t){if(i.date()<t.date())return-r(t,i);var s=12*(t.year()-i.year())+(t.month()-i.month()),e=i.clone().add(s,b),o=t-e<0,a=i.clone().add(s+(o?-1:1),b);return+(-(s+(t-e)/(o?e-a:a-e))||0)},a:function(r){return r<0?Math.ceil(r)||0:Math.floor(r)},p:function(r){return{M:b,y:S,w:f,d:y,D:x,h:M,m,s:d,ms:h,Q:E}[r]||String(r||"").toLowerCase().replace(/s$/,"")},u:function(r){return r===void 0}},A="en",T={};T[A]=ot;var z="$isDayjsObject",U=function(r){return r instanceof V||!(!r||!r[z])},C=function r(i,t,s){var e;if(!i)return A;if(typeof i=="string"){var o=i.toLowerCase();T[o]&&(e=o),t&&(T[o]=t,e=o);var a=i.split("-");if(!e&&a.length>1)return r(a[0])}else{var c=i.name;T[c]=i,e=c}return!s&&e&&(A=e),e||!s&&A},g=function(r,i){if(U(r))return r.clone();var t=typeof i=="object"?i:{};return t.date=r,t.args=arguments,new V(t)},u=at;u.l=C,u.i=U,u.w=function(r,i){return g(r,{locale:i.$L,utc:i.$u,x:i.$x,$offset:i.$offset})};var V=function(){function r(t){this.$L=C(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[z]=!0}var i=r.prototype;return i.parse=function(t){this.$d=function(s){var e=s.date,o=s.utc;if(e===null)return new Date(NaN);if(u.u(e))return new Date;if(e instanceof Date)return new Date(e);if(typeof e=="string"&&!/Z$/i.test(e)){var a=e.match(nt);if(a){var c=a[2]-1||0,l=(a[7]||"0").substring(0,3);return o?new Date(Date.UTC(a[1],c,a[3]||1,a[4]||0,a[5]||0,a[6]||0,l)):new Date(a[1],c,a[3]||1,a[4]||0,a[5]||0,a[6]||0,l)}}return new Date(e)}(t),this.init()},i.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},i.$utils=function(){return u},i.isValid=function(){return this.$d.toString()!==Z},i.isSame=function(t,s){var e=g(t);return this.startOf(s)<=e&&e<=this.endOf(s)},i.isAfter=function(t,s){return g(t)<this.startOf(s)},i.isBefore=function(t,s){return this.endOf(s)<g(t)},i.$g=function(t,s,e){return u.u(t)?this[s]:this.set(e,t)},i.unix=function(){return Math.floor(this.valueOf()/1e3)},i.valueOf=function(){return this.$d.getTime()},i.startOf=function(t,s){var e=this,o=!!u.u(s)||s,a=u.p(t),c=function(_,v){var k=u.w(e.$u?Date.UTC(e.$y,v,_):new Date(e.$y,v,_),e);return o?k:k.endOf(y)},l=function(_,v){return u.w(e.toDate()[_].apply(e.toDate("s"),(o?[0,0,0,0]:[23,59,59,999]).slice(v)),e)},$=this.$W,p=this.$M,L=this.$D,j="set"+(this.$u?"UTC":"");switch(a){case S:return o?c(1,0):c(31,11);case b:return o?c(1,p):c(0,p+1);case f:var O=this.$locale().weekStart||0,H=($<O?$+7:$)-O;return c(o?L-H:L+(6-H),p);case y:case x:return l(j+"Hours",0);case M:return l(j+"Minutes",1);case m:return l(j+"Seconds",2);case d:return l(j+"Milliseconds",3);default:return this.clone()}},i.endOf=function(t){return this.startOf(t,!1)},i.$set=function(t,s){var e,o=u.p(t),a="set"+(this.$u?"UTC":""),c=(e={},e[y]=a+"Date",e[x]=a+"Date",e[b]=a+"Month",e[S]=a+"FullYear",e[M]=a+"Hours",e[m]=a+"Minutes",e[d]=a+"Seconds",e[h]=a+"Milliseconds",e)[o],l=o===y?this.$D+(s-this.$W):s;if(o===b||o===S){var $=this.clone().set(x,1);$.$d[c](l),$.init(),this.$d=$.set(x,Math.min(this.$D,$.daysInMonth())).$d}else c&&this.$d[c](l);return this.init(),this},i.set=function(t,s){return this.clone().$set(t,s)},i.get=function(t){return this[u.p(t)]()},i.add=function(t,s){var e,o=this;t=Number(t);var a=u.p(s),c=function(p){var L=g(o);return u.w(L.date(L.date()+Math.round(p*t)),o)};if(a===b)return this.set(b,this.$M+t);if(a===S)return this.set(S,this.$y+t);if(a===y)return c(1);if(a===f)return c(7);var l=(e={},e[m]=D,e[M]=n,e[d]=w,e)[a]||1,$=this.$d.getTime()+t*l;return u.w($,this)},i.subtract=function(t,s){return this.add(-1*t,s)},i.format=function(t){var s=this,e=this.$locale();if(!this.isValid())return e.invalidDate||Z;var o=t||"YYYY-MM-DDTHH:mm:ssZ",a=u.z(this),c=this.$H,l=this.$m,$=this.$M,p=e.weekdays,L=e.months,j=e.meridiem,O=function(v,k,I,W){return v&&(v[k]||v(s,o))||I[k].slice(0,W)},H=function(v){return u.s(c%12||12,v,"0")},_=j||function(v,k,I){var W=v<12?"AM":"PM";return I?W.toLowerCase():W};return o.replace(rt,function(v,k){return k||function(I){switch(I){case"YY":return String(s.$y).slice(-2);case"YYYY":return u.s(s.$y,4,"0");case"M":return $+1;case"MM":return u.s($+1,2,"0");case"MMM":return O(e.monthsShort,$,L,3);case"MMMM":return O(L,$);case"D":return s.$D;case"DD":return u.s(s.$D,2,"0");case"d":return String(s.$W);case"dd":return O(e.weekdaysMin,s.$W,p,2);case"ddd":return O(e.weekdaysShort,s.$W,p,3);case"dddd":return p[s.$W];case"H":return String(c);case"HH":return u.s(c,2,"0");case"h":return H(1);case"hh":return H(2);case"a":return _(c,l,!0);case"A":return _(c,l,!1);case"m":return String(l);case"mm":return u.s(l,2,"0");case"s":return String(s.$s);case"ss":return u.s(s.$s,2,"0");case"SSS":return u.s(s.$ms,3,"0");case"Z":return a}return null}(v)||a.replace(":","")})},i.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},i.diff=function(t,s,e){var o,a=this,c=u.p(s),l=g(t),$=(l.utcOffset()-this.utcOffset())*D,p=this-l,L=function(){return u.m(a,l)};switch(c){case S:o=L()/12;break;case b:o=L();break;case E:o=L()/3;break;case f:o=(p-$)/6048e5;break;case y:o=(p-$)/864e5;break;case M:o=p/n;break;case m:o=p/D;break;case d:o=p/w;break;default:o=p}return e?o:u.a(o)},i.daysInMonth=function(){return this.endOf(b).$D},i.$locale=function(){return T[this.$L]},i.locale=function(t,s){if(!t)return this.$L;var e=this.clone(),o=C(t,s,!0);return o&&(e.$L=o),e},i.clone=function(){return u.w(this.$d,this)},i.toDate=function(){return new Date(this.valueOf())},i.toJSON=function(){return this.isValid()?this.toISOString():null},i.toISOString=function(){return this.$d.toISOString()},i.toString=function(){return this.$d.toUTCString()},r}(),B=V.prototype;return g.prototype=B,[["$ms",h],["$s",d],["$m",m],["$H",M],["$W",y],["$M",b],["$y",S],["$D",x]].forEach(function(r){B[r[1]]=function(i){return this.$g(i,r[0],r[1])}}),g.extend=function(r,i){return r.$i||(r(i,V,g),r.$i=!0),g},g.locale=C,g.isDayjs=U,g.unix=function(r){return g(1e3*r)},g.en=T[A],g.Ls=T,g.p={},g})});var q=ct(st(),1);var vt=(()=>{class w{$api=Y(it);$title=Y(X);$toastr=Y(et);$translate=Y(tt);settingsLoadedSubject=new Q;defaultTheme="deep-purple";forbiddenKeys=["__proto__","constructor","prototype"];env={};formAuth=!0;sessionTimeout=28800;uiVersion;theme;lightingMode;currentLightingMode;actualLightingMode;browserLightingMode;menuMode;keepOrphans;wallpaper;serverTimeOffset=0;rtl=!1;onSettingsLoaded=this.settingsLoadedSubject.pipe(G());settingsLoaded=!1;themeList=["orange","red","pink","purple","deep-purple","indigo","blue","blue-grey","cyan","green","teal","grey","brown"];constructor(){this.getAppSettings()}getAppSettings(){return P(this,null,function*(){let n=yield N(this.$api.get("/auth/settings"));this.formAuth=n.formAuth,this.sessionTimeout=n.sessionTimeout,this.env=n.env,this.lightingMode=n.lightingMode,this.wallpaper=n.wallpaper,this.setLightingMode(this.lightingMode,"user"),this.setTheme(n.theme),this.setMenuMode(n.menuMode),this.setKeepOrphans(n.keepOrphans),this.setTitle(this.env.homebridgeInstanceName),this.checkServerTime(n.serverTimestamp),this.setUiVersion(n.env.packageVersion),this.setLang(this.env.lang),this.settingsLoaded=!0,this.settingsLoadedSubject.next(void 0)})}setBrowserLightingMode(n){this.browserLightingMode=n,this.lightingMode==="auto"&&this.setLightingMode(n,"browser")}setLightingMode(n,h){h==="user"&&(this.lightingMode=n),this.currentLightingMode=n,this.actualLightingMode=this.currentLightingMode==="auto"?this.browserLightingMode:this.currentLightingMode,this.theme&&this.setTheme(this.theme)}setTheme(n){(!n||!this.themeList.includes(n))&&(n=this.defaultTheme,N(this.$api.put("/config-editor/ui",{key:"theme",value:n})).catch(m=>console.error("Error saving setTheme:",m)));let h=window.document.querySelector("body");h.classList.remove(`config-ui-x-${this.theme}`),h.classList.remove(`config-ui-x-dark-mode-${this.theme}`),this.theme=n,this.actualLightingMode==="dark"?(h.classList.add(`config-ui-x-dark-mode-${this.theme}`),h.classList.contains("dark-mode")||h.classList.add("dark-mode")):(h.classList.add(`config-ui-x-${this.theme}`),h.classList.contains("dark-mode")&&h.classList.remove("dark-mode")),window.document.querySelectorAll("iframe").forEach((m,M)=>{try{let y=m.contentDocument;if(y){let f=y.body;this.actualLightingMode==="dark"?(f.classList.contains(`config-ui-x-${this.theme}`)&&f.classList.remove(`config-ui-x-${this.theme}`),f.classList.contains(`config-ui-x-dark-mode-${this.theme}`)||f.classList.add(`config-ui-x-dark-mode-${this.theme}`),f.classList.contains("dark-mode")||f.classList.add("dark-mode"),f.style.backgroundColor="#242424 !important",f.style.color="#ffffff !important"):(f.classList.contains(`config-ui-x-${this.theme}`)||f.classList.add(`config-ui-x-${this.theme}`),f.classList.contains(`config-ui-x-dark-mode-${this.theme}`)&&f.classList.remove(`config-ui-x-dark-mode-${this.theme}`),f.classList.contains("dark-mode")&&f.classList.remove("dark-mode"),f.style.backgroundColor="#ffffff !important",f.style.color="#000000 !important"),m.contentWindow.postMessage({type:"theme-update",isDark:this.actualLightingMode==="dark",theme:n},window.location.origin)}}catch(y){console.warn(`Iframe ${M}: Access denied (cross-origin?)`,{error:y,src:m.src})}})}setMenuMode(n){this.menuMode=n}setKeepOrphans(n){this.keepOrphans=n}setLang(n){n?this.$translate.use(n):n="auto",this.env.lang=n}setItem(n,h){this[n]=h}setEnvItem(n,h){if(n.includes(".")){let d=n.split("."),m=this.env;for(let M=0;M<d.length-1;M++){if(this.forbiddenKeys.includes(d[M]))return;m[d[M]]||(m[d[M]]={}),m=m[d[M]]}this.forbiddenKeys.includes(d[d.length-1])||(m[d[d.length-1]]=h)}else this.env[n]=h}checkServerTime(n){let d=(0,q.default)(n).diff((0,q.default)(),"hour");this.serverTimeOffset=d*60*60,(d>=8||d<=-8)&&this.$toastr.warning(this.$translate.instant("settings.datetime.incorrect"),this.$translate.instant("toast.title_warning"),{timeOut:2e4,tapToDismiss:!1}).onTap.subscribe(()=>{window.open("https://homebridge.io/w/JqTFs","_blank")})}setUiVersion(n){this.uiVersion||(this.uiVersion=n)}setTitle(n){this.$title.setTitle(n||"Homebridge")}static \u0275fac=function(h){return new(h||w)};static \u0275prov=R({token:w,factory:w.\u0275fac,providedIn:"root"})}return w})();export{st as a,vt as b};
1
+ import{k as et,n as it}from"./chunk-YASHUVE3.js";import{a as tt}from"./chunk-FYDO54CR.js";import{m as X}from"./chunk-KLQ6BEKS.js";import{T as G,e as ut,g as ct,ga as R,h as P,la as Y,n as Q,w as N}from"./chunk-645YHJEQ.js";var st=ut((J,K)=>{(function(w,D){typeof J=="object"&&typeof K<"u"?K.exports=D():typeof define=="function"&&define.amd?define(D):(w=typeof globalThis<"u"?globalThis:w||self).dayjs=D()})(J,function(){"use strict";var w=1e3,D=6e4,n=36e5,h="millisecond",d="second",m="minute",M="hour",y="day",f="week",b="month",E="quarter",S="year",x="date",Z="Invalid Date",nt=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,rt=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,ot={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(r){var i=["th","st","nd","rd"],t=r%100;return"["+r+(i[(t-20)%10]||i[t]||i[0])+"]"}},F=function(r,i,t){var s=String(r);return!s||s.length>=i?r:""+Array(i+1-s.length).join(t)+r},at={s:F,z:function(r){var i=-r.utcOffset(),t=Math.abs(i),s=Math.floor(t/60),e=t%60;return(i<=0?"+":"-")+F(s,2,"0")+":"+F(e,2,"0")},m:function r(i,t){if(i.date()<t.date())return-r(t,i);var s=12*(t.year()-i.year())+(t.month()-i.month()),e=i.clone().add(s,b),o=t-e<0,a=i.clone().add(s+(o?-1:1),b);return+(-(s+(t-e)/(o?e-a:a-e))||0)},a:function(r){return r<0?Math.ceil(r)||0:Math.floor(r)},p:function(r){return{M:b,y:S,w:f,d:y,D:x,h:M,m,s:d,ms:h,Q:E}[r]||String(r||"").toLowerCase().replace(/s$/,"")},u:function(r){return r===void 0}},A="en",T={};T[A]=ot;var z="$isDayjsObject",U=function(r){return r instanceof V||!(!r||!r[z])},C=function r(i,t,s){var e;if(!i)return A;if(typeof i=="string"){var o=i.toLowerCase();T[o]&&(e=o),t&&(T[o]=t,e=o);var a=i.split("-");if(!e&&a.length>1)return r(a[0])}else{var c=i.name;T[c]=i,e=c}return!s&&e&&(A=e),e||!s&&A},g=function(r,i){if(U(r))return r.clone();var t=typeof i=="object"?i:{};return t.date=r,t.args=arguments,new V(t)},u=at;u.l=C,u.i=U,u.w=function(r,i){return g(r,{locale:i.$L,utc:i.$u,x:i.$x,$offset:i.$offset})};var V=function(){function r(t){this.$L=C(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[z]=!0}var i=r.prototype;return i.parse=function(t){this.$d=function(s){var e=s.date,o=s.utc;if(e===null)return new Date(NaN);if(u.u(e))return new Date;if(e instanceof Date)return new Date(e);if(typeof e=="string"&&!/Z$/i.test(e)){var a=e.match(nt);if(a){var c=a[2]-1||0,l=(a[7]||"0").substring(0,3);return o?new Date(Date.UTC(a[1],c,a[3]||1,a[4]||0,a[5]||0,a[6]||0,l)):new Date(a[1],c,a[3]||1,a[4]||0,a[5]||0,a[6]||0,l)}}return new Date(e)}(t),this.init()},i.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},i.$utils=function(){return u},i.isValid=function(){return this.$d.toString()!==Z},i.isSame=function(t,s){var e=g(t);return this.startOf(s)<=e&&e<=this.endOf(s)},i.isAfter=function(t,s){return g(t)<this.startOf(s)},i.isBefore=function(t,s){return this.endOf(s)<g(t)},i.$g=function(t,s,e){return u.u(t)?this[s]:this.set(e,t)},i.unix=function(){return Math.floor(this.valueOf()/1e3)},i.valueOf=function(){return this.$d.getTime()},i.startOf=function(t,s){var e=this,o=!!u.u(s)||s,a=u.p(t),c=function(_,v){var k=u.w(e.$u?Date.UTC(e.$y,v,_):new Date(e.$y,v,_),e);return o?k:k.endOf(y)},l=function(_,v){return u.w(e.toDate()[_].apply(e.toDate("s"),(o?[0,0,0,0]:[23,59,59,999]).slice(v)),e)},$=this.$W,p=this.$M,L=this.$D,j="set"+(this.$u?"UTC":"");switch(a){case S:return o?c(1,0):c(31,11);case b:return o?c(1,p):c(0,p+1);case f:var O=this.$locale().weekStart||0,H=($<O?$+7:$)-O;return c(o?L-H:L+(6-H),p);case y:case x:return l(j+"Hours",0);case M:return l(j+"Minutes",1);case m:return l(j+"Seconds",2);case d:return l(j+"Milliseconds",3);default:return this.clone()}},i.endOf=function(t){return this.startOf(t,!1)},i.$set=function(t,s){var e,o=u.p(t),a="set"+(this.$u?"UTC":""),c=(e={},e[y]=a+"Date",e[x]=a+"Date",e[b]=a+"Month",e[S]=a+"FullYear",e[M]=a+"Hours",e[m]=a+"Minutes",e[d]=a+"Seconds",e[h]=a+"Milliseconds",e)[o],l=o===y?this.$D+(s-this.$W):s;if(o===b||o===S){var $=this.clone().set(x,1);$.$d[c](l),$.init(),this.$d=$.set(x,Math.min(this.$D,$.daysInMonth())).$d}else c&&this.$d[c](l);return this.init(),this},i.set=function(t,s){return this.clone().$set(t,s)},i.get=function(t){return this[u.p(t)]()},i.add=function(t,s){var e,o=this;t=Number(t);var a=u.p(s),c=function(p){var L=g(o);return u.w(L.date(L.date()+Math.round(p*t)),o)};if(a===b)return this.set(b,this.$M+t);if(a===S)return this.set(S,this.$y+t);if(a===y)return c(1);if(a===f)return c(7);var l=(e={},e[m]=D,e[M]=n,e[d]=w,e)[a]||1,$=this.$d.getTime()+t*l;return u.w($,this)},i.subtract=function(t,s){return this.add(-1*t,s)},i.format=function(t){var s=this,e=this.$locale();if(!this.isValid())return e.invalidDate||Z;var o=t||"YYYY-MM-DDTHH:mm:ssZ",a=u.z(this),c=this.$H,l=this.$m,$=this.$M,p=e.weekdays,L=e.months,j=e.meridiem,O=function(v,k,I,W){return v&&(v[k]||v(s,o))||I[k].slice(0,W)},H=function(v){return u.s(c%12||12,v,"0")},_=j||function(v,k,I){var W=v<12?"AM":"PM";return I?W.toLowerCase():W};return o.replace(rt,function(v,k){return k||function(I){switch(I){case"YY":return String(s.$y).slice(-2);case"YYYY":return u.s(s.$y,4,"0");case"M":return $+1;case"MM":return u.s($+1,2,"0");case"MMM":return O(e.monthsShort,$,L,3);case"MMMM":return O(L,$);case"D":return s.$D;case"DD":return u.s(s.$D,2,"0");case"d":return String(s.$W);case"dd":return O(e.weekdaysMin,s.$W,p,2);case"ddd":return O(e.weekdaysShort,s.$W,p,3);case"dddd":return p[s.$W];case"H":return String(c);case"HH":return u.s(c,2,"0");case"h":return H(1);case"hh":return H(2);case"a":return _(c,l,!0);case"A":return _(c,l,!1);case"m":return String(l);case"mm":return u.s(l,2,"0");case"s":return String(s.$s);case"ss":return u.s(s.$s,2,"0");case"SSS":return u.s(s.$ms,3,"0");case"Z":return a}return null}(v)||a.replace(":","")})},i.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},i.diff=function(t,s,e){var o,a=this,c=u.p(s),l=g(t),$=(l.utcOffset()-this.utcOffset())*D,p=this-l,L=function(){return u.m(a,l)};switch(c){case S:o=L()/12;break;case b:o=L();break;case E:o=L()/3;break;case f:o=(p-$)/6048e5;break;case y:o=(p-$)/864e5;break;case M:o=p/n;break;case m:o=p/D;break;case d:o=p/w;break;default:o=p}return e?o:u.a(o)},i.daysInMonth=function(){return this.endOf(b).$D},i.$locale=function(){return T[this.$L]},i.locale=function(t,s){if(!t)return this.$L;var e=this.clone(),o=C(t,s,!0);return o&&(e.$L=o),e},i.clone=function(){return u.w(this.$d,this)},i.toDate=function(){return new Date(this.valueOf())},i.toJSON=function(){return this.isValid()?this.toISOString():null},i.toISOString=function(){return this.$d.toISOString()},i.toString=function(){return this.$d.toUTCString()},r}(),B=V.prototype;return g.prototype=B,[["$ms",h],["$s",d],["$m",m],["$H",M],["$W",y],["$M",b],["$y",S],["$D",x]].forEach(function(r){B[r[1]]=function(i){return this.$g(i,r[0],r[1])}}),g.extend=function(r,i){return r.$i||(r(i,V,g),r.$i=!0),g},g.locale=C,g.isDayjs=U,g.unix=function(r){return g(1e3*r)},g.en=T[A],g.Ls=T,g.p={},g})});var q=ct(st(),1);var vt=(()=>{class w{$api=Y(it);$title=Y(X);$toastr=Y(et);$translate=Y(tt);settingsLoadedSubject=new Q;defaultTheme="deep-purple";forbiddenKeys=["__proto__","constructor","prototype"];env={};formAuth=!0;sessionTimeout=28800;uiVersion;theme;lightingMode;currentLightingMode;actualLightingMode;browserLightingMode;menuMode;keepOrphans;wallpaper;serverTimeOffset=0;rtl=!1;onSettingsLoaded=this.settingsLoadedSubject.pipe(G());settingsLoaded=!1;themeList=["orange","red","pink","purple","deep-purple","indigo","blue","blue-grey","cyan","green","teal","grey","brown"];constructor(){this.getAppSettings()}getAppSettings(){return P(this,null,function*(){let n=yield N(this.$api.get("/auth/settings"));this.formAuth=n.formAuth,this.sessionTimeout=n.sessionTimeout,this.env=n.env,this.lightingMode=n.lightingMode,this.wallpaper=n.wallpaper,this.setLightingMode(this.lightingMode,"user"),this.setTheme(n.theme),this.setMenuMode(n.menuMode),this.setKeepOrphans(n.keepOrphans),this.setTitle(this.env.homebridgeInstanceName),this.checkServerTime(n.serverTimestamp),this.setUiVersion(n.env.packageVersion),this.setLang(this.env.lang),this.settingsLoaded=!0,this.settingsLoadedSubject.next(void 0)})}setBrowserLightingMode(n){this.browserLightingMode=n,this.lightingMode==="auto"&&this.setLightingMode(n,"browser")}setLightingMode(n,h){h==="user"&&(this.lightingMode=n),this.currentLightingMode=n,this.actualLightingMode=this.currentLightingMode==="auto"?this.browserLightingMode:this.currentLightingMode,this.theme&&this.setTheme(this.theme)}setTheme(n){(!n||!this.themeList.includes(n))&&(n=this.defaultTheme,N(this.$api.put("/config-editor/ui",{key:"theme",value:n})).catch(m=>console.error("Error saving setTheme:",m)));let h=window.document.querySelector("body");h.classList.remove(`config-ui-x-${this.theme}`),h.classList.remove(`config-ui-x-dark-mode-${this.theme}`),this.theme=n,this.actualLightingMode==="dark"?(h.classList.add(`config-ui-x-dark-mode-${this.theme}`),h.classList.contains("dark-mode")||h.classList.add("dark-mode")):(h.classList.add(`config-ui-x-${this.theme}`),h.classList.contains("dark-mode")&&h.classList.remove("dark-mode")),window.document.querySelectorAll("iframe").forEach((m,M)=>{try{let y=m.contentDocument;if(y){let f=y.body;this.actualLightingMode==="dark"?(f.classList.contains(`config-ui-x-${this.theme}`)&&f.classList.remove(`config-ui-x-${this.theme}`),f.classList.contains(`config-ui-x-dark-mode-${this.theme}`)||f.classList.add(`config-ui-x-dark-mode-${this.theme}`),f.classList.contains("dark-mode")||f.classList.add("dark-mode"),f.style.backgroundColor="#242424 !important",f.style.color="#ffffff !important"):(f.classList.contains(`config-ui-x-${this.theme}`)||f.classList.add(`config-ui-x-${this.theme}`),f.classList.contains(`config-ui-x-dark-mode-${this.theme}`)&&f.classList.remove(`config-ui-x-dark-mode-${this.theme}`),f.classList.contains("dark-mode")&&f.classList.remove("dark-mode"),f.style.backgroundColor="#ffffff !important",f.style.color="#000000 !important"),m.contentWindow.postMessage({type:"theme-update",isDark:this.actualLightingMode==="dark",theme:n},window.location.origin)}}catch(y){console.warn(`Iframe ${M}: Access denied (cross-origin?)`,{error:y,src:m.src})}})}setMenuMode(n){this.menuMode=n}setKeepOrphans(n){this.keepOrphans=n}setLang(n){n?this.$translate.use(n):n="auto",this.env.lang=n}setItem(n,h){this[n]=h}setEnvItem(n,h){if(n.includes(".")){let d=n.split("."),m=this.env;for(let M=0;M<d.length-1;M++){if(this.forbiddenKeys.includes(d[M]))return;m[d[M]]||(m[d[M]]={}),m=m[d[M]]}this.forbiddenKeys.includes(d[d.length-1])||(m[d[d.length-1]]=h)}else this.env[n]=h}checkServerTime(n){let d=(0,q.default)(n).diff((0,q.default)(),"hour");this.serverTimeOffset=d*60*60,(d>=8||d<=-8)&&this.$toastr.warning(this.$translate.instant("settings.datetime.incorrect"),this.$translate.instant("toast.title_warning"),{timeOut:2e4,tapToDismiss:!1}).onTap.subscribe(()=>{window.open("https://homebridge.io/w/JqTFs","_blank")})}setUiVersion(n){this.uiVersion||(this.uiVersion=n)}setTitle(n){this.$title.setTitle(n||"Homebridge")}static \u0275fac=function(h){return new(h||w)};static \u0275prov=R({token:w,factory:w.\u0275fac,providedIn:"root"})}return w})();export{st as a,vt as b};