diff options
| author | Dhravya <[email protected]> | 2024-05-25 18:41:26 -0500 |
|---|---|---|
| committer | Dhravya <[email protected]> | 2024-05-25 18:41:26 -0500 |
| commit | 075f45986fd4d198292226e64afb71b3515576b4 (patch) | |
| tree | 5c728356cd0310f1c1c012fd6618c72a836c314b /apps/web/src/lib/utils.ts | |
| parent | added social material (diff) | |
| download | supermemory-075f45986fd4d198292226e64afb71b3515576b4.tar.xz supermemory-075f45986fd4d198292226e64afb71b3515576b4.zip | |
refactored UI, with shared components and UI, better rules and million lint
Diffstat (limited to 'apps/web/src/lib/utils.ts')
| -rw-r--r-- | apps/web/src/lib/utils.ts | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/apps/web/src/lib/utils.ts b/apps/web/src/lib/utils.ts deleted file mode 100644 index 81fa8549..00000000 --- a/apps/web/src/lib/utils.ts +++ /dev/null @@ -1,111 +0,0 @@ -"use client"; -import { type ClassValue, clsx } from "clsx"; -import { twMerge } from "tailwind-merge"; - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); -} - -// removes http(s?):// and / from the url -export function cleanUrl(url: string) { - if (url.endsWith("/")) { - url = url.slice(0, -1); - } - return url.startsWith("https://") - ? url.slice(8) - : url.startsWith("http://") - ? url.slice(7) - : url; -} - -export function getIdsFromSource(sourceIds: string[]) { - console.log(sourceIds); - return sourceIds.map((id) => { - const parts = id.split("-"); - if (parts.length > 1) { - return parts.slice(0, -1).join("-"); - } else { - return id; - } - }); -} - -export function generateId() { - return Math.random().toString(36).slice(2, 9); -} - -export function svgId(prefix: string, id: string) { - return `${prefix}-${id}`; -} - -export function countLines(textarea: HTMLTextAreaElement): number { - let _buffer: HTMLTextAreaElement | null = null; - - if (_buffer == null) { - _buffer = document.createElement("textarea"); - _buffer.style.border = "none"; - _buffer.style.height = "0"; - _buffer.style.overflow = "hidden"; - _buffer.style.padding = "0"; - _buffer.style.position = "absolute"; - _buffer.style.left = "0"; - _buffer.style.top = "0"; - _buffer.style.zIndex = "-1"; - document.body.appendChild(_buffer); - } - - const cs = window.getComputedStyle(textarea); - const pl = parseInt(cs.paddingLeft as string); - const pr = parseInt(cs.paddingRight as string); - let lh = parseInt(cs.lineHeight as string); - - // [cs.lineHeight] may return 'normal', which means line height = font size. - if (isNaN(lh)) lh = parseInt(cs.fontSize as string); - - // Copy content width. - if (_buffer) { - _buffer.style.width = textarea.clientWidth - pl - pr + "px"; - - // Copy text properties. - _buffer.style.font = cs.font as string; - _buffer.style.letterSpacing = cs.letterSpacing as string; - _buffer.style.whiteSpace = cs.whiteSpace as string; - _buffer.style.wordBreak = cs.wordBreak as string; - _buffer.style.wordSpacing = cs.wordSpacing as string; - _buffer.style.wordWrap = cs.wordWrap as string; - - // Copy value. - _buffer.value = textarea.value; - - const result = Math.floor(_buffer.scrollHeight / lh); - return result > 0 ? result : 1; - } - - return 0; -} - -export function convertRemToPixels(rem: number) { - return rem * parseFloat(getComputedStyle(document.documentElement).fontSize); -} - -export function isArraysEqual(a: any[], b: any[]) { - if (a === b) return true; - if (a == null || b == null) return false; - if (a.length !== b.length) return false; - - let isEqual = true; - - a.forEach((i) => { - if (!isEqual) return; - isEqual = b.includes(i); - }); - - if (!isEqual) return isEqual; - - b.forEach((i) => { - if (!isEqual) return; - isEqual = a.includes(i); - }); - - return isEqual; -} |