Skip to content

Commit 387df4e

Browse files
author
ChenYong
committed
prototyped with text
0 parents  commit 387df4e

24 files changed

+4384
-0
lines changed

.gitattributes

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
calcit.edn -diff linguist-generated
3+
yarn.lock -diff

.gitignore

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
/target/
3+
/dist
4+
/node_modules
5+
.cpcache/
6+
.shadow-cljs/
7+
8+
.nrepl-port

README.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
Screen notes
3+
----
4+
5+
> Put some notes on screen.
6+
7+
### Usage
8+
9+
10+
11+
### Workflow
12+
13+
Workflow https://github.com/mvc-works/calcit-workflow
14+
15+
### License
16+
17+
MIT

calcit.edn

+2,268
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/build/main.clj

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
(ns build.main
3+
(:require [shadow.cljs.devtools.api :as shadow]
4+
[clojure.java.shell :refer [sh]]))
5+
6+
(defn sh! [command]
7+
(println command)
8+
(println (sh "bash" "-c" command)))
9+
10+
(defn watch []
11+
(shadow/watch :client))
12+
13+
(defn build []
14+
(sh! "rm -rf dist/*")
15+
(shadow/release :client)
16+
(shadow/compile :page)
17+
(sh! "mode=release node target/page.js")
18+
(sh! "cp entry/manifest.json dist/"))
19+
20+
(defn build-local []
21+
(sh! "rm -rf dist/*")
22+
(shadow/release :client)
23+
(shadow/compile :page)
24+
(sh! "mode=local-bundle node target/page.js")
25+
(sh! "cp entry/manifest.json dist/"))
26+
27+
(defn page []
28+
(shadow/compile :page)
29+
(sh! "node target/page.js")
30+
(sh! "cp entry/manifest.json target/"))

cli/build/upload.cljs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
(ns build.upload
3+
(:require ["child_process" :as child-process]
4+
[app.config :as config]))
5+
6+
(defn sh! [command]
7+
(println command)
8+
(println (.toString (child-process/execSync command))))
9+
10+
(defn -main []
11+
(sh! (str "rsync -avr --progress dist/* " (:cdn-folder config/site)))
12+
(sh! (str "rsync -avr --progress dist/{index.html,manifest.json} "
13+
(:upload-folder config/site))))

cli/build/util.clj

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
(ns build.util
3+
(:require [clojure.string :as string])
4+
(:import (java.net InetAddress)))
5+
6+
(defmacro get-ip! []
7+
(.getHostAddress (InetAddress/getLocalHost)))
8+
9+
(defmacro inline-resource [resource-path]
10+
(slurp resource-path))

cli/build/util.cljs

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
(ns build.util
3+
(:require-macros build.util))

entry/main.css

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
body {
3+
margin: 0;
4+
overscroll-behavior-y: none;
5+
}
6+
7+
body * {
8+
box-sizing: border-box;
9+
flex-shrink: 0;
10+
}
11+
12+
::-webkit-scrollbar {
13+
width: 2px;
14+
height: 2px;
15+
}
16+
17+
::-webkit-scrollbar-track {
18+
background-color: hsla(0,0%,100%);
19+
}
20+
21+
::-webkit-scrollbar-thumb {
22+
background-color: hsla(200,100%,76%,0.8);
23+
}
24+
25+
::-webkit-scrollbar-corner {
26+
background-color: transparent;
27+
}
28+
29+
::-webkit-resizer{
30+
background-color:transparent;
31+
}

entry/manifest.json

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"short_name": "Calcit Workflow",
3+
"name": "Calcit Workflow",
4+
"icons": [
5+
{
6+
"src": "http://cdn.tiye.me/logo/mvc-works.png",
7+
"sizes": "320x320"
8+
}
9+
],
10+
"start_url": "index.html",
11+
"display": "fullscreen",
12+
"orientation": "portrait",
13+
"background_color": "#eeeeff",
14+
"theme_color": "#eeeeff"
15+
}

glass/main.js

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const { app, BrowserWindow } = require('electron')
2+
3+
function createWindow () {
4+
// 创建浏览器窗口
5+
win = new BrowserWindow({
6+
width: 240,
7+
height: 240,
8+
transparent: true,
9+
hasShadow: false
10+
})
11+
12+
win.setAlwaysOnTop(true, 'floating')
13+
14+
win.show()
15+
16+
if (process.env.env === 'dev') {
17+
win.loadURL('http://localhost:7000')
18+
} else {
19+
win.loadURL('http://repo.mvc-works.org/screen-notes')
20+
}
21+
}
22+
23+
app.on('ready', createWindow)

glass/package.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "glass",
3+
"version": "0.1.0",
4+
"main": "main.js",
5+
"scripts": {
6+
"start": "electron ."
7+
}
8+
}

meyvn.edn

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
{:pom {:group-id "mvc-works",
3+
:artifact-id "calcit-workflow",
4+
:version "0.1.0",
5+
:name "Workflow"}
6+
:packaging {:jar {:enabled true
7+
:remote-repository {:id "clojars"
8+
:url "https://clojars.org/repo"}}}
9+
:scm {:enabled true}}

package.json

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"name": "calcit-workflow",
3+
"version": "0.1.0",
4+
"description": "ClojureScript workflow using Calcit Editor",
5+
"main": "index.js",
6+
"scripts": {
7+
"watch": "shadow-cljs watch client",
8+
"serve": "http-server dist -s",
9+
"repl": "rlwrap shadow-cljs clj-repl",
10+
"build": "shadow-cljs clj-run build.main/build",
11+
"build-local": "shadow-cljs clj-run build.main/build-local",
12+
"page": "shadow-cljs clj-run build.main/page",
13+
"upload": "lumo -c cli/:src/ -m build.upload",
14+
"ln": "cd target && rm -f entry && ln -s ../entry"
15+
},
16+
"repository": {
17+
"type": "git",
18+
"url": "[email protected]:mvc-works/calcit-workflow.git"
19+
},
20+
"author": "jiyinyiyong",
21+
"license": "MIT",
22+
"devDependencies": {
23+
"electron": "^3.0.8",
24+
"http-server": "^0.11.1",
25+
"shadow-cljs": "^2.7.2"
26+
},
27+
"dependencies": {
28+
"feather-icons": "^4.9.0",
29+
"shortid": "^2.2.14"
30+
}
31+
}

shadow-cljs.edn

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
{:source-paths ["src" "cli"]
3+
:dependencies [[mvc-works/hsl "0.1.2"]
4+
[mvc-works/shell-page "0.1.9"]
5+
[respo "0.10.1"]
6+
[respo/ui "0.3.9"]
7+
[respo/alerts "0.3.8"]
8+
[respo/value "0.2.5"]
9+
[respo/markdown "0.2.4"]
10+
[respo/feather "0.1.1"]
11+
[respo/reel "0.3.4"]
12+
[org.clojure/core.incubator "0.1.4"]]
13+
:repositories {"central" {:url "https://maven.aliyun.com/nexus/content/groups/public/"}
14+
"clojars" {:url "https://mirrors.ustc.edu.cn/clojars/"}}
15+
:open-file-command ["subl" ["%s:%s:%s" :file :line :column]]
16+
:socket-repl {:port 0}
17+
:builds {:client {:target :browser
18+
:output-dir "target/"
19+
:asset-path "./"
20+
:modules {:client {:init-fn app.main/main!}}
21+
:devtools {:after-load app.main/reload!
22+
:http-root "target"
23+
:http-port 7000
24+
:loader-mode :eval}
25+
:compiler-options {:infer-externs :auto}
26+
:release {:output-dir "dist/"
27+
:module-hash-names 8
28+
:build-options {:manifest-name "assets.edn"}}}
29+
:page {:target :node-script
30+
:output-to "target/page.js"
31+
:main app.page/main!
32+
:devtools {:after-load app.page/main!}}}}

src/app/comp/container.cljs

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
(ns app.comp.container
3+
(:require [hsl.core :refer [hsl]]
4+
[respo-ui.core :as ui]
5+
[respo.core
6+
:refer
7+
[defcomp cursor-> action-> mutation-> <> div button textarea span]]
8+
[respo.comp.space :refer [=<]]
9+
[reel.comp.reel :refer [comp-reel]]
10+
[respo-md.comp.md :refer [comp-md]]
11+
[app.config :refer [dev?]])
12+
(:require-macros [clojure.core.strint :refer [<<]]))
13+
14+
(defcomp
15+
comp-container
16+
(reel)
17+
(let [store (:store reel), states (:states store)]
18+
(println store)
19+
(div
20+
{:style (merge ui/global ui/row)}
21+
(textarea
22+
{:value (:content store),
23+
:style (merge
24+
ui/flex
25+
ui/fullscreen
26+
ui/textarea
27+
{:background-color (hsl 0 0 50 0.15),
28+
:border (<< "1px solid ~(hsl 200 80 80 0)"),
29+
:font-family ui/font-code,
30+
:resize :none,
31+
:min-width 10,
32+
:color (if (:invert-color store) :white :black),
33+
:line-height (str (:line-height store) "px"),
34+
:font-size 12}),
35+
:on-input (action-> :content (:value %e))})
36+
(when dev? (cursor-> :reel comp-reel states reel {})))))

src/app/config.cljs

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
(ns app.config (:require [app.util :refer [get-env!]]))
3+
4+
(def bundle-builds #{"release" "local-bundle"})
5+
6+
(def dev?
7+
(if (exists? js/window)
8+
(do ^boolean js/goog.DEBUG)
9+
(not (contains? bundle-builds (get-env! "mode")))))
10+
11+
(def site
12+
{:storage "screen-notes",
13+
:dev-ui "http://localhost:8100/main.css",
14+
:release-ui "http://cdn.tiye.me/favored-fonts/main.css",
15+
:cdn-url "http://cdn.tiye.me/screen-notes/",
16+
:cdn-folder "tiye.me:cdn/screen-notes",
17+
:title "Screen notes",
18+
:icon "http://cdn.tiye.me/logo/mvc-works.png",
19+
:upload-folder "tiye.me:repo/mvc-works/screen-notes/"})

src/app/main.cljs

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
(ns app.main
3+
(:require [respo.core :refer [render! clear-cache! realize-ssr!]]
4+
[app.comp.container :refer [comp-container]]
5+
[app.updater :refer [updater]]
6+
[app.schema :as schema]
7+
[reel.util :refer [listen-devtools!]]
8+
[reel.core :refer [reel-updater refresh-reel]]
9+
[reel.schema :as reel-schema]
10+
[cljs.reader :refer [read-string]]
11+
[app.config :as config]))
12+
13+
(defonce *reel
14+
(atom (-> reel-schema/reel (assoc :base schema/store) (assoc :store schema/store))))
15+
16+
(defn dispatch! [op op-data]
17+
(comment println "Dispatch:" op)
18+
(reset! *reel (reel-updater updater @*reel op op-data)))
19+
20+
(def mount-target (.querySelector js/document ".app"))
21+
22+
(defn on-key! [event]
23+
(cond
24+
(and (.-ctrlKey event) (= "b" (.-key event))) (dispatch! :toggle-color nil)
25+
(and (.-ctrlKey event) (= "=" (.-key event))) (dispatch! :inc-line nil)
26+
(and (.-ctrlKey event) (= "-" (.-key event))) (dispatch! :dec-line nil)))
27+
28+
(defn persist-storage! []
29+
(.setItem js/localStorage (:storage config/site) (pr-str (:store @*reel))))
30+
31+
(defn render-app! [renderer]
32+
(renderer mount-target (comp-container @*reel) #(dispatch! %1 %2)))
33+
34+
(def ssr? (some? (js/document.querySelector "meta.respo-ssr")))
35+
36+
(defn main! []
37+
(if ssr? (render-app! realize-ssr!))
38+
(render-app! render!)
39+
(add-watch *reel :changes (fn [] (render-app! render!)))
40+
(listen-devtools! "a" dispatch!)
41+
(.addEventListener js/window "beforeunload" persist-storage!)
42+
(.addEventListener js/window "keydown" #(on-key! %))
43+
(js/setInterval persist-storage! (* 1000 60))
44+
(let [raw (.getItem js/localStorage (:storage config/site))]
45+
(when (some? raw) (dispatch! :hydrate-storage (read-string raw))))
46+
(println "App started."))
47+
48+
(defn reload! []
49+
(clear-cache!)
50+
(reset! *reel (refresh-reel @*reel schema/store updater))
51+
(println "Code updated."))

0 commit comments

Comments
 (0)