public void Close(ClosableViewType closableViewType)
 {
     if (_closableViewControllers.TryGetValue(closableViewType, out var controller))
     {
         controller.Close();
     }
 }
        protected void SetupClosableView <T>(T abstractView, ClosableViewType closableViewType) where T : AbstractView
        {
            SetupView(abstractView);

            var closableView           = abstractView.GetComponent <IClosableView>();
            var closableViewController = _closableViewControllerFactory.Create(closableView);

            _closableViewRegistrar.RegisterClosableView(closableViewType, closableViewController);
        }
        public bool IsViewOpen(ClosableViewType closableViewType)
        {
            if (_closableViewControllers.TryGetValue(closableViewType, out var controller))
            {
                return(controller.IsOpen);
            }

            return(false);
        }
        void IClosableViewRegistrar.RegisterClosableView(
            ClosableViewType closableViewType,
            IClosableViewController closableViewController)
        {
            _closableViewControllers.Add(closableViewType, closableViewController);

            closableViewController.OnViewOpen
            .Subscribe(_ => _onViewOpened.OnNext(closableViewType))
            .AddTo(Disposer);

            closableViewController.OnViewClose
            .Subscribe(_ => _onViewClosed.OnNext(closableViewType))
            .AddTo(Disposer);
        }