mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-01 17:57:36 +08:00
The unrestricted annotation is Closure-specific and can be removed. This patch removes all comments with only the unrestricted annotation in them. R=szuend@chromium.org No-Presubmit: True Bug: 1011811 Change-Id: Iba0723644f53f5307c3077d341271af86becc32a Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2569758 Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org> Reviewed-by: Simon Zünd <szuend@chromium.org> Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
126 lines
3.7 KiB
JavaScript
126 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.
|
|
|
|
/**
|
|
* @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,
|
|
});
|
|
}
|
|
}
|
|
}
|