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);