react-native-navigation的迁移库

Commands.ts 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import * as _ from 'lodash';
  2. import { OptionsProcessor } from './OptionsProcessor';
  3. export class Commands {
  4. private nativeCommandsSender;
  5. private layoutTreeParser;
  6. private layoutTreeCrawler;
  7. private optionsProcessor = new OptionsProcessor();
  8. constructor(nativeCommandsSender, layoutTreeParser, layoutTreeCrawler) {
  9. this.nativeCommandsSender = nativeCommandsSender;
  10. this.layoutTreeParser = layoutTreeParser;
  11. this.layoutTreeCrawler = layoutTreeCrawler;
  12. }
  13. setRoot(simpleApi) {
  14. const input = _.cloneDeep(simpleApi);
  15. const layout = this.layoutTreeParser.parse(input);
  16. this.layoutTreeCrawler.crawl(layout);
  17. return this.nativeCommandsSender.setRoot(layout);
  18. }
  19. setDefaultOptions(options) {
  20. const input = _.cloneDeep(options);
  21. this.optionsProcessor.processOptions(input, this.layoutTreeCrawler.store);
  22. this.nativeCommandsSender.setDefaultOptions(input);
  23. }
  24. setOptions(componentId, options) {
  25. const input = _.cloneDeep(options);
  26. this.optionsProcessor.processOptions(input, this.layoutTreeCrawler.store);
  27. this.nativeCommandsSender.setOptions(componentId, input);
  28. }
  29. showModal(simpleApi) {
  30. const input = _.cloneDeep(simpleApi);
  31. const layout = this.layoutTreeParser.parse(input);
  32. this.layoutTreeCrawler.crawl(layout);
  33. return this.nativeCommandsSender.showModal(layout);
  34. }
  35. dismissModal(id) {
  36. return this.nativeCommandsSender.dismissModal(id);
  37. }
  38. dismissAllModals() {
  39. return this.nativeCommandsSender.dismissAllModals();
  40. }
  41. push(onComponentId, componentData) {
  42. const input = _.cloneDeep(componentData);
  43. this.optionsProcessor.processOptions(input, this.layoutTreeCrawler.store);
  44. const layout = this.layoutTreeParser.parse(input);
  45. this.layoutTreeCrawler.crawl(layout);
  46. return this.nativeCommandsSender.push(onComponentId, layout);
  47. }
  48. pop(componentId, options) {
  49. return this.nativeCommandsSender.pop(componentId, options);
  50. }
  51. popTo(componentId) {
  52. return this.nativeCommandsSender.popTo(componentId);
  53. }
  54. popToRoot(componentId) {
  55. return this.nativeCommandsSender.popToRoot(componentId);
  56. }
  57. showOverlay(componentData) {
  58. const input = _.cloneDeep(componentData);
  59. this.optionsProcessor.processOptions(input, this.layoutTreeCrawler.store);
  60. const layout = this.layoutTreeParser.parse(input);
  61. this.layoutTreeCrawler.crawl(layout);
  62. return this.nativeCommandsSender.showOverlay(layout);
  63. }
  64. dismissOverlay(componentId) {
  65. return this.nativeCommandsSender.dismissOverlay(componentId);
  66. }
  67. }