tldraw.cljs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. (ns playground.tldraw
  2. (:require [rum.core :as rum]
  3. ["tldraw-logseq" :as tldraw]))
  4. (def persist-key "playground.index")
  5. ;; from apps/logseq/src/documents/dev.ts
  6. (def dev-doc-model
  7. {"currentPageId" "page1",
  8. "selectedIds" ["0jy4JuM61pS9QQthBDme-"],
  9. "pages"
  10. [{"id" "page1",
  11. "name" "Page",
  12. "shapes"
  13. [{"parentId" "page1",
  14. "handles"
  15. {"start" {"id" "start", "canBind" true, "point" [0 0]}, "end" {"id" "end", "canBind" true, "point" [392 272]}},
  16. "scale" [1 1],
  17. "label" "",
  18. "id" "0jy4JuM61pS9QQthBDme-",
  19. "stroke" "#fcb0b0",
  20. "fill" "#ffffff",
  21. "strokeWidth" 1,
  22. "type" "line",
  23. "decorations" {"end" "arrow"},
  24. "nonce" 1655952872458,
  25. "opacity" 1,
  26. "point" [379.6805699752259 82.67652436640805 0.5]}
  27. {"parentId" "page1",
  28. "pageId" "car",
  29. "collapsed" false,
  30. "blockType" "P",
  31. "collapsedHeight" 0,
  32. "scale" [1 1],
  33. "id" "hRp0fnc0i2BZIjEbZqO6_",
  34. "stroke" "var(--ls-primary-text-color)",
  35. "fill" "var(--ls-secondary-background-color)",
  36. "strokeWidth" 2,
  37. "type" "logseq-portal",
  38. "nonce" 1655952865192,
  39. "size" [600 320],
  40. "opacity" 1,
  41. "point" [876.7157262252258 195.59449311640805]}],
  42. "bindings" [],
  43. "nonce" 1}],
  44. "assets" []})
  45. (set! *warn-on-infer* false)
  46. ;; Debounce it?
  47. (defn on-persist [app]
  48. (let [document (.-serialized app)]
  49. ;; persit to localstorage
  50. (.setItem js/sessionStorage persist-key (js/JSON.stringify document))))
  51. (defn on-load []
  52. (if-let [raw-str (.getItem js/sessionStorage persist-key)]
  53. (js->clj (js/JSON.parse raw-str))
  54. dev-doc-model))
  55. (def model (on-load))
  56. (rum/defc test-comp [props] [:div (js/JSON.stringify props)])
  57. (rum/defc Tldraw []
  58. (tldraw/App (clj->js {:PageComponent test-comp
  59. :onPersist on-persist
  60. :model model})))