UNPKG

fela-dom

Version:

Fela package for working with the DOM

66 lines (49 loc) 1.81 kB
"use strict"; 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; } }; }