From 70e2012e29295bf9b41292f5cef0eca947affcea Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 7 Apr 2025 10:27:26 +0800 Subject: [PATCH] bump React to 18 --- deps.edn | 3 +- deps/shui/deps.edn | 4 +- deps/shui/src/logseq/shui/demo.cljs | 11 +- deps/shui/src/logseq/shui/demo2.cljs | 465 +++++++++--------- deps/shui/src/logseq/shui/dialog/core.cljs | 30 +- .../shui/src/logseq/shui}/hooks.cljs | 20 +- deps/shui/src/logseq/shui/select/multi.cljs | 227 ++++----- deps/shui/src/logseq/shui/table/core.cljc | 15 +- deps/shui/src/logseq/shui/toaster/core.cljs | 33 +- package.json | 4 +- src/main/frontend/components/all_pages.cljs | 2 +- src/main/frontend/components/assets.cljs | 2 +- src/main/frontend/components/block.cljs | 2 +- src/main/frontend/components/bug_report.cljs | 2 +- src/main/frontend/components/cmdk/core.cljs | 2 +- .../frontend/components/cmdk/list_item.cljs | 2 +- src/main/frontend/components/container.cljs | 2 +- src/main/frontend/components/dnd.cljs | 2 +- src/main/frontend/components/editor.cljs | 2 +- .../frontend/components/file_based/block.cljs | 2 +- .../frontend/components/file_based/git.cljs | 10 +- src/main/frontend/components/file_sync.cljs | 2 +- src/main/frontend/components/handbooks.cljs | 2 +- src/main/frontend/components/header.cljs | 2 +- src/main/frontend/components/icon.cljs | 2 +- src/main/frontend/components/imports.cljs | 2 +- src/main/frontend/components/objects.cljs | 2 +- src/main/frontend/components/page.cljs | 2 +- src/main/frontend/components/plugins.cljs | 2 +- .../frontend/components/plugins_settings.cljs | 2 +- src/main/frontend/components/property.cljs | 2 +- .../frontend/components/property/config.cljs | 2 +- .../frontend/components/property/value.cljs | 18 +- src/main/frontend/components/query.cljs | 2 +- .../frontend/components/query/builder.cljs | 2 +- .../frontend/components/right_sidebar.cljs | 2 +- src/main/frontend/components/server.cljs | 2 +- src/main/frontend/components/settings.cljs | 2 +- src/main/frontend/components/shortcut.cljs | 2 +- src/main/frontend/components/theme.cljs | 2 +- src/main/frontend/components/user/login.cljs | 2 +- src/main/frontend/components/views.cljs | 2 +- .../frontend/extensions/handbooks/core.cljs | 2 +- src/main/frontend/extensions/pdf/core.cljs | 2 +- src/main/frontend/extensions/pdf/toolbar.cljs | 2 +- src/main/frontend/extensions/tldraw.cljs | 2 +- src/main/frontend/extensions/zotero.cljs | 2 +- src/main/frontend/mobile/graph_picker.cljs | 2 +- src/main/frontend/rum.cljs | 2 +- src/main/frontend/ui.cljs | 2 +- yarn.lock | 29 +- 51 files changed, 479 insertions(+), 466 deletions(-) rename {src/main/frontend => deps/shui/src/logseq/shui}/hooks.cljs (74%) diff --git a/deps.edn b/deps.edn index 2f62a543c9..fa2087345a 100644 --- a/deps.edn +++ b/deps.edn @@ -1,7 +1,8 @@ {:paths ["src/main" "src/electron" "src/resources"] :deps {org.clojure/clojure {:mvn/version "1.11.1"} - rum/rum {:mvn/version "0.12.9"} + rum/rum {:git/url "https://github.com/logseq/rum" ;; fork + :sha "5d672bf84ed944414b9f61eeb83808ead7be9127"} datascript/datascript {:git/url "https://github.com/logseq/datascript" ;; fork :sha "1f84d10df4970f054489b0ee78799f64b8dd4ee2"} diff --git a/deps/shui/deps.edn b/deps/shui/deps.edn index fdb9142c2f..8206a42d82 100644 --- a/deps/shui/deps.edn +++ b/deps/shui/deps.edn @@ -3,6 +3,8 @@ {org.clojure/clojure {:mvn/version "1.11.1"} org.clojure/clojurescript {:mvn/version "1.11.132"} funcool/promesa {:mvn/version "11.0.678"} - rum/rum {:mvn/version "0.12.9"} + rum/rum {:git/url "https://github.com/logseq/rum" ;; fork + :sha "5d672bf84ed944414b9f61eeb83808ead7be9127"} + medley/medley {:mvn/version "1.4.0"} cljs-bean/cljs-bean {:mvn/version "1.5.0"}}} diff --git a/deps/shui/src/logseq/shui/demo.cljs b/deps/shui/src/logseq/shui/demo.cljs index 861f734699..0619a1b07d 100644 --- a/deps/shui/src/logseq/shui/demo.cljs +++ b/deps/shui/src/logseq/shui/demo.cljs @@ -1,10 +1,11 @@ (ns logseq.shui.demo - (:require [rum.core :as rum] - [logseq.shui.ui :as ui] - [dommy.core :refer-macros [sel1]] + (:require [dommy.core :refer-macros [sel1]] + [logseq.shui.dialog.core :as dialog-core] [logseq.shui.form.core :refer [yup yup-resolver] :as form-core] + [logseq.shui.hooks :as hooks] + [logseq.shui.ui :as ui] [promesa.core :as p] - [logseq.shui.dialog.core :as dialog-core])) + [rum.core :as rum])) (rum/defc section-item [title children] @@ -511,7 +512,7 @@ [] (let [el-ref (rum/use-ref nil)] - (rum/use-effect! + (hooks/use-effect! (fn [] (let [^js container (get-main-scroll-container) ^js el (rum/deref el-ref) diff --git a/deps/shui/src/logseq/shui/demo2.cljs b/deps/shui/src/logseq/shui/demo2.cljs index 33b277c990..95737ac900 100644 --- a/deps/shui/src/logseq/shui/demo2.cljs +++ b/deps/shui/src/logseq/shui/demo2.cljs @@ -1,23 +1,24 @@ (ns logseq.shui.demo2 - (:require [clojure.string :as string] - [rum.core :as rum] - [logseq.shui.ui :as ui] - [logseq.shui.popup.core :refer [install-popups update-popup! get-popup]] - [logseq.shui.select.multi :refer [x-select-content]] + (:require [cljs-bean.core :as bean] + [clojure.string :as string] [frontend.components.icon :refer [emojis-cp emojis icon-search]] [frontend.storage :as storage] - [cljs-bean.core :as bean] - [promesa.core :as p])) + [logseq.shui.hooks :as hooks] + [logseq.shui.popup.core :refer [install-popups update-popup! get-popup]] + [logseq.shui.select.multi :refer [x-select-content]] + [logseq.shui.ui :as ui] + [promesa.core :as p] + [rum.core :as rum])) (defn do-fetch! ([action] (do-fetch! action nil)) ([action query-str] (-> (js/window.fetch - (str "https://movies-api14.p.rapidapi.com/" (name action) (when query-str (str "?" query-str))) - #js {:method "GET" - :headers #js {:X-RapidAPI-Key "808ffd08c0mshc67d496f6024b46p164350jsn7b35179966c9", - :X-RapidAPI-Host "movies-api14.p.rapidapi.com"}}) - (p/then #(.json %))))) + (str "https://movies-api14.p.rapidapi.com/" (name action) (when query-str (str "?" query-str))) + #js {:method "GET" + :headers #js {:X-RapidAPI-Key "808ffd08c0mshc67d496f6024b46p164350jsn7b35179966c9", + :X-RapidAPI-Host "movies-api14.p.rapidapi.com"}}) + (p/then #(.json %))))) (rum/defc multi-select-demo [] @@ -35,96 +36,96 @@ rm-item! (fn [item-or-id] (set-selected-items! - (remove #(or (= item-or-id %) - (= item-or-id (str (:id %)))) - selected-items))) + (remove #(or (= item-or-id %) + (= item-or-id (str (:id %)))) + selected-items))) add-item! (fn [item] (set-selected-items! (conj selected-items item))) [open? set-open!] (rum/use-state false)] - (rum/use-effect! - (fn [] - (storage/set :ls-demo-multi-selected-items selected-items)) - [selected-items]) + (hooks/use-effect! + (fn [] + (storage/set :ls-demo-multi-selected-items selected-items)) + [selected-items]) (ui/card - (ui/card-header - (ui/card-title "Search Movies") - (ui/card-description "x multiselect for the remote items")) - (ui/card-content + (ui/card-header + (ui/card-title "Search Movies") + (ui/card-description "x multiselect for the remote items")) + (ui/card-content ;; Basic - (ui/dropdown-menu - {:open open?} + (ui/dropdown-menu + {:open open?} ;; trigger - (ui/dropdown-menu-trigger - [:div.border.p-2.rounded.w-full.cursor-pointer.flex.items-center.gap-1.flex-wrap - {:on-click (fn [^js e] - (let [^js target (.-target e)] - (if-let [^js c (some-> target (.closest ".close"))] - (some-> (.-dataset c) (.-k) (rm-item!)) - (set-open! true))))} - (for [{:keys [id original_title class poster_path]} selected-items] - (ui/badge {:variant :secondary :class (str class " group relative")} - [:span.flex.items-center.gap-1.flex-nowrap - [:img {:src poster_path :class "w-[16px] scale-75"}] - [:b original_title]] - (ui/button - {:variant :destructive - :size :icon - :data-k id - :class "!rounded-full !h-4 !w-4 absolute top-[-7px] right-[-3px] group-hover:visible invisible close"} - (ui/tabler-icon "x" {:size 12})))) - (ui/button {:variant :link :size :sm} "+")]) + (ui/dropdown-menu-trigger + [:div.border.p-2.rounded.w-full.cursor-pointer.flex.items-center.gap-1.flex-wrap + {:on-click (fn [^js e] + (let [^js target (.-target e)] + (if-let [^js c (some-> target (.closest ".close"))] + (some-> (.-dataset c) (.-k) (rm-item!)) + (set-open! true))))} + (for [{:keys [id original_title class poster_path]} selected-items] + (ui/badge {:variant :secondary :class (str class " group relative")} + [:span.flex.items-center.gap-1.flex-nowrap + [:img {:src poster_path :class "w-[16px] scale-75"}] + [:b original_title]] + (ui/button + {:variant :destructive + :size :icon + :data-k id + :class "!rounded-full !h-4 !w-4 absolute top-[-7px] right-[-3px] group-hover:visible invisible close"} + (ui/tabler-icon "x" {:size 12})))) + (ui/button {:variant :link :size :sm} "+")]) ;; content - (x-select-content items selected-items - {;; test item render - :open? open? - :close! #(set-open! false) - :search-enabled? true - :search-key q - :search-fn (fn [items] - (when (not fetching?) items)) - :on-search-key-change (fn [v] - (set-q! v) - (if (string/blank? v) - (set-items! []) - (when (not fetching?) - (set-fetching? true) - (-> (do-fetch! :search (str "query=" v)) - (p/then #(when-let [ret (bean/->clj %)] - (when-let [items (:contents ret)] - (set-items! (map (fn [item] (assoc item :id (:_id item))) (take 12 items)))))) - (p/finally #(set-fetching? false)))))) + (x-select-content items selected-items + {;; test item render + :open? open? + :close! #(set-open! false) + :search-enabled? true + :search-key q + :search-fn (fn [items] + (when (not fetching?) items)) + :on-search-key-change (fn [v] + (set-q! v) + (if (string/blank? v) + (set-items! []) + (when (not fetching?) + (set-fetching? true) + (-> (do-fetch! :search (str "query=" v)) + (p/then #(when-let [ret (bean/->clj %)] + (when-let [items (:contents ret)] + (set-items! (map (fn [item] (assoc item :id (:_id item))) (take 12 items)))))) + (p/finally #(set-fetching? false)))))) - :item-render (fn [item {:keys [selected?]}] - (if item - (ui/dropdown-menu-checkbox-item - {:checked selected? - :on-click (fn [] - (if selected? - (rm-item! item) - (add-item! item)) + :item-render (fn [item {:keys [selected?]}] + (if item + (ui/dropdown-menu-checkbox-item + {:checked selected? + :on-click (fn [] + (if selected? + (rm-item! item) + (add-item! item)) ;(set-open! false) - )} - [:div.flex.items-center.gap-2 - [:span [:img {:src (:poster_path item) - :class "w-[20px]"}]] - [:span.flex.flex-col - [:b (:original_title item)] - [:small.opacity-50 - {:class "text-[10px]"} - (:release_date item)]]]) - (ui/dropdown-menu-separator))) + )} + [:div.flex.items-center.gap-2 + [:span [:img {:src (:poster_path item) + :class "w-[20px]"}]] + [:span.flex.flex-col + [:b (:original_title item)] + [:small.opacity-50 + {:class "text-[10px]"} + (:release_date item)]]]) + (ui/dropdown-menu-separator))) - :head-render (fn [] (when (and fetching? (not (string/blank? q))) - [:b.flex.items-center.justify-center.py-4 - (ui/tabler-icon "loader" {:class "animate-spin"})])) + :head-render (fn [] (when (and fetching? (not (string/blank? q))) + [:b.flex.items-center.justify-center.py-4 + (ui/tabler-icon "loader" {:class "animate-spin"})])) ;:foot-render (fn [] [:b "footer"]) - :content-props - {:align "start" - :class "w-80"}}))))) + :content-props + {:align "start" + :class "w-80"}}))))) [:hr] @@ -146,50 +147,50 @@ [open? set-open!] (rum/use-state false)] (ui/card - (ui/card-header - (ui/card-title "Basic") - (ui/card-description "x multiselect for shui")) - (ui/card-content - [:label.block.flex.items-center.pb-3.cursor-pointer - (ui/checkbox {:checked search? - :on-click #(set-search? (not search?))}) - [:small.pl-2 "Enable basic search input"]] + (ui/card-header + (ui/card-title "Basic") + (ui/card-description "x multiselect for shui")) + (ui/card-content + [:label.block.flex.items-center.pb-3.cursor-pointer + (ui/checkbox {:checked search? + :on-click #(set-search? (not search?))}) + [:small.pl-2 "Enable basic search input"]] ;; Basic - (ui/dropdown-menu - {:open open?} + (ui/dropdown-menu + {:open open?} ;; trigger - (ui/dropdown-menu-trigger - [:p.border.p-2.rounded.w-full.cursor-pointer - {:on-click #(set-open! true)} - (for [{:keys [key value class]} selected-items] - (ui/badge {:variant :secondary :class class} (str "#" key " " value))) - (ui/button {:variant :link :size :sm} "+")]) + (ui/dropdown-menu-trigger + [:p.border.p-2.rounded.w-full.cursor-pointer + {:on-click #(set-open! true)} + (for [{:keys [key value class]} selected-items] + (ui/badge {:variant :secondary :class class} (str "#" key " " value))) + (ui/button {:variant :link :size :sm} "+")]) ;; content - (x-select-content items selected-items - {:close! #(set-open! false) - :search-enabled? search? - :search-key-render (fn [q {:keys [items]}] - (when (and (not (string/blank? q)) - (not (seq items))) - [:b.flex.items-center.justify-center.py-4.gap-2.font-normal.opacity-80 - (ui/tabler-icon "lemon") [:small "No fruits!"]])) - :on-chosen on-chosen - :value-render (fn [v {:keys [selected?]}] - (if selected? - [:b.text-red-800 v] - [:b.text-green-800 v])) - :content-props - {:class "w-48"}}))))) + (x-select-content items selected-items + {:close! #(set-open! false) + :search-enabled? search? + :search-key-render (fn [q {:keys [items]}] + (when (and (not (string/blank? q)) + (not (seq items))) + [:b.flex.items-center.justify-center.py-4.gap-2.font-normal.opacity-80 + (ui/tabler-icon "lemon") [:small "No fruits!"]])) + :on-chosen on-chosen + :value-render (fn [v {:keys [selected?]}] + (if selected? + [:b.text-red-800 v] + [:b.text-green-800 v])) + :content-props + {:class "w-48"}}))))) [:hr] (let [[items set-items!] (rum/use-state - [{:key 1 :value "Apple" :class "bg-gray-800 text-gray-50"} - {:key 2 :value "Orange" :class "bg-orange-700 text-gray-50"} - nil - {:key 3 :value "Pear"} - {:key 4 :value "Banana" :class "bg-yellow-700 text-gray-700"}]) + [{:key 1 :value "Apple" :class "bg-gray-800 text-gray-50"} + {:key 2 :value "Orange" :class "bg-orange-700 text-gray-50"} + nil + {:key 3 :value "Pear"} + {:key 4 :value "Banana" :class "bg-yellow-700 text-gray-700"}]) [selected-items set-selected-items!] (rum/use-state [(last items) (first items)]) @@ -202,55 +203,54 @@ [open? set-open!] (rum/use-state false)] (ui/card - (ui/card-header - (ui/card-title "Search & Custom") - (ui/card-description "x multiselect for shui")) - (ui/card-content + (ui/card-header + (ui/card-title "Search & Custom") + (ui/card-description "x multiselect for shui")) + (ui/card-content ;; Basic - (ui/dropdown-menu - {:open open?} + (ui/dropdown-menu + {:open open?} ;; trigger - (ui/dropdown-menu-trigger - [:p.border.p-2.rounded.w-full.cursor-pointer - {:on-click #(set-open! true)} - (for [{:keys [key value class]} selected-items] - (ui/badge {:variant :secondary :class class} (str "#" key " " value))) - (ui/button {:variant :link :size :sm} "+")]) + (ui/dropdown-menu-trigger + [:p.border.p-2.rounded.w-full.cursor-pointer + {:on-click #(set-open! true)} + (for [{:keys [key value class]} selected-items] + (ui/badge {:variant :secondary :class class} (str "#" key " " value))) + (ui/button {:variant :link :size :sm} "+")]) ;; content - (x-select-content items selected-items - {;; test item render - :open? open? - :close! #(set-open! false) - :search-enabled? true - :item-render (fn [item {:keys [selected?]}] - (if item - (ui/dropdown-menu-checkbox-item - {:checked selected? - :on-click (fn [] - (if selected? - (rm-item! item) - (add-item! item)))} - (:value item)) - (ui/dropdown-menu-separator))) + (x-select-content items selected-items + {;; test item render + :open? open? + :close! #(set-open! false) + :search-enabled? true + :item-render (fn [item {:keys [selected?]}] + (if item + (ui/dropdown-menu-checkbox-item + {:checked selected? + :on-click (fn [] + (if selected? + (rm-item! item) + (add-item! item)))} + (:value item)) + (ui/dropdown-menu-separator))) - :search-key-render - (fn [k {:keys [items x-item exist-fn]}] - (when (and - (not (string/blank? k)) - (not (exist-fn))) - (x-item - {:on-click (fn [] - (ui/toast! (str "Create: " k) :warning) - (set-open! false))} - (str "+ create: " k)))) + :search-key-render + (fn [k {:keys [items x-item exist-fn]}] + (when (and + (not (string/blank? k)) + (not (exist-fn))) + (x-item + {:on-click (fn [] + (ui/toast! (str "Create: " k) :warning) + (set-open! false))} + (str "+ create: " k)))) ;:head-render (fn [] [:b "header"]) ;:foot-render (fn [] [:b "footer"]) - :content-props - {:align "start" - :class "w-48"}}))))) - ]) + :content-props + {:align "start" + :class "w-48"}})))))]) (rum/defc icon-picker-demo [] @@ -282,27 +282,27 @@ [:a.underline {:on-click #(ui/popup-show! % - (fn [_config] - [:div.max-h-72.overflow-auto.p-1 - (emojis-cp (take 80 emojis) - {:on-chosen - (fn [_ t] - (set-emoji! t) - (ui/popup-hide-all!))})]) - {:content-props {:class "w-72 p-0"} - :as-dropdown? true})} + (fn [_config] + [:div.max-h-72.overflow-auto.p-1 + (emojis-cp (take 80 emojis) + {:on-chosen + (fn [_ t] + (set-emoji! t) + (ui/popup-hide-all!))})]) + {:content-props {:class "w-72 p-0"} + :as-dropdown? true})} (if emoji [:strong.px-1.text-6xl [:em-emoji emoji]] "emoji :O")] "."])] [:<> (emoji-picker nil) [:p.py-4 (ui/button - {:variant :secondary - :on-click #(ui/popup-show! % - (fn [] - [:p.p-4 - (emoji-picker true)]))} - "Play a nested x popup.")] + {:variant :secondary + :on-click #(ui/popup-show! % + (fn [] + [:p.p-4 + (emoji-picker true)]))} + "Play a nested x popup.")] [:p.py-4 (let [gen-content @@ -312,60 +312,60 @@ (emoji-picker true) [:strong.px-1.text-6xl q]])] (ui/input - {:placeholder "Select a fruit." - :ref *q-ref - :value q - :on-change (fn [^js e] - (let [val (.-value (.-target e))] - (set-q! val) - (update-popup! :select-a-fruit-input [:content] (gen-content val)))) - :class "w-1/5" - :on-focus (fn [^js e] - (let [id :select-a-fruit-input - [_ popup] (get-popup id)] - (if (not popup) - (ui/popup-show! (.-target e) - (gen-content q) - {:id id - :align "start" - :content-props - {:class "x-input-popup-content" - :onPointerDownOutside - (fn [^js e] - (js/console.log "===>> onPointerDownOutside:" e (rum/deref *q-ref)) - (when-let [q-ref (rum/deref *q-ref)] - (let [^js target (or (.-relatedTarget e) - (.-target e))] - (js/console.log "t:" target) - (when (and - (not (.contains q-ref target)) - (not (.closest target ".x-input-popup-content"))) - (ui/popup-hide! id))))) - :onOpenAutoFocus #(.preventDefault %)}}) + {:placeholder "Select a fruit." + :ref *q-ref + :value q + :on-change (fn [^js e] + (let [val (.-value (.-target e))] + (set-q! val) + (update-popup! :select-a-fruit-input [:content] (gen-content val)))) + :class "w-1/5" + :on-focus (fn [^js e] + (let [id :select-a-fruit-input + [_ popup] (get-popup id)] + (if (not popup) + (ui/popup-show! (.-target e) + (gen-content q) + {:id id + :align "start" + :content-props + {:class "x-input-popup-content" + :onPointerDownOutside + (fn [^js e] + (js/console.log "===>> onPointerDownOutside:" e (rum/deref *q-ref)) + (when-let [q-ref (rum/deref *q-ref)] + (let [^js target (or (.-relatedTarget e) + (.-target e))] + (js/console.log "t:" target) + (when (and + (not (.contains q-ref target)) + (not (.closest target ".x-input-popup-content"))) + (ui/popup-hide! id))))) + :onOpenAutoFocus #(.preventDefault %)}}) ;; update content - (update-popup! id [:content] - (gen-content q))))) + (update-popup! id [:content] + (gen-content q))))) ;:on-blur (fn [^js e] ; (let [^js target (.-relatedTarget e)] ; (js/console.log "==>>>" target) ; (when-not (.closest target ".x-input-popup-content") ; (hide-x-popup! :select-a-fruit-input)))) - }))] + }))] [:div.w-full.p-4.border.rounded.dotted.h-48.mt-8.bg-gray-02 {:on-click #(ui/popup-show! % - (->> (range 8) - (map (fn [it] - (ui/dropdown-menu-item - {:on-select (fn [] - (ui/toast! it) - (ui/popup-hide-all!))} - [:strong it])))) - {:as-dropdown? true - :content-props {:class "w-48"}}) + (->> (range 8) + (map (fn [it] + (ui/dropdown-menu-item + {:on-select (fn [] + (ui/toast! it) + (ui/popup-hide-all!))} + [:strong it])))) + {:as-dropdown? true + :content-props {:class "w-48"}}) :on-context-menu #(ui/popup-show! % - [:h1.text-3xl.font-bold "hi x popup for custom context menu!"])}]])]) + [:h1.text-3xl.font-bold "hi x popup for custom context menu!"])}]])]) (rum/defc custom-trigger-content [] @@ -381,17 +381,16 @@ [:h1.text-3xl.font-bold.border-b.pb-4 "Sample dropdown/menu trigger"] [:div.py-4 (ui/dropdown-menu - (ui/dropdown-menu-trigger - {:as-child true} - (ui/trigger-child-wrap - {:class "border p-6 border"} - (custom-trigger-content))) - (ui/dropdown-menu-content - (ui/dropdown-menu-item "A item") - (ui/dropdown-menu-item "B item") - (ui/dropdown-menu-item "C item")))] - ]) + (ui/dropdown-menu-trigger + {:as-child true} + (ui/trigger-child-wrap + {:class "border p-6 border"} + (custom-trigger-content))) + (ui/dropdown-menu-content + (ui/dropdown-menu-item "A item") + (ui/dropdown-menu-item "B item") + (ui/dropdown-menu-item "C item")))]]) (rum/defc page [] - (sample-dropdown-trigger)) \ No newline at end of file + (sample-dropdown-trigger)) diff --git a/deps/shui/src/logseq/shui/dialog/core.cljs b/deps/shui/src/logseq/shui/dialog/core.cljs index 2ac95fdac0..659773f84f 100644 --- a/deps/shui/src/logseq/shui/dialog/core.cljs +++ b/deps/shui/src/logseq/shui/dialog/core.cljs @@ -1,11 +1,12 @@ (ns logseq.shui.dialog.core - (:require [rum.core :as rum] - [daiquiri.interpreter :refer [interpret]] - [medley.core :as medley] - [logseq.shui.util :as util] + (:require [daiquiri.interpreter :refer [interpret]] [logseq.shui.base.core :as base] [logseq.shui.form.core :as form] - [promesa.core :as p])) + [logseq.shui.hooks :as hooks] + [logseq.shui.util :as util] + [medley.core :as medley] + [promesa.core :as p] + [rum.core :as rum])) ;; provider (def dialog (util/lsui-wrap "Dialog")) @@ -130,10 +131,11 @@ :close :align :on-open-change :open? :root-props :content-props) props (assoc-in props [:overlay-props :data-align] (name (or align :center)))] - (rum/use-effect! + (hooks/use-effect! (fn [] (when (false? open?) - (js/setTimeout #(detach-modal! id) 128))) + (let [timeout (js/setTimeout #(detach-modal! id) 128)] + #(js/clearTimeout timeout)))) [open?]) (dialog @@ -171,10 +173,11 @@ (let [{:keys [id title description content footer deferred open?]} config props (dissoc config :id :title :description :content :footer :deferred :open? :alert?)] - (rum/use-effect! + (hooks/use-effect! (fn [] (when (false? open?) - (js/setTimeout #(detach-modal! id) 128))) + (let [timeout (js/setTimeout #(detach-modal! id) 128)] + #(js/clearTimeout timeout)))) [open?]) (alert-dialog @@ -209,14 +212,15 @@ *ok-ref (rum/use-ref nil) *reminder-ref (rum/use-ref nil)] - (rum/use-effect! + (hooks/use-effect! (fn [] (when ready? - (js/setTimeout - #(some-> (rum/deref *ok-ref) (.focus)) 128))) + (let [timeout (js/setTimeout + #(some-> (rum/deref *ok-ref) (.focus)) 128)] + #(js/clearTimeout timeout)))) [ready?]) - (rum/use-effect! + (hooks/use-effect! (fn [] (try (if-let [reminder-v (and reminder? (js/localStorage.getItem (str id)))] diff --git a/src/main/frontend/hooks.cljs b/deps/shui/src/logseq/shui/hooks.cljs similarity index 74% rename from src/main/frontend/hooks.cljs rename to deps/shui/src/logseq/shui/hooks.cljs index ff8e2a79c2..fba51400bd 100644 --- a/src/main/frontend/hooks.cljs +++ b/deps/shui/src/logseq/shui/hooks.cljs @@ -1,4 +1,4 @@ -(ns frontend.hooks +(ns logseq.shui.hooks "React custom hooks." (:refer-clojure :exclude [ref deref]) (:require [goog.functions :as gfun] @@ -24,17 +24,23 @@ "setup-fn will be invoked every render of component when no deps arg provided" ([setup-fn] (rum/use-effect! setup-fn)) ([setup-fn deps & {:keys [equal-fn]}] - (rum/use-effect! setup-fn (if (empty? deps) - deps - #js[(memo-deps equal-fn deps)])))) + (rum/use-effect! (fn [& deps] + (let [result (apply setup-fn deps)] + (when (fn? result) result))) + (if (empty? deps) + deps + #js[(memo-deps equal-fn deps)])))) #_{:clj-kondo/ignore [:discouraged-var]} (defn use-layout-effect! ([setup-fn] (rum/use-layout-effect! setup-fn)) ([setup-fn deps & {:keys [equal-fn]}] - (rum/use-layout-effect! setup-fn (if (empty? deps) - deps - #js[(memo-deps equal-fn deps)])))) + (rum/use-layout-effect! (fn [& deps] + (let [result (apply setup-fn deps)] + (when (fn? result) result))) + (if (empty? deps) + deps + #js[(memo-deps equal-fn deps)])))) #_{:clj-kondo/ignore [:discouraged-var]} (defn use-callback diff --git a/deps/shui/src/logseq/shui/select/multi.cljs b/deps/shui/src/logseq/shui/select/multi.cljs index 205f1fa879..13a98adf84 100644 --- a/deps/shui/src/logseq/shui/select/multi.cljs +++ b/deps/shui/src/logseq/shui/select/multi.cljs @@ -1,14 +1,15 @@ (ns logseq.shui.select.multi (:require [clojure.string :as string] - [rum.core :as rum] + [logseq.shui.form.core :as form] + [logseq.shui.hooks :as hooks] [logseq.shui.popup.core :as popup] - [logseq.shui.form.core :as form])) + [rum.core :as rum])) (defn- get-k [item] (if (map? item) (some->> ((juxt :id :key :label) item) - (remove nil?) - (first)) + (remove nil?) + (first)) item)) (defn- get-v @@ -21,27 +22,27 @@ (let [*el (rum/use-ref nil) [down set-down!] (rum/use-state 0)] - (rum/use-effect! - (fn [] - (when-let [^js item (and (> down 0) - (some-> (rum/deref *el) - (.closest ".head") - (.-nextSibling)))] - (some-> (if valid-search-key? (.-nextSibling item) item) - (.focus)))) - [down]) + (hooks/use-effect! + (fn [] + (when-let [^js item (and (> down 0) + (some-> (rum/deref *el) + (.closest ".head") + (.-nextSibling)))] + (some-> (if valid-search-key? (.-nextSibling item) item) + (.focus)))) + [down]) [:div.search-input {:ref *el} (form/input - (merge {:placeholder "search" - :on-key-up #(case (.-key %) - "ArrowDown" (set-down! (inc down)) - "ArrowUp" nil - "Enter" (when (fn? on-enter) (on-enter)) - :dune) - :auto-focus true} - input-props))])) + (merge {:placeholder "search" + :on-key-up #(case (.-key %) + "ArrowDown" (set-down! (inc down)) + "ArrowUp" nil + "Enter" (when (fn? on-enter) (on-enter)) + :dune) + :auto-focus true} + input-props))])) (defn- simple-search-fn [items q] @@ -49,8 +50,8 @@ (if (string/blank? q) items (filter #(some-> (get-v %) - (string/lower-case) - (string/includes? q)) items)))) + (string/lower-case) + (string/includes? q)) items)))) (rum/defc x-select-content [items selected-items & {:keys [on-chosen item-render value-render @@ -70,8 +71,8 @@ (when (and search-enabled? (not= "INPUT" (.-nodeName target))) ;; focus search input (some-> (get-content-el target) - (.querySelector "input") - (.focus)))) + (.querySelector "input") + (.focus)))) items (if search-enabled? (if (fn? search-fn) (search-fn items search-key1) @@ -79,100 +80,100 @@ items) close1! #(when (fn? close!) (close!))] - (rum/use-effect! - (fn [] - (when (fn? on-search-key-change) - (on-search-key-change search-key1'))) - [search-key1']) + (hooks/use-effect! + (fn [] + (when (fn? on-search-key-change) + (on-search-key-change search-key1'))) + [search-key1']) - (rum/use-effect! - (fn [] - (when-let [t (when (and search-enabled? (false? open?)) - (js/setTimeout #(set-search-key! "") 500))] - #(js/clearTimeout t))) - [open?]) + (hooks/use-effect! + (fn [] + (when-let [t (when (and search-enabled? (false? open?)) + (js/setTimeout #(set-search-key! "") 500))] + #(js/clearTimeout t))) + [open?]) (x-content - (merge - {:onInteractOutside close1! - :onEscapeKeyDown close1! - :on-key-down (fn [^js e] - (when-let [^js target (.-target e)] - (case (.-key e) - "ArrowUp" - (when (= (some-> (get-item-nodes target) (first)) - js/document.activeElement) - (focus-search-input! target)) - "l" (when (or (.-metaKey e) (.-ctrlKey e)) - (focus-search-input! target)) - :dune))) - :class (str (:class content-props) - " ui__multi-select-content" - (when valid-search-key? " has-search-key"))} - (dissoc content-props :class)) + (merge + {:onInteractOutside close1! + :onEscapeKeyDown close1! + :on-key-down (fn [^js e] + (when-let [^js target (.-target e)] + (case (.-key e) + "ArrowUp" + (when (= (some-> (get-item-nodes target) (first)) + js/document.activeElement) + (focus-search-input! target)) + "l" (when (or (.-metaKey e) (.-ctrlKey e)) + (focus-search-input! target)) + :dune))) + :class (str (:class content-props) + " ui__multi-select-content" + (when valid-search-key? " has-search-key"))} + (dissoc content-props :class)) ;; header - (when (or search-enabled? (fn? head-render)) - [:div.head - {:ref *head-ref} - (when search-enabled? - (search-input - {:value search-key1 - :on-key-down (fn [^js e] - (.stopPropagation e) - (case (.-key e) - "Escape" (if (string/blank? search-key1) - (some-> (.-target e) (.closest "[data-radix-menu-content]") (.focus)) - (set-search-key! "")) - :dune)) - :on-change #(set-search-key! (.-value (.-target %)))} + (when (or search-enabled? (fn? head-render)) + [:div.head + {:ref *head-ref} + (when search-enabled? + (search-input + {:value search-key1 + :on-key-down (fn [^js e] + (.stopPropagation e) + (case (.-key e) + "Escape" (if (string/blank? search-key1) + (some-> (.-target e) (.closest "[data-radix-menu-content]") (.focus)) + (set-search-key! "")) + :dune)) + :on-change #(set-search-key! (.-value (.-target %)))} - {:on-enter (fn [] - (when-let [head-el (and (not (string/blank? search-key1')) - (rum/deref *head-ref))] - (when-let [^js item (.-nextSibling head-el)] - (when (contains? #{"menuitemcheckbox" "menuitem"} - (.getAttribute item "role")) - (.click item))))) - :valid-search-key? valid-search-key?})) - (when head-render (head-render))]) + {:on-enter (fn [] + (when-let [head-el (and (not (string/blank? search-key1')) + (rum/deref *head-ref))] + (when-let [^js item (.-nextSibling head-el)] + (when (contains? #{"menuitemcheckbox" "menuitem"} + (.getAttribute item "role")) + (.click item))))) + :valid-search-key? valid-search-key?})) + (when head-render (head-render))]) ;; items - (for [item items - :let [selected? (some #(let [k (get-k item) - k' (get-k %)] - (or (= item %) - (and (not (nil? k)) - (not (nil? k')) - (= k k')))) - selected-items)]] - (if (fn? item-render) - (item-render item {:x-item x-item :selected? selected?}) - (let [k (get-k item) - v (get-v item)] - (when k - (let [opts {:selected? selected?} - on-click' (:on-click item-props) - on-click (fn [e] + (for [item items + :let [selected? (some #(let [k (get-k item) + k' (get-k %)] + (or (= item %) + (and (not (nil? k)) + (not (nil? k')) + (= k k')))) + selected-items)]] + (if (fn? item-render) + (item-render item {:x-item x-item :selected? selected?}) + (let [k (get-k item) + v (get-v item)] + (when k + (let [opts {:selected? selected?} + on-click' (:on-click item-props) + on-click (fn [e] ;; TODO: return value - (when (fn? on-click') (on-click' e)) - (when (fn? on-chosen) - (on-chosen item opts)))] - (x-item (merge {:data-k k :on-click on-click} item-props) - [:span.flex.items-center.gap-2.w-full - (form/checkbox {:checked selected?}) - (let [v' (if (fn? v) (v item opts) v)] - (if (fn? value-render) - (value-render v' (assoc opts :item item)) v'))])))))) + (when (fn? on-click') (on-click' e)) + (when (fn? on-chosen) + (on-chosen item opts)))] + (x-item (merge {:data-k k :on-click on-click} item-props) + [:span.flex.items-center.gap-2.w-full + (form/checkbox {:checked selected?}) + (let [v' (if (fn? v) (v item opts) v)] + (if (fn? value-render) + (value-render v' (assoc opts :item item)) v'))])))))) - (when (and search-enabled? - (fn? search-key-render)) - (let [exist-fn (fn [] - (and (not (string/blank? search-key1)) - (seq items) - (contains? (into #{} (map #(some-> (get-v %) (string/lower-case)) items)) - (string/lower-case search-key1))))] - (search-key-render search-key1 - {:items items :x-item x-item :exist-fn exist-fn}))) + (when (and search-enabled? + (fn? search-key-render)) + (let [exist-fn (fn [] + (and (not (string/blank? search-key1)) + (seq items) + (contains? (into #{} (map #(some-> (get-v %) (string/lower-case)) items)) + (string/lower-case search-key1))))] + (search-key-render search-key1 + {:items items :x-item x-item :exist-fn exist-fn}))) ;; footer - (when (fn? foot-render) - [:div.foot - (foot-render)])))) + (when (fn? foot-render) + [:div.foot + (foot-render)])))) diff --git a/deps/shui/src/logseq/shui/table/core.cljc b/deps/shui/src/logseq/shui/table/core.cljc index bab8430cec..fb9a35833f 100644 --- a/deps/shui/src/logseq/shui/table/core.cljc +++ b/deps/shui/src/logseq/shui/table/core.cljc @@ -2,6 +2,7 @@ "Table" (:require [clojure.set :as set] [dommy.core :refer-macros [sel1]] + [logseq.shui.hooks :as hooks] [logseq.shui.table.impl :as impl] [rum.core :as rum])) @@ -147,7 +148,7 @@ ;; FIXME: ux (defn- use-sticky-element! [^js/HTMLElement container target-ref] - (rum/use-effect! + (hooks/use-effect! (fn [] (let [^js el (rum/deref target-ref) ^js cls (.-classList el) @@ -189,7 +190,7 @@ ;; FIXME: another solution for the sticky header (defn- use-sticky-element2! [^js/HTMLDivElement target-ref] - (rum/use-effect! + (hooks/use-effect! (fn [] (let [^js target (rum/deref target-ref) ^js container (or (.closest target ".sidebar-item-list") (get-main-scroll-container)) @@ -205,7 +206,7 @@ update-target-top! (fn [] (when (not (.contains target-cls "ls-fixed")) (vreset! *el-top (+ (-> target (.getBoundingClientRect) (.-top)) - (.-scrollTop container))))) + (.-scrollTop container))))) update-footer! (fn [] (let [tw (.-scrollWidth table)] (when (and table-footer (number? tw) (> tw 0)) @@ -228,7 +229,7 @@ table-in-top (+ scroll-top head-height) table-bottom (.-bottom (.getBoundingClientRect table)) fixed? (and (> table-bottom (+ head-height 90)) - (> table-in-top @*el-top))] + (> table-in-top @*el-top))] (if fixed? (.add target-cls "ls-fixed") (.remove target-cls "ls-fixed")) @@ -236,7 +237,7 @@ target-observe-handle! (fn [^js _e] (when (not @*ticking?) (js/window.requestAnimationFrame - #(do (target-observe!) (vreset! *ticking? false))) + #(do (target-observe!) (vreset! *ticking? false))) (vreset! *ticking? true))) resize-observer (js/ResizeObserver. update-target!) page-resize-observer (js/ResizeObserver. (fn [] (update-target-top!)))] @@ -251,8 +252,8 @@ ;; teardown #(do (.removeEventListener container "scroll" target-observe!) - (.disconnect resize-observer) - (.disconnect page-resize-observer)))))) + (.disconnect resize-observer) + (.disconnect page-resize-observer)))))) [])) (rum/defc table-header < rum/static diff --git a/deps/shui/src/logseq/shui/toaster/core.cljs b/deps/shui/src/logseq/shui/toaster/core.cljs index 4115a1ddb1..db31b60867 100644 --- a/deps/shui/src/logseq/shui/toaster/core.cljs +++ b/deps/shui/src/logseq/shui/toaster/core.cljs @@ -1,8 +1,9 @@ (ns logseq.shui.toaster.core - (:require [rum.core :as rum] + (:require [cljs-bean.core :as bean] [daiquiri.interpreter :refer [interpret]] + [logseq.shui.hooks :as hooks] [logseq.shui.util :as util] - [cljs-bean.core :as bean])) + [rum.core :as rum])) (defonce ^:private Toaster (util/lsui-wrap "Toaster")) (defonce ^:private *toast (atom nil)) @@ -23,22 +24,22 @@ < rum/static [] (let [^js js-toast (js/window.LSUI.useToast)] - (rum/use-effect! - (fn [] - (reset! *toast {:toast (.-toast js-toast) - :dismiss (.-dismiss js-toast) - :update (.-update js-toast)}) - #()) - []) + (hooks/use-effect! + (fn [] + (reset! *toast {:toast (.-toast js-toast) + :dismiss (.-dismiss js-toast) + :update (.-update js-toast)}) + #()) + []) [:<> (Toaster)])) (defn update-html-props [v] (update-keys v - #(case % - :class :className - :for :htmlFor - %))) + #(case % + :class :className + :for :htmlFor + %))) (defn interpret-vals [config ks & args] @@ -46,7 +47,7 @@ (let [v (get config k) v (if (fn? v) (apply v args) v)] (if (vector? v) (assoc config k (interpret v)) config))) - config ks)) + config ks)) (defn toast! ([content-or-config] (toast! content-or-config :default nil)) @@ -56,12 +57,12 @@ (let [config (if (map? content-or-config) content-or-config (-> {:description content-or-config} - (merge (if (map? status) status {:variant status})))) + (merge (if (map? status) status {:variant status})))) config (update-html-props (merge config opts)) id (or (:id config) (gen-id)) config (assoc config :id id) config (interpret-vals config [:title :description :action :icon] - {:id id :dismiss! #(dismiss id) :update! #(toast! (assoc %1 :id id))})] + {:id id :dismiss! #(dismiss id) :update! #(toast! (assoc %1 :id id))})] (js->clj (toast (clj->js config)))) :exception))) diff --git a/package.json b/package.json index 62eb6f3c03..ee828984d0 100644 --- a/package.json +++ b/package.json @@ -155,8 +155,8 @@ "pixi.js": "6.2.0", "posthog-js": "1.10.2", "prop-types": "^15.7.2", - "react": "17.0.2", - "react-dom": "17.0.2", + "react": "18.3.1", + "react-dom": "18.3.1", "react-grid-layout": "0.16.6", "react-intersection-observer": "^9.3.5", "react-resize-context": "3.0.0", diff --git a/src/main/frontend/components/all_pages.cljs b/src/main/frontend/components/all_pages.cljs index 7ca57b286a..0a3335245e 100644 --- a/src/main/frontend/components/all_pages.cljs +++ b/src/main/frontend/components/all_pages.cljs @@ -7,9 +7,9 @@ [frontend.context.i18n :refer [t]] [frontend.db :as db] [frontend.handler.page :as page-handler] - [frontend.hooks :as hooks] [frontend.state :as state] [logseq.common.config :as common-config] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/components/assets.cljs b/src/main/frontend/components/assets.cljs index aab80d21a6..4f67f0e019 100644 --- a/src/main/frontend/components/assets.cljs +++ b/src/main/frontend/components/assets.cljs @@ -8,10 +8,10 @@ [frontend.context.i18n :refer [t]] [frontend.handler.assets :as assets-handler] [frontend.handler.notification :as notification] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [medley.core :as medley] [promesa.core :as p] diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 63042349fa..8dc3b98eb1 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -55,7 +55,6 @@ [frontend.handler.route :as route-handler] [frontend.handler.ui :as ui-handler] [frontend.handler.whiteboard :as whiteboard-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.mobile.intent :as mobile-intent] [frontend.mobile.util :as mobile-util] @@ -87,6 +86,7 @@ [logseq.graph-parser.text :as text] [logseq.outliner.property :as outliner-property] [logseq.shui.dialog.core :as shui-dialog] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [medley.core :as medley] [promesa.core :as p] diff --git a/src/main/frontend/components/bug_report.cljs b/src/main/frontend/components/bug_report.cljs index 1b07c75163..daf4665197 100644 --- a/src/main/frontend/components/bug_report.cljs +++ b/src/main/frontend/components/bug_report.cljs @@ -3,9 +3,9 @@ [frontend.components.header :as header] [frontend.context.i18n :refer [t]] [frontend.handler.notification :as notification] - [frontend.hooks :as hooks] [frontend.ui :as ui] [frontend.util :as util] + [logseq.shui.hooks :as hooks] [reitit.frontend.easy :as rfe] [rum.core :as rum])) diff --git a/src/main/frontend/components/cmdk/core.cljs b/src/main/frontend/components/cmdk/core.cljs index db089e6309..74363c7ea2 100644 --- a/src/main/frontend/components/cmdk/core.cljs +++ b/src/main/frontend/components/cmdk/core.cljs @@ -18,7 +18,6 @@ [frontend.handler.page :as page-handler] [frontend.handler.route :as route-handler] [frontend.handler.whiteboard :as whiteboard-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.modules.shortcut.core :as shortcut] [frontend.modules.shortcut.utils :as shortcut-utils] @@ -36,6 +35,7 @@ [logseq.common.util.block-ref :as block-ref] [logseq.db :as ldb] [logseq.graph-parser.text :as text] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/components/cmdk/list_item.cljs b/src/main/frontend/components/cmdk/list_item.cljs index 64cf853d3a..a78e1517c0 100644 --- a/src/main/frontend/components/cmdk/list_item.cljs +++ b/src/main/frontend/components/cmdk/list_item.cljs @@ -2,8 +2,8 @@ (:require ["remove-accents" :as remove-accents] [clojure.string :as string] - [frontend.hooks :as hooks] [goog.string :as gstring] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [rum.core :as rum])) diff --git a/src/main/frontend/components/container.cljs b/src/main/frontend/components/container.cljs index 97f132a52b..05b38fe705 100644 --- a/src/main/frontend/components/container.cljs +++ b/src/main/frontend/components/container.cljs @@ -31,7 +31,6 @@ [frontend.handler.route :as route-handler] [frontend.handler.user :as user-handler] [frontend.handler.whiteboard :as whiteboard-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.mobile.action-bar :as action-bar] [frontend.mobile.footer :as footer] @@ -52,6 +51,7 @@ [logseq.common.util.namespace :as ns-util] [logseq.db :as ldb] [logseq.shui.dialog.core :as shui-dialog] + [logseq.shui.hooks :as hooks] [logseq.shui.popup.core :as shui-popup] [logseq.shui.toaster.core :as shui-toaster] [logseq.shui.ui :as shui] diff --git a/src/main/frontend/components/dnd.cljs b/src/main/frontend/components/dnd.cljs index 99fad02201..42936ba33c 100644 --- a/src/main/frontend/components/dnd.cljs +++ b/src/main/frontend/components/dnd.cljs @@ -3,9 +3,9 @@ ["@dnd-kit/sortable" :refer [useSortable arrayMove SortableContext verticalListSortingStrategy horizontalListSortingStrategy] :as sortable] ["@dnd-kit/utilities" :refer [CSS]] [cljs-bean.core :as bean] - [frontend.hooks :as hooks] [frontend.rum :as r] [frontend.state :as state] + [logseq.shui.hooks :as hooks] [rum.core :as rum])) (def dnd-context (r/adapt-class DndContext)) diff --git a/src/main/frontend/components/editor.cljs b/src/main/frontend/components/editor.cljs index 2500ab02b8..3dedb90643 100644 --- a/src/main/frontend/components/editor.cljs +++ b/src/main/frontend/components/editor.cljs @@ -19,7 +19,6 @@ [frontend.handler.paste :as paste-handler] [frontend.handler.property.util :as pu] [frontend.handler.search :as search-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.search :refer [fuzzy-search]] [frontend.state :as state] @@ -34,6 +33,7 @@ [logseq.db :as ldb] [logseq.db.frontend.class :as db-class] [logseq.graph-parser.property :as gp-property] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [react-draggable] diff --git a/src/main/frontend/components/file_based/block.cljs b/src/main/frontend/components/file_based/block.cljs index cb28e367ad..47f435d2f3 100644 --- a/src/main/frontend/components/file_based/block.cljs +++ b/src/main/frontend/components/file_based/block.cljs @@ -4,12 +4,12 @@ [frontend.components.file-based.datetime :as datetime-comp] [frontend.handler.editor :as editor-handler] [frontend.handler.file-based.repeated :as repeated] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] [frontend.util.file-based.clock :as clock] [frontend.util.file-based.drawer :as drawer] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [reitit.frontend.easy :as rfe] [rum.core :as rum])) diff --git a/src/main/frontend/components/file_based/git.cljs b/src/main/frontend/components/file_based/git.cljs index 8ec6fb0f7d..898c178728 100644 --- a/src/main/frontend/components/file_based/git.cljs +++ b/src/main/frontend/components/file_based/git.cljs @@ -2,10 +2,10 @@ (:require [clojure.string :as string] [frontend.handler.file-based.file :as file-handler] [frontend.handler.shell :as shell] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] + [logseq.shui.hooks :as hooks] [promesa.core :as p] [rum.core :as rum])) @@ -73,7 +73,7 @@ (ui/button "Revert" :on-click (fn [] (file-handler/alter-file (state/get-current-repo) - path - content - {:re-render-root? true - :skip-compare? true})))]]])) + path + content + {:re-render-root? true + :skip-compare? true})))]]])) diff --git a/src/main/frontend/components/file_sync.cljs b/src/main/frontend/components/file_sync.cljs index f9dbfef8fd..8ce9624b5a 100644 --- a/src/main/frontend/components/file_sync.cljs +++ b/src/main/frontend/components/file_sync.cljs @@ -19,7 +19,6 @@ [frontend.handler.page :as page-handler] [frontend.handler.repo :as repo-handler] [frontend.handler.user :as user-handler] - [frontend.hooks :as hooks] [frontend.mobile.util :as mobile-util] [frontend.state :as state] [frontend.storage :as storage] @@ -29,6 +28,7 @@ [frontend.util.persist-var :as persist-var] [goog.functions :refer [debounce]] [logseq.common.util :as common-util] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [reitit.frontend.easy :as rfe] diff --git a/src/main/frontend/components/handbooks.cljs b/src/main/frontend/components/handbooks.cljs index 5f94b87571..04ce0e5abc 100644 --- a/src/main/frontend/components/handbooks.cljs +++ b/src/main/frontend/components/handbooks.cljs @@ -1,9 +1,9 @@ (ns frontend.components.handbooks (:require ;[shadow.lazy :as lazy] [frontend.extensions.handbooks.core :as handbooks] - [frontend.hooks :as hooks] [frontend.modules.layout.core :as layout] [frontend.state :as state] + [logseq.shui.hooks :as hooks] [rum.core :as rum])) #_:clj-kondo/ignore diff --git a/src/main/frontend/components/header.cljs b/src/main/frontend/components/header.cljs index 22dee5b5ac..9fee9e87f6 100644 --- a/src/main/frontend/components/header.cljs +++ b/src/main/frontend/components/header.cljs @@ -23,7 +23,6 @@ [frontend.handler.plugin :as plugin-handler] [frontend.handler.route :as route-handler] [frontend.handler.user :as user-handler] - [frontend.hooks :as hooks] [frontend.mobile.util :as mobile-util] [frontend.state :as state] [frontend.storage :as storage] @@ -31,6 +30,7 @@ [frontend.util :as util] [frontend.version :refer [version]] [logseq.db :as ldb] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [logseq.shui.util :as shui-util] [missionary.core :as m] diff --git a/src/main/frontend/components/icon.cljs b/src/main/frontend/components/icon.cljs index f0885835d7..cf7b2b8c00 100644 --- a/src/main/frontend/components/icon.cljs +++ b/src/main/frontend/components/icon.cljs @@ -6,7 +6,6 @@ [clojure.string :as string] [frontend.config :as config] [frontend.handler.property.util :as pu] - [frontend.hooks :as hooks] [frontend.search :as search] [frontend.storage :as storage] [frontend.ui :as ui] @@ -14,6 +13,7 @@ [goog.functions :refer [debounce]] [goog.object :as gobj] [logseq.db :as ldb] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [medley.core :as medley] [promesa.core :as p] diff --git a/src/main/frontend/components/imports.cljs b/src/main/frontend/components/imports.cljs index 164c8f255b..158e1b577f 100644 --- a/src/main/frontend/components/imports.cljs +++ b/src/main/frontend/components/imports.cljs @@ -18,7 +18,6 @@ [frontend.handler.repo :as repo-handler] [frontend.handler.route :as route-handler] [frontend.handler.ui :as ui-handler] - [frontend.hooks :as hooks] [frontend.persist-db.browser :as db-browser] [frontend.state :as state] [frontend.ui :as ui] @@ -32,6 +31,7 @@ [logseq.graph-parser.exporter :as gp-exporter] [logseq.shui.dialog.core :as shui-dialog] [logseq.shui.form.core :as form-core] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/components/objects.cljs b/src/main/frontend/components/objects.cljs index 1224bc666a..98b508df41 100644 --- a/src/main/frontend/components/objects.cljs +++ b/src/main/frontend/components/objects.cljs @@ -8,7 +8,6 @@ [frontend.db.model :as db-model] [frontend.db.react :as react] [frontend.handler.editor :as editor-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.modules.outliner.op :as outliner-op] [frontend.modules.outliner.ui :as ui-outliner-tx] @@ -16,6 +15,7 @@ [logseq.db.frontend.entity-util :as entity-util] [logseq.db.frontend.property :as db-property] [logseq.outliner.property :as outliner-property] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/components/page.cljs b/src/main/frontend/components/page.cljs index 16ba6dedca..dace7ed470 100644 --- a/src/main/frontend/components/page.cljs +++ b/src/main/frontend/components/page.cljs @@ -33,7 +33,6 @@ [frontend.handler.notification :as notification] [frontend.handler.page :as page-handler] [frontend.handler.route :as route-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.mobile.util :as mobile-util] [frontend.rum :as frontend-rum] @@ -46,6 +45,7 @@ [logseq.common.util.page-ref :as page-ref] [logseq.db :as ldb] [logseq.graph-parser.mldoc :as gp-mldoc] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [reitit.frontend.easy :as rfe] diff --git a/src/main/frontend/components/plugins.cljs b/src/main/frontend/components/plugins.cljs index 730808d42a..ac67dd6b2d 100644 --- a/src/main/frontend/components/plugins.cljs +++ b/src/main/frontend/components/plugins.cljs @@ -12,7 +12,6 @@ [frontend.handler.plugin :as plugin-handler] [frontend.handler.plugin-config :as plugin-config-handler] [frontend.handler.ui :as ui-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.rum :as rum-utils] [frontend.search :as search] @@ -20,6 +19,7 @@ [frontend.storage :as storage] [frontend.ui :as ui] [frontend.util :as util] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/components/plugins_settings.cljs b/src/main/frontend/components/plugins_settings.cljs index d8277c6d30..130fb606b9 100644 --- a/src/main/frontend/components/plugins_settings.cljs +++ b/src/main/frontend/components/plugins_settings.cljs @@ -3,10 +3,10 @@ [frontend.components.lazy-editor :as lazy-editor] [frontend.handler.notification :as notification] [frontend.handler.plugin :as plugin-handler] - [frontend.hooks :as hooks] [frontend.ui :as ui] [frontend.util :as util] [goog.functions :refer [debounce]] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [rum.core :as rum])) diff --git a/src/main/frontend/components/property.cljs b/src/main/frontend/components/property.cljs index 0776ec5d0b..840826b769 100644 --- a/src/main/frontend/components/property.cljs +++ b/src/main/frontend/components/property.cljs @@ -18,7 +18,6 @@ [frontend.handler.property :as property-handler] [frontend.handler.property.util :as pu] [frontend.handler.route :as route-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.modules.shortcut.core :as shortcut] [frontend.state :as state] @@ -31,6 +30,7 @@ [logseq.db.frontend.property.type :as db-property-type] [logseq.outliner.core :as outliner-core] [logseq.outliner.property :as outliner-property] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/components/property/config.cljs b/src/main/frontend/components/property/config.cljs index 597a6cb6ee..41bb7250f9 100644 --- a/src/main/frontend/components/property/config.cljs +++ b/src/main/frontend/components/property/config.cljs @@ -15,7 +15,6 @@ [frontend.handler.db-based.property :as db-property-handler] [frontend.handler.property :as property-handler] [frontend.handler.route :as route-handler] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] @@ -25,6 +24,7 @@ [logseq.db.frontend.property :as db-property] [logseq.db.frontend.property.type :as db-property-type] [logseq.outliner.core :as outliner-core] + [logseq.shui.hooks :as hooks] [logseq.shui.popup.core :as shui-popup] [logseq.shui.ui :as shui] [promesa.core :as p] diff --git a/src/main/frontend/components/property/value.cljs b/src/main/frontend/components/property/value.cljs index 813c0e699b..c02bad5f23 100644 --- a/src/main/frontend/components/property/value.cljs +++ b/src/main/frontend/components/property/value.cljs @@ -23,7 +23,6 @@ [frontend.handler.property :as property-handler] [frontend.handler.property.util :as pu] [frontend.handler.route :as route-handler] - [frontend.hooks :as hooks] [frontend.modules.outliner.ui :as ui-outliner-tx] [frontend.search :as search] [frontend.state :as state] @@ -38,6 +37,7 @@ [logseq.db.frontend.property :as db-property] [logseq.db.frontend.property.type :as db-property-type] [logseq.outliner.property :as outliner-property] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) @@ -1340,12 +1340,12 @@ value-cp)))]] (if show-tooltip? (shui/tooltip-provider - (shui/tooltip - {:delayDuration 1200} - (shui/tooltip-trigger - {:onFocusCapture #(util/stop-propagation %) - :as-child true} - value-cp) - (shui/tooltip-content - (str "Change " (:block/title property))))) + (shui/tooltip + {:delayDuration 1200} + (shui/tooltip-trigger + {:onFocusCapture #(util/stop-propagation %) + :as-child true} + value-cp) + (shui/tooltip-content + (str "Change " (:block/title property))))) value-cp)))))) diff --git a/src/main/frontend/components/query.cljs b/src/main/frontend/components/query.cljs index d3c88b9927..b585485f4b 100644 --- a/src/main/frontend/components/query.cljs +++ b/src/main/frontend/components/query.cljs @@ -10,12 +10,12 @@ [frontend.db-mixins :as db-mixins] [frontend.extensions.sci :as sci] [frontend.handler.editor :as editor-handler] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] [lambdaisland.glogi :as log] [logseq.db :as ldb] + [logseq.shui.hooks :as hooks] [rum.core :as rum])) (defn- built-in-custom-query? diff --git a/src/main/frontend/components/query/builder.cljs b/src/main/frontend/components/query/builder.cljs index 8fc4985d02..04e7b0c94c 100644 --- a/src/main/frontend/components/query/builder.cljs +++ b/src/main/frontend/components/query/builder.cljs @@ -11,7 +11,6 @@ [frontend.db.query-dsl :as query-dsl] [frontend.handler.editor :as editor-handler] [frontend.handler.query.builder :as query-builder] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.state :as state] [frontend.ui :as ui] @@ -23,6 +22,7 @@ [logseq.db.frontend.property.type :as db-property-type] [logseq.db.sqlite.util :as sqlite-util] [logseq.graph-parser.db :as gp-db] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/components/right_sidebar.cljs b/src/main/frontend/components/right_sidebar.cljs index 7d84710a58..8e15efb3cb 100644 --- a/src/main/frontend/components/right_sidebar.cljs +++ b/src/main/frontend/components/right_sidebar.cljs @@ -16,11 +16,11 @@ [frontend.handler.editor :as editor-handler] [frontend.handler.route :as route-handler] [frontend.handler.ui :as ui-handler] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] [logseq.db :as ldb] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [medley.core :as medley] [reitit.frontend.easy :as rfe] diff --git a/src/main/frontend/components/server.cljs b/src/main/frontend/components/server.cljs index 4089ff830f..9ddb0b6930 100644 --- a/src/main/frontend/components/server.cljs +++ b/src/main/frontend/components/server.cljs @@ -3,10 +3,10 @@ [clojure.string :as string] [electron.ipc :as ipc] [frontend.handler.notification :as notification] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [medley.core :as medley] [promesa.core :as p] diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index e701dadf2e..ec633b381f 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -21,7 +21,6 @@ [frontend.handler.route :as route-handler] [frontend.handler.ui :as ui-handler] [frontend.handler.user :as user-handler] - [frontend.hooks :as hooks] [frontend.mobile.util :as mobile-util] [frontend.modules.instrumentation.core :as instrument] [frontend.modules.shortcut.data-helper :as shortcut-helper] @@ -34,6 +33,7 @@ [goog.object :as gobj] [goog.string :as gstring] [logseq.db :as ldb] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [reitit.frontend.easy :as rfe] diff --git a/src/main/frontend/components/shortcut.cljs b/src/main/frontend/components/shortcut.cljs index c7cf1fd5ff..07fbfc0d1b 100644 --- a/src/main/frontend/components/shortcut.cljs +++ b/src/main/frontend/components/shortcut.cljs @@ -3,7 +3,6 @@ [clojure.string :as string] [frontend.context.i18n :refer [t]] [frontend.handler.notification :as notification] - [frontend.hooks :as hooks] [frontend.modules.shortcut.config :as shortcut-config] [frontend.modules.shortcut.core :as shortcut] [frontend.modules.shortcut.data-helper :as dh] @@ -14,6 +13,7 @@ [frontend.util :as util] [goog.events :as events] [logseq.shui.dialog.core :as shui-dialog] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum]) diff --git a/src/main/frontend/components/theme.cljs b/src/main/frontend/components/theme.cljs index 28f1fbdde4..2dddab49c7 100644 --- a/src/main/frontend/components/theme.cljs +++ b/src/main/frontend/components/theme.cljs @@ -8,12 +8,12 @@ [frontend.handler.plugin-config :as plugin-config-handler] [frontend.handler.route :as route-handler] [frontend.handler.ui :as ui-handler] - [frontend.hooks :as hooks] [frontend.rum :refer [use-mounted]] [frontend.state :as state] [frontend.storage :as storage] [frontend.ui :as ui] [frontend.util :as util] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [rum.core :as rum])) diff --git a/src/main/frontend/components/user/login.cljs b/src/main/frontend/components/user/login.cljs index 94224f6faf..bf1746db2b 100644 --- a/src/main/frontend/components/user/login.cljs +++ b/src/main/frontend/components/user/login.cljs @@ -6,10 +6,10 @@ [frontend.handler.notification :as notification] [frontend.handler.route :as route-handler] [frontend.handler.user :as user] - [frontend.hooks :as hooks] [frontend.modules.shortcut.core :as shortcut] [frontend.rum :refer [adapt-class]] [frontend.state :as state] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [rum.core :as rum])) diff --git a/src/main/frontend/components/views.cljs b/src/main/frontend/components/views.cljs index 4e788a153f..708d300b2b 100644 --- a/src/main/frontend/components/views.cljs +++ b/src/main/frontend/components/views.cljs @@ -26,7 +26,6 @@ [frontend.handler.property :as property-handler] [frontend.handler.property.util :as pu] [frontend.handler.ui :as ui-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.state :as state] [frontend.ui :as ui] @@ -36,6 +35,7 @@ [logseq.db :as ldb] [logseq.db.frontend.property :as db-property] [logseq.db.frontend.property.type :as db-property-type] + [logseq.shui.hooks :as hooks] [logseq.shui.table.core :as table-core] [logseq.shui.ui :as shui] [promesa.core :as p] diff --git a/src/main/frontend/extensions/handbooks/core.cljs b/src/main/frontend/extensions/handbooks/core.cljs index 84aa1eec78..eb82f2ffb3 100644 --- a/src/main/frontend/extensions/handbooks/core.cljs +++ b/src/main/frontend/extensions/handbooks/core.cljs @@ -9,7 +9,6 @@ [frontend.extensions.lightbox :as lightbox] [frontend.extensions.video.youtube :as youtube] [frontend.handler.notification :as notification] - [frontend.hooks :as hooks] [frontend.modules.shortcut.config :as shortcut-config] [frontend.rum :as r] [frontend.search :as search] @@ -17,6 +16,7 @@ [frontend.storage :as storage] [frontend.ui :as ui] [frontend.util :as util] + [logseq.shui.hooks :as hooks] [medley.core :as medley] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/extensions/pdf/core.cljs b/src/main/frontend/extensions/pdf/core.cljs index 8654efe783..eb562ade5f 100644 --- a/src/main/frontend/extensions/pdf/core.cljs +++ b/src/main/frontend/extensions/pdf/core.cljs @@ -14,13 +14,13 @@ [frontend.extensions.pdf.windows :as pdf-windows] [frontend.handler.notification :as notification] [frontend.handler.property :as property-handler] - [frontend.hooks :as hooks] [frontend.modules.shortcut.core :as shortcut] [frontend.rum :refer [use-atom]] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] [goog.functions :refer [debounce]] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [medley.core :as medley] [promesa.core :as p] diff --git a/src/main/frontend/extensions/pdf/toolbar.cljs b/src/main/frontend/extensions/pdf/toolbar.cljs index a6c37a547f..d86a3cb841 100644 --- a/src/main/frontend/extensions/pdf/toolbar.cljs +++ b/src/main/frontend/extensions/pdf/toolbar.cljs @@ -13,13 +13,13 @@ [frontend.extensions.pdf.windows :refer [resolve-own-container] :as pdf-windows] [frontend.handler.assets :as assets-handler] [frontend.handler.notification :as notification] - [frontend.hooks :as hooks] [frontend.rum :refer [use-atom]] [frontend.state :as state] [frontend.storage :as storage] [frontend.ui :as ui] [frontend.util :as util] [logseq.publishing.db :as publish-db] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/extensions/tldraw.cljs b/src/main/frontend/extensions/tldraw.cljs index eeaa593fea..3cd86495dd 100644 --- a/src/main/frontend/extensions/tldraw.cljs +++ b/src/main/frontend/extensions/tldraw.cljs @@ -19,7 +19,6 @@ [frontend.handler.page :as page-handler] [frontend.handler.route :as route-handler] [frontend.handler.whiteboard :as whiteboard-handler] - [frontend.hooks :as hooks] [frontend.rum :as r] [frontend.search :as search] [frontend.state :as state] @@ -28,6 +27,7 @@ [frontend.util.text :as text-util] [goog.object :as gobj] [logseq.common.util :as common-util] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/extensions/zotero.cljs b/src/main/frontend/extensions/zotero.cljs index 241ee60fc8..c1c6c05159 100644 --- a/src/main/frontend/extensions/zotero.cljs +++ b/src/main/frontend/extensions/zotero.cljs @@ -9,11 +9,11 @@ [frontend.extensions.zotero.setting :as setting] [frontend.handler.notification :as notification] [frontend.handler.route :as route-handler] - [frontend.hooks :as hooks] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] [goog.dom :as gdom] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/mobile/graph_picker.cljs b/src/main/frontend/mobile/graph_picker.cljs index bf6842fc63..d053fb833b 100644 --- a/src/main/frontend/mobile/graph_picker.cljs +++ b/src/main/frontend/mobile/graph_picker.cljs @@ -6,13 +6,13 @@ [frontend.handler.file-based.nfs :as nfs-handler] [frontend.handler.notification :as notification] [frontend.handler.page :as page-handler] - [frontend.hooks :as hooks] [frontend.mobile.util :as mobile-util] [frontend.modules.shortcut.core :as shortcut] [frontend.state :as state] [frontend.ui :as ui] [frontend.util :as util] [logseq.common.path :as path] + [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [promesa.core :as p] [rum.core :as rum])) diff --git a/src/main/frontend/rum.cljs b/src/main/frontend/rum.cljs index 7fa12f6bdd..fcc29a78a8 100644 --- a/src/main/frontend/rum.cljs +++ b/src/main/frontend/rum.cljs @@ -5,7 +5,7 @@ [clojure.string :as string] [clojure.walk :as w] [daiquiri.interpreter :as interpreter] - [frontend.hooks :as hooks] + [logseq.shui.hooks :as hooks] [rum.core :refer [use-state] :as rum])) ;; copy from https://github.com/priornix/antizer/blob/35ba264cf48b84e6597743e28b3570d8aa473e74/src/antizer/core.cljs diff --git a/src/main/frontend/ui.cljs b/src/main/frontend/ui.cljs index 2935d50436..12498fb8e4 100644 --- a/src/main/frontend/ui.cljs +++ b/src/main/frontend/ui.cljs @@ -18,7 +18,6 @@ [frontend.db-mixins :as db-mixins] [frontend.handler.notification :as notification] [frontend.handler.plugin :as plugin-handler] - [frontend.hooks :as hooks] [frontend.mixins :as mixins] [frontend.mobile.util :as mobile-util] [frontend.modules.shortcut.config :as shortcut-config] @@ -32,6 +31,7 @@ [goog.dom :as gdom] [goog.object :as gobj] [lambdaisland.glogi :as log] + [logseq.shui.hooks :as hooks] [logseq.shui.icon.v2 :as shui.icon.v2] [logseq.shui.popup.core :as shui-popup] [logseq.shui.ui :as shui] diff --git a/yarn.lock b/yarn.lock index cba5b8e23a..8e71595af9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6943,14 +6943,13 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" -react-dom@17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== +react-dom@18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" + scheduler "^0.23.2" react-draggable@3.x: version "3.3.2" @@ -7038,13 +7037,12 @@ react-virtuoso@4.12.5: resolved "https://registry.yarnpkg.com/react-virtuoso/-/react-virtuoso-4.12.5.tgz#cf92efc2527e56d6df1d4d63c6e4dd3fac5a4030" integrity sha512-YeCbRRsC9CLf0buD0Rct7WsDbzf+yBU1wGbo05/XjbcN2nJuhgh040m3y3+6HVogTZxEqVm45ac9Fpae4/MxRQ== -react@17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== +react@18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" read-cache@^1.0.0: version "1.0.0" @@ -7472,13 +7470,12 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" - object-assign "^4.1.1" semver-compare@^1.0.0: version "1.0.0"