app-decorators
Version:
Collection of useful ES7 Decorators, writtin in ES6, that can be used for building webapps
126 lines (106 loc) • 3.16 kB
JavaScript
System.register(['app-decorators/src/libs/element-to-function'], function (_export, _context) {
"use strict";
var _elementToFunc, _slicedToArray, classof;
/**
* Extract domnode attributes
* @param {HTMLElement} domNode
* @param {Regex} expression
* @param {Boolean} removeDomAttributes
* @return {Object}
*/
function extractDomProperties(domNode, regex) {
var removeDomAttributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (regex && classof(regex) !== 'RegExp') {
throw Error('Second argument is passed but it must be a Regular-Expression');
}
var domViewAttributes = {};
var toBeRemovedAttributes = [];
for (var key in domNode.attributes) {
if (!domNode.attributes.hasOwnProperty(key)) {
continue;
}
var node = domNode.attributes[key];
if (regex) {
var matched = regex.exec(node.name);
if (matched !== null) {
var _matched = _slicedToArray(matched, 2),
name = _matched[1];
domViewAttributes[name] = node.value;
removeDomAttributes ? toBeRemovedAttributes.push(node.name) : null;
}
} else if (!regex) {
domViewAttributes[node.name] = node.value;
}
}
if (removeDomAttributes) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = toBeRemovedAttributes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var attribute = _step.value;
domNode.removeAttribute(attribute);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
return domViewAttributes;
}
return {
setters: [function (_appDecoratorsSrcLibsElementToFunction) {
_elementToFunc = _appDecoratorsSrcLibsElementToFunction.default;
}],
execute: function () {
_slicedToArray = function () {
function sliceIterator(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"]) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
return function (arr, i) {
if (Array.isArray(arr)) {
return arr;
} else if (Symbol.iterator in Object(arr)) {
return sliceIterator(arr, i);
} else {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
};
}();
classof = function classof(value) {
return Object.prototype.toString.call(value).slice(8, -1);
};
_export('extractDomProperties', extractDomProperties);
}
};
});
//# sourceMappingURL=extract-dom-properties.js.map