2022-11-29 07:49:26 -06:00
|
|
|
import {
|
|
|
|
SceneObjectState,
|
|
|
|
SceneObjectUrlSyncHandler,
|
|
|
|
SceneObjectWithUrlSync,
|
|
|
|
SceneObjectUrlValues,
|
|
|
|
} from '../core/types';
|
|
|
|
|
|
|
|
interface SceneObjectUrlSyncConfigOptions {
|
2022-12-01 02:48:26 -06:00
|
|
|
keys: string[];
|
2022-11-29 07:49:26 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
export class SceneObjectUrlSyncConfig<TState extends SceneObjectState> implements SceneObjectUrlSyncHandler<TState> {
|
2022-12-01 02:48:26 -06:00
|
|
|
private _keys: string[];
|
2022-11-29 07:49:26 -06:00
|
|
|
|
|
|
|
public constructor(private _sceneObject: SceneObjectWithUrlSync<TState>, _options: SceneObjectUrlSyncConfigOptions) {
|
2022-12-01 02:48:26 -06:00
|
|
|
this._keys = _options.keys;
|
2022-11-29 07:49:26 -06:00
|
|
|
}
|
|
|
|
|
2022-12-01 02:48:26 -06:00
|
|
|
public getKeys(): string[] {
|
2022-11-29 07:49:26 -06:00
|
|
|
return this._keys;
|
|
|
|
}
|
|
|
|
|
|
|
|
public getUrlState(state: TState): SceneObjectUrlValues {
|
|
|
|
return this._sceneObject.getUrlState(state);
|
|
|
|
}
|
|
|
|
|
|
|
|
public updateFromUrl(values: SceneObjectUrlValues): void {
|
|
|
|
this._sceneObject.updateFromUrl(values);
|
|
|
|
}
|
|
|
|
}
|