@stesura/core/utils
Framework-free helpers: unit conversion, number formatting, colours, links, URLs and upload validation. No ProseMirror dependency.
Functions & values
applyNumberCasing
Parameters:| Name | Type | Default |
|---|---|---|
text | string | |
casing | "capitalize" | "uppercase" | "lowercase" | "firstLetter" | |
lang | string |
arrayFromNumber
Parameters:| Name | Type | Default |
|---|---|---|
number | number |
arrayOfZeroes
Parameters:| Name | Type | Default |
|---|---|---|
length | number |
boolFromStringOrNull
Parameters:| Name | Type | Default |
|---|---|---|
value | string |
camelToKebabCase
Parameters:| Name | Type | Default |
|---|---|---|
str | string |
cmToInches
Parameters:| Name | Type | Default |
|---|---|---|
cm | string | number |
cmToPoints
Parameters:| Name | Type | Default |
|---|---|---|
cm | string | number |
cmToPx
Parameters:| Name | Type | Default |
|---|---|---|
cm | string | number |
cmToTwips
Parameters:| Name | Type | Default |
|---|---|---|
cm | string | number |
cn
Parameters:| Name | Type | Default |
|---|---|---|
inputs | ClassValue[] |
compareStrings
Parameters:| Name | Type | Default |
|---|---|---|
str1 | string | |
str2 | string |
contrastTextColor
Parameters:| Name | Type | Default |
|---|---|---|
background | string |
cssToReactStyle
Parameters:| Name | Type | Default |
|---|---|---|
css | string |
cssUnitToPixels
Parameters:| Name | Type | Default |
|---|---|---|
value | string | number | |
baseSize | number |
cssUnitToPoints
Parameters:| Name | Type | Default |
|---|---|---|
value | string | number |
deleteObjProps
Parameters:| Name | Type | Default |
|---|---|---|
obj | Record<string, unknown> | |
propOrProps | string | string[] |
DISPLAY_UNIT_LABELS
| Name | Type | Default |
|---|---|---|
cm | string | |
inches | string | |
pt | string | |
px | string |
displayUnitToPx
Parameters:| Name | Type | Default |
|---|---|---|
unit | DisplayUnit | |
value | number |
escapeRegExp
Parameters:| Name | Type | Default |
|---|---|---|
string | string |
findLinkAtEnd
Parameters:| Name | Type | Default |
|---|---|---|
text | string | |
options | DetectLinksOptions |
findLinks
Parameters:| Name | Type | Default |
|---|---|---|
text | string | |
options | DetectLinksOptions |
findWholeLink
Parameters:| Name | Type | Default |
|---|---|---|
text | string | |
options | DetectLinksOptions |
formatDisplayUnit
Parameters:| Name | Type | Default |
|---|---|---|
value | number | |
unit | DisplayUnit |
formatEndnoteNumber
Parameters:| Name | Type | Default |
|---|---|---|
n | number | |
format | string |
generateId
Parameters:This function does not accept any parameters.
getInitials
Parameters:| Name | Type | Default |
|---|---|---|
name | string |
getKeyboardShortcutPrefix
Parameters:| Name | Type | Default |
|---|---|---|
shortcut | string |
getZoomFactor
Parameters:| Name | Type | Default |
|---|---|---|
zoomLevel | number |
inchesToCm
Parameters:| Name | Type | Default |
|---|---|---|
inches | string | number |
inchesToPoints
Parameters:| Name | Type | Default |
|---|---|---|
inches | string | number |
inchesToPx
Parameters:| Name | Type | Default |
|---|---|---|
inches | string | number |
inchesToTwips
Parameters:| Name | Type | Default |
|---|---|---|
inches | string | number |
isEmbedUrlAllowed
Parameters:| Name | Type | Default |
|---|---|---|
url | string | |
allowedHosts | string[] |
isForbiddenEmbedUrl
Parameters:| Name | Type | Default |
|---|---|---|
url | string |
isoDateToDate
Parameters:| Name | Type | Default |
|---|---|---|
isoDate | string | Date |
isRegExp
Parameters:| Name | Type | Default |
|---|---|---|
value | unknown |
isValidHex
Parameters:| Name | Type | Default |
|---|---|---|
hex | string |
kebabToCamelCase
Parameters:| Name | Type | Default |
|---|---|---|
str | string |
localeHasGenderVariants
Parameters:| Name | Type | Default |
|---|---|---|
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" |
minMax
Parameters:| Name | Type | Default |
|---|---|---|
value | number | |
min | number | |
max | number |
NUMBER_LOCALES
objectIncludes
Parameters:| Name | Type | Default |
|---|---|---|
object1 | Record<string, any> | |
object2 | Record<string, any> | |
options | { strict: boolean; } |
parsePtLineHeight
Parameters:| Name | Type | Default |
|---|---|---|
value | unknown |
pointToCm
Parameters:| Name | Type | Default |
|---|---|---|
pt | string | number |
pointToInches
Parameters:| Name | Type | Default |
|---|---|---|
pt | string | number |
pointToPx
Parameters:| Name | Type | Default |
|---|---|---|
pt | string | number |
pointToTwips
Parameters:| Name | Type | Default |
|---|---|---|
pt | string | number |
ptToPxExact
Parameters:| Name | Type | Default |
|---|---|---|
pt | number |
pxToCm
Parameters:| Name | Type | Default |
|---|---|---|
px | string | number |
pxToDisplayUnit
Parameters:| Name | Type | Default |
|---|---|---|
unit | DisplayUnit | |
value | number |
pxToInches
Parameters:| Name | Type | Default |
|---|---|---|
px | string | number |
pxToPoints
Parameters:| Name | Type | Default |
|---|---|---|
px | string | number |
pxToTwips
Parameters:| Name | Type | Default |
|---|---|---|
pixels | string | number |
randomUUID
Parameters:This function does not accept any parameters.
removeDuplicates
Parameters:removeSpaces
Parameters:| Name | Type | Default |
|---|---|---|
str | string |
resolveNumberLocale
Parameters:| Name | Type | Default |
|---|---|---|
lang | string |
"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:| Name | Type | Default |
|---|---|---|
value | unknown |
safeNormalizeUrl
Parameters:| Name | Type | Default |
|---|---|---|
url | string |
safeRawUrl
Parameters:| Name | Type | Default |
|---|---|---|
url | string |
sanitizeStyleId
Parameters:| Name | Type | Default |
|---|---|---|
id | string |
setsAreEqual
Parameters:| Name | Type | Default |
|---|---|---|
a | Set<string> | |
b | Set<string> |
snapToHalfPoint
Parameters:| Name | Type | Default |
|---|---|---|
pt | number |
sniffDocumentType
Parameters:| Name | Type | Default |
|---|---|---|
file | Blob | |
name | string |
sniffImageBytes
Parameters:| Name | Type | Default |
|---|---|---|
bytes | Uint8Array<ArrayBufferLike> |
sniffImageType
Parameters:| Name | Type | Default |
|---|---|---|
file | Blob |
sniffPdf
Parameters:| Name | Type | Default |
|---|---|---|
file | Blob |
toAlphabetLetter
Parameters:| Name | Type | Default |
|---|---|---|
i | number | |
alphabet | readonly string[] |
toAlphanumeric
Parameters:| Name | Type | Default |
|---|---|---|
i | number | |
uppercase | boolean |
toChicago
Parameters:| Name | Type | Default |
|---|---|---|
i | number |
toDecimalZero
Parameters:| Name | Type | Default |
|---|---|---|
i | number |
toDigitSystem
Parameters:| Name | Type | Default |
|---|---|---|
i | number | |
numberingSystem | string |
toEnclosedCircle
Parameters:| Name | Type | Default |
|---|---|---|
i | number |
toEnclosedFullstop
Parameters:| Name | Type | Default |
|---|---|---|
i | number |
toEnclosedParen
Parameters:| Name | Type | Default |
|---|---|---|
i | number |
toHex
Parameters:| Name | Type | Default |
|---|---|---|
inputColor | string | |
noHash | boolean |
toHexNumber
Parameters:| Name | Type | Default |
|---|---|---|
i | number |
toNumberInDash
Parameters:| Name | Type | Default |
|---|---|---|
i | number |
toOrdinalIndicator
Parameters:| Name | Type | Default |
|---|---|---|
n | number | |
options | NumberWordsOptions |
toOrdinalWords
Parameters:| Name | Type | Default |
|---|---|---|
n | number | |
options | NumberWordsOptions |
toRgb
Parameters:| Name | Type | Default |
|---|---|---|
hex | string |
toRoman
Parameters:| Name | Type | Default |
|---|---|---|
i | number | |
uppercase | boolean |
toWords
Parameters:| Name | Type | Default |
|---|---|---|
n | number | |
options | NumberWordsOptions |
twipsToCm
Parameters:| Name | Type | Default |
|---|---|---|
twips | string | number |
twipsToInches
Parameters:| Name | Type | Default |
|---|---|---|
twips | string | number |
twipsToPt
Parameters:| Name | Type | Default |
|---|---|---|
twips | string | number |
twipsToPx
Parameters:| Name | Type | Default |
|---|---|---|
twips | string | number |
undefinedIfNotNumber
Parameters:| Name | Type | Default |
|---|---|---|
value | string | number |
userColorSlot
Parameters:| Name | Type | Default |
|---|---|---|
userId | string | |
userName | string |
validateDocumentFile
Parameters:| Name | Type | Default |
|---|---|---|
file | Blob | |
options | { maxBytes?: number; name?: string; } |
validateImageFile
Parameters:| Name | Type | Default |
|---|---|---|
file | Blob | |
options | { maxBytes?: number; } |
validatePdfFile
Parameters:| Name | Type | Default |
|---|---|---|
file | Blob | |
options | { maxBytes?: number; } |
zeroIfNaN
Parameters:| Name | Type | Default |
|---|---|---|
value | number |
Types
DetectedLink
| Name | Type | Default |
|---|---|---|
from | number | |
to | number | |
text | stringThe matched text, trailing sentence punctuation already trimmed off. | |
href | stringThe href the match should carry ( |
DetectLinksOptions
| Name | Type | Default |
|---|---|---|
bareHosts | booleanWhether |
FileValidationResult
| Name | Type | Default |
|---|---|---|
ok | boolean |
NumberWordsOptions
| Name | Type | Default |
|---|---|---|
lang | string | nullA document | |
gender | NumberGender |
Other exports
| Export | Type | Description |
|---|---|---|
ARABIC_ALPHA_LETTERS | readonly ["أ", "ب", "ت", "ث", …] | Word’s arabicAlpha: the 28 letters in hijāʾī (alphabetical) order. |
CONTRAST_LUMINANCE_THRESHOLD | 0.179 | Relative 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_LETTERS | readonly ["א", "ב", "ג", "ד", …] | Word’s hebrew2: the 22 base letters, no final forms. |
LINE_HEIGHT_PT_MAX | 600 | |
LINE_HEIGHT_PT_MIN | 6 | Exact line-height bounds (pt), the guard’s counterpart to the multiplier list. |
MAX_DOCUMENT_BYTES | number | Size cap for a document upload (the file node). |
MAX_IMAGE_BYTES | number | Default upload size cap, aligned with the upload-block dropzone. |
NUMBER_CASINGS | readonly ["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_LOWER | string[] | Word’s russianLower sequence: the lower-case mirror of RUSSIAN_UPPER. |
RUSSIAN_UPPER | readonly ["А", "Б", "В", "Г", …] | 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_SLOTS | 10 | Number 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