175 Commits

Author SHA1 Message Date
Dan Holmsand
bffbae231d Reorganize build, tests and doc site
Tests and doc site can now run without node, using only
"lein figwheel". Tests and site are then re-run automatically
whenever a source file changes.

The doc site is now generated into "outsite/public", and can be
copied into the "gh-pages" branch with "make build-gh-pages".

"make push-gh-pages" builds the doc site and pushes it upstream
to the gh-pages branch there.

Generation of html pages is now handled completely in
ClojureScript, loaded from "bin/gen-site.js".

Link handling is a bit simplified.
2014-11-29 18:30:24 +01:00
Dan Holmsand
3bf98230ca Merge branch 'morecursor' 2014-11-23 21:09:56 +01:00
Dan Holmsand
7244ffc25d Add test for wrap 2014-11-22 11:08:17 +01:00
Dan Holmsand
f94fcd5542 Add equality test for cursor 2014-11-22 10:45:36 +01:00
Dan Holmsand
6b87349d88 Make sure returning new class from render works 2014-11-22 09:42:31 +01:00
Dan Holmsand
02ffe6bcfa Update cursor test 2014-11-13 19:58:56 +01:00
Dan Holmsand
3f696a3922 Make sure render-to-string etc work better in a browser
Previously, they would be reactive, which could lead to all
kinds of strangeness.

Also fix pesky Closure warning.
2014-11-06 19:18:56 +01:00
Dan Holmsand
12d475fc62 Introduce render, render-to-string and render-to-static-markup
The new names correspond to changes in React in 0.12.0.

Both render-component and render-component-to-string are kept for
backward compatibility.

Call React.render etc to avoid deprecation warnings from React.
2014-11-06 11:34:51 +01:00
Dan Holmsand
a1a244e573 Merge branch 'master' of https://github.com/seancorfield/reagent 2014-10-20 13:29:19 +02:00
Dan Holmsand
6ce5bc16f5 Add test for null component return 2014-09-16 16:31:29 +02:00
Sean Corfield
5d2fc0254e Add cursor support.
Adds RCursor type: wraps Reagent's RAtom along with a path that provides focus into a specific part of that atom.

Adds reagent.ratom/cursor as a constructor for the RCursor type.

Adds reagent.core/cursor as the public API. This can be called with just a path, and returns a function that accepts a Reagent atom, or with both a path and an atom.

Dereferences of a cursor behave like get-in on the underlying atom with the specified path.

If you reset! a cursor, it behaves like a swap! assoc-in on the underlying atom. If swap! a cursor, it behaves like a swap! update-in on the underlying atom.
2014-09-08 19:31:05 -07:00
Dan Holmsand
429ed50fab Make demo code more Light Table-friendly 2014-04-01 19:50:28 +02:00
Dan Holmsand
4060bfc6fe Simplify the fvar macro 2014-04-01 15:17:33 +02:00
Dan Holmsand
2e0e369d93 Use new javascript interop macros 2014-03-25 12:37:28 +01:00
Dan Holmsand
976cf8ef0b Add fvar macro 2014-03-25 11:33:15 +01:00
Dan Holmsand
6389a3889a Add better javascript interop macros 2014-03-25 07:58:22 +01:00
Dan Holmsand
907a85db9c Update React to 0.10.0 2014-03-25 06:23:44 +01:00
Dan Holmsand
0f2136d4b4 Allow render-component to take a function returning a component 2014-03-18 16:43:19 +01:00
Dan Holmsand
ba995c2e0d Add force-update-all, to make LightTable integration easier
force-update-all re-mounts all root components, and makes all
their children re-render.
2014-03-18 13:09:55 +01:00
Dan Holmsand
82a1dd73eb Make javascript interop macros more like aset and aget
Drop js-global, probably not worth the trouble
2014-03-17 12:02:26 +01:00
Dan Holmsand
e21e58e509 Rename jget to get. etc 2014-03-14 11:45:44 +01:00
Dan Holmsand
8b59d1509b Add macros for more convenient javascript interop 2014-03-14 10:27:49 +01:00
Jacob Maine
6302c8ecd6 Make multimethods work as component functions.
This is actually a bug in ClojureScript
(http://dev.clojure.org/jira/browse/CLJS-777).  In regular Clojure a
`MultiFn` is `ifn?`, but in ClojureScript it wasn't.  The bug is now
fixed
(525154f2a4)
but not yet released.

This code can be reverted after Reagent's ClojureScript version is
updated.
2014-03-03 17:55:40 +02:00
Dan Holmsand
2bb32eb21f Make set-state etc async as well, by using an atom 2014-02-15 11:57:52 +01:00
Dan Holmsand
b2bfc14afb Move test code for partial 2014-02-14 11:27:45 +01:00
Dan Holmsand
b041427e94 Allow Hiccup tags to be strings and symbols as well 2014-02-11 12:03:44 +01:00
Dan Holmsand
ed4cf4e389 Allow component functions to be anything that satisfies ifn? 2014-02-11 11:36:58 +01:00
Dan Holmsand
805264ea61 Warn on deref in seqs instead of silently failing
Use warning to improve color palette demo
Fix page title
Move more code to util.cljs
2014-02-10 23:54:30 +01:00
Dan Holmsand
8f1c02b273 Render without allocating ratom unless necessary 2014-02-10 15:29:38 +01:00
Dan Holmsand
16a41f67e4 Remove replace-args
Probably not very useful, and easy to add back if need be
2014-02-10 09:31:25 +01:00
Dan Holmsand
3c2c63402e Breaking change: Allow arbitrary arguments to component functions
Previously, the first argument had to be a map, and the rest of the
arguments where passed as a vector as the second argument.

Now [my-comp foo...] generally behaves as (my-comp foo...).

Since `this` is no longer passed to component functions, add
current-component function.

Also change signatures of React callbacks, to reflect that arbitrary
arguments can be passed.

Remove set-props and replace-props for the same reason.

Add argv accessor and set-args instead.
2014-02-08 13:55:01 +01:00
Dan Holmsand
aca69347b7 Merge branch 'delayed'
Conflicts:
	src/reagent/impl/template.cljs
2014-02-03 14:07:02 +01:00
Dan Holmsand
e7f066177b Make sure changes to state in render fn don't cause disaster 2014-02-03 13:58:31 +01:00
Dan Holmsand
d3407ff664 Consider symbols to be "identical"
And test some more obscure should-component-update variants.
2014-01-30 10:34:41 +01:00
Dan Holmsand
d1851d5a42 Allow dynamic id with hiccup-style classes
And id in props wins over static id.

Fixes #11
2014-01-28 18:00:15 +01:00
Dan Holmsand
8b4ec9fda6 Make managed inputs work better with async rendering 2014-01-28 17:23:39 +01:00
Dan Holmsand
dfe0eb41d5 Batch updates properly by rendering parents before children 2014-01-27 16:17:37 +01:00
Dan Holmsand
eb381f13bb Start experimenting with batched rendering with requestAnimationFrame 2014-01-27 13:37:59 +01:00
Dan Holmsand
23a5f80197 Fix test-running under advanced compilation
Turns out that clojurescript.test breaks unless the test
directory is included first, but only with advanced compilation
and only on the first run...
2014-01-25 17:02:58 +01:00
Dan Holmsand
f9d0b58af8 Allow data-* and aria-* attrs, pass string attrs as-is to React 2014-01-25 13:47:41 +01:00
Dan Holmsand
8110b1aca8 Tweak demo and testing 2014-01-24 11:03:01 +01:00
Dan Holmsand
8e542292a2 Cloact -> Reagent 2014-01-17 11:12:11 +01:00
Dan Holmsand
fb7310870a Fix test-running in advanced compilation 2014-01-10 14:27:59 +01:00
Dan Holmsand
94cdfd6a2f Move demo to separate directory 2014-01-10 11:49:36 +01:00
Dan Holmsand
97799ae63c Improve demo a bit 2014-01-09 14:37:11 +01:00
Dan Holmsand
c0744c7fed Call render functions with props, children, component 2014-01-08 16:51:10 +01:00
Dan Holmsand
6bf6b3f7d4 More cleanup
todomvc is now down to 87 lines!
2014-01-08 16:34:36 +01:00
Dan Holmsand
176f7b885c Make ratom macros less fancy 2014-01-07 20:32:00 +01:00
Dan Holmsand
53fef42768 Breaking change: Stop implementing IDeref in cloact components
Introduce set-state, replace-state and state functions instead.

Since we already have our own atom, it doesn't make any sense
to duplicate functionality. Also, the implementation was necessarily
very messy, and fragile.
2014-01-07 19:57:40 +01:00
Dan Holmsand
00317991ee More docs 2014-01-07 17:01:28 +01:00