UNPKG

styled-ns

Version:

styled-components with namespaces

66 lines (49 loc) 1.78 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var styled = require('styled-components'); var styled__default = _interopDefault(styled); var getNamespace = function getNamespace(props) { return props.theme.namespace || ''; }; var isPure = function isPure(args) { return args.length === 1 && args[0] === '' || args.find(function (arg) { return arg === getNamespace; }); }; var tag = function tag(method) { return function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (isPure(args)) return method.apply(void 0, args); var strings = args[0], restArgs = args.slice(1); return method.apply(void 0, [['', ' & {'].concat(strings, ['}']), getNamespace, ''].concat(restArgs, [''])); }; }; var tagWithConfig = function tagWithConfig(sc) { var tagged = tag(sc); tagged.withConfig = function () { return tag(sc.withConfig.apply(sc, arguments)); }; return tagged; }; var namespacify = function namespacify(sc) { var result = tagWithConfig(sc); result.attrs = function () { return tagWithConfig(sc.attrs.apply(sc, arguments)); }; return result; }; var styledns = function styledns(component) { return namespacify(styled__default(component)); }; Object.keys(styled__default).filter(function (code) { return typeof styled__default[code] === 'function'; }).forEach(function (code) { styledns[code] = namespacify(styled__default[code]); }); styledns.ns = getNamespace; Object.keys(styled).forEach(function (key) { exports[key] = styled[key]; }); exports.default = styledns;