mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 22:25:01 +00:00
Split out property related fns
in order to make editor ns more maintainable
This commit is contained in:
committed by
Tienson Qin
parent
f73d964899
commit
9628fc52b9
@@ -64,6 +64,7 @@
|
||||
frontend.handler.common.plugin plugin-common-handler
|
||||
frontend.handler.common.developer dev-common-handler
|
||||
frontend.handler.config config-handler
|
||||
frontend.handler.editor.property editor-property
|
||||
frontend.handler.events events
|
||||
frontend.handler.global-config global-config-handler
|
||||
frontend.handler.ui ui-handler
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
[frontend.extensions.srs :as srs]
|
||||
[frontend.handler.common :as common-handler]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.handler.image :as image-handler]
|
||||
[frontend.handler.notification :as notification]
|
||||
[frontend.handler.page :as page-handler]
|
||||
@@ -31,8 +32,8 @@
|
||||
(rum/defc custom-context-menu-content
|
||||
[]
|
||||
[:.menu-links-wrapper
|
||||
(ui/menu-background-color #(editor-handler/batch-add-block-property! (state/get-selection-block-ids) :background-color %)
|
||||
#(editor-handler/batch-remove-block-property! (state/get-selection-block-ids) :background-color))
|
||||
(ui/menu-background-color #(editor-property/batch-add-block-property! (state/get-selection-block-ids) :background-color %)
|
||||
#(editor-property/batch-remove-block-property! (state/get-selection-block-ids) :background-color))
|
||||
|
||||
(ui/menu-heading #(editor-handler/batch-set-heading! (state/get-selection-block-ids) %)
|
||||
#(editor-handler/batch-set-heading! (state/get-selection-block-ids) true)
|
||||
@@ -157,9 +158,9 @@
|
||||
[:p (t :context-menu/template-exists-warning)]
|
||||
:error)
|
||||
(do
|
||||
(editor-handler/set-block-property! block-id :template title)
|
||||
(editor-property/set-block-property! block-id :template title)
|
||||
(when (false? template-including-parent?)
|
||||
(editor-handler/set-block-property! block-id :template-including-parent false))
|
||||
(editor-property/set-block-property! block-id :template-including-parent false))
|
||||
(state/hide-custom-context-menu!)))))))]
|
||||
[:hr.menu-separator]])
|
||||
(ui/menu-link
|
||||
@@ -176,8 +177,8 @@
|
||||
(when-let [block (db/entity [:block/uuid block-id])]
|
||||
(let [heading (-> block :block/properties :heading (or false))]
|
||||
[:.menu-links-wrapper
|
||||
(ui/menu-background-color #(editor-handler/set-block-property! block-id :background-color %)
|
||||
#(editor-handler/remove-block-property! block-id :background-color))
|
||||
(ui/menu-background-color #(editor-property/set-block-property! block-id :background-color %)
|
||||
#(editor-property/remove-block-property! block-id :background-color))
|
||||
|
||||
(ui/menu-heading heading
|
||||
#(editor-handler/set-heading! block-id %)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
[lambdaisland.glogi :as log]
|
||||
[frontend.extensions.sci :as sci]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[logseq.graph-parser.util :as gp-util]))
|
||||
|
||||
(defn built-in-custom-query?
|
||||
@@ -206,12 +207,12 @@
|
||||
(when (and current-block (not view-f) (nil? table-view?) (not page-list?))
|
||||
(if table?
|
||||
[:a.flex.ml-1.fade-link {:title "Switch to list view"
|
||||
:on-click (fn [] (editor-handler/set-block-property! current-block-uuid
|
||||
:on-click (fn [] (editor-property/set-block-property! current-block-uuid
|
||||
"query-table"
|
||||
false))}
|
||||
(ui/icon "list" {:style {:font-size 20}})]
|
||||
[:a.flex.ml-1.fade-link {:title "Switch to table view"
|
||||
:on-click (fn [] (editor-handler/set-block-property! current-block-uuid
|
||||
:on-click (fn [] (editor-property/set-block-property! current-block-uuid
|
||||
"query-table"
|
||||
true))}
|
||||
(ui/icon "table" {:style {:font-size 20}})]))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
[frontend.db :as db]
|
||||
[frontend.db.query-dsl :as query-dsl]
|
||||
[frontend.handler.common :as common-handler]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.state :as state]
|
||||
[frontend.util :as util]
|
||||
[frontend.util.clock :as clock]
|
||||
@@ -80,8 +80,8 @@
|
||||
[title column {:keys [sort-by-column sort-desc?]} block-id]
|
||||
[:th.whitespace-nowrap
|
||||
[:a {:on-click (fn []
|
||||
(editor-handler/set-block-property! block-id :query-sort-by (name column))
|
||||
(editor-handler/set-block-property! block-id :query-sort-desc (not sort-desc?)))}
|
||||
(editor-property/set-block-property! block-id :query-sort-by (name column))
|
||||
(editor-property/set-block-property! block-id :query-sort-desc (not sort-desc?)))}
|
||||
[:div.flex.items-center
|
||||
[:span.mr-1 title]
|
||||
(when (= sort-by-column column)
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
[frontend.db.utils :as db-utils]
|
||||
[frontend.fs :as fs]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.handler.page :as page-handler]
|
||||
[frontend.handler.assets :as assets-handler]
|
||||
[frontend.handler.notification :as notification]
|
||||
@@ -132,7 +133,7 @@
|
||||
(get-in highlight [:content :image])
|
||||
(js/Date.now))
|
||||
:hl-color (get-in highlight [:properties :color])}]
|
||||
(editor-handler/set-block-property! (:block/uuid block) k v))))
|
||||
(editor-property/set-block-property! (:block/uuid block) k v))))
|
||||
|
||||
(defn unlink-hl-area-image$
|
||||
[^js _viewer current hl]
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
[frontend.db-mixins :as db-mixins]
|
||||
[frontend.state :as state]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.components.block :as component-block]
|
||||
[frontend.components.macro :as component-macro]
|
||||
[frontend.components.select :as component-select]
|
||||
@@ -483,7 +484,7 @@
|
||||
:on-click (fn []
|
||||
(score-and-next-card 1 card card-index finished? phase review-records cb)
|
||||
(let [tomorrow (tc/to-string (t/plus (t/today) (t/days 1)))]
|
||||
(editor-handler/set-block-property! root-block-id card-next-schedule-property tomorrow)))})
|
||||
(editor-property/set-block-property! root-block-id card-next-schedule-property tomorrow)))})
|
||||
|
||||
(btn-with-shortcut {:btn-text (if (util/mobile?) "Hard" "Took a while to recall")
|
||||
:shortcut "t"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
[frontend.db.model :as model]
|
||||
[frontend.fs :as fs]
|
||||
[logseq.common.path :as path]
|
||||
[frontend.handler.editor :as editor]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.handler.file :as file-handler]
|
||||
[frontend.handler.page :as page-handler]
|
||||
[frontend.handler.ui :as ui-handler]
|
||||
@@ -33,7 +33,7 @@
|
||||
nil))]
|
||||
(let [id-property (:id (:block/properties block))]
|
||||
(when-not (= (str id-property) (str block-id))
|
||||
(editor/set-block-property! block-id "id" block-id)))))))
|
||||
(editor-property/set-block-property! block-id "id" block-id)))))))
|
||||
|
||||
(defn- handle-add-and-change!
|
||||
[repo path content db-content mtime backup?]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
(ns frontend.handler.dnd
|
||||
"Provides fns for drag n drop"
|
||||
(:require [frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.modules.outliner.core :as outliner-core]
|
||||
[frontend.modules.outliner.tree :as tree]
|
||||
[frontend.modules.outliner.transaction :as outliner-tx]
|
||||
@@ -20,7 +21,7 @@
|
||||
;; alt pressed, make a block-ref
|
||||
(and alt-key? (= (count blocks) 1))
|
||||
(do
|
||||
(editor-handler/set-block-property! (:block/uuid first-block)
|
||||
(editor-property/set-block-property! (:block/uuid first-block)
|
||||
:id
|
||||
(str (:block/uuid first-block)))
|
||||
(editor-handler/api-insert-new-block!
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
[frontend.handler.assets :as assets-handler]
|
||||
[frontend.handler.block :as block-handler]
|
||||
[frontend.handler.common :as common-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.handler.export.html :as export-html]
|
||||
[frontend.handler.export.text :as export-text]
|
||||
[frontend.handler.notification :as notification]
|
||||
@@ -62,10 +63,8 @@
|
||||
(defonce *asset-uploading? (atom false))
|
||||
(defonce *asset-uploading-process (atom 0))
|
||||
|
||||
(declare set-block-property!)
|
||||
(declare remove-block-property!)
|
||||
(declare batch-add-block-property!)
|
||||
(declare batch-remove-block-property!)
|
||||
(def clear-selection! editor-property/clear-selection!)
|
||||
(def edit-block! editor-property/edit-block!)
|
||||
|
||||
(defn get-block-own-order-list-type
|
||||
[block]
|
||||
@@ -74,12 +73,12 @@
|
||||
(defn set-block-own-order-list-type!
|
||||
[block type]
|
||||
(when-let [uuid (:block/uuid block)]
|
||||
(set-block-property! uuid :logseq.order-list-type (name type))))
|
||||
(editor-property/set-block-property! uuid :logseq.order-list-type (name type))))
|
||||
|
||||
(defn remove-block-own-order-list-type!
|
||||
[block]
|
||||
(when-let [uuid (:block/uuid block)]
|
||||
(remove-block-property! uuid :logseq.order-list-type)))
|
||||
(editor-property/remove-block-property! uuid :logseq.order-list-type)))
|
||||
|
||||
(defn own-order-number-list?
|
||||
[block]
|
||||
@@ -96,8 +95,8 @@
|
||||
blocks-uuids (some->> blocks (map :block/uuid) (remove nil?))
|
||||
order-list-prop :logseq.order-list-type]
|
||||
(if has-ordered?
|
||||
(batch-remove-block-property! blocks-uuids order-list-prop)
|
||||
(batch-add-block-property! blocks-uuids order-list-prop "number")))))
|
||||
(editor-property/batch-remove-block-property! blocks-uuids order-list-prop)
|
||||
(editor-property/batch-add-block-property! blocks-uuids order-list-prop "number")))))
|
||||
|
||||
(defn get-selection-and-format
|
||||
[]
|
||||
@@ -234,69 +233,7 @@
|
||||
(doseq [block blocks]
|
||||
(gdom-classes/remove block "block-highlight"))))
|
||||
|
||||
(defn- get-edit-input-id-with-block-id
|
||||
[block-id]
|
||||
(when-let [first-block (util/get-first-block-by-id block-id)]
|
||||
(string/replace (gobj/get first-block "id")
|
||||
"ls-block"
|
||||
"edit-block")))
|
||||
|
||||
(defn clear-selection!
|
||||
[]
|
||||
(state/clear-selection!))
|
||||
|
||||
(defn- text-range-by-lst-fst-line [content [direction pos]]
|
||||
(case direction
|
||||
:up
|
||||
(let [last-new-line (or (string/last-index-of content \newline) -1)
|
||||
end (+ last-new-line pos 1)]
|
||||
(subs content 0 end))
|
||||
:down
|
||||
(-> (string/split-lines content)
|
||||
first
|
||||
(or "")
|
||||
(subs 0 pos))))
|
||||
|
||||
;; id: block dom id, "ls-block-counter-uuid"
|
||||
(defn edit-block!
|
||||
([block pos id]
|
||||
(edit-block! block pos id nil))
|
||||
([block pos id {:keys [custom-content tail-len move-cursor? retry-times]
|
||||
:or {tail-len 0
|
||||
move-cursor? true
|
||||
retry-times 0}
|
||||
:as opts}]
|
||||
(when-not (> retry-times 2)
|
||||
(when-not config/publishing?
|
||||
(when-let [block-id (:block/uuid block)]
|
||||
(let [block (or (db/pull [:block/uuid block-id]) block)
|
||||
edit-input-id (if (uuid? id)
|
||||
(get-edit-input-id-with-block-id id)
|
||||
(-> (str (subs id 0 (- (count id) 36)) block-id)
|
||||
(string/replace "ls-block" "edit-block")))
|
||||
content (or custom-content (:block/content block) "")
|
||||
content-length (count content)
|
||||
text-range (cond
|
||||
(vector? pos)
|
||||
(text-range-by-lst-fst-line content pos)
|
||||
|
||||
(and (> tail-len 0) (>= (count content) tail-len))
|
||||
(subs content 0 (- (count content) tail-len))
|
||||
|
||||
(or (= :max pos) (<= content-length pos))
|
||||
content
|
||||
|
||||
:else
|
||||
(subs content 0 pos))
|
||||
content (-> (property/remove-built-in-properties (:block/format block)
|
||||
content)
|
||||
(drawer/remove-logbook))]
|
||||
(clear-selection!)
|
||||
(if edit-input-id
|
||||
(state/set-editing! edit-input-id content block text-range move-cursor?)
|
||||
;; Block may not be rendered yet
|
||||
(js/setTimeout (fn [] (edit-block! block pos id (update opts :retry-times inc))) 10))))))))
|
||||
|
||||
(defn- another-block-with-same-id-exists?
|
||||
[current-id block-id]
|
||||
(when-let [id (and (string? block-id) (parse-uuid block-id))]
|
||||
@@ -914,72 +851,6 @@
|
||||
:block/properties-order (or (keys properties) [])
|
||||
:block/content content})))
|
||||
|
||||
(defn- batch-set-block-property!
|
||||
"col: a collection of [block-id property-key property-value]."
|
||||
[col]
|
||||
#_:clj-kondo/ignore
|
||||
(when-let [repo (state/get-current-repo)]
|
||||
(let [col' (group-by first col)]
|
||||
(outliner-tx/transact!
|
||||
{:outliner-op :save-block}
|
||||
(doseq [[block-id items] col']
|
||||
(let [block-id (if (string? block-id) (uuid block-id) block-id)
|
||||
new-properties (zipmap (map second items)
|
||||
(map last items))]
|
||||
(when-let [block (db/entity [:block/uuid block-id])]
|
||||
(let [format (:block/format block)
|
||||
content (:block/content block)
|
||||
properties (:block/properties block)
|
||||
properties-text-values (:block/properties-text-values block)
|
||||
properties (-> (merge properties new-properties)
|
||||
gp-util/remove-nils-non-nested)
|
||||
properties-text-values (-> (merge properties-text-values new-properties)
|
||||
gp-util/remove-nils-non-nested)
|
||||
property-ks (->> (concat (:block/properties-order block)
|
||||
(map second items))
|
||||
(filter (set (keys properties)))
|
||||
distinct
|
||||
vec)
|
||||
content (property/remove-properties format content)
|
||||
kvs (for [key property-ks] [key (or (get properties-text-values key)
|
||||
(get properties key))])
|
||||
content (property/insert-properties format content kvs)
|
||||
content (property/remove-empty-properties content)
|
||||
block {:block/uuid block-id
|
||||
:block/properties properties
|
||||
:block/properties-order property-ks
|
||||
:block/properties-text-values properties-text-values
|
||||
:block/content content}]
|
||||
(outliner-core/save-block! block)))))))
|
||||
|
||||
(let [block-id (ffirst col)
|
||||
block-id (if (string? block-id) (uuid block-id) block-id)
|
||||
input-pos (or (state/get-edit-pos) :max)]
|
||||
;; update editing input content
|
||||
(when-let [editing-block (state/get-edit-block)]
|
||||
(when (= (:block/uuid editing-block) block-id)
|
||||
(edit-block! editing-block
|
||||
input-pos
|
||||
(state/get-edit-input-id)))))))
|
||||
|
||||
(defn batch-add-block-property!
|
||||
[block-ids property-key property-value]
|
||||
(batch-set-block-property! (map #(vector % property-key property-value) block-ids)))
|
||||
|
||||
(defn batch-remove-block-property!
|
||||
[block-ids property-key]
|
||||
(batch-set-block-property! (map #(vector % property-key nil) block-ids)))
|
||||
|
||||
(defn remove-block-property!
|
||||
[block-id key]
|
||||
(let [key (keyword key)]
|
||||
(batch-set-block-property! [[block-id key nil]])))
|
||||
|
||||
(defn set-block-property!
|
||||
[block-id key value]
|
||||
(let [key (keyword key)]
|
||||
(batch-set-block-property! [[block-id key value]])))
|
||||
|
||||
(defn set-block-query-properties!
|
||||
[block-id all-properties key add?]
|
||||
(when-let [block (db/entity [:block/uuid block-id])]
|
||||
@@ -993,8 +864,8 @@
|
||||
(remove #{key} query-properties))
|
||||
query-properties (vec query-properties)]
|
||||
(if (seq query-properties)
|
||||
(set-block-property! block-id :query-properties (str query-properties))
|
||||
(remove-block-property! block-id :query-properties)))))
|
||||
(editor-property/set-block-property! block-id :query-properties (str query-properties))
|
||||
(editor-property/remove-block-property! block-id :query-properties)))))
|
||||
|
||||
(defn set-block-timestamp!
|
||||
[block-id key value]
|
||||
@@ -1038,7 +909,7 @@
|
||||
[block-id :id (str block-id)])))
|
||||
block-ids)
|
||||
col (remove nil? col)]
|
||||
(batch-set-block-property! col)))
|
||||
(editor-property/batch-set-block-property! col)))
|
||||
|
||||
(defn copy-block-ref!
|
||||
([block-id]
|
||||
@@ -2031,9 +1902,9 @@
|
||||
:command :block-ref})
|
||||
|
||||
;; Save it so it'll be parsed correctly in the future
|
||||
(set-block-property! (:block/uuid chosen)
|
||||
:id
|
||||
uuid-string)
|
||||
(editor-property/set-block-property! (:block/uuid chosen)
|
||||
:id
|
||||
uuid-string)
|
||||
|
||||
(when-let [input (gdom/getElement id)]
|
||||
(.focus input)))))
|
||||
|
||||
141
src/main/frontend/handler/editor/property.cljs
Normal file
141
src/main/frontend/handler/editor/property.cljs
Normal file
@@ -0,0 +1,141 @@
|
||||
(ns frontend.handler.editor.property
|
||||
"Property related fns for the editor"
|
||||
(:require [clojure.string :as string]
|
||||
[frontend.config :as config]
|
||||
[frontend.db :as db]
|
||||
[frontend.modules.outliner.core :as outliner-core]
|
||||
[frontend.modules.outliner.transaction :as outliner-tx]
|
||||
[frontend.state :as state]
|
||||
[frontend.util :as util]
|
||||
[frontend.util.drawer :as drawer]
|
||||
[frontend.util.property :as property]
|
||||
[goog.object :as gobj]
|
||||
[logseq.graph-parser.util :as gp-util]))
|
||||
|
||||
(defn clear-selection!
|
||||
[]
|
||||
(state/clear-selection!))
|
||||
|
||||
(defn- get-edit-input-id-with-block-id
|
||||
[block-id]
|
||||
(when-let [first-block (util/get-first-block-by-id block-id)]
|
||||
(string/replace (gobj/get first-block "id")
|
||||
"ls-block"
|
||||
"edit-block")))
|
||||
|
||||
(defn- text-range-by-lst-fst-line [content [direction pos]]
|
||||
(case direction
|
||||
:up
|
||||
(let [last-new-line (or (string/last-index-of content \newline) -1)
|
||||
end (+ last-new-line pos 1)]
|
||||
(subs content 0 end))
|
||||
:down
|
||||
(-> (string/split-lines content)
|
||||
first
|
||||
(or "")
|
||||
(subs 0 pos))))
|
||||
|
||||
(defn edit-block!
|
||||
([block pos id]
|
||||
(edit-block! block pos id nil))
|
||||
([block pos id {:keys [custom-content tail-len move-cursor? retry-times]
|
||||
:or {tail-len 0
|
||||
move-cursor? true
|
||||
retry-times 0}
|
||||
:as opts}]
|
||||
(when-not (> retry-times 2)
|
||||
(when-not config/publishing?
|
||||
(when-let [block-id (:block/uuid block)]
|
||||
(let [block (or (db/pull [:block/uuid block-id]) block)
|
||||
edit-input-id (if (uuid? id)
|
||||
(get-edit-input-id-with-block-id id)
|
||||
(-> (str (subs id 0 (- (count id) 36)) block-id)
|
||||
(string/replace "ls-block" "edit-block")))
|
||||
content (or custom-content (:block/content block) "")
|
||||
content-length (count content)
|
||||
text-range (cond
|
||||
(vector? pos)
|
||||
(text-range-by-lst-fst-line content pos)
|
||||
|
||||
(and (> tail-len 0) (>= (count content) tail-len))
|
||||
(subs content 0 (- (count content) tail-len))
|
||||
|
||||
(or (= :max pos) (<= content-length pos))
|
||||
content
|
||||
|
||||
:else
|
||||
(subs content 0 pos))
|
||||
content (-> (property/remove-built-in-properties (:block/format block)
|
||||
content)
|
||||
(drawer/remove-logbook))]
|
||||
(clear-selection!)
|
||||
(if edit-input-id
|
||||
(state/set-editing! edit-input-id content block text-range move-cursor?)
|
||||
;; Block may not be rendered yet
|
||||
(js/setTimeout (fn [] (edit-block! block pos id (update opts :retry-times inc))) 10))))))))
|
||||
|
||||
(defn batch-set-block-property!
|
||||
"col: a collection of [block-id property-key property-value]."
|
||||
[col]
|
||||
#_:clj-kondo/ignore
|
||||
(when-let [repo (state/get-current-repo)]
|
||||
(let [col' (group-by first col)]
|
||||
(outliner-tx/transact!
|
||||
{:outliner-op :save-block}
|
||||
(doseq [[block-id items] col']
|
||||
(let [block-id (if (string? block-id) (uuid block-id) block-id)
|
||||
new-properties (zipmap (map second items)
|
||||
(map last items))]
|
||||
(when-let [block (db/entity [:block/uuid block-id])]
|
||||
(let [format (:block/format block)
|
||||
content (:block/content block)
|
||||
properties (:block/properties block)
|
||||
properties-text-values (:block/properties-text-values block)
|
||||
properties (-> (merge properties new-properties)
|
||||
gp-util/remove-nils-non-nested)
|
||||
properties-text-values (-> (merge properties-text-values new-properties)
|
||||
gp-util/remove-nils-non-nested)
|
||||
property-ks (->> (concat (:block/properties-order block)
|
||||
(map second items))
|
||||
(filter (set (keys properties)))
|
||||
distinct
|
||||
vec)
|
||||
content (property/remove-properties format content)
|
||||
kvs (for [key property-ks] [key (or (get properties-text-values key)
|
||||
(get properties key))])
|
||||
content (property/insert-properties format content kvs)
|
||||
content (property/remove-empty-properties content)
|
||||
block {:block/uuid block-id
|
||||
:block/properties properties
|
||||
:block/properties-order property-ks
|
||||
:block/properties-text-values properties-text-values
|
||||
:block/content content}]
|
||||
(outliner-core/save-block! block)))))))
|
||||
|
||||
(let [block-id (ffirst col)
|
||||
block-id (if (string? block-id) (uuid block-id) block-id)
|
||||
input-pos (or (state/get-edit-pos) :max)]
|
||||
;; update editing input content
|
||||
(when-let [editing-block (state/get-edit-block)]
|
||||
(when (= (:block/uuid editing-block) block-id)
|
||||
(edit-block! editing-block
|
||||
input-pos
|
||||
(state/get-edit-input-id)))))))
|
||||
|
||||
(defn batch-add-block-property!
|
||||
[block-ids property-key property-value]
|
||||
(batch-set-block-property! (map #(vector % property-key property-value) block-ids)))
|
||||
|
||||
(defn batch-remove-block-property!
|
||||
[block-ids property-key]
|
||||
(batch-set-block-property! (map #(vector % property-key nil) block-ids)))
|
||||
|
||||
(defn remove-block-property!
|
||||
[block-id key]
|
||||
(let [key (keyword key)]
|
||||
(batch-set-block-property! [[block-id key nil]])))
|
||||
|
||||
(defn set-block-property!
|
||||
[block-id key value]
|
||||
(let [key (keyword key)]
|
||||
(batch-set-block-property! [[block-id key value]])))
|
||||
@@ -21,6 +21,7 @@
|
||||
[frontend.fs :as fs]
|
||||
[frontend.handler.dnd :as editor-dnd-handler]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
[frontend.handler.editor.property :as editor-property]
|
||||
[frontend.handler.export :as export-handler]
|
||||
[frontend.handler.page :as page-handler]
|
||||
[frontend.handler.plugin :as plugin-handler]
|
||||
@@ -733,11 +734,11 @@
|
||||
|
||||
(def ^:export upsert_block_property
|
||||
(fn [block-uuid key value]
|
||||
(editor-handler/set-block-property! (sdk-utils/uuid-or-throw-error block-uuid) key value)))
|
||||
(editor-property/set-block-property! (sdk-utils/uuid-or-throw-error block-uuid) key value)))
|
||||
|
||||
(def ^:export remove_block_property
|
||||
(fn [block-uuid key]
|
||||
(editor-handler/remove-block-property! (sdk-utils/uuid-or-throw-error block-uuid) key)))
|
||||
(editor-property/remove-block-property! (sdk-utils/uuid-or-throw-error block-uuid) key)))
|
||||
|
||||
(def ^:export get_block_property
|
||||
(fn [block-uuid key]
|
||||
@@ -986,14 +987,14 @@
|
||||
exist? (page-handler/template-exists? template-name)]
|
||||
(if (or (not exist?) (true? overwrite))
|
||||
(do (when-let [old-target (and exist? (db-model/get-template-by-name template-name))]
|
||||
(editor-handler/remove-block-property! (:block/uuid old-target) :template))
|
||||
(editor-handler/set-block-property! target-uuid :template template-name))
|
||||
(editor-property/remove-block-property! (:block/uuid old-target) :template))
|
||||
(editor-property/set-block-property! target-uuid :template template-name))
|
||||
(throw (js/Error. "Template already exists!"))))))
|
||||
|
||||
(defn ^:export remove_template
|
||||
[name]
|
||||
(when-let [target (db-model/get-template-by-name name)]
|
||||
(editor-handler/remove-block-property! (:block/uuid target) :template)))
|
||||
(editor-property/remove-block-property! (:block/uuid target) :template)))
|
||||
|
||||
;; search
|
||||
(defn ^:export search
|
||||
|
||||
Reference in New Issue
Block a user