2023-01-08 06:21:09 +00:00
|
|
|
import type { mastodon } from 'masto'
|
2022-11-22 23:42:20 +00:00
|
|
|
|
2023-04-23 19:40:55 +00:00
|
|
|
export const UserLinkRE = /^(?:https:\/)?\/([^/]+)\/@([^/]+)$/
|
2023-04-28 17:33:34 +00:00
|
|
|
export const TagLinkRE = /^https?:\/\/([^/]+)\/tags\/([^/]+)\/?$/
|
2022-12-21 07:46:36 +00:00
|
|
|
export const HTMLTagRE = /<[^>]+>/g
|
2022-11-23 03:48:01 +00:00
|
|
|
|
2022-11-21 13:21:53 +00:00
|
|
|
export function getDataUrlFromArr(arr: Uint8ClampedArray, w: number, h: number) {
|
|
|
|
if (typeof w === 'undefined' || typeof h === 'undefined')
|
|
|
|
w = h = Math.sqrt(arr.length / 4)
|
|
|
|
|
|
|
|
const canvas = document.createElement('canvas')
|
|
|
|
const ctx = canvas.getContext('2d')!
|
|
|
|
|
|
|
|
canvas.width = w
|
|
|
|
canvas.height = h
|
|
|
|
|
|
|
|
const imgData = ctx.createImageData(w, h)
|
|
|
|
imgData.data.set(arr)
|
|
|
|
ctx.putImageData(imgData, 0, 0)
|
|
|
|
|
|
|
|
return canvas.toDataURL()
|
|
|
|
}
|
2022-11-22 23:42:20 +00:00
|
|
|
|
2023-01-08 06:21:09 +00:00
|
|
|
export function emojisArrayToObject(emojis: mastodon.v1.CustomEmoji[]) {
|
2022-11-22 23:42:20 +00:00
|
|
|
return Object.fromEntries(emojis.map(i => [i.shortcode, i]))
|
|
|
|
}
|
2022-11-24 03:42:03 +00:00
|
|
|
|
2022-11-30 06:35:12 +00:00
|
|
|
export function noop() {}
|
|
|
|
|
2023-03-30 19:01:24 +00:00
|
|
|
export function useIsMac() {
|
2023-02-12 11:48:52 +00:00
|
|
|
const headers = useRequestHeaders(['user-agent'])
|
|
|
|
return computed(() => headers['user-agent']?.includes('Macintosh')
|
2022-12-02 08:52:00 +00:00
|
|
|
?? navigator?.platform?.includes('Mac') ?? false)
|
2023-02-12 11:48:52 +00:00
|
|
|
}
|
2022-12-21 07:46:36 +00:00
|
|
|
|
2023-08-02 10:28:18 +00:00
|
|
|
export function isEmptyObject(object: object) {
|
2023-03-30 19:01:24 +00:00
|
|
|
return Object.keys(object).length === 0
|
|
|
|
}
|
2022-12-26 08:50:11 +00:00
|
|
|
|
2022-12-21 07:46:36 +00:00
|
|
|
export function removeHTMLTags(str: string) {
|
|
|
|
return str.replaceAll(HTMLTagRE, '')
|
|
|
|
}
|