UNPKG

@foblex/core

Version:

A core library providing a set of utilities and interfaces for various projects.

83 lines 11.6 kB
/** * @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==