Files
standardnotes-app-web/packages/web/src/javascripts/Constants/Constants.ts

64 lines
1.9 KiB
TypeScript

import { IconType } from '@standardnotes/snjs'
export const PANEL_NAME_NOTES = 'notes'
export const PANEL_NAME_NAVIGATION = 'navigation'
export const URL_REGEX =
/((https?:\/\/(www\.)?)|(www\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/
export const EMAIL_REGEX =
/^([a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)$/
export const MENU_MARGIN_FROM_APP_BORDER = 5
export const MAX_MENU_SIZE_MULTIPLIER = 30
export const FOCUSABLE_BUT_NOT_TABBABLE = -1
export const NOTES_LIST_SCROLL_THRESHOLD = 200
export const MILLISECONDS_IN_A_SECOND = 1000
export const MILLISECONDS_IN_A_DAY = 1000 * 60 * 60 * 24
export const DAYS_IN_A_WEEK = 7
export const DAYS_IN_A_YEAR = 365
export const BYTES_IN_ONE_KILOBYTE = 1_000
export const BYTES_IN_ONE_MEGABYTE = 1_000_000
export const TAG_FOLDERS_FEATURE_NAME = 'Tag folders'
export const TAG_FOLDERS_FEATURE_TOOLTIP = 'A Plus or Pro plan is required to enable Tag folders.'
export const SMART_TAGS_FEATURE_NAME = 'Smart Tags'
export const SYNC_TIMEOUT_DEBOUNCE = 350
export const SYNC_TIMEOUT_NO_DEBOUNCE = 100
type EditorMetadata = {
icon: IconType
subtleIcon?: IconType
iconClassName: string
iconTintNumber: number
}
export const SuperEditorMetadata: EditorMetadata = {
icon: 'file-doc',
subtleIcon: 'format-align-left',
iconClassName: 'text-accessory-tint-1',
iconTintNumber: 1,
}
export const SupportsPassiveListeners = (() => {
let supportsPassive = false
try {
const opts = Object.defineProperty({}, 'passive', {
get: () => {
supportsPassive = true
},
})
window.addEventListener('test', null as never, opts)
window.removeEventListener('test', null as never, opts)
} catch (e) {
/* empty */
}
return supportsPassive
})()
export const LargeNoteThreshold = 1.5 * BYTES_IN_ONE_MEGABYTE