Merge branch 'master' into enhance/refacotr-ui-x-menu

pull/10897/head
charlie 2024-01-16 16:13:16 +08:00
commit be5d205162
12 changed files with 76 additions and 58 deletions

View File

@ -13,7 +13,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
apt-transport-https \
gpg
gpg \
build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
# install NodeJS & yarn
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash -

View File

@ -1,6 +1,6 @@
{
"name": "@logseq/libs",
"version": "0.0.16",
"version": "0.0.17",
"description": "Logseq SDK libraries",
"main": "dist/lsplugin.user.js",
"typings": "index.d.ts",

View File

@ -286,7 +286,7 @@ class LSPluginCaller extends EventEmitter {
timer = setTimeout(() => {
reject(new Error(`handshake Timeout`))
pt.destroy()
}, 4 * 1000) // 4 secs
}, 8 * 1000) // 8 secs
handshake
.then((refChild: ParentAPI) => {

View File

@ -384,14 +384,14 @@ function convertToLSPResource(fullUrl: string, dotPluginRoot: string) {
class IllegalPluginPackageError extends Error {
constructor(message: string) {
super(message)
this.name = IllegalPluginPackageError.name
this.name = 'IllegalPluginPackageError'
}
}
class ExistedImportedPluginPackageError extends Error {
constructor(message: string) {
super(message)
this.name = ExistedImportedPluginPackageError.name
this.name = 'ExistedImportedPluginPackageError'
}
}
@ -409,7 +409,7 @@ class PluginLocal extends EventEmitter<
private _localRoot?: string
private _dotSettingsFile?: string
private _caller?: LSPluginCaller
private _logger?: PluginLogger
private _logger?: PluginLogger = new PluginLogger('PluginLocal')
/**
* @param _options
@ -595,9 +595,7 @@ class PluginLocal extends EventEmitter<
// Validate id
const { registeredPlugins, isRegistering } = this._ctx
if (isRegistering && registeredPlugins.has(this.id)) {
throw new ExistedImportedPluginPackageError(
'Registered plugin package Error'
)
throw new ExistedImportedPluginPackageError(this.id)
}
return async () => {

View File

@ -141,7 +141,7 @@ export interface AppUserInfo {
export interface AppInfo {
version: string
[key: string]: any
[key: string]: unknown
}
/**
@ -159,6 +159,8 @@ export interface AppUserConfigs {
showBracket: boolean
enabledFlashcards: boolean
enabledJournals: boolean
[key: string]: unknown
}
/**
@ -168,6 +170,8 @@ export interface AppGraphInfo {
name: string
url: string
path: string
[key: string]: unknown
}
/**
@ -193,6 +197,8 @@ export interface BlockEntity {
meta?: { timestamps: any; properties: any; startPos: number; endPos: number }
title?: Array<any>
marker?: string
[key: string]: unknown
}
/**
@ -212,6 +218,8 @@ export interface PageEntity {
format?: 'markdown' | 'org'
journalDay?: number
updatedAt?: number
[key: string]: unknown
}
export type BlockIdentity = BlockUUID | Pick<BlockEntity, 'uuid'>

File diff suppressed because one or more lines are too long

View File

@ -119,14 +119,14 @@
(rum/use-effect!
(fn []
(let [err-handle
(fn [^js e]
(case (keyword (aget e "name"))
:IllegalPluginPackageError
(notification/show! "Illegal Logseq plugin package." :error)
:ExistedImportedPluginPackageError
(notification/show! "Existed Imported plugin package." :error)
:default)
(plugin-handler/reset-unpacked-state))
(fn [^js e]
(case (keyword (aget e "name"))
:IllegalPluginPackageError
(notification/show! "Illegal Logseq plugin package." :error)
:ExistedImportedPluginPackageError
(notification/show! (str "Existed plugin package (" (.-message e) ").") :error)
:default)
(plugin-handler/reset-unpacked-state))
reg-handle #(plugin-handler/reset-unpacked-state)]
(when unpacked-pkg-path
(doto js/LSPluginCore

View File

@ -181,7 +181,7 @@
result-as-text (for [row sort-result]
(for [column columns]
(build-column-text row column)))
render-column-value (fn [row-format cell-format value]
render-column-value (fn [row-block row-format cell-format value]
(cond
;; elements should be rendered as they are provided
(= :element cell-format) value
@ -194,7 +194,7 @@
;; inline-text when no page entity is found
(string? value) (if-let [page (db/entity [:block/name (util/page-name-sanity-lc value)])]
(page-cp {} page)
(inline-text row-format value))
(inline-text row-block row-format value))
;; anything else should just be rendered as provided
:else value))]
@ -237,4 +237,4 @@
:block-ref)
(reset! *mouse-down? false)))}
(when value
(apply render-column-value format value))]))]))]]]))))
(apply render-column-value row format value))]))]))]]]))))

View File

@ -425,7 +425,7 @@
(declare save-current-block!)
(defn outliner-insert-block!
[config current-block new-block {:keys [sibling? keep-uuid?
[config current-block new-block {:keys [sibling? keep-uuid? ordered-list?
replace-empty-target?]}]
(let [ref-query-top-block? (and (or (:ref? config)
(:custom-query? config))
@ -446,9 +446,11 @@
(outliner-tx/transact!
{:outliner-op :insert-blocks}
(save-current-block! {:current-block current-block})
(outliner-core/insert-blocks! [new-block] current-block {:sibling? sibling?
:keep-uuid? keep-uuid?
:replace-empty-target? replace-empty-target?}))))
(outliner-core/insert-blocks! [new-block] current-block
{:sibling? sibling?
:keep-uuid? keep-uuid?
:replace-empty-target? replace-empty-target?
:ordered-list? ordered-list?}))))
(defn- block-self-alone-when-insert?
[config uuid]
@ -566,7 +568,7 @@
(defn api-insert-new-block!
[content {:keys [page block-uuid sibling? before? properties
custom-uuid replace-empty-target? edit-block?]
custom-uuid replace-empty-target? edit-block? ordered-list?]
:or {sibling? false
before? false
edit-block? true}}]
@ -626,9 +628,11 @@
:else
nil)]
(when block-m
(outliner-insert-block! {} block-m new-block {:sibling? sibling?
:keep-uuid? true
:replace-empty-target? replace-empty-target?})
(outliner-insert-block! {} block-m new-block
{:sibling? sibling?
:keep-uuid? true
:replace-empty-target? replace-empty-target?
:ordered-list? ordered-list?})
(when edit-block?
(if (and replace-empty-target?
(string/blank? (:block/content last-block)))
@ -2020,7 +2024,8 @@
target-block
sibling?
keep-uuid?
revert-cut-txs]
revert-cut-txs
skip-empty-target?]
:or {exclude-properties []}}]
(state/set-editor-op! :paste-blocks)
(let [editing-block (when-let [editing-block (state/get-edit-block)]
@ -2033,7 +2038,8 @@
block (db/entity (:db/id target-block))
page (if (:block/name block) block
(when target-block (:block/page (db/entity (:db/id target-block)))))
empty-target? (string/blank? (:block/content target-block))
empty-target? (if (true? skip-empty-target?) false
(string/blank? (:block/content target-block)))
paste-nested-blocks? (nested-blocks blocks)
target-block-has-children? (db/has-children? (:block/uuid target-block))
replace-empty-target? (and empty-target?
@ -2117,9 +2123,10 @@
A block element: {:content :properties :children [block-1, block-2, ...]}"
[target-block-id sibling? tree-vec format keep-uuid?]
(insert-block-tree tree-vec format
{:target-block (db/pull target-block-id)
:keep-uuid? keep-uuid?
:sibling? sibling?}))
{:target-block (db/pull target-block-id)
:keep-uuid? keep-uuid?
:skip-empty-target? true
:sibling? sibling?}))
(defn insert-template!
([element-id db-id]

View File

@ -773,8 +773,8 @@
(when (and (number? end)
;; valid end time
(> end 0)
;; greater than 3s
(> (- end (.-s v)) 3000))
;; greater than 6s
(> (- end (.-s v)) 6000))
v))))
((fn [perfs]
(doseq [perf perfs]

View File

@ -531,7 +531,7 @@
`replace-empty-target?`: If the `target-block` is an empty block, whether
to replace it, it defaults to be `false`.
``"
[blocks target-block {:keys [sibling? keep-uuid? outliner-op replace-empty-target?] :as opts}]
[blocks target-block {:keys [sibling? keep-uuid? outliner-op replace-empty-target? ordered-list?] :as opts}]
{:pre [(seq blocks)
(s/valid? ::block-map-or-entity target-block)]}
(let [target-block' (get-target-block target-block)
@ -549,7 +549,8 @@
(> (count blocks) 1)
(not move?)))
blocks' (blocks-with-level blocks)
blocks' (blocks-with-ordered-list-props blocks' target-block sibling?)
blocks' (if (false? ordered-list?) blocks'
(blocks-with-ordered-list-props blocks' target-block sibling?))
blocks' (if (= outliner-op :paste)
(fix-top-level-blocks blocks')
blocks')

View File

@ -604,7 +604,7 @@
(fn [block-uuid-or-page-name content ^js opts]
(when (string/blank? block-uuid-or-page-name)
(throw (js/Error. "Page title or block UUID shouldn't be empty.")))
(let [{:keys [before sibling focus customUUID properties]} (bean/->clj opts)
(let [{:keys [before sibling focus customUUID properties autoOrderedList]} (bean/->clj opts)
[page-name block-uuid] (if (util/uuid-string? block-uuid-or-page-name)
[nil (uuid block-uuid-or-page-name)]
[block-uuid-or-page-name nil])
@ -635,31 +635,34 @@
before?)
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}))})]
{:block-uuid block-uuid'
:sibling? sibling?
:before? before?
:edit-block? edit-block?
:page page-name
:custom-uuid custom-uuid
:ordered-list? (if (boolean? autoOrderedList) autoOrderedList false)
:properties (merge properties
(when custom-uuid {:id custom-uuid}))})]
(bean/->js (sdk-utils/normalize-keyword-for-json new-block)))))
(def ^:export insert_batch_block
(fn [block-uuid ^js batch-blocks ^js opts]
(when-let [block (db-model/query-block-by-uuid (sdk-utils/uuid-or-throw-error block-uuid))]
(when-let [bb (bean/->clj batch-blocks)]
(let [bb (if-not (vector? bb) (vector bb) bb)
{:keys [sibling keepUUID]} (bean/->clj opts)
(let [bb (if-not (vector? bb) (vector bb) bb)
{:keys [sibling keepUUID before]} (bean/->clj opts)
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 (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?)]
_ (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)))))))
block (if (and before sibling)
(db/pull (:db/id (:block/left block))) block)
_ (editor-handler/insert-block-tree-after-target
(:db/id block) sibling bb (:block/format block) keep-uuid?)]
nil)))))
(def ^:export remove_block