Skip to Content

@stesura/core/utils

Framework-free helpers: unit conversion, number formatting, colours, links, URLs and upload validation. No ProseMirror dependency.

Functions & values

applyNumberCasing

Parameters:
NameTypeDefault
textstring
casing"capitalize" | "uppercase" | "lowercase" | "firstLetter"
langstring
Returns:
string

arrayFromNumber

Parameters:
NameTypeDefault
numbernumber
Returns:
number[]

arrayOfZeroes

Parameters:
NameTypeDefault
lengthnumber
Returns:
0[]

boolFromStringOrNull

Parameters:
NameTypeDefault
valuestring
Returns:
boolean | null

camelToKebabCase

Parameters:
NameTypeDefault
strstring
Returns:
string

cmToInches

Parameters:
NameTypeDefault
cmstring | number
Returns:
number | undefined

cmToPoints

Parameters:
NameTypeDefault
cmstring | number
Returns:
number | undefined

cmToPx

Parameters:
NameTypeDefault
cmstring | number
Returns:
number | undefined

cmToTwips

Parameters:
NameTypeDefault
cmstring | number
Returns:
number | undefined

cn

Parameters:
NameTypeDefault
inputsClassValue[]
Returns:
string

compareStrings

Parameters:
NameTypeDefault
str1string
str2string
Returns:
boolean

contrastTextColor

Parameters:
NameTypeDefault
backgroundstring
Returns:
"#000000" | "#FFFFFF" | null

cssToReactStyle

Parameters:
NameTypeDefault
cssstring
Returns:
CSSProperties

cssUnitToPixels

Parameters:
NameTypeDefault
valuestring | number
baseSizenumber
Returns:
number

cssUnitToPoints

Parameters:
NameTypeDefault
valuestring | number
Returns:
number

deleteObjProps

Parameters:
NameTypeDefault
objRecord<string, unknown>
propOrPropsstring | string[]
Returns:
Record<string, unknown>

DISPLAY_UNIT_LABELS

NameTypeDefault
cmstring
inchesstring
ptstring
pxstring

displayUnitToPx

Parameters:
NameTypeDefault
unitDisplayUnit
valuenumber
Returns:
number

escapeRegExp

Parameters:
NameTypeDefault
stringstring
Returns:
string

findLinkAtEnd

Parameters:
NameTypeDefault
textstring
optionsDetectLinksOptions
Returns:
DetectedLink | null
Parameters:
NameTypeDefault
textstring
optionsDetectLinksOptions
Returns:
DetectedLink[]
Parameters:
NameTypeDefault
textstring
optionsDetectLinksOptions
Returns:
DetectedLink | null

formatDisplayUnit

Parameters:
NameTypeDefault
valuenumber
unitDisplayUnit
Returns:
string

formatEndnoteNumber

Parameters:
NameTypeDefault
nnumber
formatstring
Returns:
string

generateId

Parameters:
This function does not accept any parameters.
Returns:
string

getInitials

Parameters:
NameTypeDefault
namestring
Returns:
string

getKeyboardShortcutPrefix

Parameters:
NameTypeDefault
shortcutstring
Returns:
string | undefined

getZoomFactor

Parameters:
NameTypeDefault
zoomLevelnumber
Returns:
number

inchesToCm

Parameters:
NameTypeDefault
inchesstring | number
Returns:
number | undefined

inchesToPoints

Parameters:
NameTypeDefault
inchesstring | number
Returns:
number | undefined

inchesToPx

Parameters:
NameTypeDefault
inchesstring | number
Returns:
number | undefined

inchesToTwips

Parameters:
NameTypeDefault
inchesstring | number
Returns:
number | undefined

isEmbedUrlAllowed

Parameters:
NameTypeDefault
urlstring
allowedHostsstring[]
Returns:
boolean

isForbiddenEmbedUrl

Parameters:
NameTypeDefault
urlstring
Returns:
boolean

isoDateToDate

Parameters:
NameTypeDefault
isoDatestring | Date
Returns:
Date

isRegExp

Parameters:
NameTypeDefault
valueunknown
Returns:
boolean

isValidHex

Parameters:
NameTypeDefault
hexstring
Returns:
boolean

kebabToCamelCase

Parameters:
NameTypeDefault
strstring
Returns:
string

localeHasGenderVariants

Parameters:
NameTypeDefault
localeCode"ar" | "de-DE" | "en-GB" | "en-US" | "es-ES" | "fr-FR" | "it-IT" | "ja-JP" | "nl-NL" | "pl-PL" | "pt-BR" | "pt-PT" | "ru-RU" | "uk-UA" | "zh-CN"
Returns:
boolean

minMax

Parameters:
NameTypeDefault
valuenumber
minnumber
maxnumber
Returns:
number

NUMBER_LOCALES

NameTypeDefault
ar{ masculine: typeof Locale; }
de-DE{ masculine: typeof Locale; }
en-GB{ masculine: ConstructorOf<LocaleInterface>; }
en-US{ masculine: typeof Locale; }
es-ES{ masculine: typeof Locale; feminine: ConstructorOf<LocaleInterface>; }
fr-FR{ masculine: typeof Locale; feminine: ConstructorOf<LocaleInterface>; }
it-IT{ masculine: typeof Locale; feminine: ConstructorOf<LocaleInterface>; }
ja-JP{ masculine: typeof Locale; }
nl-NL{ masculine: typeof Locale; }
pl-PL{ masculine: typeof Locale; }
pt-BR{ masculine: ConstructorOf<LocaleInterface>; feminine: ConstructorOf<LocaleInterface>; }
pt-PT{ masculine: typeof Locale; feminine: ConstructorOf<LocaleInterface>; }
ru-RU{ masculine: typeof Locale; }
uk-UA{ masculine: typeof Locale; }
zh-CN{ masculine: typeof Locale; }

objectIncludes

Parameters:
NameTypeDefault
object1Record<string, any>
object2Record<string, any>
options{ strict: boolean; }
Returns:
boolean

parsePtLineHeight

Parameters:
NameTypeDefault
valueunknown
Returns:
number | null

pointToCm

Parameters:
NameTypeDefault
ptstring | number
Returns:
number | undefined

pointToInches

Parameters:
NameTypeDefault
ptstring | number
Returns:
number | undefined

pointToPx

Parameters:
NameTypeDefault
ptstring | number
Returns:
number | undefined

pointToTwips

Parameters:
NameTypeDefault
ptstring | number
Returns:
number | undefined

ptToPxExact

Parameters:
NameTypeDefault
ptnumber
Returns:
number

pxToCm

Parameters:
NameTypeDefault
pxstring | number
Returns:
number | undefined

pxToDisplayUnit

Parameters:
NameTypeDefault
unitDisplayUnit
valuenumber
Returns:
number

pxToInches

Parameters:
NameTypeDefault
pxstring | number
Returns:
number | undefined

pxToPoints

Parameters:
NameTypeDefault
pxstring | number
Returns:
number | undefined

pxToTwips

Parameters:
NameTypeDefault
pixelsstring | number
Returns:
number | undefined

randomUUID

Parameters:
This function does not accept any parameters.
Returns:
string

removeDuplicates

Parameters:
NameTypeDefault
arrayT[]
by{ (value: any, replacer?: ((this: any, key: string, value: any) => any) | undefined, space?: string | number | undefined): string; (value: any, replacer?: (string | number)[] | null | undefined, space?: string | ... 1 more ... | undefined): string; }
Returns:
T[]

removeSpaces

Parameters:
NameTypeDefault
strstring
Returns:
string

resolveNumberLocale

Parameters:
NameTypeDefault
langstring
Returns:
"ar" | "de-DE" | "en-GB" | "en-US" | "es-ES" | "fr-FR" | "it-IT" | "ja-JP" | "nl-NL" | "pl-PL" | "pt-BR" | "pt-PT" | "ru-RU" | "uk-UA" | "zh-CN"

safeCssColor

Parameters:
NameTypeDefault
valueunknown
Returns:
string | null

safeNormalizeUrl

Parameters:
NameTypeDefault
urlstring
Returns:
string | null

safeRawUrl

Parameters:
NameTypeDefault
urlstring
Returns:
string | null

sanitizeStyleId

Parameters:
NameTypeDefault
idstring
Returns:
string

setsAreEqual

Parameters:
NameTypeDefault
aSet<string>
bSet<string>
Returns:
boolean

snapToHalfPoint

Parameters:
NameTypeDefault
ptnumber
Returns:
number

sniffDocumentType

Parameters:
NameTypeDefault
fileBlob
namestring
Returns:
Promise<SniffedDocumentType | null>

sniffImageBytes

Parameters:
NameTypeDefault
bytesUint8Array<ArrayBufferLike>
Returns:
SniffedImageType | null

sniffImageType

Parameters:
NameTypeDefault
fileBlob
Returns:
Promise<SniffedImageType | null>

sniffPdf

Parameters:
NameTypeDefault
fileBlob
Returns:
Promise<boolean>

toAlphabetLetter

Parameters:
NameTypeDefault
inumber
alphabetreadonly string[]
Returns:
string

toAlphanumeric

Parameters:
NameTypeDefault
inumber
uppercaseboolean
Returns:
string

toChicago

Parameters:
NameTypeDefault
inumber
Returns:
string

toDecimalZero

Parameters:
NameTypeDefault
inumber
Returns:
string

toDigitSystem

Parameters:
NameTypeDefault
inumber
numberingSystemstring
Returns:
string

toEnclosedCircle

Parameters:
NameTypeDefault
inumber
Returns:
string

toEnclosedFullstop

Parameters:
NameTypeDefault
inumber
Returns:
string

toEnclosedParen

Parameters:
NameTypeDefault
inumber
Returns:
string

toHex

Parameters:
NameTypeDefault
inputColorstring
noHashboolean
Returns:
string

toHexNumber

Parameters:
NameTypeDefault
inumber
Returns:
string

toNumberInDash

Parameters:
NameTypeDefault
inumber
Returns:
string

toOrdinalIndicator

Parameters:
NameTypeDefault
nnumber
optionsNumberWordsOptions
Returns:
OrdinalIndicatorParts

toOrdinalWords

Parameters:
NameTypeDefault
nnumber
optionsNumberWordsOptions
Returns:
string

toRgb

Parameters:
NameTypeDefault
hexstring
Returns:
[number, number, number] | undefined

toRoman

Parameters:
NameTypeDefault
inumber
uppercaseboolean
Returns:
string

toWords

Parameters:
NameTypeDefault
nnumber
optionsNumberWordsOptions
Returns:
string

twipsToCm

Parameters:
NameTypeDefault
twipsstring | number
Returns:
number | undefined

twipsToInches

Parameters:
NameTypeDefault
twipsstring | number
Returns:
number | undefined

twipsToPt

Parameters:
NameTypeDefault
twipsstring | number
Returns:
number | undefined

twipsToPx

Parameters:
NameTypeDefault
twipsstring | number
Returns:
number | undefined

undefinedIfNotNumber

Parameters:
NameTypeDefault
valuestring | number
Returns:
number | undefined

userColorSlot

Parameters:
NameTypeDefault
userIdstring
userNamestring
Returns:
number | null

validateDocumentFile

Parameters:
NameTypeDefault
fileBlob
options{ maxBytes?: number; name?: string; }
Returns:
Promise<FileValidationResult<SniffedDocumentType>>

validateImageFile

Parameters:
NameTypeDefault
fileBlob
options{ maxBytes?: number; }
Returns:
Promise<FileValidationResult<SniffedImageType>>

validatePdfFile

Parameters:
NameTypeDefault
fileBlob
options{ maxBytes?: number; }
Returns:
Promise<FileValidationResult<"application/pdf">>

zeroIfNaN

Parameters:
NameTypeDefault
valuenumber
Returns:
number

Types

NameTypeDefault
fromnumber
tonumber
textstring

The matched text, trailing sentence punctuation already trimmed off.

hrefstring

The href the match should carry (mailto: for an address).

DetectLinksOptions

NameTypeDefault
bareHostsboolean

Whether host.tld without a scheme or www. counts. Default true.

FileValidationResult

NameTypeDefault
okboolean

NumberWordsOptions

NameTypeDefault
langstring | null

A document proofingLanguage; resolved via resolveNumberLocale.

genderNumberGender

Other exports

ExportTypeDescription
ARABIC_ALPHA_LETTERSreadonly ["أ", "ب", "ت", "ث", …]Word’s arabicAlpha: the 28 letters in hijāʾī (alphabetical) order.
CONTRAST_LUMINANCE_THRESHOLD0.179Relative luminance above which black text gives the better WCAG contrast ratio against the background — below it, white does. 0.179 is the exact crossover: (L + 0.05) / 0.05 = 1.05 / (L + 0.05) solves to L ≈ 0.1791.
FALLBACK_NUMBER_LOCALE"en-GB"Used when a document’s language has no entry in NUMBER_LOCALES.
HEBREW_LETTERSreadonly ["א", "ב", "ג", "ד", …]Word’s hebrew2: the 22 base letters, no final forms.
LINE_HEIGHT_PT_MAX600
LINE_HEIGHT_PT_MIN6Exact line-height bounds (pt), the guard’s counterpart to the multiplier list.
MAX_DOCUMENT_BYTESnumberSize cap for a document upload (the file node).
MAX_IMAGE_BYTESnumberDefault upload size cap, aligned with the upload-block dropzone.
NUMBER_CASINGSreadonly ["capitalize", "uppercase", "lowercase", "firstLetter"]The casings a word-based number format can render in.
NumberCasing"capitalize" | "uppercase" | "lowercase" | "firstLetter"Casing for the word-based number formats (cardinalText, ordinalText): capitalize — every word capitalised: “Forty-Two” (the converters’ native output); uppercase — “FORTY-TWO”; lowercase — “forty-two”; firstLetter — only the leading letter capitalised: “Forty-two”
NumberGender"masculine" | "feminine"The grammatical genders the numbering UI offers.
RUSSIAN_LOWERstring[]Word’s russianLower sequence: the lower-case mirror of RUSSIAN_UPPER.
RUSSIAN_UPPERreadonly ["А", "Б", "В", "Г", …]Word’s russianUpper sequence; ё, й, ъ, ы and ь are skipped.
SniffedDocumentType"application/pdf" | "application/vnd.openxmlformats-officedocument.wordprocessingml.document" | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | "application/vnd.openxmlformats-officedocument.presentationml.presentation" | "application/zip" | "text/plain"
SniffedImageType"image/png" | "image/jpeg" | "image/gif" | "image/webp"
USER_COLOR_SLOTS10Number of author colour slots. The remote-cursor palette in collab-adapter has the same length and order, so a collaborator’s caret and tracked edits share a colour.
Last updated on