angular-xml-editor
Version:
XML editor component for Angular
111 lines (110 loc) • 10.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
export class Xml2htmlAttributeWorker {
/**
* @param {?} rules
*/
constructor(rules) {
this.rules = rules;
}
/**
* writes the given attributes to the html node in data-attribute-syntax *
* @param {?} xmlElement
* @param {?} htmlElement
* @return {?}
*/
writeAllXmlAttributesToHtml(xmlElement, htmlElement) {
/** @type {?} */
const attributes = xmlElement.attributes;
for (let i = 0; i < attributes.length; ++i) {
/** @type {?} */
const attr = attributes[i];
this.writeAttributeToHtml(htmlElement, attr.name, attr.value);
}
}
/**
* writes the given attribute value to the html node in data-attribute-syntax *
* @param {?} htmlElement
* @param {?} key
* @param {?} value
* @return {?}
*/
writeAttributeToHtml(htmlElement, key, value) {
/** @type {?} */
const name = `${Xml2htmlAttributeWorker.DataAttribPraefix}${key}`;
if (value && value.length > 0) {
htmlElement.setAttribute(name, value);
}
else {
htmlElement.removeAttribute(name);
}
this.updateAttributesDescriptionInHtmlElement(htmlElement);
}
/**
* writes the given attribute value from the html node data-attribute-syntax *
* @param {?} htmlElement
* @param {?} key
* @return {?}
*/
getAttributeValueFromHtml(htmlElement, key) {
/** @type {?} */
const attributes = htmlElement.attributes;
for (let i = 0; i < attributes.length; ++i) {
if (attributes[i].name === `${Xml2htmlAttributeWorker.DataAttribPraefix}${key}`) {
return attributes[i].value;
}
}
return undefined;
}
/**
* writes the given attribute value to the xml node (and gets it from the html node from data-attribute-syntax) *
* @param {?} htmlElement
* @param {?} xmlElement
* @return {?}
*/
writeAllHtmlAttributesToXml(htmlElement, xmlElement) {
/** @type {?} */
const attributes = htmlElement.attributes;
for (let i = 0; i < attributes.length; ++i) {
/** @type {?} */
const attr = attributes[i];
if (attr.name.startsWith(Xml2htmlAttributeWorker.DataAttribPraefix)) {
xmlElement.setAttribute(attr.name.substr(Xml2htmlAttributeWorker.DataAttribPraefix.length), attr.value);
}
}
}
/**
* updates the 'for human eyes' only description of the attributes inside a html node *
* @param {?} htmlElement
* @return {?}
*/
updateAttributesDescriptionInHtmlElement(htmlElement) {
/** @type {?} */
const attributes = htmlElement.attributes;
/** @type {?} */
let allAttributes = '';
for (let i = 0; i < attributes.length; ++i) {
/** @type {?} */
const attr = attributes[i];
if (attr.name.startsWith(Xml2htmlAttributeWorker.DataAttribPraefix)) {
allAttributes = `${allAttributes} ${attr.name.substr(Xml2htmlAttributeWorker.DataAttribPraefix.length)}="${attr.value}"`;
}
}
if (allAttributes.length > 0) {
htmlElement.setAttribute('data-attributes', allAttributes);
}
else {
htmlElement.removeAttribute('data-attributes');
}
}
}
Xml2htmlAttributeWorker.DataAttribPraefix = 'data-attribute-';
if (false) {
/** @type {?} */
Xml2htmlAttributeWorker.DataAttribPraefix;
/** @type {?} */
Xml2htmlAttributeWorker.prototype.rules;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sMmh0bWxBdHRyaWJ1dGVXb3JrZXIuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXhtbC1lZGl0b3IvIiwic291cmNlcyI6WyJsaWIvY29kZS94bWwtaHRtbC1jb252ZXJ0ZXIveG1sMmh0bWxBdHRyaWJ1dGVXb3JrZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLE1BQU07Ozs7SUFHSixZQUFtQixLQUFlO1FBQWYsVUFBSyxHQUFMLEtBQUssQ0FBVTtLQUFJOzs7Ozs7O0lBR3RDLDJCQUEyQixDQUFDLFVBQW1CLEVBQUUsV0FBb0I7O1FBQ25FLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7O1lBQzFDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9EO0tBQ0Y7Ozs7Ozs7O0lBR0Qsb0JBQW9CLENBQUMsV0FBb0IsRUFBRSxHQUFXLEVBQUUsS0FBYTs7UUFDbkUsTUFBTSxJQUFJLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNsRSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QixXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2QzthQUFNO1lBQ0wsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM1RDs7Ozs7OztJQUdELHlCQUF5QixDQUFDLFdBQW9CLEVBQUUsR0FBVzs7UUFDekQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtZQUMxQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEVBQUUsRUFBRTtnQkFDL0UsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQzVCO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQztLQUNsQjs7Ozs7OztJQUdELDJCQUEyQixDQUFDLFdBQW9CLEVBQUUsVUFBbUI7O1FBQ25FLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDMUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7O1lBQzFDLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ25FLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pHO1NBQ0Y7S0FDRjs7Ozs7O0lBR08sd0NBQXdDLENBQUMsV0FBb0I7O1FBQ25FLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7O1FBQzFDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTs7WUFDMUMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDbkUsYUFBYSxHQUFHLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQzthQUMxSDtTQUNGO1FBQ0QsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QixXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxXQUFXLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDaEQ7Ozs0Q0E1RCtCLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhtbFJ1bGVzIH0gZnJvbSAnLi4veG1sLXJ1bGVzLWNoZWNrL3htbFJ1bGVzLmNsYXNzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBYbWwyaHRtbEF0dHJpYnV0ZVdvcmtlciB7XHJcbiAgcHVibGljIHN0YXRpYyBEYXRhQXR0cmliUHJhZWZpeCA9ICdkYXRhLWF0dHJpYnV0ZS0nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcnVsZXM6IFhtbFJ1bGVzKSB7fVxyXG5cclxuICAvKiogd3JpdGVzIHRoZSBnaXZlbiBhdHRyaWJ1dGVzIHRvIHRoZSBodG1sIG5vZGUgaW4gZGF0YS1hdHRyaWJ1dGUtc3ludGF4ICoqL1xyXG4gIHdyaXRlQWxsWG1sQXR0cmlidXRlc1RvSHRtbCh4bWxFbGVtZW50OiBFbGVtZW50LCBodG1sRWxlbWVudDogRWxlbWVudCkge1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHhtbEVsZW1lbnQuYXR0cmlidXRlcztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhdHRyID0gYXR0cmlidXRlc1tpXTtcclxuICAgICAgdGhpcy53cml0ZUF0dHJpYnV0ZVRvSHRtbChodG1sRWxlbWVudCwgYXR0ci5uYW1lLCBhdHRyLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiB3cml0ZXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSB2YWx1ZSB0byB0aGUgaHRtbCBub2RlIGluIGRhdGEtYXR0cmlidXRlLXN5bnRheCAqKi9cclxuICB3cml0ZUF0dHJpYnV0ZVRvSHRtbChodG1sRWxlbWVudDogRWxlbWVudCwga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5hbWUgPSBgJHtYbWwyaHRtbEF0dHJpYnV0ZVdvcmtlci5EYXRhQXR0cmliUHJhZWZpeH0ke2tleX1gO1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgaHRtbEVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGh0bWxFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlQXR0cmlidXRlc0Rlc2NyaXB0aW9uSW5IdG1sRWxlbWVudChodG1sRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICAvKiogd3JpdGVzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgdmFsdWUgZnJvbSB0aGUgaHRtbCBub2RlIGRhdGEtYXR0cmlidXRlLXN5bnRheCAqKi9cclxuICBnZXRBdHRyaWJ1dGVWYWx1ZUZyb21IdG1sKGh0bWxFbGVtZW50OiBFbGVtZW50LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gaHRtbEVsZW1lbnQuYXR0cmlidXRlcztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBpZiAoYXR0cmlidXRlc1tpXS5uYW1lID09PSBgJHtYbWwyaHRtbEF0dHJpYnV0ZVdvcmtlci5EYXRhQXR0cmliUHJhZWZpeH0ke2tleX1gKSB7XHJcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNbaV0udmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogd3JpdGVzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgdmFsdWUgdG8gdGhlIHhtbCBub2RlIChhbmQgZ2V0cyBpdCBmcm9tIHRoZSBodG1sIG5vZGUgZnJvbSBkYXRhLWF0dHJpYnV0ZS1zeW50YXgpICoqL1xyXG4gIHdyaXRlQWxsSHRtbEF0dHJpYnV0ZXNUb1htbChodG1sRWxlbWVudDogRWxlbWVudCwgeG1sRWxlbWVudDogRWxlbWVudCkge1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IGh0bWxFbGVtZW50LmF0dHJpYnV0ZXM7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgY29uc3QgYXR0ciA9IGF0dHJpYnV0ZXNbaV07XHJcbiAgICAgIGlmIChhdHRyLm5hbWUuc3RhcnRzV2l0aChYbWwyaHRtbEF0dHJpYnV0ZVdvcmtlci5EYXRhQXR0cmliUHJhZWZpeCkpIHtcclxuICAgICAgICB4bWxFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLm5hbWUuc3Vic3RyKFhtbDJodG1sQXR0cmlidXRlV29ya2VyLkRhdGFBdHRyaWJQcmFlZml4Lmxlbmd0aCksIGF0dHIudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogdXBkYXRlcyB0aGUgJ2ZvciBodW1hbiBleWVzJyBvbmx5IGRlc2NyaXB0aW9uIG9mIHRoZSBhdHRyaWJ1dGVzIGluc2lkZSBhIGh0bWwgbm9kZSAqKi9cclxuICBwcml2YXRlIHVwZGF0ZUF0dHJpYnV0ZXNEZXNjcmlwdGlvbkluSHRtbEVsZW1lbnQoaHRtbEVsZW1lbnQ6IEVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBodG1sRWxlbWVudC5hdHRyaWJ1dGVzO1xyXG4gICAgbGV0IGFsbEF0dHJpYnV0ZXMgPSAnJztcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7ICsraSkge1xyXG4gICAgICBjb25zdCBhdHRyID0gYXR0cmlidXRlc1tpXTtcclxuICAgICAgaWYgKGF0dHIubmFtZS5zdGFydHNXaXRoKFhtbDJodG1sQXR0cmlidXRlV29ya2VyLkRhdGFBdHRyaWJQcmFlZml4KSkge1xyXG4gICAgICAgIGFsbEF0dHJpYnV0ZXMgPSBgJHthbGxBdHRyaWJ1dGVzfSAke2F0dHIubmFtZS5zdWJzdHIoWG1sMmh0bWxBdHRyaWJ1dGVXb3JrZXIuRGF0YUF0dHJpYlByYWVmaXgubGVuZ3RoKX09XCIke2F0dHIudmFsdWV9XCJgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYWxsQXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGh0bWxFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1hdHRyaWJ1dGVzJywgYWxsQXR0cmlidXRlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBodG1sRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtYXR0cmlidXRlcycpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=