homebridge-config-ui-x 5.4.1 → 5.4.2-beta.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 +19 -0
- package/package.json +2 -2
- package/public/assets/service-icons/door.svg +23 -2
- package/public/assets/service-icons/fan.svg +2 -2
- package/public/assets/service-icons/garage-door.svg +1 -1
- package/public/assets/service-icons/irrigation-system.svg +34 -0
- package/public/assets/service-icons/lock-mechanism.svg +39 -0
- package/public/assets/service-icons/security-system.svg +19 -0
- package/public/assets/service-icons/stateless-programmable-switch.svg +2 -2
- package/public/assets/service-icons/valve-faucet.svg +22 -0
- package/public/assets/service-icons/valve-generic.svg +25 -0
- package/public/assets/service-icons/valve-irrigation.svg +34 -0
- package/public/assets/service-icons/valve-shower-head.svg +32 -0
- package/public/assets/service-icons/window-covering.svg +2 -2
- package/public/assets/service-icons/window.svg +4 -0
- package/public/{chunk-M4QDQWSG.js → chunk-2C3X2ESN.js} +1 -1
- package/public/{chunk-ER4N7WWQ.js → chunk-2LEJFO4U.js} +1 -1
- package/public/{chunk-YO7SFY4E.js → chunk-2LMFJYC4.js} +1 -1
- package/public/{chunk-2DRGGCL6.js → chunk-33UHWR5O.js} +1 -1
- package/public/{chunk-DFLIHKAC.js → chunk-3ERUWF5D.js} +1 -1
- package/public/chunk-46JGHSBB.js +1 -0
- package/public/{chunk-J3QUQJAX.js → chunk-4HRWU2J3.js} +1 -1
- package/public/chunk-4TF2J3KA.js +1 -0
- package/public/{chunk-EQHN6CPG.js → chunk-5E4D6S2D.js} +1 -1
- package/public/{chunk-FMZEX6EI.js → chunk-6EH7VRJE.js} +1 -1
- package/public/{chunk-E2BQMFOO.js → chunk-6X3MH72N.js} +1 -1
- package/public/{chunk-VUXV5F3D.js → chunk-7BA3FPY6.js} +1 -1
- package/public/{chunk-KYB236MX.js → chunk-7EQFLCW4.js} +1 -1
- package/public/{chunk-G2UERN7F.js → chunk-AC47AP7G.js} +1 -1
- package/public/{chunk-AVMRG6LJ.js → chunk-ADF46RFT.js} +1 -1
- package/public/{chunk-WP55NF6D.js → chunk-B57CTOBG.js} +1 -1
- package/public/{chunk-KBHPX4TF.js → chunk-BNC2LVDJ.js} +1 -1
- package/public/{chunk-6VEFADT5.js → chunk-BYDZXXU7.js} +1 -1
- package/public/{chunk-H7SE35UN.js → chunk-C54645MD.js} +1 -1
- package/public/{chunk-HO4UVRDI.js → chunk-CMOVUX6R.js} +1 -1
- package/public/{chunk-IA2EYXXP.js → chunk-D7HRLNTC.js} +1 -1
- package/public/{chunk-3QBYXJ7T.js → chunk-D7VCPH6W.js} +1 -1
- package/public/{chunk-6HJHVJPI.js → chunk-DFFTJVRY.js} +1 -1
- package/public/{chunk-TYM2IKKZ.js → chunk-DP45OUJJ.js} +1 -1
- package/public/{chunk-O6QIOU32.js → chunk-EKCAZN24.js} +1 -1
- package/public/{chunk-6PUQJMXN.js → chunk-ESIX4ZF5.js} +1 -1
- package/public/chunk-FMXKLBH7.js +1 -0
- package/public/{chunk-5UXBLAGX.js → chunk-FUYV7IZZ.js} +1 -1
- package/public/{chunk-HHGB2T2Q.js → chunk-FVKMBZOU.js} +1 -1
- package/public/{chunk-ULWO2VVV.js → chunk-FXJWZ2UF.js} +1 -1
- package/public/{chunk-ZGXQHCAZ.js → chunk-GS72D2DZ.js} +1 -1
- package/public/{chunk-DYB33NRF.js → chunk-H45DK7IX.js} +1 -1
- package/public/{chunk-V35TPDVW.js → chunk-H5WTK5UT.js} +1 -1
- package/public/{chunk-G7J6XGY5.js → chunk-HLNHT6LZ.js} +1 -1
- package/public/chunk-HPHUBXGR.js +12 -0
- package/public/{chunk-XTHHRD72.js → chunk-HTZJUJUZ.js} +1 -1
- package/public/{chunk-PPSFRNJC.js → chunk-HWAWBYVQ.js} +1 -1
- package/public/chunk-IOKYXV5M.js +4 -0
- package/public/{chunk-FYI7RHOJ.js → chunk-IWFKJHPR.js} +1 -1
- package/public/{chunk-G6KV6PYE.js → chunk-J6CJ26QN.js} +1 -1
- package/public/{chunk-NZ3SNZL4.js → chunk-J7JPVBEU.js} +1 -1
- package/public/chunk-JCCQ75XM.js +1 -0
- package/public/{chunk-FYDO54CR.js → chunk-KZKL7DGI.js} +1 -1
- package/public/{chunk-5CQQ6P7K.js → chunk-LJIRF4HJ.js} +1 -1
- package/public/{chunk-ZFBUCUQW.js → chunk-LJL5JUBH.js} +1 -1
- package/public/{chunk-7YPOSTMY.js → chunk-MFYUC6U7.js} +1 -1
- package/public/{chunk-GZH3YYXD.js → chunk-MP3K6Q5N.js} +1 -1
- package/public/{chunk-4TADR47H.js → chunk-MSAADZHQ.js} +1 -1
- package/public/{chunk-KLQ6BEKS.js → chunk-OA7Y3E5A.js} +1 -1
- package/public/{chunk-RANTT44U.js → chunk-PWOW5ZGG.js} +1 -1
- package/public/{chunk-AVVYKDTL.js → chunk-QBC4X3JS.js} +1 -1
- package/public/{chunk-7IWNYMNH.js → chunk-QN444QJC.js} +1 -1
- package/public/{chunk-YLBALIW6.js → chunk-QSP4KI3N.js} +1 -1
- package/public/{chunk-RZ4UMDVF.js → chunk-QX6BFGHZ.js} +1 -1
- package/public/{chunk-PGM4QIVA.js → chunk-S6BEKQWI.js} +1 -1
- package/public/{chunk-BPGGCIV2.js → chunk-SKU647MV.js} +1 -1
- package/public/{chunk-WRO77OEO.js → chunk-TPRXTBLB.js} +1 -1
- package/public/{chunk-F37WZQGE.js → chunk-ULDXS7ZK.js} +1 -1
- package/public/{chunk-3JNJJOX6.js → chunk-V6JVOQNN.js} +1 -1
- package/public/chunk-VDRXJTTX.js +1 -0
- package/public/{chunk-SZXKSRVG.js → chunk-VQAYHIBO.js} +1 -1
- package/public/{chunk-RCYYU6LQ.js → chunk-WCOLHYTR.js} +1 -1
- package/public/{chunk-JCYDPJQ5.js → chunk-WTDK2HE6.js} +1 -1
- package/public/{chunk-DFZAFAJ3.js → chunk-WXQICPJE.js} +1 -1
- package/public/{chunk-KGKX7ALV.js → chunk-YQ7MFP33.js} +1 -1
- package/public/{chunk-RGXCQLZU.js → chunk-Z2T4OZ7I.js} +1 -1
- package/public/{chunk-NRX2DKWS.js → chunk-Z4YLS7KX.js} +1 -1
- package/public/{chunk-EZQF5CUM.js → chunk-ZUTM7S4U.js} +1 -1
- package/public/{chunk-WYHYUPM6.js → chunk-ZY5SUCRL.js} +1 -1
- package/public/index.html +1 -1
- package/public/{main-YBDT5CSM.js → main-VZG2XBKX.js} +1 -1
- package/public/assets/hap-icons/irrigation-system.svg +0 -49
- package/public/assets/hap-icons/lock-locked.svg +0 -25
- package/public/assets/hap-icons/lock-unlocked.svg +0 -25
- package/public/assets/hap-icons/security-system-active.svg +0 -103
- package/public/assets/hap-icons/security-system-off.svg +0 -69
- package/public/assets/hap-icons/security-system-triggered.svg +0 -103
- package/public/assets/hap-icons/stateless-programmable-switch.svg +0 -52
- package/public/assets/hap-icons/valve-faucet.svg +0 -21
- package/public/assets/hap-icons/valve-generic.svg +0 -28
- package/public/assets/hap-icons/valve-irrigation.svg +0 -38
- package/public/assets/hap-icons/valve-shower-head.svg +0 -52
- package/public/chunk-33VXBD5W.js +0 -12
- package/public/chunk-645YHJEQ.js +0 -4
- package/public/chunk-EF3XRHYY.js +0 -1
- package/public/chunk-IDFQPWF6.js +0 -1
- package/public/chunk-L6SKGR7C.js +0 -1
- package/public/chunk-ZBNNBPMQ.js +0 -1
- package/public/chunk-ZC3LHWJU.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
|
5
|
+
## v5.4.2 (Unreleased)
|
|
6
|
+
|
|
7
|
+
### UI Changes
|
|
8
|
+
|
|
9
|
+
- refreshed icons: security system
|
|
10
|
+
- refreshed icons: lock mechanism
|
|
11
|
+
- refreshed icons: irrigation system + valves
|
|
12
|
+
|
|
13
|
+
### Other Changes
|
|
14
|
+
|
|
15
|
+
- fix saving custom attributes for ui layouts
|
|
16
|
+
- update `@homebridge/node-pty-prebuilt-multiarch` to `v0.14-beta`
|
|
17
|
+
|
|
18
|
+
### Homebridge Dependencies
|
|
19
|
+
|
|
20
|
+
- `@homebridge/hap-client` @ `v3.1.1`
|
|
21
|
+
- `@homebridge/node-pty-prebuilt-multiarch` @ `v0.14.1-beta`
|
|
22
|
+
- `@homebridge/plugin-ui-utils` @ `v2.1.0`
|
|
23
|
+
|
|
5
24
|
## v5.4.1 (2025-08-05)
|
|
6
25
|
|
|
7
26
|
### UI Changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-config-ui-x",
|
|
3
3
|
"displayName": "Homebridge UI",
|
|
4
|
-
"version": "5.4.
|
|
4
|
+
"version": "5.4.2-beta.0",
|
|
5
5
|
"description": "A web based management, configuration and control platform for Homebridge.",
|
|
6
6
|
"author": "oznu <dev@oz.nu>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"@fastify/multipart": "9.0.3",
|
|
83
83
|
"@fastify/static": "8.2.0",
|
|
84
84
|
"@homebridge/hap-client": "3.1.1",
|
|
85
|
-
"@homebridge/node-pty-prebuilt-multiarch": "0.
|
|
85
|
+
"@homebridge/node-pty-prebuilt-multiarch": "0.14.1-beta.1",
|
|
86
86
|
"@nestjs/axios": "4.0.1",
|
|
87
87
|
"@nestjs/common": "11.1.5",
|
|
88
88
|
"@nestjs/core": "11.1.5",
|
|
@@ -6,7 +6,17 @@
|
|
|
6
6
|
<rect class="outline" x="9.6" y="2.6" width="12.8" height="26.6" stroke="#7f7f7f" fill="none" stroke-width="1" />
|
|
7
7
|
|
|
8
8
|
<!-- top panel -->
|
|
9
|
-
<rect
|
|
9
|
+
<rect
|
|
10
|
+
class="panel"
|
|
11
|
+
x="11.2"
|
|
12
|
+
y="4.2"
|
|
13
|
+
width="9.6"
|
|
14
|
+
height="10.8"
|
|
15
|
+
stroke="#7f7f7f"
|
|
16
|
+
fill-opacity="0"
|
|
17
|
+
stroke-width="0.5"
|
|
18
|
+
rx="0.25"
|
|
19
|
+
/>
|
|
10
20
|
|
|
11
21
|
<!-- bottom panel -->
|
|
12
22
|
<rect
|
|
@@ -18,11 +28,22 @@
|
|
|
18
28
|
stroke="#7f7f7f"
|
|
19
29
|
fill-opacity="0"
|
|
20
30
|
stroke-width="0.5"
|
|
31
|
+
rx="0.25"
|
|
21
32
|
/>
|
|
22
33
|
|
|
23
34
|
<!-- wider floor -->
|
|
24
35
|
<line x1="0" y1="31" x2="32" y2="31" stroke="#7f7f7f" stroke-width="1.5" />
|
|
25
36
|
|
|
26
37
|
<!-- door handle -->
|
|
27
|
-
<rect
|
|
38
|
+
<rect
|
|
39
|
+
class="handle"
|
|
40
|
+
x="19.25"
|
|
41
|
+
y="15.87"
|
|
42
|
+
width="1.55"
|
|
43
|
+
height="0.05"
|
|
44
|
+
stroke="#1976d2"
|
|
45
|
+
fill="none"
|
|
46
|
+
stroke-width="0.5"
|
|
47
|
+
rx="10"
|
|
48
|
+
/>
|
|
28
49
|
</svg>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
2
|
<!-- fan icon -->
|
|
3
|
-
<g transform="translate(
|
|
3
|
+
<g transform="translate(-0.85, 0.2) scale(0.99)">
|
|
4
4
|
<path
|
|
5
5
|
class="fan-blades"
|
|
6
6
|
fill="#7f7f7f"
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
</g>
|
|
12
12
|
|
|
13
13
|
<!-- middle circle -->
|
|
14
|
-
<circle cx="
|
|
14
|
+
<circle cx="16" cy="16" r="3.6" stroke="#7f7f7f" stroke-width="2" fill="#1976d2" fill-opacity="0.5" />
|
|
15
15
|
</svg>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<line x1="26" y1="31" x2="29" y2="31" stroke="#7f7f7f" stroke-width="1.5" stroke-linecap="round" />
|
|
34
34
|
|
|
35
35
|
<!-- left garage line -->
|
|
36
|
-
<line x1="6" y1="17" x2="6" y2="31" stroke="#7f7f7f" stroke-width="1.5" />
|
|
36
|
+
<line x1="6" y1="17" x2="6" y2="31" stroke="#7f7f7f" stroke-width="1.5" stroke-linecap="" />
|
|
37
37
|
|
|
38
38
|
<!-- right garage line -->
|
|
39
39
|
<line x1="26" y1="17" x2="26" y2="31" stroke="#7f7f7f" stroke-width="1.5" />
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- water tank -->
|
|
3
|
+
<rect
|
|
4
|
+
x="9"
|
|
5
|
+
y="1"
|
|
6
|
+
width="14"
|
|
7
|
+
height="6.5"
|
|
8
|
+
rx="2"
|
|
9
|
+
fill="#1976d2"
|
|
10
|
+
stroke="#7b7b7b"
|
|
11
|
+
stroke-width="0.5"
|
|
12
|
+
fill-opacity="0.5"
|
|
13
|
+
/>
|
|
14
|
+
|
|
15
|
+
<!-- vertical pipe -->
|
|
16
|
+
<line class="pipe" x1="16" y1="8" x2="16" y2="31" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
|
|
17
|
+
|
|
18
|
+
<!-- horizontal pipes, top to bottom -->
|
|
19
|
+
<line class="pipe" x1="1" y1="9" x2="31" y2="9" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
|
|
20
|
+
<line class="pipe" x1="1" y1="20" x2="31" y2="20" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
|
|
21
|
+
<line class="pipe" x1="1" y1="31" x2="31" y2="31" stroke="#7f7f7f" stroke-width="1" stroke-linecap="round" />
|
|
22
|
+
|
|
23
|
+
<!-- top left field -->
|
|
24
|
+
<rect class="field" x="1" y="10" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
|
|
25
|
+
|
|
26
|
+
<!-- top right field -->
|
|
27
|
+
<rect class="field" x="17" y="10" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
|
|
28
|
+
|
|
29
|
+
<!-- bottom left field -->
|
|
30
|
+
<rect class="field" x="1" y="21" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
|
|
31
|
+
|
|
32
|
+
<!-- bottom right field -->
|
|
33
|
+
<rect class="field" x="17" y="21" width="14" height="9" rx="0" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
|
|
34
|
+
</svg>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- shackle, locked -->
|
|
3
|
+
<path
|
|
4
|
+
d="M8 16 C6 -4, 26 -4, 24 16"
|
|
5
|
+
fill="none"
|
|
6
|
+
stroke="#7f7f7f"
|
|
7
|
+
stroke-width="2"
|
|
8
|
+
class="shackle-locked"
|
|
9
|
+
stroke-linecap="round"
|
|
10
|
+
stroke-linejoin="round"
|
|
11
|
+
/>
|
|
12
|
+
|
|
13
|
+
<!-- shackle, unlocked -->
|
|
14
|
+
<path
|
|
15
|
+
d="M8 16 C6 -2, 22 -2, 24 7"
|
|
16
|
+
fill="none"
|
|
17
|
+
stroke="#7f7f7f"
|
|
18
|
+
stroke-width="2"
|
|
19
|
+
class="shackle-unlocked"
|
|
20
|
+
stroke-linecap="round"
|
|
21
|
+
stroke-linejoin="round"
|
|
22
|
+
stroke-opacity="0"
|
|
23
|
+
/>
|
|
24
|
+
|
|
25
|
+
<!-- main lock -->
|
|
26
|
+
<rect x="5" y="16" width="22" height="15" rx="3" fill="none" stroke="#7f7f7f" stroke-width="2" />
|
|
27
|
+
|
|
28
|
+
<!-- status keyhole -->
|
|
29
|
+
<circle
|
|
30
|
+
cx="16"
|
|
31
|
+
cy="23.5"
|
|
32
|
+
r="3"
|
|
33
|
+
stroke="#7f7f7f"
|
|
34
|
+
stroke-width="0.5"
|
|
35
|
+
fill="#4caf50"
|
|
36
|
+
fill-opacity="0.5"
|
|
37
|
+
class="keyhole"
|
|
38
|
+
/>
|
|
39
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- siren dome -->
|
|
3
|
+
<path
|
|
4
|
+
class="dome"
|
|
5
|
+
d="M7 18 C7 5, 25 5, 25 18 V26 H7 V18 Z"
|
|
6
|
+
fill="none"
|
|
7
|
+
stroke="#7f7f7f"
|
|
8
|
+
stroke-width="1.5"
|
|
9
|
+
fill-opacity="0.5"
|
|
10
|
+
/>
|
|
11
|
+
|
|
12
|
+
<!-- base -->
|
|
13
|
+
<rect x="2" y="26" width="28" height="4" fill="none" stroke="#7f7f7f" stroke-width="1.5" rx="1" />
|
|
14
|
+
|
|
15
|
+
<!-- light waves left to right -->
|
|
16
|
+
<line class="ray" x1="6" y1="3" x2="10" y2="7" stroke-width="3" />
|
|
17
|
+
<line class="ray" x1="16" y1="0" x2="16" y2="5" stroke-width="3" />
|
|
18
|
+
<line class="ray" x1="26" y1="3" x2="22" y2="7" stroke-width="3" />
|
|
19
|
+
</svg>
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
<circle class="long" cx="16" cy="23.5" r="5" stroke="#7f7f7f" stroke-width="1" fill="none" fill-opacity="0.5" />
|
|
14
14
|
|
|
15
15
|
<!-- long click lies, left then right -->
|
|
16
|
-
<line x1="5" y1="23.5" x2="11" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" />
|
|
17
|
-
<line x1="21" y1="23.5" x2="27" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" />
|
|
16
|
+
<line x1="5" y1="23.5" x2="11" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" stroke-linecap="round" />
|
|
17
|
+
<line x1="21" y1="23.5" x2="27" y2="23.5" stroke="#7f7f7f" stroke-width="0.5" stroke-linecap="round" />
|
|
18
18
|
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- sink -->
|
|
3
|
+
<rect class="sink" x="-3" y="28" width="21" height="6.5" fill="#7f7f7f" stroke-width="0" fill-opacity="0.5" />
|
|
4
|
+
|
|
5
|
+
<!-- cold tap -->
|
|
6
|
+
<line stroke-linecap="round" x1="24" y1="18" x2="26" y2="18" stroke="#1976d2" stroke-width="3" stroke-opacity="0.5" />
|
|
7
|
+
|
|
8
|
+
<!-- hot tap -->
|
|
9
|
+
<line stroke-linecap="round" x1="20" y1="18" x2="22" y2="18" stroke="#d32f2f" stroke-width="3" stroke-opacity="0.5" />
|
|
10
|
+
|
|
11
|
+
<!-- tap outline -->
|
|
12
|
+
<rect x="19" y="16.5" rx="1" width="8" height="3" fill="none" stroke-width="1" stroke="#7f7f7f" />
|
|
13
|
+
|
|
14
|
+
<!-- tap shape -->
|
|
15
|
+
<path d="M10 9 C10 -1, 23 -1, 23 10 V26" fill="none" stroke="#7f7f7f" stroke-width="2" />
|
|
16
|
+
|
|
17
|
+
<!-- water -->
|
|
18
|
+
<line class="stream" x1="10" y1="9" x2="10" y2="28" stroke="#1976d2" stroke-opacity="0" stroke-width="1.5" />
|
|
19
|
+
|
|
20
|
+
<!-- tap base -->
|
|
21
|
+
<line x1="20" y1="31" x2="26" y2="31" stroke="#7f7f7f" stroke-width="10" stroke-linecap="round" />
|
|
22
|
+
</svg>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- top twister -->
|
|
3
|
+
<line x1="8" y1="3" x2="14" y2="3" stroke="#7f7f7f" stroke-width="3" stroke-linecap="round" />
|
|
4
|
+
|
|
5
|
+
<!-- twister to main pipe -->
|
|
6
|
+
<line x1="11" y1="8" x2="11" y2="3" stroke="#7f7f7f" stroke-width="3" stroke-linecap="round" />
|
|
7
|
+
|
|
8
|
+
<!-- main pipe -->
|
|
9
|
+
<line x1="0" y1="9" x2="21" y2="9" stroke="#7f7f7f" stroke-width="4" stroke-linecap="round" />
|
|
10
|
+
|
|
11
|
+
<!-- nozzle -->
|
|
12
|
+
<line x1="21" y1="9" x2="21" y2="14" stroke="#7f7f7f" stroke-width="4" stroke-linecap="round" />
|
|
13
|
+
|
|
14
|
+
<!-- top row of drops -->
|
|
15
|
+
<circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="21" cy="19" r="1.5" />
|
|
16
|
+
|
|
17
|
+
<!-- middle row of drops -->
|
|
18
|
+
<circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="17" cy="24" r="1.5" />
|
|
19
|
+
<circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="25" cy="24" r="1.5" />
|
|
20
|
+
|
|
21
|
+
<!-- bottom row of drops -->
|
|
22
|
+
<circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="13" cy="29" r="1.5" />
|
|
23
|
+
<circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="21" cy="29" r="1.5" />
|
|
24
|
+
<circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="29" cy="29" r="1.5" />
|
|
25
|
+
</svg>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- small drops, left to right -->
|
|
3
|
+
<circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="1" cy="16" r="1" />
|
|
4
|
+
<circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="6" cy="8" r="1" />
|
|
5
|
+
<circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="16" cy="4" r="1" />
|
|
6
|
+
<circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="26" cy="8" r="1" />
|
|
7
|
+
<circle class="drop drop-out" fill="#1976d2" fill-opacity="0" cx="31" cy="16" r="1" />
|
|
8
|
+
|
|
9
|
+
<!-- large drops, left to right -->
|
|
10
|
+
<circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="7" cy="16" r="1.5" />
|
|
11
|
+
<circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="25" cy="16" r="1.5" />
|
|
12
|
+
<circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="10.5" cy="11.5" r="1.5" />
|
|
13
|
+
<circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="21.5" cy="11.5" r="1.5" />
|
|
14
|
+
<circle class="drop drop-in" fill="#1976d2" fill-opacity="0" cx="16" cy="9" r="1.5" />
|
|
15
|
+
|
|
16
|
+
<!-- vertical pipe -->
|
|
17
|
+
<line x1="16" y1="16" x2="16" y2="31" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
|
|
18
|
+
|
|
19
|
+
<!-- spout -->
|
|
20
|
+
<line x1="14" y1="16" x2="18" y2="16" stroke="#7f7f7f" stroke-width="4" stroke-linecap="round" />
|
|
21
|
+
|
|
22
|
+
<!-- grass -->
|
|
23
|
+
<line
|
|
24
|
+
class="grass"
|
|
25
|
+
x1="4"
|
|
26
|
+
y1="31"
|
|
27
|
+
x2="28"
|
|
28
|
+
y2="31"
|
|
29
|
+
stroke="#7f7f7f"
|
|
30
|
+
stroke-opacity="0.5"
|
|
31
|
+
stroke-width="10"
|
|
32
|
+
stroke-linecap="round"
|
|
33
|
+
/>
|
|
34
|
+
</svg>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- top horizontal pipe -->
|
|
3
|
+
<line x1="1" y1="1" x2="16" y2="1" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
|
|
4
|
+
|
|
5
|
+
<!-- left vertical pipe -->
|
|
6
|
+
<line x1="1" y1="1" x2="1" y2="31" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
|
|
7
|
+
|
|
8
|
+
<!-- pipe to head -->
|
|
9
|
+
<line x1="16" y1="1" x2="16" y2="3" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
|
|
10
|
+
|
|
11
|
+
<!-- shower head -->
|
|
12
|
+
<path d="M8 11 A8 7 0 0 1 24 11" fill="none" stroke="#7f7f7f" stroke-width="2" />
|
|
13
|
+
<line x1="7" y1="11" x2="25" y2="11" stroke="#7f7f7f" stroke-width="2" stroke-linecap="round" />
|
|
14
|
+
|
|
15
|
+
<!-- large drops, left to right -->
|
|
16
|
+
<circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="8" cy="16" r="1.25" />
|
|
17
|
+
<circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="13.3" cy="16" r="1.25" />
|
|
18
|
+
<circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="18.6" cy="16" r="1.25" />
|
|
19
|
+
<circle class="drop drop-top" fill="#1976d2" fill-opacity="0" cx="24" cy="16" r="1.25" />
|
|
20
|
+
|
|
21
|
+
<!-- middle drops, left to right -->
|
|
22
|
+
<circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="8" cy="22" r="1" />
|
|
23
|
+
<circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="13.3" cy="22" r="1" />
|
|
24
|
+
<circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="18.6" cy="22" r="1" />
|
|
25
|
+
<circle class="drop drop-middle" fill="#1976d2" fill-opacity="0" cx="24" cy="22" r="1" />
|
|
26
|
+
|
|
27
|
+
<!-- small drops, left to right -->
|
|
28
|
+
<circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="8" cy="28" r="0.75" />
|
|
29
|
+
<circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="13.3" cy="28" r="0.75" />
|
|
30
|
+
<circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="18.6" cy="28" r="0.75" />
|
|
31
|
+
<circle class="drop drop-bottom" fill="#1976d2" fill-opacity="0" cx="24" cy="28" r="0.75" />
|
|
32
|
+
</svg>
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
<rect x="2.8" y="2.6" width="12.4" height="26.6" stroke="#7f7f7f" fill="none" stroke-width="1" />
|
|
7
7
|
|
|
8
8
|
<!-- left window divider -->
|
|
9
|
-
<rect x="3.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" />
|
|
9
|
+
<rect x="3.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" rx="2" />
|
|
10
10
|
|
|
11
11
|
<!-- right window frame -->
|
|
12
12
|
<rect x="16.8" y="2.6" width="12.4" height="26.6" stroke="#7f7f7f" fill="none" stroke-width="1" />
|
|
13
13
|
|
|
14
14
|
<!-- right window divider -->
|
|
15
|
-
<rect x="17.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" />
|
|
15
|
+
<rect x="17.66" y="15.65" width="10.68" height="0.5" stroke="#7f7f7f" fill="none" stroke-width="0.5" rx="2" />
|
|
16
16
|
|
|
17
17
|
<!-- blind -->
|
|
18
18
|
<rect
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
stroke="#7f7f7f"
|
|
16
16
|
fill="none"
|
|
17
17
|
stroke-width="0.5"
|
|
18
|
+
ry="2"
|
|
18
19
|
/>
|
|
19
20
|
|
|
20
21
|
<!-- left window handle -->
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
stroke="#1976d2"
|
|
28
29
|
fill="none"
|
|
29
30
|
stroke-width="0.5"
|
|
31
|
+
ry="2"
|
|
30
32
|
/>
|
|
31
33
|
|
|
32
34
|
<!-- right window frame -->
|
|
@@ -51,6 +53,7 @@
|
|
|
51
53
|
stroke="#7f7f7f"
|
|
52
54
|
fill="none"
|
|
53
55
|
stroke-width="0.5"
|
|
56
|
+
ry="2"
|
|
54
57
|
/>
|
|
55
58
|
|
|
56
59
|
<!-- right window handle -->
|
|
@@ -63,5 +66,6 @@
|
|
|
63
66
|
stroke="#1976d2"
|
|
64
67
|
fill="none"
|
|
65
68
|
stroke-width="0.5"
|
|
69
|
+
ry="2"
|
|
66
70
|
/>
|
|
67
71
|
</svg>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as D}from"./chunk-
|
|
1
|
+
import{a as D}from"./chunk-7EQFLCW4.js";import{Bc as N,Da as l,E as c,Ub as g,fa as _,ha as M,hc as y,ic as b,ja as v,jc as E,la as a,mb as h,nb as w,qb as u,td as O,ub as C,vb as f}from"./chunk-IOKYXV5M.js";var T=["editorContainer"],z="[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}",I=new v("NGX_MONACO_EDITOR_CONFIG"),R=!1,q,x=(()=>{let i=class i{constructor(){this.config=a(I),this.onInit=new C,this._insideNg=!1}set insideNg(e){this._insideNg=e,this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get insideNg(){return this._insideNg}ngAfterViewInit(){R?q.then(()=>{this.initMonaco(this._options,this.insideNg)}):(R=!0,q=new Promise(e=>{let t=this.config.baseUrl;if((t==="assets"||!t)&&(t="./assets/monaco-0.21.3/min/vs"),typeof window.monaco=="object"){this.initMonaco(this._options,this.insideNg),e();return}let o=r=>{let m=r||window.require,p={paths:{vs:`${t}`}};Object.assign(p,this.config.requireConfig||{}),m.config(p),m(["vs/editor/editor.main"],()=>{typeof this.config.onMonacoLoad=="function"&&this.config.onMonacoLoad(),this.initMonaco(this._options,this.insideNg),e()})};if(this.config.monacoRequire)o(this.config.monacoRequire);else if(window.require)if(window.require.config)o();else{var s=`${t}/loader.js`,d=new XMLHttpRequest;d.addEventListener("load",()=>{let r=document.createElement("script");r.type="text/javascript",r.text=["var nodeRequire = require;",d.responseText.replace('"use strict";',""),"var monacoAmdRequire = require;","require = nodeRequire;","require.nodeRequire = require;"].join(`
|
|
2
2
|
`),document.body.appendChild(r),o(window.monacoAmdRequire)}),d.open("GET",s),d.send()}else{let r=document.createElement("script");r.type="text/javascript",r.src=`${t}/loader.js`,r.addEventListener("load",()=>{o()}),document.body.appendChild(r)}}))}ngOnDestroy(){this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._editor&&(this._editor.dispose(),this._editor=void 0)}};i.\u0275fac=function(t){return new(t||i)},i.\u0275cmp=h({type:i,selectors:[["ng-component"]],viewQuery:function(t,o){if(t&1&&y(T,7),t&2){let s;b(s=E())&&(o._editorContainer=s.first)}},inputs:{insideNg:"insideNg"},outputs:{onInit:"onInit"},standalone:!1,decls:0,vars:0,template:function(t,o){},encapsulation:2});let n=i;return n})(),X=(()=>{let i=class i extends x{constructor(){super(...arguments),this.zone=a(f),this._value="",this.propagateChange=e=>{},this.onTouched=()=>{}}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get options(){return this._options}set model(e){this.options.model=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}writeValue(e){this._value=e||"",setTimeout(()=>{this._editor&&!this.options.model&&this._editor.setValue(this._value)})}registerOnChange(e){this.propagateChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.options.readOnly=e}initMonaco(e,t){let o=!!e.model;if(o){let s=monaco.editor.getModel(e.model.uri||"");s?(e.model=s,e.model.setValue(this._value)):e.model=monaco.editor.createModel(e.model.value,e.model.language,e.model.uri)}t?this._editor=monaco.editor.create(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.create(this._editorContainer.nativeElement,e)}),o||this._editor.setValue(this._value),this._editor.onDidChangeModelContent(s=>{let d=this._editor.getValue();this.zone.run(()=>{this.propagateChange(d),this._value=d})}),this._editor.onDidBlurEditorWidget(()=>{this.onTouched()}),this._editor.setTheme=s=>{this.options.theme=s,monaco.editor.setTheme(s)},this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=c(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}};i.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(i)))(o||i)}})(),i.\u0275cmp=h({type:i,selectors:[["ngx-monaco-editor"]],inputs:{options:"options",model:"model"},features:[N([{provide:D,useExisting:_(()=>i),multi:!0}]),u],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(t,o){t&1&&g(0,"div",1,0)},styles:["[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}"],changeDetection:0});let n=i;return n})(),$=(()=>{let i=class i extends x{constructor(){super(...arguments),this.zone=a(f)}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get options(){return this._options}set originalModel(e){this._originalModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}set modifiedModel(e){this._modifiedModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}initMonaco(e,t){if(!this._originalModel||!this._modifiedModel)throw new Error("originalModel or modifiedModel not found for ngx-monaco-diff-editor");this._originalModel.language=this._originalModel.language||e.language,this._modifiedModel.language=this._modifiedModel.language||e.language;let o=monaco.editor.createModel(this._originalModel.code,this._originalModel.language),s=monaco.editor.createModel(this._modifiedModel.code,this._modifiedModel.language);this._editorContainer.nativeElement.innerHTML="";let d=e.theme;t?this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e)}),e.theme=d,this._editor.setModel({original:o,modified:s}),this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=c(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}};i.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(i)))(o||i)}})(),i.\u0275cmp=h({type:i,selectors:[["ngx-monaco-diff-editor"]],inputs:{options:"options",originalModel:"originalModel",modifiedModel:"modifiedModel"},features:[u],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(t,o){t&1&&g(0,"div",1,0)},styles:[z],changeDetection:0});let n=i;return n})(),H=(()=>{let i=class i{static forRoot(e={}){return{ngModule:i,providers:[{provide:I,useValue:e}]}}};i.\u0275fac=function(t){return new(t||i)},i.\u0275mod=w({type:i}),i.\u0275inj=M({imports:[O]});let n=i;return n})();export{X as a,$ as b,H as c};
|