|
|
@@ -4,6 +4,7 @@
|
|
|
[frontend.db.utils :as db-utils]
|
|
|
[frontend.handler.block :as block-handler]
|
|
|
[frontend.handler.editor :as editor-handler]
|
|
|
+ [frontend.handler.dnd :as editor-dnd-handler]
|
|
|
[frontend.modules.outliner.tree :as outliner-tree]
|
|
|
[frontend.util :as util]
|
|
|
[electron.ipc :as ipc]
|
|
|
@@ -163,10 +164,37 @@
|
|
|
(bean/->js (normalize-keyword-for-json (db-utils/pull (:db/id page))))))))
|
|
|
|
|
|
(def ^:export insert_block
|
|
|
+ (fn [block-uuid-or-page-name content ^js opts]
|
|
|
+ (let [{:keys [before sibling isPageBlock props]} (bean/->clj opts)
|
|
|
+ page-name (and isPageBlock block-uuid-or-page-name)
|
|
|
+ block-uuid (if isPageBlock nil (medley/uuid block-uuid-or-page-name))
|
|
|
+ new-block (editor-handler/api-insert-new-block!
|
|
|
+ content {:block-uuid block-uuid :sibling? sibling :page page-name})]
|
|
|
+
|
|
|
+ (bean/->js (normalize-keyword-for-json new-block)))))
|
|
|
+
|
|
|
+(def ^:export remove_block
|
|
|
+ (fn [block-uuid ^js opts]
|
|
|
+ (let [{:keys [includeChildren]} (bean/->clj opts)
|
|
|
+ repo (state/get-current-repo)]
|
|
|
+ (editor-handler/delete-block-aux!
|
|
|
+ {:block/uuid (medley/uuid block-uuid) :repo repo} false includeChildren))))
|
|
|
+
|
|
|
+(def ^:export update_block
|
|
|
(fn [block-uuid content ^js opts]
|
|
|
- (when-let [block-uuid (and block-uuid (medley/uuid block-uuid))]
|
|
|
- (let [{:keys [before sibling props]} (bean/->clj opts)]
|
|
|
- (editor-handler/api-insert-new-block! content {:block-uuid block-uuid :sibling? sibling})))))
|
|
|
+ (let [opts (and opts (bean/->clj opts))
|
|
|
+ repo (state/get-current-repo)]
|
|
|
+ (editor-handler/save-block! repo (medley/uuid block-uuid) content))))
|
|
|
+
|
|
|
+(def ^:export move_block
|
|
|
+ (fn [src-block-uuid target-block-uuid ^js opts]
|
|
|
+
|
|
|
+ (let [{:keys [before children]} (bean/->clj opts)
|
|
|
+ top? (boolean before)
|
|
|
+ nested? (boolean children)
|
|
|
+ src-block-uuid (db-model/query-block-by-uuid (medley/uuid src-block-uuid))
|
|
|
+ target-block-uuid (db-model/query-block-by-uuid (medley/uuid target-block-uuid))]
|
|
|
+ (editor-dnd-handler/move-block src-block-uuid target-block-uuid top? nested?))))
|
|
|
|
|
|
(def ^:export get_block
|
|
|
(fn [id-or-uuid]
|
|
|
@@ -176,6 +204,24 @@
|
|
|
(when (contains? ret :block/uuid)
|
|
|
(bean/->js (normalize-keyword-for-json ret))))))
|
|
|
|
|
|
+(def ^:export upsert_block_property
|
|
|
+ (fn [block-uuid key value]
|
|
|
+ (editor-handler/set-block-property! (medley/uuid block-uuid) key value)))
|
|
|
+
|
|
|
+(def ^:export remove_block_property
|
|
|
+ (fn [block-uuid key]
|
|
|
+ (editor-handler/remove-block-property! (medley/uuid block-uuid) key)))
|
|
|
+
|
|
|
+(def ^:export get_block_property
|
|
|
+ (fn [block-uuid key]
|
|
|
+ (when-let [block (db-model/query-block-by-uuid block-uuid)]
|
|
|
+ (get (:block/properties block) (keyword key)))))
|
|
|
+
|
|
|
+(def ^:export get_block_properties
|
|
|
+ (fn [block-uuid]
|
|
|
+ (when-let [block (db-model/query-block-by-uuid block-uuid)]
|
|
|
+ (bean/->js (normalize-keyword-for-json (:block/properties block))))))
|
|
|
+
|
|
|
(def ^:export get_current_page_blocks_tree
|
|
|
(fn []
|
|
|
(when-let [page (state/get-current-page)]
|