in modules/core/src/lib/composite-layer.js [127:206]
getSubLayerProps(sublayerProps = {}) {
const {
opacity,
pickable,
visible,
parameters,
getPolygonOffset,
highlightedObjectIndex,
autoHighlight,
highlightColor,
coordinateSystem,
coordinateOrigin,
wrapLongitude,
positionFormat,
modelMatrix,
extensions,
_subLayerProps: overridingProps
} = this.props;
const newProps = {
opacity,
pickable,
visible,
parameters,
getPolygonOffset,
highlightedObjectIndex,
autoHighlight,
highlightColor,
coordinateSystem,
coordinateOrigin,
wrapLongitude,
positionFormat,
modelMatrix,
extensions
};
const overridingSublayerProps = overridingProps && overridingProps[sublayerProps.id];
const overridingSublayerTriggers =
overridingSublayerProps && overridingSublayerProps.updateTriggers;
const sublayerId = sublayerProps.id || 'sublayer';
if (overridingSublayerProps) {
const propTypes = this.constructor._propTypes;
for (const key in overridingSublayerProps) {
const propType = propTypes[key];
// eslint-disable-next-line
if (propType && propType.type === 'accessor') {
overridingSublayerProps[key] = this.getSubLayerAccessor(overridingSublayerProps[key]);
}
}
}
Object.assign(
newProps,
sublayerProps,
// experimental feature that allows users to override sublayer props via parent layer prop
overridingSublayerProps,
{
id: `${this.props.id}-${sublayerId}`,
updateTriggers: Object.assign(
{
all: this.props.updateTriggers.all
},
sublayerProps.updateTriggers,
overridingSublayerTriggers
)
}
);
// Pass through extension props
for (const extension of extensions) {
const passThroughProps = extension.getSubLayerProps.call(this, extension);
if (passThroughProps) {
Object.assign(newProps, passThroughProps, {
updateTriggers: Object.assign(newProps.updateTriggers, passThroughProps.updateTriggers)
});
}
}
return newProps;
}