diff --git a/src/electron/electron/core.cljs b/src/electron/electron/core.cljs index 4383f49e8..00d698361 100644 --- a/src/electron/electron/core.cljs +++ b/src/electron/electron/core.cljs @@ -81,7 +81,7 @@ (.unregisterProtocol protocol FILE_LSP_SCHEME) (.unregisterProtocol protocol "assets"))) -(defn- handle-export-publish-assets [_event html custom-css-path repo-path asset-filenames output-path] +(defn- handle-export-publish-assets [_event html custom-css-path export-css-path repo-path asset-filenames output-path] (p/let [app-path (. app getAppPath) asset-filenames (js->clj asset-filenames) root-dir (or output-path (handler/open-dir-dialog))] @@ -89,7 +89,8 @@ (let [static-dir (path/join root-dir "static") assets-from-dir (path/join repo-path "assets") assets-to-dir (path/join root-dir "assets") - index-html-path (path/join root-dir "index.html")] + index-html-path (path/join root-dir "index.html") + export-or-custom-css-path (if (fs/existsSync export-css-path) export-css-path custom-css-path)] (p/let [_ (. fs ensureDir static-dir) _ (. fs ensureDir assets-to-dir) _ (p/all (concat @@ -99,35 +100,35 @@ (. fs copy (path/join app-path "404.html") (path/join root-dir "404.html"))] (map - (fn [filename] - (-> (. fs copy (path/join assets-from-dir filename) (path/join assets-to-dir filename)) - (p/catch - (fn [e] - (println (str "Failed to copy " (path/join assets-from-dir filename) " to " (path/join assets-to-dir filename))) - (js/console.error e))))) - asset-filenames) + (fn [filename] + (-> (. fs copy (path/join assets-from-dir filename) (path/join assets-to-dir filename)) + (p/catch + (fn [e] + (println (str "Failed to copy " (path/join assets-from-dir filename) " to " (path/join assets-to-dir filename))) + (js/console.error e))))) + asset-filenames) (map - (fn [part] - (. fs copy (path/join app-path part) (path/join static-dir part))) - ["css" "fonts" "icons" "img" "js"]))) - custom-css (. fs readFile custom-css-path) - _ (. fs writeFile (path/join static-dir "css" "custom.css") custom-css) + (fn [part] + (. fs copy (path/join app-path part) (path/join static-dir part))) + ["css" "fonts" "icons" "img" "js"]))) + export-css (. fs readFile export-or-custom-css-path) + _ (. fs writeFile (path/join static-dir "css" "export.css") export-css) js-files ["main.js" "code-editor.js" "excalidraw.js"] _ (p/all (map (fn [file] (. fs removeSync (path/join static-dir "js" file))) - js-files)) + js-files)) _ (p/all (map (fn [file] (. fs moveSync (path/join static-dir "js" "publishing" file) (path/join static-dir "js" file))) - js-files)) + js-files)) _ (. fs removeSync (path/join static-dir "js" "publishing")) ;; remove source map files ;; TODO: ugly, replace with ls-files and filter with ".map" _ (p/all (map (fn [file] (. fs removeSync (path/join static-dir "js" (str file ".map")))) - ["main.js" "code-editor.js" "excalidraw.js" "age-encryption.js"]))] + ["main.js" "code-editor.js" "excalidraw.js" "age-encryption.js"]))] (. dialog showMessageBox (clj->js {:message (str "Export public pages and publish assets to " root-dir " successfully")}))))))) (defn setup-app-manager! diff --git a/src/main/frontend/components/editor.cljs b/src/main/frontend/components/editor.cljs index 7043d6fb5..1ee2cbc9d 100644 --- a/src/main/frontend/components/editor.cljs +++ b/src/main/frontend/components/editor.cljs @@ -525,6 +525,7 @@ (when (= (state/sub :editor/record-status) "RECORDING") [:div#audio-record-toolbar + {:style {:bottom (+ @util/keyboard-height 45)}} (footer/audio-record-cp)]) (ui/ls-textarea diff --git a/src/main/frontend/components/editor.css b/src/main/frontend/components/editor.css index 733b2a451..bd8a9b5e0 100644 --- a/src/main/frontend/components/editor.css +++ b/src/main/frontend/components/editor.css @@ -1,7 +1,6 @@ #audio-record-toolbar { position: fixed; background-color: var(--ls-secondary-background-color); - bottom: 45px; width: 88px; justify-content: left; left: 5px; diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index cee2681e6..75e66decc 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -151,6 +151,14 @@ :on-click #(js/setTimeout (fn [] (ui-handler/toggle-settings-modal!))) :-for "customize_css"})) +(defn edit-export-css [] + (row-with-button-action + {:left-label (t :settings-page/export-theme) + :button-label (t :settings-page/edit-export-css) + :href (rfe/href :file {:path (config/get-export-css-path)}) + :on-click #(js/setTimeout (fn [] (ui-handler/toggle-settings-modal!))) + :-for "customize_css"})) + (defn show-brackets-row [t show-brackets?] [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start [:label.block.text-sm.font-medium.leading-5.opacity-70 @@ -518,6 +526,7 @@ (theme-modes-row t switch-theme system-theme? dark?) (when current-repo (edit-config-edn)) (when current-repo (edit-custom-css)) + (when current-repo (edit-export-css)) (keyboard-shortcuts-row t)])) (rum/defcs settings-editor < rum/reactive diff --git a/src/main/frontend/config.cljs b/src/main/frontend/config.cljs index 568635468..af9fba065 100644 --- a/src/main/frontend/config.cljs +++ b/src/main/frontend/config.cljs @@ -243,6 +243,7 @@ (defonce recycle-dir ".recycle") (def config-file "config.edn") (def custom-css-file "custom.css") +(def export-css-file "export.css") (def custom-js-file "custom.js") (def metadata-file "metadata.edn") (def pages-metadata-file "pages-metadata.edn") @@ -359,6 +360,15 @@ (get-file-path repo (str app-name "/" custom-css-file))))) +(defn get-export-css-path + ([] + (get-export-css-path (state/get-current-repo))) + ([repo] + (when repo + (get-file-path repo + (str app-name "/" export-css-file))))) + + (defn get-custom-js-path ([] (get-custom-js-path (state/get-current-repo))) diff --git a/src/main/frontend/dicts.cljc b/src/main/frontend/dicts.cljc index 8ad2dda84..9201b4710 100644 --- a/src/main/frontend/dicts.cljc +++ b/src/main/frontend/dicts.cljc @@ -147,8 +147,10 @@ :settings-page/git-commit-delay "Git auto commit seconds" :settings-page/edit-config-edn "Edit config.edn" :settings-page/edit-custom-css "Edit custom.css" + :settings-page/edit-export-css "Edit export.css" :settings-page/custom-configuration "Custom configuration" :settings-page/custom-theme "Custom theme" + :settings-page/export-theme "Export theme" :settings-page/show-brackets "Show brackets" :settings-page/spell-checker "Spell checker" :settings-page/auto-updater "Auto updater" diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index 961c1be66..f5079af14 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -2,46 +2,47 @@ (:refer-clojure :exclude [run!]) (:require [clojure.core.async :as async] [clojure.set :as set] - [frontend.context.i18n :refer [t]] + [clojure.string :as string] + [frontend.commands :as commands] [frontend.components.diff :as diff] - [frontend.handler.plugin :as plugin-handler] - [frontend.fs.capacitor-fs :as capacitor-fs] - [frontend.components.plugins :as plugin] + [frontend.components.encryption :as encryption] [frontend.components.git :as git-component] - [frontend.components.shell :as shell] + [frontend.components.plugins :as plugin] [frontend.components.search :as search] + [frontend.components.shell :as shell] [frontend.config :as config] + [frontend.context.i18n :refer [t]] [frontend.db :as db] [logseq.graph-parser.db.schema :as db-schema] + [frontend.encrypt :as encrypt] [frontend.extensions.srs :as srs] + [frontend.fs :as fs] + [frontend.fs.capacitor-fs :as capacitor-fs] [frontend.fs.nfs :as nfs] + [frontend.fs.sync :as sync] [frontend.fs.watcher-handler :as fs-watcher] [frontend.handler.common :as common-handler] [frontend.handler.editor :as editor-handler] + [frontend.handler.file :as file-handler] [frontend.handler.notification :as notification] [frontend.handler.page :as page-handler] + [frontend.handler.plugin :as plugin-handler] + [frontend.handler.repo :as repo-handler] + [frontend.handler.route :as route-handler] [frontend.handler.search :as search-handler] [frontend.handler.ui :as ui-handler] - [frontend.handler.repo :as repo-handler] - [frontend.handler.file :as file-handler] - [frontend.handler.route :as route-handler] [frontend.handler.web.nfs :as nfs-handler] - [frontend.modules.shortcut.core :as st] + [frontend.mobile.util :as mobile-util] + [frontend.modules.instrumentation.posthog :as posthog] [frontend.modules.outliner.file :as outliner-file] - [frontend.commands :as commands] + [frontend.modules.shortcut.core :as st] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] - [rum.core :as rum] - [frontend.modules.instrumentation.posthog :as posthog] - [frontend.mobile.util :as mobile-util] - [promesa.core :as p] - [frontend.fs :as fs] - [clojure.string :as string] [frontend.util.persist-var :as persist-var] - [frontend.fs.sync :as sync] - [frontend.components.encryption :as encryption] - [frontend.encrypt :as encrypt])) + [goog.dom :as gdom] + [promesa.core :as p] + [rum.core :as rum])) ;; TODO: should we move all events here? @@ -296,8 +297,15 @@ (when (mobile-util/native-ios?) (reset! util/keyboard-height keyboard-height) (set! (.. main-node -style -marginBottom) (str keyboard-height "px")) + (when-let [left-sidebar-node (gdom/getElement "left-sidebar")] + (set! (.. left-sidebar-node -style -bottom) (str keyboard-height "px"))) + (when-let [right-sidebar-node (gdom/getElementByClass "sidebar-item-list")] + (set! (.. right-sidebar-node -style -paddingBottom) (str (+ 150 keyboard-height) "px"))) (when-let [card-preview-el (js/document.querySelector ".cards-review")] (set! (.. card-preview-el -style -marginBottom) (str keyboard-height "px"))) + (when (= (state/sub :editor/record-status) "RECORDING") + (when-let [record-node (gdom/getElement "audio-record-toolbar")] + (set! (.. record-node -style -bottom) (str (+ 45 keyboard-height) "px")))) (js/setTimeout (fn [] (let [toolbar (.querySelector main-node "#mobile-editor-toolbar")] (set! (.. toolbar -style -bottom) (str keyboard-height "px")))) @@ -310,7 +318,14 @@ (when (mobile-util/native-ios?) (when-let [card-preview-el (js/document.querySelector ".cards-review")] (set! (.. card-preview-el -style -marginBottom) "0px")) - (set! (.. main-node -style -marginBottom) "0px")))) + (set! (.. main-node -style -marginBottom) "0px") + (when-let [left-sidebar-node (gdom/getElement "left-sidebar")] + (set! (.. left-sidebar-node -style -bottom) "0px")) + (when-let [right-sidebar-node (gdom/getElementByClass "sidebar-item-list")] + (set! (.. right-sidebar-node -style -paddingBottom) "150px")) + (when (= (state/sub :editor/record-status) "RECORDING") + (when-let [record-node (gdom/getElement "audio-record-toolbar")] + (set! (.. record-node -style -bottom) "45px")))))) (defmethod handle :plugin/consume-updates [[_ id pending? updated?]] (let [downloading? (:plugin/updates-downloading? @state/state)] diff --git a/src/main/frontend/handler/export.cljs b/src/main/frontend/handler/export.cljs index cc8a48642..5f4202bbe 100644 --- a/src/main/frontend/handler/export.cljs +++ b/src/main/frontend/handler/export.cljs @@ -95,6 +95,7 @@ (js/window.apis.exportPublishAssets raw-html-str (config/get-custom-css-path) + (config/get-export-css-path) (config/get-repo-dir repo) (clj->js asset-filenames) (util/mocked-open-dir-path)) diff --git a/src/main/frontend/mobile/action_bar.cljs b/src/main/frontend/mobile/action_bar.cljs index e8080cf4d..623c0fe07 100644 --- a/src/main/frontend/mobile/action_bar.cljs +++ b/src/main/frontend/mobile/action_bar.cljs @@ -59,7 +59,7 @@ (editor-handler/remove-block-property! uuid :heading) (editor-handler/set-block-property! uuid :heading true))))) (action-command "infinity" "Card" #(srs/make-block-a-card! (:block/uuid block))) - (action-command "copy" "Copy" #(editor-handler/copy-selection-blocks)) + (action-command "copy" "Copy" #(editor-handler/copy-selection-blocks false)) (action-command "cut" "Cut" #(editor-handler/cut-selection-blocks true)) (action-command "trash" "Delete" #(editor-handler/delete-block-aux! block true)) (action-command "registered" "Copy ref" diff --git a/src/main/frontend/mobile/footer.cljs b/src/main/frontend/mobile/footer.cljs index 99691ac68..20bf3b24f 100644 --- a/src/main/frontend/mobile/footer.cljs +++ b/src/main/frontend/mobile/footer.cljs @@ -43,7 +43,10 @@ (reset! *record-start -1) (mobile-bar-command record/start-recording "microphone")) [:div.flex.flex-row.items-center - (mobile-bar-command record/stop-recording "player-stop") + (mobile-bar-command #(do + (record/stop-recording) + (reset! *record-start -1)) + "player-stop") [:div.timer.pl-2 {:on-click record/stop-recording} (seconds->minutes:seconds @*record-start)]])) diff --git a/src/main/frontend/mobile/mobile_bar.cljs b/src/main/frontend/mobile/mobile_bar.cljs index 3b6f6c5cf..a39788b17 100644 --- a/src/main/frontend/mobile/mobile_bar.cljs +++ b/src/main/frontend/mobile/mobile_bar.cljs @@ -102,7 +102,6 @@ (command #(do (viewport-fn) (commands/simple-insert! parent-id "#" {})) "tag" true) (command editor-handler/cycle-priority! "a-b" true) (command editor-handler/toggle-list! "list" true) - (command editor-handler/toggle-list! "list" true) (command #(mobile-camera/embed-photo parent-id) "camera" true) (command record/start-recording "microphone" true) (command commands/insert-youtube-timestamp "brand-youtube" true) diff --git a/src/main/frontend/mobile/record.cljs b/src/main/frontend/mobile/record.cljs index 23a2a263a..be39f59c6 100644 --- a/src/main/frontend/mobile/record.cljs +++ b/src/main/frontend/mobile/record.cljs @@ -56,12 +56,15 @@ (log/error :file/write-failed {:path path :error error}))) url (util/format "../assets/%s" filename) - file-link (editor-handler/get-asset-file-link format url filename true)] + file-link (editor-handler/get-asset-file-link format url filename true) + args (merge (if (parse-uuid page) + {:block-uuid (uuid page)} + {:page page}) + {:edit-block? false + :replace-empty-target? true})] (if edit-block (state/append-current-edit-content! file-link) - (editor-handler/api-insert-new-block! file-link {:page page - :edit-block? false - :replace-empty-target? true})))) + (editor-handler/api-insert-new-block! file-link args)))) (defn stop-recording [] (p/catch diff --git a/src/main/frontend/publishing/html.cljs b/src/main/frontend/publishing/html.cljs index c6e012300..3dd7fee45 100644 --- a/src/main/frontend/publishing/html.cljs +++ b/src/main/frontend/publishing/html.cljs @@ -19,7 +19,7 @@ :name "viewport"}] [:link {:type "text/css", :href "static/css/tabler-icons.min.css", :rel "stylesheet"}] [:link {:type "text/css", :href "static/css/style.css", :rel "stylesheet"}] - [:link {:type "text/css", :href "static/css/custom.css", :rel "stylesheet"}] + [:link {:type "text/css", :href "static/css/export.css", :rel "stylesheet"}] [:link {:href icon :type "image/png",