UNPKG

23.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"bss.min.js","sources":["lib/popular.js","lib/utils.js","lib/sheet.js","lib/index.js","lib/pseudos.js"],"sourcesContent":["export default {\n ai : 'alignItems',\n b : 'bottom',\n bc : 'backgroundColor',\n br : 'borderRadius',\n bs : 'boxShadow',\n c : 'color',\n d : 'display',\n f : 'float',\n fd : 'flexDirection',\n ff : 'fontFamily',\n fs : 'fontSize',\n h : 'height',\n jc : 'justifyContent',\n l : 'left',\n lh : 'lineHeight',\n ls : 'letterSpacing',\n m : 'margin',\n mb : 'marginBottom',\n ml : 'marginLeft',\n mr : 'marginRight',\n mt : 'marginTop',\n o : 'opacity',\n p : 'padding',\n pb : 'paddingBottom',\n pl : 'paddingLeft',\n pr : 'paddingRight',\n pt : 'paddingTop',\n r : 'right',\n t : 'top',\n ta : 'textAlign',\n td : 'textDecoration',\n tt : 'textTransform',\n w : 'width'\n}\n","export const cssProperties = ['float'].concat(Object.keys(\n findWidth(document.documentElement.style)\n).filter(p => p.indexOf('-') === -1 && p !== 'length'))\n\nfunction findWidth(obj) {\n return obj.hasOwnProperty('width')\n ? obj\n : findWidth(Object.getPrototypeOf(obj))\n}\n\nexport const memoize = (fn, cache = {}) => item =>\n item in cache\n ? cache[item]\n : cache[item] = fn(item)\n\nexport function add(style, prop, value) {\n if (prop in style)\n add(style, '!' + prop, value)\n else\n style[prop] = value\n}\n\nexport const vendorMap = Object.create(null, {})\nexport const vendorValuePrefix = Object.create(null, {})\n\nexport const vendorRegex = /^(o|O|ms|MS|Ms|moz|Moz|webkit|Webkit|WebKit)([A-Z])/\n\nconst appendPx = memoize(prop => {\n const el = document.createElement('div')\n\n try {\n el.style[prop] = '1px'\n el.style.setProperty(prop, '1px')\n return el.style[prop].slice(-3) === '1px' ? 'px' : ''\n } catch (err) {\n return ''\n }\n}, {\n flex: '',\n boxShadow: 'px',\n border: 'px'\n})\n\nexport function lowercaseFirst(string) {\n return string.charAt(0).toLowerCase() + string.slice(1)\n}\n\nexport function sanitize(styles) {\n return Object.keys(styles).reduce((acc, key) => {\n const value = styles[key]\n\n if (!value && value !== 0 && value !== '')\n return acc\n\n if (key === 'content' && value.charAt(0) !== '\"')\n acc[key] = '\"' + value + '\"'\n else\n acc[key in vendorMap ? vendorMap[key] : key] = formatValue(key, value)\n\n return acc\n }, {})\n}\n\nexport function assign(obj, obj2) {\n for (const key in obj2) {\n if (obj2.hasOwnProperty(key))\n obj[key] = obj2[key]\n }\n}\n\nexport function hyphenToCamelCase(hyphen) {\n return hyphen.slice(hyphen.charAt(0) === '-' ? 1 : 0).replace(/-([a-z])/g, function(match) {\n return match[1].toUpperCase()\n })\n}\n\nexport function camelCaseToHyphen(camelCase) {\n return camelCase.replace(/([A-Z])/g, '-$1').toLowerCase()\n}\n\nexport function initials(camelCase) {\n return camelCase.charAt(0) + (camelCase.match(/([A-Z])/g) || []).join('').toLowerCase()\n}\n\nexport function objectToRules(style, selector, suffix = '', single) {\n const base = {}\n\n let rules = []\n\n Object.keys(style).forEach(prop => {\n if (prop.charAt(0) === '@')\n rules.push(prop + '{' + objectToRules(style[prop], selector, suffix, single) + '}')\n else if (typeof style[prop] === 'object')\n rules = rules.concat(objectToRules(style[prop], selector, suffix + prop, single))\n else\n base[prop] = style[prop]\n })\n\n if (Object.keys(base).length) {\n rules.unshift(\n ((single || (suffix.charAt(0) === ' ') ? '' : '&') + '&' + suffix).replace(/&/g, selector) +\n '{' + stylesToCss(base) + '}'\n )\n }\n\n return rules\n}\n\nexport const selectorSplit = /,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/\n\nexport function stylesToCss(style) {\n return Object.keys(style).reduce((acc, prop) =>\n acc + propToString(prop.replace(/!/g, ''), style[prop])\n , '')\n}\n\nexport function readClasses(sheet) {\n throw new Error('not implemented')\n}\n\nfunction propToString(prop, value) {\n return (vendorRegex.test(prop) ? '-' : '')\n + (prop.charAt(0) === '-' && prop.charAt(1) === '-'\n ? prop\n : camelCaseToHyphen(prop)\n )\n + ':'\n + value\n + ';'\n}\n\nexport function formatValue(key, value) {\n return value in vendorValuePrefix\n ? vendorValuePrefix[value]\n : addPx(key, value)\n}\n\nexport function addPx(key, value) {\n return value + (isNaN(value) ? '' : appendPx(key))\n}\n","import {\n objectToRules\n} from './utils.js'\n\nconst document = window.document\nconst styleSheet = document && document.createElement('style')\nstyleSheet && document.head.appendChild(styleSheet)\nconst sheet = styleSheet && styleSheet.sheet\n\nlet debug = false\nlet classes = Object.create(null, {})\nlet rules = []\nlet count = 0\n\nexport const classPrefix = 'b' + ('000' + ((Math.random() * 46656) | 0).toString(36)).slice(-3) +\n ('000' + ((Math.random() * 46656) | 0).toString(36)).slice(-3)\n\nexport function setDebug(d) {\n debug = d\n}\n\nexport function getSheet() {\n const content = rules.join('')\n rules = []\n classes = Object.create(null, {})\n count = 0\n return content\n}\n\nexport function insert(rule, index) {\n rules.push(rule)\n\n if (debug)\n return styleSheet.textContent = rules.join('\\n')\n\n sheet && sheet.insertRule(rule, arguments.length > 1\n ? index\n : sheet.cssRules.length\n )\n}\n\nexport function createClass(style) {\n const json = JSON.stringify(style)\n\n if (json in classes)\n return classes[json]\n\n const className = classPrefix + (++count)\n , rules = objectToRules(style, '.' + className)\n\n for (let i = 0; i < rules.length; i++)\n insert(rules[i])\n\n classes[json] = className\n\n return className\n}\n","/* eslint no-invalid-this: 0 */\nimport pseudos from './pseudos.js'\nimport popular from './popular.js'\n\nimport {\n classPrefix,\n createClass,\n setDebug,\n getSheet,\n insert\n} from './sheet'\n\nimport {\n hyphenToCamelCase,\n vendorValuePrefix,\n lowercaseFirst,\n objectToRules,\n selectorSplit,\n cssProperties,\n stylesToCss,\n vendorRegex,\n formatValue,\n vendorMap,\n sanitize,\n initials,\n memoize,\n assign,\n addPx,\n add\n} from './utils'\n\nconst shorts = Object.create(null)\n\nfunction bss(input, value) {\n const b = chain(bss)\n assign(b.__style, parse.apply(null, arguments))\n return b\n}\n\nfunction setProp(prop, value) {\n Object.defineProperty(bss, prop, {\n configurable: true,\n value\n })\n}\n\nObject.defineProperties(bss, {\n __style: {\n configurable: true,\n writable: true,\n value: {}\n },\n valueOf: {\n configurable: true,\n writable: true,\n value: function ValueOf() {\n return '.' + this.class\n }\n }\n})\n\nsetProp('setDebug', setDebug)\n\nsetProp('$keyframes', keyframes)\nsetProp('$media', $media)\nsetProp('$import', $import)\nsetProp('$nest', $nest)\nsetProp('getSheet', getSheet)\nsetProp('helper', helper)\nsetProp('css', css)\nsetProp('classPrefix', classPrefix)\n\nfunction chain(instance) {\n const newInstance = Object.create(bss, {\n __style: {\n value: instance.__style\n },\n style: {\n enumerable: true,\n get: function() {\n return Object.keys(this.__style).reduce((acc, key) => {\n if (typeof this.__style[key] === 'number' || typeof this.__style[key] === 'string')\n acc[key.replace(/^!/, '')] = this.__style[key]\n return acc\n }, {})\n }\n }\n })\n\n if (instance === bss)\n bss.__style = {}\n\n return newInstance\n}\n\ncssProperties.forEach(prop => {\n const vendor = prop.match(vendorRegex)\n if (vendor) {\n const unprefixed = lowercaseFirst(prop.replace(vendorRegex, '$2'))\n if (cssProperties.indexOf(unprefixed) === -1) {\n if (unprefixed === 'flexDirection')\n vendorValuePrefix.flex = '-' + vendor[1].toLowerCase() + '-flex'\n\n vendorMap[unprefixed] = prop\n setProp(unprefixed, setter(prop))\n setProp(short(unprefixed), bss[unprefixed])\n return\n }\n }\n\n setProp(prop, setter(prop))\n setProp(short(prop), bss[prop])\n})\n\nsetProp('content', function Content(arg) {\n this.__style.content = '\"' + arg + '\"'\n return chain(this)\n})\n\nObject.defineProperty(bss, 'class', {\n set: function(value) {\n this.__class = value\n },\n get: function() {\n return this.__class || createClass(this.__style)\n }\n})\n\nfunction $media(value, style) {\n if (value)\n add(this.__style, '@media ' + value, parse(style))\n\n return chain(this)\n}\n\nfunction $import(value) {\n if (value)\n insert('@import ' + value + ';', 0)\n\n return chain(this)\n}\n\nfunction $nest(selector, properties) {\n if (arguments.length === 1)\n Object.keys(selector).forEach(x => addNest(this.__style, x, selector[x]))\n else if (selector)\n addNest(this.__style, selector, properties)\n\n return chain(this)\n}\n\nfunction addNest(style, selector, properties) {\n add(\n style,\n selector.split(selectorSplit).map(x => {\n x = x.trim()\n return (x.charAt(0) === ':' || x.charAt(0) === '[' ? '' : ' ') + x\n }).join(',&'),\n parse(properties)\n )\n}\n\npseudos.forEach(name =>\n setProp('$' + hyphenToCamelCase(name.replace(/:/g, '')), function Pseudo(value, b) {\n if (value || b)\n add(this.__style, name + (b ? '(' + value + ')' : ''), parse(b || value))\n return chain(this)\n })\n)\n\nfunction setter(prop) {\n return function CssProperty(value) {\n if (!value && value !== 0) {\n delete this.__style[prop]\n } else if (arguments.length > 0) {\n add(this.__style, prop, arguments.length === 1\n ? formatValue(prop, value)\n : Array.prototype.slice.call(arguments).map(v => addPx(prop, v)).join(' ')\n )\n }\n\n return chain(this)\n }\n}\n\nfunction css(selector, style) {\n if (arguments.length === 1)\n Object.keys(selector).forEach(key => addCss(key, selector[key]))\n else\n addCss(selector, style)\n\n return chain(this)\n}\n\nfunction addCss(selector, style) {\n objectToRules(parse(style), selector, '', true).forEach(insert)\n}\n\nfunction helper(name, styling) {\n if (arguments.length === 1)\n return Object.keys(name).forEach(key => helper(key, name[key]))\n\n delete bss[name] // Needed to avoid weird get calls in chrome\n\n if (typeof styling === 'function') {\n helper[name] = styling\n Object.defineProperty(bss, name, {\n configurable: true,\n value: function Helper() {\n const result = styling.apply(null, arguments)\n assign(this.__style, result.__style)\n return chain(this)\n }\n })\n } else {\n helper[name] = parse(styling)\n Object.defineProperty(bss, name, {\n configurable: true,\n get: function() {\n assign(this.__style, parse(styling))\n return chain(this)\n }\n })\n }\n}\n\nbss.helper('$animate', (value, props) =>\n bss.animation(bss.$keyframes(props) + ' ' + value)\n)\n\nfunction short(prop) {\n const acronym = initials(prop)\n , short = popular[acronym] && popular[acronym] !== prop ? prop : acronym\n\n shorts[short] = prop\n return short\n}\n\nconst stringToObject = memoize(string => {\n let last = ''\n , prev\n\n return string.trim().split(/;|\\n/).reduce((acc, line) => {\n line = last + line.trim()\n last = line.charAt(line.length - 1) === ',' ? line : ''\n if (last)\n return acc\n\n if (line.charAt(0) === ',') {\n acc[prev] += line\n return acc\n }\n\n const [key, ...tokens] = line.replace(/[ :]+/, ' ').split(' ')\n\n if (!key)\n return acc\n\n const cssVar = key.charAt(0) === '-' && key.charAt(1) === '-'\n , prop = cssVar\n ? key\n : hyphenToCamelCase(key)\n\n prev = shorts[prop] || prop\n\n if (prop in helper) {\n typeof helper[prop] === 'function'\n ? assign(acc, helper[prop](...tokens).__style)\n : assign(acc, helper[prop])\n } else if (tokens.length > 0) {\n add(acc, prev, tokens.map(t => cssVar ? t : addPx(prev, t)).join(' '))\n }\n\n return acc\n }, {})\n})\n\nlet count = 0\nconst keyframeCache = {}\n\nfunction keyframes(props) {\n const content = Object.keys(props).reduce((acc, key) =>\n acc + key + '{' + stylesToCss(parse(props[key])) + '}'\n , '')\n\n if (content in keyframeCache)\n return keyframeCache[content]\n\n const name = classPrefix + count++\n keyframeCache[content] = name\n insert('@keyframes ' + name + '{' + content + '}')\n\n return name\n}\n\nfunction parse(input, value) {\n if (typeof input === 'string') {\n if (typeof value === 'string' || typeof value === 'number')\n return ({ [input] : value })\n\n return stringToObject(input)\n } else if (Array.isArray(input) && typeof input[0] === 'string') {\n let str = ''\n for (let i = 0; i < input.length; i++)\n str += input[i] + (arguments[i + 1] || '')\n return stringToObject(str)\n }\n\n return input.__style || sanitize(input)\n}\n\nexport default bss\n","export default [\n ':active',\n ':any',\n ':checked',\n ':default',\n ':disabled',\n ':empty',\n ':enabled',\n ':first',\n ':first-child',\n ':first-of-type',\n ':fullscreen',\n ':focus',\n ':hover',\n ':indeterminate',\n ':in-range',\n ':invalid',\n ':last-child',\n ':last-of-type',\n ':left',\n ':link',\n ':only-child',\n ':only-of-type',\n ':optional',\n ':out-of-range',\n ':read-only',\n ':read-write',\n ':required',\n ':right',\n ':root',\n ':scope',\n ':target',\n ':valid',\n ':visited',\n\n // With value\n ':dir',\n ':lang',\n ':not',\n ':nth-child',\n ':nth-last-child',\n ':nth-last-of-type',\n ':nth-of-type',\n\n // Elements\n '::after',\n '::before',\n '::first-letter',\n '::first-line',\n '::selection',\n '::backdrop',\n '::placeholder',\n '::marker',\n '::spelling-error',\n '::grammar-error'\n]\n"],"names":["ai","b","bc","br","bs","c","d","f","fd","ff","fs","h","jc","l","lh","ls","m","mb","ml","mr","mt","o","p","pb","pl","pr","pt","r","t","ta","td","tt","w","cssProperties","concat","Object","keys","findWidth","obj","hasOwnProperty","getPrototypeOf","document","documentElement","style","filter","indexOf","const","memoize","fn","cache","item","add","prop","value","vendorMap","create","vendorValuePrefix","vendorRegex","appendPx","el","createElement","setProperty","slice","err","flex","boxShadow","border","assign","obj2","key","hyphenToCamelCase","hyphen","charAt","replace","match","toUpperCase","objectToRules","selector","suffix","single","base","rules","forEach","push","length","unshift","stylesToCss","selectorSplit","reduce","acc","test","toLowerCase","formatValue","addPx","isNaN","window","styleSheet","head","appendChild","sheet","debug","classes","count","classPrefix","Math","random","toString","insert","rule","index","textContent","join","insertRule","arguments","cssRules","shorts","bss","input","chain","__style","parse","apply","setProp","defineProperty","configurable","instance","newInstance","enumerable","get","this","addNest","properties","split","map","x","trim","setter","Array","prototype","call","v","addCss","helper","name","styling","result","short","camelCase","acronym","popular","defineProperties","writable","valueOf","class","props","content","keyframeCache","string","vendor","unprefixed","arg","set","__class","json","JSON","stringify","className","i","createClass","animation","$keyframes","stringToObject","let","prev","last","line","cssVar","tokens","styles","isArray","str"],"mappings":"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"}
\No newline at end of file