UNPKG

react-native-unistyles

Version:
109 lines (101 loc) 2.4 kB
// All non experimental pseudo clasess and elements // https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes const pseudoClasses = [ '_active', '_any-link', '_autofill', '_buffering', '_checked', '_default', '_defined', '_dir(', '_disabled', '_empty', '_enabled', '_first', '_first-child', '_first-of-type', '_focus', '_focus-visible', '_focus-within', '_future', '_has-slotted', '_has(', '_host', '_host-context(', '_host(', '_hover', '_in-range', '_indeterminate', '_invalid', '_is(', '_lang(', '_last-child', '_last-of-type', '_left', '_link', '_modal', '_muted', '_not(', '_nth-child(', '_nth-last-child(', '_nth-last-of-type(', '_nth-of-type(', '_only-child', '_only-of-type', '_open', '_optional', '_out-of-range', '_past', '_paused', '_picture-in-picture', '_placeholder-shown', '_playing', '_popover-open', '_read-only', '_read-write', '_required', '_right', '_root', '_scope', '_seeking', '_stalled', '_state(', '_target', '_user-invalid', '_user-valid', '_valid', '_visited', '_volume-locked', '_where', ] as const // https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements const pseudoElements = [ '_after', '_backdrop', '_before', '_cue', '_details-content', '_file-selector-button', '_first-letter', '_first-line', '_grammar-error', '_highlight(', '_marker', '_part(', '_placeholder', '_selection', '_slotted(', '_spelling-error', '_target-text', '_view-transition', '_view-transition-group(', '_view-transition-image-pair(', '_view-transition-new(', '_view-transition-old(', ] as const type AddDynamicSelector<T extends string> = T extends `${infer U}(` ? `${U}(${string})` : T export type Pseudo = AddDynamicSelector<(typeof pseudoClasses)[number] | (typeof pseudoElements)[number]> export const isPseudoClass = (selector: string) => pseudoClasses.some(pseudo => selector.startsWith(pseudo)) export const isPseudoElement = (selector: string) => pseudoElements.some(pseudo => selector.startsWith(pseudo)) export const isPseudo = (selector: string) => isPseudoClass(selector) || isPseudoElement(selector)