mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-05-04 13:29:13 -04:00
Merge b1cb1cca4d
into 67094980c9
This commit is contained in:
commit
a7c3756e9d
5 changed files with 355 additions and 0 deletions
|
@ -91,6 +91,7 @@
|
||||||
"unplugin-auto-import": "^0.16.4",
|
"unplugin-auto-import": "^0.16.4",
|
||||||
"uuid": "^9.0.0",
|
"uuid": "^9.0.0",
|
||||||
"vue": "^3.3.4",
|
"vue": "^3.3.4",
|
||||||
|
"vue-color-wheel": "^0.1.1",
|
||||||
"vue-i18n": "^9.9.1",
|
"vue-i18n": "^9.9.1",
|
||||||
"vue-router": "^4.1.6",
|
"vue-router": "^4.1.6",
|
||||||
"vue-tsc": "^1.8.1",
|
"vue-tsc": "^1.8.1",
|
||||||
|
|
203
pnpm-lock.yaml
generated
203
pnpm-lock.yaml
generated
|
@ -173,6 +173,9 @@ dependencies:
|
||||||
vue:
|
vue:
|
||||||
specifier: ^3.3.4
|
specifier: ^3.3.4
|
||||||
version: 3.3.4
|
version: 3.3.4
|
||||||
|
vue-color-wheel:
|
||||||
|
specifier: ^0.1.1
|
||||||
|
version: 0.1.1
|
||||||
vue-i18n:
|
vue-i18n:
|
||||||
specifier: ^9.9.1
|
specifier: ^9.9.1
|
||||||
version: 9.9.1(vue@3.3.4)
|
version: 9.9.1(vue@3.3.4)
|
||||||
|
@ -1910,6 +1913,12 @@ packages:
|
||||||
'@babel/helper-validator-identifier': 7.22.20
|
'@babel/helper-validator-identifier': 7.22.20
|
||||||
to-fast-properties: 2.0.0
|
to-fast-properties: 2.0.0
|
||||||
|
|
||||||
|
/@cfcs/core@0.0.6:
|
||||||
|
resolution: {integrity: sha512-FxfJMwoLB8MEMConeXUCqtMGqxdtePQxRBOiGip9ULcYYam3WfCgoY6xdnMaSkYvRvmosp5iuG+TiPofm65+Pw==}
|
||||||
|
dependencies:
|
||||||
|
'@egjs/component': 3.0.5
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@css-render/plugin-bem@0.15.12(css-render@0.15.12):
|
/@css-render/plugin-bem@0.15.12(css-render@0.15.12):
|
||||||
resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==}
|
resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -1926,6 +1935,28 @@ packages:
|
||||||
vue: 3.3.4
|
vue: 3.3.4
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/@daybrush/utils@1.13.0:
|
||||||
|
resolution: {integrity: sha512-ALK12C6SQNNHw1enXK+UO8bdyQ+jaWNQ1Af7Z3FNxeAwjYhQT7do+TRE4RASAJ3ObaS2+TJ7TXR3oz2Gzbw0PQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@egjs/agent@2.4.4:
|
||||||
|
resolution: {integrity: sha512-cvAPSlUILhBBOakn2krdPnOGv5hAZq92f1YHxYcfu0p7uarix2C6Ia3AVizpS1SGRZGiEkIS5E+IVTLg1I2Iog==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@egjs/children-differ@1.0.1:
|
||||||
|
resolution: {integrity: sha512-DRvyqMf+CPCOzAopQKHtW+X8iN6Hy6SFol+/7zCUiE5y4P/OB8JP8FtU4NxtZwtafvSL4faD5KoQYPj3JHzPFQ==}
|
||||||
|
dependencies:
|
||||||
|
'@egjs/list-differ': 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@egjs/component@3.0.5:
|
||||||
|
resolution: {integrity: sha512-cLcGizTrrUNA2EYE3MBmEDt2tQv1joVP1Q3oDisZ5nw0MZDx2kcgEXM+/kZpfa/PAkFvYVhRUZwytIQWoN3V/w==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@egjs/list-differ@1.0.1:
|
||||||
|
resolution: {integrity: sha512-OTFTDQcWS+1ZREOdCWuk5hCBgYO4OsD30lXcOCyVOAjXMhgL5rBRDnt/otb6Nz8CzU0L/igdcaQBDLWc4t9gvg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@emotion/hash@0.8.0:
|
/@emotion/hash@0.8.0:
|
||||||
resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
|
resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -2601,6 +2632,25 @@ packages:
|
||||||
resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==}
|
resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@scena/dragscroll@1.4.0:
|
||||||
|
resolution: {integrity: sha512-3O8daaZD9VXA9CP3dra6xcgt/qrm0mg0xJCwiX6druCteQ9FFsXffkF8PrqxY4Z4VJ58fFKEa0RlKqbsi/XnRA==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@scena/event-emitter': 1.0.5
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@scena/event-emitter@1.0.5:
|
||||||
|
resolution: {integrity: sha512-AzY4OTb0+7ynefmWFQ6hxDdk0CySAq/D4efljfhtRHCOP7MBF9zUfhKG3TJiroVjASqVgkRJFdenS8ArZo6Olg==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@scena/matrix@1.1.1:
|
||||||
|
resolution: {integrity: sha512-JVKBhN0tm2Srl+Yt+Ywqu0oLgLcdemDQlD1OxmN9jaCTwaFPZ7tY8n6dhVgMEaR9qcR7r+kAlMXnSfNyYdE+Vg==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@sinclair/typebox@0.27.8:
|
/@sinclair/typebox@0.27.8:
|
||||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -4641,6 +4691,43 @@ packages:
|
||||||
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
|
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/croact-css-styled@1.1.9:
|
||||||
|
resolution: {integrity: sha512-G7yvRiVJ3Eoj0ov2h2xR4312hpOzATay2dGS9clK8yJQothjH1sBXIyvOeRP5wBKD9mPcKcoUXPCPsl0tQog4w==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
css-styled: 1.0.8
|
||||||
|
framework-utils: 1.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/croact-moveable@0.9.0(croact@1.0.4):
|
||||||
|
resolution: {integrity: sha512-fc3bieV6CdqqZFtzsSLi9KmvUMFW3oakUfhPCls1BxKjOfUfn8rktteGED2341A/Qghy8tI3Hm6SdocIc68IKg==}
|
||||||
|
peerDependencies:
|
||||||
|
croact: ^1.0.4
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@egjs/agent': 2.4.4
|
||||||
|
'@egjs/children-differ': 1.0.1
|
||||||
|
'@egjs/list-differ': 1.0.1
|
||||||
|
'@scena/dragscroll': 1.4.0
|
||||||
|
'@scena/event-emitter': 1.0.5
|
||||||
|
'@scena/matrix': 1.1.1
|
||||||
|
croact: 1.0.4
|
||||||
|
croact-css-styled: 1.1.9
|
||||||
|
css-to-mat: 1.1.1
|
||||||
|
framework-utils: 1.1.0
|
||||||
|
gesto: 1.19.4
|
||||||
|
overlap-area: 1.1.0
|
||||||
|
react-css-styled: 1.1.9
|
||||||
|
react-moveable: 0.56.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/croact@1.0.4:
|
||||||
|
resolution: {integrity: sha512-9GhvyzTY/IVUrMQ2iz/mzgZ8+NcjczmIo/t4FkC1CU0CEcau6v6VsEih4jkTa4ZmRgYTF0qXEZLObCzdDFplpw==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@egjs/list-differ': 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/cron-validator@1.3.1:
|
/cron-validator@1.3.1:
|
||||||
resolution: {integrity: sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A==}
|
resolution: {integrity: sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -4684,6 +4771,19 @@ packages:
|
||||||
nth-check: 2.1.1
|
nth-check: 2.1.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/css-styled@1.0.8:
|
||||||
|
resolution: {integrity: sha512-tCpP7kLRI8dI95rCh3Syl7I+v7PP+2JYOzWkl0bUEoSbJM+u8ITbutjlQVf0NC2/g4ULROJPi16sfwDIO8/84g==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/css-to-mat@1.1.1:
|
||||||
|
resolution: {integrity: sha512-kvpxFYZb27jRd2vium35G7q5XZ2WJ9rWjDUMNT36M3Hc41qCrLXFM5iEKMGXcrPsKfXEN+8l/riB4QzwwwiEyQ==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@scena/matrix': 1.1.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/css-tree@2.2.1:
|
/css-tree@2.2.1:
|
||||||
resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
|
resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
|
||||||
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
|
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
|
||||||
|
@ -5708,6 +5808,10 @@ packages:
|
||||||
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
|
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/framework-utils@1.1.0:
|
||||||
|
resolution: {integrity: sha512-KAfqli5PwpFJ8o3psRNs8svpMGyCSAe8nmGcjQ0zZBWN2H6dZDnq+ABp3N3hdUmFeMrLtjOCTXD4yplUJIWceg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/from@0.1.7:
|
/from@0.1.7:
|
||||||
resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
|
resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -5791,6 +5895,13 @@ packages:
|
||||||
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
|
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
/gesto@1.19.4:
|
||||||
|
resolution: {integrity: sha512-hfr/0dWwh0Bnbb88s3QVJd1ZRJeOWcgHPPwmiH6NnafDYvhTsxg+SLYu+q/oPNh9JS3V+nlr6fNs8kvPAtcRDQ==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@scena/event-emitter': 1.0.5
|
||||||
|
dev: false
|
||||||
|
|
||||||
/get-caller-file@2.0.5:
|
/get-caller-file@2.0.5:
|
||||||
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
|
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
|
||||||
engines: {node: 6.* || 8.* || >= 10.*}
|
engines: {node: 6.* || 8.* || >= 10.*}
|
||||||
|
@ -5944,6 +6055,10 @@ packages:
|
||||||
strip-bom-string: 1.0.0
|
strip-bom-string: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/gsap@3.12.5:
|
||||||
|
resolution: {integrity: sha512-srBfnk4n+Oe/ZnMIOXt3gT605BX9x5+rh/prT2F1SsNJsU1XuMiP0E2aptW481OnonOGACZWBqseH5Z7csHxhQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/gzip-size@6.0.0:
|
/gzip-size@6.0.0:
|
||||||
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
|
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
@ -6644,6 +6759,19 @@ packages:
|
||||||
resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==}
|
resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/keycode@2.2.1:
|
||||||
|
resolution: {integrity: sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/keycon@1.4.0:
|
||||||
|
resolution: {integrity: sha512-p1NAIxiRMH3jYfTeXRs2uWbVJ1WpEjpi8ktzUyBJsX7/wn2qu2VRXktneBLNtKNxJmlUYxRi9gOJt1DuthXR7A==}
|
||||||
|
dependencies:
|
||||||
|
'@cfcs/core': 0.0.6
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@scena/event-emitter': 1.0.5
|
||||||
|
keycode: 2.2.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/kind-of@6.0.3:
|
/kind-of@6.0.3:
|
||||||
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
|
resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
@ -7002,6 +7130,16 @@ packages:
|
||||||
resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==}
|
resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/moveable@0.53.0:
|
||||||
|
resolution: {integrity: sha512-71jS9zIoQzMhnNvduhg4tUEdm23+fO/40FN7muVMbZvVwbTku2MIxxLhnU4qFvxI4oVxn75l79SbtgjuA+s7Pw==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@scena/event-emitter': 1.0.5
|
||||||
|
croact: 1.0.4
|
||||||
|
croact-moveable: 0.9.0(croact@1.0.4)
|
||||||
|
react-moveable: 0.56.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/mrmime@1.0.1:
|
/mrmime@1.0.1:
|
||||||
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
|
resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
@ -7258,6 +7396,12 @@ packages:
|
||||||
resolution: {integrity: sha512-PPrr40z5/MPStTTGJ0QtSD9KtaGHmnexBQWANWLWQOZZwbNMf/VyG/Uh29LwxExd51p3S323oM3kHbjRqmBiLg==}
|
resolution: {integrity: sha512-PPrr40z5/MPStTTGJ0QtSD9KtaGHmnexBQWANWLWQOZZwbNMf/VyG/Uh29LwxExd51p3S323oM3kHbjRqmBiLg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/overlap-area@1.1.0:
|
||||||
|
resolution: {integrity: sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/p-limit@2.3.0:
|
/p-limit@2.3.0:
|
||||||
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
|
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -7764,10 +7908,41 @@ packages:
|
||||||
safe-buffer: 5.2.1
|
safe-buffer: 5.2.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/react-css-styled@1.1.9:
|
||||||
|
resolution: {integrity: sha512-M7fJZ3IWFaIHcZEkoFOnkjdiUFmwd8d+gTh2bpqMOcnxy/0Gsykw4dsL4QBiKsxcGow6tETUa4NAUcmJF+/nfw==}
|
||||||
|
dependencies:
|
||||||
|
css-styled: 1.0.8
|
||||||
|
framework-utils: 1.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/react-is@18.2.0:
|
/react-is@18.2.0:
|
||||||
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
|
resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/react-moveable@0.56.0:
|
||||||
|
resolution: {integrity: sha512-FmJNmIOsOA36mdxbrc/huiE4wuXSRlmon/o+/OrfNhSiYYYL0AV5oObtPluEhb2Yr/7EfYWBHTxF5aWAvjg1SA==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@egjs/agent': 2.4.4
|
||||||
|
'@egjs/children-differ': 1.0.1
|
||||||
|
'@egjs/list-differ': 1.0.1
|
||||||
|
'@scena/dragscroll': 1.4.0
|
||||||
|
'@scena/event-emitter': 1.0.5
|
||||||
|
'@scena/matrix': 1.1.1
|
||||||
|
css-to-mat: 1.1.1
|
||||||
|
framework-utils: 1.1.0
|
||||||
|
gesto: 1.19.4
|
||||||
|
overlap-area: 1.1.0
|
||||||
|
react-css-styled: 1.1.9
|
||||||
|
react-selecto: 1.26.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/react-selecto@1.26.3:
|
||||||
|
resolution: {integrity: sha512-Ubik7kWSnZyQEBNro+1k38hZaI1tJarE+5aD/qsqCOA1uUBSjgKVBy3EWRzGIbdmVex7DcxznFZLec/6KZNvwQ==}
|
||||||
|
dependencies:
|
||||||
|
selecto: 1.26.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/read-pkg-up@7.0.1:
|
/read-pkg-up@7.0.1:
|
||||||
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
|
resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -8036,6 +8211,21 @@ packages:
|
||||||
resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==}
|
resolution: {integrity: sha512-lEV5VB8BUKTo/AfktXJcy+JeXns26ylbMkIUco8CYREsQijuz4mrXres2Q+vMLdwkuLxJdIPQ8IlCIxLYm71Yw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/selecto@1.26.3:
|
||||||
|
resolution: {integrity: sha512-gZHgqMy5uyB6/2YDjv3Qqaf7bd2hTDOpPdxXlrez4R3/L0GiEWDCFaUfrflomgqdb3SxHF2IXY0Jw0EamZi7cw==}
|
||||||
|
dependencies:
|
||||||
|
'@daybrush/utils': 1.13.0
|
||||||
|
'@egjs/children-differ': 1.0.1
|
||||||
|
'@scena/dragscroll': 1.4.0
|
||||||
|
'@scena/event-emitter': 1.0.5
|
||||||
|
css-styled: 1.0.8
|
||||||
|
css-to-mat: 1.1.1
|
||||||
|
framework-utils: 1.1.0
|
||||||
|
gesto: 1.19.4
|
||||||
|
keycon: 1.4.0
|
||||||
|
overlap-area: 1.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/semver@5.7.2:
|
/semver@5.7.2:
|
||||||
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
|
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
@ -9185,6 +9375,15 @@ packages:
|
||||||
vue: 3.3.4
|
vue: 3.3.4
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/vue-color-wheel@0.1.1:
|
||||||
|
resolution: {integrity: sha512-FOZztY9puZM+cVWMd9JdOMDHQKCeOoD8qUeJOeSxw4FheOXuuaKpr9Kep2qSX2gTiLEpTgwiFaUkRQnSCVInAQ==}
|
||||||
|
dependencies:
|
||||||
|
colord: 2.9.3
|
||||||
|
gsap: 3.12.5
|
||||||
|
moveable: 0.53.0
|
||||||
|
vue-sonner: 1.1.4
|
||||||
|
dev: false
|
||||||
|
|
||||||
/vue-demi@0.13.11(vue@3.3.4):
|
/vue-demi@0.13.11(vue@3.3.4):
|
||||||
resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
|
resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -9268,6 +9467,10 @@ packages:
|
||||||
vue: 3.3.4
|
vue: 3.3.4
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/vue-sonner@1.1.4:
|
||||||
|
resolution: {integrity: sha512-ATt+o38ALfPBfmaT3rfr10K+mkZ/7EdqZewEZVI3krSc1RaIDK8fI9gQro0Jlh8HZcOHv2oUDJufSIUl/qpdOA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/vue-template-compiler@2.7.14:
|
/vue-template-compiler@2.7.14:
|
||||||
resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
|
resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
137
src/tools/color-wheel/color-wheel.vue
Normal file
137
src/tools/color-wheel/color-wheel.vue
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { colord, extend } from 'colord';
|
||||||
|
import a11yPlugin from 'colord/plugins/a11y';
|
||||||
|
|
||||||
|
import { computed, ref, watch } from 'vue';
|
||||||
|
import { useDebounce } from '@vueuse/core';
|
||||||
|
import type { Harmony, HarmonyType } from 'vue-color-wheel';
|
||||||
|
import { VueColorWheel } from 'vue-color-wheel';
|
||||||
|
|
||||||
|
extend([a11yPlugin]);
|
||||||
|
|
||||||
|
const wheelColor = useDebounce(ref('#40ffff')); // { hue: 0, saturation: 0.68, value: 1 }
|
||||||
|
const colors = ref<Array<Harmony>>([]);
|
||||||
|
const currentType = ref<HarmonyType>('analogous');
|
||||||
|
const isColorReadable = ref(false);
|
||||||
|
const isDarkTheme = useDark();
|
||||||
|
|
||||||
|
const harmonyTypes: { type: HarmonyType; label: string }[] = [
|
||||||
|
{ type: 'monochromatic', label: 'Monochromatic' },
|
||||||
|
{ type: 'complementary', label: 'Complementary' },
|
||||||
|
{ type: 'analogous', label: 'Analogous' },
|
||||||
|
{ type: 'triad', label: 'Triad' },
|
||||||
|
{ type: 'split', label: 'Split' },
|
||||||
|
{ type: 'compound', label: 'Compound' },
|
||||||
|
{ type: 'tetradic', label: 'Tetradic' },
|
||||||
|
{ type: 'square', label: 'Square' },
|
||||||
|
{ type: 'doubleSplit', label: 'Double Split' },
|
||||||
|
];
|
||||||
|
|
||||||
|
const colorList = computed(() => {
|
||||||
|
return colors.value.map(item => colord(item.rgb).toHex());
|
||||||
|
});
|
||||||
|
|
||||||
|
function handleChangeGradient(harmonyColors: Harmony[]) {
|
||||||
|
const newColors = harmonyColors.map(color => colord(color.rgb).toHex());
|
||||||
|
|
||||||
|
const [base, secondary] = newColors;
|
||||||
|
|
||||||
|
const rootEl = document.documentElement;
|
||||||
|
|
||||||
|
// change the colors variables
|
||||||
|
harmonyColors.map((color, index) => {
|
||||||
|
const { r, g, b } = colord(color.rgb).toRgb();
|
||||||
|
rootEl.style.setProperty(`--color${index + 1}`, `${r}, ${g}, ${b}`);
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
const secondaryRgb = colord(secondary).toRgb();
|
||||||
|
rootEl.style.setProperty(
|
||||||
|
'--color-interactive',
|
||||||
|
`${secondaryRgb.r}, ${secondaryRgb.g}, ${secondaryRgb.b}`,
|
||||||
|
);
|
||||||
|
if (newColors.length === 3) {
|
||||||
|
const lightColor = colord(base).saturate(0.25).toRgb();
|
||||||
|
const darkColor = colord(base).desaturate(0.25).toRgb();
|
||||||
|
rootEl.style.setProperty(
|
||||||
|
'--color4',
|
||||||
|
`${lightColor.r}, ${lightColor.g}, ${lightColor.b}`,
|
||||||
|
);
|
||||||
|
rootEl.style.setProperty(
|
||||||
|
'--color5',
|
||||||
|
`${darkColor.r}, ${darkColor.g}, ${darkColor.b}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
isColorReadable.value = colord(base).isReadable(
|
||||||
|
isDarkTheme.value ? '#fff' : '#000',
|
||||||
|
{ level: 'AAA' },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleChangeColors(harmonyColors: Harmony[]) {
|
||||||
|
colors.value = harmonyColors;
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => colors.value,
|
||||||
|
(newColors) => {
|
||||||
|
handleChangeGradient(newColors);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div style="max-width: 600px">
|
||||||
|
<c-card title="Pick a color" mb-2>
|
||||||
|
<n-color-picker :value="wheelColor" :show-alpha="false" />
|
||||||
|
<div
|
||||||
|
:style="{ backgroundColor: wheelColor }"
|
||||||
|
/>
|
||||||
|
</c-card>
|
||||||
|
|
||||||
|
<c-card title="Pick a palette type" mb-2>
|
||||||
|
<n-radio-group v-model:value="currentType" name="radiogroup">
|
||||||
|
<n-space>
|
||||||
|
<n-radio
|
||||||
|
v-for="v in harmonyTypes"
|
||||||
|
:key="v.type"
|
||||||
|
:value="v.type"
|
||||||
|
:label="v.label"
|
||||||
|
/>
|
||||||
|
</n-space>
|
||||||
|
</n-radio-group>
|
||||||
|
</c-card>
|
||||||
|
<c-card title="Wheel" mb-2 style="text-align: center">
|
||||||
|
<div style="display: inline-block">
|
||||||
|
<VueColorWheel
|
||||||
|
v-model:color="wheelColor"
|
||||||
|
wheel="aurora"
|
||||||
|
:harmony="currentType"
|
||||||
|
:radius="160"
|
||||||
|
:default-color="wheelColor"
|
||||||
|
:show-brightness="false"
|
||||||
|
@change="handleChangeColors"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</c-card>
|
||||||
|
<div
|
||||||
|
v-for="(color, i) in colorList"
|
||||||
|
:key="i"
|
||||||
|
mt-1 flex items-center justify-center gap-1
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
p-1
|
||||||
|
:style="{
|
||||||
|
backgroundColor: `${color}`,
|
||||||
|
color: isColorReadable ? '#000' : '#fff',
|
||||||
|
}"
|
||||||
|
>
|
||||||
|
{{ color }}
|
||||||
|
</div>
|
||||||
|
<input-copyable :value="color" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
12
src/tools/color-wheel/index.ts
Normal file
12
src/tools/color-wheel/index.ts
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import { ColorPicker } from '@vicons/tabler';
|
||||||
|
import { defineTool } from '../tool';
|
||||||
|
|
||||||
|
export const tool = defineTool({
|
||||||
|
name: 'Color Wheel',
|
||||||
|
path: '/color-wheel',
|
||||||
|
description: 'Choose a color palette/theme using a wheel and mode',
|
||||||
|
keywords: ['color', 'wheel', 'palette', 'theme'],
|
||||||
|
component: () => import('./color-wheel.vue'),
|
||||||
|
icon: ColorPicker,
|
||||||
|
createdAt: new Date('2024-08-15'),
|
||||||
|
});
|
|
@ -2,6 +2,7 @@ import { tool as base64FileConverter } from './base64-file-converter';
|
||||||
import { tool as base64StringConverter } from './base64-string-converter';
|
import { tool as base64StringConverter } from './base64-string-converter';
|
||||||
import { tool as basicAuthGenerator } from './basic-auth-generator';
|
import { tool as basicAuthGenerator } from './basic-auth-generator';
|
||||||
import { tool as emailNormalizer } from './email-normalizer';
|
import { tool as emailNormalizer } from './email-normalizer';
|
||||||
|
import { tool as colorWheel } from './color-wheel';
|
||||||
|
|
||||||
import { tool as asciiTextDrawer } from './ascii-text-drawer';
|
import { tool as asciiTextDrawer } from './ascii-text-drawer';
|
||||||
|
|
||||||
|
@ -135,6 +136,7 @@ export const toolsByCategory: ToolCategory[] = [
|
||||||
httpStatusCodes,
|
httpStatusCodes,
|
||||||
jsonDiff,
|
jsonDiff,
|
||||||
safelinkDecoder,
|
safelinkDecoder,
|
||||||
|
colorWheel,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue