mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-01 22:09:55 +00:00
* Remove custom backend download logic * Add download hooks * Download button * Use browser download * Update test
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
export function formatCamelCase(str: string): string {
|
|
// Check if the string is camel case
|
|
const isCamelCase = /^([A-Z][a-z]*)+$/.test(str)
|
|
|
|
if (!isCamelCase) {
|
|
return str // Return original string if not camel case
|
|
}
|
|
|
|
// Split the string into words, keeping acronyms together
|
|
const words = str.split(/(?=[A-Z][a-z])|\d+/)
|
|
|
|
// Process each word
|
|
const processedWords = words.map((word) => {
|
|
// If the word is all uppercase and longer than one character, it's likely an acronym
|
|
if (word.length > 1 && word === word.toUpperCase()) {
|
|
return word // Keep acronyms as is
|
|
}
|
|
// For other words, ensure the first letter is capitalized
|
|
return word.charAt(0).toUpperCase() + word.slice(1)
|
|
})
|
|
|
|
// Join the words with spaces
|
|
return processedWords.join(' ')
|
|
}
|
|
|
|
export function appendJsonExt(path: string) {
|
|
if (!path.toLowerCase().endsWith('.json')) {
|
|
path += '.json'
|
|
}
|
|
return path
|
|
}
|
|
|
|
export function trimJsonExt(path?: string) {
|
|
return path?.replace(/\.json$/, '')
|
|
}
|
|
|
|
export function highlightQuery(text: string, query: string) {
|
|
if (!query) return text
|
|
const regex = new RegExp(`(${query})`, 'gi')
|
|
return text.replace(regex, '<span class="highlight">$1</span>')
|
|
}
|
|
|
|
export function formatNumberWithSuffix(
|
|
num: number,
|
|
{
|
|
precision = 1,
|
|
roundToInt = false
|
|
}: { precision?: number; roundToInt?: boolean } = {}
|
|
): string {
|
|
const suffixes = ['', 'k', 'm', 'b', 't']
|
|
const absNum = Math.abs(num)
|
|
|
|
if (absNum < 1000) {
|
|
return roundToInt ? Math.round(num).toString() : num.toFixed(precision)
|
|
}
|
|
|
|
const exp = Math.min(Math.floor(Math.log10(absNum) / 3), suffixes.length - 1)
|
|
const formattedNum = (num / Math.pow(1000, exp)).toFixed(precision)
|
|
|
|
return `${formattedNum}${suffixes[exp]}`
|
|
}
|
|
|
|
export function formatSize(value?: number) {
|
|
if (value === null || value === undefined) {
|
|
return '-'
|
|
}
|
|
|
|
const bytes = value
|
|
if (bytes === 0) return '0 B'
|
|
const k = 1024
|
|
const sizes = ['B', 'KB', 'MB', 'GB']
|
|
const i = Math.floor(Math.log(bytes) / Math.log(k))
|
|
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`
|
|
}
|