UNPKG

styled-ns

Version:

styled-components with namespaces

69 lines (52 loc) 2 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('styled-components')) : typeof define === 'function' && define.amd ? define(['exports', 'styled-components'], factory) : (global = global || self, factory(global.styledns = {}, global.styled)); }(this, function (exports, styled) { 'use strict'; var styled__default = 'default' in styled ? styled['default'] : 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; Object.defineProperty(exports, '__esModule', { value: true }); }));