homebridge-config-ui-x 5.11.1-alpha.0 → 5.11.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/core/auth/auth.controller.d.ts +4 -0
- package/dist/core/config/config.interfaces.d.ts +14 -0
- package/dist/core/config/config.service.d.ts +6 -0
- package/dist/core/config/config.service.js +8 -0
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/core/config/config.startup.js +48 -17
- package/dist/core/config/config.startup.js.map +1 -1
- package/dist/core/feature-flags/feature-flags.registry.js +5 -0
- package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js +1 -0
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
- package/dist/core/spa/spa-html.service.d.ts +5 -0
- package/dist/core/spa/spa-html.service.js +32 -0
- package/dist/core/spa/spa-html.service.js.map +1 -0
- package/dist/core/spa/spa.filter.d.ts +3 -0
- package/dist/core/spa/spa.filter.js +22 -2
- package/dist/core/spa/spa.filter.js.map +1 -1
- package/dist/core/ssl/ssl-cert-generator.service.d.ts +15 -0
- package/dist/core/ssl/ssl-cert-generator.service.js +125 -0
- package/dist/core/ssl/ssl-cert-generator.service.js.map +1 -0
- package/dist/globalDefaults.js +3 -0
- package/dist/globalDefaults.js.map +1 -1
- package/dist/main.js +18 -4
- package/dist/main.js.map +1 -1
- package/dist/modules/accessories/accessories.controller.d.ts +1 -1
- package/dist/modules/accessories/accessories.interfaces.d.ts +94 -0
- package/dist/modules/accessories/accessories.interfaces.js +2 -0
- package/dist/modules/accessories/accessories.interfaces.js.map +1 -0
- package/dist/modules/accessories/accessories.module.js +2 -0
- package/dist/modules/accessories/accessories.module.js.map +1 -1
- package/dist/modules/accessories/accessories.service.d.ts +21 -3
- package/dist/modules/accessories/accessories.service.js +280 -17
- package/dist/modules/accessories/accessories.service.js.map +1 -1
- package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +9 -0
- package/dist/modules/config-editor/config-editor.controller.d.ts +4 -0
- package/dist/modules/config-editor/config-editor.controller.js +64 -0
- package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
- package/dist/modules/config-editor/config-editor.service.d.ts +6 -1
- package/dist/modules/config-editor/config-editor.service.js +45 -1
- package/dist/modules/config-editor/config-editor.service.js.map +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.js +15 -0
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/server/server.controller.d.ts +50 -0
- package/dist/modules/server/server.controller.js +201 -2
- package/dist/modules/server/server.controller.js.map +1 -1
- package/dist/modules/server/server.service.d.ts +48 -0
- package/dist/modules/server/server.service.js +502 -14
- package/dist/modules/server/server.service.js.map +1 -1
- package/dist/modules/status/status.gateway.d.ts +2 -0
- package/dist/modules/status/status.interfaces.d.ts +11 -0
- package/dist/modules/status/status.service.d.ts +4 -1
- package/dist/modules/status/status.service.js +21 -2
- package/dist/modules/status/status.service.js.map +1 -1
- package/docs/matter-todo.md +15 -0
- package/docs/ssl-upload-pr.md +103 -0
- package/package.json +3 -1
- package/public/3rdpartylicenses.txt +558 -636
- package/public/assets/matter.svg +8 -0
- package/public/assets/plugin-ui-utils/ui.js +3 -0
- package/public/assets/plugin-ui-utils/ui.js.map +1 -1
- package/public/chunk-22B4UCUR.js +19 -0
- package/public/chunk-2AZ4IAJX.js +1 -0
- package/public/chunk-2W47TKRP.js +8 -0
- package/public/chunk-32NSGOWJ.js +1 -0
- package/public/chunk-3AXKQX7N.js +1 -0
- package/public/chunk-3SLVSNU6.js +1 -0
- package/public/chunk-4FBWT2PG.js +1 -0
- package/public/chunk-4G547VQH.js +1 -0
- package/public/chunk-4KBAYZP7.js +1 -0
- package/public/{chunk-D45GQFBG.js → chunk-4O7BLLBH.js} +1 -1
- package/public/chunk-4X67MV5P.js +1 -0
- package/public/chunk-56AT4EBV.js +1 -0
- package/public/chunk-5INR7MRZ.js +1 -0
- package/public/chunk-5IRYX3WN.js +1 -0
- package/public/chunk-5N6BZ66K.js +1 -0
- package/public/chunk-5QXXJI43.js +5 -0
- package/public/chunk-5USVC2CC.js +3 -0
- package/public/chunk-5YRG477U.js +1 -0
- package/public/chunk-63DEF4BP.js +1 -0
- package/public/chunk-7D5NLF5A.js +1 -0
- package/public/chunk-AASDOQGB.js +1 -0
- package/public/chunk-AU6YJ4VB.js +1 -0
- package/public/chunk-B2R3BKIF.js +1 -0
- package/public/chunk-B4AJQJMI.js +1 -0
- package/public/chunk-BMH5GPEB.js +1 -0
- package/public/{chunk-KI6BE77G.js → chunk-BMOLDRJ3.js} +1 -1
- package/public/chunk-BOVXKVZC.js +1 -0
- package/public/chunk-C2W3HONU.js +1 -0
- package/public/chunk-CB6OGKHG.js +1 -0
- package/public/chunk-CBSLCVSR.js +1 -0
- package/public/chunk-CR6W3PUA.js +1 -0
- package/public/chunk-CYSSAU76.js +1 -0
- package/public/chunk-DGBI427A.js +1 -0
- package/public/chunk-E2INCMIB.js +1 -0
- package/public/chunk-EVNAB6KB.js +4 -0
- package/public/{chunk-75KR2TK6.js → chunk-FARCNAHH.js} +1 -1
- package/public/chunk-FIF6GB4H.js +1 -0
- package/public/chunk-FNIVJEH2.js +1 -0
- package/public/chunk-FW2NZE2W.js +1 -0
- package/public/chunk-FXM34P2Q.js +1 -0
- package/public/chunk-G4TMATE3.js +1 -0
- package/public/chunk-GARJCQR2.js +1 -0
- package/public/chunk-GHNACZX3.js +1 -0
- package/public/chunk-GIPFJVAC.js +1 -0
- package/public/chunk-GQMGUEFI.js +1 -0
- package/public/chunk-GRUJENQH.js +1 -0
- package/public/{chunk-OMFNURQZ.js → chunk-H7F7H5MW.js} +1 -1
- package/public/chunk-HGB7JMQB.js +1 -0
- package/public/chunk-HRBBCSGX.js +1 -0
- package/public/chunk-I7UZENUE.js +1 -0
- package/public/chunk-IUXXJEPG.js +1 -0
- package/public/chunk-JC74NWLG.js +1 -0
- package/public/chunk-JEWURKW3.js +1 -0
- package/public/chunk-JH5W4II7.js +1 -0
- package/public/chunk-JLNKCN3A.js +1 -0
- package/public/chunk-JTGLNZVD.js +1 -0
- package/public/chunk-KSP343GE.js +1 -0
- package/public/chunk-KTE7SASZ.js +1 -0
- package/public/chunk-L2BEQFIA.js +1 -0
- package/public/chunk-L6LSM43U.js +1 -0
- package/public/chunk-LPZZFOKR.js +4 -0
- package/public/chunk-LT4LVLTJ.js +5 -0
- package/public/chunk-M4OD2EYP.js +1 -0
- package/public/chunk-M5KMDWMD.js +1 -0
- package/public/chunk-M5U3WH6U.js +68 -0
- package/public/{chunk-BKCIVF4W.js → chunk-M72FKTRG.js} +52 -2
- package/public/chunk-MKCBNPFH.js +1 -0
- package/public/chunk-MKFXR7SP.js +1 -0
- package/public/chunk-MYJVEYXW.js +1 -0
- package/public/chunk-N2IMTG2V.js +1 -0
- package/public/chunk-NDBIOJ3K.js +1 -0
- package/public/chunk-NF7H6G7M.js +1 -0
- package/public/chunk-NMM246IB.js +1 -0
- package/public/chunk-NPWYNB2M.js +1 -0
- package/public/chunk-OB3JM574.js +1 -0
- package/public/chunk-OKQK5WGA.js +1 -0
- package/public/chunk-OYHGZQRR.js +1 -0
- package/public/chunk-P3D45344.js +50 -0
- package/public/chunk-P7RLJ6EQ.js +16 -0
- package/public/chunk-PXNJ4PSF.js +1 -0
- package/public/chunk-QB4JVFF7.js +1 -0
- package/public/chunk-QIW6VVBV.js +1 -0
- package/public/chunk-QOXXKL5T.js +2 -0
- package/public/chunk-QRWK7JO5.js +1 -0
- package/public/chunk-S52YHDRI.js +2 -0
- package/public/chunk-S6JEMYUK.js +3 -0
- package/public/chunk-SOEFKTV3.js +1 -0
- package/public/chunk-T5WI6HLG.js +1 -0
- package/public/chunk-TCWZ7ASJ.js +1 -0
- package/public/chunk-TNQQAZ6Z.js +1 -0
- package/public/chunk-TXOHSX6R.js +1 -0
- package/public/chunk-UQGRSMY3.js +1 -0
- package/public/chunk-UR2DRSIX.js +1 -0
- package/public/chunk-UR7BEPD4.js +1 -0
- package/public/chunk-UXXY7XNH.js +1 -0
- package/public/chunk-VHK6V2IY.js +1 -0
- package/public/chunk-VQBGFNDB.js +1 -0
- package/public/chunk-VVINUJOQ.js +1 -0
- package/public/chunk-W546I2QX.js +1 -0
- package/public/chunk-W6MP663P.js +1 -0
- package/public/chunk-WYJ4N4TV.js +12 -0
- package/public/chunk-X6NYM4NC.js +1 -0
- package/public/chunk-XEOYEVJE.js +1 -0
- package/public/chunk-XM3BXRQJ.js +1 -0
- package/public/chunk-YI2ZMXIQ.js +1 -0
- package/public/chunk-YJWJIJMQ.js +1 -0
- package/public/chunk-YZZ7SAON.js +2 -0
- package/public/chunk-ZCGZM7LU.js +1 -0
- package/public/chunk-ZI6P36I2.js +1 -0
- package/public/chunk-ZPXACREZ.js +4 -0
- package/public/index.html +2 -2
- package/public/main-QSNNOJ3S.js +1 -0
- package/public/media/matter-P563JGDL.svg +8 -0
- package/public/polyfills-34U4WL3Z.js +1 -0
- package/public/styles-CT2LPGES.css +1 -0
- package/scripts/extract-plugin-alias.js +53 -2
- package/public/chunk-2U3ZX56Q.js +0 -1
- package/public/chunk-3CM3XDPQ.js +0 -1
- package/public/chunk-3F6KNL45.js +0 -5
- package/public/chunk-3P6RREI4.js +0 -1
- package/public/chunk-3PJLBUU2.js +0 -1
- package/public/chunk-3SIF5F2G.js +0 -1
- package/public/chunk-4HF52WDQ.js +0 -1
- package/public/chunk-4SAAAOZB.js +0 -1
- package/public/chunk-5GRM2PNI.js +0 -8
- package/public/chunk-5JMMHHQ4.js +0 -1
- package/public/chunk-5MK5YSCD.js +0 -1
- package/public/chunk-5PMRNANG.js +0 -1
- package/public/chunk-5YTRU6RQ.js +0 -1
- package/public/chunk-6FS45RJF.js +0 -1
- package/public/chunk-6PWSLLH6.js +0 -1
- package/public/chunk-7QISFIID.js +0 -1
- package/public/chunk-ADWZU2CD.js +0 -1
- package/public/chunk-AUHK5WFX.js +0 -1
- package/public/chunk-AXWMABDM.js +0 -40
- package/public/chunk-B6MBMYJR.js +0 -1
- package/public/chunk-BH6YBZOU.js +0 -1
- package/public/chunk-BON2K2BD.js +0 -2
- package/public/chunk-EGNFFHE7.js +0 -1
- package/public/chunk-GP2ASPZU.js +0 -1
- package/public/chunk-H64DOH56.js +0 -1
- package/public/chunk-HH6YV2XU.js +0 -1
- package/public/chunk-HTDB22LR.js +0 -2
- package/public/chunk-IXN6AYE5.js +0 -1
- package/public/chunk-KIOAN3LM.js +0 -4
- package/public/chunk-LHF3YGLL.js +0 -1
- package/public/chunk-LOQL4YVB.js +0 -1
- package/public/chunk-MMBLECEN.js +0 -1
- package/public/chunk-MQQHVT3V.js +0 -1
- package/public/chunk-OOM2PIRM.js +0 -5
- package/public/chunk-PAD4AX4G.js +0 -4
- package/public/chunk-PHFSLDY3.js +0 -1
- package/public/chunk-PMIQFJLC.js +0 -1
- package/public/chunk-QPHMQATT.js +0 -1
- package/public/chunk-QXD4RXA4.js +0 -1
- package/public/chunk-R7Q4CXAE.js +0 -1
- package/public/chunk-RE46WEVT.js +0 -1
- package/public/chunk-RRJ62AON.js +0 -3
- package/public/chunk-SSVAMLWB.js +0 -1
- package/public/chunk-SUH5GCZJ.js +0 -1
- package/public/chunk-SVXBDATZ.js +0 -1
- package/public/chunk-SZV6CIHF.js +0 -1
- package/public/chunk-TKKGKRSM.js +0 -4
- package/public/chunk-TKONSQP6.js +0 -1
- package/public/chunk-TVL4RPK3.js +0 -19
- package/public/chunk-ULW7LKB3.js +0 -1
- package/public/chunk-VOVDHI44.js +0 -50
- package/public/chunk-WBESNOOP.js +0 -5
- package/public/chunk-WL4BMOS6.js +0 -1
- package/public/chunk-X7UED2CV.js +0 -1
- package/public/chunk-XDFBUXFD.js +0 -1
- package/public/chunk-XOKMBJCO.js +0 -1
- package/public/chunk-XSYYB5FZ.js +0 -16
- package/public/chunk-XX3HQR2J.js +0 -1
- package/public/chunk-XYQLLAXO.js +0 -1
- package/public/chunk-Y6UHTWO3.js +0 -1
- package/public/chunk-YGDUU36N.js +0 -1
- package/public/chunk-ZNGQNTVX.js +0 -8
- package/public/chunk-ZXUIFQS4.js +0 -51
- package/public/main-YQLARDEU.js +0 -1
- package/public/polyfills-5KWHJ7II.js +0 -2
- package/public/styles-7EFV5QBG.css +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg height="512px" width="512px" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g transform="translate(256, 280) scale(1.37) translate(-256, -256)">
|
|
3
|
+
<path
|
|
4
|
+
fill="currentColor"
|
|
5
|
+
d="M256 212.26666666666665c-21.333333333333332 0 -41.421866666666666 -3.8218666666666667 -60.266666666666666 -11.466666666666665 -18.8448 -7.6448 -35.733333333333334 -18.0448 -50.666666666666664 -31.199999999999996l29.333333333333332 -17.599999999999998c8.533333333333333 6.3999999999999995 18.311466666666664 12 29.333333333333332 16.799999999999997 11.021866666666668 4.8 23.111466666666665 8.266666666666666 36.266666666666666 10.399999999999999V62.93333333333334L256 53.33333333333333l16 9.6v116.26666666666667c12.799999999999999 -2.1333333333333333 24.8 -5.6 36 -10.399999999999999 11.2 -4.8 21.066666666666666 -10.399999999999999 29.599999999999998 -16.799999999999997l29.333333333333332 17.599999999999998c-14.933333333333332 13.1552 -31.821866666666665 23.5552 -50.666666666666664 31.199999999999996C297.42186666666663 208.4448 277.3333333333333 212.26666666666665 256 212.26666666666665Zm-35.199999999999996 211.73333333333335 -29.866666666666664 -16c0.3552 -2.8447999999999998 0.6218666666666666 -5.511466666666667 0.7999999999999999 -8 0.1781333333333333 -2.4885333333333333 0.26666666666666666 -5.1552 0.26666666666666666 -8 0 -8.533333333333333 -0.9781333333333333 -17.511466666666664 -2.9333333333333336 -26.93333333333333 -1.9551999999999998 -9.421866666666666 -4.7114666666666665 -18.7552 -8.266666666666666 -28l-100.26666666666667 60.8L64 388.8V370.1333333333333l99.73333333333332 -60.266666666666666c-8.178133333333333 -9.6 -17.1552 -18.0448 -26.93333333333333 -25.333333333333332 -9.778133333333333 -7.2885333333333335 -19.821866666666665 -12.888533333333331 -30.133333333333333 -16.799999999999997v-34.13333333333333c34.13333333333333 10.311466666666666 62.22186666666667 29.955199999999998 84.26666666666667 58.93333333333334 22.0448 28.978133333333332 33.06666666666666 62.13333333333333 33.06666666666666 99.46666666666665 0 5.688533333333333 -0.26666666666666666 11.2 -0.7999999999999999 16.53333333333333 -0.5333333333333333 5.333333333333333 -1.3333333333333333 10.488533333333333 -2.4 15.466666666666665Zm70.39999999999999 0c-1.0666666666666667 -4.978133333333333 -1.8666666666666665 -10.133333333333333 -2.4 -15.466666666666665 -0.5333333333333333 -5.333333333333333 -0.7999999999999999 -10.8448 -0.7999999999999999 -16.53333333333333 0 -37.33333333333333 11.021866666666668 -70.48853333333332 33.06666666666666 -99.46666666666665 22.0448 -28.978133333333332 50.13333333333333 -48.62186666666666 84.26666666666667 -58.93333333333334v34.13333333333333c-10.311466666666666 3.9114666666666666 -20.3552 9.511466666666667 -30.133333333333333 16.799999999999997 -9.778133333333333 7.2885333333333335 -18.7552 15.733333333333334 -26.93333333333333 25.333333333333332L448 370.1333333333333v18.666666666666664l-16.53333333333333 9.066666666666666 -100.26666666666667 -60.8c-3.5551999999999997 9.2448 -6.311466666666666 18.578133333333334 -8.266666666666666 28 -1.9551999999999998 9.421866666666666 -2.9333333333333336 18.4 -2.9333333333333336 26.93333333333333 0 2.8447999999999998 0.08853333333333332 5.511466666666667 0.26666666666666666 8 0.1781333333333333 2.4885333333333333 0.4448 5.1552 0.7999999999999999 8l-29.866666666666664 16Z"
|
|
6
|
+
/>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
|
@@ -210,6 +210,9 @@ class HomebridgePluginUi extends EventTargetConstructor {
|
|
|
210
210
|
async getCachedAccessories() {
|
|
211
211
|
return await this._requestResponse({ action: 'cachedAccessories.get' });
|
|
212
212
|
}
|
|
213
|
+
async getCachedMatterAccessories() {
|
|
214
|
+
return await this._requestResponse({ action: 'cachedMatterAccessories.get' });
|
|
215
|
+
}
|
|
213
216
|
async request(path, body) {
|
|
214
217
|
return await this._requestResponse({ action: 'request', path, body });
|
|
215
218
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import{a as _t,b as yt,c as Rt,d as vt}from"./chunk-P7RLJ6EQ.js";import{a as bt}from"./chunk-QRWK7JO5.js";import{a as jt}from"./chunk-H7F7H5MW.js";import{a as $t}from"./chunk-QIW6VVBV.js";import{b as B}from"./chunk-ZCGZM7LU.js";import{a as wt,b as Ct}from"./chunk-QOXXKL5T.js";import{m as ht,n as ut,t as U}from"./chunk-LT4LVLTJ.js";import{c as lt,e as I}from"./chunk-DGBI427A.js";import"./chunk-JLNKCN3A.js";import{C as mt,D as ft,c as ct,e as pt,l as gt}from"./chunk-N2IMTG2V.js";import{b as dt}from"./chunk-PXNJ4PSF.js";import{E as H,F as O,H as N,K as F,j as at}from"./chunk-YZZ7SAON.js";import{Ab as x,Cb as nt,Db as st,Eb as ot,Ec as r,Fb as u,Fc as l,Gb as a,Gc as Y,Hb as d,Ib as g,Oc as Q,Rb as S,Xb as b,Za as o,Zb as p,aa as m,ga as f,ha as h,hb as it,ic as rt,jc as K,kc as y,lc as E,mc as V,nb as R,sa as T,yb as v,zb as k,zc as G}from"./chunk-ZPXACREZ.js";import{a as j,b as W,d as tt,g as et,h as C}from"./chunk-B4AJQJMI.js";var Et=et(Rt(),1);var kt=et(jt(),1);var xt=(s,w)=>({"fa-trash":s,"fa-cog fa-spin":w});function It(s,w){s&1&&(a(0,"div",13),g(1,"i",20),d())}function Ht(s,w){if(s&1){let t=S();a(0,"li",9)(1,"span"),y(2),r(3,"date"),g(4,"br"),a(5,"span",21),y(6),r(7,"date"),d()(),a(8,"span",22)(9,"button",25),r(10,"translate"),r(11,"translate"),b("click",function(){let i=f(t).$implicit,n=p(2);return h(n.restore(i.id))}),g(12,"i",26),d(),a(13,"button",27),r(14,"translate"),r(15,"translate"),b("click",function(){let i=f(t).$implicit,n=p(2);return h(n.download(i.id))}),g(16,"i",28),d(),a(17,"button",23),r(18,"translate"),r(19,"translate"),b("click",function(){let i=f(t).$implicit,n=p(2);return h(n.delete(i.id))}),g(20,"i",24),d()()()}if(s&2){let t=w.$implicit,e=p(2);o(2),V(" ",Y(3,16,t.timestamp,"mediumDate")),o(4),E(Y(7,19,t.timestamp,"shortTime")),o(3),u("disabled",e.clicked||e.deleting)("ngbTooltip",l(10,22,"config.restore.copy_to_editor"))("openDelay",150),v("aria-label",l(11,24,"config.restore.copy_to_editor")),o(4),u("disabled",e.clicked||e.deleting)("ngbTooltip",l(14,26,"form.button_download"))("openDelay",150),v("aria-label",l(15,28,"form.button_download")),o(4),u("disabled",e.clicked||e.deleting)("ngbTooltip",l(18,30,"form.button_delete"))("openDelay",150),v("aria-label",l(19,32,"form.button_delete")),o(3),K(G(34,xt,t.id!==e.deleting,t.id===e.deleting))}}function Ot(s,w){if(s&1){let t=S();a(0,"ul",14),st(1,Ht,21,37,"li",9,nt),a(3,"li",9)(4,"span"),y(5),r(6,"translate"),g(7,"br"),a(8,"span",21),y(9),r(10,"translate"),d()(),a(11,"span",22)(12,"button",23),r(13,"translate"),r(14,"translate"),b("click",function(){f(t);let i=p();return h(i.deleteAllBackups())}),g(15,"i",24),d()()()()}if(s&2){let t=p();o(),ot(t.backupList),o(4),V(" ",l(6,8,"form.button_delete_all")),o(4),E(l(10,10,"common.labels.no_confirmation")),o(3),u("disabled",t.clicked||t.deleting)("ngbTooltip",l(13,12,"form.button_delete_all"))("openDelay",150),v("aria-label",l(14,14,"form.button_delete")),o(3),K(G(16,xt,t.deleting!=="all",t.deleting==="all"))}}var St=(()=>{class s{$activeModal=m(ht);$api=m(F);$router=m(I);$toastr=m(N);$translate=m(H);currentConfig=Q.required({});fromSettings=Q(!1,{});loading=!0;backupList=[];clicked=!1;deleting=null;ngOnInit(){this.getConfigBackups()}getConfigBackups(){return C(this,null,function*(){try{let t=yield this.$api.get("/config-editor/backups");this.loading=!1,this.backupList=t}catch(t){this.loading=!1,console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(t){return this.$activeModal.close(t)}download(t){return C(this,null,function*(){this.clicked=!0;try{let e=yield this.$api.get(`/config-editor/backups/${t}`),i=JSON.stringify(e,null,4),n=new Blob([i],{type:"application/json"}),$=`config-backup-${t}.json`;(0,kt.saveAs)(n,$),this.clicked=!1}catch(e){this.clicked=!1,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}downloadCurrentConfig(){let t=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig())}`,e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download","config.json"),document.body.appendChild(e),e.click(),e.remove()}delete(t){return C(this,null,function*(){this.deleting=t;try{yield this.$api.delete(`/config-editor/backups/${t}`),yield this.getConfigBackups(),this.deleting=null}catch(e){this.deleting=null,this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}deleteAllBackups(){return C(this,null,function*(){this.deleting="all";try{yield this.$api.delete("/config-editor/backups"),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success")),this.backupList=[],this.deleting=null}catch(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t),this.deleting=null}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=R({type:s,selectors:[["ng-component"]],inputs:{currentConfig:[1,"currentConfig"],fromSettings:[1,"fromSettings"]},decls:40,vars:31,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-history","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled"],[1,"fas","fa-arrow-right"],[1,"text-center","primary-text"],[1,"list-group","list-group-box","mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-end"],[1,"fa","fa-cog","fa-spin","mt-3",2,"font-size","75px"],[1,"grey-text","small"],[2,"display","flex","flex-wrap","nowrap"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-download"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),y(3),r(4,"translate"),d(),a(5,"button",3),r(6,"translate"),b("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),g(9,"i",6),d(),a(10,"ul",7)(11,"li"),y(12),r(13,"translate"),d(),a(14,"li"),y(15),r(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),y(21),r(22,"translate"),d(),g(23,"br"),a(24,"small",10),y(25),r(26,"translate"),d()(),a(27,"button",11),r(28,"translate"),b("click",function(){return i.downloadCurrentConfig()}),g(29,"i",12),d()()(),k(30,It,2,0,"div",13)(31,Ot,16,19,"ul",14),d(),a(32,"div",15),g(33,"div",16),a(34,"div",17)(35,"button",18),r(36,"translate"),b("click",function(){return i.dismissModal()}),y(37),r(38,"translate"),d()(),g(39,"div",19),d()()),e&2&&(o(3),E(l(4,13,"config.restore.title")),o(2),u("disabled",i.clicked||i.deleting),v("aria-label",l(6,15,"form.button_close")),o(7),E(l(13,17,"config.restore.help_1")),o(3),E(l(16,19,"config.restore.help_2")),o(6),E(l(22,21,"form.button_download")),o(4),E(l(26,23,"config.restore.download")),o(2),u("disabled",i.clicked||i.deleting),v("aria-label",l(28,25,"backup.backup_now")),o(3),x(i.loading?30:i.backupList.length?31:-1),o(5),u("disabled",i.clicked||i.deleting),v("aria-label",l(36,27,"form.button_close")),o(2),V(" ",l(38,29,"form.button_close")," "))},dependencies:[U,ft,at,O],encapsulation:2})}return s})();function Nt(s,w){if(s&1){let t=S();a(0,"button",13),r(1,"translate"),r(2,"translate"),b("click",function(){f(t);let i=p();return h(i.onCancelRestore())}),g(3,"i",14),d()}if(s&2){let t=p();u("disabled",t.saveInProgress())("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),v("aria-label",l(2,6,"form.button_cancel"))}}function Ft(s,w){if(s&1){let t=S();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){f(t);let i=p();return h(i.onRestore())}),g(3,"i",16),d()}s&2&&(u("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),v("aria-label",l(2,5,"form.button_restore")))}function Ut(s,w){if(s&1){let t=S();a(0,"button",15),r(1,"translate"),r(2,"translate"),b("click",function(){f(t);let i=p();return h(i.toggleSideBySide())}),g(3,"i",17),d()}if(s&2){let t=p();u("openDelay",150)("ngbTooltip",l(1,7,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),v("aria-label",l(2,9,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),o(3),rt("fa-columns",!t.renderSideBySide())("fa-bars",t.renderSideBySide())}}function qt(s,w){s&1&&g(0,"i",8)}function zt(s,w){s&1&&g(0,"i",9)}function Jt(s,w){if(s&1){let t=S();a(0,"ngx-monaco-editor",18),b("onInit",function(i){f(t);let n=p();return h(n.onEditorInit(i))})("keydown.control.s",function(i){f(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){f(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();u("options",t.editorOptions)("model",t.monacoEditorModel)}}function Lt(s,w){if(s&1){let t=S();a(0,"ngx-monaco-diff-editor",19),b("onInit",function(i){f(t);let n=p();return h(n.onInitDiffEditor(i))})("keydown.control.s",function(i){f(t);let n=p();return i.preventDefault(),h(n.onSave())})("keydown.meta.s",function(i){f(t);let n=p();return i.preventDefault(),h(n.onSave())}),d()}if(s&2){let t=p();u("options",t.editorOptions)("originalModel",t.diffOriginalModel)("modifiedModel",t.diffModifiedModel)}}function Wt(s,w){if(s&1){let t=S();a(0,"textarea",20),b("ngModelChange",function(i){f(t);let n=p();return h(n.homebridgeConfig.set(i))}),y(1," "),d()}if(s&2){let t=p();u("ngModel",t.homebridgeConfig())}}var ke=(()=>{class s{$api=m(F);$md=m(bt);$modal=m(ut);$monacoEditor=m($t);$renderer=m(it);$route=m(lt);$router=m(I);$settings=m(dt);$toastr=m(N);$translate=m(H);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");homebridgeConfig=T("",{});originalConfig=T("",{});saveInProgress=T(!1,{});isMobile=T(!1,{});monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=T(!1,{});constructor(){this.isMobile.set(this.$md.detect.mobile())}ngOnInit(){let t=this.$translate.instant("menu.config_json_editor");this.$settings.setPageTitle(t),this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide(),renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(n=>{this.homebridgeConfig.set(n.config),this.latestSavedConfig=JSON.parse(n.config),this.diffModifiedModel&&this.updateDiffModels()}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},this.diffOriginalModel={code:"",language:"json"},this.diffModifiedModel={code:this.homebridgeConfig()||"{}",language:"json"},window.monaco?this.setMonacoEditorModel():this.$monacoEditor.readyEvent.toPromise().then(()=>this.setMonacoEditorModel()).catch(n=>{console.error("Failed to wait for monaco ready event:",n)});let{action:i}=this.$router.parseUrl(this.$router.url).queryParams;if(i){switch(i){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}onEditorInit(t){window.editor=t,this.monacoEditor=t,this.monacoEditor.getModel().setValue(this.homebridgeConfig())}onInitDiffEditor(t){this.monacoEditor=t.getModifiedEditor(),this.updateDiffModels(),window.editor=t}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig()||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig()||"{}"),window.editor&&window.editor.getOriginalEditor){let t=window.editor.getOriginalEditor(),e=window.editor.getModifiedEditor();if(t&&e){let i=t.getModel(),n=e.getModel();i&&i.setValue(this.originalConfig()||""),n&&n.setValue(this.homebridgeConfig()||"{}")}}}onSave(){return C(this,null,function*(){if(!this.saveInProgress()){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress.set(!0);try{if(!this.isMobile()){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let e=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of e)if(i.message==="Duplicate object key"){this.saveInProgress.set(!1),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig.set(this.monacoEditor.getModel().getValue())}let t=this.parseConfigFromEditor();this.homebridgeConfig.set(JSON.stringify(t,null,4)),typeof t.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(t.bridge.username)?t.accessories&&!Array.isArray(t.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&!Array.isArray(t.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&Array.isArray(t.platforms)&&!this.validateSection(t.platforms,"platform")||t.accessories&&Array.isArray(t.accessories)&&!this.validateSection(t.accessories,"accessory")||t.plugins&&Array.isArray(t.plugins)&&!this.validatePlugins(t.plugins,"plugins")||t.disabledPlugins&&Array.isArray(t.disabledPlugins)&&!this.validatePlugins(t.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(t),this.originalConfig.set("")):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress.set(!1)}})}onRestore(t=!1){let e=this.$modal.open(St,{size:"lg",backdrop:"static"});e.componentInstance.currentConfig=this.homebridgeConfig(),e.componentInstance.fromSettings=t,e.result.then(i=>C(this,null,function*(){try{this.originalConfig()||(this.originalConfig.set(this.homebridgeConfig()),this.updateDiffModels());let n=yield this.$api.get(`/config-editor/backups/${i}`);this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig.set(JSON.stringify(n,null,4)),this.updateDiffModels(),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig,forceMoveMarkers:!0}]))}catch(n){console.error(n),this.$toastr.error(n.error?.message||this.$translate.instant("backup.load_error"),this.$translate.instant("toast.title_error"))}})).catch(()=>{})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig.set(this.originalConfig()),this.originalConfig.set(""),this.renderSideBySide()&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide.set(!this.renderSideBySide),this.editorOptions=W(j({},this.editorOptions),{renderSideBySide:this.renderSideBySide()})}ngOnDestroy(){let t=document.querySelector(".content");this.$renderer.removeStyle(t,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove());try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let e=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),n=window.monaco.editor.getModel(e);n&&n.dispose();let $=window.monaco.editor.getModel(i);$&&$.dispose();let M=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(P=>P.uri!=="http://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:M})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(t,e){for(let i of t){if(typeof i!="object"||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(!i[e])return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1;if(typeof i[e]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(i),!1}return!0}validatePlugins(t,e){for(let i of t)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:e}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(t){this.monacoEditor&&(t=JSON.stringify(t,null,4).split(`
|
|
2
|
+
`).map(e=>` ${e}`).join(`
|
|
3
|
+
`),requestAnimationFrame(()=>{let e=this.monacoEditor.getModel().findMatches(t);if(e.length){let i=e[0].range,n=new monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:n,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}}))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.uri==="http://homebridge/config.json"))return;let t=monaco.Uri.parse("a://homebridge/config.json"),e=vt(this.$translate,{isDebugModeEnabled:this.isDebugModeEnabled,isMatterSupported:this.isMatterSupported});window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[t.toString()],schema:{type:"object",additionalProperties:!1,required:["bridge"],properties:{bridge:{type:"object",additionalProperties:!1,required:["name","username","port","pin"],properties:j({name:{type:"string",title:this.$translate.instant("settings.name"),description:`The Homebridge instance name.
|
|
4
|
+
This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",title:this.$translate.instant("users.label_username"),description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
|
|
5
|
+
You should change this pin if you need to re-pair your instance with HomeKit.
|
|
6
|
+
Example: 0E:89:49:64:91:86.`,default:"0E:89:49:64:91:86",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"},port:{type:"number",title:this.$translate.instant("settings.network.port_hb"),description:`The port Homebridge listens on.
|
|
7
|
+
If running more than one instance of Homebridge on the same server make sure each instance is given a unique port.`,default:51173,minimum:1025,maximum:65534},pin:{type:"string",description:`The Homebridge instance pin.
|
|
8
|
+
This is used when pairing Homebridge to HomeKit.
|
|
9
|
+
Example: 630-27-655.`,default:"630-27-655",pattern:"^([0-9]{3}-[0-9]{2}-[0-9]{3})$"},manufacturer:{type:"string",title:this.$translate.instant("child_bridge.config.manufacturer"),description:"The bridge manufacturer to be displayed in HomeKit."},firmwareRevision:{type:"string",title:this.$translate.instant("child_bridge.config.firmware"),description:"The bridge firmware version to be displayed in HomeKit."},model:{type:"string",title:this.$translate.instant("child_bridge.config.model"),description:"The bridge model to be displayed in HomeKit."},advertiser:{type:"string",title:this.$translate.instant("settings.mdns_advertiser"),description:this.$translate.instant("settings.mdns_advertiser_help"),oneOf:[{title:"Avahi",enum:["avahi"]},{title:"Bonjour HAP",enum:["bonjour-hap"]},{title:"Ciao",enum:["ciao"]},{title:"Resolved",enum:["resolved"]}]},bind:{title:this.$translate.instant("settings.network.title_network_interfaces"),description:`A string or an array of strings with the name(s) of the network interface(s) Homebridge should bind to.
|
|
10
|
+
Requires Homebridge v1.3 or later.`,type:["string","array"],items:{type:"string",description:this.$translate.instant("status.widget.network.network_interface")}}},this.isMatterSupported?{matter:{type:"object",additionalProperties:!1,title:this.$translate.instant("settings.matter.title"),description:"Matter-specific configuration for the main bridge.",properties:{port:{type:"number",title:this.$translate.instant("settings.matter.port"),description:this.$translate.instant("settings.matter.port_desc"),minimum:1025,maximum:65534}}}}:{}),default:{name:"Homebridge",username:"0E:89:49:64:91:86",port:51173,pin:"6302-7655"}},mdns:{type:"object",additionalProperties:!1,properties:{interface:{type:"string",title:this.$translate.instant("status.widget.network.network_interface"),description:`The interface or IP address of the interface you want Homebridge to listen on.
|
|
11
|
+
This is useful if your server has multiple interfaces.
|
|
12
|
+
Deprecated as of Homebridge v1.3.0 - use bridge.bind instead.`},legacyAdvertiser:{type:"boolean",title:"Legacy mDNS Advertiser",description:"Set to false to use the new mdns library, ciao."}},default:{legacyAdvertiser:!1}},ports:{type:"object",additionalProperties:!1,title:"Port Range",description:"The range of ports that should be used for external accessories like cameras and TVs.",required:["start","end"],properties:{start:{type:"number",default:52100,minimum:1025,maximum:65534,title:this.$translate.instant("settings.network.port_start"),description:this.$translate.instant("settings.network.port_start_desc")},end:{type:"number",default:52150,minimum:1025,maximum:65534,title:this.$translate.instant("settings.network.port_end"),description:this.$translate.instant("settings.network.port_end_desc")}},default:{start:52100,end:52150}},platforms:{type:"array",title:"Platforms",description:`Any plugin that exposes a platform should have its config entered in this array.
|
|
13
|
+
Separate each plugin config block using a comma.`,items:{type:"object",required:["platform"],anyOf:[{type:"object",required:["platform"],title:this.$translate.instant("plugins.button_settings"),properties:{platform:{type:"string",title:"Platform Name",description:"This is used by Homebridge to identify which plugin this platform belongs to.",not:{enum:["config"]}},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the platform."},_bridge:e}},{type:"object",additionalProperties:!1,properties:W(j({platform:{type:"string",title:"Platform Name",description:`Homebridge UI platform name must be set to "config".
|
|
14
|
+
Do not change!`,const:"config"},name:{title:this.$translate.instant("accessories.name"),type:"string",default:"Homebridge UI",minLength:1,description:"The name of the Homebridge instance."},port:{title:this.$translate.instant("settings.network.port_ui"),type:"integer",default:8080,minimum:1025,maximum:65535,description:this.$translate.instant("settings.network.port_ui_desc")},auth:{type:"string",default:"form",title:this.$translate.instant("settings.security.auth"),description:this.$translate.instant("settings.security.auth_desc"),oneOf:[{title:"Require Authentication",enum:["form"]},{title:"None",enum:["none"]}]},theme:{title:this.$translate.instant("settings.display.theme"),description:"The theme used for the UI.",type:"string",default:"orange",oneOf:[{title:this.$translate.instant("settings.display.orange"),enum:["orange"]},{title:this.$translate.instant("settings.display.red"),enum:["red"]},{title:this.$translate.instant("settings.display.pink"),enum:["pink"]},{title:this.$translate.instant("settings.display.purple"),enum:["purple"]},{title:this.$translate.instant("settings.display.deep_purple"),enum:["deep-purple"]},{title:this.$translate.instant("settings.display.indigo"),enum:["indigo"]},{title:this.$translate.instant("settings.display.blue"),enum:["blue"]},{title:this.$translate.instant("settings.display.bluegrey"),enum:["blue-grey"]},{title:this.$translate.instant("settings.display.cyan"),enum:["cyan"]},{title:this.$translate.instant("settings.display.green"),enum:["green"]},{title:this.$translate.instant("settings.display.teal"),enum:["teal"]},{title:this.$translate.instant("settings.display.grey"),enum:["grey"]},{title:this.$translate.instant("settings.display.brown"),enum:["brown"]}]},lightingMode:{title:this.$translate.instant("settings.display.lighting_mode"),description:"The lighting mode used for the UI.",type:"string",default:"auto",oneOf:[{title:this.$translate.instant("accessories.control.auto"),enum:["auto"]},{title:this.$translate.instant("settings.display.light"),enum:["light"]},{title:this.$translate.instant("settings.display.dark"),enum:["dark"]}]},menuMode:{title:this.$translate.instant("settings.display.menu_mode"),description:"Modes for the UI side menu.",type:"string",default:"default",oneOf:[{title:this.$translate.instant("settings.display.menu_default"),enum:["default"]},{title:this.$translate.instant("settings.display.menu_freeze"),enum:["freeze"]}]},temp:{title:this.$translate.instant("settings.linux.temp"),type:"string",description:this.$translate.instant("settings.linux.temp_desc")},tempUnits:{title:this.$translate.instant("settings.display.temp_units"),description:"The units used to display the temperature.",type:"string",default:"c",oneOf:[{title:this.$translate.instant("settings.display.temp_units.c"),enum:["c"]},{title:this.$translate.instant("settings.display.temp_units.f"),enum:["f"]}]},lang:{title:this.$translate.instant("settings.display.lang"),type:"string",default:"auto",description:"The language used for the UI.",oneOf:[{title:this.$translate.instant("form.select.auto"),enum:["auto"]},{title:"Bulgarian (bg)",enum:["bg"]},{title:"Catalan (ca)",enum:["ca"]},{title:"Chinese - Simplified (zh-CN)",enum:["zh-CN"]},{title:"Chinese - Traditional (zh-TW)",enum:["zh-TW"]},{title:"Czech (cs)",enum:["cs"]},{title:"Dutch (nl)",enum:["nl"]},{title:"English (en)",enum:["en"]},{title:"Finnish (fi)",enum:["fi"]},{title:"French (fr)",enum:["fr"]},{title:"German (de)",enum:["de"]},{title:"Hebrew (he)",enum:["he"]},{title:"Hungarian (hu)",enum:["hu"]},{title:"Indonesian (id)",enum:["id"]},{title:"Italian (it)",enum:["it"]},{title:"Japanese (ja)",enum:["ja"]},{title:"Korean (ko)",enum:["ko"]},{title:"Macedonian (mk)",enum:["mk"]},{title:"Norwegian (no)",enum:["no"]},{title:"Polish (pl)",enum:["pl"]},{title:"Portuguese (Brazil)",enum:["pt-BR"]},{title:"Portuguese (Portugal)",enum:["pt"]},{title:"Russian (ru)",enum:["ru"]},{title:"Slovenian (sl)",enum:["sl"]},{title:"Spanish (es)",enum:["es"]},{title:"Swedish (sv)",enum:["sv"]},{title:"Thai (th)",enum:["th"]},{title:"Turkish (tr)",enum:["tr"]},{title:"Ukrainian (uk)",enum:["uk"]}]},wallpaper:{title:this.$translate.instant("settings.display.wallpaper"),description:"The full path to the .jpg file.",type:"string"},homebridgePackagePath:{title:this.$translate.instant("settings.network.hb_package"),type:"string",description:this.$translate.instant("settings.network.hb_package_desc")},host:{type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",title:this.$translate.instant("settings.network.host"),description:this.$translate.instant("settings.network.host_desc")},sessionTimeoutInactivityBased:{type:"boolean",title:this.$translate.instant("settings.startup.session_inactivity_based"),description:this.$translate.instant("settings.startup.session_inactivity_based_desc")},sessionTimeout:{type:"integer",minimum:600,maximum:864e5,title:this.$translate.instant("settings.startup.session"),description:this.$translate.instant("settings.startup.session_desc")},log:{type:"object",additionalProperties:!1,title:"Log Settings",description:"The log settings for the Homebridge UI.",properties:{maxSize:{type:"integer",title:this.$translate.instant("settings.terminal.log_max"),description:this.$translate.instant("settings.terminal.log_max_desc"),minimum:-1},truncateSize:{type:"integer",title:this.$translate.instant("settings.terminal.log_truncate"),description:this.$translate.instant("settings.terminal.log_truncate_desc"),minimum:0}}},ssl:{type:"object",additionalProperties:!1,title:this.$translate.instant("settings.security.https"),description:this.$translate.instant("settings.security.https_desc"),properties:{key:{type:"string",title:this.$translate.instant("settings.security.key"),description:"The full path to the private key file."},cert:{type:"string",title:this.$translate.instant("settings.security.cert"),description:"The full path to the certificate file."},pfx:{title:this.$translate.instant("settings.security.pfx"),type:"string",description:"The full path to the PKCS#12 certificate file."},passphrase:{title:this.$translate.instant("settings.security.pass"),type:"string",description:"The passphrase for the PKCS#12 certificate file."}}},accessoryControl:{title:"Accessory Control Setup",type:"object",additionalProperties:!1,description:"The accessory control settings for the Homebridge UI.",properties:{debug:{title:this.$translate.instant("settings.accessory.debug"),type:"boolean",description:this.$translate.instant("settings.accessory.debug_desc")},instanceBlacklist:{title:this.$translate.instant("settings.security.ui_control"),type:"array",description:this.$translate.instant("settings.security.ui_control_desc"),items:{title:this.$translate.instant("users.label_username"),type:"string",pattern:"^([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}$"}}}},linux:{title:"Linux Server Commands",type:"object",additionalProperties:!1,description:"The Linux server commands for the Homebridge UI.",properties:{shutdown:{title:this.$translate.instant("settings.linux.shutdown"),type:"string",description:this.$translate.instant("settings.linux.shutdown_desc")},restart:{title:this.$translate.instant("settings.linux.restart"),type:"string",description:this.$translate.instant("settings.linux.restart_desc")}}}},this.$settings.originalWebroot!==globalThis.webroot.errorCode?{webroot:{title:this.$translate.instant("settings.network.webroot"),type:"string",description:this.$translate.instant("settings.network.webroot_desc")}}:{}),{proxyHost:{title:this.$translate.instant("settings.network.proxy"),type:"string",pattern:"^[^{}/ :\\\\]+(?::\\d+)?$",description:this.$translate.instant("settings.network.proxy_desc")},scheduledBackupPath:{title:this.$translate.instant("backup.settings_path"),description:"The full path to where the service should save daily scheduled backups archives.",type:"string"},scheduledBackupDisable:{title:"Disable Scheduled Backups",type:"boolean",description:"When enabled, the Homebridge UI will not create daily scheduled backups."},scheduledRestartCron:{type:"string",title:this.$translate.instant("settings.startup.scheduled_restart"),description:this.$translate.instant("settings.startup.scheduled_restart_desc")},disableServerMetricsMonitoring:{title:"Disable Server Metrics Monitoring",type:"boolean",description:"When enabled, the Homebridge UI will not collect or report CPU or memory stats."},enableMdnsAdvertise:{title:this.$translate.instant("settings.network.mdns_advertise"),type:"boolean",description:this.$translate.instant("settings.network.mdns_advertise_help")},plugins:{title:this.$translate.instant("menu.label_plugins"),type:"object",additionalProperties:!1,description:"Settings surrounding plugins that are used by the Homebridge UI.",properties:{hideUpdatesFor:{type:"array",title:this.$translate.instant("config.hide_plugin_updates"),description:"A list of plugin names for which frontend update notifications will be hidden.",items:{type:"string",title:this.$translate.instant("accessories.plugin"),pattern:"^(?:@[\\w-]+(?:\\.[\\w-]+)*/)?homebridge-[\\w-]+$"}},alwaysShowBetas:{type:"boolean",title:this.$translate.instant("settings.display.show_betas"),description:"When enabled, beta releases will be shown as available for Homebridge, the UI and plugins."}}},bridges:{type:"array",title:this.$translate.instant("child_bridge.bridges"),description:"Settings surrounding bridges that are used by the Homebridge UI.",items:{type:"object",additionalProperties:!1,required:["username"],properties:{username:{type:"string",title:this.$translate.instant("users.label_username"),description:'The MAC address of the bridge (e.g., "0E:02:9A:9D:44:45").',pattern:"^[0-9A-F]{2}(?::[0-9A-F]{2}){5}$"},hideHapAlert:{type:"boolean",title:this.$translate.instant("config.hide_hap_pairing"),description:"Hide the HAP pairing alert for this bridge."},hideMatterAlert:{type:"boolean",title:this.$translate.instant("config.hide_matter_pairing"),description:"Hide the Matter pairing alert for this bridge."},scheduledRestartCron:{type:"string",title:this.$translate.instant("settings.startup.scheduled_restart"),description:this.$translate.instant("settings.startup.scheduled_restart_desc")}}}},terminal:{type:"object",additionalProperties:!1,title:"Terminal Settings",description:"The terminal settings for the Homebridge UI.",properties:{persistence:{title:this.$translate.instant("settings.terminal.persistence"),type:"boolean",description:this.$translate.instant("settings.terminal.persistence_help"),default:!1},hideWarning:{title:this.$translate.instant("settings.terminal.warning"),type:"boolean",description:this.$translate.instant("settings.terminal.warning_help"),default:!1},bufferSize:{title:this.$translate.instant("settings.terminal.buffer_size"),type:"integer",description:this.$translate.instant("settings.terminal.buffer_size_help"),default:5e4,minimum:0}}}})}]}},accessories:{type:"array",title:this.$translate.instant("menu.label_accessories"),description:`Any plugin that exposes an accessory should have its config entered in this array.
|
|
15
|
+
Separate each plugin config block using a comma.`,items:{type:"object",required:["accessory","name"],title:this.$translate.instant("plugins.button_settings"),properties:{accessory:{type:"string",title:this.$translate.instant("child_bridge.config.accessory"),description:"This is used by Homebridge to identify which plugin this accessory belongs to."},name:{type:"string",title:this.$translate.instant("accessories.name"),description:"The name of the accessory."},_bridge:e}}},plugins:{type:"array",title:this.$translate.instant("menu.label_plugins"),description:`An array of plugins that should be selectively enabled.
|
|
16
|
+
Remove this array to enable all plugins.`,items:{type:"string",title:this.$translate.instant("accessories.plugin"),description:`The full plugin npm package name.
|
|
17
|
+
Example: homebridge-dummy.`},default:["homebridge-config-ui-x"]},disabledPlugins:{type:"array",description:`An array of plugins that should be disabled.
|
|
18
|
+
Requires Homebridge v1.3 or later.`,items:{type:"string",title:this.$translate.instant("accessories.plugin"),description:`The full plugin npm package name.
|
|
19
|
+
Example: homebridge-dummy.`},default:[]}}}}]}),this.monacoEditorModel.uri=monaco.Uri.parse("a://homebridge/config.json")}visualViewPortChanged(){this.lastHeight<window.visualViewport.height&&document.activeElement.blur(),window.visualViewport.height<window.innerHeight?(this.$md.enableTouchMove(),this.lastHeight=window.visualViewport.height):window.visualViewport.height===window.innerHeight&&(this.$md.disableTouchMove(),this.lastHeight=window.visualViewport.height)}saveConfig(t){return C(this,null,function*(){try{let e=yield this.$api.post("/config-editor",t);this.homebridgeConfig.set(JSON.stringify(e,null,4)),yield this.detectSavesChangesForRestart()}catch(e){console.error(e),this.$toastr.error(this.$translate.instant("config.failed_to_save_config"),this.$translate.instant("toast.title_error"))}})}validateArraysEqual(t,e){if(t.length!==e.length)return!1;let i=[...t].sort(),n=[...e].sort();return i.every(($,_)=>$===n[_])}removePlatformsAndAccessories(t){let $=t,{accessories:e,platforms:i}=$;return tt($,["accessories","platforms"])}removeEmptyBridges(t){return t.filter(e=>e._bridge&&Object.keys(e._bridge).length>0).map(e=>e._bridge)}validateBridgesEqual(t,e){return t.length!==e.length?!1:t.every(i=>e.some(n=>B(i,n)))}detectConfigPlatformChanges(){try{let t=this.latestSavedConfig,e=JSON.parse(this.homebridgeConfig()),i=(t.platforms||[]).find(M=>M.platform==="config"),n=(e.platforms||[]).find(M=>M.platform==="config"),$=i?.webroot||"",_=n?.webroot||"";return $!==_&&(_=_?`/${_}`.replace(/\/+/g,"/").replace(/\/$/,""):"",_==="/"&&(_=""),this.$settings.setItem("webroot",_),n&&(_&&this.$settings.originalWebroot!==globalThis.webroot.errorCode?n.webroot=_:delete n.webroot,this.homebridgeConfig.set(JSON.stringify(e,null,4)),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig()))),!i&&n||i&&!n?!0:!i&&!n?!1:!B(i,n)}catch(t){return console.error("Error detecting config platform changes:",t),!1}}detectSavesChangesForRestart(){return C(this,null,function*(){let t=yield this.determineRestartType();if(t==="full"){let e=this.detectConfigPlatformChanges();yield this.performFullRestart(e)}else t==="child"&&(yield this.performChildBridgeRestart());this.latestSavedConfig=JSON.parse(this.homebridgeConfig())})}determineRestartType(){return C(this,null,function*(){if(this.hbPendingRestart)return"full";let t=this.latestSavedConfig,e=JSON.stringify(t,null,4),i=JSON.parse(this.homebridgeConfig()),n=this.homebridgeConfig();if(e===n&&!this.childBridgesToRestart.length)return this.$toastr.info(this.$translate.instant("config.no_restart"),this.$translate.instant("config.config_saved")),"none";if(!this.validateArraysEqual(Object.keys(t),Object.keys(i))||[...i.platforms||[],...i.accessories||[]].every(c=>!c._bridge||!Object.keys(c._bridge).length))return"full";let _=this.removePlatformsAndAccessories(t),M=this.removePlatformsAndAccessories(i);if(!B(_,M))return"full";let P=t.platforms||[],q=i.platforms||[],Mt=P.map(c=>c.platform),Tt=q.map(c=>c.platform);if(!this.validateArraysEqual(Mt,Tt))return"full";let z=t.accessories||[],J=i.accessories||[],Bt=z.map(c=>c.accessory),Pt=J.map(c=>c.accessory);if(!this.validateArraysEqual(Bt,Pt)||!this.validateBridgesEqual(this.removeEmptyBridges(P),this.removeEmptyBridges(q))||!this.validateBridgesEqual(this.removeEmptyBridges(z),this.removeEmptyBridges(J)))return"full";let X=P.filter(c=>!B(c,q.find(A=>A.platform===c.platform))),At=z.filter(c=>!B(c,J.find(A=>A.accessory===c.accessory))),Z=[...X,...At];if(X.some(c=>c.platform==="config")||Z.some(c=>c.platform==="config"?!1:!c._bridge||Object.keys(c._bridge).length===0))return"full";try{let c=yield this.$api.get("/status/homebridge/child-bridges");return Z.forEach(A=>{let Dt=A._bridge.username.toUpperCase(),D=c.find(({username:L})=>L===Dt);if(D)this.childBridgesToRestart.some(L=>L.username===D.username)||this.childBridgesToRestart.push({name:D.name,username:D.username,matterSerialNumber:D.matterSerialNumber});else return"full"}),"child"}catch(c){return console.error("Error fetching child bridges:",c),"full"}})}performChildBridgeRestart(){return C(this,null,function*(){if(!this.childBridgesToRestart.length){yield this.performFullRestart(!1);return}let t=this.$modal.open(yt,{size:"lg",backdrop:"static"});t.componentInstance.bridges=this.childBridgesToRestart;try{yield t.result,this.childBridgesToRestart=[]}catch{}})}performFullRestart(t){return C(this,null,function*(){t&&(yield this.$api.put("/platform-tools/hb-service/set-full-service-restart-flag",{}));let e=this.$modal.open(_t,{size:"lg",backdrop:"static"});try{yield e.result,this.hbPendingRestart=!1,this.childBridgesToRestart=[]}catch{this.hbPendingRestart=!0}})}parseConfigFromEditor(){try{return JSON.parse(this.homebridgeConfig())}catch{let e=Et.default.parse(this.homebridgeConfig());return this.homebridgeConfig.set(JSON.stringify(e,null,4)),this.monacoEditor&&this.monacoEditor.getModel().setValue(this.homebridgeConfig()),e}}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=R({type:s,selectors:[["ng-component"]],decls:18,vars:19,consts:[[1,"flex-column","d-flex","align-items-stretch","h-100"],[1,"row"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"disabled","openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"openDelay","ngbTooltip"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-0",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-floppy-disk"],[1,"fas","fa-spinner","fa-pulse"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModel"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-danger","waves-effect","my-0","me-2",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-times"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","waves-effect","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-history"],[1,"fas"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","model"],[1,"flex-grow-1","h-100","w-100","mt-3","mb-0",3,"onInit","keydown.control.s","keydown.meta.s","options","originalModel","modifiedModel"],["wrap","off","autocomplete","off","autocorrect","off","autocapitalize","off","spellcheck","false",1,"hb-plain-text-editor","align-self-end","h-100","w-100","my-3",3,"ngModelChange","ngModel"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"div",2)(3,"h3",3),y(4),r(5,"translate"),d()(),a(6,"div",4),k(7,Nt,4,8,"button",5),k(8,Ft,4,7,"button",6),k(9,Ut,4,11,"button",6),a(10,"button",7),r(11,"translate"),r(12,"translate"),b("click",function(){return i.onSave()}),k(13,qt,1,0,"i",8),k(14,zt,1,0,"i",9),d()()(),k(15,Jt,1,2,"ngx-monaco-editor",10),k(16,Lt,1,3,"ngx-monaco-diff-editor",11),k(17,Wt,2,1,"textarea",12),d()),e&2&&(o(4),E(l(5,13,"menu.config_json_editor")),o(3),x(i.originalConfig()?7:-1),o(),x(i.originalConfig()?-1:8),o(),x(!i.isMobile()&&i.originalConfig()?9:-1),o(),u("disabled",i.saveInProgress())("openDelay",150)("ngbTooltip",l(11,15,"form.button_save")),v("aria-label",l(12,17,"form.button_save")),o(3),x(i.saveInProgress()?-1:13),o(),x(i.saveInProgress()?14:-1),o(),x(!i.isMobile()&&!i.originalConfig()?15:-1),o(),x(!i.isMobile()&&i.originalConfig()?16:-1),o(),x(i.isMobile()?17:-1))},dependencies:[U,wt,Ct,mt,ct,pt,gt,O],encapsulation:2})}return s})();export{ke as ConfigEditorComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e}from"./chunk-B4AJQJMI.js";var s=e((i,t)=>{t.exports={"accessories.accessory_info":"Accessory Information","accessories.bridge_ip":"Bridge IP","accessories.bridge_port":"Bridge Port","accessories.button_add_room":"Lis\xE4\xE4 huone","accessories.button_hidden_hide":"Piilota piilotettu","accessories.button_hidden_show":"N\xE4yt\xE4 piilotettu","accessories.button_remove":"Remove From Cache","accessories.control.adaptive_lighting":"Adaptive Lighting","accessories.control.adaptive_lighting_note":"Some plugins may automatically re-enable Adaptive Lighting when changing this.","accessories.control.auto":"Automaattinen","accessories.control.away":"Pois","accessories.control.battery_charged":"Charged","accessories.control.battery_charging":"Lataa","accessories.control.battery_low":"Battery Low","accessories.control.battery_notchargeable":"Ei ladattava","accessories.control.battery_notcharging":"Ei lataa","accessories.control.brightness":"Kirkkaus","accessories.control.cleaning":"Cleaning","accessories.control.closed":"Suljettu","accessories.control.closing":"Sulkeutuu","accessories.control.color_temperature":"Color Temperature","accessories.control.cool":"J\xE4\xE4hdytys","accessories.control.current":"Current","accessories.control.default_room":"Oletus huone","accessories.control.dehumidify":"Dehumidify","accessories.control.detected":"Havaittu","accessories.control.direction_control":"Direction Control","accessories.control.drag_here":"Raaha t\xE4h\xE4n","accessories.control.filter_level":"Filter Life","accessories.control.heat":"L\xE4mmitys","accessories.control.home":"Koti","accessories.control.hue":"Hue","accessories.control.humidify":"Humidify","accessories.control.idle":"Idle","accessories.control.input":"Input List","accessories.control.input_control":"Input Control","accessories.control.jammed":"Juuttunut","accessories.control.lock_auto":"Auto Lock Timer","accessories.control.locked":"Lukittu","accessories.control.manual":"Manual","accessories.control.media_control":"Media Control","accessories.control.microphone":"Microphone","accessories.control.mode":"Mode","accessories.control.mode_control":"Mode Control","accessories.control.mute":"Vaimennus","accessories.control.mute_control":"Mute Control","accessories.control.night":"Y\xF6","accessories.control.no_data":"No Data","accessories.control.not_detected":"Ei havaittu","accessories.control.not_mute":"P\xE4\xE4ll\xE4","accessories.control.obstructed":"Obstructed","accessories.control.off":"Pois","accessories.control.on":"P\xE4\xE4ll\xE4","accessories.control.open":"Auki","accessories.control.opening":"Avautuu","accessories.control.pause":"Pause","accessories.control.paused":"Paused","accessories.control.play":"Play","accessories.control.replace":"Replace","accessories.control.rotation_c_clockwise":"Counter Clockwise","accessories.control.rotation_clockwise":"Clockwise","accessories.control.rotation_direction":"Rotation Direction","accessories.control.rotation_speed":"Py\xF6rimisnopeus","accessories.control.running":"K\xE4ynniss\xE4","accessories.control.saturation":"Saturation","accessories.control.set_duration":"Set Duration","accessories.control.speaker":"Speaker","accessories.control.speaker_volume":"\xC4\xE4nenvoimakkuus","accessories.control.state_control":"State Control","accessories.control.stateless":"Stateless","accessories.control.stop":"Stop","accessories.control.stopped":"Pys\xE4ytetty","accessories.control.target":"Kohde","accessories.control.target_auto":"Auto Target","accessories.control.threshold_auto":"Auto Threshold","accessories.control.triggered":"Liipaistunut","accessories.control.unknown":"Tuntematon","accessories.control.unlocked":"Lukitsematon","accessories.control_disabled":"Homebridge laitehallinta pois k\xE4yt\xF6st\xE4","accessories.core.air_purifier":"Air Purifier","accessories.core.air_quality_sensor":"Air Quality Sensor","accessories.core.battery":"Battery","accessories.core.carbon_dioxide_sensor":"Carbon Dioxide Sensor","accessories.core.carbon_monoxide_sensor":"Carbon Monoxide Sensor","accessories.core.contact_sensor":"Contact Sensor","accessories.core.cooler":"Cooler","accessories.core.dehumidifier":"Dehumidifier","accessories.core.door":"Door","accessories.core.doorbell":"Doorbell","accessories.core.fan":"Fan","accessories.core.faucet_valve":"Valve","accessories.core.filter_maintenance":"Filter Maintenance","accessories.core.garage_door_opener":"Garage Door Opener","accessories.core.generic_valve":"Valve","accessories.core.heater":"Heater","accessories.core.heater_cooler":"Heater Cooler","accessories.core.humidifier":"Humidifier","accessories.core.humidifier_dehumidifier":"Humidifier Dehumidifier","accessories.core.humidity_sensor":"Humidity Sensor","accessories.core.irrigation_system":"Irrigation System","accessories.core.irrigation_valve":"Valve","accessories.core.leak_sensor":"Leak Sensor","accessories.core.light_sensor":"Light Sensor","accessories.core.lightbulb":"Lightbulb","accessories.core.lock_mechanism":"Lock Mechanism","accessories.core.microphone":"Microphone","accessories.core.motion_sensor":"Motion Sensor","accessories.core.occupancy_sensor":"Occupancy Sensor","accessories.core.on_off_light":"Lightbulb","accessories.core.on_off_light_switch":"Switch","accessories.core.on_off_plug_in_unit":"Outlet","accessories.core.outlet":"Outlet","accessories.core.robot_vacuum":"Robot Vacuum","accessories.core.robotic_vacuum_cleaner":"Robot Vacuum","accessories.core.security_system":"Security System","accessories.core.shower_head_valve":"Valve","accessories.core.smoke_sensor":"Smoke Sensor","accessories.core.speaker":"Speaker","accessories.core.stateless_programmable_switch":"Stateless Programmable Switch","accessories.core.switch":"Switch","accessories.core.television":"Television","accessories.core.temperature_sensor":"Temperature Sensor","accessories.core.thermostat":"Thermostat","accessories.core.valve":"Valve","accessories.core.washing_machine":"Washing Machine","accessories.core.window":"Window","accessories.core.window_covering":"Window Covering","accessories.custom_name":"Custom Name","accessories.custom_type":"Custom Type","accessories.hide_this_accessory":"Piilota t\xE4m\xE4 laite","accessories.message_must_use_insecure_mode":"Laitteiden hallitsemiseksi Homebridge on on oltava suojaamattomassa tilassa {{ link }}.","accessories.name":"Nimi","accessories.no_plugins.message_1":"Accessories are created and managed by Homebridge plugins.","accessories.no_plugins.message_2":"You can find and install plugins from the plugins page.","accessories.no_plugins.title":"No Plugins Installed","accessories.only_ui":"These settings are only for the Homebridge UI and <strong>will not be reflected in HomeKit</strong>.","accessories.only_ui_2":"These options are unique to your Homebridge UI account.","accessories.plugin":"Plugin","accessories.room_name":"Huoneen Nimi","accessories.service":"Service","accessories.service_info":"Service Information","accessories.settings_link":"P\xE4\xE4set tarvittaessa Homebridge asetuksiin sivuvalikosta","accessories.show_on_dashboard":"N\xE4yt\xE4 hallintapaneelissa","accessories.support.acc_1":"Accessories may take a few minutes to appear on this screen after a Homebridge restart or after being added. If accessories are consistently missing, try changing the mDNS advertiser in the settings.","accessories.support.acc_2":"You can change the type of certain accessories in the UI (like showing a switch as a heater). You can do this by clicking on the three bars that appear in the top-right corner of the accessory tile as you hover over it. A 'Custom Type' option will appear if the accessory supports this. Note this will not change the accessory in HomeKit (only a plugin can do this).","accessories.support.rooms_1":"Huoneet jotka luot t\xE4\xE4ll\xE4 eiv\xE4t n\xE4y HomeKit:s\xE4, ne ovat vain Homebridge UI:ta varten","accessories.support.rooms_2":"To rename an existing room, create a new room with the desired name and move the accessories to the new room.","accessories.support.rooms_3":"To delete an existing room, move all its accessories to another room and refresh the page.","accessories.title_rooms":"Rooms","backup.backup_delete_failed":"Varmuuskopion poisto ep\xE4onnistui. Katso lokitiedoista tarkemmin.","backup.backup_download_failed":"Varmuuskopion lataus ep\xE4onnistui","backup.backup_exceeds_max_size":"Varmuuskopion koko ({{ backupSize }}) ylitt\xE4\xE4 maksimikoon {{ maxBackupSizeText }}","backup.backup_help_one":"Lataa varmuuskopio koko Homebridge ymp\xE4rist\xF6st\xE4. Varmuuskopioidaan koko Homebridge talletus hakemisto. Voit palauttaa varmuuskopion mihin tahansa Homebridge asennukseen","backup.backup_help_two":"Laajennukset joita ei hallita npm:st\xE4 ja laajennukset jotka on asennettu suoraan GitHub:sta eiv\xE4t sis\xE4lly varmuuskopiointiin tai palautukseen.","backup.backup_now":"Backup Now","backup.backup_now_desc":"Generate and download an up-to-date backup file.","backup.backup_now_save_desc":"Generate an up-to-date backup file in your backup storage directory.","backup.backup_restored":"Varmuuskopio palautettu","backup.backup_warning":"Varmuuskopio sis\xE4lt\xE4\xE4 arkaluontoista tietoa, \xE4l\xE4 jaa sit\xE4 muille.","backup.files_auto":"Stored Backup Files","backup.label_extracting":"Extracting Archive","backup.label_uploading":"Ladataan","backup.load_error":"Asetus varmuuskopion lataus ep\xE4onnistui.","backup.restore_failed":"Palautus ep\xE4onnistui","backup.restore_help_one":"Palauta aiemmin Homebridge-k\xE4ytt\xF6liittym\xE4ll\xE4 luomasi varmuuskopioarkisto. Homebridge-kokoonpanosi, v\xE4limuistissa olevat lis\xE4varusteet, HomeKit-pariliitokset ja Homebridge-k\xE4ytt\xF6liittym\xE4n k\xE4ytt\xE4j\xE4tilit palautetaan. Kaikki asentamasi Homebridge-laajennukset ladataan my\xF6s npm-rekisterist\xE4.","backup.restore_help_two":"Palautuksen j\xE4lkeen sinun on kirjauduttava Homebridge-k\xE4ytt\xF6liittym\xE4\xE4n k\xE4ytt\xE4m\xE4ll\xE4 palautetun ilmentym\xE4n tunnistetietoja.","backup.restore_max_size":"Palautettavan varmuuskoion maksimikoko on {{ maxBackupSizeText }}.","backup.restore_now":"Restore Now","backup.restore_now_desc":"Restore from a previously downloaded backup file.","backup.restore_warning":"Varmuuskopiosta palauttaminen korvaa peruuttamattomasti nykyisen Homebridge-kokoonpanon.","backup.scheduled_backup_disabled":"Scheduled backups have been disabled via the configuration.","backup.scheduled_backup_time":"Homebridgen t\xE4ydellinen varmuuskopio luodaan automaattisesti joka p\xE4iv\xE4 klo {{ backupTime }}, ja sit\xE4 s\xE4ilytet\xE4\xE4n {{ dayCount }} p\xE4iv\xE4\xE4.","backup.settings_enable":"Enable Automated Backups","backup.settings_path":"Backup Storage Path","backup.settings_path_desc":"If you are changing this from the default, please ensure the directory exists and is writable by the Homebridge user.","backup.settings_title":"Backup Settings","backup.title_backup":"Backup & Restore","child_bridge.about":"Homebridgen avulla voit k\xE4ytt\xE4\xE4 laajennuksen alustaa tai lis\xE4laitetta erillisen\xE4 lapsisiltana {{ link }}. T\xE4m\xE4 voi parantaa Homebridgen yleist\xE4 reagointikyky\xE4 ja luotettavuutta.","child_bridge.bridge_connect":"Yhdist\xE4 HomeKit","child_bridge.bridge_settings":"Lapsisillan asetukset","child_bridge.bridges":"Sillat","child_bridge.bridges_paired":"Jokainen lapsisilta, alusta ja laite t\xE4ytyy parittaa HomeKit:in kanssa erikseen.","child_bridge.bridges_paired_2":"If you set up a child bridge now and later disable it, any accessories on this bridge will be removed and re-created on the main Homebridge bridge.","child_bridge.config.accessory":"Accessory","child_bridge.config.debug":"Vianhaku tila","child_bridge.config.enable_hap":"Enable HAP","child_bridge.config.firmware":"Firmware Versio","child_bridge.config.hide_pairing_alert":"Hide Pairing Alert","child_bridge.config.manufacturer":"Valmistaja","child_bridge.config.matter_note_1":"Plugins must be updated by the developer to support Matter accessories. There is no use in enabling Matter here unless you definitely know the plugin supports it.","child_bridge.config.matter_note_2":"Matter accessories don't appear in the Homebridge UI accessories screen. They can be managed using the Home app or other Matter controllers.","child_bridge.config.model":"Malli","child_bridge.config.name":"Nimi","child_bridge.config.or_link":"Link Existing Bridge","child_bridge.config.platform":"Platform","child_bridge.config.port":"Port","child_bridge.config.prevent":"Cannot disable a child bridge with linked accessories.","child_bridge.config.select_existing":"Select an existing bridge...","child_bridge.config.use":"Use Child Bridge","child_bridge.confirm_delete_1":"The following child bridges will be removed.","child_bridge.confirm_delete_2":"You will need to remove the paired bridges manually from the Home app. Any accessories will be removed and re-created on the main Homebridge bridge.","child_bridge.must_configure_plugin":"Sinun t\xE4ytyy m\xE4\xE4ritell\xE4 lis\xE4osan asetukset ennnekuin voit hallita sen silta-asetuksia.","child_bridge.reset_accessories":"Nollaa laitteet","child_bridge.restart":"Uudelleenk\xE4ynnist\xE4 lapsisilta","child_bridge.restart_plural":"Uudellenk\xE4ynnist\xE4 lapsisillat","child_bridge.return_to_pair":"Palaa t\xE4h\xE4n n\xE4kym\xE4\xE4n Homebridgen uudelleenk\xE4ynnistyksen j\xE4lkeen n\xE4hd\xE4ksesi parituksen QR koodi.","child_bridge.setup":"M\xE4\xE4rittele lapsisilta","child_bridge.start":"K\xE4ynnist\xE4 lapsisilta","child_bridge.start_plural":"K\xE4ynnist\xE4 lapsisillat","child_bridge.stop":"Pys\xE4yt\xE4 lapsisilta","child_bridge.stop_plural":"Pys\xE4yt\xE4 lapsisillat","common.labels.beta":"beta","common.labels.no_confirmation":"There is no confirmation when clicking the button, it will immediately perform the action.","common.phrases.are_you_sure":"Haluatko kuitenkin jatkaa?","common.phrases.support":"Feel like there is something useful we could add here? Let us know on {{ github }} or {{ discord }}!","config.config_accessory_must_be_array":"laitelistan on oltava array []","config.config_bridge_missing":"Sillan asetukset puuttuvat","config.config_invalid_json":"Asetuksissa on virheellinen JSON","config.config_platform_must_be_array":"alustalistan on oltava array []","config.config_saved":"Configuration Saved","config.config_username_error":"Sillan k\xE4ytt\xE4j\xE4nimen on oltava 6 paria pisteell\xE4 erotettuja heksadesimaali merkkej\xE4 (A-F 0-9)","config.error_blocks_objects":"Kaikkien {{ type }} lohkojen on oltava objekteja.","config.error_blocks_type":"kaikkien {{ type }} lohkojen pit\xE4\xE4 sis\xE4lt\xE4\xE4 {{ type }} ominaisuus.","config.error_string_array":"Jokaisen arvon {{ key }} joukossa pit\xE4\xE4 olla merkkijono.","config.error_string_type":"{{ type }} ominaisuuden pit\xE4\xE4 olla merkkijono.","config.failed_to_save_config":"Asetusten talletus ep\xE4onnistui","config.hide_hap_pairing":"Hide HAP Pairing Alert","config.hide_matter_pairing":"Hide Matter Pairing Alert","config.hide_plugin_updates":"Hide Plugin Updates For","config.no_restart":"A restart is not needed as no changes were made to the Homebridge configuration.","config.restore.confirm":"Napauta Talleta hyv\xE4ksy\xE4ksesi t\xE4m\xE4n varmuuskopion palautuksen.","config.restore.copy_to_editor":"Kopioi muokattavaksi","config.restore.download":"Download your current configuration as a JSON file.","config.restore.help_1":"A backup of your config file is created each time it is updated from actions you take in the Homebridge UI.","config.restore.help_2":"You can restore a previous version of your config file by selecting it from the list below. You will be able to compare this version with your current config before deciding whether to restore it.","config.restore.title":"Config File Backup & Restore","config.restore.toast_backups_deleted":"Kaikki varmuuskopiot poistettu","config.restore.view_inline":"Inline View","config.restore.view_side_by_side":"Side-By-Side View","config.title_backup_loaded":"Varmuuskopio ladattu","form.button_allow":"Allow","form.button_back":"Back","form.button_cancel":"Peru","form.button_close":"Sulje","form.button_continue":"Jatka","form.button_delete":"Poista","form.button_delete_all":"Delete All","form.button_disable":"Poista k\xE4yt\xF6st\xE4","form.button_download":"Lataa","form.button_edit":"Muokkaa","form.button_enable":"Ota k\xE4ytt\xF6\xF6n","form.button_lock":"Lukitse","form.button_more_info":"Lis\xE4\xE4 tietoa","form.button_remove":"Poista","form.button_reset":"Nollaa","form.button_restore":"Palauta","form.button_save":"Talleta","form.button_show":"N\xE4yt\xE4","form.button_unlock":"Poista lukitus","form.button_unpair":"Pura pariliitos","form.label.changes_kept":"Note that existing selections/changes are preserved when switching between items.","form.label_invalid":"Asetuksia ei hyv\xE4ksytty - voit siit\xE4 huolimatta tallentaa muutokset.","form.label_invalid_strict":"Asetuksia ei hyv\xE4ksytty - ole hyv\xE4 ja tarkista tiedot ennen tallentamista.","form.label_valid":"Asetukset hyv\xE4ksytty.","form.optional":"Optional","form.search":"Search...","form.select.auto":"Automattinen (K\xE4yt\xE4 selaimen asetuksia)","login.invalid_code":"The code entered is incorrect or has expired","login.invalid_credentials":"V\xE4\xE4r\xE4 k\xE4ytt\xE4j\xE4tunnus tai salasana","login.invalid_credentials_2":"If you lose access, delete the <code>auth.json</code> file in your Homebridge storage directory and restart Homebridge. Then refresh this page to set up a new admin account. Your Homebridge/UI settings will remain unchanged, except for UI user accounts. The only user account will be the admin account that you are setting up now.","login.invalid_password":"Invalid Password","login.label_2fa_code":"Kaksivaiheisen tunnistautumisen koodi","logs.download.error":"Lokitiedoston lataus ep\xE4onnistui.","logs.download_warning":"Homebridge lokitiedosto voi sis\xE4lt\xE4\xE4 henkil\xF6kohtaisia tietoja, salasanoja tai p\xE4\xE4sykoodeja. Ole hyv\xE4 ja tarkasta lokitiedosto ja poista arkaluontoiset tiedot ennen jakamista.","logs.log_file_truncated":"Lokitiedosto katkaistu.","logs.placeholder_search_logs":"Search logs (min. 3 characters)...","logs.title_download_log_file":"Lataa lokitiedosto","logs.title_truncate_log_file":"Poista lokitiedot","logs.truncate.error":"Lokitiedoston katkaisu ep\xE4onnistui.","logs.truncate_log_warning":"T\xE4m\xE4 toiminto poistaa peruuttamattomasti Homebridgen lokitiedot. Haluatko varmasti jatkaa?","matter_bridge.config.use":"Enable Matter","menu.config_json_editor":"JSON Asetukset","menu.docker.restart_container":"Uudellenk\xE4ynnist\xE4 Container","menu.docker.startup_script":"K\xE4ynnistys skripti","menu.docker.terminal":"P\xE4\xE4te","menu.hbrestart.confirm_hb":"Uudelleenk\xE4ynnist\xE4 Homebridge","menu.hbrestart.confirm_ui":"Uudelleenk\xE4ynnist\xE4 HB Palvelu & UI","menu.hbrestart.title":"Uudelleenk\xE4ynnist\xE4 Homebridge","menu.label_accessories":"Laitteet","menu.label_plugins":"Laajennukset","menu.label_settings":"Asetukset","menu.label_status":"Tila","menu.linux.label_logs":"Lokitiedot","menu.linux.label_restart_server":"Uudellenk\xE4ynnist\xE4 j\xE4rjestelm\xE4","menu.linux.label_shutdown_modal":"Are you sure you want to shut down the operating system? You will need physical access to turn it back on.","menu.linux.label_shutdown_server":"Sulje j\xE4rjestelm\xE4","menu.linux.label_terminal":"P\xE4\xE4te","menu.reload":"Reload","menu.restart.title":"K\xE4ynnistys valinnat","menu.settings.title":"Asetukset","menu.tooltip_logout":"Kirjaudu ulos","menu.tooltip_restart":"Uudelleenk\xE4ynnist\xE4","menu.tooltip_user_accounts":"K\xE4ytt\xE4j\xE4tunnukset","menu.tooltip_view_logs":"N\xE4yt\xE4 lokitiedot","platform.docker.container_restarted":"Docker Container uudelleenk\xE4ynnistetty","platform.docker.must_use_hashbang":"Komentojonossa pt\xE4\xE4 olla #!/bin/sh hashbang.","platform.docker.restart_required":"Docker container t\xE4ytyy uudelleenk\xE4ynnist\xE4\xE4 muutosten k\xE4ytt\xF6\xF6nottamiseksi.","platform.docker.run_with_restart":"Varmista ett\xE4 Docker containerin k\xE4ynnistys komennossa on parametri: {{ command }}","platform.docker.script_help":"T\xE4m\xE4 komentojono suoritetaan aina kun docker container k\xE4ynnistyy. Voita k\xE4ytt\xE4\xE4 t\xE4t\xE4 asentaaksesi lis\xE4-asennuksia joita laajennukset saattavat tarvita, kuten ffmpeg tai libpcap-dev.","platform.docker.script_saved":"K\xE4ynnistys komentojono talletettu","platform.docker.server_long_time":"Uudelleenk\xE4ynnistys tuntuu kest\xE4v\xE4n. Sinun t\xE4ytyy ehk\xE4 k\xE4ynnist\xE4\xE4 Docker container k\xE4sin.","platform.docker.title_restarting":"Uudelleenk\xE4ynnistet\xE4\xE4n Docker Container","platform.linux.long_time":"Palvelimen uudelleenk\xE4ynnistys tuntuu kest\xE4v\xE4n. Sinun t\xE4ytyy ehk\xE4 k\xE4ynnist\xE4\xE4 palvelin k\xE4sin.","platform.linux.restart":"Odota ole hyv\xE4, t\xE4m\xE4 sivu p\xE4ivittyy automaattisesti kun Homebridge on taas k\xE4ynniss\xE4.","platform.linux.restarting_server":"Uudellenk\xE4ynnistet\xE4\xE4n palvelin","platform.linux.server_restart_error":"Tapahtui virhe uudelleenk\xE4ynnistys komennon l\xE4hett\xE4misess\xE4 palvelimelle","platform.linux.server_restarted":"Palvelin uudelleenk\xE4ynnistetty","platform.linux.server_taking_long_time":"Palvelimen k\xE4ynnistyminen tuntuu kest\xE4v\xE4n","platform.linux.server_will_power_down":"Palvelin sammutetaan piakkoin.","platform.linux.shutting_down_server":"Palvelinta sammutetaan","platform.terminal.terminate_message_1":"Navigating away from this page will terminate your current session, all foreground processes will be terminated.","platform.terminal.terminate_message_2":"To avoid this warning, enable <strong>Terminal Session Persistence</strong> from the settings page.","platform.terminal.terminate_title":"Session Termination","platform.terminal.terminate_unload":"Your terminal session will be terminated. Enable Terminal Session Persistence in Settings to prevent this.","platform.version.restart_required":"Homebridge UI v{{ uiVersion }} on asennettu, mutta k\xE4ynniss\xE4 olevan palvelimen versio on viel\xE4 v{{ serverVersion }}.","platform.version.service_restart_required":"Tarvitaan uudellenk\xE4ynnistys","plugins.bridge.action_error":"Virhe toiminnossa: {{ action }} lapsisillassa.","plugins.bridge.name_error":"Bridge name must start and end with a letter or number, and can only contain letters, numbers, spaces, and apostrophes.","plugins.bridge.port_error":"{{ type }} port must be an integer between 1025 and 65533, excluding 5353, 8080, 8443 and any other already-configured port.","plugins.button_homepage":"Laajennuksen kotisivu","plugins.button_set_up":"M\xE4\xE4rit\xE4 asetukset","plugins.button_settings":"Laajennuksen asetukset","plugins.button_uninstall":"Poista asennus","plugins.button_update":"P\xE4ivit\xE4","plugins.compat.hb_node_too_low":"{{ packageName }} v{{ latestVersion }} tarvitsee Node.js v{{ minVersion }} tai uudemman. K\xE4yt\xF6ss\xE4 on Node.js {{ installedVersion }}.","plugins.compat.hb_too_low":"{{ pluginName }} laajennus suosittelee Homebridge v{{ minVersion }} tai uudemman k\xE4ytt\xF6\xE4. K\xE4yt\xF6ss\xE4 on Homebridge v{{ installedVersion }}.","plugins.compat.node_first":"Ole hyv\xE4 ja p\xE4ivit\xE4 Node.js ennen {{ packageName }} p\xE4ivitt\xE4mist\xE4.","plugins.compat.node_link":"Kuinka p\xE4ivitt\xE4\xE4 Node.js","plugins.compat.node_too_low":"{{ pluginName }} laajennus suosittelee Node.js v{{ minVersion }} tai uudemman k\xE4ytt\xF6\xE4. K\xE4yt\xF6ss\xE4 on Node.js {{ installedVersion }}.","plugins.compat.title":"Yhteensopivuuden tarkastus","plugins.config.load_error":"Laajennuksen asetusten lataus ep\xE4onnistui.","plugins.config.must_be_array":"Laajennuksen asetusten on oltava joukko.","plugins.config.must_be_array_objects":"Laajennuksen asetusten on oltava oliojoukko.","plugins.config.must_be_object":"Asetusten osion pit\xE4\xE4 olla olio.","plugins.config.name_property":'Laitteella on oltava "name" ominaisuus',"plugins.config.please_fix":"Ole hyv\xE4 ja korjaa l\xF6ydetyt virheet ennen uuden osion lis\xE4\xE4mist\xE4.","plugins.config.remove_error":"Laajennuksen asetusten poisto ep\xE4onnistui.","plugins.disable.error":"Laajennuksen k\xE4yt\xF6st\xE4 poisto ep\xE4onnistui.","plugins.donate.message_1":"Useammiten k\xE4ytt\xE4j\xE4t asentavat laajennuksiaan suoraan Homebridge-k\xE4ytt\xF6liittym\xE4n kautta joten he eiv\xE4t todenn\xE4k\xF6isesti vieraile projektien GitHub-sivulla jossa kerrotaan tavoista tukea kehitt\xE4j\xE4\xE4.","plugins.donate.message_2":"Lahjoituslinkkien lis\xE4\xE4minen suoraan Homebridge-k\xE4ytt\xF6liittym\xE4\xE4n varmistaa, ett\xE4 k\xE4ytt\xE4j\xE4t osaavat halutessaan tukea Homebridge-kehitt\xE4ji\xE4.","plugins.donate.tile_donate_to":"Lahjoita {{ author }}","plugins.enable.error":"Laajennuksen k\xE4ytt\xF6\xF6notto ep\xE4onnistui.","plugins.manage.all_versions":"Kaikki versiot","plugins.manage.backup":"Download a backup before updating?","plugins.manage.changelog":"Full Changelog","plugins.manage.changelog_none":"Could not retrieve changelog, perhaps this plugin does not provide a <code>CHANGELOG.md</code> file.","plugins.manage.child_bridge_restart":"Lapsisilta uudellenk\xE4ynnistetty onnistuneesti.","plugins.manage.child_bridge_restart_failed":"Laajennuksen uudelleenk\xE4ynnistys ep\xE4onnistui, ole hyv\xE4 ja uudelleenk\xE4ynnist\xE4 Homebridge k\xE4sin.","plugins.manage.confirm_disable":"Haluatko varmasti poistaa k\xE4yt\xF6st\xE4 {{ pluginName }}?","plugins.manage.confirm_disable_accessory_1":"Kaikki t\xE4m\xE4n laajennuksen k\xE4ytt\xE4m\xE4t lis\xE4varusteet poistetaan Homebridge UI -lis\xE4varusten\xE4yt\xF6st\xE4 ja HomeKitist\xE4.","plugins.manage.confirm_disable_accessory_2":"Kun otat laajennuksen uudelleen k\xE4ytt\xF6\xF6n, lis\xE4varusteet tulevat takaisin Homebridge-k\xE4ytt\xF6liittym\xE4\xE4n ja HomeKitiin. Lis\xE4varusteet menett\xE4v\xE4t HomeKit-tietonsa (kuten liittyv\xE4t kohtaukset ja automaatio).","plugins.manage.confirm_disable_platform_1":"Kaikki t\xE4m\xE4n laajennuksen k\xE4ytt\xE4m\xE4t lis\xE4varusteet poistetaan Homebridge-k\xE4ytt\xF6liittym\xE4n lis\xE4laiten\xE4yt\xF6st\xE4, mutta ne j\xE4\xE4v\xE4t HomeKitiin Ei vastausta -merkinn\xE4ll\xE4.","plugins.manage.confirm_disable_platform_2":"Kun otat laajennuksen uudelleen k\xE4ytt\xF6\xF6n, lis\xE4varusteet tulevat takaisin Homebridge-k\xE4ytt\xF6liittym\xE4\xE4n ja niit\xE4 voidaan taas ohjata HomeKitissa. Lis\xE4varusteet eiv\xE4t menet\xE4 HomeKit-tietojaan (kuten niihin liittyvi\xE4 kohtauksia ja automaatioita).","plugins.manage.confirm_disable_setting":"Your setting for {{ setting }} is currently {{ value }}, therefore:","plugins.manage.confirm_enable":"Haluatko varmasti ottaa k\xE4ytt\xF6\xF6n {{ pluginName }}?","plugins.manage.disable":"Poista k\xE4yt\xF6st\xE4","plugins.manage.enable":"Ota k\xE4ytt\xF6\xF6n","plugins.manage.github_support":"You can show your support by giving this plugin a {{ iconStar }} (or the release a {{ iconThumbsUp }}) on GitHub!","plugins.manage.hb_restart":"Homebridge and the UI will automatically restart after any version change.","plugins.manage.hide_updates":"Disable Update Notifications","plugins.manage.hide_updates_desc":"If you don't want to see update notifications for this plugin, you can turn them off here.","plugins.manage.information":"Tietoja laajennuksesta","plugins.manage.install":"Asenna","plugins.manage.installed":"Asennettu","plugins.manage.json_config":"JSON asetukset","plugins.manage.manage_version":"Hallitse versioita","plugins.manage.manual_update_command":"P\xE4ivit\xE4 paketti suorittamalla Node.js-komentokehote P\xE4\xE4k\xE4ytt\xE4j\xE4n oikeuksilla ja suorita seuraavat komennot:","plugins.manage.more_info":"More information about scoped {{ scopedLink }} and verified {{ verifiedLink }} plugins.","plugins.manage.notes":"Release Notes","plugins.manage.notes_beta_1":"Thank you for helping improve {{ pluginName }} by testing a pre-release version.","plugins.manage.notes_beta_2":"You can use the Homebridge UI to revert back to the stable version at any time.","plugins.manage.notes_beta_3":"Please remember this is a pre-release version, and report any issues to the plugin's GitHub repository page.","plugins.manage.notes_latest":"Release notes are only shown when updating to the latest version.","plugins.manage.notes_none":"Could not retrieve release notes, perhaps this version does not have a GitHub release.","plugins.manage.online_updates":"Online p\xE4ivitykset eiv\xE4t toimi Windowsissa. Sinun on teht\xE4v\xE4 p\xE4ivitys k\xE4sin Homebridge palvelun pys\xE4ytt\xE4misen j\xE4lkeen.","plugins.manage.plugin_logs":"Laajennusten lokitiedot","plugins.manage.scoped.error":"Virhe havaittu. Alapuolelta voit ladata lokitiedot.","plugins.manage.scoped.info_1":"Homebridge scoped plugins have names beginning with {{ prefix }}.","plugins.manage.scoped.info_2":"For more information about scoped plugins and why to switch, see the wiki page {{ link }}.","plugins.manage.scoped.process":"T\xE4m\xE4 prosessi ei vaikuta Homebridge/HomeKit lis\xE4laitteisiin. Prosessia ei voi peruuttaa en\xE4\xE4 k\xE4ynnistyksen j\xE4lkeen. Se:","plugins.manage.scoped.switch":"Switch To Scoped Plugin","plugins.manage.scoped.windows":"Online-p\xE4ivityksi\xE4 ei tueta Windowsissa. Sinun on asennettava uusi laajennus ja poistettava vanha laajennus k\xE4sin.","plugins.manage.scoped_message":"Scoped plugins improve long-term reliability and ensure consistent maintenance by combining centralized oversight from the Homebridge team with continued involvement from the original maintainer.","plugins.manage.scoped_subtitle":"This plugin is scoped and verified.","plugins.manage.select_version":"Valitse asennettava versio","plugins.manage.uninstall":"Poista asennus","plugins.manage.uninstalled":"Poistettu","plugins.manage.unverified_message":"Vahvistamaton laajennus tarkoittaa ett\xE4 sille ei ole suoritettu Homebridge project teamin hyv\xE4ksymisprosessia. Hyv\xE4ksymisen puuttuminen ei v\xE4ltt\xE4m\xE4tt\xE4 ole haitallista. Laajennuksen yll\xE4pit\xE4jill\xE4 on erilaisia syit\xE4 j\xE4tt\xE4\xE4 hyv\xE4ksyminen hakematta.","plugins.manage.unverified_subtitle":"This plugin on vahvistamaton.","plugins.manage.update":"P\xE4ivit\xE4","plugins.manage.updated":"P\xE4ivitetty","plugins.manage.verified_message":"Laajennukset jotka on merkitty vahvistetuksi ovat l\xE4p\xE4isseet Homebridge project teamin hyv\xE4ksymisprosessin jossa varmistetaan ett\xE4 ne t\xE4ytt\xE4v\xE4t erilaisia vaatimuksia jotka kannustavat parhaisiin k\xE4yt\xE4nt\xF6ihin ja ongelmattomaan k\xE4ytt\xF6kokemukseen.","plugins.manage.verified_subtitle":"This plugin on vahvistettu.","plugins.placeholder_search_first":"K\xE4yt\xE4 yl\xE4puolista hakukentt\xE4\xE4 l\xF6yt\xE4\xE4ksesi ensimm\xE4isen laajennuksesi","plugins.placeholder_search_none":"No results were found","plugins.placeholder_search_plugin":"Etsi aennettavia laajennuksia","plugins.settings.custom.homebridge-gsh.label_account_linked":"Tili Linkitetty","plugins.settings.custom.homebridge-gsh.label_link_account":"Linkit\xE4 Tili","plugins.settings.custom.homebridge-gsh.message_about":"<strong>Homebridge Google Smart Home</strong> laajennus mahdollistaa Homebridge laitteidesi hallinnan Google Home \xE4lykaiuttimella tai sovelluksella.","plugins.settings.custom.homebridge-gsh.message_account_link_required":"Toiminnon k\xE4ytt\xF6\xF6nottamiseksi sinun on kirjauduttava Google tai GitHub tilillesi; varmista ett\xE4 k\xE4yt\xE4t samaa tili\xE4 kun lis\xE4\xE4t Homebridge toiminnon Google Home sovellukseesi.","plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required":"Homebridge t\xE4ytyy uudelleenk\xE4ynnist\xE4\xE4 toimintojen k\xE4ytt\xF6\xF6nottamiseksi.","plugins.settings.deconz.dump_no_exist":"Homebridge deCONZ dump tiedostoa ei viel\xE4 ole.","plugins.settings.hue.dump_no_exist":"Homebridge Hue dump tiedostoa ei viel\xE4 ole.","plugins.settings.label_open_config_editor":"Avaa Asetusten muokkain","plugins.settings.message_consult_documentation":"Ole hyv\xE4 ja tutustu laajennuksen ohjeisiin asetusten m\xE4\xE4rittelelmiseksi.","plugins.settings.message_manual_config_required":"T\xE4m\xE4 laajennus t\xE4ytyy m\xE4\xE4ritell\xE4 k\xE4sin Homebridge UI Asetusten muokkaimella.","plugins.settings.plugin_config_saved":"Laajennuksen asetukset talletettu","plugins.settings.restart_required":"Uudelleenk\xE4ynnist\xE4 Homebridge toimintojen k\xE4ytt\xF6\xF6nottamiseksi.","plugins.stats":"Plugin Statistics","plugins.stats_note":"Plugins cannot be installed from this page, this is provided just for interest.","plugins.status_disabled":"Poistettu k\xE4yt\xF6st\xE4","plugins.status_installed":"Asennettu","plugins.support.list_1":"Homebridge plugins are the building blocks of Homebridge, allowing you to add support for new accessories and platforms. Plugins add support for smart lights, cameras, TVs, etc, for brands that don't natively support HomeKit. For example, to bring your Ring doorbells and cameras into HomeKit, you can install the <code>homebridge-ring</code> plugin.","plugins.support.list_2":"Homebridge plugins are created by public contributors in the Homebridge community, and are not typically associated with the Homebridge maintainers, nor with the manufacturers of the accessories themselves. If you have a question about a specific plugin, you should let the plugin developer know via the plugin's GitHub page.","plugins.support.list_3":"There are currently over 4,700 plugins available for Homebridge, so you should be able to find plugins to suit your needs. If you are a Javascript/TypeScript developer (or want to take the opportunity to learn), you can also create your own plugin and share it with the Homebridge community. Check out the Support section for some handy links to get you started.","plugins.support.list_4":"Some plugins allow you to create 'virtual/dummy' accessories, which are accessories that do not have a physical counterpart. These can be used to create virtual accessories in HomeKit, such as virtual switches, lights, or sensors. Try searching for <code>dummy</code> or <code>virtual</code> in the search bar to find some examples.","plugins.toast_failed_to_load_plugin_schema":"Laajennuksen asetusten m\xE4\xE4rittelyn lataaminen ep\xE4onnistui.","plugins.toast_failed_to_load_plugins":"Laajennusten lataaminen eop\xE4onnistui","plugins.toast_failed_to_search_plugins":"Failed to search plugins","plugins.uninstall_bridge_error":"Lapsisillan poisto ep\xE4onnistui.","plugins.uninstall_remove_child_bridge":"Remove plugin child bridge?","plugins.uninstall_remove_child_bridges":"Remove {{ count }} plugin child bridges?","plugins.uninstall_remove_config_required":"Jos poistat laajennuksen pysyv\xE4sti, poista my\xF6s kaikki siihen liittyv\xE4t asetukset config.json tiedostosta ennen uudelleenk\xE4ynnistyst\xE4.","plugins.uninstall_remove_confirmation":"Haluatko varmasti poistaa {{ pluginName }}?","plugins.uninstall_remove_plugin_config":"Poistetaanko laajennuksen asetukset?","plugins.uninstall_warn_1":"When removing a child bridge, any accessories published by this bridge will be removed from the Homebridge cache.","plugins.uninstall_warn_2":"Lis\xE4varusteet vanhenevat HomeKitissa (ei vastausta). Poistaaksesi ne, sinun on poistettava t\xE4m\xE4 silta manuaalisesti HomeKitista. Voit tehd\xE4 t\xE4m\xE4n Home-sovelluksessa Kotiasetukset-osiosta.","reset.accessory_all.desc":"Poista kaikki lis\xE4varusteet v\xE4limuistista.","reset.accessory_all.list_1":"Kun napautat alla olevaa poistopainiketta, Homebridge k\xE4ynnistyy uudelleen ja kaikki nykyiset lis\xE4varusteet poistetaan Homebridgest\xE4 ja HomeKitist\xE4.","reset.accessory_all.list_2":"My\xF6s kaikki siihen liittyv\xE4t HomeKit-tiedot poistetaan, mukaan lukien t\xE4m\xE4n lis\xE4varusteen k\xE4ytt\xE4m\xE4t huoneyhteydet, kohtaukset ja automatiikat.","reset.accessory_all.list_3":"Kun Homebridge on k\xE4ynnistetty uudelleen, laajennukset lis\xE4\xE4v\xE4t kaikki lis\xE4laitteet uudelleen ik\xE4\xE4n kuin laajennus asennettaisiin ensimm\xE4ist\xE4 kertaa.","reset.accessory_all.title":"Poista kaikki lis\xE4varusteet","reset.accessory_ind.bridge":"Bridge","reset.accessory_ind.desc":"Remove individual accessories from the cache.","reset.accessory_ind.done":"Finished removing accessories from the cache, check the log for confirmation and/or errors.","reset.accessory_ind.fail":"Failed to remove accessories from cache, check the log for errors.","reset.accessory_ind.list_1":"Some plugins don't clean up after themselves properly. If you have stale accessories, you can remove them from the cache. This function can also be used to reset an existing accessory in HomeKit.","reset.accessory_ind.list_2":"The accessories will be removed from Homebridge and HomeKit, along with their related room associations, scenes and automations.","reset.accessory_ind.list_3":"After Homebridge restarts, your plugins will re-add any removed accessories as if the plugin was being installed for the first time.","reset.accessory_ind.title":"Remove Individual Accessories","reset.accessory_ind.unknown":"Unknown Name","reset.accessory_reset":"Homebridge sillan nollaus","reset.action_is_irreversible":"T\xE4m\xE4 toiminto on peruuttamaton. Ole hyv\xE4 ja lue huolellisesti ennen hyv\xE4ksymist\xE4.","reset.bridge_accessories.desc":"Remove all accessories published by a child bridge from the cache.","reset.bridge_accessories.empty":"Sinulla ei ole siltoja, joista voit poistaa lis\xE4varusteita.","reset.bridge_accessories.list_1":"This function can be used to reset a plugin's existing accessories in HomeKit. They will be removed from Homebridge and HomeKit, and then re-added by the plugin as new accessories.","reset.bridge_accessories.list_2":"Lapsisillan paritustiedot ja tila pysyv\xE4t ennallaan.","reset.bridge_accessories.title":"Poista siltojen lis\xE4varusteita","reset.bridge_all.desc":"Reset all bridges by removing them from the cache. T\xE4m\xE4 sis\xE4lt\xE4\xE4 Homebridgen p\xE4\xE4sillan, lapsisillat ja sillat ulkoisille lis\xE4varusteille.","reset.bridge_all.list_1":"This will reset the Homebridge bridge, all child bridges and bridges for external accessories from HomeKit.","reset.bridge_all.list_2":"Huomaa, ett\xE4 lis\xE4varusteet n\xE4kyv\xE4t HomeKitissa ilman vastausta, kunnes sillat on poistettu manuaalisesti HomeKitista. Voit tehd\xE4 t\xE4m\xE4n Home-sovelluksessa avaamalla Kodin asetukset > Koti keskittimet & sillat > {Bridge} > Poista Silta.","reset.bridge_all.list_3":"Kaikki Homebridgeen liittyyv\xE4t HomeKitin lis\xE4varusteet, kohtaukset ja automaatiot on m\xE4\xE4ritett\xE4v\xE4 uudelleen pariliitoksen purkamisen j\xE4lkeen.","reset.bridge_all.list_4":"Homebridge-sillan ja HomeKitin pariliitoksen PIN-koodi vaihdetaan. N\xE4et uudet arvot Homebridge-kokoonpanossa pariliitoksen purkamisen j\xE4lkeen.","reset.bridge_all.title":"Reset All Bridges","reset.bridge_ind.desc":"Reset an individual bridge by removing it from the cache. T\xE4m\xE4 voi olla lapsisilta tai silta ulkoiselle lis\xE4varusteelle, kuten kameralle tai televisiolle.","reset.bridge_ind.desc_child_active":"Homebridge has detected that these child bridges are in-use. Once removed, their accessories will be removed from the Homebridge cache. If paired with HomeKit, the bridge's accessories will show as 'No Response', and the bridge will need to be removed via the Home app. The child bridge's pairing information will be changed. Once Homebridge has restarted, the plugin will create the new child bridge and accessories. The new bridge will need to be re-paired with HomeKit. You can view the new pairing information from the corresponding plugin's bridge settings page.","reset.bridge_ind.desc_child_stale":"Homebridge has detected that these bridges are not in-use, but double-check before deleting. They could be left-over from previously uninstalled plugins. If paired with HomeKit, the accessories will show as 'No Response', and the bridge will need to be removed via the Home app.","reset.bridge_ind.desc_non_child":"Homebridge has detected that these bridges are in-use. You can remove them from the cache, but they will likely be re-added by the plugin when Homebridge restarts. The pairing information will remain unchanged.","reset.bridge_ind.done":"Finished resetting bridges, check the log for confirmation and/or errors.","reset.bridge_ind.fail":"Failed to reset bridges, check the log for errors.","reset.bridge_ind.head_child_active":"Active Child Bridges","reset.bridge_ind.head_child_stale":"Stale Child Bridges","reset.bridge_ind.head_non_child":"Non Child Bridges","reset.bridge_ind.title":"Reset Individual Bridges","reset.bridges.desc":"Jos sinulla on ongelmia Homebridgen, ulkoisen lis\xE4laitteen tai lapsisillan yhdist\xE4misess\xE4 HomeKitiin, saatat joutua poistamaan sen pariliitoksen HomeKitista aloittaaksesi uudelleen.","reset.bridges.empty":"Sinulla ei ole siltoja HomeKit-parin muodostamiseksi.","reset.bridges.title":"Sillat","reset.clear_cache_single.list_3":"Kun lis\xE4varuste poistetaan v\xE4limuistista, kaikki siihen liittyv\xE4t HomeKit-tiedot poistetaan. T\xE4m\xE4 sis\xE4lt\xE4\xE4 kaikki kohtaukset ja automaatiot, jotka k\xE4ytt\xE4v\xE4t t\xE4t\xE4 lis\xE4varustetta.","reset.delete_success":"Homebridgen uudelleenk\xE4ynnistys ja laitteiden v\xE4limuistin tyhjent\xE4minen.","reset.error_message":"Laitteiden v\xE4limuistia ei voitu ladata. Sinulla ei ehk\xE4 ole v\xE4limuistissa olevia laitteita.","reset.failed_to_reset":"Homebridgen nollaus ep\xE4onnistui. Katso lokitiedot.","reset.force_restart_hb_help_text":"K\xE4yt\xE4 t\xE4t\xE4 toimintoa pakottaaksesi hb-service-palvelu suorittamaan t\xE4yden uudelleenk\xE4ynnistyksen.","reset.no_accessories":"Sinulla ei ole v\xE4limuistissa olevia laitteita poistettaviksi.","restart.child_bridge_list":"Ole hyv\xE4 ja k\xE4ynnist\xE4 uudelleen n\xE4m\xE4 lapsisillat, jotta muutokset tulevat voimaan:","restart.child_bridges":"Ole hyv\xE4 ja k\xE4ynnist\xE4 laajennuksen lapsisillat uudelleen, jotta muutokset tulevat voimaan.","restart.label_restart_command_executed":"Uudelleenk\xE4ynnistys komento suoritettu","restart.please_wait_while_server_restarts":"Ole hyv\xE4 ja odota, t\xE4m\xE4 sivu p\xE4ivittyy automaattisesti kun Homebridge on taas toiminnassa.","restart.server_is_taking_long_time_to_restart":"Homebridgen k\xE4ynnistyminen tuntuu kest\xE4v\xE4n. Voi olla ett\xE4 joudut k\xE4ynnist\xE4m\xE4\xE4n Homebridge palvelun k\xE4sin.","restart.service_ready":"Homebridge valmiina","restart.title_restart":"Homebridge k\xE4ynnistyy uudelleen","restart.toast_server_restart_error":"Tapahtui virhe uudellenk\xE4ynnistys komennon l\xE4hett\xE4misess\xE4 palvelimelle","restart.toast_server_restart_timeout":"Homebridgen k\xE4ynnistyminen tuntuu kest\xE4v\xE4n","restart.toast_server_restarted":"Homebridge Uudellenk\xE4ynnistetty","restart.ui_online":"HB Palvelin & UI Valmiina","rpi.throttled.currently_message":"Raspberry Pi ilmoittaa juuri havainneensa alij\xE4nnitteen; tarkista, ett\xE4 se on kytketty sopivaan virtal\xE4hteeseen. Alij\xE4nnite voi johtaa j\xE4rjestelm\xE4n ep\xE4vakauteen ja SD-kortin vioittumiseen.","rpi.throttled.previously_message":"Raspberry Pi ilmoittaa havainneensa alij\xE4nnitteen uudelleenk\xE4ynnistyksen j\xE4lkeenkin; tarkista, ett\xE4 se on kytketty sopivaan virtal\xE4hteeseen.","rpi.throttled.undervoltage_title":"Alij\xE4nnite","settings.accessory.debug":"Accessory Debug Mode","settings.accessory.debug_desc":"If enabled, the Homebridge UI will log debug level messages to the console.","settings.cache.desc":"Homebridge s\xE4ilytt\xE4\xE4 tietoja laitteista v\xE4limuistissa joten niit\xE4 ei poisteta ja lis\xE4t\xE4 uudelleen HomeKit:in joka kerta kun Homebridge k\xE4ynnistyy uudelleen. Joskus n\xE4m\xE4 tiedot poikkeavat Homebridgen todellisesta laitteistosta.","settings.changes.saved":"Muutokset on tallennettu ja niiden k\xE4ytt\xF6\xF6notto vaatii uudellenk\xE4ynnistyksen.","settings.datetime.incorrect":"J\xE4rjestelm\xE4n aika n\xE4ytt\xE4isi olevan virheellinen. Sill\xE4 voi olla yll\xE4tt\xE4vi\xE4 vaikutuksia toimintaan. Lis\xE4tietoja t\xE4st\xE4.","settings.display.blue":"Sininen","settings.display.bluegrey":"Siniharmaa","settings.display.brown":"Ruskea","settings.display.cyan":"Syaani","settings.display.dark":"Tumma","settings.display.deep_purple":"Syv\xE4 purppura","settings.display.green":"Vihre\xE4","settings.display.grey":"Harmaa","settings.display.indigo":"Indigo","settings.display.lang":"Kieli","settings.display.light":"Valoisa","settings.display.lighting_mode":"N\xE4kym\xE4n valoisuus","settings.display.menu_default":"Default","settings.display.menu_freeze":"Keep Closed (On Desktop)","settings.display.menu_mode":"Menu Mode","settings.display.orange":"Oranssi","settings.display.pink":"Pinkki","settings.display.purple":"Puppura","settings.display.red":"Punainen","settings.display.show_betas":"Prefer Beta Versions","settings.display.teal":"Sinivihre\xE4","settings.display.temp_units":"L\xE4mp\xF6tilan yksikk\xF6","settings.display.temp_units.c":"Celsius (\xB0C)","settings.display.temp_units.f":"Fahrenheit (\xB0F)","settings.display.theme":"Teema","settings.display.wallpaper":"Wallpaper","settings.display.wallpaper_intro":"Upload a wallpaper for your Homebridge UI. This is currently shown on the login screen.","settings.display.wallpaper_rule":"You can choose an image file which is up to {{ maxFileSizeText }}.","settings.display.wallpaper_rule2":"You will need to click Save to upload the wallpaper to your Homebridge storage directory.","settings.display.wallpaper_success":"Wallpaper was successfully updated.","settings.general.title_display":"N\xE4ytt\xF6","settings.general.title_general":"Yleiset","settings.linux.restart":"Restart Command","settings.linux.restart_desc":"If no restart command is set the process will terminate with a non-zero exit code.","settings.linux.shutdown":"Shutdown Command","settings.linux.shutdown_desc":"If no shutdown command is set the process will terminate with a non-zero exit code.","settings.linux.temp":"Temperature File Path","settings.linux.temp_desc":"If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temperature file here. This will display the current temperature on the UI status page.","settings.matter.desc":"Enables Matter accessories on the main bridge. If only using Matter with child bridges, this setting does not need to be enabled - child bridges have independent Matter settings in their plugin bridge settings.","settings.matter.enabled":"Enabled","settings.matter.enabled_desc":"Whether to start a Matter instance and allow plugins to expose Matter accessories.","settings.matter.port":"Port","settings.matter.port_desc":"This must be between 1025 and 65533, and unique to any other configured port.","settings.matter.title":"Matter Settings","settings.mdns_advertiser":"mDNS mainostaja","settings.mdns_advertiser_exp":"kokeellinen","settings.mdns_advertiser_help":"Jos sinulla on ongelmia Homebridgen yhdist\xE4misess\xE4 HomeKitiin (kaikki lis\xE4varusteet n\xE4ytt\xE4v\xE4t Home-sovelluksessa No Response), yrit\xE4 k\xE4ytt\xE4\xE4 jotakin vaihtoehtoista mDNS-mainostajaa.","settings.mdns_advertiser_not_connected":"Ei yhdistetty","settings.mdns_advertiser_rec":"suositeltava","settings.name":"Homebridge Name","settings.network.hb_package":"Homebridge Module Path","settings.network.hb_package_desc":"If you have multiple versions of Homebridge installed, you can specify the path to the version you want to use here.","settings.network.host":"Host IP Address","settings.network.host_desc":"The host IP address to listen on. In most cases this will be <code>::</code> or <code>0.0.0.0</code>.","settings.network.mdns_advertise":"Advertise Via mDNS","settings.network.mdns_advertise_help":"Enable mDNS advertising (using Bonjour) for your Homebridge UI, making it discoverable as an HTTP service on your local network.","settings.network.message_network_interface":"Jos verkkosovitinta ei valita, Homebridge yritt\xE4\xE4 automaattisesti valita sovittimen jota k\xE4ytt\xE4\xE4.","settings.network.port_end":"End Port","settings.network.port_end_desc":"Control the end of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and higher than the start port above.","settings.network.port_hb":"Homebridgen Portti","settings.network.port_hb_desc":"Homebridgen k\xE4ytt\xE4m\xE4n portin numero. On oltava v\xE4lilt\xE4 1025-65533, ei saa olla sama kuin Homebridge UI:n portti.","settings.network.port_start":"Start Port","settings.network.port_start_desc":"Control the start of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and lower than the end port below.","settings.network.port_ui":"Homebridge UI:n Portti","settings.network.port_ui_desc":"Homebridge UI:n k\xE4ytt\xE4m\xE4n portin numero. On oltava v\xE4lilt\xE4 1025-65533, ei saa olla sama kuin Homebridgen portti.","settings.network.proxy":"Reverse Proxy Hostname","settings.network.proxy_desc":"When running behind a reverse proxy you may need to enter the hostname you use to access the UI.","settings.network.title_network":"Verkkosovitin","settings.network.title_network_interfaces":"Verkkosovittimet","settings.network.title_security":"Security","settings.network.title_terminal":"Logging & Terminal","settings.network.webroot":"Webroot Path","settings.network.webroot_desc":"This can be configured if you want to access the Homebridge UI under a specific URL path.","settings.reset_bridge.error":"Failed to reset bridge.","settings.security.auth":"Authentication","settings.security.auth_desc":"Whether to enable authentication for the Homebridge UI with a username and password.","settings.security.cert":"Certificate Path","settings.security.https":"Enable HTTPS","settings.security.https_desc":"Enable HTTPS using an auto-generated self-signed certificate or by providing your own certificate files.","settings.security.https_keycert":"Private Key + Certificate","settings.security.https_pfx":"PKCS#12 Certificate + Passphrase","settings.security.https_raspbian":"HTTPS is already enabled by default when running the Homebridge Raspbian image {{ link }}.","settings.security.https_selfsigned":"Self-Signed Certificate","settings.security.key":"Private Key Path","settings.security.pass":"PKCS#12 Certificate Passphrase","settings.security.pfx":"PKCS#12 Certificate Path","settings.security.selfsigned_generate_keycert":"Generate Self\u2011Signed & Use as Key + Cert","settings.security.selfsigned_generate_selfsigned":"Generate & Enable Self\u2011Signed Mode","settings.security.selfsigned_generate_success_keycert":"Generated self\u2011signed certificate and set as Key + Cert","settings.security.selfsigned_generate_success_selfsigned":"Generated self\u2011signed certificate and enabled Self\u2011signed mode","settings.security.selfsigned_hostnames":"Certificate Hostnames","settings.security.selfsigned_hostnames_desc":"Comma-separated list of hostnames or IP addresses to include in the certificate (e.g., localhost, 127.0.0.1, homebridge.local, 192.168.1.100)","settings.security.ssl_upload_keycert_aria":"Upload private key and certificate","settings.security.ssl_upload_pfx_aria":"Upload PKCS#12 certificate","settings.security.ssl_upload_success_keycert":"Certificate and private key uploaded","settings.security.ssl_upload_success_pfx":"PKCS#12 certificate uploaded","settings.security.ssl_validate":"Validate SSL","settings.security.ssl_validate_error":"SSL configuration is invalid.","settings.security.ssl_validate_success":"SSL configuration is valid.","settings.security.ui_control":"Accessory Control Lists","settings.security.ui_control_desc":"Define which bridges and bridged accessories can be controlled or blocked by the Homebridge UI.","settings.security.ui_control_desc_2":"Allow the UI to control the accessories on a bridge by toggling on the switch below.","settings.service.debug_tooltip":"Jotkut laajennukset tarvitsevat DEBUG {{ link }} ymp\xE4rist\xF6muuttujan jotta voivat kirjata debug tason lokitietoja.","settings.service.node_tooltip":"Node.js ajonaikaiset asetukset t\xE4lle prosessille. J\xE4t\xE4 tyhj\xE4ksi, ellet tied\xE4 mit\xE4 olet tekem\xE4ss\xE4.","settings.startup.debug":"Homebridge vianhaku tila","settings.startup.debug_desc_v1":"Ota t\xE4m\xE4 k\xE4ytt\xF6\xF6n, jos tarvitset yksityiskohtaisempia lokeja. T\xE4m\xE4 asetus koskee Homebridgen p\xE4\xE4siltaa sek\xE4 kaikkia lapsisiltoja. Jotkut laajennukset voivat my\xF6s noudattaa t\xE4t\xE4 asetusta ja tuottaa yksityiskohtaisempia lokeja.","settings.startup.debug_desc_v2":"Ota t\xE4m\xE4 k\xE4ytt\xF6\xF6n, jos tarvitset yksityiskohtaisempia lokeja. T\xE4m\xE4 asetus koskee Homebridgen p\xE4\xE4siltaa. Lapsisiltojen asetukset l\xF6ytyv\xE4t liit\xE4nn\xE4issivun lapsisiltam\xE4\xE4rityksist\xE4. Jotkut laajennukset voivat my\xF6s noudattaa t\xE4t\xE4 asetusta ja tuottaa yksityiskohtaisempia lokeja.","settings.startup.insecure":"Enable UI Accessory Control","settings.startup.insecure_desc":"Hallitaksesi laitteitasi Homebridge UI:n kautta Homebridgen on toimittava turvattomassa tilassa.","settings.startup.keep_accessories":"Pid\xE4 poistettujen lis\xE4osien laitteet","settings.startup.keep_accessories_desc":"Jos valittu, niin laitteiden tiedot s\xE4ilytet\xE4\xE4n v\xE4limuistissa vaikka siihen liittyv\xE4 lis\xE4osa poistetaan. T\xE4st\xE4 voi olla hy\xF6ty\xE4 jos my\xF6hemmin asennat lis\xE4osan uudelleen.","settings.startup.metrics":"Enable Server Metric Monitoring","settings.startup.metrics_desc":"When enabled, the Homebridge UI will collect and show CPU and memory stats on the status page.","settings.startup.scheduled_restart":"Scheduled Restart Cron","settings.startup.scheduled_restart_desc":"Schedule automatic restarts relative to your timezone using a cron expression. Leave empty to disable. Create a cron expression {{ link }}.","settings.startup.scheduled_restart_desc_2":"You can apply this setting per child bridge from the plugin bridge configuration.","settings.startup.session":"Session Timeout","settings.startup.session_days":"days","settings.startup.session_desc":"The number of seconds before a user will be logged out of the UI. Defaults to 8 hours.","settings.startup.session_hours":"hours","settings.startup.session_inactivity_based":"Inactivity-Based Session Refresh","settings.startup.session_inactivity_based_desc":"When enabled, the session will automatically refresh on navigation to prevent logout during active use.","settings.startup.session_minutes":"minutes","settings.terminal.buffer_size":"Terminal Buffer Character Size","settings.terminal.buffer_size_help":"Amount of terminal output to preserve for persistent sessions. Larger values use more memory.","settings.terminal.log_max":"Log Max Size","settings.terminal.log_max_desc":"The max log size (bytes). Set to -1 to disable log truncation.","settings.terminal.log_truncate":"Log Truncate Size","settings.terminal.log_truncate_desc":"The size (bytes) to truncate the log to once it goes over the max size specified above.","settings.terminal.persistence":"Terminal Session Persistence","settings.terminal.persistence_confirm_message":"Disabling terminal session persistence will terminate your current terminal session.","settings.terminal.persistence_confirm_title":"Disable Terminal Session Persistence","settings.terminal.persistence_help":"When enabled, terminal sessions will persist when navigating away and can be resumed when returning to the terminal page (or status page widget). Terminal sessions are shared across Homebridge UI admin users.","settings.terminal.warning":"Hide Terminal Termination Warning","settings.terminal.warning_help":"When enabled, the warning dialog will not be shown before terminating non-persistent terminal sessions.","settings.title_startup_options":"K\xE4ynnist\xE4minen ja ymp\xE4rist\xF6","settings.unpair_bridge.load_error":"Paritettuja siltoja ei voitu otta k\xE4ytt\xF6\xF6n.","settings.warning_pwa":"This setting cannot be changed when accessing the UI from a PWA, please use a regular browser.","settings.warning_webroot":"Homebridge does not have write access to the served <code>index.html</code> file. To set up a webroot, please fix this issue and restart the Homebridge service.","setup.button_get_started":"Aloitetaan","setup.create_account":"Luo k\xE4ytt\xE4j\xE4tunnus","setup.intro":"If you are setting up for the first time, or if you just need to reset the password for your existing Homebridge setup, then choose <strong>Get Started</strong>.","setup.welcome_to_homebridge":"Tervetuloa Homebridge j\xE4rjestelm\xE4\xE4n",setup_wizard_complete:"Restore Complete!",setup_wizard_complete_title:"Onnea!",setup_wizard_completed:"Asetukset ovat valmiit ja Homebridge on valmis k\xE4ytt\xF6\xF6n.",setup_wizard_create_info:"Once Homebridge is set up, you can set up 2FA on your account, or disable the need for authentication altogether.",setup_wizard_page_title:"Setup Homebridge",setup_wizard_restore:"Palauta varmuuskopiosta",setup_wizard_restoring:"Restoring Backup...",setup_wizard_starting:"Starting Homebridge...","status.code_scan":"Skannaa lis\xE4t\xE4ksesi HomeKit j\xE4rjestelm\xE4\xE4n","status.cpu.load":"K\xE4ytt\xF6aste","status.cpu.temp":"L\xE4mp\xF6tila","status.cpu.title_cpu":"CPU","status.credits.plugins_thanks":"Homebridge plugins are created by awesome developers in the Homebridge community.","status.credits.supporters":"Supporters","status.credits.title":"Ansiot","status.credits.translations":"Translations","status.credits.translations_thanks":"Homebridge UI translations are provided by the community, with special thanks to:","status.homebridge.checking":"Tarkistetaan p\xE4ivityksi\xE4","status.homebridge.up_to_date":"Ajan tasalla","status.memory.label_available":"Saatavilla","status.memory.label_total":"Yhteens\xE4","status.memory.title_memory":"Muisti","status.network.received_per_second":"Vastaanotettu","status.network.sent_per_second":"L\xE4hetetty","status.network.title_network":"Verkon aktiivisuus","status.readiness.node_no":"Your version of Node.js is not compatible with {{ app }}.","status.readiness.node_yes":"Your version of Node.js is compatible with {{ app }}.","status.readiness.title":"{{ app }} Readiness","status.services.label_not_enabled":"Not Enabled","status.services.label_not_running":"Ei k\xE4ynniss\xE4","status.services.label_running":"K\xE4ynniss\xE4","status.services.updates":"Update Information","status.uptime.title_uptime":"K\xE4yntiaika","status.widget.accessories.choose_accessories":"Valitse t\xE4ss\xE4 sovelmassa n\xE4ytett\xE4v\xE4t lis\xE4varusteet Lis\xE4varusteet-v\xE4lilehdelt\xE4.","status.widget.account_1":"The widget layout is shared among all Homebridge UI users.","status.widget.account_2":"Admin users can modify the layout, while non-admin users cannot make changes.","status.widget.add.label_pairing_code":"Paritus koodi","status.widget.add.matter_pairing_code":"Matter Pairing Code","status.widget.bridge.restart_error":"Lapsisillan uudelleenk\xE4ynnistys ep\xE4onnistui.","status.widget.clock":"Kello","status.widget.clock_dateformat":"P\xE4iv\xE4yksen muoto","status.widget.clock_timeformat":"Ajan muoto","status.widget.expand_docker":"Expand Docker Container Information","status.widget.font_size":"Kirjasinkoko","status.widget.font_weight":"Kirjasimen paksuus","status.widget.hide_node_info":"Hide Node.js Updates","status.widget.hide_npm":"Show npm Version","status.widget.hide_on_mobile":"Piilota supistetussa n\xE4kym\xE4ss\xE4 (mobiilin\xE4yt\xF6t)","status.widget.homebridge_logs":"Homebridge lokitiedot","status.widget.info":"Tietoja j\xE4rjestelm\xE4st\xE4","status.widget.info.arch":"Arch.","status.widget.info.config_path":"asetusten Polku","status.widget.info.docker":"Docker","status.widget.info.docker_update_message":"Updating the Docker container requires manually pulling the latest image and restarting the container. Homebridge does not perform this automatically. Refer to your Docker image's documentation for update instructions.","status.widget.info.docker_update_title":"Docker Container Update","status.widget.info.hostname":"Is\xE4nt\xE4nimi","status.widget.info.ipv4":"IPv4","status.widget.info.ipv6":"IPv6","status.widget.info.no":"Ei","status.widget.info.node_major":"Node.js Major Versions","status.widget.info.node_next_no":"Your current architecture ({{ architecture }}) is 32-bit, which is not supported. You will need to migrate to a 64-bit system. Please use Node.js v22 instead, which we will be supporting until April 2027.","status.widget.info.node_next_yes":"Your current architecture ({{ architecture }}) supports Node.js v24, so you can upgrade when you are ready.","status.widget.info.node_unsupp":"Ei tuettu","status.widget.info.node_unsupp_message":"K\xE4yt\xE4t Node.js-versiota, jota Homebridge ei tue virallisesti. Sinun tulisi harkita vaihtamista tuettuun versioon.","status.widget.info.node_update_message":"Homebridge vaatii toimiakseen Node.js:n, joka on asennettu j\xE4rjestelm\xE4\xE4n. Sinun on aika ajoin p\xE4ivitett\xE4v\xE4 Node.js, jotta voit ottaa k\xE4ytt\xF6\xF6n tuen uusille ominaisuuksille. Homebridge (ja vahvistetut laajennukset) tukevat kaikkia Node.js:n nykyisi\xE4 Active- ja Maintenance LTS -julkaisuja.","status.widget.info.node_update_message_2":"For Docker/Synology users, the Node.js version is managed by the Docker image or Synology package. You can hide Node.js update information using the widget settings.","status.widget.info.nodejs_path":"Node.js polku","status.widget.info.os":"K\xE4ytt\xF6j\xE4rjestelm\xE4","status.widget.info.plugin_path":"Laajennusten polku","status.widget.info.service_user":"K\xE4ytt\xE4j\xE4","status.widget.info.storage_path":"Tallennuskansio","status.widget.info.synology_package":"Synology ohjelmisto","status.widget.info.timezone":"Aikavy\xF6hyke","status.widget.info.yes":"Kyll\xE4","status.widget.network.history_items":"edelliset kohteet","status.widget.network.items":"kohteet","status.widget.network.network_interface":"Verkkosovitin","status.widget.network.none_selected":"Using Default","status.widget.network.refresh_interval":"P\xE4ivityksen aikav\xE4li ","status.widget.network.seconds":"sekuntia","status.widget.qr_paired":"Paritettu","status.widget.qr_unpaired":"Ei paritettu","status.widget.show_hide":"N\xE4yt\xE4/Piilota sovelmat","status.widget.title_manage_widget":"Hallitse sovelmaa","status.widget.update_node_no":"{{ pluginName }} is not compatible with Node {{ nodeVersion }}.","status.widget.update_node_unknown":"The developer of {{ pluginName }} has not specified the Node version compatibility.","status.widget.update_node_yes":"{{ pluginName }} is compatible with Node {{ nodeVersion }}.","status.widget.uptime.label_process":"Prosessi","status.widget.uptime.label_server":"Palvelin","status.widget.weather.label_config_required_help":"Ole hyv\xE4 ja valitse kaupunki sovelman asetuksissa.","status.widget.weather.label_search_for_your_city":"Hae kaupunkia Englanniksi:","status.widget.weather.title_weather":"S\xE4\xE4","support.dev.api":"Homebridge API","support.dev.api_hap":"HAP-NodeJS API","support.dev.api_hap_sub":"HAP-NodeJS on HomeKit Accessory Server -sovelluksen toteutus, joka on m\xE4\xE4ritelty HomeKit Accessory Protocol (HAP) -protokollassa, jonka Apple m\xE4\xE4rittelee osaksi HomeKit Frameworkia.","support.dev.api_sub":"Homebridge on kevyt Node.js-palvelin, jota voit k\xE4ytt\xE4\xE4 kotiverkossasi k\xE4ytt\xE4\xE4ksesi HomeKit Accessory Protocol (HAP) -protokollaa.","support.dev.item_swagger":"Swagger Docs","support.dev.item_swagger_sub":"Homebridge REST API antaa sinun olla vuorovaikutuksessa Homebridge-palvelimesi kanssa HTTP-pyynt\xF6jen avulla.","support.dev.template":"Plugin Template Repo","support.dev.template_sub":"Malli Homebridge-laajennus, jota voidaan k\xE4ytt\xE4\xE4 pohjana oman laajennuksen kehitt\xE4miseen.","support.dev.title":"Kehitt\xE4j\xE4t","support.dev.verified":"Verified By Homebridge","support.dev.verified_sub":"Verified By Homebridge -ohjelman avulla laajennuskehitt\xE4j\xE4t voivat saada Homebridge-projektitiimin tarkistamaan ja hyv\xE4ksym\xE4\xE4n lis\xE4osat.","support.links.discord":"Discord Palvelin","support.links.discord_sub":"Liity Homebridge Discord -chat-palvelimeen keskustellaksesi muiden k\xE4ytt\xE4jien ja kehitt\xE4jien kanssa.","support.links.documentation":"Dokumentaatio","support.links.documentation_sub":"Homebridgen dokumentaatiossa on runsaasti tietoa Homebridgen k\xE4yt\xF6n aloittamisesta ja yleisist\xE4 ongelmien ratkaisuista.","support.links.issue":"Raportoi virhetoiminto","support.links.issue_sub":"Jos sinulla ilmenee virhetoiminto Homebridge:sa, ole hyv\xE4 ja avaa asiasta uusi aihe GitHub:sa. T\xE4m\xE4 ei koske laajennuksiin liittyvi\xE4 virheit\xE4.","support.links.reddit":"Reddit yhteis\xF6","support.links.reddit_sub":"Homebridge subreddit on hyv\xE4 paikka jakaa Homebridge asetuksesi ja etsi\xE4 apua.","support.links.title":"Hy\xF6dyllisi\xE4 linkkej\xE4","support.title":"Tuki","toast.no_auth":"Vain p\xE4\xE4k\xE4ytt\xE4jill\xE4 on p\xE4\xE4sy pyydetylle sivulle.","toast.title_error":"Virhe","toast.title_success":"Onnistui","toast.title_warning":"Varoitus","users.button_add_user":"Lis\xE4\xE4 K\xE4ytt\xE4j\xE4","users.label_admin_user":"P\xE4\xE4k\xE4ytt\xE4j\xE4","users.label_confirm_password":"Vahvista salasana","users.label_full_name":"Koko nimi","users.label_new_password":"Uusi salasana","users.label_password":"Salasana","users.label_username":"K\xE4ytt\xE4j\xE4tunnus","users.setup_2fa":"M\xE4\xE4rittele 2FA","users.setup_2fa_activate_error":"2FA:n aktivoinnissa tapahtui virhe","users.setup_2fa_cannot_setup_2fa":"2FA:ta ei voitu m\xE4\xE4ritell\xE4","users.setup_2fa_disable":"Lopeta 2FA:n k\xE4ytt\xF6","users.setup_2fa_disable_current_password":"Sy\xF6t\xE4 salasana poistaaksesi kaksivaiheinen tunnistautuminen k\xE4yt\xF6st\xE4:","users.setup_2fa_disable_success":"Kaksivaiheinen tunnistautuminen on poistettu k\xE4yt\xF6st\xE4.","users.setup_2fa_enable":"Ota k\xE4ytt\xF6\xF6n 2FA","users.setup_2fa_enable_error":"Tapahtui virhe 2FA:n k\xE4ytt\xF6\xF6notossa","users.setup_2fa_enabled_success":"Kaksivaiheinen tunnistautuminen on otettu k\xE4ytt\xF6\xF6n.","users.setup_2fa_enter_code":"Sy\xF6t\xE4 authenticator sovelluksesi koodi:","users.setup_2fa_scan_qr_code":"Lue alapuolinen QR koodi authenticator sovelluksellasi:","users.setup_2fa_scan_qr_manual":"If you cannot scan the QR code, you can enter the following secret key manually:","users.setup_2fa_server_time_out":"Palvelimesi aika eroaa oikeasta ajasta {{ timeDiffError }} ms. maksimi virhe on +/-5000 ms.","users.setup_2fa_warning":"Kaksivaiheinen tunnistautuminen vaatii Homebridge palvelimen olevan tarkasti oikeassa ajassa. Jos palvelimen aikaa ei ole mahdollista synkronoida niin 2FA:ta ei kannata ottaa k\xE4ytt\xF6\xF6n koska on olemassa riski ett\xE4 kirjautuminen estyy.","users.support.acc_1":"There are two types of users that can access the Homebridge UI: admin and non-admin users. Admins can access and control everything available in the UI. Non-admin users have a read-only view of the following pages:","users.support.acc_2":"2FA can only be set up on admin accounts, and must do this via the users page logged in as themselves.","users.support.control":"can be controlled","users.title_add_user":"Lis\xE4\xE4 k\xE4ytt\xE4j\xE4","users.title_edit_user":"Muokkaa k\xE4ytt\xE4j\xE4\xE4","users.title_users":"K\xE4ytt\xE4j\xE4t","users.toast_added_new_user":"Uusi k\xE4ytt\xE4j\xE4 lis\xE4tty","users.toast_failed_to_add_user":"K\xE4ytt\xE4j\xE4n lis\xE4ys ep\xE4onnistui","users.toast_failed_to_delete_user":"K\xE4ytt\xE4j\xE4n poisto ep\xE4onnistui","users.toast_updated_user":"K\xE4ytt\xE4j\xE4 p\xE4ivitetty","users.toast_user_deleted":"K\xE4ytt\xE4j\xE4 poistettu"}});export{s as a};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{Lb as xt,Oc as Ft,Pc as kt,ec as Dt,fc as Ut,nb as _t,xa as qt}from"./chunk-ZPXACREZ.js";import{e as d,g as Ve,h as Lt}from"./chunk-B4AJQJMI.js";var Ht=d((Fn,zt)=>{zt.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var T=d(P=>{var st,Ke=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];P.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};P.getSymbolTotalCodewords=function(t){return Ke[t]};P.getBCHDigit=function(n){let t=0;for(;n!==0;)t++,n>>>=1;return t};P.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');st=t};P.isKanjiModeEnabled=function(){return typeof st<"u"};P.toSJIS=function(t){return st(t)}});var Q=d(w=>{w.L={bit:1};w.M={bit:0};w.Q={bit:3};w.H={bit:2};function Je(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return w.L;case"m":case"medium":return w.M;case"q":case"quartile":return w.Q;case"h":case"high":return w.H;default:throw new Error("Unknown EC Level: "+n)}}w.isValid=function(t){return t&&typeof t.bit<"u"&&t.bit>=0&&t.bit<4};w.from=function(t,e){if(w.isValid(t))return t;try{return Je(t)}catch{return e}}});var Jt=d((Hn,Kt)=>{function Vt(){this.buffer=[],this.length=0}Vt.prototype={get:function(n){let t=Math.floor(n/8);return(this.buffer[t]>>>7-n%8&1)===1},put:function(n,t){for(let e=0;e<t;e++)this.putBit((n>>>t-e-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(n){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),n&&(this.buffer[t]|=128>>>this.length%8),this.length++}};Kt.exports=Vt});var Yt=d((Vn,Ot)=>{function k(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}k.prototype.set=function(n,t,e,r){let o=n*this.size+t;this.data[o]=e,r&&(this.reservedBit[o]=!0)};k.prototype.get=function(n,t){return this.data[n*this.size+t]};k.prototype.xor=function(n,t,e){this.data[n*this.size+t]^=e};k.prototype.isReserved=function(n,t){return this.reservedBit[n*this.size+t]};Ot.exports=k});var Qt=d(v=>{var Oe=T().getSymbolSize;v.getRowColCoords=function(t){if(t===1)return[];let e=Math.floor(t/7)+2,r=Oe(t),o=r===145?26:Math.ceil((r-13)/(2*e-2))*2,i=[r-7];for(let s=1;s<e-1;s++)i[s]=i[s-1]-o;return i.push(6),i.reverse()};v.getPositions=function(t){let e=[],r=v.getRowColCoords(t),o=r.length;for(let i=0;i<o;i++)for(let s=0;s<o;s++)i===0&&s===0||i===0&&s===o-1||i===o-1&&s===0||e.push([r[i],r[s]]);return e}});var Gt=d(jt=>{var Ye=T().getSymbolSize,vt=7;jt.getPositions=function(t){let e=Ye(t);return[[0,0],[e-vt,0],[0,e-vt]]}});var $t=d(g=>{g.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var b={N1:3,N2:3,N3:40,N4:10};g.isValid=function(t){return t!=null&&t!==""&&!isNaN(t)&&t>=0&&t<=7};g.from=function(t){return g.isValid(t)?parseInt(t,10):void 0};g.getPenaltyN1=function(t){let e=t.size,r=0,o=0,i=0,s=null,u=null;for(let c=0;c<e;c++){o=i=0,s=u=null;for(let l=0;l<e;l++){let a=t.get(c,l);a===s?o++:(o>=5&&(r+=b.N1+(o-5)),s=a,o=1),a=t.get(l,c),a===u?i++:(i>=5&&(r+=b.N1+(i-5)),u=a,i=1)}o>=5&&(r+=b.N1+(o-5)),i>=5&&(r+=b.N1+(i-5))}return r};g.getPenaltyN2=function(t){let e=t.size,r=0;for(let o=0;o<e-1;o++)for(let i=0;i<e-1;i++){let s=t.get(o,i)+t.get(o,i+1)+t.get(o+1,i)+t.get(o+1,i+1);(s===4||s===0)&&r++}return r*b.N2};g.getPenaltyN3=function(t){let e=t.size,r=0,o=0,i=0;for(let s=0;s<e;s++){o=i=0;for(let u=0;u<e;u++)o=o<<1&2047|t.get(s,u),u>=10&&(o===1488||o===93)&&r++,i=i<<1&2047|t.get(u,s),u>=10&&(i===1488||i===93)&&r++}return r*b.N3};g.getPenaltyN4=function(t){let e=0,r=t.data.length;for(let i=0;i<r;i++)e+=t.data[i];return Math.abs(Math.ceil(e*100/r/5)-10)*b.N4};function Qe(n,t,e){switch(n){case g.Patterns.PATTERN000:return(t+e)%2===0;case g.Patterns.PATTERN001:return t%2===0;case g.Patterns.PATTERN010:return e%3===0;case g.Patterns.PATTERN011:return(t+e)%3===0;case g.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(e/3))%2===0;case g.Patterns.PATTERN101:return t*e%2+t*e%3===0;case g.Patterns.PATTERN110:return(t*e%2+t*e%3)%2===0;case g.Patterns.PATTERN111:return(t*e%3+(t+e)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}g.applyMask=function(t,e){let r=e.size;for(let o=0;o<r;o++)for(let i=0;i<r;i++)e.isReserved(i,o)||e.xor(i,o,Qe(t,i,o))};g.getBestMask=function(t,e){let r=Object.keys(g.Patterns).length,o=0,i=1/0;for(let s=0;s<r;s++){e(s),g.applyMask(s,t);let u=g.getPenaltyN1(t)+g.getPenaltyN2(t)+g.getPenaltyN3(t)+g.getPenaltyN4(t);g.applyMask(s,t),u<i&&(i=u,o=s)}return o}});var ct=d(ut=>{var I=Q(),j=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],G=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];ut.getBlocksCount=function(t,e){switch(e){case I.L:return j[(t-1)*4+0];case I.M:return j[(t-1)*4+1];case I.Q:return j[(t-1)*4+2];case I.H:return j[(t-1)*4+3];default:return}};ut.getTotalCodewordsCount=function(t,e){switch(e){case I.L:return G[(t-1)*4+0];case I.M:return G[(t-1)*4+1];case I.Q:return G[(t-1)*4+2];case I.H:return G[(t-1)*4+3];default:return}}});var Wt=d(W=>{var z=new Uint8Array(512),$=new Uint8Array(256);(function(){let t=1;for(let e=0;e<255;e++)z[e]=t,$[t]=e,t<<=1,t&256&&(t^=285);for(let e=255;e<512;e++)z[e]=z[e-255]})();W.log=function(t){if(t<1)throw new Error("log("+t+")");return $[t]};W.exp=function(t){return z[t]};W.mul=function(t,e){return t===0||e===0?0:z[$[t]+$[e]]}});var Zt=d(H=>{var lt=Wt();H.mul=function(t,e){let r=new Uint8Array(t.length+e.length-1);for(let o=0;o<t.length;o++)for(let i=0;i<e.length;i++)r[o+i]^=lt.mul(t[o],e[i]);return r};H.mod=function(t,e){let r=new Uint8Array(t);for(;r.length-e.length>=0;){let o=r[0];for(let s=0;s<e.length;s++)r[s]^=lt.mul(e[s],o);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r};H.generateECPolynomial=function(t){let e=new Uint8Array([1]);for(let r=0;r<t;r++)e=H.mul(e,new Uint8Array([1,lt.exp(r)]));return e}});var ee=d((jn,te)=>{var Xt=Zt();function at(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}at.prototype.initialize=function(t){this.degree=t,this.genPoly=Xt.generateECPolynomial(this.degree)};at.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");let e=new Uint8Array(t.length+this.degree);e.set(t);let r=Xt.mod(e,this.genPoly),o=this.degree-r.length;if(o>0){let i=new Uint8Array(this.degree);return i.set(r,o),i}return r};te.exports=at});var ft=d(ne=>{ne.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}});var dt=d(B=>{var re="[0-9]+",ve="[A-Z $%*+\\-./:]+",V="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";V=V.replace(/u/g,"\\u");var je="(?:(?![A-Z0-9 $%*+\\-./:]|"+V+`)(?:.|[\r
|
|
2
|
+
]))+`;B.KANJI=new RegExp(V,"g");B.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");B.BYTE=new RegExp(je,"g");B.NUMERIC=new RegExp(re,"g");B.ALPHANUMERIC=new RegExp(ve,"g");var Ge=new RegExp("^"+V+"$"),$e=new RegExp("^"+re+"$"),We=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");B.testKanji=function(t){return Ge.test(t)};B.testNumeric=function(t){return $e.test(t)};B.testAlphanumeric=function(t){return We.test(t)}});var M=d(p=>{var Ze=ft(),gt=dt();p.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};p.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};p.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};p.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};p.MIXED={bit:-1};p.getCharCountIndicator=function(t,e){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!Ze.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]};p.getBestModeForData=function(t){return gt.testNumeric(t)?p.NUMERIC:gt.testAlphanumeric(t)?p.ALPHANUMERIC:gt.testKanji(t)?p.KANJI:p.BYTE};p.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")};p.isValid=function(t){return t&&t.bit&&t.ccBits};function Xe(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return p.NUMERIC;case"alphanumeric":return p.ALPHANUMERIC;case"kanji":return p.KANJI;case"byte":return p.BYTE;default:throw new Error("Unknown mode: "+n)}}p.from=function(t,e){if(p.isValid(t))return t;try{return Xe(t)}catch{return e}}});var ce=d(R=>{var Z=T(),tn=ct(),oe=Q(),S=M(),ht=ft(),se=7973,ie=Z.getBCHDigit(se);function en(n,t,e){for(let r=1;r<=40;r++)if(t<=R.getCapacity(r,e,n))return r}function ue(n,t){return S.getCharCountIndicator(n,t)+4}function nn(n,t){let e=0;return n.forEach(function(r){let o=ue(r.mode,t);e+=o+r.getBitsLength()}),e}function rn(n,t){for(let e=1;e<=40;e++)if(nn(n,e)<=R.getCapacity(e,t,S.MIXED))return e}R.from=function(t,e){return ht.isValid(t)?parseInt(t,10):e};R.getCapacity=function(t,e,r){if(!ht.isValid(t))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=S.BYTE);let o=Z.getSymbolTotalCodewords(t),i=tn.getTotalCodewordsCount(t,e),s=(o-i)*8;if(r===S.MIXED)return s;let u=s-ue(r,t);switch(r){case S.NUMERIC:return Math.floor(u/10*3);case S.ALPHANUMERIC:return Math.floor(u/11*2);case S.KANJI:return Math.floor(u/13);case S.BYTE:default:return Math.floor(u/8)}};R.getBestVersionForData=function(t,e){let r,o=oe.from(e,oe.M);if(Array.isArray(t)){if(t.length>1)return rn(t,o);if(t.length===0)return 1;r=t[0]}else r=t;return en(r.mode,r.getLength(),o)};R.getEncodedBits=function(t){if(!ht.isValid(t)||t<7)throw new Error("Invalid QR Code version");let e=t<<12;for(;Z.getBCHDigit(e)-ie>=0;)e^=se<<Z.getBCHDigit(e)-ie;return t<<12|e}});var de=d(fe=>{var pt=T(),ae=1335,on=21522,le=pt.getBCHDigit(ae);fe.getEncodedBits=function(t,e){let r=t.bit<<3|e,o=r<<10;for(;pt.getBCHDigit(o)-le>=0;)o^=ae<<pt.getBCHDigit(o)-le;return(r<<10|o)^on}});var he=d((tr,ge)=>{var sn=M();function _(n){this.mode=sn.NUMERIC,this.data=n.toString()}_.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)};_.prototype.getLength=function(){return this.data.length};_.prototype.getBitsLength=function(){return _.getBitsLength(this.data.length)};_.prototype.write=function(t){let e,r,o;for(e=0;e+3<=this.data.length;e+=3)r=this.data.substr(e,3),o=parseInt(r,10),t.put(o,10);let i=this.data.length-e;i>0&&(r=this.data.substr(e),o=parseInt(r,10),t.put(o,i*3+1))};ge.exports=_});var me=d((er,pe)=>{var un=M(),mt=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function x(n){this.mode=un.ALPHANUMERIC,this.data=n}x.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};x.prototype.getLength=function(){return this.data.length};x.prototype.getBitsLength=function(){return x.getBitsLength(this.data.length)};x.prototype.write=function(t){let e;for(e=0;e+2<=this.data.length;e+=2){let r=mt.indexOf(this.data[e])*45;r+=mt.indexOf(this.data[e+1]),t.put(r,11)}this.data.length%2&&t.put(mt.indexOf(this.data[e]),6)};pe.exports=x});var ye=d((nr,we)=>{var cn=M();function D(n){this.mode=cn.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}D.getBitsLength=function(t){return t*8};D.prototype.getLength=function(){return this.data.length};D.prototype.getBitsLength=function(){return D.getBitsLength(this.data.length)};D.prototype.write=function(n){for(let t=0,e=this.data.length;t<e;t++)n.put(this.data[t],8)};we.exports=D});var Ce=d((rr,Ee)=>{var ln=M(),an=T();function U(n){this.mode=ln.KANJI,this.data=n}U.getBitsLength=function(t){return t*13};U.prototype.getLength=function(){return this.data.length};U.prototype.getBitsLength=function(){return U.getBitsLength(this.data.length)};U.prototype.write=function(n){let t;for(t=0;t<this.data.length;t++){let e=an.toSJIS(this.data[t]);if(e>=33088&&e<=40956)e-=33088;else if(e>=57408&&e<=60351)e-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+`
|
|
3
|
+
Make sure your charset is UTF-8`);e=(e>>>8&255)*192+(e&255),n.put(e,13)}};Ee.exports=U});var Be=d((or,wt)=>{"use strict";var K={single_source_shortest_paths:function(n,t,e){var r={},o={};o[t]=0;var i=K.PriorityQueue.make();i.push(t,0);for(var s,u,c,l,a,m,h,y,A;!i.empty();){s=i.pop(),u=s.value,l=s.cost,a=n[u]||{};for(c in a)a.hasOwnProperty(c)&&(m=a[c],h=l+m,y=o[c],A=typeof o[c]>"u",(A||y>h)&&(o[c]=h,i.push(c,h),r[c]=u))}if(typeof e<"u"&&typeof o[e]>"u"){var N=["Could not find a path from ",t," to ",e,"."].join("");throw new Error(N)}return r},extract_shortest_path_from_predecessor_list:function(n,t){for(var e=[],r=t,o;r;)e.push(r),o=n[r],r=n[r];return e.reverse(),e},find_path:function(n,t,e){var r=K.single_source_shortest_paths(n,t,e);return K.extract_shortest_path_from_predecessor_list(r,e)},PriorityQueue:{make:function(n){var t=K.PriorityQueue,e={},r;n=n||{};for(r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e.queue=[],e.sorter=n.sorter||t.default_sorter,e},default_sorter:function(n,t){return n.cost-t.cost},push:function(n,t){var e={value:n,cost:t};this.queue.push(e),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof wt<"u"&&(wt.exports=K)});var be=d(F=>{var f=M(),Te=he(),Ie=me(),Me=ye(),Se=Ce(),J=dt(),X=T(),fn=Be();function Ae(n){return unescape(encodeURIComponent(n)).length}function O(n,t,e){let r=[],o;for(;(o=n.exec(e))!==null;)r.push({data:o[0],index:o.index,mode:t,length:o[0].length});return r}function Pe(n){let t=O(J.NUMERIC,f.NUMERIC,n),e=O(J.ALPHANUMERIC,f.ALPHANUMERIC,n),r,o;return X.isKanjiModeEnabled()?(r=O(J.BYTE,f.BYTE,n),o=O(J.KANJI,f.KANJI,n)):(r=O(J.BYTE_KANJI,f.BYTE,n),o=[]),t.concat(e,r,o).sort(function(s,u){return s.index-u.index}).map(function(s){return{data:s.data,mode:s.mode,length:s.length}})}function yt(n,t){switch(t){case f.NUMERIC:return Te.getBitsLength(n);case f.ALPHANUMERIC:return Ie.getBitsLength(n);case f.KANJI:return Se.getBitsLength(n);case f.BYTE:return Me.getBitsLength(n)}}function dn(n){return n.reduce(function(t,e){let r=t.length-1>=0?t[t.length-1]:null;return r&&r.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)},[])}function gn(n){let t=[];for(let e=0;e<n.length;e++){let r=n[e];switch(r.mode){case f.NUMERIC:t.push([r,{data:r.data,mode:f.ALPHANUMERIC,length:r.length},{data:r.data,mode:f.BYTE,length:r.length}]);break;case f.ALPHANUMERIC:t.push([r,{data:r.data,mode:f.BYTE,length:r.length}]);break;case f.KANJI:t.push([r,{data:r.data,mode:f.BYTE,length:Ae(r.data)}]);break;case f.BYTE:t.push([{data:r.data,mode:f.BYTE,length:Ae(r.data)}])}}return t}function hn(n,t){let e={},r={start:{}},o=["start"];for(let i=0;i<n.length;i++){let s=n[i],u=[];for(let c=0;c<s.length;c++){let l=s[c],a=""+i+c;u.push(a),e[a]={node:l,lastCount:0},r[a]={};for(let m=0;m<o.length;m++){let h=o[m];e[h]&&e[h].node.mode===l.mode?(r[h][a]=yt(e[h].lastCount+l.length,l.mode)-yt(e[h].lastCount,l.mode),e[h].lastCount+=l.length):(e[h]&&(e[h].lastCount=l.length),r[h][a]=yt(l.length,l.mode)+4+f.getCharCountIndicator(l.mode,t))}}o=u}for(let i=0;i<o.length;i++)r[o[i]].end=0;return{map:r,table:e}}function Ne(n,t){let e,r=f.getBestModeForData(n);if(e=f.from(t,r),e!==f.BYTE&&e.bit<r.bit)throw new Error('"'+n+'" cannot be encoded with mode '+f.toString(e)+`.
|
|
4
|
+
Suggested mode is: `+f.toString(r));switch(e===f.KANJI&&!X.isKanjiModeEnabled()&&(e=f.BYTE),e){case f.NUMERIC:return new Te(n);case f.ALPHANUMERIC:return new Ie(n);case f.KANJI:return new Se(n);case f.BYTE:return new Me(n)}}F.fromArray=function(t){return t.reduce(function(e,r){return typeof r=="string"?e.push(Ne(r,null)):r.data&&e.push(Ne(r.data,r.mode)),e},[])};F.fromString=function(t,e){let r=Pe(t,X.isKanjiModeEnabled()),o=gn(r),i=hn(o,e),s=fn.find_path(i.map,"start","end"),u=[];for(let c=1;c<s.length-1;c++)u.push(i.table[s[c]].node);return F.fromArray(dn(u))};F.rawSplit=function(t){return F.fromArray(Pe(t,X.isKanjiModeEnabled()))}});var Le=d(Re=>{var et=T(),Et=Q(),pn=Jt(),mn=Yt(),wn=Qt(),yn=Gt(),At=$t(),Nt=ct(),En=ee(),tt=ce(),Cn=de(),Bn=M(),Ct=be();function An(n,t){let e=n.size,r=yn.getPositions(t);for(let o=0;o<r.length;o++){let i=r[o][0],s=r[o][1];for(let u=-1;u<=7;u++)if(!(i+u<=-1||e<=i+u))for(let c=-1;c<=7;c++)s+c<=-1||e<=s+c||(u>=0&&u<=6&&(c===0||c===6)||c>=0&&c<=6&&(u===0||u===6)||u>=2&&u<=4&&c>=2&&c<=4?n.set(i+u,s+c,!0,!0):n.set(i+u,s+c,!1,!0))}}function Nn(n){let t=n.size;for(let e=8;e<t-8;e++){let r=e%2===0;n.set(e,6,r,!0),n.set(6,e,r,!0)}}function Tn(n,t){let e=wn.getPositions(t);for(let r=0;r<e.length;r++){let o=e[r][0],i=e[r][1];for(let s=-2;s<=2;s++)for(let u=-2;u<=2;u++)s===-2||s===2||u===-2||u===2||s===0&&u===0?n.set(o+s,i+u,!0,!0):n.set(o+s,i+u,!1,!0)}}function In(n,t){let e=n.size,r=tt.getEncodedBits(t),o,i,s;for(let u=0;u<18;u++)o=Math.floor(u/3),i=u%3+e-8-3,s=(r>>u&1)===1,n.set(o,i,s,!0),n.set(i,o,s,!0)}function Bt(n,t,e){let r=n.size,o=Cn.getEncodedBits(t,e),i,s;for(i=0;i<15;i++)s=(o>>i&1)===1,i<6?n.set(i,8,s,!0):i<8?n.set(i+1,8,s,!0):n.set(r-15+i,8,s,!0),i<8?n.set(8,r-i-1,s,!0):i<9?n.set(8,15-i-1+1,s,!0):n.set(8,15-i-1,s,!0);n.set(r-8,8,1,!0)}function Mn(n,t){let e=n.size,r=-1,o=e-1,i=7,s=0;for(let u=e-1;u>0;u-=2)for(u===6&&u--;;){for(let c=0;c<2;c++)if(!n.isReserved(o,u-c)){let l=!1;s<t.length&&(l=(t[s]>>>i&1)===1),n.set(o,u-c,l),i--,i===-1&&(s++,i=7)}if(o+=r,o<0||e<=o){o-=r,r=-r;break}}}function Sn(n,t,e){let r=new pn;e.forEach(function(c){r.put(c.mode.bit,4),r.put(c.getLength(),Bn.getCharCountIndicator(c.mode,n)),c.write(r)});let o=et.getSymbolTotalCodewords(n),i=Nt.getTotalCodewordsCount(n,t),s=(o-i)*8;for(r.getLengthInBits()+4<=s&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);let u=(s-r.getLengthInBits())/8;for(let c=0;c<u;c++)r.put(c%2?17:236,8);return Pn(r,n,t)}function Pn(n,t,e){let r=et.getSymbolTotalCodewords(t),o=Nt.getTotalCodewordsCount(t,e),i=r-o,s=Nt.getBlocksCount(t,e),u=r%s,c=s-u,l=Math.floor(r/s),a=Math.floor(i/s),m=a+1,h=l-a,y=new En(h),A=0,N=new Array(s),bt=new Array(s),rt=0,He=new Uint8Array(n.buffer);for(let q=0;q<s;q++){let it=q<c?a:m;N[q]=He.slice(A,A+it),bt[q]=y.encode(N[q]),A+=it,rt=Math.max(rt,it)}let ot=new Uint8Array(r),Rt=0,E,C;for(E=0;E<rt;E++)for(C=0;C<s;C++)E<N[C].length&&(ot[Rt++]=N[C][E]);for(E=0;E<h;E++)for(C=0;C<s;C++)ot[Rt++]=bt[C][E];return ot}function bn(n,t,e,r){let o;if(Array.isArray(n))o=Ct.fromArray(n);else if(typeof n=="string"){let l=t;if(!l){let a=Ct.rawSplit(n);l=tt.getBestVersionForData(a,e)}o=Ct.fromString(n,l||40)}else throw new Error("Invalid data");let i=tt.getBestVersionForData(o,e);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!t)t=i;else if(t<i)throw new Error(`
|
|
5
|
+
The chosen QR Code version cannot contain this amount of data.
|
|
6
|
+
Minimum version required to store current data is: `+i+`.
|
|
7
|
+
`);let s=Sn(t,e,o),u=et.getSymbolSize(t),c=new mn(u);return An(c,t),Nn(c),Tn(c,t),Bt(c,e,0),t>=7&&In(c,t),Mn(c,s),isNaN(r)&&(r=At.getBestMask(c,Bt.bind(null,c,e))),At.applyMask(r,c),Bt(c,e,r),{modules:c,version:t,errorCorrectionLevel:e,maskPattern:r,segments:o}}Re.create=function(t,e){if(typeof t>"u"||t==="")throw new Error("No input text");let r=Et.M,o,i;return typeof e<"u"&&(r=Et.from(e.errorCorrectionLevel,Et.M),o=tt.from(e.version),i=At.from(e.maskPattern),e.toSJISFunc&&et.setToSJISFunction(e.toSJISFunc)),bn(t,o,r,i)}});var Tt=d(L=>{function qe(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let t=n.slice().replace("#","").split("");if(t.length<3||t.length===5||t.length>8)throw new Error("Invalid hex color: "+n);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(r){return[r,r]}))),t.length===6&&t.push("F","F");let e=parseInt(t.join(""),16);return{r:e>>24&255,g:e>>16&255,b:e>>8&255,a:e&255,hex:"#"+t.slice(0,6).join("")}}L.getOptions=function(t){t||(t={}),t.color||(t.color={});let e=typeof t.margin>"u"||t.margin===null||t.margin<0?4:t.margin,r=t.width&&t.width>=21?t.width:void 0,o=t.scale||4;return{width:r,scale:r?4:o,margin:e,color:{dark:qe(t.color.dark||"#000000ff"),light:qe(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}};L.getScale=function(t,e){return e.width&&e.width>=t+e.margin*2?e.width/(t+e.margin*2):e.scale};L.getImageWidth=function(t,e){let r=L.getScale(t,e);return Math.floor((t+e.margin*2)*r)};L.qrToImageData=function(t,e,r){let o=e.modules.size,i=e.modules.data,s=L.getScale(o,r),u=Math.floor((o+r.margin*2)*s),c=r.margin*s,l=[r.color.light,r.color.dark];for(let a=0;a<u;a++)for(let m=0;m<u;m++){let h=(a*u+m)*4,y=r.color.light;if(a>=c&&m>=c&&a<u-c&&m<u-c){let A=Math.floor((a-c)/s),N=Math.floor((m-c)/s);y=l[i[A*o+N]?1:0]}t[h++]=y.r,t[h++]=y.g,t[h++]=y.b,t[h]=y.a}}});var _e=d(nt=>{var It=Tt();function Rn(n,t,e){n.clearRect(0,0,t.width,t.height),t.style||(t.style={}),t.height=e,t.width=e,t.style.height=e+"px",t.style.width=e+"px"}function Ln(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}nt.render=function(t,e,r){let o=r,i=e;typeof o>"u"&&(!e||!e.getContext)&&(o=e,e=void 0),e||(i=Ln()),o=It.getOptions(o);let s=It.getImageWidth(t.modules.size,o),u=i.getContext("2d"),c=u.createImageData(s,s);return It.qrToImageData(c.data,t,o),Rn(u,i,s),u.putImageData(c,0,0),i};nt.renderToDataURL=function(t,e,r){let o=r;typeof o>"u"&&(!e||!e.getContext)&&(o=e,e=void 0),o||(o={});let i=nt.render(t,e,o),s=o.type||"image/png",u=o.rendererOpts||{};return i.toDataURL(s,u.quality)}});var Ue=d(De=>{var qn=Tt();function xe(n,t){let e=n.a/255,r=t+'="'+n.hex+'"';return e<1?r+" "+t+'-opacity="'+e.toFixed(2).slice(1)+'"':r}function Mt(n,t,e){let r=n+t;return typeof e<"u"&&(r+=" "+e),r}function _n(n,t,e){let r="",o=0,i=!1,s=0;for(let u=0;u<n.length;u++){let c=Math.floor(u%t),l=Math.floor(u/t);!c&&!i&&(i=!0),n[u]?(s++,u>0&&c>0&&n[u-1]||(r+=i?Mt("M",c+e,.5+l+e):Mt("m",o,0),o=0,i=!1),c+1<t&&n[u+1]||(r+=Mt("h",s),s=0)):o++}return r}De.render=function(t,e,r){let o=qn.getOptions(e),i=t.modules.size,s=t.modules.data,u=i+o.margin*2,c=o.color.light.a?"<path "+xe(o.color.light,"fill")+' d="M0 0h'+u+"v"+u+'H0z"/>':"",l="<path "+xe(o.color.dark,"stroke")+' d="'+_n(s,i,o.margin)+'"/>',a='viewBox="0 0 '+u+" "+u+'"',h='<svg xmlns="http://www.w3.org/2000/svg" '+(o.width?'width="'+o.width+'" height="'+o.width+'" ':"")+a+' shape-rendering="crispEdges">'+c+l+`</svg>
|
|
8
|
+
`;return typeof r=="function"&&r(null,h),h}});var ke=d(Y=>{var xn=Ht(),St=Le(),Fe=_e(),Dn=Ue();function Pt(n,t,e,r,o){let i=[].slice.call(arguments,1),s=i.length,u=typeof i[s-1]=="function";if(!u&&!xn())throw new Error("Callback required as last argument");if(u){if(s<2)throw new Error("Too few arguments provided");s===2?(o=e,e=t,t=r=void 0):s===3&&(t.getContext&&typeof o>"u"?(o=r,r=void 0):(o=r,r=e,e=t,t=void 0))}else{if(s<1)throw new Error("Too few arguments provided");return s===1?(e=t,t=r=void 0):s===2&&!t.getContext&&(r=e,e=t,t=void 0),new Promise(function(c,l){try{let a=St.create(e,r);c(n(a,t,r))}catch(a){l(a)}})}try{let c=St.create(e,r);o(null,n(c,t,r))}catch(c){o(c)}}Y.create=St.create;Y.toCanvas=Pt.bind(null,Fe.render);Y.toDataURL=Pt.bind(null,Fe.renderToDataURL);Y.toString=Pt.bind(null,function(n,t,e){return Dn.render(n,e)})});var ze=Ve(ke(),1);var Un=["qrcode"],hr=(()=>{class n{data=Ft.required({});qrcodeElement=kt("qrcode",{});ngOnChanges(){this.renderQrCode()}renderQrCode(){return Lt(this,null,function*(){if(this.data()){let e=this.qrcodeElement();e.nativeElement.innerHTML=yield(0,ze.toString)(this.data(),{type:"svg",margin:0,color:{light:"#ffffff00",dark:document.body.classList.contains("dark-mode")?"#FFF":"#000"}}),e.nativeElement.querySelector("svg").querySelector("path").classList.add("qr-code-theme-color")}})}static \u0275fac=function(r){return new(r||n)};static \u0275cmp=_t({type:n,selectors:[["app-qrcode"]],viewQuery:function(r,o){r&1&&Dt(o.qrcodeElement,Un,5),r&2&&Ut()},inputs:{data:[1,"data"]},features:[qt],decls:2,vars:0,consts:[["qrcode",""],[2,"width","100%","height","100%"]],template:function(r,o){r&1&&xt(0,"div",1,0)},encapsulation:2})}return n})();export{hr as a};
|