|  | @@ -34,6 +34,7 @@
 | 
	
		
			
				|  |  |              [frontend.handler.user :as user-handler]
 | 
	
		
			
				|  |  |              [frontend.handler.whiteboard :as whiteboard-handler]
 | 
	
		
			
				|  |  |              [frontend.handler.recent :as recent-handler]
 | 
	
		
			
				|  |  | +            [frontend.handler.db-based.property :as db-property-handler]
 | 
	
		
			
				|  |  |              [frontend.mixins :as mixins]
 | 
	
		
			
				|  |  |              [frontend.mobile.action-bar :as action-bar]
 | 
	
		
			
				|  |  |              [frontend.mobile.footer :as footer]
 | 
	
	
		
			
				|  | @@ -875,7 +876,7 @@
 | 
	
		
			
				|  |  |    []
 | 
	
		
			
				|  |  |    nil)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -(rum/defcs ^:large-vars/cleanup-todo sidebar <
 | 
	
		
			
				|  |  | +(rum/defcs ^:large-vars/cleanup-todo root-container <
 | 
	
		
			
				|  |  |    (mixins/modal :modal/show?)
 | 
	
		
			
				|  |  |    rum/reactive
 | 
	
		
			
				|  |  |    (mixins/event-mixin
 | 
	
	
		
			
				|  | @@ -883,7 +884,8 @@
 | 
	
		
			
				|  |  |       (mixins/listen state js/window "pointerdown" hide-context-menu-and-clear-selection)
 | 
	
		
			
				|  |  |       (mixins/listen state js/window "keydown"
 | 
	
		
			
				|  |  |                      (fn [e]
 | 
	
		
			
				|  |  | -                      (when (= 27 (.-keyCode e))
 | 
	
		
			
				|  |  | +                      (cond
 | 
	
		
			
				|  |  | +                        (= 27 (.-keyCode e))
 | 
	
		
			
				|  |  |                          (if (and (state/modal-opened?)
 | 
	
		
			
				|  |  |                                   (not
 | 
	
		
			
				|  |  |                                    (and
 | 
	
	
		
			
				|  | @@ -891,7 +893,13 @@
 | 
	
		
			
				|  |  |                                     util/node-test?
 | 
	
		
			
				|  |  |                                     (state/editing?))))
 | 
	
		
			
				|  |  |                            (state/close-modal!)
 | 
	
		
			
				|  |  | -                          (hide-context-menu-and-clear-selection e)))))))
 | 
	
		
			
				|  |  | +                          (hide-context-menu-and-clear-selection e))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        (and (seq (state/get-selection-block-ids))
 | 
	
		
			
				|  |  | +                             (not (or (.-ctrlKey e) (.-metaKey e) (.-altKey e))))
 | 
	
		
			
				|  |  | +                        (let [shift? (.-shiftKey e)
 | 
	
		
			
				|  |  | +                              shortcut (if shift? (str "shift+" (.-key e)) (.-key e))]
 | 
	
		
			
				|  |  | +                          (db-property-handler/set-property-by-shortcut! shortcut)))))))
 | 
	
		
			
				|  |  |    [state route-match main-content]
 | 
	
		
			
				|  |  |    (let [{:keys [open-fn]} state
 | 
	
		
			
				|  |  |          current-repo (state/sub :git/current-repo)
 | 
	
	
		
			
				|  | @@ -958,7 +966,7 @@
 | 
	
		
			
				|  |  |                         (ui/focus-element (ui/main-node))))}
 | 
	
		
			
				|  |  |         (t :accessibility/skip-to-main-content)]
 | 
	
		
			
				|  |  |        [:div.#app-container (cond-> {} selection-mode?
 | 
	
		
			
				|  |  | -                             (assoc :class "blocks-selection-mode"))
 | 
	
		
			
				|  |  | +                                   (assoc :class "blocks-selection-mode"))
 | 
	
		
			
				|  |  |         [:div#left-container
 | 
	
		
			
				|  |  |          {:class (if (state/sub :ui/sidebar-open?) "overflow-hidden" "w-full")}
 | 
	
		
			
				|  |  |          (header/header {:open-fn        open-fn
 |