code: function () {
      var draw = this.el.components.draw;
      var selector = this.data.asset;
      var width = draw.data.width;
      var height = draw.data.height;
  
      if (this.rendering) {
        return;
      }
  
      this.rendering = true;
  
      var node = document.querySelector(selector);
  
      if (!node) {
        console.error('Could not find html element with selector "' + selector + '"');
        return;
      }
  
      if (!this.observer) {
        this.observer = new MutationObserver(function (mutations) {
          queueRender(node, width, height, function (canvas) {
            renderedCanvas = canvas;
            draw.render();
          });
        });
  
        var config = { attributes: true, childList: true, characterData: true, subtree: true };
        this.observer.observe(node, config);
      }
  
      queueRender(node, width, height, function (canvas) {
        renderedCanvas = canvas;
        draw.render();
      });
    }
docs: Called when component is attached and when component data changes.
  Generally modifies the entity based on the data.