add qlkit

This commit is contained in:
kloimhardt 2021-06-04 00:39:09 +02:00
parent ff7d7b6135
commit cf843793c2
4 changed files with 70 additions and 3 deletions

View file

@ -5,10 +5,14 @@
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"}
cljs-ajax/cljs-ajax {:mvn/version "0.8.3"}
;;qlkit/qlkit {:mvn/version "0.5.0-SNAPSHOT"}
qlkit/qlkit {:local/root "../../klmplay/qlkit"}
sablono/sablono {:mvn/version "0.8.6"}
}
:aliases

View file

@ -11,7 +11,9 @@
{:resolve {"react" {:target :global
:global "React"}
"react-dom" {:target :global
:global "ReactDOM"}}}
:global "ReactDOM"}
"create-react-class" {:target :global
:global "createReactClass"}}}
:modules
{:scittle {:entries [scittle.core]}
:scittle.reagent {:entries [scittle.reagent]
@ -19,7 +21,9 @@
:scittle.ajax {:entries [scittle.ajax]
:depends-on #{:scittle}}
:scittle.makro-plugin {:entries [scittle.makro-plugin]
:depends-on #{:scittle}}}
:depends-on #{:scittle}}
:scittle.qlkit {:entries [scittle.qlkit]
:depends-on #{:scittle}}}
:build-hooks [(shadow.cljs.build-report/hook)]
:output-dir "resources/public/js"
:devtools {:repl-pprint true}}}}

View file

@ -1,6 +1,6 @@
(ns scittle.makro-plugin
(:require-macros [scittle.makros :refer
[add-slash-makro add-c-makro]])
[add-slash-makro add-c-makro]])
(:require
[sci.core :as sci]
[scittle.core :as scittle]

59
src/scittle/qlkit.cljs Normal file
View file

@ -0,0 +1,59 @@
(ns scittle.qlkit
(:require [qlkit.core :as ql :refer-macros [defcomponent*]]
[sci.core :as sci]
[scittle.core :as scittle]
[sablono.core :as html :refer-macros [html html*]]
[sablono.interpreter :as si]))
(def qns (sci/create-ns 'qlkit.core nil))
(defn ^:macro defcomponent-fn [_form _env comp-name [_ q] [_ [_ m _] [_ h]]]
`(defcomponent* ~comp-name
(query ~q)
(render [this ~m state]
(html ~h)))
#_(defcomponent* comp-name (query q) (render r (html [:p "hu"])))
)
(defn ^:macro defcomponent+ [form env nam & bodies]
(apply ql/defcomponent+ form env nam bodies))
(defn random-uuid-fn []
(random-uuid))
(def qlkit-namespace
{'add-class (sci/copy-var ql/add-class qns)
;; 'defcomponent* (sci/copy-var defcomponent-fn qns)
'defcomponent* (sci/copy-var defcomponent+ qns)
'transact!* (sci/copy-var ql/transact!* qns)
'update-state!* (sci/copy-var ql/update-state!* qns)
'create-instance (sci/copy-var ql/create-instance qns)
'get-query (sci/copy-var ql/get-query qns)
'parse-children (sci/copy-var ql/parse-children qns)
'parse-children-remote (sci/copy-var ql/parse-children-remote qns)
'parse-children-sync (sci/copy-var ql/parse-children-sync qns)
'mount (sci/copy-var ql/mount qns)
'classes (sci/copy-var ql/classes qns)
'random-uuid (sci/copy-var random-uuid-fn qns)})
(def sns (sci/create-ns 'sablono.core nil))
(defn ^:macro html+ [form env html-form]
(html* [:p "in sablono"]))
(def sablono-core-namespace
{'html (sci/copy-var html+ sns)})
(def sins (sci/create-ns 'sablono.interpreter nil))
(def sablono-interpreter-ns
{'interpret (sci/copy-var si/interpret sins)})
(scittle/register-plugin!
::qlkit
{:namespaces {'qlkit.core qlkit-namespace
'sablono.core sablono-core-namespace
'sablono.interpreter sablono-interpreter-ns}})