plus-8.x-4.x-dev/js/Drupal.Url.js

js/Drupal.Url.js
/**
* DO NOT EDIT THIS FILE.
* THIS FILE IS COMPILED AUTOMATICALLY FROM ITS ES6 SOURCE.
* @preserve
**/'use strict';

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

(function (Drupal) {
  'use strict';

  var elementUrlMap = new Map(Object.entries({
    code: new Set([window.HTMLAppletElement].filter(Boolean)),
    data: new Set([HTMLObjectElement].filter(Boolean)),
    href: new Set([HTMLAnchorElement, HTMLAreaElement, HTMLBaseElement, HTMLLinkElement].filter(Boolean)),
    src: new Set([HTMLAudioElement, HTMLEmbedElement, HTMLIFrameElement, HTMLImageElement, HTMLInputElement, HTMLScriptElement, HTMLSourceElement, HTMLTrackElement, HTMLVideoElement].filter(Boolean))
  }));

  var getElementUrl = function getElementUrl(element) {
    var url = null;
    elementUrlMap.forEach(function (elements, prop) {
      elements.forEach(function (value) {
        if (url === null && element instanceof value) {
          url = element[prop];
        }
      });
    });
    return url;
  };

  var getElementMimeType = function getElementMimeType(element) {
    var mimeType = null;
    if (element instanceof HTMLAnchorElement) {
      mimeType = element.type;
    } else if (element instanceof HTMLFormElement) {
      mimeType = element.enctype;
    }
    return mimeType && mimeType.split(/;\s*/).filter(Boolean) || [];
  };

  var _ = {
    absolute: new WeakMap(),
    basename: new WeakMap(),
    element: new WeakMap(),
    extension: new WeakMap(),
    filename: new WeakMap(),
    hash: new WeakMap(),
    langcode: new WeakMap(),
    mimeType: new WeakMap(),
    origin: new WeakMap(),
    path: new WeakMap(),
    protocol: new WeakMap(),
    query: new WeakMap(),
    relation: new WeakMap(),
    relative: new WeakMap(),
    size: new WeakMap(),
    title: new WeakMap(),
    uid: new WeakMap(),
    url: new WeakMap()
  };

  var Url = function () {
    function Url() {
      _classCallCheck(this, Url);

      _.absolute.set(this, null);
      _.basename.set(this, null);
      _.element.set(this, null);
      _.extension.set(this, null);
      _.filename.set(this, null);
      _.hash.set(this, null);
      _.langcode.set(this, null);
      _.mimeType.set(this, null);
      _.origin.set(this, null);
      _.path.set(this, null);
      _.protocol.set(this, null);
      _.query.set(this, null);
      _.relation.set(this, null);
      _.relative.set(this, null);
      _.size.set(this, null);
      _.title.set(this, null);
      _.uid.set(this, null);
      _.url.set(this, null);
    }

    _createClass(Url, [{
      key: 'set',
      value: function set(name, value) {
        var values = {};

        if (typeof name === 'string') {
          values[name] = value;
        } else if (name instanceof HTMLElement) {
          values.element = name;
        } else if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
          values = _extends({}, name);
        }

        if (values.url && values.absolute === undefined) {
          values.absolute = values.url;
          delete values.url;
        }

        var keys = Object.keys(values);
        for (var i = 0, l = keys.length; i < l; i++) {
          var prop = keys[i];
          if (_.hasOwnProperty(prop) || this.hasOwnProperty(prop)) {
            this[prop] = values[prop];
          }
        }

        return this;
      }
    }, {
      key: 'getPrivateProperty',
      value: function getPrivateProperty(properties, name) {
        var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
        var dataAttributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;

        var prop = properties[name];
        var value = prop.get(this);

        if (value !== null) {
          return value;
        }

        var element = properties.element ? properties.element.get(this) : _.element.get(this);

        if (element) {
          if (dataAttributes === null) {
            dataAttributes = [name];
          }
          if (dataAttributes) {
            for (var i = 0, l = dataAttributes.length; i < l; i++) {
              if (element.dataset[dataAttributes[i]] !== undefined) {
                value = element.dataset[dataAttributes[i]];
                break;
              }
            }
          }
        }

        if (value === null && typeof defaultValue === 'function') {
          defaultValue = defaultValue(element);
          if (defaultValue === undefined || defaultValue === null) {
            defaultValue = '';
          }
        }

        value = Drupal.typeCast(defaultValue, value);

        prop.set(this, value);

        return value;
      }
    }, {
      key: 'absolute',
      get: function get() {
        return _.absolute.get(this) || '';
      },
      set: function set(value) {
        var origin = _.origin.get(this) || window.location.origin;
        var url = void 0;

        try {
          url = new URL(value, origin);
        } catch (e) {
          return Drupal.fatal(Drupal.t('Only absolute URLs (or protocol relative URLs) can be set on the "absolute" property: @value'), { '@value': value });
        }

        _.url.set(this, url);
        _.absolute.set(this, url.href);

        _.basename.set(this, null);
        _.extension.set(this, null);
        _.filename.set(this, null);
        _.hash.set(this, null);
        _.origin.set(this, null);
        _.path.set(this, null);
        _.protocol.set(this, null);
        _.query.set(this, null);
        _.relative.set(this, null);
      }
    }, {
      key: 'basename',
      get: function get() {
        var _this = this;

        return this.getPrivateProperty(_, 'basename', function () {
          var url = _this.path;
          var basename = '';

          var last = url && url.charAt(url.length - 1);
          if (last === '/' || last === '\\') {
            url = url.slice(0, -1);
          }
          url = url && url.replace(/^.*[/\\]/g, '');

          var extension = '.' + _this.extension;
          if (url.substr(url.length - extension.length) === extension) {
            basename = url.substr(0, url.length - extension.length);
          }

          return basename;
        });
      }
    }, {
      key: 'element',
      get: function get() {
        return _.element.get(this);
      },
      set: function set(value) {
        if (!getElementUrl(value)) {
          return Drupal.fatal(Drupal.t('Only HTMLElement objects where a URL value can be extracted are allowed to be set on the "element" property: @value'), { '@value': value });
        }

        _.element.set(this, value);

        _.absolute.set(this, null);
        _.basename.set(this, null);
        _.extension.set(this, null);
        _.filename.set(this, null);
        _.hash.set(this, null);
        _.langcode.set(this, null);
        _.mimeType.set(this, null);
        _.origin.set(this, null);
        _.path.set(this, null);
        _.protocol.set(this, null);
        _.query.set(this, null);
        _.relation.set(this, null);
        _.relative.set(this, null);
        _.size.set(this, null);
        _.title.set(this, null);
        _.uid.set(this, null);
        _.url.set(this, null);
      }
    }, {
      key: 'extension',
      get: function get() {
        var _this2 = this;

        return this.getPrivateProperty(_, 'extension', function () {
          var path = _this2.path;

          return path && /tar\.gz$/.test(path) ? 'tar.gz' : path.slice((path.lastIndexOf('.') - 1 >>> 0) + 2) || '';
        });
      }
    }, {
      key: 'filename',
      get: function get() {
        var _this3 = this;

        return this.getPrivateProperty(_, 'filename', function () {
          return [_this3.basename, _this3.extension].filter(Boolean).join('.');
        });
      }
    }, {
      key: 'hash',
      get: function get() {
        var _this4 = this;

        return this.getPrivateProperty(_, 'hash', function () {
          var url = _.url.get(_this4);
          return url && url.hash || '';
        });
      }
    }, {
      key: 'langcode',
      get: function get() {
        return this.getPrivateProperty(_, 'langcode', function (element) {
          return element && (element.hreflang || element.lang) || '';
        });
      }
    }, {
      key: 'mimeType',
      get: function get() {
        return this.getPrivateProperty(_, 'mimeType', function (element) {
          return getElementMimeType(element).shift() || '';
        });
      }
    }, {
      key: 'origin',
      get: function get() {
        var _this5 = this;

        return this.getPrivateProperty(_, 'origin', function (element) {
          var url = _.url.get(_this5);
          return element && element.origin || url && url.origin || '';
        });
      },
      set: function set(value) {
        _.origin.set(this, value);
      }
    }, {
      key: 'path',
      get: function get() {
        var _this6 = this;

        return this.getPrivateProperty(_, 'path', function () {
          var url = _.url.get(_this6);
          return url && url.pathname || '';
        });
      }
    }, {
      key: 'protocol',
      get: function get() {
        var _this7 = this;

        return this.getPrivateProperty(_, 'protocol', function () {
          var url = _.url.get(_this7);
          return url && url.protocol.replace(/:$/, '') || '';
        });
      }
    }, {
      key: 'query',
      get: function get() {
        var _this8 = this;

        return this.getPrivateProperty(_, 'query', function () {
          var url = _.url.get(_this8);
          return url && url.search || '';
        });
      }
    }, {
      key: 'relation',
      get: function get() {
        return this.getPrivateProperty(_, 'relation', function (element) {
          return element && element.rel || '';
        });
      }
    }, {
      key: 'relative',
      get: function get() {
        var _this9 = this;

        return this.getPrivateProperty(_, 'relation', function () {
          var url = _this9.absolute;
          return url && url.replace(_this9.origin, '') || '';
        });
      }
    }, {
      key: 'size',
      get: function get() {
        return this.getPrivateProperty(_, 'size', function (element) {
          var size = 0;

          var mimeType = getElementMimeType(element).slice(1);
          for (var i = 0, l = mimeType.slice(0).length; i < l; i++) {
            var parts = mimeType[i].split('=');
            if (parts && parts[0] === 'length') {
              size = parts[1];
              break;
            }
          }
          return size;
        }, ['fileSize', 'size']);
      }
    }, {
      key: 'title',
      get: function get() {
        return this.getPrivateProperty(_, 'title', function (element) {
          return element && element.title || '';
        });
      }
    }, {
      key: 'uid',
      get: function get() {
        return this.getPrivateProperty(_, 'uid', 0);
      }
    }, {
      key: 'url',
      get: function get() {
        return this.absolute;
      },
      set: function set(value) {
        this.absolute = value;
      }
    }], [{
      key: 'create',
      value: function create(obj) {
        var origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;

        if (obj instanceof this) {
          return obj;
        }
        var instance = new this();
        if (obj) {
          instance.set('origin', origin || window.location.origin + Drupal.settings.basePath + Drupal.settings.pathPrefix);
          instance.set(typeof obj === 'string' ? { url: obj } : obj);
        }
        return instance;
      }
    }]);

    return Url;
  }();

  Drupal.Url = Url;
})(window.Drupal);

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

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