initComponent(attrName, data, isDependency) {
    var component;
    var componentId;
    var componentInfo;
    var componentName;
    var isComponentDefined;
    componentInfo = _utils_index_js__WEBPACK_IMPORTED_MODULE_2__.split(attrName, MULTIPLE_COMPONENT_DELIMITER);
    componentName = componentInfo[0];
    componentId = componentInfo.length > 2 ? componentInfo.slice(1).join('__') : componentInfo[1];

    // Not a registered component.
    if (!_component_js__WEBPACK_IMPORTED_MODULE_1__.components[componentName]) {
      return;
    }

    // Component is not a dependency and is undefined.
    // If a component is a dependency, then it is okay to have no data.
    isComponentDefined = checkComponentDefined(this, attrName) || data !== undefined;
    if (!isComponentDefined && !isDependency) {
      return;
    }

    // Component already initialized.
    if (attrName in this.components) {
      return;
    }

    // Initialize dependencies first
    this.initComponentDependencies(componentName);

    // Initialize component
    component = new _component_js__WEBPACK_IMPORTED_MODULE_1__.components[componentName].Component(this, data, componentId);
    if (this.isPlaying) {
      component.play();
    }

    // Components are reflected in the DOM as attributes but the state is not shown
    // hence we set the attribute to empty string.
    // The flag justInitialized is for attributeChangedCallback to not overwrite
    // the component with the empty string.
    if (!this.hasAttribute(attrName)) {
      component.justInitialized = true;
      window.HTMLElement.prototype.setAttribute.call(this, attrName, '');
    }
    debug('Component initialized: %s', attrName);
  }
Initialize component.

@param {string} attrName - Attribute name associated to the component.
@param {object} data - Component data
@param {boolean} isDependency - True if the component is a dependency.