Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 11b0ab1

Browse files
committedFeb 24, 2020
Initial commit
0 parents  commit 11b0ab1

21 files changed

+7912
-0
lines changed
 

‎.buckconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
[android]
3+
target = Google Inc.:Google APIs:23
4+
5+
[maven_repositories]
6+
central = https://repo1.maven.org/maven2

‎.eslintrc.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
module.exports = {
2+
root: true,
3+
extends: '@react-native-community',
4+
};

‎.flowconfig

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
[ignore]
2+
; We fork some components by platform
3+
.*/*[.]android.js
4+
5+
; Ignore "BUCK" generated dirs
6+
<PROJECT_ROOT>/\.buckd/
7+
8+
; Ignore polyfills
9+
node_modules/react-native/Libraries/polyfills/.*
10+
11+
; These should not be required directly
12+
; require from fbjs/lib instead: require('fbjs/lib/warning')
13+
node_modules/warning/.*
14+
15+
; Flow doesn't support platforms
16+
.*/Libraries/Utilities/LoadingView.js
17+
18+
[untyped]
19+
.*/node_modules/@react-native-community/cli/.*/.*
20+
21+
[include]
22+
23+
[libs]
24+
node_modules/react-native/Libraries/react-native/react-native-interface.js
25+
node_modules/react-native/flow/
26+
27+
[options]
28+
emoji=true
29+
30+
esproposal.optional_chaining=enable
31+
esproposal.nullish_coalescing=enable
32+
33+
module.file_ext=.js
34+
module.file_ext=.json
35+
module.file_ext=.ios.js
36+
37+
munge_underscores=true
38+
39+
module.name_mapper='^react-native$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/react-native/react-native-implementation'
40+
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
41+
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
42+
43+
suppress_type=$FlowIssue
44+
suppress_type=$FlowFixMe
45+
suppress_type=$FlowFixMeProps
46+
suppress_type=$FlowFixMeState
47+
48+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
49+
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
50+
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
51+
52+
[lints]
53+
sketchy-null-number=warn
54+
sketchy-null-mixed=warn
55+
sketchy-number=warn
56+
untyped-type-import=warn
57+
nonstrict-import=warn
58+
deprecated-type=warn
59+
unsafe-getters-setters=warn
60+
inexact-spread=warn
61+
unnecessary-invariant=warn
62+
signature-verification-failure=warn
63+
deprecated-utility=error
64+
65+
[strict]
66+
deprecated-type
67+
nonstrict-import
68+
sketchy-null
69+
unclear-type
70+
unsafe-getters-setters
71+
untyped-import
72+
untyped-type-import
73+
74+
[version]
75+
^0.105.0

‎.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.pbxproj -text

‎.gitignore

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# OSX
2+
#
3+
.DS_Store
4+
5+
# Xcode
6+
#
7+
build/
8+
*.pbxuser
9+
!default.pbxuser
10+
*.mode1v3
11+
!default.mode1v3
12+
*.mode2v3
13+
!default.mode2v3
14+
*.perspectivev3
15+
!default.perspectivev3
16+
xcuserdata
17+
*.xccheckout
18+
*.moved-aside
19+
DerivedData
20+
*.hmap
21+
*.ipa
22+
*.xcuserstate
23+
24+
# Android/IntelliJ
25+
#
26+
build/
27+
.idea
28+
.gradle
29+
local.properties
30+
*.iml
31+
32+
# node.js
33+
#
34+
node_modules/
35+
npm-debug.log
36+
yarn-error.log
37+
38+
# BUCK
39+
buck-out/
40+
\.buckd/
41+
*.keystore
42+
!debug.keystore
43+
44+
# fastlane
45+
#
46+
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47+
# screenshots whenever they are needed.
48+
# For more information about the recommended setup visit:
49+
# https://docs.fastlane.tools/best-practices/source-control/
50+
51+
*/fastlane/report.xml
52+
*/fastlane/Preview.html
53+
*/fastlane/screenshots
54+
55+
# Bundle artifact
56+
*.jsbundle
57+
58+
# CocoaPods
59+
/ios/Pods/
60+
61+
# Project exclude paths
62+
/android/
63+
/ios/
64+
/out/

‎.prettierrc.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
bracketSpacing: false,
3+
jsxBracketSameLine: true,
4+
singleQuote: true,
5+
trailingComma: 'all',
6+
};

‎.watchmanconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

‎README.md

Lines changed: 428 additions & 0 deletions
Large diffs are not rendered by default.

‎app.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name": "ClojureRNProject",
3+
"displayName": "ClojureRNProject"
4+
}

‎babel.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: ['module:metro-react-native-babel-preset'],
3+
};

‎deps.edn

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{:deps {org.clojure/clojure {:mvn/version "1.10.0"}
2+
org.clojure/clojurescript {:mvn/version "1.10.339"}
3+
reagent {:mvn/version "0.9.1"}
4+
re-frame {:mvn/version "0.11.0"}
5+
re-frame-steroid {:mvn/version "0.1.1"}
6+
rn-shadow-steroid {:mvn/version "0.1.1"}
7+
re-frisk-rn {:mvn/version "0.1.0"}}
8+
:paths ["src" "test"]}

‎index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import "./app/index.js";

‎metro.config.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* Metro configuration for React Native
3+
* https://github.com/facebook/react-native
4+
*
5+
* @format
6+
*/
7+
8+
module.exports = {
9+
transformer: {
10+
getTransformOptions: async () => ({
11+
transform: {
12+
experimentalImportSupport: false,
13+
inlineRequires: false,
14+
},
15+
}),
16+
},
17+
};

‎package.json

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"name": "ClojureRNProject",
3+
"version": "0.0.1",
4+
"private": true,
5+
"scripts": {
6+
"android": "react-native run-android",
7+
"ios": "react-native run-ios",
8+
"start": "react-native start",
9+
"test": "jest",
10+
"lint": "eslint ."
11+
},
12+
"dependencies": {
13+
"@react-native-community/masked-view": "^0.1.6",
14+
"@react-navigation/native": "^5.0.7",
15+
"@react-navigation/stack": "^5.0.9",
16+
"react": "16.9.0",
17+
"react-dom": "16.9.0",
18+
"react-native": "0.61.5",
19+
"react-native-gesture-handler": "^1.6.0",
20+
"react-native-reanimated": "^1.7.0",
21+
"react-native-safe-area-context": "^0.7.3",
22+
"react-native-screens": "^2.0.0-beta.10"
23+
},
24+
"devDependencies": {
25+
"@babel/core": "^7.8.4",
26+
"@babel/runtime": "^7.8.4",
27+
"@react-native-community/eslint-config": "^0.0.7",
28+
"babel-jest": "^25.1.0",
29+
"eslint": "^6.8.0",
30+
"jest": "^25.1.0",
31+
"metro-react-native-babel-preset": "^0.58.0",
32+
"react-test-renderer": "16.9.0"
33+
},
34+
"jest": {
35+
"preset": "react-native"
36+
}
37+
}

‎shadow-cljs.edn

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{:source-paths ["src" "test"]
2+
3+
:dependencies [[reagent "0.9.1" :exclusions [cljsjs/react cljsjs/react-dom]]
4+
[re-frame "0.11.0"]
5+
[re-frame-steroid "0.1.1"]
6+
[rn-shadow-steroid "0.1.1"]
7+
[re-frisk-rn "0.1.0"]]
8+
9+
:builds {:dev
10+
{:target :react-native
11+
:init-fn clojurernproject.core/init
12+
:output-dir "app"
13+
:devtools {:autoload true
14+
:after-load steroid.rn.core/reload}}
15+
16+
:test
17+
{:target :node-test
18+
:output-to "out/node-tests.js"
19+
:autorun true}}}

‎src/clojurernproject/core.cljs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
(ns clojurernproject.core
2+
(:require [steroid.rn.core :as rn]
3+
[steroid.views :as views]
4+
[re-frame.core :as re-frame]
5+
[re-frisk-rn.core :as rfr]
6+
[steroid.rn.navigation.core :as rnn]
7+
[steroid.rn.navigation.stack :as stack]
8+
[clojurernproject.views :as screens]
9+
steroid.rn.navigation.events
10+
clojurernproject.events
11+
clojurernproject.subs))
12+
13+
(views/defview root-stack []
14+
(views/letsubs [[navigator screen] (stack/create-stack-navigator)
15+
home-comp (rn/reload-comp screens/home-screen)
16+
modal-comp (rn/reload-comp screens/modal-screen)]
17+
{:component-did-mount (rnn/create-mount-handler #(re-frame/dispatch [:init-app-db]))}
18+
[rnn/navigation-container {:ref rnn/nav-ref-handler}
19+
[navigator {:mode :modal}
20+
[screen {:name :home
21+
:component home-comp}]
22+
[screen {:name :modal
23+
:component modal-comp}]]]))
24+
25+
(defn init []
26+
(rfr/enable)
27+
(rn/register-comp "ClojureRNProject" root-stack))

‎src/clojurernproject/events.cljs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(ns clojurernproject.events
2+
(:require [steroid.fx :as fx]))
3+
4+
(fx/defn
5+
init-app-db
6+
{:events [:init-app-db]}
7+
[_]
8+
{:db {:counter 0
9+
:delta 10}})
10+
11+
(fx/defn
12+
update-counter
13+
{:events [:update-counter]}
14+
[{:keys [db]}]
15+
{:db (update db :counter inc)})

‎src/clojurernproject/subs.cljs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
(ns clojurernproject.subs
2+
(:require [steroid.subs :as subs]
3+
[re-frame.core :as re-frame]))
4+
5+
(subs/reg-root-subs #{:counter :delta})
6+
7+
(re-frame/reg-sub
8+
:counter-with-delta
9+
:<- [:counter]
10+
:<- [:delta]
11+
(fn [[counter delta]]
12+
(+ counter delta)))

‎src/clojurernproject/views.cljs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
(ns clojurernproject.views
2+
(:require [steroid.rn.core :as rn]
3+
[steroid.views :as views]
4+
[re-frame.core :as re-frame]))
5+
6+
(views/defview home-screen []
7+
(views/letsubs [counter [:counter-with-delta]]
8+
[rn/view {:style {:align-items :center :justify-content :center :flex 1}}
9+
[rn/text (str "Counter with delta: " counter)]
10+
[rn/touchable-opacity {:on-press #(re-frame/dispatch [:update-counter])}
11+
[rn/view {:style {:background-color :gray :padding 5}}
12+
[rn/text "Update counter"]]]
13+
[rn/touchable-opacity {:on-press #(re-frame/dispatch [:navigate-to :modal])
14+
:style {:margin-top 20}}
15+
[rn/view {:style {:background-color :gray :padding 5}}
16+
[rn/text "Open modal"]]]]))
17+
18+
(defn modal-screen []
19+
[rn/view {:style {:align-items :center :justify-content :center :flex 1}}
20+
[rn/touchable-opacity {:on-press #(re-frame/dispatch [:navigate-back])}
21+
[rn/view {:style {:background-color :gray :padding 5}}
22+
[rn/text "Navigate back"]]]])

‎test/events/counter_test.cljs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(ns events.counter-test
2+
(:require [cljs.test :refer (deftest is)]
3+
[clojurernproject.events :as events]))
4+
5+
(deftest events-counter-test
6+
(is (= (events/update-counter {:db {:counter 0}})
7+
{:db {:counter 1}})))

‎yarn.lock

Lines changed: 7155 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)
Please sign in to comment.