| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- export const isMac = () => {
- return navigator.userAgent.toUpperCase().includes('MAC')
- }
-
- const specialKeysNameMap: Record<string, string | undefined> = {
- ctrl: '⌘',
- alt: '⌥',
- shift: '⇧',
- }
-
- export const getKeyboardKeyNameBySystem = (key: string) => {
- if (isMac())
- return specialKeysNameMap[key] || key
-
- return key
- }
-
- const specialKeysCodeMap: Record<string, string | undefined> = {
- ctrl: 'meta',
- }
-
- export const getKeyboardKeyCodeBySystem = (key: string) => {
- if (isMac())
- return specialKeysCodeMap[key] || key
-
- return key
- }
-
- export const isEventTargetInputArea = (target: HTMLElement) => {
- if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA')
- return true
-
- if (target.contentEditable === 'true')
- return true
- }
-
- /**
- * Format workflow run identifier using finished_at timestamp
- * @param finishedAt - Unix timestamp in seconds
- * @param fallbackText - Text to show when finishedAt is not available (default: 'Running')
- * @returns Formatted string like " (14:30:25)" or " (Running)"
- */
- export const formatWorkflowRunIdentifier = (finishedAt?: number, fallbackText = 'Running'): string => {
- if (!finishedAt)
- return ` (${fallbackText})`
-
- const date = new Date(finishedAt * 1000)
- const timeStr = date.toLocaleTimeString([], {
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- })
- return ` (${timeStr})`
- }
|