diff --git a/package-lock.json b/package-lock.json index 8d244015b..e182e9aec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "@nextcloud/router": "^2.1.2", "@nextcloud/vue": "^7.12.4", "blueimp-md5": "^2.19.0", + "chroma-js": "^2.4.2", "dompurify": "^3.0.5", "lodash": "^4.17.21", "markdown-it": "^13.0.1", @@ -6713,6 +6714,11 @@ "fsevents": "~2.3.2" } }, + "node_modules/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, "node_modules/chrome-trace-event": { "version": "1.0.3", "license": "MIT", @@ -24826,6 +24832,11 @@ "readdirp": "~3.6.0" } }, + "chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" + }, "chrome-trace-event": { "version": "1.0.3", "peer": true diff --git a/package.json b/package.json index 8028de4fc..cfb79b881 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "@nextcloud/router": "^2.1.2", "@nextcloud/vue": "^7.12.4", "blueimp-md5": "^2.19.0", + "chroma-js": "^2.4.2", "dompurify": "^3.0.5", "lodash": "^4.17.21", "markdown-it": "^13.0.1", diff --git a/src/components/cards/CardItem.vue b/src/components/cards/CardItem.vue index f0a18cf90..a46ffcc9f 100644 --- a/src/components/cards/CardItem.vue +++ b/src/components/cards/CardItem.vue @@ -65,6 +65,7 @@ + 0.5 ? d / (2 - max - min) : d / (max + min) - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0) - break - case g: - h = (b - r) / d + 2 - break - case b: - h = (r - g) / d + 4 - break - } - h /= 6 - } - return { - h, l, s, - } - }, textColor(hex) { - - const rgb = this.hexToRgb(hex) - if (rgb === null) { - return '#000000' - } - const { l } = this.rgb2hls(rgb) - - if (l < 0.5) { - return '#ffffff' - } else { - return '#000000' - } - + return chroma(hex).get('lab.l') > 50 ? '#000000' : '#ffffff' }, colorIsValid(hex) { - const re = /[A-Fa-f0-9]{6}/ if (re.test(hex)) { return true } return false - }, randomColor() { return Math.floor(Math.random() * (0xffffff + 1)).toString(16).padStart(6, '0')