UNPKG

@gluestack-ui/utils

Version:

Utility functions and hooks for gluestack-ui

58 lines 1.85 kB
import { cn } from '../cn'; export function parseDataAttribute(inputString) { const regex = /^data-\[(\w+)=(\w+)\]:(.+)$/; const match = inputString.match(regex); if (match) { return { state: match[1], value: match[2], className: match[3], }; } else { return { state: null, value: null, className: null, }; } } export function stringToBoolean(str) { if (str === 'true') return true; else return false; } const resolveDataAttribute = (className, states) => { if (className.includes('data-')) { // parse data- attribute const { state, value, className: stateClassName, } = parseDataAttribute(className); // check if state is present and value is true if (state && value && states[state] === stringToBoolean(value)) { // append state class name if (stateClassName.includes('data-')) { return resolveDataAttribute(stateClassName, states); } return stateClassName; } } }; export function extractDataClassName(className, states) { const classNamesArray = typeof className === 'string' ? className.split(' ') : className; if (classNamesArray === undefined) return; let classNamesFinal = ''; classNamesArray.forEach((classNameItem) => { // check for data- attribute if (classNameItem.includes('data-')) { // parse data- attribute const resolvedClassName = resolveDataAttribute(classNameItem, states); classNamesFinal = cn(classNamesFinal, resolvedClassName); } else { classNamesFinal += ` ${classNameItem}`; } }); return classNamesFinal; } //# sourceMappingURL=index.js.map