UNPKG

@mezereon/ui-components-vue

Version:

UI components for Mezereon - Vue

106 lines (93 loc) 2.13 kB
import { isEmpty } from 'lodash' export function getValueFromComplex(value) { if (isEmpty(value)) { return '' } const match = value.match(/(.*)=>(.*)/i) if (match === null) { return value } return match[2] } export function getKeyFromComplex(value) { if (isEmpty(value)) { return '' } let match = value.match(/(.*),(.*)=>(.*)/i) if (match === null) { match = value.match(/(.*)=>(.*)/i) if (match === null) { return value } return match[1] } return match[1] } export function isAbsoluteUrl(url) { const r = new RegExp('^(?:[a-z]+:)?//', 'i') return r.test(url) } /** * https://github.com/NxtChg/pieces/tree/master/js/vue/vue-css */ export function setCustomCSS(tagName, style) { if (!style) { return } function fail(msg) { throw new Error( 'css parsing error: ' + msg + ' at "' + css.slice(pos, pos + 60) + '"...' ) } const css = style.replace(/<\/?style>/gi, '') let rule = '' let pos = 0 let level = 0 let s = document.getElementById(tagName) if (!s) { s = document.createElement('style') s.type = 'text/css' s.id = 'tagName' document.getElementsByTagName('head')[0].appendChild(s) } function readUntil(delims) { const org = pos let c while ((c = css[pos++])) { if (c === "'" || c === '"') { const p = css.indexOf(c, pos) if (p !== -1) pos = p + 1 else fail('unterminated string') continue } if (level === 0 && delims.includes(c)) break if (c === '{') { level++ } if (c === '}') { level-- if (level < 0) fail('extra }') } } return css.slice(org, pos - 1) } function addSel(s) { s = s.replace(/^\s+|\s+$/g, '') rule += s } while (pos < css.length) { const n = readUntil(',;{') addSel(n + (css[pos - 1] || '')) switch (css[pos - 1]) { case ',': continue case '{': rule += readUntil('}') + '}' break } if (rule !== '') { s.sheet.insertRule(rule, s.sheet.cssRules.length) rule = '' } } }