28 lines
705 B
JavaScript
28 lines
705 B
JavaScript
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;
|