// hubble.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors import Keyframes, {KeyframeProps} from './keyframes'; export type KeplerLayer = { id: string; config: { label: string; visConfig: object; }; }; function getFeatures(layer?: KeplerLayer) { return layer ? Object.keys(layer.config.visConfig) : []; } export type KeplerLayerKeyframeProps = KeyframeProps & {layer?: KeplerLayer}; class KeplerLayerKeyframes extends Keyframes { layer: KeplerLayer; constructor({layer, timings, keyframes, easings}: KeplerLayerKeyframeProps) { super({timings, keyframes, easings, features: getFeatures(layer)}); // TODO: will this layer reference ever become outdated? layerVisConfigChange updates from this reference rather pulling from the store. this.layer = layer; } set({ layer = undefined, timings, keyframes, easings, interpolators }: KeplerLayerKeyframeProps) { if (layer) this.layer = layer; super.set({timings, keyframes, easings, interpolators}); } } export default KeplerLayerKeyframes;