您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971
  1. (function webpackUniversalModuleDefinition(root, factory) {
  2. if(typeof exports === 'object' && typeof module === 'object')
  3. module.exports = factory();
  4. else if(typeof define === 'function' && define.amd)
  5. define([], factory);
  6. else if(typeof exports === 'object')
  7. exports["jssGlobal"] = factory();
  8. else
  9. root["jssGlobal"] = factory();
  10. })(this, function() {
  11. return /******/ (function(modules) { // webpackBootstrap
  12. /******/ // The module cache
  13. /******/ var installedModules = {};
  14. /******/
  15. /******/ // The require function
  16. /******/ function __webpack_require__(moduleId) {
  17. /******/
  18. /******/ // Check if module is in cache
  19. /******/ if(installedModules[moduleId])
  20. /******/ return installedModules[moduleId].exports;
  21. /******/
  22. /******/ // Create a new module (and put it into the cache)
  23. /******/ var module = installedModules[moduleId] = {
  24. /******/ exports: {},
  25. /******/ id: moduleId,
  26. /******/ loaded: false
  27. /******/ };
  28. /******/
  29. /******/ // Execute the module function
  30. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  31. /******/
  32. /******/ // Flag the module as loaded
  33. /******/ module.loaded = true;
  34. /******/
  35. /******/ // Return the exports of the module
  36. /******/ return module.exports;
  37. /******/ }
  38. /******/
  39. /******/
  40. /******/ // expose the modules object (__webpack_modules__)
  41. /******/ __webpack_require__.m = modules;
  42. /******/
  43. /******/ // expose the module cache
  44. /******/ __webpack_require__.c = installedModules;
  45. /******/
  46. /******/ // __webpack_public_path__
  47. /******/ __webpack_require__.p = "";
  48. /******/
  49. /******/ // Load entry module and return exports
  50. /******/ return __webpack_require__(0);
  51. /******/ })
  52. /************************************************************************/
  53. /******/ ([
  54. /* 0 */
  55. /***/ (function(module, exports, __webpack_require__) {
  56. 'use strict';
  57. Object.defineProperty(exports, "__esModule", {
  58. value: true
  59. });
  60. var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
  61. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  62. exports['default'] = jssGlobal;
  63. var _jss = __webpack_require__(1);
  64. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  65. var propKey = '@global';
  66. var prefixKey = '@global ';
  67. var GlobalContainerRule = function () {
  68. function GlobalContainerRule(key, styles, options) {
  69. _classCallCheck(this, GlobalContainerRule);
  70. this.type = 'global';
  71. this.key = key;
  72. this.options = options;
  73. this.rules = new _jss.RuleList(_extends({}, options, {
  74. parent: this
  75. }));
  76. for (var selector in styles) {
  77. this.rules.add(selector, styles[selector], { selector: selector });
  78. }
  79. this.rules.process();
  80. }
  81. /**
  82. * Get a rule.
  83. */
  84. _createClass(GlobalContainerRule, [{
  85. key: 'getRule',
  86. value: function getRule(name) {
  87. return this.rules.get(name);
  88. }
  89. /**
  90. * Create and register rule, run plugins.
  91. */
  92. }, {
  93. key: 'addRule',
  94. value: function addRule(name, style, options) {
  95. var rule = this.rules.add(name, style, options);
  96. this.options.jss.plugins.onProcessRule(rule);
  97. return rule;
  98. }
  99. /**
  100. * Get index of a rule.
  101. */
  102. }, {
  103. key: 'indexOf',
  104. value: function indexOf(rule) {
  105. return this.rules.indexOf(rule);
  106. }
  107. /**
  108. * Generates a CSS string.
  109. */
  110. }, {
  111. key: 'toString',
  112. value: function toString() {
  113. return this.rules.toString();
  114. }
  115. }]);
  116. return GlobalContainerRule;
  117. }();
  118. var GlobalPrefixedRule = function () {
  119. function GlobalPrefixedRule(name, style, options) {
  120. _classCallCheck(this, GlobalPrefixedRule);
  121. this.name = name;
  122. this.options = options;
  123. var selector = name.substr(prefixKey.length);
  124. this.rule = options.jss.createRule(selector, style, _extends({}, options, {
  125. parent: this,
  126. selector: selector
  127. }));
  128. }
  129. _createClass(GlobalPrefixedRule, [{
  130. key: 'toString',
  131. value: function toString(options) {
  132. return this.rule.toString(options);
  133. }
  134. }]);
  135. return GlobalPrefixedRule;
  136. }();
  137. var separatorRegExp = /\s*,\s*/g;
  138. function addScope(selector, scope) {
  139. var parts = selector.split(separatorRegExp);
  140. var scoped = '';
  141. for (var i = 0; i < parts.length; i++) {
  142. scoped += scope + ' ' + parts[i].trim();
  143. if (parts[i + 1]) scoped += ', ';
  144. }
  145. return scoped;
  146. }
  147. function handleNestedGlobalContainerRule(rule) {
  148. var options = rule.options,
  149. style = rule.style;
  150. var rules = style[propKey];
  151. if (!rules) return;
  152. for (var name in rules) {
  153. options.sheet.addRule(name, rules[name], _extends({}, options, {
  154. selector: addScope(name, rule.selector)
  155. }));
  156. }
  157. delete style[propKey];
  158. }
  159. function handlePrefixedGlobalRule(rule) {
  160. var options = rule.options,
  161. style = rule.style;
  162. for (var prop in style) {
  163. if (prop.substr(0, propKey.length) !== propKey) continue;
  164. var selector = addScope(prop.substr(propKey.length), rule.selector);
  165. options.sheet.addRule(selector, style[prop], _extends({}, options, {
  166. selector: selector
  167. }));
  168. delete style[prop];
  169. }
  170. }
  171. /**
  172. * Convert nested rules to separate, remove them from original styles.
  173. *
  174. * @param {Rule} rule
  175. * @api public
  176. */
  177. function jssGlobal() {
  178. function onCreateRule(name, styles, options) {
  179. if (name === propKey) {
  180. return new GlobalContainerRule(name, styles, options);
  181. }
  182. if (name[0] === '@' && name.substr(0, prefixKey.length) === prefixKey) {
  183. return new GlobalPrefixedRule(name, styles, options);
  184. }
  185. var parent = options.parent;
  186. if (parent) {
  187. if (parent.type === 'global' || parent.options.parent.type === 'global') {
  188. options.global = true;
  189. }
  190. }
  191. if (options.global) options.selector = name;
  192. return null;
  193. }
  194. function onProcessRule(rule) {
  195. if (rule.type !== 'style') return;
  196. handleNestedGlobalContainerRule(rule);
  197. handlePrefixedGlobalRule(rule);
  198. }
  199. return { onCreateRule: onCreateRule, onProcessRule: onProcessRule };
  200. }
  201. /***/ }),
  202. /* 1 */
  203. /***/ (function(module, exports, __webpack_require__) {
  204. 'use strict';
  205. Object.defineProperty(exports, "__esModule", {
  206. value: true
  207. });
  208. exports.create = exports.createGenerateClassName = exports.sheets = exports.RuleList = exports.SheetsManager = exports.SheetsRegistry = exports.getDynamicStyles = undefined;
  209. var _getDynamicStyles = __webpack_require__(2);
  210. Object.defineProperty(exports, 'getDynamicStyles', {
  211. enumerable: true,
  212. get: function get() {
  213. return _interopRequireDefault(_getDynamicStyles)['default'];
  214. }
  215. });
  216. var _SheetsRegistry = __webpack_require__(3);
  217. Object.defineProperty(exports, 'SheetsRegistry', {
  218. enumerable: true,
  219. get: function get() {
  220. return _interopRequireDefault(_SheetsRegistry)['default'];
  221. }
  222. });
  223. var _SheetsManager = __webpack_require__(4);
  224. Object.defineProperty(exports, 'SheetsManager', {
  225. enumerable: true,
  226. get: function get() {
  227. return _interopRequireDefault(_SheetsManager)['default'];
  228. }
  229. });
  230. var _RuleList = __webpack_require__(6);
  231. Object.defineProperty(exports, 'RuleList', {
  232. enumerable: true,
  233. get: function get() {
  234. return _interopRequireDefault(_RuleList)['default'];
  235. }
  236. });
  237. var _sheets = __webpack_require__(18);
  238. Object.defineProperty(exports, 'sheets', {
  239. enumerable: true,
  240. get: function get() {
  241. return _interopRequireDefault(_sheets)['default'];
  242. }
  243. });
  244. var _createGenerateClassName = __webpack_require__(19);
  245. Object.defineProperty(exports, 'createGenerateClassName', {
  246. enumerable: true,
  247. get: function get() {
  248. return _interopRequireDefault(_createGenerateClassName)['default'];
  249. }
  250. });
  251. var _Jss = __webpack_require__(21);
  252. var _Jss2 = _interopRequireDefault(_Jss);
  253. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  254. /**
  255. * Creates a new instance of Jss.
  256. */
  257. var create = exports.create = function create(options) {
  258. return new _Jss2['default'](options);
  259. };
  260. /**
  261. * A global Jss instance.
  262. */
  263. exports['default'] = create();
  264. /***/ }),
  265. /* 2 */
  266. /***/ (function(module, exports) {
  267. 'use strict';
  268. Object.defineProperty(exports, "__esModule", {
  269. value: true
  270. });
  271. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  272. /**
  273. * Extracts a styles object with only props that contain function values.
  274. */
  275. exports['default'] = function (styles) {
  276. // eslint-disable-next-line no-shadow
  277. function extract(styles) {
  278. var to = null;
  279. for (var key in styles) {
  280. var value = styles[key];
  281. var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);
  282. if (type === 'function') {
  283. if (!to) to = {};
  284. to[key] = value;
  285. } else if (type === 'object' && value !== null && !Array.isArray(value)) {
  286. var extracted = extract(value);
  287. if (extracted) {
  288. if (!to) to = {};
  289. to[key] = extracted;
  290. }
  291. }
  292. }
  293. return to;
  294. }
  295. return extract(styles);
  296. };
  297. /***/ }),
  298. /* 3 */
  299. /***/ (function(module, exports) {
  300. 'use strict';
  301. Object.defineProperty(exports, "__esModule", {
  302. value: true
  303. });
  304. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  305. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  306. /**
  307. * Sheets registry to access them all at one place.
  308. */
  309. var SheetsRegistry = function () {
  310. function SheetsRegistry() {
  311. _classCallCheck(this, SheetsRegistry);
  312. this.registry = [];
  313. }
  314. _createClass(SheetsRegistry, [{
  315. key: 'add',
  316. /**
  317. * Register a Style Sheet.
  318. */
  319. value: function add(sheet) {
  320. var registry = this.registry;
  321. var index = sheet.options.index;
  322. if (registry.indexOf(sheet) !== -1) return;
  323. if (registry.length === 0 || index >= this.index) {
  324. registry.push(sheet);
  325. return;
  326. }
  327. // Find a position.
  328. for (var i = 0; i < registry.length; i++) {
  329. if (registry[i].options.index > index) {
  330. registry.splice(i, 0, sheet);
  331. return;
  332. }
  333. }
  334. }
  335. /**
  336. * Reset the registry.
  337. */
  338. }, {
  339. key: 'reset',
  340. value: function reset() {
  341. this.registry = [];
  342. }
  343. /**
  344. * Remove a Style Sheet.
  345. */
  346. }, {
  347. key: 'remove',
  348. value: function remove(sheet) {
  349. var index = this.registry.indexOf(sheet);
  350. this.registry.splice(index, 1);
  351. }
  352. /**
  353. * Convert all attached sheets to a CSS string.
  354. */
  355. }, {
  356. key: 'toString',
  357. value: function toString(options) {
  358. return this.registry.filter(function (sheet) {
  359. return sheet.attached;
  360. }).map(function (sheet) {
  361. return sheet.toString(options);
  362. }).join('\n');
  363. }
  364. }, {
  365. key: 'index',
  366. /**
  367. * Current highest index number.
  368. */
  369. get: function get() {
  370. return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;
  371. }
  372. }]);
  373. return SheetsRegistry;
  374. }();
  375. exports['default'] = SheetsRegistry;
  376. /***/ }),
  377. /* 4 */
  378. /***/ (function(module, exports, __webpack_require__) {
  379. 'use strict';
  380. Object.defineProperty(exports, "__esModule", {
  381. value: true
  382. });
  383. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  384. var _warning = __webpack_require__(5);
  385. var _warning2 = _interopRequireDefault(_warning);
  386. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  387. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  388. /**
  389. * SheetsManager is like a WeakMap which is designed to count StyleSheet
  390. * instances and attach/detach automatically.
  391. */
  392. var SheetsManager = function () {
  393. function SheetsManager() {
  394. _classCallCheck(this, SheetsManager);
  395. this.sheets = [];
  396. this.refs = [];
  397. this.keys = [];
  398. }
  399. _createClass(SheetsManager, [{
  400. key: 'get',
  401. value: function get(key) {
  402. var index = this.keys.indexOf(key);
  403. return this.sheets[index];
  404. }
  405. }, {
  406. key: 'add',
  407. value: function add(key, sheet) {
  408. var sheets = this.sheets,
  409. refs = this.refs,
  410. keys = this.keys;
  411. var index = sheets.indexOf(sheet);
  412. if (index !== -1) return index;
  413. sheets.push(sheet);
  414. refs.push(0);
  415. keys.push(key);
  416. return sheets.length - 1;
  417. }
  418. }, {
  419. key: 'manage',
  420. value: function manage(key) {
  421. var index = this.keys.indexOf(key);
  422. var sheet = this.sheets[index];
  423. if (this.refs[index] === 0) sheet.attach();
  424. this.refs[index]++;
  425. if (!this.keys[index]) this.keys.splice(index, 0, key);
  426. return sheet;
  427. }
  428. }, {
  429. key: 'unmanage',
  430. value: function unmanage(key) {
  431. var index = this.keys.indexOf(key);
  432. if (index === -1) {
  433. // eslint-ignore-next-line no-console
  434. (0, _warning2['default'])(false, 'SheetsManager: can\'t find sheet to unmanage');
  435. return;
  436. }
  437. if (this.refs[index] > 0) {
  438. this.refs[index]--;
  439. if (this.refs[index] === 0) this.sheets[index].detach();
  440. }
  441. }
  442. }, {
  443. key: 'size',
  444. get: function get() {
  445. return this.keys.length;
  446. }
  447. }]);
  448. return SheetsManager;
  449. }();
  450. exports['default'] = SheetsManager;
  451. /***/ }),
  452. /* 5 */
  453. /***/ (function(module, exports, __webpack_require__) {
  454. /**
  455. * Copyright 2014-2015, Facebook, Inc.
  456. * All rights reserved.
  457. *
  458. * This source code is licensed under the BSD-style license found in the
  459. * LICENSE file in the root directory of this source tree. An additional grant
  460. * of patent rights can be found in the PATENTS file in the same directory.
  461. */
  462. 'use strict';
  463. /**
  464. * Similar to invariant but only logs a warning if the condition is not met.
  465. * This can be used to log issues in development environments in critical
  466. * paths. Removing the logging code for production environments will keep the
  467. * same logic and follow the same code paths.
  468. */
  469. var warning = function() {};
  470. if (true) {
  471. warning = function(condition, format, args) {
  472. var len = arguments.length;
  473. args = new Array(len > 2 ? len - 2 : 0);
  474. for (var key = 2; key < len; key++) {
  475. args[key - 2] = arguments[key];
  476. }
  477. if (format === undefined) {
  478. throw new Error(
  479. '`warning(condition, format, ...args)` requires a warning ' +
  480. 'message argument'
  481. );
  482. }
  483. if (format.length < 10 || (/^[s\W]*$/).test(format)) {
  484. throw new Error(
  485. 'The warning format should be able to uniquely identify this ' +
  486. 'warning. Please, use a more descriptive format than: ' + format
  487. );
  488. }
  489. if (!condition) {
  490. var argIndex = 0;
  491. var message = 'Warning: ' +
  492. format.replace(/%s/g, function() {
  493. return args[argIndex++];
  494. });
  495. if (typeof console !== 'undefined') {
  496. console.error(message);
  497. }
  498. try {
  499. // This error was thrown as a convenience so that you can use this stack
  500. // to find the callsite that caused this warning to fire.
  501. throw new Error(message);
  502. } catch(x) {}
  503. }
  504. };
  505. }
  506. module.exports = warning;
  507. /***/ }),
  508. /* 6 */
  509. /***/ (function(module, exports, __webpack_require__) {
  510. 'use strict';
  511. Object.defineProperty(exports, "__esModule", {
  512. value: true
  513. });
  514. var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
  515. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  516. var _createRule = __webpack_require__(7);
  517. var _createRule2 = _interopRequireDefault(_createRule);
  518. var _updateStyle = __webpack_require__(16);
  519. var _updateStyle2 = _interopRequireDefault(_updateStyle);
  520. var _linkRule = __webpack_require__(17);
  521. var _linkRule2 = _interopRequireDefault(_linkRule);
  522. var _StyleRule = __webpack_require__(8);
  523. var _StyleRule2 = _interopRequireDefault(_StyleRule);
  524. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  525. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  526. /**
  527. * Contains rules objects and allows adding/removing etc.
  528. * Is used for e.g. by `StyleSheet` or `ConditionalRule`.
  529. */
  530. var RuleList = function () {
  531. // Original styles object.
  532. function RuleList(options) {
  533. _classCallCheck(this, RuleList);
  534. this.map = {};
  535. this.raw = {};
  536. this.index = [];
  537. this.options = options;
  538. this.classes = options.classes;
  539. }
  540. /**
  541. * Create and register rule.
  542. *
  543. * Will not render after Style Sheet was rendered the first time.
  544. */
  545. // Used to ensure correct rules order.
  546. // Rules registry for access by .get() method.
  547. // It contains the same rule registered by name and by selector.
  548. _createClass(RuleList, [{
  549. key: 'add',
  550. value: function add(name, decl, options) {
  551. var _options = this.options,
  552. parent = _options.parent,
  553. sheet = _options.sheet,
  554. jss = _options.jss,
  555. Renderer = _options.Renderer,
  556. generateClassName = _options.generateClassName;
  557. options = _extends({
  558. classes: this.classes,
  559. parent: parent,
  560. sheet: sheet,
  561. jss: jss,
  562. Renderer: Renderer,
  563. generateClassName: generateClassName
  564. }, options);
  565. if (!options.selector && this.classes[name]) {
  566. options.selector = '.' + this.classes[name];
  567. }
  568. this.raw[name] = decl;
  569. var rule = (0, _createRule2['default'])(name, decl, options);
  570. var className = void 0;
  571. if (!options.selector && rule instanceof _StyleRule2['default']) {
  572. className = generateClassName(rule, sheet);
  573. rule.selector = '.' + className;
  574. }
  575. this.register(rule, className);
  576. var index = options.index === undefined ? this.index.length : options.index;
  577. this.index.splice(index, 0, rule);
  578. return rule;
  579. }
  580. /**
  581. * Get a rule.
  582. */
  583. }, {
  584. key: 'get',
  585. value: function get(name) {
  586. return this.map[name];
  587. }
  588. /**
  589. * Delete a rule.
  590. */
  591. }, {
  592. key: 'remove',
  593. value: function remove(rule) {
  594. this.unregister(rule);
  595. this.index.splice(this.indexOf(rule), 1);
  596. }
  597. /**
  598. * Get index of a rule.
  599. */
  600. }, {
  601. key: 'indexOf',
  602. value: function indexOf(rule) {
  603. return this.index.indexOf(rule);
  604. }
  605. /**
  606. * Run `onProcessRule()` plugins on every rule.
  607. */
  608. }, {
  609. key: 'process',
  610. value: function process() {
  611. var plugins = this.options.jss.plugins;
  612. // We need to clone array because if we modify the index somewhere else during a loop
  613. // we end up with very hard-to-track-down side effects.
  614. this.index.slice(0).forEach(plugins.onProcessRule, plugins);
  615. }
  616. /**
  617. * Register a rule in `.map` and `.classes` maps.
  618. */
  619. }, {
  620. key: 'register',
  621. value: function register(rule, className) {
  622. this.map[rule.key] = rule;
  623. if (rule instanceof _StyleRule2['default']) {
  624. this.map[rule.selector] = rule;
  625. if (className) this.classes[rule.key] = className;
  626. }
  627. }
  628. /**
  629. * Unregister a rule.
  630. */
  631. }, {
  632. key: 'unregister',
  633. value: function unregister(rule) {
  634. delete this.map[rule.key];
  635. if (rule instanceof _StyleRule2['default']) {
  636. delete this.map[rule.selector];
  637. delete this.classes[rule.key];
  638. }
  639. }
  640. /**
  641. * Update the function values with a new data.
  642. */
  643. }, {
  644. key: 'update',
  645. value: function update(name, data) {
  646. if (typeof name === 'string') {
  647. (0, _updateStyle2['default'])(this.get(name), data, RuleList);
  648. return;
  649. }
  650. for (var index = 0; index < this.index.length; index++) {
  651. (0, _updateStyle2['default'])(this.index[index], name, RuleList);
  652. }
  653. }
  654. /**
  655. * Link renderable rules with CSSRuleList.
  656. */
  657. }, {
  658. key: 'link',
  659. value: function link(cssRules) {
  660. var map = this.options.sheet.renderer.getUnescapedKeysMap(this.index);
  661. for (var i = 0; i < cssRules.length; i++) {
  662. var cssRule = cssRules[i];
  663. var _key = this.options.sheet.renderer.getKey(cssRule);
  664. if (map[_key]) _key = map[_key];
  665. var rule = this.map[_key];
  666. if (rule) (0, _linkRule2['default'])(rule, cssRule);
  667. }
  668. }
  669. /**
  670. * Convert rules to a CSS string.
  671. */
  672. }, {
  673. key: 'toString',
  674. value: function toString(options) {
  675. var str = '';
  676. for (var index = 0; index < this.index.length; index++) {
  677. var rule = this.index[index];
  678. var css = rule.toString(options);
  679. // No need to render an empty rule.
  680. if (!css) continue;
  681. if (str) str += '\n';
  682. str += css;
  683. }
  684. return str;
  685. }
  686. }]);
  687. return RuleList;
  688. }();
  689. exports['default'] = RuleList;
  690. /***/ }),
  691. /* 7 */
  692. /***/ (function(module, exports, __webpack_require__) {
  693. 'use strict';
  694. Object.defineProperty(exports, "__esModule", {
  695. value: true
  696. });
  697. exports['default'] = createRule;
  698. var _warning = __webpack_require__(5);
  699. var _warning2 = _interopRequireDefault(_warning);
  700. var _StyleRule = __webpack_require__(8);
  701. var _StyleRule2 = _interopRequireDefault(_StyleRule);
  702. var _cloneStyle = __webpack_require__(15);
  703. var _cloneStyle2 = _interopRequireDefault(_cloneStyle);
  704. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  705. /**
  706. * Create a rule instance.
  707. */
  708. function createRule() {
  709. var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unnamed';
  710. var decl = arguments[1];
  711. var options = arguments[2];
  712. var jss = options.jss;
  713. var declCopy = (0, _cloneStyle2['default'])(decl);
  714. var rule = jss.plugins.onCreateRule(name, declCopy, options);
  715. if (rule) return rule;
  716. // It is an at-rule and it has no instance.
  717. if (name[0] === '@') {
  718. (0, _warning2['default'])(false, '[JSS] Unknown at-rule %s', name);
  719. }
  720. return new _StyleRule2['default'](name, declCopy, options);
  721. }
  722. /***/ }),
  723. /* 8 */
  724. /***/ (function(module, exports, __webpack_require__) {
  725. 'use strict';
  726. Object.defineProperty(exports, "__esModule", {
  727. value: true
  728. });
  729. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  730. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  731. var _warning = __webpack_require__(5);
  732. var _warning2 = _interopRequireDefault(_warning);
  733. var _toCss = __webpack_require__(9);
  734. var _toCss2 = _interopRequireDefault(_toCss);
  735. var _toCssValue = __webpack_require__(10);
  736. var _toCssValue2 = _interopRequireDefault(_toCssValue);
  737. var _isDynamicValue = __webpack_require__(11);
  738. var _isDynamicValue2 = _interopRequireDefault(_isDynamicValue);
  739. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  740. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  741. var StyleRule = function () {
  742. function StyleRule(key, style, options) {
  743. _classCallCheck(this, StyleRule);
  744. this.type = 'style';
  745. this.isProcessed = false;
  746. var sheet = options.sheet,
  747. Renderer = options.Renderer,
  748. selector = options.selector;
  749. this.key = key;
  750. this.options = options;
  751. this.style = style;
  752. if (selector) this.selectorText = selector;
  753. this.renderer = sheet ? sheet.renderer : new Renderer();
  754. }
  755. /**
  756. * Set selector string.
  757. * Attention: use this with caution. Most browsers didn't implement
  758. * selectorText setter, so this may result in rerendering of entire Style Sheet.
  759. */
  760. _createClass(StyleRule, [{
  761. key: 'prop',
  762. /**
  763. * Get or set a style property.
  764. */
  765. value: function prop(name, nextValue) {
  766. // The result of a dynamic value is prefixed with $ and is not innumerable in
  767. // order to be ignored by all plugins or during stringification.
  768. var $name = (0, _isDynamicValue2['default'])(this.style[name]) ? '$' + name : name;
  769. // Its a setter.
  770. if (nextValue != null) {
  771. // Don't do anything if the value has not changed.
  772. if (this.style[$name] !== nextValue) {
  773. nextValue = this.options.jss.plugins.onChangeValue(nextValue, name, this);
  774. Object.defineProperty(this.style, $name, {
  775. value: nextValue,
  776. writable: true
  777. });
  778. // Renderable is defined if StyleSheet option `link` is true.
  779. if (this.renderable) this.renderer.setStyle(this.renderable, name, nextValue);else {
  780. var sheet = this.options.sheet;
  781. if (sheet && sheet.attached) {
  782. (0, _warning2['default'])(false, 'Rule is not linked. Missing sheet option "link: true".');
  783. }
  784. }
  785. }
  786. return this;
  787. }
  788. return this.style[$name];
  789. }
  790. /**
  791. * Apply rule to an element inline.
  792. */
  793. }, {
  794. key: 'applyTo',
  795. value: function applyTo(renderable) {
  796. var json = this.toJSON();
  797. for (var prop in json) {
  798. this.renderer.setStyle(renderable, prop, json[prop]);
  799. }return this;
  800. }
  801. /**
  802. * Returns JSON representation of the rule.
  803. * Fallbacks are not supported.
  804. * Useful for inline styles.
  805. */
  806. }, {
  807. key: 'toJSON',
  808. value: function toJSON() {
  809. var json = {};
  810. for (var prop in this.style) {
  811. var value = this.style[prop];
  812. if ((0, _isDynamicValue2['default'])(value)) json[prop] = this.style['$' + prop];else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = (0, _toCssValue2['default'])(value);
  813. }
  814. return json;
  815. }
  816. /**
  817. * Generates a CSS string.
  818. */
  819. }, {
  820. key: 'toString',
  821. value: function toString(options) {
  822. return (0, _toCss2['default'])(this.selector, this.style, options);
  823. }
  824. }, {
  825. key: 'selector',
  826. set: function set(selector) {
  827. if (selector === this.selectorText) return;
  828. this.selectorText = selector;
  829. if (this.renderable) {
  830. var hasChanged = this.renderer.setSelector(this.renderable, selector);
  831. // If selector setter is not implemented, rerender the rule.
  832. if (!hasChanged && this.renderable) {
  833. var renderable = this.renderer.replaceRule(this.renderable, this);
  834. if (renderable) this.renderable = renderable;
  835. }
  836. }
  837. }
  838. /**
  839. * Get selector string.
  840. */
  841. ,
  842. get: function get() {
  843. return this.selectorText;
  844. }
  845. }]);
  846. return StyleRule;
  847. }();
  848. exports['default'] = StyleRule;
  849. /***/ }),
  850. /* 9 */
  851. /***/ (function(module, exports, __webpack_require__) {
  852. 'use strict';
  853. Object.defineProperty(exports, "__esModule", {
  854. value: true
  855. });
  856. exports['default'] = toCss;
  857. var _toCssValue = __webpack_require__(10);
  858. var _toCssValue2 = _interopRequireDefault(_toCssValue);
  859. var _isDynamicValue = __webpack_require__(11);
  860. var _isDynamicValue2 = _interopRequireDefault(_isDynamicValue);
  861. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  862. /**
  863. * Indent a string.
  864. * http://jsperf.com/array-join-vs-for
  865. */
  866. function indentStr(str, indent) {
  867. var result = '';
  868. for (var index = 0; index < indent; index++) {
  869. result += ' ';
  870. }return result + str;
  871. }
  872. /**
  873. * Converts a Rule to CSS string.
  874. */
  875. function toCss(selector, style) {
  876. var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  877. var result = '';
  878. if (!style) return result;
  879. var _options$indent = options.indent,
  880. indent = _options$indent === undefined ? 0 : _options$indent;
  881. var fallbacks = style.fallbacks;
  882. indent++;
  883. // Apply fallbacks first.
  884. if (fallbacks) {
  885. // Array syntax {fallbacks: [{prop: value}]}
  886. if (Array.isArray(fallbacks)) {
  887. for (var index = 0; index < fallbacks.length; index++) {
  888. var fallback = fallbacks[index];
  889. for (var prop in fallback) {
  890. var value = fallback[prop];
  891. if (value != null) {
  892. result += '\n' + indentStr(prop + ': ' + (0, _toCssValue2['default'])(value) + ';', indent);
  893. }
  894. }
  895. }
  896. }
  897. // Object syntax {fallbacks: {prop: value}}
  898. else {
  899. for (var _prop in fallbacks) {
  900. var _value = fallbacks[_prop];
  901. if (_value != null) {
  902. result += '\n' + indentStr(_prop + ': ' + (0, _toCssValue2['default'])(_value) + ';', indent);
  903. }
  904. }
  905. }
  906. }
  907. var hasDynamicValue = false;
  908. for (var _prop2 in style) {
  909. var _value2 = style[_prop2];
  910. if ((0, _isDynamicValue2['default'])(_value2)) {
  911. _value2 = style['$' + _prop2];
  912. hasDynamicValue = true;
  913. }
  914. if (_value2 != null && _prop2 !== 'fallbacks') {
  915. result += '\n' + indentStr(_prop2 + ': ' + (0, _toCssValue2['default'])(_value2) + ';', indent);
  916. }
  917. }
  918. if (!result && !hasDynamicValue) return result;
  919. indent--;
  920. result = indentStr(selector + ' {' + result + '\n', indent) + indentStr('}', indent);
  921. return result;
  922. }
  923. /***/ }),
  924. /* 10 */
  925. /***/ (function(module, exports) {
  926. 'use strict';
  927. Object.defineProperty(exports, "__esModule", {
  928. value: true
  929. });
  930. exports['default'] = toCssValue;
  931. var joinWithSpace = function joinWithSpace(value) {
  932. return value.join(' ');
  933. };
  934. /**
  935. * Converts array values to string.
  936. *
  937. * `margin: [['5px', '10px']]` > `margin: 5px 10px;`
  938. * `border: ['1px', '2px']` > `border: 1px, 2px;`
  939. */
  940. function toCssValue(value) {
  941. if (!Array.isArray(value)) return value;
  942. // Support space separated values.
  943. if (Array.isArray(value[0])) {
  944. return toCssValue(value.map(joinWithSpace));
  945. }
  946. return value.join(', ');
  947. }
  948. /***/ }),
  949. /* 11 */
  950. /***/ (function(module, exports, __webpack_require__) {
  951. 'use strict';
  952. Object.defineProperty(exports, "__esModule", {
  953. value: true
  954. });
  955. var _isObservable = __webpack_require__(12);
  956. var _isObservable2 = _interopRequireDefault(_isObservable);
  957. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  958. exports['default'] = function (value) {
  959. return typeof value === 'function' || (0, _isObservable2['default'])(value);
  960. };
  961. /***/ }),
  962. /* 12 */
  963. /***/ (function(module, exports, __webpack_require__) {
  964. 'use strict';
  965. var symbolObservable = __webpack_require__(13);
  966. module.exports = function (fn) {
  967. return Boolean(fn && fn[symbolObservable]);
  968. };
  969. /***/ }),
  970. /* 13 */
  971. /***/ (function(module, exports, __webpack_require__) {
  972. /* WEBPACK VAR INJECTION */(function(global) {/* global window */
  973. 'use strict';
  974. module.exports = __webpack_require__(14)(global || window || this);
  975. /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
  976. /***/ }),
  977. /* 14 */
  978. /***/ (function(module, exports) {
  979. 'use strict';
  980. module.exports = function symbolObservablePonyfill(root) {
  981. var result;
  982. var Symbol = root.Symbol;
  983. if (typeof Symbol === 'function') {
  984. if (Symbol.observable) {
  985. result = Symbol.observable;
  986. } else {
  987. result = Symbol('observable');
  988. Symbol.observable = result;
  989. }
  990. } else {
  991. result = '@@observable';
  992. }
  993. return result;
  994. };
  995. /***/ }),
  996. /* 15 */
  997. /***/ (function(module, exports, __webpack_require__) {
  998. 'use strict';
  999. Object.defineProperty(exports, "__esModule", {
  1000. value: true
  1001. });
  1002. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  1003. exports['default'] = cloneStyle;
  1004. var _isObservable = __webpack_require__(12);
  1005. var _isObservable2 = _interopRequireDefault(_isObservable);
  1006. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1007. var isArray = Array.isArray;
  1008. function cloneStyle(style) {
  1009. // Support empty values in case user ends up with them by accident.
  1010. if (style == null) return style;
  1011. // Support string value for SimpleRule.
  1012. var typeOfStyle = typeof style === 'undefined' ? 'undefined' : _typeof(style);
  1013. if (typeOfStyle === 'string' || typeOfStyle === 'number') return style;
  1014. // Support array for FontFaceRule.
  1015. if (isArray(style)) return style.map(cloneStyle);
  1016. var newStyle = {};
  1017. for (var name in style) {
  1018. var value = style[name];
  1019. if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && !(0, _isObservable2['default'])(value)) {
  1020. newStyle[name] = cloneStyle(value);
  1021. continue;
  1022. }
  1023. newStyle[name] = value;
  1024. }
  1025. return newStyle;
  1026. }
  1027. /***/ }),
  1028. /* 16 */
  1029. /***/ (function(module, exports) {
  1030. 'use strict';
  1031. Object.defineProperty(exports, "__esModule", {
  1032. value: true
  1033. });
  1034. exports['default'] = function (rule, data, RuleList) {
  1035. if (rule.type === 'style') {
  1036. for (var prop in rule.style) {
  1037. var value = rule.style[prop];
  1038. if (typeof value === 'function') {
  1039. rule.prop(prop, value(data));
  1040. }
  1041. }
  1042. } else if (rule.rules instanceof RuleList) {
  1043. rule.rules.update(data);
  1044. }
  1045. };
  1046. /***/ }),
  1047. /* 17 */
  1048. /***/ (function(module, exports) {
  1049. "use strict";
  1050. Object.defineProperty(exports, "__esModule", {
  1051. value: true
  1052. });
  1053. exports["default"] = linkRule;
  1054. /**
  1055. * Link rule with CSSStyleRule and nested rules with corresponding nested cssRules if both exists.
  1056. */
  1057. function linkRule(rule, cssRule) {
  1058. rule.renderable = cssRule;
  1059. if (rule.rules && cssRule.cssRules) rule.rules.link(cssRule.cssRules);
  1060. }
  1061. /***/ }),
  1062. /* 18 */
  1063. /***/ (function(module, exports, __webpack_require__) {
  1064. 'use strict';
  1065. Object.defineProperty(exports, "__esModule", {
  1066. value: true
  1067. });
  1068. var _SheetsRegistry = __webpack_require__(3);
  1069. var _SheetsRegistry2 = _interopRequireDefault(_SheetsRegistry);
  1070. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1071. /**
  1072. * This is a global sheets registry. Only DomRenderer will add sheets to it.
  1073. * On the server one should use an own SheetsRegistry instance and add the
  1074. * sheets to it, because you need to make sure to create a new registry for
  1075. * each request in order to not leak sheets across requests.
  1076. */
  1077. exports['default'] = new _SheetsRegistry2['default']();
  1078. /***/ }),
  1079. /* 19 */
  1080. /***/ (function(module, exports, __webpack_require__) {
  1081. /* WEBPACK VAR INJECTION */(function(global) {'use strict';
  1082. Object.defineProperty(exports, "__esModule", {
  1083. value: true
  1084. });
  1085. var _warning = __webpack_require__(5);
  1086. var _warning2 = _interopRequireDefault(_warning);
  1087. var _StyleSheet = __webpack_require__(20);
  1088. var _StyleSheet2 = _interopRequireDefault(_StyleSheet);
  1089. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1090. var globalRef = typeof window === 'undefined' ? global : window;
  1091. var ns = '2f1acc6c3a606b082e5eef5e54414ffb';
  1092. if (globalRef[ns] == null) globalRef[ns] = 0;
  1093. // In case we have more than one JSS version.
  1094. var jssCounter = globalRef[ns]++;
  1095. var maxRules = 1e10;
  1096. var env = ("development");
  1097. /**
  1098. * Returns a function which generates unique class names based on counters.
  1099. * When new generator function is created, rule counter is reseted.
  1100. * We need to reset the rule counter for SSR for each request.
  1101. */
  1102. exports['default'] = function () {
  1103. var ruleCounter = 0;
  1104. return function (rule, sheet) {
  1105. ruleCounter += 1;
  1106. if (ruleCounter > maxRules) {
  1107. (0, _warning2['default'])(false, 'You might have a memory leak. Rule counter is at %s.', ruleCounter);
  1108. }
  1109. if (env === 'production') {
  1110. return 'c' + jssCounter + ruleCounter;
  1111. }
  1112. var prefix = sheet ? sheet.options.classNamePrefix || '' : '';
  1113. return '' + prefix + rule.key + '-' + jssCounter + '-' + ruleCounter;
  1114. };
  1115. };
  1116. /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
  1117. /***/ }),
  1118. /* 20 */
  1119. /***/ (function(module, exports, __webpack_require__) {
  1120. 'use strict';
  1121. Object.defineProperty(exports, "__esModule", {
  1122. value: true
  1123. });
  1124. var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
  1125. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1126. var _linkRule = __webpack_require__(17);
  1127. var _linkRule2 = _interopRequireDefault(_linkRule);
  1128. var _RuleList = __webpack_require__(6);
  1129. var _RuleList2 = _interopRequireDefault(_RuleList);
  1130. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1131. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1132. var StyleSheet = function () {
  1133. function StyleSheet(styles, options) {
  1134. _classCallCheck(this, StyleSheet);
  1135. this.attached = false;
  1136. this.deployed = false;
  1137. this.linked = false;
  1138. this.classes = {};
  1139. this.options = _extends({}, options, {
  1140. sheet: this,
  1141. parent: this,
  1142. classes: this.classes
  1143. });
  1144. this.renderer = new options.Renderer(this);
  1145. this.rules = new _RuleList2['default'](this.options);
  1146. for (var name in styles) {
  1147. this.rules.add(name, styles[name]);
  1148. }
  1149. this.rules.process();
  1150. }
  1151. /**
  1152. * Attach renderable to the render tree.
  1153. */
  1154. _createClass(StyleSheet, [{
  1155. key: 'attach',
  1156. value: function attach() {
  1157. if (this.attached) return this;
  1158. if (!this.deployed) this.deploy();
  1159. this.renderer.attach();
  1160. if (!this.linked && this.options.link) this.link();
  1161. this.attached = true;
  1162. return this;
  1163. }
  1164. /**
  1165. * Remove renderable from render tree.
  1166. */
  1167. }, {
  1168. key: 'detach',
  1169. value: function detach() {
  1170. if (!this.attached) return this;
  1171. this.renderer.detach();
  1172. this.attached = false;
  1173. return this;
  1174. }
  1175. /**
  1176. * Add a rule to the current stylesheet.
  1177. * Will insert a rule also after the stylesheet has been rendered first time.
  1178. */
  1179. }, {
  1180. key: 'addRule',
  1181. value: function addRule(name, decl, options) {
  1182. var queue = this.queue;
  1183. // Plugins can create rules.
  1184. // In order to preserve the right order, we need to queue all `.addRule` calls,
  1185. // which happen after the first `rules.add()` call.
  1186. if (this.attached && !queue) this.queue = [];
  1187. var rule = this.rules.add(name, decl, options);
  1188. this.options.jss.plugins.onProcessRule(rule);
  1189. if (this.attached) {
  1190. if (!this.deployed) return rule;
  1191. // Don't insert rule directly if there is no stringified version yet.
  1192. // It will be inserted all together when .attach is called.
  1193. if (queue) queue.push(rule);else {
  1194. this.insertRule(rule);
  1195. if (this.queue) {
  1196. this.queue.forEach(this.insertRule, this);
  1197. this.queue = undefined;
  1198. }
  1199. }
  1200. return rule;
  1201. }
  1202. // We can't add rules to a detached style node.
  1203. // We will redeploy the sheet once user will attach it.
  1204. this.deployed = false;
  1205. return rule;
  1206. }
  1207. /**
  1208. * Insert rule into the StyleSheet
  1209. */
  1210. }, {
  1211. key: 'insertRule',
  1212. value: function insertRule(rule) {
  1213. var renderable = this.renderer.insertRule(rule);
  1214. if (renderable && this.options.link) (0, _linkRule2['default'])(rule, renderable);
  1215. }
  1216. /**
  1217. * Create and add rules.
  1218. * Will render also after Style Sheet was rendered the first time.
  1219. */
  1220. }, {
  1221. key: 'addRules',
  1222. value: function addRules(styles, options) {
  1223. var added = [];
  1224. for (var name in styles) {
  1225. added.push(this.addRule(name, styles[name], options));
  1226. }
  1227. return added;
  1228. }
  1229. /**
  1230. * Get a rule by name.
  1231. */
  1232. }, {
  1233. key: 'getRule',
  1234. value: function getRule(name) {
  1235. return this.rules.get(name);
  1236. }
  1237. /**
  1238. * Delete a rule by name.
  1239. * Returns `true`: if rule has been deleted from the DOM.
  1240. */
  1241. }, {
  1242. key: 'deleteRule',
  1243. value: function deleteRule(name) {
  1244. var rule = this.rules.get(name);
  1245. if (!rule) return false;
  1246. this.rules.remove(rule);
  1247. if (this.attached && rule.renderable) {
  1248. return this.renderer.deleteRule(rule.renderable);
  1249. }
  1250. return true;
  1251. }
  1252. /**
  1253. * Get index of a rule.
  1254. */
  1255. }, {
  1256. key: 'indexOf',
  1257. value: function indexOf(rule) {
  1258. return this.rules.indexOf(rule);
  1259. }
  1260. /**
  1261. * Deploy pure CSS string to a renderable.
  1262. */
  1263. }, {
  1264. key: 'deploy',
  1265. value: function deploy() {
  1266. this.renderer.deploy();
  1267. this.deployed = true;
  1268. return this;
  1269. }
  1270. /**
  1271. * Link renderable CSS rules from sheet with their corresponding models.
  1272. */
  1273. }, {
  1274. key: 'link',
  1275. value: function link() {
  1276. var cssRules = this.renderer.getRules();
  1277. // Is undefined when VirtualRenderer is used.
  1278. if (cssRules) this.rules.link(cssRules);
  1279. this.linked = true;
  1280. return this;
  1281. }
  1282. /**
  1283. * Update the function values with a new data.
  1284. */
  1285. }, {
  1286. key: 'update',
  1287. value: function update(name, data) {
  1288. this.rules.update(name, data);
  1289. return this;
  1290. }
  1291. /**
  1292. * Convert rules to a CSS string.
  1293. */
  1294. }, {
  1295. key: 'toString',
  1296. value: function toString(options) {
  1297. return this.rules.toString(options);
  1298. }
  1299. }]);
  1300. return StyleSheet;
  1301. }();
  1302. exports['default'] = StyleSheet;
  1303. /***/ }),
  1304. /* 21 */
  1305. /***/ (function(module, exports, __webpack_require__) {
  1306. 'use strict';
  1307. Object.defineProperty(exports, "__esModule", {
  1308. value: true
  1309. });
  1310. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  1311. var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
  1312. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1313. var _isInBrowser = __webpack_require__(22);
  1314. var _isInBrowser2 = _interopRequireDefault(_isInBrowser);
  1315. var _StyleSheet = __webpack_require__(20);
  1316. var _StyleSheet2 = _interopRequireDefault(_StyleSheet);
  1317. var _PluginsRegistry = __webpack_require__(23);
  1318. var _PluginsRegistry2 = _interopRequireDefault(_PluginsRegistry);
  1319. var _rules = __webpack_require__(24);
  1320. var _rules2 = _interopRequireDefault(_rules);
  1321. var _observables = __webpack_require__(30);
  1322. var _observables2 = _interopRequireDefault(_observables);
  1323. var _sheets = __webpack_require__(18);
  1324. var _sheets2 = _interopRequireDefault(_sheets);
  1325. var _StyleRule = __webpack_require__(8);
  1326. var _StyleRule2 = _interopRequireDefault(_StyleRule);
  1327. var _createGenerateClassName = __webpack_require__(19);
  1328. var _createGenerateClassName2 = _interopRequireDefault(_createGenerateClassName);
  1329. var _createRule2 = __webpack_require__(7);
  1330. var _createRule3 = _interopRequireDefault(_createRule2);
  1331. var _DomRenderer = __webpack_require__(31);
  1332. var _DomRenderer2 = _interopRequireDefault(_DomRenderer);
  1333. var _VirtualRenderer = __webpack_require__(32);
  1334. var _VirtualRenderer2 = _interopRequireDefault(_VirtualRenderer);
  1335. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1336. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1337. var defaultPlugins = _rules2['default'].concat([_observables2['default']]);
  1338. var Jss = function () {
  1339. function Jss(options) {
  1340. _classCallCheck(this, Jss);
  1341. this.version = "9.0.0";
  1342. this.plugins = new _PluginsRegistry2['default']();
  1343. this.options = {
  1344. createGenerateClassName: _createGenerateClassName2['default'],
  1345. Renderer: _isInBrowser2['default'] ? _DomRenderer2['default'] : _VirtualRenderer2['default'],
  1346. plugins: []
  1347. };
  1348. this.generateClassName = (0, _createGenerateClassName2['default'])();
  1349. // eslint-disable-next-line prefer-spread
  1350. this.use.apply(this, defaultPlugins);
  1351. this.setup(options);
  1352. }
  1353. _createClass(Jss, [{
  1354. key: 'setup',
  1355. value: function setup() {
  1356. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  1357. if (options.createGenerateClassName) {
  1358. this.options.createGenerateClassName = options.createGenerateClassName;
  1359. // $FlowFixMe
  1360. this.generateClassName = options.createGenerateClassName();
  1361. }
  1362. if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;
  1363. if (options.virtual || options.Renderer) {
  1364. this.options.Renderer = options.Renderer || (options.virtual ? _VirtualRenderer2['default'] : _DomRenderer2['default']);
  1365. }
  1366. // eslint-disable-next-line prefer-spread
  1367. if (options.plugins) this.use.apply(this, options.plugins);
  1368. return this;
  1369. }
  1370. /**
  1371. * Create a Style Sheet.
  1372. */
  1373. }, {
  1374. key: 'createStyleSheet',
  1375. value: function createStyleSheet(styles) {
  1376. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  1377. var index = options.index;
  1378. if (typeof index !== 'number') {
  1379. index = _sheets2['default'].index === 0 ? 0 : _sheets2['default'].index + 1;
  1380. }
  1381. var sheet = new _StyleSheet2['default'](styles, _extends({}, options, {
  1382. jss: this,
  1383. generateClassName: options.generateClassName || this.generateClassName,
  1384. insertionPoint: this.options.insertionPoint,
  1385. Renderer: this.options.Renderer,
  1386. index: index
  1387. }));
  1388. this.plugins.onProcessSheet(sheet);
  1389. return sheet;
  1390. }
  1391. /**
  1392. * Detach the Style Sheet and remove it from the registry.
  1393. */
  1394. }, {
  1395. key: 'removeStyleSheet',
  1396. value: function removeStyleSheet(sheet) {
  1397. sheet.detach();
  1398. _sheets2['default'].remove(sheet);
  1399. return this;
  1400. }
  1401. /**
  1402. * Create a rule without a Style Sheet.
  1403. */
  1404. }, {
  1405. key: 'createRule',
  1406. value: function createRule(name) {
  1407. var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  1408. var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  1409. // Enable rule without name for inline styles.
  1410. if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
  1411. options = style;
  1412. style = name;
  1413. name = undefined;
  1414. }
  1415. // Cast from RuleFactoryOptions to RuleOptions
  1416. // https://stackoverflow.com/questions/41328728/force-casting-in-flow
  1417. var ruleOptions = options;
  1418. ruleOptions.jss = this;
  1419. ruleOptions.Renderer = this.options.Renderer;
  1420. if (!ruleOptions.generateClassName) ruleOptions.generateClassName = this.generateClassName;
  1421. if (!ruleOptions.classes) ruleOptions.classes = {};
  1422. var rule = (0, _createRule3['default'])(name, style, ruleOptions);
  1423. if (!ruleOptions.selector && rule instanceof _StyleRule2['default']) {
  1424. rule.selector = '.' + ruleOptions.generateClassName(rule);
  1425. }
  1426. this.plugins.onProcessRule(rule);
  1427. return rule;
  1428. }
  1429. /**
  1430. * Register plugin. Passed function will be invoked with a rule instance.
  1431. */
  1432. }, {
  1433. key: 'use',
  1434. value: function use() {
  1435. var _this = this;
  1436. for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {
  1437. plugins[_key] = arguments[_key];
  1438. }
  1439. plugins.forEach(function (plugin) {
  1440. // Avoids applying same plugin twice, at least based on ref.
  1441. if (_this.options.plugins.indexOf(plugin) === -1) {
  1442. _this.options.plugins.push(plugin);
  1443. _this.plugins.use(plugin);
  1444. }
  1445. });
  1446. return this;
  1447. }
  1448. }]);
  1449. return Jss;
  1450. }();
  1451. exports['default'] = Jss;
  1452. /***/ }),
  1453. /* 22 */
  1454. /***/ (function(module, exports) {
  1455. "use strict";
  1456. Object.defineProperty(exports, "__esModule", {
  1457. value: true
  1458. });
  1459. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  1460. var isBrowser = exports.isBrowser = (typeof window === "undefined" ? "undefined" : _typeof(window)) === "object" && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && document.nodeType === 9;
  1461. exports.default = isBrowser;
  1462. /***/ }),
  1463. /* 23 */
  1464. /***/ (function(module, exports, __webpack_require__) {
  1465. 'use strict';
  1466. Object.defineProperty(exports, "__esModule", {
  1467. value: true
  1468. });
  1469. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1470. var _warning = __webpack_require__(5);
  1471. var _warning2 = _interopRequireDefault(_warning);
  1472. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1473. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1474. var PluginsRegistry = function () {
  1475. function PluginsRegistry() {
  1476. _classCallCheck(this, PluginsRegistry);
  1477. this.hooks = {
  1478. onCreateRule: [],
  1479. onProcessRule: [],
  1480. onProcessStyle: [],
  1481. onProcessSheet: [],
  1482. onChangeValue: []
  1483. /**
  1484. * Call `onCreateRule` hooks and return an object if returned by a hook.
  1485. */
  1486. };
  1487. }
  1488. _createClass(PluginsRegistry, [{
  1489. key: 'onCreateRule',
  1490. value: function onCreateRule(name, decl, options) {
  1491. for (var i = 0; i < this.hooks.onCreateRule.length; i++) {
  1492. var rule = this.hooks.onCreateRule[i](name, decl, options);
  1493. if (rule) return rule;
  1494. }
  1495. return null;
  1496. }
  1497. /**
  1498. * Call `onProcessRule` hooks.
  1499. */
  1500. }, {
  1501. key: 'onProcessRule',
  1502. value: function onProcessRule(rule) {
  1503. if (rule.isProcessed) return;
  1504. var sheet = rule.options.sheet;
  1505. for (var i = 0; i < this.hooks.onProcessRule.length; i++) {
  1506. this.hooks.onProcessRule[i](rule, sheet);
  1507. }
  1508. // $FlowFixMe
  1509. if (rule.style) this.onProcessStyle(rule.style, rule, sheet);
  1510. rule.isProcessed = true;
  1511. }
  1512. /**
  1513. * Call `onProcessStyle` hooks.
  1514. */
  1515. }, {
  1516. key: 'onProcessStyle',
  1517. value: function onProcessStyle(style, rule, sheet) {
  1518. var nextStyle = style;
  1519. for (var i = 0; i < this.hooks.onProcessStyle.length; i++) {
  1520. nextStyle = this.hooks.onProcessStyle[i](nextStyle, rule, sheet);
  1521. // $FlowFixMe
  1522. rule.style = nextStyle;
  1523. }
  1524. }
  1525. /**
  1526. * Call `onProcessSheet` hooks.
  1527. */
  1528. }, {
  1529. key: 'onProcessSheet',
  1530. value: function onProcessSheet(sheet) {
  1531. for (var i = 0; i < this.hooks.onProcessSheet.length; i++) {
  1532. this.hooks.onProcessSheet[i](sheet);
  1533. }
  1534. }
  1535. /**
  1536. * Call `onChangeValue` hooks.
  1537. */
  1538. }, {
  1539. key: 'onChangeValue',
  1540. value: function onChangeValue(value, prop, rule) {
  1541. var processedValue = value;
  1542. for (var i = 0; i < this.hooks.onChangeValue.length; i++) {
  1543. processedValue = this.hooks.onChangeValue[i](processedValue, prop, rule);
  1544. }
  1545. return processedValue;
  1546. }
  1547. /**
  1548. * Register a plugin.
  1549. * If function is passed, it is a shortcut for `{onProcessRule}`.
  1550. */
  1551. }, {
  1552. key: 'use',
  1553. value: function use(plugin) {
  1554. for (var name in plugin) {
  1555. if (this.hooks[name]) this.hooks[name].push(plugin[name]);else (0, _warning2['default'])(false, '[JSS] Unknown hook "%s".', name);
  1556. }
  1557. }
  1558. }]);
  1559. return PluginsRegistry;
  1560. }();
  1561. exports['default'] = PluginsRegistry;
  1562. /***/ }),
  1563. /* 24 */
  1564. /***/ (function(module, exports, __webpack_require__) {
  1565. 'use strict';
  1566. Object.defineProperty(exports, "__esModule", {
  1567. value: true
  1568. });
  1569. var _SimpleRule = __webpack_require__(25);
  1570. var _SimpleRule2 = _interopRequireDefault(_SimpleRule);
  1571. var _KeyframesRule = __webpack_require__(26);
  1572. var _KeyframesRule2 = _interopRequireDefault(_KeyframesRule);
  1573. var _ConditionalRule = __webpack_require__(27);
  1574. var _ConditionalRule2 = _interopRequireDefault(_ConditionalRule);
  1575. var _FontFaceRule = __webpack_require__(28);
  1576. var _FontFaceRule2 = _interopRequireDefault(_FontFaceRule);
  1577. var _ViewportRule = __webpack_require__(29);
  1578. var _ViewportRule2 = _interopRequireDefault(_ViewportRule);
  1579. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1580. var classes = {
  1581. '@charset': _SimpleRule2['default'],
  1582. '@import': _SimpleRule2['default'],
  1583. '@namespace': _SimpleRule2['default'],
  1584. '@keyframes': _KeyframesRule2['default'],
  1585. '@media': _ConditionalRule2['default'],
  1586. '@supports': _ConditionalRule2['default'],
  1587. '@font-face': _FontFaceRule2['default'],
  1588. '@viewport': _ViewportRule2['default'],
  1589. '@-ms-viewport': _ViewportRule2['default']
  1590. /**
  1591. * Generate plugins which will register all rules.
  1592. */
  1593. };
  1594. exports['default'] = Object.keys(classes).map(function (key) {
  1595. // https://jsperf.com/indexof-vs-substr-vs-regex-at-the-beginning-3
  1596. var re = new RegExp('^' + key);
  1597. var onCreateRule = function onCreateRule(name, decl, options) {
  1598. return re.test(name) ? new classes[key](name, decl, options) : null;
  1599. };
  1600. return { onCreateRule: onCreateRule };
  1601. });
  1602. /***/ }),
  1603. /* 25 */
  1604. /***/ (function(module, exports) {
  1605. 'use strict';
  1606. Object.defineProperty(exports, "__esModule", {
  1607. value: true
  1608. });
  1609. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1610. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1611. var SimpleRule = function () {
  1612. function SimpleRule(key, value, options) {
  1613. _classCallCheck(this, SimpleRule);
  1614. this.type = 'simple';
  1615. this.isProcessed = false;
  1616. this.key = key;
  1617. this.value = value;
  1618. this.options = options;
  1619. }
  1620. /**
  1621. * Generates a CSS string.
  1622. */
  1623. // eslint-disable-next-line no-unused-vars
  1624. _createClass(SimpleRule, [{
  1625. key: 'toString',
  1626. value: function toString(options) {
  1627. if (Array.isArray(this.value)) {
  1628. var str = '';
  1629. for (var index = 0; index < this.value.length; index++) {
  1630. str += this.key + ' ' + this.value[index] + ';';
  1631. if (this.value[index + 1]) str += '\n';
  1632. }
  1633. return str;
  1634. }
  1635. return this.key + ' ' + this.value + ';';
  1636. }
  1637. }]);
  1638. return SimpleRule;
  1639. }();
  1640. exports['default'] = SimpleRule;
  1641. /***/ }),
  1642. /* 26 */
  1643. /***/ (function(module, exports, __webpack_require__) {
  1644. 'use strict';
  1645. Object.defineProperty(exports, "__esModule", {
  1646. value: true
  1647. });
  1648. var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
  1649. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1650. var _RuleList = __webpack_require__(6);
  1651. var _RuleList2 = _interopRequireDefault(_RuleList);
  1652. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1653. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1654. /**
  1655. * Rule for @keyframes
  1656. */
  1657. var KeyframesRule = function () {
  1658. function KeyframesRule(key, frames, options) {
  1659. _classCallCheck(this, KeyframesRule);
  1660. this.type = 'keyframes';
  1661. this.isProcessed = false;
  1662. this.key = key;
  1663. this.options = options;
  1664. this.rules = new _RuleList2['default'](_extends({}, options, { parent: this }));
  1665. for (var name in frames) {
  1666. this.rules.add(name, frames[name], _extends({}, this.options, {
  1667. parent: this,
  1668. selector: name
  1669. }));
  1670. }
  1671. this.rules.process();
  1672. }
  1673. /**
  1674. * Generates a CSS string.
  1675. */
  1676. _createClass(KeyframesRule, [{
  1677. key: 'toString',
  1678. value: function toString() {
  1679. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { indent: 1 };
  1680. var inner = this.rules.toString(options);
  1681. if (inner) inner += '\n';
  1682. return this.key + ' {\n' + inner + '}';
  1683. }
  1684. }]);
  1685. return KeyframesRule;
  1686. }();
  1687. exports['default'] = KeyframesRule;
  1688. /***/ }),
  1689. /* 27 */
  1690. /***/ (function(module, exports, __webpack_require__) {
  1691. 'use strict';
  1692. Object.defineProperty(exports, "__esModule", {
  1693. value: true
  1694. });
  1695. var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
  1696. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1697. var _RuleList = __webpack_require__(6);
  1698. var _RuleList2 = _interopRequireDefault(_RuleList);
  1699. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1700. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1701. /**
  1702. * Conditional rule for @media, @supports
  1703. */
  1704. var ConditionalRule = function () {
  1705. function ConditionalRule(key, styles, options) {
  1706. _classCallCheck(this, ConditionalRule);
  1707. this.type = 'conditional';
  1708. this.isProcessed = false;
  1709. this.key = key;
  1710. this.options = options;
  1711. this.rules = new _RuleList2['default'](_extends({}, options, { parent: this }));
  1712. for (var name in styles) {
  1713. this.rules.add(name, styles[name]);
  1714. }
  1715. this.rules.process();
  1716. }
  1717. /**
  1718. * Get a rule.
  1719. */
  1720. _createClass(ConditionalRule, [{
  1721. key: 'getRule',
  1722. value: function getRule(name) {
  1723. return this.rules.get(name);
  1724. }
  1725. /**
  1726. * Get index of a rule.
  1727. */
  1728. }, {
  1729. key: 'indexOf',
  1730. value: function indexOf(rule) {
  1731. return this.rules.indexOf(rule);
  1732. }
  1733. /**
  1734. * Create and register rule, run plugins.
  1735. */
  1736. }, {
  1737. key: 'addRule',
  1738. value: function addRule(name, style, options) {
  1739. var rule = this.rules.add(name, style, options);
  1740. this.options.jss.plugins.onProcessRule(rule);
  1741. return rule;
  1742. }
  1743. /**
  1744. * Generates a CSS string.
  1745. */
  1746. }, {
  1747. key: 'toString',
  1748. value: function toString() {
  1749. var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { indent: 1 };
  1750. var inner = this.rules.toString(options);
  1751. return inner ? this.key + ' {\n' + inner + '\n}' : '';
  1752. }
  1753. }]);
  1754. return ConditionalRule;
  1755. }();
  1756. exports['default'] = ConditionalRule;
  1757. /***/ }),
  1758. /* 28 */
  1759. /***/ (function(module, exports, __webpack_require__) {
  1760. 'use strict';
  1761. Object.defineProperty(exports, "__esModule", {
  1762. value: true
  1763. });
  1764. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1765. var _toCss = __webpack_require__(9);
  1766. var _toCss2 = _interopRequireDefault(_toCss);
  1767. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1768. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1769. var FontFaceRule = function () {
  1770. function FontFaceRule(key, style, options) {
  1771. _classCallCheck(this, FontFaceRule);
  1772. this.type = 'font-face';
  1773. this.isProcessed = false;
  1774. this.key = key;
  1775. this.style = style;
  1776. this.options = options;
  1777. }
  1778. /**
  1779. * Generates a CSS string.
  1780. */
  1781. _createClass(FontFaceRule, [{
  1782. key: 'toString',
  1783. value: function toString(options) {
  1784. if (Array.isArray(this.style)) {
  1785. var str = '';
  1786. for (var index = 0; index < this.style.length; index++) {
  1787. str += (0, _toCss2['default'])(this.key, this.style[index]);
  1788. if (this.style[index + 1]) str += '\n';
  1789. }
  1790. return str;
  1791. }
  1792. return (0, _toCss2['default'])(this.key, this.style, options);
  1793. }
  1794. }]);
  1795. return FontFaceRule;
  1796. }();
  1797. exports['default'] = FontFaceRule;
  1798. /***/ }),
  1799. /* 29 */
  1800. /***/ (function(module, exports, __webpack_require__) {
  1801. 'use strict';
  1802. Object.defineProperty(exports, "__esModule", {
  1803. value: true
  1804. });
  1805. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1806. var _toCss = __webpack_require__(9);
  1807. var _toCss2 = _interopRequireDefault(_toCss);
  1808. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1809. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1810. var ViewportRule = function () {
  1811. function ViewportRule(key, style, options) {
  1812. _classCallCheck(this, ViewportRule);
  1813. this.type = 'viewport';
  1814. this.isProcessed = false;
  1815. this.key = key;
  1816. this.style = style;
  1817. this.options = options;
  1818. }
  1819. /**
  1820. * Generates a CSS string.
  1821. */
  1822. _createClass(ViewportRule, [{
  1823. key: 'toString',
  1824. value: function toString(options) {
  1825. return (0, _toCss2['default'])(this.key, this.style, options);
  1826. }
  1827. }]);
  1828. return ViewportRule;
  1829. }();
  1830. exports['default'] = ViewportRule;
  1831. /***/ }),
  1832. /* 30 */
  1833. /***/ (function(module, exports, __webpack_require__) {
  1834. 'use strict';
  1835. Object.defineProperty(exports, "__esModule", {
  1836. value: true
  1837. });
  1838. var _isObservable = __webpack_require__(12);
  1839. var _isObservable2 = _interopRequireDefault(_isObservable);
  1840. var _StyleRule = __webpack_require__(8);
  1841. var _StyleRule2 = _interopRequireDefault(_StyleRule);
  1842. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1843. exports['default'] = {
  1844. onProcessRule: function onProcessRule(rule) {
  1845. if (!(rule instanceof _StyleRule2['default'])) return;
  1846. var style = rule.style;
  1847. var _loop = function _loop(prop) {
  1848. var value = style[prop];
  1849. if (!(0, _isObservable2['default'])(value)) return 'continue';
  1850. value.subscribe({
  1851. next: function next(nextValue) {
  1852. // $FlowFixMe
  1853. rule.prop(prop, nextValue);
  1854. }
  1855. });
  1856. };
  1857. for (var prop in style) {
  1858. var _ret = _loop(prop);
  1859. if (_ret === 'continue') continue;
  1860. }
  1861. }
  1862. };
  1863. /***/ }),
  1864. /* 31 */
  1865. /***/ (function(module, exports, __webpack_require__) {
  1866. 'use strict';
  1867. Object.defineProperty(exports, "__esModule", {
  1868. value: true
  1869. });
  1870. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  1871. var _warning = __webpack_require__(5);
  1872. var _warning2 = _interopRequireDefault(_warning);
  1873. var _sheets = __webpack_require__(18);
  1874. var _sheets2 = _interopRequireDefault(_sheets);
  1875. var _StyleRule = __webpack_require__(8);
  1876. var _StyleRule2 = _interopRequireDefault(_StyleRule);
  1877. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  1878. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1879. /**
  1880. * Get a style property.
  1881. */
  1882. function getStyle(cssRule, prop) {
  1883. try {
  1884. return cssRule.style.getPropertyValue(prop);
  1885. } catch (err) {
  1886. // IE may throw if property is unknown.
  1887. return '';
  1888. }
  1889. }
  1890. /**
  1891. * Set a style property.
  1892. */
  1893. function setStyle(cssRule, prop, value) {
  1894. try {
  1895. cssRule.style.setProperty(prop, value);
  1896. } catch (err) {
  1897. // IE may throw if property is unknown.
  1898. return false;
  1899. }
  1900. return true;
  1901. }
  1902. var CSSRuleTypes = {
  1903. STYLE_RULE: 1,
  1904. KEYFRAMES_RULE: 7
  1905. /**
  1906. * Get the CSS Rule key.
  1907. */
  1908. };var getKey = function () {
  1909. var extractKey = function extractKey(cssText) {
  1910. var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  1911. return cssText.substr(from, cssText.indexOf('{') - 1);
  1912. };
  1913. return function (cssRule) {
  1914. if (cssRule.type === CSSRuleTypes.STYLE_RULE) return cssRule.selectorText;
  1915. if (cssRule.type === CSSRuleTypes.KEYFRAMES_RULE) {
  1916. var name = cssRule.name;
  1917. if (name) return '@keyframes ' + name;
  1918. // There is no rule.name in the following browsers:
  1919. // - IE 9
  1920. // - Safari 7.1.8
  1921. // - Mobile Safari 9.0.0
  1922. var cssText = cssRule.cssText;
  1923. return '@' + extractKey(cssText, cssText.indexOf('keyframes'));
  1924. }
  1925. // Conditionals.
  1926. return extractKey(cssRule.cssText);
  1927. };
  1928. }();
  1929. /**
  1930. * Set the selector.
  1931. */
  1932. function setSelector(cssRule, selectorText) {
  1933. cssRule.selectorText = selectorText;
  1934. // Return false if setter was not successful.
  1935. // Currently works in chrome only.
  1936. return cssRule.selectorText === selectorText;
  1937. }
  1938. /**
  1939. * Gets the `head` element upon the first call and caches it.
  1940. */
  1941. var getHead = function () {
  1942. var head = void 0;
  1943. return function () {
  1944. if (!head) head = document.head || document.getElementsByTagName('head')[0];
  1945. return head;
  1946. };
  1947. }();
  1948. /**
  1949. * Gets a map of rule keys, where the property is an unescaped key and value
  1950. * is a potentially escaped one.
  1951. * It is used to identify CSS rules and the corresponding JSS rules. As an identifier
  1952. * for CSSStyleRule we normally use `selectorText`. Though if original selector text
  1953. * contains escaped code points e.g. `:not(#\\20)`, CSSOM will compile it to `:not(# )`
  1954. * and so CSS rule's `selectorText` won't match JSS rule selector.
  1955. *
  1956. * https://www.w3.org/International/questions/qa-escapes#cssescapes
  1957. */
  1958. var getUnescapedKeysMap = function () {
  1959. var style = void 0;
  1960. var isAttached = false;
  1961. return function (rules) {
  1962. var map = {};
  1963. // https://github.com/facebook/flow/issues/2696
  1964. if (!style) style = document.createElement('style');
  1965. for (var i = 0; i < rules.length; i++) {
  1966. var rule = rules[i];
  1967. if (!(rule instanceof _StyleRule2['default'])) continue;
  1968. var selector = rule.selector;
  1969. // Only unescape selector over CSSOM if it contains a back slash.
  1970. if (selector && selector.indexOf('\\') !== -1) {
  1971. // Lazilly attach when needed.
  1972. if (!isAttached) {
  1973. getHead().appendChild(style);
  1974. isAttached = true;
  1975. }
  1976. style.textContent = selector + ' {}';
  1977. var _style = style,
  1978. sheet = _style.sheet;
  1979. if (sheet) {
  1980. var cssRules = sheet.cssRules;
  1981. if (cssRules) map[cssRules[0].selectorText] = rule.key;
  1982. }
  1983. }
  1984. }
  1985. if (isAttached) {
  1986. getHead().removeChild(style);
  1987. isAttached = false;
  1988. }
  1989. return map;
  1990. };
  1991. }();
  1992. /**
  1993. * Find attached sheet with an index higher than the passed one.
  1994. */
  1995. function findHigherSheet(registry, options) {
  1996. for (var i = 0; i < registry.length; i++) {
  1997. var sheet = registry[i];
  1998. if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {
  1999. return sheet;
  2000. }
  2001. }
  2002. return null;
  2003. }
  2004. /**
  2005. * Find attached sheet with the highest index.
  2006. */
  2007. function findHighestSheet(registry, options) {
  2008. for (var i = registry.length - 1; i >= 0; i--) {
  2009. var sheet = registry[i];
  2010. if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {
  2011. return sheet;
  2012. }
  2013. }
  2014. return null;
  2015. }
  2016. /**
  2017. * Find a comment with "jss" inside.
  2018. */
  2019. function findCommentNode(text) {
  2020. var head = getHead();
  2021. for (var i = 0; i < head.childNodes.length; i++) {
  2022. var node = head.childNodes[i];
  2023. if (node.nodeType === 8 && node.nodeValue.trim() === text) {
  2024. return node;
  2025. }
  2026. }
  2027. return null;
  2028. }
  2029. /**
  2030. * Find a node before which we can insert the sheet.
  2031. */
  2032. function findPrevNode(options) {
  2033. var registry = _sheets2['default'].registry;
  2034. if (registry.length > 0) {
  2035. // Try to insert before the next higher sheet.
  2036. var sheet = findHigherSheet(registry, options);
  2037. if (sheet) return sheet.renderer.element;
  2038. // Otherwise insert after the last attached.
  2039. sheet = findHighestSheet(registry, options);
  2040. if (sheet) return sheet.renderer.element.nextElementSibling;
  2041. }
  2042. // Try to find a comment placeholder if registry is empty.
  2043. var insertionPoint = options.insertionPoint;
  2044. if (insertionPoint && typeof insertionPoint === 'string') {
  2045. var comment = findCommentNode(insertionPoint);
  2046. if (comment) return comment.nextSibling;
  2047. // If user specifies an insertion point and it can't be found in the document -
  2048. // bad specificity issues may appear.
  2049. (0, _warning2['default'])(insertionPoint === 'jss', '[JSS] Insertion point "%s" not found.', insertionPoint);
  2050. }
  2051. return null;
  2052. }
  2053. /**
  2054. * Insert style element into the DOM.
  2055. */
  2056. function insertStyle(style, options) {
  2057. var insertionPoint = options.insertionPoint;
  2058. var prevNode = findPrevNode(options);
  2059. if (prevNode) {
  2060. var parentNode = prevNode.parentNode;
  2061. if (parentNode) parentNode.insertBefore(style, prevNode);
  2062. return;
  2063. }
  2064. // Works with iframes and any node types.
  2065. if (insertionPoint && typeof insertionPoint.nodeType === 'number') {
  2066. // https://stackoverflow.com/questions/41328728/force-casting-in-flow
  2067. var insertionPointElement = insertionPoint;
  2068. var _parentNode = insertionPointElement.parentNode;
  2069. if (_parentNode) _parentNode.insertBefore(style, insertionPointElement.nextSibling);else (0, _warning2['default'])(false, '[JSS] Insertion point is not in the DOM.');
  2070. return;
  2071. }
  2072. getHead().insertBefore(style, prevNode);
  2073. }
  2074. var DomRenderer = function () {
  2075. function DomRenderer(sheet) {
  2076. _classCallCheck(this, DomRenderer);
  2077. this.getStyle = getStyle;
  2078. this.setStyle = setStyle;
  2079. this.setSelector = setSelector;
  2080. this.getKey = getKey;
  2081. this.getUnescapedKeysMap = getUnescapedKeysMap;
  2082. this.hasInsertedRules = false;
  2083. // There is no sheet when the renderer is used from a standalone StyleRule.
  2084. if (sheet) _sheets2['default'].add(sheet);
  2085. this.sheet = sheet;
  2086. var _ref = this.sheet ? this.sheet.options : {},
  2087. media = _ref.media,
  2088. meta = _ref.meta,
  2089. element = _ref.element;
  2090. this.element = element || document.createElement('style');
  2091. this.element.type = 'text/css';
  2092. this.element.setAttribute('data-jss', '');
  2093. if (media) this.element.setAttribute('media', media);
  2094. if (meta) this.element.setAttribute('data-meta', meta);
  2095. }
  2096. /**
  2097. * Insert style element into render tree.
  2098. */
  2099. // HTMLStyleElement needs fixing https://github.com/facebook/flow/issues/2696
  2100. _createClass(DomRenderer, [{
  2101. key: 'attach',
  2102. value: function attach() {
  2103. // In the case the element node is external and it is already in the DOM.
  2104. if (this.element.parentNode || !this.sheet) return;
  2105. // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`
  2106. // browsers remove those rules.
  2107. // TODO figure out if its a bug and if it is known.
  2108. // Workaround is to redeploy the sheet before attaching as a string.
  2109. if (this.hasInsertedRules) {
  2110. this.deploy();
  2111. this.hasInsertedRules = false;
  2112. }
  2113. insertStyle(this.element, this.sheet.options);
  2114. }
  2115. /**
  2116. * Remove style element from render tree.
  2117. */
  2118. }, {
  2119. key: 'detach',
  2120. value: function detach() {
  2121. this.element.parentNode.removeChild(this.element);
  2122. }
  2123. /**
  2124. * Inject CSS string into element.
  2125. */
  2126. }, {
  2127. key: 'deploy',
  2128. value: function deploy() {
  2129. if (!this.sheet) return;
  2130. this.element.textContent = '\n' + this.sheet.toString() + '\n';
  2131. }
  2132. /**
  2133. * Insert a rule into element.
  2134. */
  2135. }, {
  2136. key: 'insertRule',
  2137. value: function insertRule(rule, index) {
  2138. var sheet = this.element.sheet;
  2139. var cssRules = sheet.cssRules;
  2140. var str = rule.toString();
  2141. if (!index) index = cssRules.length;
  2142. if (!str) return false;
  2143. try {
  2144. sheet.insertRule(str, index);
  2145. } catch (err) {
  2146. (0, _warning2['default'])(false, '[JSS] Can not insert an unsupported rule \n\r%s', rule);
  2147. return false;
  2148. }
  2149. this.hasInsertedRules = true;
  2150. return cssRules[index];
  2151. }
  2152. /**
  2153. * Delete a rule.
  2154. */
  2155. }, {
  2156. key: 'deleteRule',
  2157. value: function deleteRule(cssRule) {
  2158. var sheet = this.element.sheet;
  2159. var index = this.indexOf(cssRule);
  2160. if (index === -1) return false;
  2161. sheet.deleteRule(index);
  2162. return true;
  2163. }
  2164. /**
  2165. * Get index of a CSS Rule.
  2166. */
  2167. }, {
  2168. key: 'indexOf',
  2169. value: function indexOf(cssRule) {
  2170. var cssRules = this.element.sheet.cssRules;
  2171. for (var _index = 0; _index < cssRules.length; _index++) {
  2172. if (cssRule === cssRules[_index]) return _index;
  2173. }
  2174. return -1;
  2175. }
  2176. /**
  2177. * Generate a new CSS rule and replace the existing one.
  2178. */
  2179. }, {
  2180. key: 'replaceRule',
  2181. value: function replaceRule(cssRule, rule) {
  2182. var index = this.indexOf(cssRule);
  2183. var newCssRule = this.insertRule(rule, index);
  2184. this.element.sheet.deleteRule(index);
  2185. return newCssRule;
  2186. }
  2187. /**
  2188. * Get all rules elements.
  2189. */
  2190. }, {
  2191. key: 'getRules',
  2192. value: function getRules() {
  2193. return this.element.sheet.cssRules;
  2194. }
  2195. }]);
  2196. return DomRenderer;
  2197. }();
  2198. exports['default'] = DomRenderer;
  2199. /***/ }),
  2200. /* 32 */
  2201. /***/ (function(module, exports) {
  2202. 'use strict';
  2203. Object.defineProperty(exports, "__esModule", {
  2204. value: true
  2205. });
  2206. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  2207. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2208. /* eslint-disable class-methods-use-this */
  2209. /**
  2210. * Rendering backend to do nothing in nodejs.
  2211. */
  2212. var VirtualRenderer = function () {
  2213. function VirtualRenderer() {
  2214. _classCallCheck(this, VirtualRenderer);
  2215. }
  2216. _createClass(VirtualRenderer, [{
  2217. key: 'setStyle',
  2218. value: function setStyle() {
  2219. return true;
  2220. }
  2221. }, {
  2222. key: 'getStyle',
  2223. value: function getStyle() {
  2224. return '';
  2225. }
  2226. }, {
  2227. key: 'setSelector',
  2228. value: function setSelector() {
  2229. return true;
  2230. }
  2231. }, {
  2232. key: 'getKey',
  2233. value: function getKey() {
  2234. return '';
  2235. }
  2236. }, {
  2237. key: 'attach',
  2238. value: function attach() {}
  2239. }, {
  2240. key: 'detach',
  2241. value: function detach() {}
  2242. }, {
  2243. key: 'deploy',
  2244. value: function deploy() {}
  2245. }, {
  2246. key: 'insertRule',
  2247. value: function insertRule() {
  2248. return false;
  2249. }
  2250. }, {
  2251. key: 'deleteRule',
  2252. value: function deleteRule() {
  2253. return true;
  2254. }
  2255. }, {
  2256. key: 'replaceRule',
  2257. value: function replaceRule() {
  2258. return false;
  2259. }
  2260. }, {
  2261. key: 'getRules',
  2262. value: function getRules() {}
  2263. }, {
  2264. key: 'indexOf',
  2265. value: function indexOf() {
  2266. return -1;
  2267. }
  2268. }]);
  2269. return VirtualRenderer;
  2270. }();
  2271. exports['default'] = VirtualRenderer;
  2272. /***/ })
  2273. /******/ ])
  2274. });
  2275. ;
  2276. //# sourceMappingURL=jss-global.js.map