Funções utilitárias comumente compartilhadas entre os pacotes oficiais do FormKit.
Você pode adicionar este pacote usando npm install @formkit/utils
ou yarn add @formkit/utils
.
Realiza uma operação recursiva semelhante a Object.assign
.
assignDeep<A extends Record<PropertyKey, any>, B extends Record<PropertyKey, any>>(a: A, b: B): A & B;
a
— Um objeto a ser atribuído.b
— Um objeto para obter valores.A & B
Esta função converte kebab-case para camelCase. Ela SOMENTE converte de kebab para camel.
camel(str: string): string;
str
— String a ser convertida para camel case.string
Realiza um clone recursivo em um objeto dado. Destinado apenas para ser usado em objetos simples como arrays e POJOs.
clone<T extends Record<string, unknown> | unknown[] | null>(obj: T, explicit?: string[]): T;
obj
— Objeto a ser clonado.explicit
opcional — Array de itens a serem explicitamente clonados.T
Clona qualquer coisa. Se o item for escalar, sem problemas, ele o devolve. Se for um objeto, realiza uma operação de clone (rápida/solta).
cloneAny<T>(obj: T): T;
obj
— O valor a ser clonado.T
Dadas 2 arrays, retorna-as como uma array combinada sem duplicatas.
dedupe<T extends any[] | Set<any>, X extends any[] | Set<any>>(arr1: T, arr2?: X): any[];
arr1
— Primeira array.arr2
opcional — Segunda array.any[]
Determina se um valor está vazio ou não.
empty(value: any): boolean;
value
— O valor a ser verificado se está vazio.boolean
Compara dois valores para igualdade, opcionalmente em profundidade.
eq(valA: any, valB: any, deep?: boolean, explicit?: string[]): boolean;
valA
— Primeiro valor.valB
— Segundo valor.deep
opcional — Se vai comparar profundamente se for um objeto.explicit
opcional — Uma array de chaves para verificar explicitamente.boolean
Uma expressão regular para testar uma string de data válida.
eqRegExp(x: RegExp, y: RegExp): boolean;
x
— Uma RegExp para comparar.y
— Uma RegExp para comparar.Escapa uma string para uso em expressões regulares.
escapeExp(string: string): string;
string
— String a ser escapada.string
Retorna um novo objeto (raso) com quaisquer propriedades desejadas removidas.
except(obj: Record<string, any>, toRemove: Array<string | RegExp>): Record<string, any>;
obj
— O objeto inicial.toRemove
— O array de propriedades a serem removidas. Aceita strings ou expressões regulares.Record<string, any>
Mescla recursivamente dados de adicional em original, retornando um novo objeto.
extend(original: Record<string, any>, additional: Record<string, any> | string | null, extendArrays?: boolean, ignoreUndefined?: boolean): Record<string, any> | string | null;
original
— O array original.additional
— O array a ser mesclado.extendArrays
opcional — Se irá estender/concatenar valores de array em vez de substituí-los.ignoreUndefined
opcional — Se irá preservar valores do objeto original mesmo que o objeto adicional tenha esses valores definidos como indefinidos.Record<string, any> | string | null
SEM_EFEITOS_COLATERAIS
Obtém um valor específico por meio da notação de ponto.
getAt(obj: any, addr: string): unknown;
obj
— Um objeto para buscar dados.addr
— Um "endereço" na notação de ponto.unknown
Verifica se a propriedade dada existe no objeto dado.
has(obj: {
[index: string]: any;
[index: number]: any;
}, property: string | symbol | number): boolean;
obj
— Um objeto para verificar.property
— A propriedade a ser verificada.boolean
Define um objeto como um valor inicial.
init<T extends object>(obj: T): T & {
__init?: true;
};
obj
— Objeto para o qual será adicionado um valor inicial.T & { __init?: true }
Verifica se um objeto é um array simples ou registro.
isObject(o: unknown): o is Record<PropertyKey, unknown> | unknown[];
o
— Valor a ser verificado.boolean
Tenta determinar se um objeto é um POJO (Plain Old JavaScript Object). Principalmente retirado de is-plain-object: https://github.com/jonschlinkert/is-plain-object Copyright (c) 2014-2017, Jon Schlinkert.
isPojo(o: any): o is Record<string, any>;
o
— O valor a ser verificado.boolean
Determina se a string fornecida está totalmente entre aspas.
isQuotedString(str: string): boolean;
str
— A string a ser verificada.boolean
hello - false
"hello" - true
'world' - true
"hello"=="world" - false
"hello'this'" - false
"hello"'there' - false
"hello""there" - false
'hello === world' - true
Determina se um objeto é um objeto.
isRecord(o: unknown): o is Record<PropertyKey, unknown>;
o
— O valor a ser verificado.boolean
Isso converte camel-case para kebab case. SÓ converte de camel para kebab.
kebab(str: string): string;
str
— String a ser convertida para kebab.string
Filtra valores de um objeto que não devem ser considerados "props" de um nó central, como "value" e "name".
nodeProps(...sets: Array<Record<string, any>>): Record<string, any>;
sets
— Os arrays para obter valores filtrados.Record<string, any>
Dado um tipo de entrada FormKit, retorna o tipo correto em lowerCased().
nodeType(type: string): 'list' | 'group' | 'input';
type
— String para retornar para verificar o tipo correto'list' | 'group' | 'input'
Dada uma função, apenas 1 chamada será feita por pilha de chamadas. Todas as outras serão descartadas.
oncePerTick<T extends CallableFunction>(fn: T): T;
fn
— A função a ser chamada uma vez por tick.Extrai um conjunto de chaves de um determinado objeto. Importante, isso extrairá valores mesmo que eles não estejam definidos no objeto original — eles simplesmente terão um valor indefinido.
only(obj: Record<string, any>, include: Array<string | RegExp>): Record<string, any>;
obj
— O objeto para obter valores.include
— A matriz de itens a serem obtidos.Record<string, any>
Analisa uma string para argumentos separados por vírgulas.
parseArgs(str: string): string[];
str
— String para analisar argumentos.string[]
Dado um formato de data em string, retorna uma regex para combinar.
regexForFormat(format: string): RegExp;
format
— String a ser transformada em RegExp.RegExp
regexForFormat('MM') // retorna '(0[1-9]|1[012])'
Remove caracteres de escape extras.
rmEscapes(str: string): string;
str
— String para remover caracteres de escape extras.string
Cria um novo conjunto do tipo especificado e usa os valores de um Array ou de um Set existente.
setify<T>(items: Set<T> | T[] | null | undefined): Set<T>;
items
— Uma matriz ou um Set.Set<T>
import { setify } from '@formkit/utils'
const tk = setify(['a', 'b'])
// Set(2) {'a', 'b'}
Clona superficialmente o objeto dado.
shallowClone<T>(obj: T, explicit?: string[]): T;
obj
— Objeto a ser clonado superficialmente.explicit
opcional — A matriz de chaves a serem clonadas explicitamente.T
Transforma qualquer string em uma string segura para URL/DOM.
slugify(str: string): string;
str
— String a ser transformada em uma URL segura.string
Espalha um objeto ou um array, caso contrário, retorna o mesmo valor.
spread<T>(obj: T, explicit?: string[]): T;
obj
— O objeto a ser espalhado.explicit
opcional — O array de itens a serem explicitamente espalhados.T
Gera uma string aleatória.
token(): string;
string
import { token } from '@formkit/utils'
const tk = token()
// 'jkbyqnphqm'
Determina se o valor de uma propriedade está presente (verdadeiro) ou não (indefinido). Por exemplo, a propriedade desativada deve ser desativada apenas por existir, mas e se for definida como a string "false" — então não deve ser desativada.
undefine(value: unknown): true | undefined;
value
— Valor a ser verificado por indefinição.true | undefined
Usa um observador de mutação global para esperar que um determinado elemento apareça no DOM.
whenAvailable(childId: string, callback: (el: Element) => void, root?: Document | ShadowRoot): void;
childId
— O id do nó filho.callback
— A função de callback a ser chamada quando o nó filho é encontrado.root
opcionalAs strings de token de data que podem ser usadas para formatação de data.
export type FormKitDateTokens = 'MM' | 'M' | 'DD' | 'D' | 'YYYY' | 'YY';