|
@@ -1,14 +1,18 @@
|
|
(ns ^:no-doc logseq.api
|
|
(ns ^:no-doc logseq.api
|
|
- (:require [camel-snake-kebab.core :as csk]
|
|
|
|
- [cljs-bean.core :as bean]
|
|
|
|
|
|
+ (:require [cljs-bean.core :as bean]
|
|
[cljs.reader]
|
|
[cljs.reader]
|
|
|
|
+ [logseq.sdk.core]
|
|
|
|
+ [logseq.sdk.utils :as sdk-utils]
|
|
|
|
+ [logseq.sdk.ui :as sdk-ui]
|
|
|
|
+ [logseq.sdk.git :as sdk-git]
|
|
|
|
+ [logseq.sdk.assets :as sdk-assets]
|
|
[clojure.string :as string]
|
|
[clojure.string :as string]
|
|
- [clojure.walk :as walk]
|
|
|
|
[datascript.core :as d]
|
|
[datascript.core :as d]
|
|
[electron.ipc :as ipc]
|
|
[electron.ipc :as ipc]
|
|
[frontend.commands :as commands]
|
|
[frontend.commands :as commands]
|
|
[frontend.components.plugins :as plugins]
|
|
[frontend.components.plugins :as plugins]
|
|
[frontend.config :as config]
|
|
[frontend.config :as config]
|
|
|
|
+ [frontend.handler.config :as config-handler]
|
|
[frontend.db :as db]
|
|
[frontend.db :as db]
|
|
[frontend.db.model :as db-model]
|
|
[frontend.db.model :as db-model]
|
|
[frontend.db.query-dsl :as query-dsl]
|
|
[frontend.db.query-dsl :as query-dsl]
|
|
@@ -19,7 +23,6 @@
|
|
[frontend.handler.dnd :as editor-dnd-handler]
|
|
[frontend.handler.dnd :as editor-dnd-handler]
|
|
[frontend.handler.editor :as editor-handler]
|
|
[frontend.handler.editor :as editor-handler]
|
|
[frontend.handler.export :as export-handler]
|
|
[frontend.handler.export :as export-handler]
|
|
- [frontend.handler.notification :as notification]
|
|
|
|
[frontend.handler.page :as page-handler]
|
|
[frontend.handler.page :as page-handler]
|
|
[frontend.handler.plugin :as plugin-handler]
|
|
[frontend.handler.plugin :as plugin-handler]
|
|
[frontend.handler.common.plugin :as plugin-common-handler]
|
|
[frontend.handler.common.plugin :as plugin-common-handler]
|
|
@@ -36,7 +39,6 @@
|
|
[lambdaisland.glogi :as log]
|
|
[lambdaisland.glogi :as log]
|
|
[promesa.core :as p]
|
|
[promesa.core :as p]
|
|
[reitit.frontend.easy :as rfe]
|
|
[reitit.frontend.easy :as rfe]
|
|
- [sci.core :as sci]
|
|
|
|
[frontend.version :as fv]
|
|
[frontend.version :as fv]
|
|
[frontend.handler.shell :as shell]
|
|
[frontend.handler.shell :as shell]
|
|
[frontend.modules.layout.core]
|
|
[frontend.modules.layout.core]
|
|
@@ -44,41 +46,6 @@
|
|
[frontend.handler.search :as search-handler]))
|
|
[frontend.handler.search :as search-handler]))
|
|
|
|
|
|
;; helpers
|
|
;; helpers
|
|
-(defn- normalize-keyword-for-json
|
|
|
|
- ([input] (normalize-keyword-for-json input true))
|
|
|
|
- ([input camel-case?]
|
|
|
|
- (when input
|
|
|
|
- (walk/postwalk
|
|
|
|
- (fn [a]
|
|
|
|
- (cond
|
|
|
|
- (keyword? a)
|
|
|
|
- (cond-> (name a)
|
|
|
|
- camel-case?
|
|
|
|
- (csk/->camelCase))
|
|
|
|
-
|
|
|
|
- (uuid? a) (str a)
|
|
|
|
- :else a)) input))))
|
|
|
|
-
|
|
|
|
-(defn- uuid-or-throw-error
|
|
|
|
- [s]
|
|
|
|
- (cond
|
|
|
|
- (uuid? s)
|
|
|
|
- s
|
|
|
|
-
|
|
|
|
- (util/uuid-string? s)
|
|
|
|
- (uuid s)
|
|
|
|
-
|
|
|
|
- :else
|
|
|
|
- (throw (js/Error. (str s " is not a valid UUID string.")))))
|
|
|
|
-
|
|
|
|
-(defn- parse-hiccup-ui
|
|
|
|
- [input]
|
|
|
|
- (when (string? input)
|
|
|
|
- (try
|
|
|
|
- (sci/eval-string input {:preset :termination-safe})
|
|
|
|
- (catch :default e
|
|
|
|
- (js/console.error "[parse hiccup error]" e) input))))
|
|
|
|
-
|
|
|
|
(defn ^:export install-plugin-hook
|
|
(defn ^:export install-plugin-hook
|
|
[pid hook ^js opts]
|
|
[pid hook ^js opts]
|
|
(state/install-plugin-hook pid hook (bean/->clj opts)))
|
|
(state/install-plugin-hook pid hook (bean/->clj opts)))
|
|
@@ -100,7 +67,7 @@
|
|
(subs % 1)
|
|
(subs % 1)
|
|
(keyword %)))
|
|
(keyword %)))
|
|
(get-in @state/state)
|
|
(get-in @state/state)
|
|
- (normalize-keyword-for-json)
|
|
|
|
|
|
+ (sdk-utils/normalize-keyword-for-json)
|
|
(bean/->js))))
|
|
(bean/->js))))
|
|
|
|
|
|
(defn ^:export set_state_from_store
|
|
(defn ^:export set_state_from_store
|
|
@@ -117,32 +84,39 @@
|
|
;; get app base info
|
|
;; get app base info
|
|
[]
|
|
[]
|
|
(bean/->js
|
|
(bean/->js
|
|
- (normalize-keyword-for-json
|
|
|
|
- {:version fv/version})))
|
|
|
|
|
|
+ (sdk-utils/normalize-keyword-for-json
|
|
|
|
+ {:version fv/version})))
|
|
|
|
|
|
(def ^:export get_user_configs
|
|
(def ^:export get_user_configs
|
|
(fn []
|
|
(fn []
|
|
(bean/->js
|
|
(bean/->js
|
|
- (normalize-keyword-for-json
|
|
|
|
- {:preferred-language (:preferred-language @state/state)
|
|
|
|
- :preferred-theme-mode (:ui/theme @state/state)
|
|
|
|
- :preferred-format (state/get-preferred-format)
|
|
|
|
- :preferred-workflow (state/get-preferred-workflow)
|
|
|
|
- :preferred-todo (state/get-preferred-todo)
|
|
|
|
- :preferred-date-format (state/get-date-formatter)
|
|
|
|
- :preferred-start-of-week (state/get-start-of-week)
|
|
|
|
- :current-graph (state/get-current-repo)
|
|
|
|
- :show-brackets (state/show-brackets?)
|
|
|
|
- :enabled-journals (state/enable-journals?)
|
|
|
|
- :enabled-flashcards (state/enable-flashcards?)
|
|
|
|
- :me (state/get-me)}))))
|
|
|
|
|
|
+ (sdk-utils/normalize-keyword-for-json
|
|
|
|
+ {:preferred-language (:preferred-language @state/state)
|
|
|
|
+ :preferred-theme-mode (:ui/theme @state/state)
|
|
|
|
+ :preferred-format (state/get-preferred-format)
|
|
|
|
+ :preferred-workflow (state/get-preferred-workflow)
|
|
|
|
+ :preferred-todo (state/get-preferred-todo)
|
|
|
|
+ :preferred-date-format (state/get-date-formatter)
|
|
|
|
+ :preferred-start-of-week (state/get-start-of-week)
|
|
|
|
+ :current-graph (state/get-current-repo)
|
|
|
|
+ :show-brackets (state/show-brackets?)
|
|
|
|
+ :enabled-journals (state/enable-journals?)
|
|
|
|
+ :enabled-flashcards (state/enable-flashcards?)
|
|
|
|
+ :me (state/get-me)}))))
|
|
|
|
|
|
(def ^:export get_current_graph_configs
|
|
(def ^:export get_current_graph_configs
|
|
- (fn []
|
|
|
|
|
|
+ (fn [& keys]
|
|
(some-> (state/get-config)
|
|
(some-> (state/get-config)
|
|
- (normalize-keyword-for-json)
|
|
|
|
|
|
+ (#(if (seq keys) (get-in % (map keyword keys)) %))
|
|
(bean/->js))))
|
|
(bean/->js))))
|
|
|
|
|
|
|
|
+(def ^:export set_current_graph_configs
|
|
|
|
+ (fn [^js configs]
|
|
|
|
+ (when-let [configs (bean/->clj configs)]
|
|
|
|
+ (when (map? configs)
|
|
|
|
+ (doseq [[k v] configs]
|
|
|
|
+ (config-handler/set-config! k v))))))
|
|
|
|
+
|
|
(def ^:export get_current_graph_favorites
|
|
(def ^:export get_current_graph_favorites
|
|
(fn []
|
|
(fn []
|
|
(some->> (:favorites (state/get-config))
|
|
(some->> (:favorites (state/get-config))
|
|
@@ -157,6 +131,14 @@
|
|
(filter string?)
|
|
(filter string?)
|
|
(bean/->js))))
|
|
(bean/->js))))
|
|
|
|
|
|
|
|
+(def ^:export get_current_graph_templates
|
|
|
|
+ (fn []
|
|
|
|
+ (when-let [_repo (state/get-current-repo)]
|
|
|
|
+ (some-> (db-model/get-all-templates)
|
|
|
|
+ (update-vals #(db-model/pull-block %))
|
|
|
|
+ (sdk-utils/normalize-keyword-for-json)
|
|
|
|
+ (bean/->js)))))
|
|
|
|
+
|
|
(def ^:export get_current_graph
|
|
(def ^:export get_current_graph
|
|
(fn []
|
|
(fn []
|
|
(when-let [repo (state/get-current-repo)]
|
|
(when-let [repo (state/get-current-repo)]
|
|
@@ -184,7 +166,7 @@
|
|
(def ^:export save_plugin_config
|
|
(def ^:export save_plugin_config
|
|
(fn [path ^js data]
|
|
(fn [path ^js data]
|
|
(let [repo ""
|
|
(let [repo ""
|
|
-
|
|
|
|
|
|
+
|
|
path (util/node-path.join path "package.json")]
|
|
path (util/node-path.join path "package.json")]
|
|
(fs/write-file! repo nil path (js/JSON.stringify data nil 2) {:skip-compare? true}))))
|
|
(fs/write-file! repo nil path (js/JSON.stringify data nil 2) {:skip-compare? true}))))
|
|
|
|
|
|
@@ -297,8 +279,8 @@
|
|
(plugin-handler/get-ls-dotdir-root))
|
|
(plugin-handler/get-ls-dotdir-root))
|
|
plugin-id (util/node-path.basename plugin-id)
|
|
plugin-id (util/node-path.basename plugin-id)
|
|
exist? (fs/file-exists?
|
|
exist? (fs/file-exists?
|
|
- (util/node-path.join root "storages" plugin-id)
|
|
|
|
- file)]
|
|
|
|
|
|
+ (util/node-path.join root "storages" plugin-id)
|
|
|
|
+ file)]
|
|
exist?)))
|
|
exist?)))
|
|
|
|
|
|
(def ^:export clear_plugin_storage_files
|
|
(def ^:export clear_plugin_storage_files
|
|
@@ -319,8 +301,8 @@
|
|
^js files (ipc/ipc :listdir files-path)]
|
|
^js files (ipc/ipc :listdir files-path)]
|
|
(when (js-iterable? files)
|
|
(when (js-iterable? files)
|
|
(bean/->js
|
|
(bean/->js
|
|
- (map #(some-> (string/replace-first % files-path "")
|
|
|
|
- (string/replace #"^/+" "")) files))))))
|
|
|
|
|
|
+ (map #(some-> (string/replace-first % files-path "")
|
|
|
|
+ (string/replace #"^/+" "")) files))))))
|
|
|
|
|
|
(def ^:export load_user_preferences
|
|
(def ^:export load_user_preferences
|
|
(fn []
|
|
(fn []
|
|
@@ -356,8 +338,8 @@
|
|
(fn [pid ^js cmd-actions]
|
|
(fn [pid ^js cmd-actions]
|
|
(when-let [[cmd actions] (bean/->clj cmd-actions)]
|
|
(when-let [[cmd actions] (bean/->clj cmd-actions)]
|
|
(plugin-handler/register-plugin-slash-command
|
|
(plugin-handler/register-plugin-slash-command
|
|
- pid [cmd (mapv #(into [(keyword (first %))]
|
|
|
|
- (rest %)) actions)]))))
|
|
|
|
|
|
+ pid [cmd (mapv #(into [(keyword (first %))]
|
|
|
|
+ (rest %)) actions)]))))
|
|
|
|
|
|
(def ^:export register_plugin_simple_command
|
|
(def ^:export register_plugin_simple_command
|
|
(fn [pid ^js cmd-action palette?]
|
|
(fn [pid ^js cmd-action palette?]
|
|
@@ -414,7 +396,7 @@
|
|
(fn [pid type ^js opts]
|
|
(fn [pid type ^js opts]
|
|
(when-let [opts (bean/->clj opts)]
|
|
(when-let [opts (bean/->clj opts)]
|
|
(plugin-handler/register-plugin-ui-item
|
|
(plugin-handler/register-plugin-ui-item
|
|
- pid (assoc opts :type type)))))
|
|
|
|
|
|
+ pid (assoc opts :type type)))))
|
|
|
|
|
|
;; app
|
|
;; app
|
|
(def ^:export relaunch
|
|
(def ^:export relaunch
|
|
@@ -465,16 +447,16 @@
|
|
(def ^:export push_state
|
|
(def ^:export push_state
|
|
(fn [^js k ^js params ^js query]
|
|
(fn [^js k ^js params ^js query]
|
|
(rfe/push-state
|
|
(rfe/push-state
|
|
- (keyword k)
|
|
|
|
- (bean/->clj params)
|
|
|
|
- (bean/->clj query))))
|
|
|
|
|
|
+ (keyword k)
|
|
|
|
+ (bean/->clj params)
|
|
|
|
+ (bean/->clj query))))
|
|
|
|
|
|
(def ^:export replace_state
|
|
(def ^:export replace_state
|
|
(fn [^js k ^js params ^js query]
|
|
(fn [^js k ^js params ^js query]
|
|
(rfe/replace-state
|
|
(rfe/replace-state
|
|
- (keyword k)
|
|
|
|
- (bean/->clj params)
|
|
|
|
- (bean/->clj query))))
|
|
|
|
|
|
+ (keyword k)
|
|
|
|
+ (bean/->clj params)
|
|
|
|
+ (bean/->clj query))))
|
|
|
|
|
|
(defn ^:export get_external_plugin
|
|
(defn ^:export get_external_plugin
|
|
[pid]
|
|
[pid]
|
|
@@ -517,7 +499,7 @@
|
|
(def ^:export get_editing_cursor_position
|
|
(def ^:export get_editing_cursor_position
|
|
(fn []
|
|
(fn []
|
|
(when-let [input-id (state/get-edit-input-id)]
|
|
(when-let [input-id (state/get-edit-input-id)]
|
|
- (bean/->js (normalize-keyword-for-json (cursor/get-caret-pos (gdom/getElement input-id)))))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json (cursor/get-caret-pos (gdom/getElement input-id)))))))
|
|
|
|
|
|
(def ^:export get_editing_block_content
|
|
(def ^:export get_editing_block_content
|
|
(fn []
|
|
(fn []
|
|
@@ -529,13 +511,13 @@
|
|
(let [blocks (->> blocks
|
|
(let [blocks (->> blocks
|
|
(map (fn [^js el] (some-> (.getAttribute el "blockid")
|
|
(map (fn [^js el] (some-> (.getAttribute el "blockid")
|
|
(db-model/query-block-by-uuid)))))]
|
|
(db-model/query-block-by-uuid)))))]
|
|
- (bean/->js (normalize-keyword-for-json blocks))))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json blocks))))))
|
|
|
|
|
|
(def ^:export get_current_page
|
|
(def ^:export get_current_page
|
|
(fn []
|
|
(fn []
|
|
(when-let [page (state/get-current-page)]
|
|
(when-let [page (state/get-current-page)]
|
|
(when-let [page (db-model/get-page page)]
|
|
(when-let [page (db-model/get-page page)]
|
|
- (bean/->js (normalize-keyword-for-json (db-utils/pull (:db/id page))))))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json (db-utils/pull (:db/id page))))))))
|
|
|
|
|
|
(def ^:export get_page
|
|
(def ^:export get_page
|
|
(fn [id-or-page-name]
|
|
(fn [id-or-page-name]
|
|
@@ -543,12 +525,12 @@
|
|
(number? id-or-page-name) (db-utils/pull id-or-page-name)
|
|
(number? id-or-page-name) (db-utils/pull id-or-page-name)
|
|
(string? id-or-page-name) (db-model/get-page id-or-page-name))]
|
|
(string? id-or-page-name) (db-model/get-page id-or-page-name))]
|
|
(when-not (contains? page :block/left)
|
|
(when-not (contains? page :block/left)
|
|
- (bean/->js (normalize-keyword-for-json (db-utils/pull (:db/id page))))))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json (db-utils/pull (:db/id page))))))))
|
|
|
|
|
|
(def ^:export get_all_pages
|
|
(def ^:export get_all_pages
|
|
(fn [repo]
|
|
(fn [repo]
|
|
(let [pages (page-handler/get-all-pages repo)]
|
|
(let [pages (page-handler/get-all-pages repo)]
|
|
- (bean/->js (normalize-keyword-for-json pages)))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json pages)))))
|
|
|
|
|
|
(def ^:export create_page
|
|
(def ^:export create_page
|
|
(fn [name ^js properties ^js opts]
|
|
(fn [name ^js properties ^js opts]
|
|
@@ -557,16 +539,16 @@
|
|
(let [properties (bean/->clj properties)
|
|
(let [properties (bean/->clj properties)
|
|
{:keys [redirect createFirstBlock format journal]} (bean/->clj opts)
|
|
{:keys [redirect createFirstBlock format journal]} (bean/->clj opts)
|
|
name (page-handler/create!
|
|
name (page-handler/create!
|
|
- name
|
|
|
|
- {:redirect? (if (boolean? redirect) redirect true)
|
|
|
|
- :journal? journal
|
|
|
|
- :create-first-block? (if (boolean? createFirstBlock) createFirstBlock true)
|
|
|
|
- :format format
|
|
|
|
- :properties properties})]
|
|
|
|
|
|
+ name
|
|
|
|
+ {:redirect? (if (boolean? redirect) redirect true)
|
|
|
|
+ :journal? journal
|
|
|
|
+ :create-first-block? (if (boolean? createFirstBlock) createFirstBlock true)
|
|
|
|
+ :format format
|
|
|
|
+ :properties properties})]
|
|
(db-model/get-page name)))
|
|
(db-model/get-page name)))
|
|
(:db/id)
|
|
(:db/id)
|
|
(db-utils/pull)
|
|
(db-utils/pull)
|
|
- (normalize-keyword-for-json)
|
|
|
|
|
|
+ (sdk-utils/normalize-keyword-for-json)
|
|
(bean/->js))))
|
|
(bean/->js))))
|
|
|
|
|
|
(def ^:export delete_page
|
|
(def ^:export delete_page
|
|
@@ -578,19 +560,19 @@
|
|
|
|
|
|
(defn ^:export open_in_right_sidebar
|
|
(defn ^:export open_in_right_sidebar
|
|
[block-uuid]
|
|
[block-uuid]
|
|
- (editor-handler/open-block-in-sidebar! (uuid-or-throw-error block-uuid)))
|
|
|
|
|
|
+ (editor-handler/open-block-in-sidebar! (sdk-utils/uuid-or-throw-error block-uuid)))
|
|
|
|
|
|
(defn ^:export new_block_uuid []
|
|
(defn ^:export new_block_uuid []
|
|
(str (db/new-block-id)))
|
|
(str (db/new-block-id)))
|
|
|
|
|
|
(def ^:export select_block
|
|
(def ^:export select_block
|
|
(fn [block-uuid]
|
|
(fn [block-uuid]
|
|
- (when-let [block (db-model/get-block-by-uuid (uuid-or-throw-error block-uuid))]
|
|
|
|
|
|
+ (when-let [block (db-model/get-block-by-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
|
|
(editor-handler/select-block! (:block/uuid block)) nil)))
|
|
(editor-handler/select-block! (:block/uuid block)) nil)))
|
|
|
|
|
|
(def ^:export edit_block
|
|
(def ^:export edit_block
|
|
(fn [block-uuid ^js opts]
|
|
(fn [block-uuid ^js opts]
|
|
- (when-let [block-uuid (and block-uuid (uuid-or-throw-error block-uuid))]
|
|
|
|
|
|
+ (when-let [block-uuid (and block-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
|
|
(when-let [block (db-model/query-block-by-uuid block-uuid)]
|
|
(when-let [block (db-model/query-block-by-uuid block-uuid)]
|
|
(let [{:keys [pos] :or {pos :max}} (bean/->clj opts)]
|
|
(let [{:keys [pos] :or {pos :max}} (bean/->clj opts)]
|
|
(editor-handler/edit-block! block pos block-uuid))))))
|
|
(editor-handler/edit-block! block pos block-uuid))))))
|
|
@@ -603,15 +585,15 @@
|
|
[page-name block-uuid] (if (util/uuid-string? block-uuid-or-page-name)
|
|
[page-name block-uuid] (if (util/uuid-string? block-uuid-or-page-name)
|
|
[nil (uuid block-uuid-or-page-name)]
|
|
[nil (uuid block-uuid-or-page-name)]
|
|
[block-uuid-or-page-name nil])
|
|
[block-uuid-or-page-name nil])
|
|
- page-name (when page-name (util/page-name-sanity-lc page-name))
|
|
|
|
- _ (when (and page-name (not (db/entity [:block/name page-name])))
|
|
|
|
- (page-handler/create! block-uuid-or-page-name {:create-first-block? false}))
|
|
|
|
|
|
+ page-name (when page-name (util/page-name-sanity-lc page-name))
|
|
|
|
+ _ (when (and page-name (not (db/entity [:block/name page-name])))
|
|
|
|
+ (page-handler/create! block-uuid-or-page-name {:create-first-block? false}))
|
|
custom-uuid (or customUUID (:id properties))
|
|
custom-uuid (or customUUID (:id properties))
|
|
- custom-uuid (when custom-uuid (uuid-or-throw-error custom-uuid))
|
|
|
|
|
|
+ custom-uuid (when custom-uuid (sdk-utils/uuid-or-throw-error custom-uuid))
|
|
edit-block? (if (nil? focus) true focus)
|
|
edit-block? (if (nil? focus) true focus)
|
|
_ (when (and custom-uuid (db-model/query-block-by-uuid custom-uuid))
|
|
_ (when (and custom-uuid (db-model/query-block-by-uuid custom-uuid))
|
|
(throw (js/Error.
|
|
(throw (js/Error.
|
|
- (util/format "Custom block UUID already exists (%s)." custom-uuid))))
|
|
|
|
|
|
+ (util/format "Custom block UUID already exists (%s)." custom-uuid))))
|
|
block-uuid' (if (and (not sibling) before block-uuid)
|
|
block-uuid' (if (and (not sibling) before block-uuid)
|
|
(let [block (db/entity [:block/uuid block-uuid])
|
|
(let [block (db/entity [:block/uuid block-uuid])
|
|
first-child (db-model/get-by-parent-&-left (db/get-db)
|
|
first-child (db-model/get-by-parent-&-left (db/get-db)
|
|
@@ -629,32 +611,32 @@
|
|
false
|
|
false
|
|
before?)
|
|
before?)
|
|
new-block (editor-handler/api-insert-new-block!
|
|
new-block (editor-handler/api-insert-new-block!
|
|
- content
|
|
|
|
- {:block-uuid block-uuid'
|
|
|
|
- :sibling? sibling?
|
|
|
|
- :before? before?
|
|
|
|
- :edit-block? edit-block?
|
|
|
|
- :page page-name
|
|
|
|
- :custom-uuid custom-uuid
|
|
|
|
- :properties (merge properties
|
|
|
|
- (when custom-uuid {:id custom-uuid}))})]
|
|
|
|
- (bean/->js (normalize-keyword-for-json new-block)))))
|
|
|
|
|
|
+ content
|
|
|
|
+ {:block-uuid block-uuid'
|
|
|
|
+ :sibling? sibling?
|
|
|
|
+ :before? before?
|
|
|
|
+ :edit-block? edit-block?
|
|
|
|
+ :page page-name
|
|
|
|
+ :custom-uuid custom-uuid
|
|
|
|
+ :properties (merge properties
|
|
|
|
+ (when custom-uuid {:id custom-uuid}))})]
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json new-block)))))
|
|
|
|
|
|
(def ^:export insert_batch_block
|
|
(def ^:export insert_batch_block
|
|
(fn [block-uuid ^js batch-blocks ^js opts]
|
|
(fn [block-uuid ^js batch-blocks ^js opts]
|
|
- (when-let [block (db-model/query-block-by-uuid (uuid-or-throw-error block-uuid))]
|
|
|
|
|
|
+ (when-let [block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
|
|
(when-let [bb (bean/->clj batch-blocks)]
|
|
(when-let [bb (bean/->clj batch-blocks)]
|
|
(let [bb (if-not (vector? bb) (vector bb) bb)
|
|
(let [bb (if-not (vector? bb) (vector bb) bb)
|
|
{:keys [sibling keepUUID]} (bean/->clj opts)
|
|
{:keys [sibling keepUUID]} (bean/->clj opts)
|
|
keep-uuid? (or keepUUID false)
|
|
keep-uuid? (or keepUUID false)
|
|
- _ (when keep-uuid? (doseq
|
|
|
|
- [block (outliner/tree-vec-flatten bb :children)]
|
|
|
|
- (let [uuid (:id (:properties block))]
|
|
|
|
- (when (and uuid (db-model/query-block-by-uuid (uuid-or-throw-error uuid)))
|
|
|
|
- (throw (js/Error.
|
|
|
|
- (util/format "Custom block UUID already exists (%s)." uuid)))))))
|
|
|
|
- _ (editor-handler/insert-block-tree-after-target
|
|
|
|
- (:db/id block) sibling bb (:block/format block) keep-uuid?)]
|
|
|
|
|
|
+ _ (when keep-uuid? (doseq
|
|
|
|
+ [block (outliner/tree-vec-flatten bb :children)]
|
|
|
|
+ (let [uuid (:id (:properties block))]
|
|
|
|
+ (when (and uuid (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error uuid)))
|
|
|
|
+ (throw (js/Error.
|
|
|
|
+ (util/format "Custom block UUID already exists (%s)." uuid)))))))
|
|
|
|
+ _ (editor-handler/insert-block-tree-after-target
|
|
|
|
+ (:db/id block) sibling bb (:block/format block) keep-uuid?)]
|
|
nil)))))
|
|
nil)))))
|
|
|
|
|
|
(def ^:export remove_block
|
|
(def ^:export remove_block
|
|
@@ -662,7 +644,7 @@
|
|
(let [includeChildren true
|
|
(let [includeChildren true
|
|
repo (state/get-current-repo)]
|
|
repo (state/get-current-repo)]
|
|
(editor-handler/delete-block-aux!
|
|
(editor-handler/delete-block-aux!
|
|
- {:block/uuid (uuid-or-throw-error block-uuid) :repo repo} includeChildren)
|
|
|
|
|
|
+ {:block/uuid (sdk-utils/uuid-or-throw-error block-uuid) :repo repo} includeChildren)
|
|
nil)))
|
|
nil)))
|
|
|
|
|
|
(def ^:export update_block
|
|
(def ^:export update_block
|
|
@@ -672,7 +654,7 @@
|
|
editing? (and edit-input (string/ends-with? edit-input (str block-uuid)))]
|
|
editing? (and edit-input (string/ends-with? edit-input (str block-uuid)))]
|
|
(if editing?
|
|
(if editing?
|
|
(state/set-edit-content! edit-input content)
|
|
(state/set-edit-content! edit-input content)
|
|
- (editor-handler/save-block! repo (uuid-or-throw-error block-uuid) content))
|
|
|
|
|
|
+ (editor-handler/save-block! repo (sdk-utils/uuid-or-throw-error block-uuid) content))
|
|
nil)))
|
|
nil)))
|
|
|
|
|
|
(def ^:export move_block
|
|
(def ^:export move_block
|
|
@@ -687,15 +669,15 @@
|
|
|
|
|
|
:else
|
|
:else
|
|
nil)
|
|
nil)
|
|
- src-block (db-model/query-block-by-uuid (uuid-or-throw-error src-block-uuid))
|
|
|
|
- target-block (db-model/query-block-by-uuid (uuid-or-throw-error target-block-uuid))]
|
|
|
|
|
|
+ src-block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error src-block-uuid))
|
|
|
|
+ target-block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error target-block-uuid))]
|
|
(editor-dnd-handler/move-blocks nil [src-block] target-block move-to) nil)))
|
|
(editor-dnd-handler/move-blocks nil [src-block] target-block move-to) nil)))
|
|
|
|
|
|
(def ^:export get_block
|
|
(def ^:export get_block
|
|
(fn [id-or-uuid ^js opts]
|
|
(fn [id-or-uuid ^js opts]
|
|
(when-let [block (cond
|
|
(when-let [block (cond
|
|
(number? id-or-uuid) (db-utils/pull id-or-uuid)
|
|
(number? id-or-uuid) (db-utils/pull id-or-uuid)
|
|
- (string? id-or-uuid) (db-model/query-block-by-uuid (uuid-or-throw-error id-or-uuid)))]
|
|
|
|
|
|
+ (string? id-or-uuid) (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error id-or-uuid)))]
|
|
(when-not (contains? block :block/name)
|
|
(when-not (contains? block :block/name)
|
|
(when-let [uuid (:block/uuid block)]
|
|
(when-let [uuid (:block/uuid block)]
|
|
(let [{:keys [includeChildren]} (bean/->clj opts)
|
|
(let [{:keys [includeChildren]} (bean/->clj opts)
|
|
@@ -703,12 +685,12 @@
|
|
block (if includeChildren
|
|
block (if includeChildren
|
|
;; nested children results
|
|
;; nested children results
|
|
(first (outliner-tree/blocks->vec-tree
|
|
(first (outliner-tree/blocks->vec-tree
|
|
- (db-model/get-block-and-children repo uuid) uuid))
|
|
|
|
|
|
+ (db-model/get-block-and-children repo uuid) uuid))
|
|
;; attached shallow children
|
|
;; attached shallow children
|
|
(assoc block :block/children
|
|
(assoc block :block/children
|
|
- (map #(list :uuid (get-in % [:data :block/uuid]))
|
|
|
|
- (db/get-block-immediate-children repo uuid))))]
|
|
|
|
- (bean/->js (normalize-keyword-for-json block))))))))
|
|
|
|
|
|
+ (map #(list :uuid (get-in % [:data :block/uuid]))
|
|
|
|
+ (db/get-block-immediate-children repo uuid))))]
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json block))))))))
|
|
|
|
|
|
(def ^:export get_current_block
|
|
(def ^:export get_current_block
|
|
(fn [^js opts]
|
|
(fn [^js opts]
|
|
@@ -722,20 +704,20 @@
|
|
|
|
|
|
(def ^:export get_previous_sibling_block
|
|
(def ^:export get_previous_sibling_block
|
|
(fn [block-uuid]
|
|
(fn [block-uuid]
|
|
- (when-let [block (db-model/query-block-by-uuid (uuid-or-throw-error block-uuid))]
|
|
|
|
|
|
+ (when-let [block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
|
|
(let [{:block/keys [parent left]} block
|
|
(let [{:block/keys [parent left]} block
|
|
block (when-not (= parent left) (db-utils/pull (:db/id left)))]
|
|
block (when-not (= parent left) (db-utils/pull (:db/id left)))]
|
|
- (and block (bean/->js (normalize-keyword-for-json block)))))))
|
|
|
|
|
|
+ (and block (bean/->js (sdk-utils/normalize-keyword-for-json block)))))))
|
|
|
|
|
|
(def ^:export get_next_sibling_block
|
|
(def ^:export get_next_sibling_block
|
|
(fn [block-uuid]
|
|
(fn [block-uuid]
|
|
- (when-let [block (db-model/query-block-by-uuid (uuid-or-throw-error block-uuid))]
|
|
|
|
|
|
+ (when-let [block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
|
|
(when-let [right-siblings (outliner/get-right-siblings (outliner/->Block block))]
|
|
(when-let [right-siblings (outliner/get-right-siblings (outliner/->Block block))]
|
|
- (bean/->js (normalize-keyword-for-json (:data (first right-siblings))))))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json (:data (first right-siblings))))))))
|
|
|
|
|
|
(def ^:export set_block_collapsed
|
|
(def ^:export set_block_collapsed
|
|
(fn [block-uuid ^js opts]
|
|
(fn [block-uuid ^js opts]
|
|
- (let [block-uuid (uuid-or-throw-error block-uuid)]
|
|
|
|
|
|
+ (let [block-uuid (sdk-utils/uuid-or-throw-error block-uuid)]
|
|
(when-let [block (db-model/get-block-by-uuid block-uuid)]
|
|
(when-let [block (db-model/get-block-by-uuid block-uuid)]
|
|
(let [opts (bean/->clj opts)
|
|
(let [opts (bean/->clj opts)
|
|
opts (if (or (string? opts) (boolean? opts)) {:flag opts} opts)
|
|
opts (if (or (string? opts) (boolean? opts)) {:flag opts} opts)
|
|
@@ -749,21 +731,21 @@
|
|
|
|
|
|
(def ^:export upsert_block_property
|
|
(def ^:export upsert_block_property
|
|
(fn [block-uuid key value]
|
|
(fn [block-uuid key value]
|
|
- (editor-handler/set-block-property! (uuid-or-throw-error block-uuid) key value)))
|
|
|
|
|
|
+ (editor-handler/set-block-property! (sdk-utils/uuid-or-throw-error block-uuid) key value)))
|
|
|
|
|
|
(def ^:export remove_block_property
|
|
(def ^:export remove_block_property
|
|
(fn [block-uuid key]
|
|
(fn [block-uuid key]
|
|
- (editor-handler/remove-block-property! (uuid-or-throw-error block-uuid) key)))
|
|
|
|
|
|
+ (editor-handler/remove-block-property! (sdk-utils/uuid-or-throw-error block-uuid) key)))
|
|
|
|
|
|
(def ^:export get_block_property
|
|
(def ^:export get_block_property
|
|
(fn [block-uuid key]
|
|
(fn [block-uuid key]
|
|
- (when-let [block (db-model/query-block-by-uuid (uuid-or-throw-error block-uuid))]
|
|
|
|
|
|
+ (when-let [block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
|
|
(get (:block/properties block) (keyword key)))))
|
|
(get (:block/properties block) (keyword key)))))
|
|
|
|
|
|
(def ^:export get_block_properties
|
|
(def ^:export get_block_properties
|
|
(fn [block-uuid]
|
|
(fn [block-uuid]
|
|
- (when-let [block (db-model/query-block-by-uuid (uuid-or-throw-error block-uuid))]
|
|
|
|
- (bean/->js (normalize-keyword-for-json (:block/properties block))))))
|
|
|
|
|
|
+ (when-let [block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json (:block/properties block))))))
|
|
|
|
|
|
(def ^:export get_current_page_blocks_tree
|
|
(def ^:export get_current_page_blocks_tree
|
|
(fn []
|
|
(fn []
|
|
@@ -771,15 +753,15 @@
|
|
(let [blocks (db-model/get-page-blocks-no-cache page)
|
|
(let [blocks (db-model/get-page-blocks-no-cache page)
|
|
blocks (outliner-tree/blocks->vec-tree blocks page)
|
|
blocks (outliner-tree/blocks->vec-tree blocks page)
|
|
;; clean key
|
|
;; clean key
|
|
- blocks (normalize-keyword-for-json blocks)]
|
|
|
|
|
|
+ blocks (sdk-utils/normalize-keyword-for-json blocks)]
|
|
(bean/->js blocks)))))
|
|
(bean/->js blocks)))))
|
|
|
|
|
|
(def ^:export get_page_blocks_tree
|
|
(def ^:export get_page_blocks_tree
|
|
- (fn [page-name]
|
|
|
|
- (when-let [_ (db-model/get-page page-name)]
|
|
|
|
|
|
+ (fn [id-or-page-name]
|
|
|
|
+ (when-let [page-name (:block/name (db-model/get-page id-or-page-name))]
|
|
(let [blocks (db-model/get-page-blocks-no-cache page-name)
|
|
(let [blocks (db-model/get-page-blocks-no-cache page-name)
|
|
blocks (outliner-tree/blocks->vec-tree blocks page-name)
|
|
blocks (outliner-tree/blocks->vec-tree blocks page-name)
|
|
- blocks (normalize-keyword-for-json blocks)]
|
|
|
|
|
|
+ blocks (sdk-utils/normalize-keyword-for-json blocks)]
|
|
(bean/->js blocks)))))
|
|
(bean/->js blocks)))))
|
|
|
|
|
|
(defn ^:export get_page_linked_references
|
|
(defn ^:export get_page_linked_references
|
|
@@ -790,19 +772,19 @@
|
|
(db-model/get-page-referenced-blocks-full page-name)
|
|
(db-model/get-page-referenced-blocks-full page-name)
|
|
(db-model/get-block-referenced-blocks (:block/uuid page)))
|
|
(db-model/get-block-referenced-blocks (:block/uuid page)))
|
|
ref-blocks (and (seq ref-blocks) (into [] ref-blocks))]
|
|
ref-blocks (and (seq ref-blocks) (into [] ref-blocks))]
|
|
- (bean/->js (normalize-keyword-for-json ref-blocks)))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json ref-blocks)))))
|
|
|
|
|
|
(defn ^:export get_pages_from_namespace
|
|
(defn ^:export get_pages_from_namespace
|
|
[ns]
|
|
[ns]
|
|
(when-let [repo (and ns (state/get-current-repo))]
|
|
(when-let [repo (and ns (state/get-current-repo))]
|
|
(when-let [pages (db-model/get-namespace-pages repo ns)]
|
|
(when-let [pages (db-model/get-namespace-pages repo ns)]
|
|
- (bean/->js (normalize-keyword-for-json pages)))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json pages)))))
|
|
|
|
|
|
(defn ^:export get_pages_tree_from_namespace
|
|
(defn ^:export get_pages_tree_from_namespace
|
|
[ns]
|
|
[ns]
|
|
(when-let [repo (and ns (state/get-current-repo))]
|
|
(when-let [repo (and ns (state/get-current-repo))]
|
|
(when-let [pages (db-model/get-namespace-hierarchy repo ns)]
|
|
(when-let [pages (db-model/get-namespace-hierarchy repo ns)]
|
|
- (bean/->js (normalize-keyword-for-json pages)))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json pages)))))
|
|
|
|
|
|
(defn first-child-of-block
|
|
(defn first-child-of-block
|
|
[block]
|
|
[block]
|
|
@@ -868,7 +850,7 @@
|
|
[query-string]
|
|
[query-string]
|
|
(when-let [repo (state/get-current-repo)]
|
|
(when-let [repo (state/get-current-repo)]
|
|
(when-let [result (query-dsl/query repo query-string)]
|
|
(when-let [result (query-dsl/query repo query-string)]
|
|
- (bean/->js (normalize-keyword-for-json (flatten @result))))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json (flatten @result))))))
|
|
|
|
|
|
(defn ^:export datascript_query
|
|
(defn ^:export datascript_query
|
|
[query & inputs]
|
|
[query & inputs]
|
|
@@ -886,13 +868,13 @@
|
|
:else %)
|
|
:else %)
|
|
inputs)
|
|
inputs)
|
|
result (apply d/q query db resolved-inputs)]
|
|
result (apply d/q query db resolved-inputs)]
|
|
- (bean/->js (normalize-keyword-for-json result false))))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json result false))))))
|
|
|
|
|
|
(defn ^:export custom_query
|
|
(defn ^:export custom_query
|
|
[query-string]
|
|
[query-string]
|
|
(let [result (let [query (cljs.reader/read-string query-string)]
|
|
(let [result (let [query (cljs.reader/read-string query-string)]
|
|
(db/custom-query {:query query}))]
|
|
(db/custom-query {:query query}))]
|
|
- (bean/->js (normalize-keyword-for-json (flatten @result)))))
|
|
|
|
|
|
+ (bean/->js (sdk-utils/normalize-keyword-for-json (flatten @result)))))
|
|
|
|
|
|
(defn ^:export download_graph_db
|
|
(defn ^:export download_graph_db
|
|
[]
|
|
[]
|
|
@@ -916,54 +898,19 @@
|
|
(shell/run-git-command! args)))
|
|
(shell/run-git-command! args)))
|
|
|
|
|
|
;; git
|
|
;; git
|
|
-(defn ^:export git_exec_command
|
|
|
|
- [^js args]
|
|
|
|
- (when-let [args (and args (seq (bean/->clj args)))]
|
|
|
|
- (shell/run-git-command2! args)))
|
|
|
|
-
|
|
|
|
-(defn ^:export git_load_ignore_file
|
|
|
|
- []
|
|
|
|
- (when-let [repo (state/get-current-repo)]
|
|
|
|
- (p/let [file ".gitignore"
|
|
|
|
- dir (config/get-repo-dir repo)
|
|
|
|
- _ (fs/create-if-not-exists repo dir file)
|
|
|
|
- content (fs/read-file dir file)]
|
|
|
|
- content)))
|
|
|
|
-
|
|
|
|
-(defn ^:export git_save_ignore_file
|
|
|
|
- [content]
|
|
|
|
- (when-let [repo (and (string? content) (state/get-current-repo))]
|
|
|
|
- (p/let [file ".gitignore"
|
|
|
|
- dir (config/get-repo-dir repo)
|
|
|
|
- _ (fs/write-file! repo dir file content {:skip-compare? true})])))
|
|
|
|
|
|
+(def ^:export git_exec_command sdk-git/exec_command)
|
|
|
|
+(def ^:export git_load_ignore_file sdk-git/load_ignore_file)
|
|
|
|
+(def ^:export git_save_ignore_file sdk-git/save_ignore_file)
|
|
|
|
|
|
;; ui
|
|
;; ui
|
|
-(defn ^:export show_msg
|
|
|
|
- ([content] (show_msg content :success nil))
|
|
|
|
- ([content status] (show_msg content status nil))
|
|
|
|
- ([content status ^js opts]
|
|
|
|
- (let [{:keys [key timeout]} (bean/->clj opts)
|
|
|
|
- hiccup? (and (string? content) (string/starts-with? (string/triml content) "[:"))
|
|
|
|
- content (if hiccup? (parse-hiccup-ui content) content)
|
|
|
|
- uid (when (string? key) (keyword key))
|
|
|
|
- clear? (not= timeout 0)
|
|
|
|
- key' (notification/show! content (keyword status) clear? uid timeout)]
|
|
|
|
- (name key'))))
|
|
|
|
-
|
|
|
|
-(defn ^:export ui_show_msg
|
|
|
|
- [& args]
|
|
|
|
- (apply show_msg args))
|
|
|
|
-
|
|
|
|
-(defn ^:export ui_close_msg
|
|
|
|
- [key]
|
|
|
|
- (when (string? key)
|
|
|
|
- (notification/clear! (keyword key)) nil))
|
|
|
|
|
|
+(def ^:export show_msg sdk-ui/-show_msg)
|
|
|
|
+(def ^:export ui_show_msg sdk-ui/show_msg)
|
|
|
|
+(def ^:export ui_close_msg sdk-ui/close_msg)
|
|
|
|
|
|
;; assets
|
|
;; assets
|
|
-(defn ^:export assets_list_files_of_current_graph
|
|
|
|
- [^js exts]
|
|
|
|
- (p/let [files (ipc/ipc :getAssetsFiles {:exts exts})]
|
|
|
|
- (bean/->js files)))
|
|
|
|
|
|
+(def ^:export assets_list_files_of_current_graph sdk-assets/list_files_of_current_graph)
|
|
|
|
+(def ^:export assets_make_url sdk-assets/make_url)
|
|
|
|
+(def ^:export make_asset_url sdk-assets/make_url)
|
|
|
|
|
|
;; experiments
|
|
;; experiments
|
|
(defn ^:export exper_load_scripts
|
|
(defn ^:export exper_load_scripts
|
|
@@ -974,25 +921,25 @@
|
|
init? (plugin-handler/register-plugin-resources pid :scripts {:key s :src s})]]
|
|
init? (plugin-handler/register-plugin-resources pid :scripts {:key s :src s})]]
|
|
(when init?
|
|
(when init?
|
|
(p/catch
|
|
(p/catch
|
|
- (p/then
|
|
|
|
- (do
|
|
|
|
- (upt-status :pending)
|
|
|
|
- (loader/load s nil {:attributes {:data-ref (name pid)}}))
|
|
|
|
- #(upt-status :done))
|
|
|
|
- #(upt-status :error))))))
|
|
|
|
|
|
+ (p/then
|
|
|
|
+ (do
|
|
|
|
+ (upt-status :pending)
|
|
|
|
+ (loader/load s nil {:attributes {:data-ref (name pid)}}))
|
|
|
|
+ #(upt-status :done))
|
|
|
|
+ #(upt-status :error))))))
|
|
|
|
|
|
(defn ^:export exper_register_fenced_code_renderer
|
|
(defn ^:export exper_register_fenced_code_renderer
|
|
[pid type ^js opts]
|
|
[pid type ^js opts]
|
|
(when-let [^js _pl (plugin-handler/get-plugin-inst pid)]
|
|
(when-let [^js _pl (plugin-handler/get-plugin-inst pid)]
|
|
(plugin-handler/register-fenced-code-renderer
|
|
(plugin-handler/register-fenced-code-renderer
|
|
- (keyword pid) type (reduce #(assoc %1 %2 (aget opts (name %2))) {}
|
|
|
|
- [:edit :before :subs :render]))))
|
|
|
|
|
|
+ (keyword pid) type (reduce #(assoc %1 %2 (aget opts (name %2))) {}
|
|
|
|
+ [:edit :before :subs :render]))))
|
|
|
|
|
|
(defn ^:export exper_register_extensions_enhancer
|
|
(defn ^:export exper_register_extensions_enhancer
|
|
[pid type enhancer]
|
|
[pid type enhancer]
|
|
(when-let [^js _pl (and (fn? enhancer) (plugin-handler/get-plugin-inst pid))]
|
|
(when-let [^js _pl (and (fn? enhancer) (plugin-handler/get-plugin-inst pid))]
|
|
(plugin-handler/register-extensions-enhancer
|
|
(plugin-handler/register-extensions-enhancer
|
|
- (keyword pid) type {:enhancer enhancer})))
|
|
|
|
|
|
+ (keyword pid) type {:enhancer enhancer})))
|
|
|
|
|
|
(defonce *request-k (volatile! 0))
|
|
(defonce *request-k (volatile! 0))
|
|
|
|
|
|
@@ -1010,10 +957,45 @@
|
|
[req-id]
|
|
[req-id]
|
|
(ipc/ipc :httpRequestAbort req-id))
|
|
(ipc/ipc :httpRequestAbort req-id))
|
|
|
|
|
|
|
|
+;; templates
|
|
|
|
+(defn ^:export get_template
|
|
|
|
+ [name]
|
|
|
|
+ (some-> name
|
|
|
|
+ (db-model/get-template-by-name)
|
|
|
|
+ (sdk-utils/normalize-keyword-for-json)
|
|
|
|
+ (bean/->js)))
|
|
|
|
+
|
|
|
|
+(defn ^:export insert_template
|
|
|
|
+ [target-uuid template-name]
|
|
|
|
+ (when-let [target (and (page-handler/template-exists? template-name)
|
|
|
|
+ (db-model/get-block-by-uuid target-uuid))]
|
|
|
|
+ (editor-handler/insert-template! nil template-name {:target target}) nil))
|
|
|
|
+
|
|
|
|
+(defn ^:export exist_template
|
|
|
|
+ [name]
|
|
|
|
+ (page-handler/template-exists? name))
|
|
|
|
+
|
|
|
|
+(defn ^:export create_template
|
|
|
|
+ [target-uuid template-name ^js opts]
|
|
|
|
+ (when (and template-name (db-model/get-block-by-uuid target-uuid))
|
|
|
|
+ (let [{:keys [overwrite]} (bean/->clj opts)
|
|
|
|
+ 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))
|
|
|
|
+ (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)))
|
|
|
|
+
|
|
;; search
|
|
;; search
|
|
(defn ^:export search
|
|
(defn ^:export search
|
|
[q]
|
|
[q]
|
|
- (search-handler/search q))
|
|
|
|
|
|
+ (-> (search-handler/search q)
|
|
|
|
+ (p/then #(bean/->js %))))
|
|
|
|
|
|
;; helpers
|
|
;; helpers
|
|
(defn ^:export query_element_by_id
|
|
(defn ^:export query_element_by_id
|
|
@@ -1037,13 +1019,4 @@
|
|
(p/let [_ (el/persist-dbs!)]
|
|
(p/let [_ (el/persist-dbs!)]
|
|
true))
|
|
true))
|
|
|
|
|
|
-(def ^:export make_asset_url editor-handler/make-asset-url)
|
|
|
|
-
|
|
|
|
(def ^:export set_blocks_id #(editor-handler/set-blocks-id! (map uuid %)))
|
|
(def ^:export set_blocks_id #(editor-handler/set-blocks-id! (map uuid %)))
|
|
-
|
|
|
|
-(defn ^:export __debug_state
|
|
|
|
- [path]
|
|
|
|
- (-> (if (string? path)
|
|
|
|
- (get @state/state (keyword path))
|
|
|
|
- @state/state)
|
|
|
|
- (bean/->js)))
|
|
|