plus-8.x-4.x-dev/js/Drupal.AssetManager.es6.js

js/Drupal.AssetManager.es6.js
/**
 * @file
 * Drupal+ Asset Manager.
 */
(($, Drupal) => {
  'use strict';

  /**
   * @class AssetManager
   */
  class AssetManager {
    constructor() {
      this.css = Drupal.settings.ajaxPageState ? Drupal.settings.ajaxPageState.css : {};
      this.js = Drupal.settings.ajaxPageState ? Drupal.settings.ajaxPageState.js : {};
      this.library = Drupal.settings.ajaxPageState ? Drupal.settings.ajaxPageState.library : {};
      this.modules = {};
    }

    static getAssetType(data) {
      let type = 'js';

      // Detect libraries.
      if (/^@[\w]+/.test(data)) {
        type = 'library';
        data = data.replace(/^@/, '');
      }
      else {
        const match = data.replace(/\?.*/, '').replace(/#.*$/, '').match(/^(css|js):\/\/|\.(css|js)$/);
        if (match) {
          type = match[1] || match[2] || 'js';
        }
        data = data.replace(/^(css|js):\/\//, '');
      }
      return [type, data];
    }

    add(type, data, options) {
      options = options || {};

      // Extract the type from data (e.g. passed a single string).
      if (typeof type === 'string' && typeof data !== 'string') {
        [type, data] = AssetManager.getAssetType(data);
      }

      return new Promise((resolve, reject) => {

      });

      // Handle libraries or URIs that mimic Drupal's PHP like stream wrappers.
      // if (type === 'library' && /^(module|theme|profile|public|private|temp):\/\//.test(data)) {
      // }
      //
      // switch (type) {
      // }
    }
  }


  // Wrap the rest of the file in a DOM ready handler.
  document.addEventListener('DOMContentLoaded', function () {
    // Don't export the AssetManager class globally. If this happened, any
    // script could invoke AssetManager.addToDom directly and bypass the
    // "management" part of this class. Instead create a new instance of the
    // class to ensure assets are properly managed. This class exposes its own
    // public APIs that can essentially do the same as the static method, but
    // maintaining a list of already loaded assets.
    Drupal.assets = new AssetManager();

    /**
     * Create an alias method for easily adding assets.
     *
     * @param {String} [type]
     *   The type of asset to add, e.g. "css", "js", or "library".
     * @param {String} data
     *   The data that will be added. If type is "css" or "js", then this should
     *   be the complete URI of the file to add.
     * @param {Object} [options = {}]
     *   Additional options to pass to the asset manager when adding the data.
     *
     * @return {Promise}
     *   A promise.
     */
    Drupal.add = (type, data, options) => this.proxy(Drupal.assets, 'add', [type, data, options]);
  });
})(window.jQuery, window.Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc