enhance(ui): polish the editor slash commands cp

pull/11293/head
charlie 2024-04-24 15:52:57 +08:00
parent 7e12ce22b7
commit 7bd25fa2c3
2 changed files with 91 additions and 87 deletions

View File

@ -190,7 +190,7 @@
(defn- headings
[]
(mapv (fn [level]
(let [heading (str "h" level)]
(let [heading (str "Heading " level)]
[heading (->heading level)])) (range 1 7)))
(defonce *matched-commands (atom nil))
@ -267,106 +267,107 @@
embed-page (if db? db-based-embed-page file-based-embed-page)
embed-block (if db? db-based-embed-block file-based-embed-block)]
(->>
(concat
;; basic
[["Page reference"
[[:editor/input page-ref/left-and-right-brackets {:backward-pos 2}]
[:editor/search-page]]
"Create a backlink to a page"
"BASIC"]
["Page embed" (embed-page) "Embed a page here"]
["Block reference" [[:editor/input block-ref/left-and-right-parens {:backward-pos 2}]
[:editor/search-block :reference]] "Create a backlink to a block"]
["Block embed" (embed-block) "Embed a block here" "Embed a block here"]
["Link" (link-steps) "Create a HTTP link"]
["Image link" (image-link-steps) "Create a HTTP link to a image"]
(when (state/markdown?)
["Underline" [[:editor/input "<ins></ins>"
{:last-pattern command-trigger
:backward-pos 6}]] "Create a underline text decoration"])
(when-not db?
["Template" [[:editor/input command-trigger nil]
[:editor/search-template]] "Insert a created template here"])
(cond
(and (util/electron?) (config/local-file-based-graph? (state/get-current-repo)))
(concat
;; basic
[["Page reference"
[[:editor/input page-ref/left-and-right-brackets {:backward-pos 2}]
[:editor/search-page]]
"Create a backlink to a page"
"BASIC"]
["Page embed" (embed-page) "Embed a page here"]
["Block reference" [[:editor/input block-ref/left-and-right-parens {:backward-pos 2}]
[:editor/search-block :reference]] "Create a backlink to a block"]
["Block embed" (embed-block) "Embed a block here"]]
["Upload an asset" [[:editor/click-hidden-file-input :id]] "Upload file types like image, pdf, docx, etc.)"])]
;; format
[["Link" (link-steps) "Create a HTTP link" "FORMAT"]
["Image link" (image-link-steps) "Create a HTTP link to a image"]
(when (state/markdown?)
["Underline" [[:editor/input "<ins></ins>"
{:last-pattern command-trigger
:backward-pos 6}]] "Create a underline text decoration"])
["Code block" [[:editor/input "```\n```\n" {:type "block"
:backward-pos 5
:only-breakline? true}]
[:editor/select-code-block-mode]] "Insert code block"]]
;; ["Upload an image" [[:editor/click-hidden-file-input :id]]]
(headings)
(headings)
;; time & date
[["Tomorrow"
#(get-page-ref-text (date/tomorrow))
"Insert the date of tomorrow"
"TIME & DATE"]
["Yesterday" #(get-page-ref-text (date/yesterday)) "Insert the date of yesterday"]
["Today" #(get-page-ref-text (date/today)) "Insert the date of today"]
["Current time" #(date/get-current-time) "Insert current time"]
["Date picker" [[:editor/show-date-picker]] "Pick a date and insert here"]]
;; time & date
;; order list
[["Number list"
[[:editor/clear-current-slash]
[:editor/toggle-own-number-list]]
"Number list"
"LIST TYPE"]
["Number children" [[:editor/clear-current-slash]
[:editor/toggle-children-number-list]] "Number children"]]
[["Tomorrow"
#(get-page-ref-text (date/tomorrow))
"Insert the date of tomorrow"
"TIME & DATE"]
["Yesterday" #(get-page-ref-text (date/yesterday)) "Insert the date of yesterday"]
["Today" #(get-page-ref-text (date/today)) "Insert the date of today"]
["Current time" #(date/get-current-time) "Insert current time"]
["Date picker" [[:editor/show-date-picker]] "Pick a date and insert here"]]
;; task management
(get-statuses)
[["Deadline" [[:editor/clear-current-slash]
[:editor/set-deadline]]]
["Scheduled" [[:editor/clear-current-slash]
[:editor/set-scheduled]]]]
;; order list
[["Number list"
[[:editor/clear-current-slash]
[:editor/toggle-own-number-list]]
"Number list"
"LIST TYPE"]
["Number children" [[:editor/clear-current-slash]
[:editor/toggle-children-number-list]] "Number children"]]
;; priority
(get-priorities)
;; task management
(get-statuses)
[["Deadline" [[:editor/clear-current-slash]
[:editor/set-deadline]]]
["Scheduled" [[:editor/clear-current-slash]
[:editor/set-scheduled]]]]
;; advanced
;; priority
(get-priorities)
[["Query"
[[:editor/input "{{query }}" {:backward-pos 2}]
[:editor/exit]]
query-doc
"ADVANCED"]
["Zotero" (zotero-steps) "Import Zotero journal article"]
["Query function" [[:editor/input "{{function }}" {:backward-pos 2}]] "Create a query function"]
["Calculator" [[:editor/input "```calc\n\n```" {:type "block"
:backward-pos 4}]
[:codemirror/focus]] "Insert a calculator"]
["Draw" (fn []
(let [file (draw/file-name)
path (str common-config/default-draw-directory "/" file)
text (page-ref/->page-ref path)]
(p/let [_ (draw/create-draw-with-default-content path)]
(println "draw file created, " path))
text)) "Draw a graph with Excalidraw"]
;; advanced
(cond
(and (util/electron?) (config/local-file-based-graph? (state/get-current-repo)))
[["Query"
[[:editor/input "{{query }}" {:backward-pos 2}]
[:editor/exit]]
query-doc
"ADVANCED"]
["Zotero" (zotero-steps) "Import Zotero journal article"]
["Query function" [[:editor/input "{{function }}" {:backward-pos 2}]] "Create a query function"]
["Calculator" [[:editor/input "```calc\n\n```" {:type "block"
:backward-pos 4}]
[:codemirror/focus]] "Insert a calculator"]
["Draw" (fn []
(let [file (draw/file-name)
path (str common-config/default-draw-directory "/" file)
text (page-ref/->page-ref path)]
(p/let [_ (draw/create-draw-with-default-content path)]
(println "draw file created, " path))
text)) "Draw a graph with Excalidraw"]
["Embed HTML " (->inline "html")]
["Upload an asset" [[:editor/click-hidden-file-input :id]] "Upload file types like image, pdf, docx, etc.)"])
["Embed Video URL" [[:editor/input "{{video }}" {:last-pattern command-trigger
:backward-pos 2}]]]
(when-not db?
["Template" [[:editor/input command-trigger nil]
[:editor/search-template]] "Insert a created template here"])
["Embed Youtube timestamp" [[:youtube/insert-timestamp]]]
["Embed HTML " (->inline "html")]
["Embed Twitter tweet" [[:editor/input "{{tweet }}" {:last-pattern command-trigger
:backward-pos 2}]]]
["Add new property" [[:editor/clear-current-slash]
[:editor/new-property]]]
["Embed Video URL" [[:editor/input "{{video }}" {:last-pattern command-trigger
:backward-pos 2}]]]
["Code block" [[:editor/input "```\n```\n" {:type "block"
:backward-pos 5
:only-breakline? true}]
[:editor/select-code-block-mode]] "Insert code block"]]
["Embed Youtube timestamp" [[:youtube/insert-timestamp]]]
@*extend-slash-commands
;; Allow user to modify or extend, should specify how to extend.
["Embed Twitter tweet" [[:editor/input "{{tweet }}" {:last-pattern command-trigger
:backward-pos 2}]]]
["Add new property" [[:editor/clear-current-slash]
[:editor/new-property]]]]
(state/get-commands)
(state/get-plugins-slash-commands))
@*extend-slash-commands
;; Allow user to modify or extend, should specify how to extend.
(state/get-commands)
(state/get-plugins-slash-commands))
(remove nil?)
(util/distinct-by-last-wins first))))

View File

@ -94,6 +94,11 @@ pre {
.ui__popover-content, .ui__dropdown-menu-content {
&[data-editor-popup-ref] {
@apply p-1 w-72;
&[data-side=top] {
position: relative;
top: -18px;
}
}
&[data-editor-popup-ref=commands] {
@ -101,8 +106,6 @@ pre {
&[data-side=top] {
max-height: min(calc(var(--radix-popover-content-available-height) - 60px), 460px);
position: relative;
top: -18px;
}
&[data-side=bottom] {