From 7ba324bfd212ff99a6237cd168be034e210d8908 Mon Sep 17 00:00:00 2001 From: Peng Xiao Date: Sat, 6 Aug 2022 17:36:34 +0800 Subject: [PATCH] fix: quick add by block or page --- package.json | 2 +- src/main/frontend/extensions/tldraw.cljs | 9 +- src/main/frontend/handler/search.cljs | 3 +- tldraw/apps/tldraw-logseq/src/app.tsx | 13 +-- .../components/PrimaryTools/PrimaryTools.tsx | 21 ++-- .../src/components/icons/LogseqIcon.tsx | 2 +- .../src/components/icons/TablerIcon.tsx | 21 ++++ .../src/components/icons/index.ts | 1 + .../tldraw-logseq/src/lib/logseq-context.ts | 9 +- .../src/lib/shapes/LogseqPortalShape.tsx | 100 +++++++++++++++--- tldraw/apps/tldraw-logseq/src/styles.css | 33 +++++- tldraw/demo/index.html | 5 + tldraw/demo/src/App.jsx | 24 +++-- yarn.lock | 8 +- 14 files changed, 193 insertions(+), 58 deletions(-) create mode 100644 tldraw/apps/tldraw-logseq/src/components/icons/TablerIcon.tsx diff --git a/package.json b/package.json index 366d277c3e..999c2fff1b 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "@logseq/react-tweet-embed": "1.3.1-1", "@sentry/react": "^6.18.2", "@sentry/tracing": "^6.18.2", - "@tabler/icons": "1.54.0", + "@tabler/icons": "1.78.0", "@tippyjs/react": "4.2.5", "bignumber.js": "^9.0.2", "capacitor-voice-recorder": "2.1.0", diff --git a/src/main/frontend/extensions/tldraw.cljs b/src/main/frontend/extensions/tldraw.cljs index a99fa4add1..93d3d3989d 100644 --- a/src/main/frontend/extensions/tldraw.cljs +++ b/src/main/frontend/extensions/tldraw.cljs @@ -2,12 +2,13 @@ (:require ["/tldraw-logseq" :as TldrawLogseq] [frontend.components.block :as block] [frontend.components.page :as page] + [frontend.handler.search :as search] [frontend.handler.whiteboard :as whiteboard-handler] [frontend.rum :as r] - [frontend.search :as search] [frontend.state :as state] [frontend.util :as util] [goog.object :as gobj] + [promesa.core :as p] [rum.core :as rum])) (def tldraw (r/adapt-class (gobj/get TldrawLogseq "App"))) @@ -37,6 +38,10 @@ client-y (gobj/get e "clientY")] (whiteboard-handler/add-new-block-shape! uuid client-x client-y)))) +(defn search-handler [q] + (p/let [results (search/search q)] + (clj->js results))) + (rum/defc tldraw-app [name block-id] (let [data (whiteboard-handler/page-name->tldr! name block-id) @@ -62,7 +67,7 @@ :Block block-cp :Breadcrumb breadcrumb :PageNameLink page-name-link} - :handlers (clj->js {:search (comp clj->js vec search/page-search) + :handlers (clj->js {:search search-handler :addNewBlock (fn [content] (str (whiteboard-handler/add-new-block! name content)))}) :onMount (fn [app] (set-tln ^js app)) diff --git a/src/main/frontend/handler/search.cljs b/src/main/frontend/handler/search.cljs index d15fb49113..efacd50f21 100644 --- a/src/main/frontend/handler/search.cljs +++ b/src/main/frontend/handler/search.cljs @@ -48,7 +48,8 @@ {:pages (search/page-search q) :files (search/file-search q)})) search-key (if more? :search/more-result :search/result)] - (swap! state/state assoc search-key result))))))) + (swap! state/state assoc search-key result) + result)))))) (defn clear-search! ([] diff --git a/tldraw/apps/tldraw-logseq/src/app.tsx b/tldraw/apps/tldraw-logseq/src/app.tsx index 1884b84f9a..a300cf123c 100644 --- a/tldraw/apps/tldraw-logseq/src/app.tsx +++ b/tldraw/apps/tldraw-logseq/src/app.tsx @@ -14,7 +14,7 @@ import { ContextBar } from '~components/ContextBar/ContextBar' import { useFileDrop } from '~hooks/useFileDrop' import { usePaste } from '~hooks/usePaste' import { useQuickAdd } from '~hooks/useQuickAdd' -import { LogseqContext } from '~lib/logseq-context' +import { LogseqContext, LogseqContextValue } from '~lib/logseq-context' import { Shape, shapes } from '~lib/shapes' import { HighlighterTool, @@ -47,15 +47,8 @@ const tools: TLReactToolConstructor[] = [ ] interface LogseqTldrawProps { - renderers: { - Page: React.FC - Breadcrumb: React.FC - PageNameLink: React.FC - } - handlers: { - search: (query: string) => string[] - addNewBlock: (content: string) => string - } + renderers: LogseqContextValue['renderers'] + handlers: LogseqContextValue['handlers'] model?: TLDocumentModel onMount?: TLReactCallbacks['onMount'] onPersist?: TLReactCallbacks['onPersist'] diff --git a/tldraw/apps/tldraw-logseq/src/components/PrimaryTools/PrimaryTools.tsx b/tldraw/apps/tldraw-logseq/src/components/PrimaryTools/PrimaryTools.tsx index 2a4dbdece3..315f81cfec 100644 --- a/tldraw/apps/tldraw-logseq/src/components/PrimaryTools/PrimaryTools.tsx +++ b/tldraw/apps/tldraw-logseq/src/components/PrimaryTools/PrimaryTools.tsx @@ -3,7 +3,7 @@ import { useApp } from '@tldraw/react' import { observer } from 'mobx-react-lite' import * as React from 'react' import { Button } from '~components/Button' -import { ArrowIcon, EraserIcon, LogseqIcon } from '~components/icons' +import { ArrowIcon, EraserIcon, LogseqIcon, TablerIcon } from '~components/icons' export const PrimaryTools = observer(function PrimaryTools() { const app = useApp() @@ -31,50 +31,57 @@ export const PrimaryTools = observer(function PrimaryTools() {