You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
681 B
23 lines
681 B
4 years ago
|
var compactable = require('../compactable');
|
||
|
|
||
|
function isComponentOf(property1, property2, shallow) {
|
||
|
return isDirectComponentOf(property1, property2) ||
|
||
|
!shallow && !!compactable[property1.name].shorthandComponents && isSubComponentOf(property1, property2);
|
||
|
}
|
||
|
|
||
|
function isDirectComponentOf(property1, property2) {
|
||
|
var descriptor = compactable[property1.name];
|
||
|
|
||
|
return 'components' in descriptor && descriptor.components.indexOf(property2.name) > -1;
|
||
|
}
|
||
|
|
||
|
function isSubComponentOf(property1, property2) {
|
||
|
return property1
|
||
|
.components
|
||
|
.some(function (component) {
|
||
|
return isDirectComponentOf(component, property2);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
module.exports = isComponentOf;
|