Files
react-native-devtools-frontend/front_end/css_overview/CSSOverviewUnusedDeclarations.js
T
Tim van der Lippe 05149e9772 Remove ls from legacy-defs
This adds all missing imports for `ls` to all files. After this change,
all usages of `ls` will now properly be resolved to a LocalizedString
rather than a normal string.

R=jacktfranklin@chromium.org

No-Presubmit: True
Change-Id: Icf6d8c3b8bea1f9e66f4b6b58e4ae4c7f99e6f9c
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2629554
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
2021-01-15 12:53:50 +00:00

128 lines
3.7 KiB
JavaScript

// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {ls} from '../platform/platform.js';
/**
* @typedef {{
* declaration:string,
* nodeId:number,
* }}
*/
// @ts-ignore typedef
export let UnusedDeclaration;
export class CSSOverviewUnusedDeclarations {
/**
* @param {!Map<string,!Array<!UnusedDeclaration>>} target
* @param {string} key
* @param {{declaration: string, nodeId:number}} item
*/
static _add(target, key, item) {
const values = target.get(key) || [];
values.push(item);
target.set(key, values);
}
/**
* @param {!Map<string, !Array<!UnusedDeclaration>>} unusedDeclarations
* @param {number} nodeId
* @param {!Array<string>} strings
* @param {number} positionIdx
* @param {number} topIdx
* @param {number} leftIdx
* @param {number} rightIdx
* @param {number} bottomIdx
*/
static checkForUnusedPositionValues(
unusedDeclarations, nodeId, strings, positionIdx, topIdx, leftIdx, rightIdx, bottomIdx) {
if (strings[positionIdx] !== 'static') {
return;
}
if (strings[topIdx] !== 'auto') {
const reason = ls`Top applied to a statically positioned element`;
this._add(unusedDeclarations, reason, {
declaration: `top: ${strings[topIdx]}`,
nodeId,
});
}
if (strings[leftIdx] !== 'auto') {
const reason = ls`Left applied to a statically positioned element`;
this._add(unusedDeclarations, reason, {
declaration: `left: ${strings[leftIdx]}`,
nodeId,
});
}
if (strings[rightIdx] !== 'auto') {
const reason = ls`Right applied to a statically positioned element`;
this._add(unusedDeclarations, reason, {
declaration: `right: ${strings[rightIdx]}`,
nodeId,
});
}
if (strings[bottomIdx] !== 'auto') {
const reason = ls`Bottom applied to a statically positioned element`;
this._add(unusedDeclarations, reason, {
declaration: `bottom: ${strings[bottomIdx]}`,
nodeId,
});
}
}
/**
* @param {!Map<string, !Array<!UnusedDeclaration>>} unusedDeclarations
* @param {number} nodeId
* @param {!Array<string>} strings
* @param {number} displayIdx
* @param {number} widthIdx
* @param {number} heightIdx
*/
static checkForUnusedWidthAndHeightValues(unusedDeclarations, nodeId, strings, displayIdx, widthIdx, heightIdx) {
if (strings[displayIdx] !== 'inline') {
return;
}
if (strings[widthIdx] !== 'auto') {
const reason = ls`Width applied to an inline element`;
this._add(unusedDeclarations, reason, {
declaration: `width: ${strings[widthIdx]}`,
nodeId,
});
}
if (strings[heightIdx] !== 'auto') {
const reason = ls`Height applied to an inline element`;
this._add(unusedDeclarations, reason, {
declaration: `height: ${strings[heightIdx]}`,
nodeId,
});
}
}
/**
* @param {!Map<string, !Array<!UnusedDeclaration>>} unusedDeclarations
* @param {number} nodeId
* @param {!Array<string>} strings
* @param {number} displayIdx
* @param {number} verticalAlignIdx
*/
static checkForInvalidVerticalAlignment(unusedDeclarations, nodeId, strings, displayIdx, verticalAlignIdx) {
if (!strings[displayIdx] || strings[displayIdx] === 'inline' || strings[displayIdx].startsWith('table')) {
return;
}
if (strings[verticalAlignIdx] !== 'baseline') {
const reason = ls`Vertical alignment applied to element which is neither inline nor table-cell`;
this._add(unusedDeclarations, reason, {
declaration: `vertical-align: ${strings[verticalAlignIdx]}`,
nodeId,
});
}
}
}