SceneTracker.js 877 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. *
  7. * @format
  8. * @flow strict
  9. */
  10. 'use strict';
  11. export type Scene = {name: string, ...};
  12. let _listeners: Array<(scene: Scene) => void> = [];
  13. let _activeScene = {name: 'default'};
  14. const SceneTracker = {
  15. setActiveScene(scene: Scene) {
  16. _activeScene = scene;
  17. _listeners.forEach(listener => listener(_activeScene));
  18. },
  19. getActiveScene(): Scene {
  20. return _activeScene;
  21. },
  22. addActiveSceneChangedListener(
  23. callback: (scene: Scene) => void,
  24. ): {remove: () => void, ...} {
  25. _listeners.push(callback);
  26. return {
  27. remove: () => {
  28. _listeners = _listeners.filter(listener => callback !== listener);
  29. },
  30. };
  31. },
  32. };
  33. module.exports = SceneTracker;