@foblex/core
Version:
A core library providing a set of utilities and interfaces for various projects.
83 lines • 11.6 kB
JavaScript
/**
* @deprecated This class is deprecated and will be removed in future versions.
*/
export class DomElementExtensions {
static setDataToAllChildren(element, attrName, value) {
for (let i = 0; i < element.children.length; i++) {
const childrenElement = element.children[i];
childrenElement.dataset[attrName] = value;
if (childrenElement.children.length) {
DomElementExtensions.setDataToAllChildren(childrenElement, attrName, value);
}
}
}
static removeDataFromAllChildren(element, attrName) {
for (let i = 0; i < element.children.length; i++) {
const childrenElement = element.children[i];
delete childrenElement.dataset[attrName];
if (childrenElement.children.length) {
DomElementExtensions.removeDataFromAllChildren(childrenElement, attrName);
}
}
}
/**
* @deprecated This method is deprecated and will be removed in future versions.
*/
static createSvgElement(tag) {
return document.createElementNS('http://www.w3.org/2000/svg', tag);
}
/**
* @deprecated This method is deprecated and will be removed in future versions.
*/
static createHtmlElement(tag) {
return document.createElement(tag);
}
//from angular material cdk drag-and-drop
static deepCloneNode(node) {
const clone = node.cloneNode(true);
const descendantsWithId = clone.querySelectorAll('[id]');
const nodeName = node.nodeName.toLowerCase();
clone.removeAttribute('id');
for (let i = 0; i < descendantsWithId.length; i++) {
descendantsWithId[i].removeAttribute('id');
}
if (nodeName === 'canvas') {
transferCanvasData(node, clone);
}
else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {
transferInputData(node, clone);
}
transferData('canvas', node, clone, transferCanvasData);
transferData('input, textarea, select', node, clone, transferInputData);
return clone;
}
}
function transferData(selector, node, clone, callback) {
const descendantElements = node.querySelectorAll(selector);
if (descendantElements.length) {
const cloneElements = clone.querySelectorAll(selector);
for (let i = 0; i < descendantElements.length; i++) {
callback(descendantElements[i], cloneElements[i]);
}
}
}
let cloneUniqueId = 0;
function transferInputData(source, clone) {
if (clone.type !== 'file') {
clone.value = source.value;
}
if (clone.type === 'radio' && clone.name) {
clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;
}
}
function transferCanvasData(source, clone) {
const context = clone.getContext('2d');
if (context) {
try {
context.drawImage(source, 0, 0);
}
catch (_a) {
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWVsZW1lbnQuZXh0ZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtY29yZS9zcmMvZG9tLWVsZW1lbnQvZG9tLWVsZW1lbnQuZXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFFeEIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQWlDLEVBQUUsUUFBZ0IsRUFBRSxLQUFhO1FBQ25HLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFFLENBQUMsQ0FBaUIsQ0FBQztZQUM3RCxlQUFlLENBQUMsT0FBTyxDQUFFLFFBQVEsQ0FBRSxHQUFHLEtBQUssQ0FBQztZQUM1QyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzdFO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLHlCQUF5QixDQUFDLE9BQWlDLEVBQUUsUUFBZ0I7UUFDekYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUUsQ0FBQyxDQUFpQixDQUFDO1lBQzdELE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBRSxRQUFRLENBQUUsQ0FBQztZQUMzQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxvQkFBb0IsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFl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QVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUV2QyxJQUFJLE9BQU8sRUFBRTtRQUNYLElBQUk7WUFDRixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDakM7UUFBQyxXQUFNO1NBQ1A7S0FDRjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgY2xhc3MgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIERvbUVsZW1lbnRFeHRlbnNpb25zIHtcblxuICBwdWJsaWMgc3RhdGljIHNldERhdGFUb0FsbENoaWxkcmVuKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCwgYXR0ck5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hpbGRyZW5FbGVtZW50ID0gZWxlbWVudC5jaGlsZHJlblsgaSBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY2hpbGRyZW5FbGVtZW50LmRhdGFzZXRbIGF0dHJOYW1lIF0gPSB2YWx1ZTtcbiAgICAgIGlmIChjaGlsZHJlbkVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIERvbUVsZW1lbnRFeHRlbnNpb25zLnNldERhdGFUb0FsbENoaWxkcmVuKGNoaWxkcmVuRWxlbWVudCwgYXR0ck5hbWUsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlbW92ZURhdGFGcm9tQWxsQ2hpbGRyZW4oZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LCBhdHRyTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbkVsZW1lbnQgPSBlbGVtZW50LmNoaWxkcmVuWyBpIF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBkZWxldGUgY2hpbGRyZW5FbGVtZW50LmRhdGFzZXRbIGF0dHJOYW1lIF07XG4gICAgICBpZiAoY2hpbGRyZW5FbGVtZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBEb21FbGVtZW50RXh0ZW5zaW9ucy5yZW1vdmVEYXRhRnJvbUFsbENoaWxkcmVuKGNoaWxkcmVuRWxlbWVudCwgYXR0ck5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlU3ZnRWxlbWVudDxLIGV4dGVuZHMga2V5b2YgU1ZHRWxlbWVudFRhZ05hbWVNYXA+KHRhZzogSyk6IFNWR0VsZW1lbnRUYWdOYW1lTWFwW0tdIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHRhZyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlSHRtbEVsZW1lbnQ8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4odGFnOiBLKTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdIHtcbiAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICB9XG5cbiAgLy9mcm9tIGFuZ3VsYXIgbWF0ZXJpYWwgY2RrIGRyYWctYW5kLWRyb3BcbiAgcHVibGljIHN0YXRpYyBkZWVwQ2xvbmVOb2RlPFQgZXh0ZW5kcyAoSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50KT4obm9kZTogVCk6IFQge1xuICAgIGNvbnN0IGNsb25lID0gbm9kZS5jbG9uZU5vZGUodHJ1ZSkgYXMgVDtcbiAgICBjb25zdCBkZXNjZW5kYW50c1dpdGhJZCA9IGNsb25lLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF0nKTtcbiAgICBjb25zdCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGNsb25lLnJlbW92ZUF0dHJpYnV0ZSgnaWQnKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzY2VuZGFudHNXaXRoSWQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc2NlbmRhbnRzV2l0aElkWyBpIF0ucmVtb3ZlQXR0cmlidXRlKCdpZCcpO1xuICAgIH1cblxuICAgIGlmIChub2RlTmFtZSA9PT0gJ2NhbnZhcycpIHtcbiAgICAgIHRyYW5zZmVyQ2FudmFzRGF0YShub2RlIGFzIEhUTUxDYW52YXNFbGVtZW50LCBjbG9uZSBhcyBIVE1MQ2FudmFzRWxlbWVudCk7XG4gICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0JyB8fCBub2RlTmFtZSA9PT0gJ3NlbGVjdCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScpIHtcbiAgICAgIHRyYW5zZmVySW5wdXREYXRhKG5vZGUgYXMgSFRNTElucHV0RWxlbWVudCwgY2xvbmUgYXMgSFRNTElucHV0RWxlbWVudCk7XG4gICAgfVxuXG4gICAgdHJhbnNmZXJEYXRhKCdjYW52YXMnLCBub2RlLCBjbG9uZSwgdHJhbnNmZXJDYW52YXNEYXRhKTtcbiAgICB0cmFuc2ZlckRhdGEoJ2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0Jywgbm9kZSwgY2xvbmUsIHRyYW5zZmVySW5wdXREYXRhKTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmZXJEYXRhPFQgZXh0ZW5kcyBFbGVtZW50PihcbiAgc2VsZWN0b3I6IHN0cmluZyxcbiAgbm9kZTogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LFxuICBjbG9uZTogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LFxuICBjYWxsYmFjazogKHNvdXJjZTogVCwgY2xvbmU6IFQpID0+IHZvaWQsXG4pIHtcbiAgY29uc3QgZGVzY2VuZGFudEVsZW1lbnRzID0gbm9kZS5xdWVyeVNlbGVjdG9yQWxsPFQ+KHNlbGVjdG9yKTtcblxuICBpZiAoZGVzY2VuZGFudEVsZW1lbnRzLmxlbmd0aCkge1xuICAgIGNvbnN0IGNsb25lRWxlbWVudHMgPSBjbG9uZS5xdWVyeVNlbGVjdG9yQWxsPFQ+KHNlbGVjdG9yKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVzY2VuZGFudEVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjYWxsYmFjayhkZXNjZW5kYW50RWxlbWVudHNbIGkgXSwgY2xvbmVFbGVtZW50c1sgaSBdKTtcbiAgICB9XG4gIH1cbn1cblxubGV0IGNsb25lVW5pcXVlSWQgPSAwO1xuXG5mdW5jdGlvbiB0cmFuc2ZlcklucHV0RGF0YShcbiAgc291cmNlOiBFbGVtZW50ICYgeyB2YWx1ZTogc3RyaW5nIH0sXG4gIGNsb25lOiBFbGVtZW50ICYgeyB2YWx1ZTogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZyB9LFxuKSB7XG4gIGlmIChjbG9uZS50eXBlICE9PSAnZmlsZScpIHtcbiAgICBjbG9uZS52YWx1ZSA9IHNvdXJjZS52YWx1ZTtcbiAgfVxuXG4gIGlmIChjbG9uZS50eXBlID09PSAncmFkaW8nICYmIGNsb25lLm5hbWUpIHtcbiAgICBjbG9uZS5uYW1lID0gYG1hdC1jbG9uZS0keyBjbG9uZS5uYW1lIH0tJHsgY2xvbmVVbmlxdWVJZCsrIH1gO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyYW5zZmVyQ2FudmFzRGF0YShzb3VyY2U6IEhUTUxDYW52YXNFbGVtZW50LCBjbG9uZTogSFRNTENhbnZhc0VsZW1lbnQpIHtcbiAgY29uc3QgY29udGV4dCA9IGNsb25lLmdldENvbnRleHQoJzJkJyk7XG5cbiAgaWYgKGNvbnRleHQpIHtcbiAgICB0cnkge1xuICAgICAgY29udGV4dC5kcmF3SW1hZ2Uoc291cmNlLCAwLCAwKTtcbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gIH1cbn1cbiJdfQ==