UNPKG

@angular/core

Version:

Angular - the core framework

103 lines 8.98 kB
/** * @fileoverview added by tsickle * Generated from: packages/core/testing/src/styling.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /** * Returns element classes in form of a stable (sorted) string. * * @param {?} element HTML Element. * @return {?} Returns element classes in form of a stable (sorted) string. */ export function getSortedClassName(element) { /** @type {?} */ const names = Object.keys(getElementClasses(element)); names.sort(); return names.join(' '); } /** * Returns element classes in form of a map. * * @param {?} element HTML Element. * @return {?} Map of class values. */ export function getElementClasses(element) { /** @type {?} */ const classes = {}; if (element.nodeType === Node.ELEMENT_NODE) { /** @type {?} */ const classList = element.classList; for (let i = 0; i < classList.length; i++) { /** @type {?} */ const key = classList[i]; classes[key] = true; } } return classes; } /** * Returns element styles in form of a stable (sorted) string. * * @param {?} element HTML Element. * @return {?} Returns element styles in form of a stable (sorted) string. */ export function getSortedStyle(element) { /** @type {?} */ const styles = getElementStyles(element); /** @type {?} */ const names = Object.keys(styles); names.sort(); /** @type {?} */ let sorted = ''; names.forEach((/** * @param {?} key * @return {?} */ key => { /** @type {?} */ const value = styles[key]; if (value != null && value !== '') { if (sorted !== '') sorted += ' '; sorted += key + ': ' + value + ';'; } })); return sorted; } /** * Returns element styles in form of a map. * * @param {?} element HTML Element. * @return {?} Map of style values. */ export function getElementStyles(element) { /** @type {?} */ const styles = {}; if (element.nodeType === Node.ELEMENT_NODE) { /** @type {?} */ const style = ((/** @type {?} */ (element))).style; // reading `style.color` is a work around for a bug in Domino. The issue is that Domino has // stale value for `style.length`. It seems that reading a property from the element causes the // stale value to be updated. (As of Domino v 2.1.3) style.color; for (let i = 0; i < style.length; i++) { /** @type {?} */ const key = style.item(i); /** @type {?} */ const value = style.getPropertyValue(key); if (value !== '') { // Workaround for IE not clearing properties, instead it just sets them to blank value. styles[key] = value; } } } return styles; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvdGVzdGluZy9zcmMvc3R5bGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZ0I7O1VBQzNDLEtBQUssR0FBYSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNiLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDOzs7Ozs7O0FBUUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQWdCOztVQUMxQyxPQUFPLEdBQTBCLEVBQUU7SUFDekMsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7O2NBQ3BDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUztRQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7a0JBQ25DLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDckI7S0FDRjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7Ozs7Ozs7QUFRRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQWdCOztVQUN2QyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDOztVQUNsQyxLQUFLLEdBQWEsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0MsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDOztRQUNULE1BQU0sR0FBRyxFQUFFO0lBQ2YsS0FBSyxDQUFDLE9BQU87Ozs7SUFBQyxHQUFHLENBQUMsRUFBRTs7Y0FDWixLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUNqQyxJQUFJLE1BQU0sS0FBSyxFQUFFO2dCQUFFLE1BQU0sSUFBSSxHQUFHLENBQUM7WUFDakMsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUNwQztJQUNILENBQUMsRUFBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQzs7Ozs7OztBQVFELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFnQjs7VUFDekMsTUFBTSxHQUE0QixFQUFFO0lBQzFDLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFOztjQUNwQyxLQUFLLEdBQUcsQ0FBQyxtQkFBQSxPQUFPLEVBQWUsQ0FBQyxDQUFDLEtBQUs7UUFDNUMsMkZBQTJGO1FBQzNGLCtGQUErRjtRQUMvRixvREFBb0Q7UUFDcEQsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztrQkFDL0IsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDOztrQkFDbkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7WUFDekMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO2dCQUNoQix1RkFBdUY7Z0JBQ3ZGLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDckI7U0FDRjtLQUNGO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBSZXR1cm5zIGVsZW1lbnQgY2xhc3NlcyBpbiBmb3JtIG9mIGEgc3RhYmxlIChzb3J0ZWQpIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnQuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGVsZW1lbnQgY2xhc3NlcyBpbiBmb3JtIG9mIGEgc3RhYmxlIChzb3J0ZWQpIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRlZENsYXNzTmFtZShlbGVtZW50OiBFbGVtZW50KTogc3RyaW5nIHtcbiAgY29uc3QgbmFtZXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMoZ2V0RWxlbWVudENsYXNzZXMoZWxlbWVudCkpO1xuICBuYW1lcy5zb3J0KCk7XG4gIHJldHVybiBuYW1lcy5qb2luKCcgJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBlbGVtZW50IGNsYXNzZXMgaW4gZm9ybSBvZiBhIG1hcC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnQuXG4gKiBAcmV0dXJucyBNYXAgb2YgY2xhc3MgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudENsYXNzZXMoZWxlbWVudDogRWxlbWVudCk6IHtba2V5OiBzdHJpbmddOiB0cnVlfSB7XG4gIGNvbnN0IGNsYXNzZXM6IHtba2V5OiBzdHJpbmddOiB0cnVlfSA9IHt9O1xuICBpZiAoZWxlbWVudC5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICBjb25zdCBjbGFzc0xpc3QgPSBlbGVtZW50LmNsYXNzTGlzdDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNsYXNzTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qga2V5ID0gY2xhc3NMaXN0W2ldO1xuICAgICAgY2xhc3Nlc1trZXldID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNsYXNzZXM7XG59XG5cbi8qKlxuICogUmV0dXJucyBlbGVtZW50IHN0eWxlcyBpbiBmb3JtIG9mIGEgc3RhYmxlIChzb3J0ZWQpIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnQuXG4gKiBAcmV0dXJucyBSZXR1cm5zIGVsZW1lbnQgc3R5bGVzIGluIGZvcm0gb2YgYSBzdGFibGUgKHNvcnRlZCkgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U29ydGVkU3R5bGUoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB7XG4gIGNvbnN0IHN0eWxlcyA9IGdldEVsZW1lbnRTdHlsZXMoZWxlbWVudCk7XG4gIGNvbnN0IG5hbWVzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKHN0eWxlcyk7XG4gIG5hbWVzLnNvcnQoKTtcbiAgbGV0IHNvcnRlZCA9ICcnO1xuICBuYW1lcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHlsZXNba2V5XTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgIGlmIChzb3J0ZWQgIT09ICcnKSBzb3J0ZWQgKz0gJyAnO1xuICAgICAgc29ydGVkICs9IGtleSArICc6ICcgKyB2YWx1ZSArICc7JztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc29ydGVkO1xufVxuXG4vKipcbiAqIFJldHVybnMgZWxlbWVudCBzdHlsZXMgaW4gZm9ybSBvZiBhIG1hcC5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBIVE1MIEVsZW1lbnQuXG4gKiBAcmV0dXJucyBNYXAgb2Ygc3R5bGUgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudFN0eWxlcyhlbGVtZW50OiBFbGVtZW50KToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICBjb25zdCBzdHlsZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG4gIGlmIChlbGVtZW50Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgIGNvbnN0IHN0eWxlID0gKGVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlO1xuICAgIC8vIHJlYWRpbmcgYHN0eWxlLmNvbG9yYCBpcyBhIHdvcmsgYXJvdW5kIGZvciBhIGJ1ZyBpbiBEb21pbm8uIFRoZSBpc3N1ZSBpcyB0aGF0IERvbWlubyBoYXNcbiAgICAvLyBzdGFsZSB2YWx1ZSBmb3IgYHN0eWxlLmxlbmd0aGAuIEl0IHNlZW1zIHRoYXQgcmVhZGluZyBhIHByb3BlcnR5IGZyb20gdGhlIGVsZW1lbnQgY2F1c2VzIHRoZVxuICAgIC8vIHN0YWxlIHZhbHVlIHRvIGJlIHVwZGF0ZWQuIChBcyBvZiBEb21pbm8gdiAyLjEuMylcbiAgICBzdHlsZS5jb2xvcjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0eWxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBzdHlsZS5pdGVtKGkpO1xuICAgICAgY29uc3QgdmFsdWUgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGtleSk7XG4gICAgICBpZiAodmFsdWUgIT09ICcnKSB7XG4gICAgICAgIC8vIFdvcmthcm91bmQgZm9yIElFIG5vdCBjbGVhcmluZyBwcm9wZXJ0aWVzLCBpbnN0ZWFkIGl0IGp1c3Qgc2V0cyB0aGVtIHRvIGJsYW5rIHZhbHVlLlxuICAgICAgICBzdHlsZXNba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3R5bGVzO1xufSJdfQ==