UNPKG

waibu-bootstrap

Version:

Bootstrap suport for Waibu Framework

33 lines (29 loc) 1.93 kB
import { breakpoints, opacities, heights, parseVariant, parseSimple, colors } from './_lib.js' const decorations = ['underline', 'line-through', 'none'] const transforms = ['lowercase', 'uppercase', 'capitalize', 'monospace'] const alignments = ['start', 'center', 'break', 'reset', 'end'] const directs = ['wrap', 'nowrap', 'mark', 'small', 'truncate'] const variants = ['emphasis', 'secondary', 'tertiary'] function text ({ key, params }) { const { uniq } = this.plugin.lib._ const attrs = this.plugin.app.waibuMpa.attrToArray(params.attr[key]) const textColors = ['body', 'black', 'white', ...colors] for (const attr of attrs) { const [item, val] = attr.split(':') if (!val && directs.includes(item)) params.attr.class.push(['mark', 'small'].includes(item) ? item : `text-${item}`) else { for (const value of uniq((val ?? '').split(','))) { switch (item) { case 'decoration': params.attr.class.push(parseSimple.call(this, { cls: 'text-decoration', value, values: decorations })); break case 'line-height': params.attr.class.push(parseSimple.call(this, { cls: 'lh', value, values: heights })); break case 'transform': params.attr.class.push(parseSimple.call(this, { cls: 'text', value, values: transforms })); break case 'align': params.attr.class.push(parseVariant.call(this, { cls: 'text', value: val, values: alignments, variants: breakpoints, prepend: true })); break case 'opacity': params.attr.class.push(parseSimple.call(this, { cls: 'text-opacity', value, values: opacities })); break case 'background': params.attr.class.push(parseSimple.call(this, { cls: 'text-bg', value, values: textColors })); break case 'color': params.attr.class.push(parseVariant.call(this, { cls: 'text', value: val, values: textColors, variants })); break } } } } } export default text