Initial commit
This commit is contained in:
commit
81964a0d73
1
.dir-locals.el
Normal file
1
.dir-locals.el
Normal file
@ -0,0 +1 @@
|
|||||||
|
((clojurescript-mode . ((cider-clojure-cli-global-options . "-A:fig"))))
|
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
pom.xml
|
||||||
|
*jar
|
||||||
|
/lib/
|
||||||
|
/classes/
|
||||||
|
/out/
|
||||||
|
/target/
|
||||||
|
.lein-deps-sum
|
||||||
|
.lein-repl-history
|
||||||
|
.lein-plugins/
|
||||||
|
.repl
|
||||||
|
.nrepl-port
|
||||||
|
.cpcache/
|
||||||
|
.rebel_readline_history
|
||||||
|
node_modules/
|
37
README.md
Normal file
37
README.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# three-playground.core
|
||||||
|
|
||||||
|
FIXME: Write a one-line description of your library/project.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
FIXME: Write a paragraph about the library/project and highlight its goals.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
To get an interactive development environment run:
|
||||||
|
|
||||||
|
clojure -A:fig:build
|
||||||
|
|
||||||
|
This will auto compile and send all changes to the browser without the
|
||||||
|
need to reload. After the compilation process is complete, you will
|
||||||
|
get a Browser Connected REPL. An easy way to try it is:
|
||||||
|
|
||||||
|
(js/alert "Am I connected?")
|
||||||
|
|
||||||
|
and you should see an alert in the browser window.
|
||||||
|
|
||||||
|
To clean all compiled files:
|
||||||
|
|
||||||
|
rm -rf target/public
|
||||||
|
|
||||||
|
To create a production build run:
|
||||||
|
|
||||||
|
rm -rf target/public
|
||||||
|
clojure -A:fig:min
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright © 2018 FIXME
|
||||||
|
|
||||||
|
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.
|
10
deps.edn
Normal file
10
deps.edn
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{:deps {org.clojure/clojure {:mvn/version "1.9.0"}
|
||||||
|
org.clojure/clojurescript {:mvn/version "1.10.520"}}
|
||||||
|
:paths ["src" "resources"]
|
||||||
|
:aliases {:fig {:extra-deps
|
||||||
|
{com.bhauman/rebel-readline-cljs {:mvn/version "0.1.4"}
|
||||||
|
com.bhauman/figwheel-main {:mvn/version "0.2.3"}}
|
||||||
|
:extra-paths ["target" "test"]}
|
||||||
|
:build {:main-opts ["-m" "figwheel.main" "-b" "dev" "-r"]}
|
||||||
|
:min {:main-opts ["-m" "figwheel.main" "-O" "advanced" "-bo" "dev"]}
|
||||||
|
:test {:main-opts ["-m" "figwheel.main" "-co" "test.cljs.edn" "-m" "three-playground.test-runner"]}}}
|
6
dev.cljs.edn
Normal file
6
dev.cljs.edn
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
^{:watch-dirs ["test" "src"]
|
||||||
|
:css-dirs ["resources/public/css"]
|
||||||
|
:auto-testing true}
|
||||||
|
{:main three-playground.core
|
||||||
|
:npm-deps {"three" "0.109.0"}
|
||||||
|
:install-deps true}
|
31
figwheel-main.edn
Normal file
31
figwheel-main.edn
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
;; Figwheel-main configuration options see: https://figwheel.org/config-options
|
||||||
|
;; these will be overriden by the metadata config options in dev.cljs.edn build file
|
||||||
|
{
|
||||||
|
;; Set the server port https://figwheel.org/config-options#ring-server-options
|
||||||
|
;; :ring-server-options {:port 9500}
|
||||||
|
|
||||||
|
;; Target directory https://figwheel.org/config-options#target-dir
|
||||||
|
;; you may want to set this to resources if you are using Leiningen
|
||||||
|
;; :target-dir "resources"
|
||||||
|
|
||||||
|
;; Server Ring Handler (optional) https://figwheel.org/docs/ring-handler.html
|
||||||
|
;; If you want to embed a ring handler into the figwheel server, this
|
||||||
|
;; is for simple ring servers
|
||||||
|
;; :ring-handler hello_world.server/handler
|
||||||
|
|
||||||
|
;; To be able to open files in your editor from the heads up display
|
||||||
|
;; you will need to put a script on your path. This script will have
|
||||||
|
;; to take a file path and a line number ie.
|
||||||
|
;; in ~/bin/myfile-opener:
|
||||||
|
;;
|
||||||
|
;; #! /bin/sh
|
||||||
|
;; emacsclient -n +$2:$3 $1
|
||||||
|
;;
|
||||||
|
;; :open-file-command "myfile-opener"
|
||||||
|
|
||||||
|
;; if you are using emacsclient you can just use
|
||||||
|
;; :open-file-command "emacsclient"
|
||||||
|
|
||||||
|
;; Logging output gets printed to the REPL, if you want to redirect it to a file:
|
||||||
|
;; :log-file "figwheel-main.log"
|
||||||
|
}
|
487
package-lock.json
generated
Normal file
487
package-lock.json
generated
Normal file
@ -0,0 +1,487 @@
|
|||||||
|
{
|
||||||
|
"requires": true,
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"dependencies": {
|
||||||
|
"@cljs-oss/module-deps": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@cljs-oss/module-deps/-/module-deps-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-YmZ/KCFk8/EParnxJLpBb9EkOfo=",
|
||||||
|
"requires": {
|
||||||
|
"JSONStream": "^1.0.3",
|
||||||
|
"babel-traverse": "^6.23.1",
|
||||||
|
"babylon": "^6.15.0",
|
||||||
|
"browser-resolve": "^1.7.0",
|
||||||
|
"cached-path-relative": "^1.0.0",
|
||||||
|
"concat-stream": "~1.5.0",
|
||||||
|
"defined": "^1.0.0",
|
||||||
|
"detective": "^4.0.0",
|
||||||
|
"duplexer2": "^0.1.2",
|
||||||
|
"enhanced-resolve": "3.4.1",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"konan": "1.1.0",
|
||||||
|
"parents": "^1.0.0",
|
||||||
|
"readable-stream": "^2.0.2",
|
||||||
|
"resolve": "^1.1.3",
|
||||||
|
"stream-combiner2": "^1.1.1",
|
||||||
|
"subarg": "^1.0.0",
|
||||||
|
"through2": "^2.0.0",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"JSONStream": {
|
||||||
|
"version": "1.3.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
|
||||||
|
"integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
|
||||||
|
"requires": {
|
||||||
|
"jsonparse": "^1.2.0",
|
||||||
|
"through": ">=2.2.7 <3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"acorn": {
|
||||||
|
"version": "5.7.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
|
||||||
|
"integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
|
||||||
|
},
|
||||||
|
"ansi-regex": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||||
|
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
|
||||||
|
},
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "2.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
||||||
|
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
|
||||||
|
},
|
||||||
|
"babel-code-frame": {
|
||||||
|
"version": "6.26.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
|
||||||
|
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^1.1.3",
|
||||||
|
"esutils": "^2.0.2",
|
||||||
|
"js-tokens": "^3.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"babel-messages": {
|
||||||
|
"version": "6.23.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
|
||||||
|
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
|
||||||
|
"requires": {
|
||||||
|
"babel-runtime": "^6.22.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"babel-runtime": {
|
||||||
|
"version": "6.26.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
||||||
|
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
|
||||||
|
"requires": {
|
||||||
|
"core-js": "^2.4.0",
|
||||||
|
"regenerator-runtime": "^0.11.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"babel-traverse": {
|
||||||
|
"version": "6.26.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
|
||||||
|
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
|
||||||
|
"requires": {
|
||||||
|
"babel-code-frame": "^6.26.0",
|
||||||
|
"babel-messages": "^6.23.0",
|
||||||
|
"babel-runtime": "^6.26.0",
|
||||||
|
"babel-types": "^6.26.0",
|
||||||
|
"babylon": "^6.18.0",
|
||||||
|
"debug": "^2.6.8",
|
||||||
|
"globals": "^9.18.0",
|
||||||
|
"invariant": "^2.2.2",
|
||||||
|
"lodash": "^4.17.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"babel-types": {
|
||||||
|
"version": "6.26.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
|
||||||
|
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
|
||||||
|
"requires": {
|
||||||
|
"babel-runtime": "^6.26.0",
|
||||||
|
"esutils": "^2.0.2",
|
||||||
|
"lodash": "^4.17.4",
|
||||||
|
"to-fast-properties": "^1.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"babylon": {
|
||||||
|
"version": "6.18.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
|
||||||
|
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
|
||||||
|
},
|
||||||
|
"browser-resolve": {
|
||||||
|
"version": "1.11.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
|
||||||
|
"integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
|
||||||
|
"requires": {
|
||||||
|
"resolve": "1.1.7"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"resolve": {
|
||||||
|
"version": "1.1.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
|
||||||
|
"integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cached-path-relative": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg=="
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||||
|
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^2.2.1",
|
||||||
|
"escape-string-regexp": "^1.0.2",
|
||||||
|
"has-ansi": "^2.0.0",
|
||||||
|
"strip-ansi": "^3.0.0",
|
||||||
|
"supports-color": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"concat-stream": {
|
||||||
|
"version": "1.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
|
||||||
|
"integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"readable-stream": "~2.0.0",
|
||||||
|
"typedarray": "~0.0.5"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "2.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
|
||||||
|
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"isarray": "~1.0.0",
|
||||||
|
"process-nextick-args": "~1.0.6",
|
||||||
|
"string_decoder": "~0.10.x",
|
||||||
|
"util-deprecate": "~1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"core-js": {
|
||||||
|
"version": "2.6.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz",
|
||||||
|
"integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA=="
|
||||||
|
},
|
||||||
|
"core-util-is": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defined": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM="
|
||||||
|
},
|
||||||
|
"detective": {
|
||||||
|
"version": "4.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
|
||||||
|
"integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==",
|
||||||
|
"requires": {
|
||||||
|
"acorn": "^5.2.1",
|
||||||
|
"defined": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"duplexer2": {
|
||||||
|
"version": "0.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
|
||||||
|
"integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": "^2.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"enhanced-resolve": {
|
||||||
|
"version": "3.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
|
||||||
|
"integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.2",
|
||||||
|
"memory-fs": "^0.4.0",
|
||||||
|
"object-assign": "^4.0.1",
|
||||||
|
"tapable": "^0.2.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"errno": {
|
||||||
|
"version": "0.1.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
|
||||||
|
"integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
|
||||||
|
"requires": {
|
||||||
|
"prr": "~1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"escape-string-regexp": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||||
|
},
|
||||||
|
"esutils": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
|
||||||
|
},
|
||||||
|
"globals": {
|
||||||
|
"version": "9.18.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
|
||||||
|
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
|
||||||
|
},
|
||||||
|
"graceful-fs": {
|
||||||
|
"version": "4.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
|
||||||
|
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
|
||||||
|
},
|
||||||
|
"has-ansi": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
|
},
|
||||||
|
"invariant": {
|
||||||
|
"version": "2.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
||||||
|
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
|
||||||
|
"requires": {
|
||||||
|
"loose-envify": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"isarray": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||||
|
},
|
||||||
|
"js-tokens": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
|
||||||
|
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
|
||||||
|
},
|
||||||
|
"jsonparse": {
|
||||||
|
"version": "1.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
|
||||||
|
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
|
||||||
|
},
|
||||||
|
"konan": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/konan/-/konan-1.1.0.tgz",
|
||||||
|
"integrity": "sha1-M3dDxLl7S9Hvi2KiSzFeuLxLIJQ=",
|
||||||
|
"requires": {
|
||||||
|
"babel-traverse": "^6.23.1",
|
||||||
|
"babylon": "^6.15.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lodash": {
|
||||||
|
"version": "4.17.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
|
||||||
|
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
|
||||||
|
},
|
||||||
|
"loose-envify": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||||
|
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
||||||
|
"requires": {
|
||||||
|
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"memory-fs": {
|
||||||
|
"version": "0.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
|
||||||
|
"integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
|
||||||
|
"requires": {
|
||||||
|
"errno": "^0.1.3",
|
||||||
|
"readable-stream": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimist": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||||
|
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
|
||||||
|
},
|
||||||
|
"ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||||
|
},
|
||||||
|
"object-assign": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
|
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||||
|
},
|
||||||
|
"parents": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
|
||||||
|
"requires": {
|
||||||
|
"path-platform": "~0.11.15"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path-parse": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
||||||
|
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
|
||||||
|
},
|
||||||
|
"path-platform": {
|
||||||
|
"version": "0.11.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
|
||||||
|
"integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I="
|
||||||
|
},
|
||||||
|
"process-nextick-args": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
|
||||||
|
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
|
||||||
|
},
|
||||||
|
"prr": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "2.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||||
|
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.3",
|
||||||
|
"isarray": "~1.0.0",
|
||||||
|
"process-nextick-args": "~2.0.0",
|
||||||
|
"safe-buffer": "~5.1.1",
|
||||||
|
"string_decoder": "~1.1.1",
|
||||||
|
"util-deprecate": "~1.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"process-nextick-args": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "~5.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"regenerator-runtime": {
|
||||||
|
"version": "0.11.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
|
||||||
|
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
|
||||||
|
},
|
||||||
|
"resolve": {
|
||||||
|
"version": "1.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
|
||||||
|
"integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
|
||||||
|
"requires": {
|
||||||
|
"path-parse": "^1.0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"safe-buffer": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||||
|
},
|
||||||
|
"stream-combiner2": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
|
||||||
|
"integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
|
||||||
|
"requires": {
|
||||||
|
"duplexer2": "~0.1.0",
|
||||||
|
"readable-stream": "^2.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "0.10.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||||
|
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||||
|
},
|
||||||
|
"strip-ansi": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||||
|
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"subarg": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
|
||||||
|
"requires": {
|
||||||
|
"minimist": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
|
||||||
|
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
|
||||||
|
},
|
||||||
|
"tapable": {
|
||||||
|
"version": "0.2.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz",
|
||||||
|
"integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A=="
|
||||||
|
},
|
||||||
|
"three": {
|
||||||
|
"version": "0.109.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/three/-/three-0.109.0.tgz",
|
||||||
|
"integrity": "sha512-XT99T3Hvgh2CEvwPdHYEunNE+clLK6KiT1U8En7YOgIqTUw4MrLeIc8zxQAJ6wbP8hhJaY5+Cff3jwBPpBa0gA=="
|
||||||
|
},
|
||||||
|
"through": {
|
||||||
|
"version": "2.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||||
|
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
|
||||||
|
},
|
||||||
|
"through2": {
|
||||||
|
"version": "2.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
||||||
|
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": "~2.3.6",
|
||||||
|
"xtend": "~4.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"to-fast-properties": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
|
||||||
|
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
|
||||||
|
},
|
||||||
|
"typedarray": {
|
||||||
|
"version": "0.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||||
|
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
|
||||||
|
},
|
||||||
|
"util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||||
|
},
|
||||||
|
"xtend": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
6
package.json
Normal file
6
package.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"@cljs-oss/module-deps": "^1.1.1",
|
||||||
|
"three": "^0.109.0"
|
||||||
|
}
|
||||||
|
}
|
2
resources/public/css/style.css
Normal file
2
resources/public/css/style.css
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/* some style */
|
||||||
|
|
15
resources/public/index.html
Normal file
15
resources/public/index.html
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>My first three.js app</title>
|
||||||
|
<style>
|
||||||
|
body { margin: 0; }
|
||||||
|
canvas { width: 100%; height: 100% }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas id="app-canvas"></canvas>
|
||||||
|
<script src="cljs-out/dev-main.js" type="text/javascript"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
7
resources/public/test.html
Normal file
7
resources/public/test.html
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<h1>Test host page</h1>
|
||||||
|
<script src="cljs-out/test-main.js" type="text/javascript"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
60
src/three_playground/core.cljs
Normal file
60
src/three_playground/core.cljs
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
(ns ^:figwheel-hooks three-playground.core
|
||||||
|
(:require
|
||||||
|
[goog.dom :as gdom]
|
||||||
|
[three]))
|
||||||
|
|
||||||
|
(defn get-app-element []
|
||||||
|
(gdom/getElement "app-canvas"))
|
||||||
|
|
||||||
|
(defn make-cube []
|
||||||
|
(let [geometry (three/BoxGeometry. 1 1 1)
|
||||||
|
material (three/MeshBasicMaterial. #js {:color 0x10ed00})]
|
||||||
|
(three/Mesh. geometry material)))
|
||||||
|
|
||||||
|
(defn init-state []
|
||||||
|
(let [renderer (three/WebGLRenderer. #js {:canvas (get-app-element)})
|
||||||
|
scene (three/Scene.)
|
||||||
|
camera (three/PerspectiveCamera.
|
||||||
|
75
|
||||||
|
(/ (.-innerWidth js/window)
|
||||||
|
(.-innerHeight js/window))
|
||||||
|
0.1
|
||||||
|
1000)
|
||||||
|
cube (make-cube)]
|
||||||
|
(.setSize renderer (.-innerWidth js/window) (.-innerHeight js/window))
|
||||||
|
(.add scene cube)
|
||||||
|
(atom {:running true
|
||||||
|
:cube {:rotation {:x 0 :y 0}}
|
||||||
|
:renderer renderer
|
||||||
|
:scene scene
|
||||||
|
:camera {:position {:z 5}}
|
||||||
|
:entities {:cube cube
|
||||||
|
:camera camera}})))
|
||||||
|
|
||||||
|
(defonce app-state (init-state))
|
||||||
|
|
||||||
|
(defn update-state [state]
|
||||||
|
(-> state
|
||||||
|
(assoc-in [:cube :rotation :x]
|
||||||
|
(+ (get-in state [:cube :rotation :x])
|
||||||
|
0.01))
|
||||||
|
(assoc-in [:cube :rotation :y]
|
||||||
|
(+ (get-in state [:cube :rotation :y])
|
||||||
|
0.01))))
|
||||||
|
|
||||||
|
(defn render [state]
|
||||||
|
(let [{:keys [renderer scene]} state
|
||||||
|
camera (get-in state [:entities :camera])
|
||||||
|
cube (get-in state [:entities :cube])]
|
||||||
|
(set! (-> camera (.-position) (.-z)) (get-in state [:camera :position :z]))
|
||||||
|
(set! (-> cube (.-rotation) (.-x)) (get-in state [:cube :rotation :x]))
|
||||||
|
(set! (-> cube (.-rotation) (.-y)) (get-in state [:cube :rotation :y]))
|
||||||
|
(.render renderer scene camera)))
|
||||||
|
|
||||||
|
(defn the-loop []
|
||||||
|
(when (:running @app-state)
|
||||||
|
(-> (swap! app-state #'update-state)
|
||||||
|
(render))
|
||||||
|
(js/requestAnimationFrame the-loop)))
|
||||||
|
|
||||||
|
(the-loop)
|
10
test.cljs.edn
Normal file
10
test.cljs.edn
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
^{
|
||||||
|
;; use an alternative landing page for the tests so that we don't
|
||||||
|
;; launch the application
|
||||||
|
:open-url "http://[[server-hostname]]:[[server-port]]/test.html"
|
||||||
|
|
||||||
|
;; uncomment to launch tests in a headless environment
|
||||||
|
;; you will have to figure out the path to chrome on your system
|
||||||
|
;; :launch-js ["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" "--headless" "--disable-gpu" "--repl" :open-url]
|
||||||
|
}
|
||||||
|
{:main three-playground.test-runner}
|
1
test/three_playground/core_test.cljs
Normal file
1
test/three_playground/core_test.cljs
Normal file
@ -0,0 +1 @@
|
|||||||
|
(ns three-playground.core-test)
|
9
test/three_playground/test_runner.cljs
Normal file
9
test/three_playground/test_runner.cljs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
;; This test runner is intended to be run from the command line
|
||||||
|
(ns three-playground.test-runner
|
||||||
|
(:require
|
||||||
|
;; require all the namespaces that you want to test
|
||||||
|
[three-playground.core-test]
|
||||||
|
[figwheel.main.testing :refer [run-tests-async]]))
|
||||||
|
|
||||||
|
(defn -main [& args]
|
||||||
|
(run-tests-async 5000))
|
Loading…
Reference in New Issue
Block a user