react-native-navigation的迁移库

Navigation.js 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. const NativeCommandsSender = require('./adapters/NativeCommandsSender');
  2. const NativeEventsReceiver = require('./adapters/NativeEventsReceiver');
  3. const UniqueIdProvider = require('./adapters/UniqueIdProvider');
  4. const Store = require('./containers/Store');
  5. const ContainerRegistry = require('./containers/ContainerRegistry');
  6. const Commands = require('./commands/Commands');
  7. const LayoutTreeParser = require('./commands/LayoutTreeParser');
  8. const LayoutTreeCrawler = require('./commands/LayoutTreeCrawler');
  9. const PrivateEventsListener = require('./events/PrivateEventsListener');
  10. const PublicEventsRegistry = require('./events/PublicEventsRegistry');
  11. const Element = require('./adapters/Element');
  12. class Navigation {
  13. constructor() {
  14. this.store = new Store();
  15. this.nativeEventsReceiver = new NativeEventsReceiver();
  16. this.uniqueIdProvider = new UniqueIdProvider();
  17. this.containerRegistry = new ContainerRegistry(this.store);
  18. this.layoutTreeParser = new LayoutTreeParser();
  19. this.layoutTreeCrawler = new LayoutTreeCrawler(this.uniqueIdProvider, this.store);
  20. this.nativeCommandsSender = new NativeCommandsSender();
  21. this.commands = new Commands(this.nativeCommandsSender, this.layoutTreeParser, this.layoutTreeCrawler);
  22. this.publicEventsRegistry = new PublicEventsRegistry(this.nativeEventsReceiver);
  23. this.privateEventsListener = new PrivateEventsListener(this.nativeEventsReceiver, this.store);
  24. this.privateEventsListener.listenAndHandlePrivateEvents();
  25. this.Element = Element;
  26. }
  27. registerContainer(containerName, getContainerFunc) {
  28. this.containerRegistry.registerContainer(containerName, getContainerFunc);
  29. }
  30. setRoot(params) {
  31. return this.commands.setRoot(params);
  32. }
  33. setDefaultOptions(options) {
  34. this.commands.setDefaultOptions(options);
  35. }
  36. setOptions(containerId, options) {
  37. this.commands.setOptions(containerId, options);
  38. }
  39. showModal(params) {
  40. return this.commands.showModal(params);
  41. }
  42. dismissModal(containerId) {
  43. return this.commands.dismissModal(containerId);
  44. }
  45. dismissAllModals() {
  46. return this.commands.dismissAllModals();
  47. }
  48. push(onContainerId, params) {
  49. return this.commands.push(onContainerId, params);
  50. }
  51. pop(containerId, params) {
  52. return this.commands.pop(containerId, params);
  53. }
  54. popTo(containerId) {
  55. return this.commands.popTo(containerId);
  56. }
  57. popToRoot(containerId) {
  58. return this.commands.popToRoot(containerId);
  59. }
  60. events() {
  61. return this.publicEventsRegistry;
  62. }
  63. showOverlay(type, options) {
  64. return this.commands.showOverlay(type, options);
  65. }
  66. dismissOverlay() {
  67. return this.commands.dismissOverlay();
  68. }
  69. }
  70. const singleton = new Navigation();
  71. module.exports = singleton;