|
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- 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; };
-
- 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; };
-
- 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; }; }();
-
- var _isInBrowser = require('is-in-browser');
-
- var _isInBrowser2 = _interopRequireDefault(_isInBrowser);
-
- var _StyleSheet = require('./StyleSheet');
-
- var _StyleSheet2 = _interopRequireDefault(_StyleSheet);
-
- var _PluginsRegistry = require('./PluginsRegistry');
-
- var _PluginsRegistry2 = _interopRequireDefault(_PluginsRegistry);
-
- var _rules = require('./plugins/rules');
-
- var _rules2 = _interopRequireDefault(_rules);
-
- var _observables = require('./plugins/observables');
-
- var _observables2 = _interopRequireDefault(_observables);
-
- var _functions = require('./plugins/functions');
-
- var _functions2 = _interopRequireDefault(_functions);
-
- var _sheets = require('./sheets');
-
- var _sheets2 = _interopRequireDefault(_sheets);
-
- var _StyleRule = require('./rules/StyleRule');
-
- var _StyleRule2 = _interopRequireDefault(_StyleRule);
-
- var _createGenerateClassName = require('./utils/createGenerateClassName');
-
- var _createGenerateClassName2 = _interopRequireDefault(_createGenerateClassName);
-
- var _createRule2 = require('./utils/createRule');
-
- var _createRule3 = _interopRequireDefault(_createRule2);
-
- var _DomRenderer = require('./renderers/DomRenderer');
-
- var _DomRenderer2 = _interopRequireDefault(_DomRenderer);
-
- var _VirtualRenderer = require('./renderers/VirtualRenderer');
-
- var _VirtualRenderer2 = _interopRequireDefault(_VirtualRenderer);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var defaultPlugins = _rules2['default'].concat([_observables2['default'], _functions2['default']]);
-
- var instanceCounter = 0;
-
- var Jss = function () {
- function Jss(options) {
- _classCallCheck(this, Jss);
-
- this.id = instanceCounter++;
- this.version = "9.8.7";
- this.plugins = new _PluginsRegistry2['default']();
- this.options = {
- createGenerateClassName: _createGenerateClassName2['default'],
- Renderer: _isInBrowser2['default'] ? _DomRenderer2['default'] : _VirtualRenderer2['default'],
- plugins: []
- };
- this.generateClassName = (0, _createGenerateClassName2['default'])();
-
- // eslint-disable-next-line prefer-spread
- this.use.apply(this, defaultPlugins);
- this.setup(options);
- }
-
- _createClass(Jss, [{
- key: 'setup',
- value: function setup() {
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- if (options.createGenerateClassName) {
- this.options.createGenerateClassName = options.createGenerateClassName;
- // $FlowFixMe
- this.generateClassName = options.createGenerateClassName();
- }
-
- if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;
- if (options.virtual || options.Renderer) {
- this.options.Renderer = options.Renderer || (options.virtual ? _VirtualRenderer2['default'] : _DomRenderer2['default']);
- }
-
- // eslint-disable-next-line prefer-spread
- if (options.plugins) this.use.apply(this, options.plugins);
-
- return this;
- }
-
- /**
- * Create a Style Sheet.
- */
-
- }, {
- key: 'createStyleSheet',
- value: function createStyleSheet(styles) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var index = options.index;
- if (typeof index !== 'number') {
- index = _sheets2['default'].index === 0 ? 0 : _sheets2['default'].index + 1;
- }
- var sheet = new _StyleSheet2['default'](styles, _extends({}, options, {
- jss: this,
- generateClassName: options.generateClassName || this.generateClassName,
- insertionPoint: this.options.insertionPoint,
- Renderer: this.options.Renderer,
- index: index
- }));
- this.plugins.onProcessSheet(sheet);
-
- return sheet;
- }
-
- /**
- * Detach the Style Sheet and remove it from the registry.
- */
-
- }, {
- key: 'removeStyleSheet',
- value: function removeStyleSheet(sheet) {
- sheet.detach();
- _sheets2['default'].remove(sheet);
- return this;
- }
-
- /**
- * Create a rule without a Style Sheet.
- */
-
- }, {
- key: 'createRule',
- value: function createRule(name) {
- var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- // Enable rule without name for inline styles.
- if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
- options = style;
- style = name;
- name = undefined;
- }
-
- // Cast from RuleFactoryOptions to RuleOptions
- // https://stackoverflow.com/questions/41328728/force-casting-in-flow
- var ruleOptions = options;
-
- ruleOptions.jss = this;
- ruleOptions.Renderer = this.options.Renderer;
- if (!ruleOptions.generateClassName) ruleOptions.generateClassName = this.generateClassName;
- if (!ruleOptions.classes) ruleOptions.classes = {};
- var rule = (0, _createRule3['default'])(name, style, ruleOptions);
-
- if (!ruleOptions.selector && rule instanceof _StyleRule2['default']) {
- rule.selector = '.' + ruleOptions.generateClassName(rule);
- }
-
- this.plugins.onProcessRule(rule);
-
- return rule;
- }
-
- /**
- * Register plugin. Passed function will be invoked with a rule instance.
- */
-
- }, {
- key: 'use',
- value: function use() {
- var _this = this;
-
- for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {
- plugins[_key] = arguments[_key];
- }
-
- plugins.forEach(function (plugin) {
- // Avoids applying same plugin twice, at least based on ref.
- if (_this.options.plugins.indexOf(plugin) === -1) {
- _this.options.plugins.push(plugin);
- _this.plugins.use(plugin);
- }
- });
-
- return this;
- }
- }]);
-
- return Jss;
- }();
-
- exports['default'] = Jss;
|