fela-dom
Version:
Fela package for working with the DOM
66 lines (49 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = createSubscription;
var _fastLoops = require("fast-loops");
var _felaUtils = require("fela-utils");
var _getNodeFromCache = _interopRequireDefault(require("./getNodeFromCache"));
var _insertRule = _interopRequireDefault(require("./insertRule"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/* eslint-disable consistent-return */
function createSubscription(renderer) {
var targetDocument = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
return function (change) {
if (change.type === _felaUtils.CLEAR_TYPE) {
(0, _fastLoops.objectEach)(renderer.nodes, function (node) {
return node.parentNode.removeChild(node);
});
renderer.nodes = {};
renderer.scoreIndex = {};
return;
}
var node = (0, _getNodeFromCache["default"])(change, renderer, targetDocument);
switch (change.type) {
case _felaUtils.KEYFRAME_TYPE:
if (node.textContent.indexOf(change.keyframe) === -1) {
node.textContent += change.keyframe;
}
break;
case _felaUtils.FONT_TYPE:
if (node.textContent.indexOf(change.fontFace) === -1) {
node.textContent += change.fontFace;
}
break;
case _felaUtils.STATIC_TYPE:
var css = change.selector ? (0, _felaUtils.generateCSSRule)(change.selector, change.css) : change.css;
if (node.textContent.indexOf(css) === -1) {
node.textContent += css;
}
break;
case _felaUtils.RULE_TYPE:
(0, _insertRule["default"])(change, renderer, node);
break;
default:
// TODO: warning
break;
}
};
}