{"version":3,"file":"jss-plugin-global.js","sources":["../../../node_modules/@babel/runtime/helpers/esm/extends.js","../src/index.js"],"sourcesContent":["export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import {RuleList} from 'jss'\n\nconst at = '@global'\nconst atPrefix = '@global '\n\nclass GlobalContainerRule {\n type = 'global'\n\n at = at\n\n isProcessed = false\n\n constructor(key, styles, options) {\n this.key = key\n this.options = options\n this.rules = new RuleList({\n ...options,\n parent: this\n })\n\n for (const selector in styles) {\n this.rules.add(selector, styles[selector])\n }\n\n this.rules.process()\n }\n\n /**\n * Get a rule.\n */\n getRule(name) {\n return this.rules.get(name)\n }\n\n /**\n * Create and register rule, run plugins.\n */\n addRule(name, style, options) {\n const rule = this.rules.add(name, style, options)\n if (rule) this.options.jss.plugins.onProcessRule(rule)\n return rule\n }\n\n /**\n * Replace rule, run plugins.\n */\n replaceRule(name, style, options) {\n const newRule = this.rules.replace(name, style, options)\n if (newRule) this.options.jss.plugins.onProcessRule(newRule)\n return newRule\n }\n\n /**\n * Get index of a rule.\n */\n indexOf(rule) {\n return this.rules.indexOf(rule)\n }\n\n /**\n * Generates a CSS string.\n */\n toString(options) {\n return this.rules.toString(options)\n }\n}\n\nclass GlobalPrefixedRule {\n type = 'global'\n\n at = at\n\n isProcessed = false\n\n constructor(key, style, options) {\n this.key = key\n this.options = options\n const selector = key.substr(atPrefix.length)\n this.rule = options.jss.createRule(selector, style, {\n ...options,\n parent: this\n })\n }\n\n toString(options) {\n return this.rule ? this.rule.toString(options) : ''\n }\n}\n\nconst separatorRegExp = /\\s*,\\s*/g\n\nfunction addScope(selector, scope) {\n const parts = selector.split(separatorRegExp)\n let scoped = ''\n for (let i = 0; i < parts.length; i++) {\n scoped += `${scope} ${parts[i].trim()}`\n if (parts[i + 1]) scoped += ', '\n }\n return scoped\n}\n\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n const {options, style} = rule\n const rules = style ? style[at] : null\n\n if (!rules) return\n\n for (const name in rules) {\n sheet.addRule(name, rules[name], {\n ...options,\n selector: addScope(name, rule.selector)\n })\n }\n\n delete style[at]\n}\n\nfunction handlePrefixedGlobalRule(rule, sheet) {\n const {options, style} = rule\n for (const prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue\n\n const selector = addScope(prop.substr(at.length), rule.selector)\n sheet.addRule(selector, style[prop], {\n ...options,\n selector\n })\n delete style[prop]\n }\n}\n\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\nexport default function jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null\n\n if (name === at) {\n return new GlobalContainerRule(name, styles, options)\n }\n\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options)\n }\n\n const {parent} = options\n\n if (parent) {\n if (\n parent.type === 'global' ||\n (parent.options.parent && parent.options.parent.type === 'global')\n ) {\n options.scoped = false\n }\n }\n\n if (!options.selector && options.scoped === false) {\n options.selector = name\n }\n\n return null\n }\n\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return\n\n handleNestedGlobalContainerRule(rule, sheet)\n handlePrefixedGlobalRule(rule, sheet)\n }\n\n return {onCreateRule, onProcessRule}\n}\n"],"names":["at","atPrefix","GlobalContainerRule","key","styles","options","type","isProcessed","rules","RuleList","parent","selector","add","process","getRule","name","get","addRule","style","rule","jss","plugins","onProcessRule","replaceRule","newRule","replace","indexOf","toString","GlobalPrefixedRule","substr","length","createRule","separatorRegExp","addScope","scope","parts","split","scoped","i","trim","handleNestedGlobalContainerRule","sheet","handlePrefixedGlobalRule","prop","jssGlobal","onCreateRule"],"mappings":"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"}