mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-01 09:47:56 +08:00
These packages will be used to dynamically optimize SVG images during the build. R=jacktfranklin@chromium.org Bug: 1216402 Change-Id: I04e95aa7d79c9d67beaf8a7861182c52b16b7d0f Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2939992 Reviewed-by: Jack Franklin <jacktfranklin@chromium.org> Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
exports.type = 'perItem';
|
|
|
|
exports.active = false;
|
|
|
|
exports.description =
|
|
'removes arbitrary elements by ID or className (disabled by default)';
|
|
|
|
exports.params = {
|
|
id: [],
|
|
class: [],
|
|
};
|
|
|
|
/**
|
|
* Remove arbitrary SVG elements by ID or className.
|
|
*
|
|
* @param id
|
|
* examples:
|
|
*
|
|
* > single: remove element with ID of `elementID`
|
|
* ---
|
|
* removeElementsByAttr:
|
|
* id: 'elementID'
|
|
*
|
|
* > list: remove multiple elements by ID
|
|
* ---
|
|
* removeElementsByAttr:
|
|
* id:
|
|
* - 'elementID'
|
|
* - 'anotherID'
|
|
*
|
|
* @param class
|
|
* examples:
|
|
*
|
|
* > single: remove all elements with class of `elementClass`
|
|
* ---
|
|
* removeElementsByAttr:
|
|
* class: 'elementClass'
|
|
*
|
|
* > list: remove all elements with class of `elementClass` or `anotherClass`
|
|
* ---
|
|
* removeElementsByAttr:
|
|
* class:
|
|
* - 'elementClass'
|
|
* - 'anotherClass'
|
|
*
|
|
* @param {Object} item current iteration item
|
|
* @param {Object} params plugin params
|
|
* @return {Boolean} if false, item will be filtered out
|
|
*
|
|
* @author Eli Dupuis (@elidupuis)
|
|
*/
|
|
exports.fn = function (item, params) {
|
|
// wrap params in an array if not already
|
|
['id', 'class'].forEach(function (key) {
|
|
if (!Array.isArray(params[key])) {
|
|
params[key] = [params[key]];
|
|
}
|
|
});
|
|
|
|
// abort if current item is no an element
|
|
if (item.type !== 'element') {
|
|
return;
|
|
}
|
|
|
|
// remove element if it's `id` matches configured `id` params
|
|
if (item.attributes.id != null && params.id.length !== 0) {
|
|
return params.id.includes(item.attributes.id) === false;
|
|
}
|
|
|
|
// remove element if it's `class` contains any of the configured `class` params
|
|
if (item.attributes.class && params.class.length !== 0) {
|
|
const classList = item.attributes.class.split(' ');
|
|
return params.class.some((item) => classList.includes(item)) === false;
|
|
}
|
|
};
|