From a376ffb66b11ae9c8426ceb00458db7a765e7b8c Mon Sep 17 00:00:00 2001 From: kloimhardt Date: Tue, 8 Jun 2021 21:44:31 +0200 Subject: [PATCH] use official qlkit version --- deps.edn | 6 ++---- shadow-cljs.edn | 9 +-------- src/scittle/qlkit-externs.js | 2 ++ src/scittle/qlkit.cljs | 16 +++++++++++++++- 4 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 src/scittle/qlkit-externs.js diff --git a/deps.edn b/deps.edn index 73c180c..23731d8 100644 --- a/deps.edn +++ b/deps.edn @@ -5,14 +5,12 @@ borkdude/sci {:git/url "https://github.com/borkdude/sci" :sha "a8505dd4ee0b5cc7e6f6215f1bbc136c6d4ae7ee"} reagent/reagent {:mvn/version "1.0.0"} - cljsjs/create-react-class {:mvn/version "15.6.3-1"} cljsjs/react {:mvn/version "17.0.2-0"} cljsjs/react-dom {:mvn/version "17.0.2-0"} cljsjs/react-dom-server {:mvn/version "17.0.2-0"} + cljsjs/create-react-class {:mvn/version "15.6.3-1"} cljs-ajax/cljs-ajax {:mvn/version "0.8.3"} - qlkit/qlkit {:git/url "https://github.com/kloimhardt/qlkit" - :sha "fc925a96af4d5460470414ea9bab83ff0548fe62"} - } + qlkit/qlkit {:mvn/version "0.5.0-SNAPSHOT"}} :aliases {:dev diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 5c235b1..905bc03 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -27,11 +27,4 @@ :build-hooks [(shadow.cljs.build-report/hook)] :output-dir "resources/public/js" :devtools {:repl-pprint true} - :compiler-options {:optimizations :advanced - :pseudo-names false}}}} - -;; simple optimization because sablono.interpreter line 22 -;; cljs: (.setState component next-state) -;; simple: a.setState(f) -;; advanced: a.Ci(f) -;; and this Ci throws a "not defined" error + :compiler-options {:externs ["src/scittle/qlkit-externs.js"]}}}} diff --git a/src/scittle/qlkit-externs.js b/src/scittle/qlkit-externs.js new file mode 100644 index 0000000..fd71946 --- /dev/null +++ b/src/scittle/qlkit-externs.js @@ -0,0 +1,2 @@ +var Component = {}; +Component.setState = function () {}; diff --git a/src/scittle/qlkit.cljs b/src/scittle/qlkit.cljs index 48cbcdd..c1023b3 100644 --- a/src/scittle/qlkit.cljs +++ b/src/scittle/qlkit.cljs @@ -5,8 +5,22 @@ (def qns (sci/create-ns 'qlkit.core nil)) +;;directly copy-pasted from sourcecode of qlkit.core (defn ^:macro defcomponent* [form env nam & bodies] - (apply ql/defcomponent+ form env nam bodies)) + (doseq [[nam] bodies] + (when-not ('#{state query render component-did-mount component-will-unmount component-will-receive-props} nam) + (throw (ex-info (str "Unknown component member " nam) {})))) + `(let [key# (keyword ~(str (:name (:ns env))) ~(name nam))] ;;env is {} in scittle, thus (:ns env) is nil, thus component names are not namespaced names + (def ~nam key#) + (#'qlkit.core/add-class key# + ~(into {:display-name (name nam)} + (for [[nam & more :as body] bodies] + (if ('#{state query} nam) + [(keyword nam) + (last more)] + [(keyword nam) + `(fn ~(first more) + ~@(rest more))])))))) (def qlkit-namespace {'add-class (sci/copy-var ql/add-class qns)