diff --git a/packages/ui/src/colors.ts b/packages/ui/src/colors.ts index ac8322eeac..d36f760b64 100644 --- a/packages/ui/src/colors.ts +++ b/packages/ui/src/colors.ts @@ -311,7 +311,8 @@ function hashCode (str: string): number { * @public */ export function getColorNumberByText (str: string): number { - return hashCode(str) + const hash = hashCode(str) + return Math.abs(hash) % Math.min(darkPalette.length, whitePalette.length) } /** diff --git a/packages/ui/src/components/EmojiPopup.svelte b/packages/ui/src/components/EmojiPopup.svelte index f1055cc15e..083dd6525f 100644 --- a/packages/ui/src/components/EmojiPopup.svelte +++ b/packages/ui/src/components/EmojiPopup.svelte @@ -16,6 +16,7 @@ import { tooltip } from '../tooltips' import { AnySvelteComponent, emojiSP } from '../types' import plugin from '../plugin' + import { fromCodePoint } from '../utils' export let embedded = false export let selected: string | undefined @@ -108,7 +109,7 @@ function getEmojis (startCode: number, endCode: number, postfix?: number[]): Array { return [...Array(endCode - startCode + 1).keys()].map((v) => { - const str = postfix ? String.fromCodePoint(v + startCode, ...postfix) : String.fromCodePoint(v + startCode) + const str = postfix ? fromCodePoint(v + startCode, ...postfix) : fromCodePoint(v + startCode) if ([...str.matchAll(regex)].length > 0) return str return undefined }) diff --git a/packages/ui/src/components/IconWithEmoji.svelte b/packages/ui/src/components/IconWithEmoji.svelte index ed07345114..a1db3e9436 100644 --- a/packages/ui/src/components/IconWithEmoji.svelte +++ b/packages/ui/src/components/IconWithEmoji.svelte @@ -14,13 +14,14 @@ --> diff --git a/packages/ui/src/utils.ts b/packages/ui/src/utils.ts index 9aa06a705f..df8cf8c739 100644 --- a/packages/ui/src/utils.ts +++ b/packages/ui/src/utils.ts @@ -245,6 +245,10 @@ export function formatKey (key: string): string[][] { return result } +export function fromCodePoint (...vals: number[]): string { + return String.fromCodePoint(...vals.map((p) => Math.abs(p) % 0x10ffff)) +} + /** * @public */ diff --git a/plugins/task-resources/src/components/state/CreateStatePopup.svelte b/plugins/task-resources/src/components/state/CreateStatePopup.svelte index c1ce290197..15871b942b 100644 --- a/plugins/task-resources/src/components/state/CreateStatePopup.svelte +++ b/plugins/task-resources/src/components/state/CreateStatePopup.svelte @@ -31,6 +31,7 @@ ModernEditbox, TextArea, closePopup, + fromCodePoint, getPlatformColorDef, showPopup, themeStore @@ -421,7 +422,7 @@ {:else} { color = evt.detail.codePointAt(0) icon = iconWithEmoji diff --git a/plugins/view-resources/src/components/IconPicker.svelte b/plugins/view-resources/src/components/IconPicker.svelte index da715fd37d..a3c125c5c6 100644 --- a/plugins/view-resources/src/components/IconPicker.svelte +++ b/plugins/view-resources/src/components/IconPicker.svelte @@ -14,7 +14,15 @@ -->