0.2.0 • Published 10 years ago

cycle-jsx-ir v0.2.0

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

Cycle-JSX-IR

This is a Cycle driver which uses the fantastic JSX-IR library.

Currently only a driver for the Incremental DOM is ready.

Install

npm install cycle-jsx-ir
If you plan to use JSX you also need babel-plugin-jsx
npm install babel-plugin-jsx

See here for usage if you're not familiar.

Roadmap

Super Basic Example

import {Rx, run} from '@cycle/core';
import {makeIDOMDriver, h} from 'cycle-jsx-ir';

function main(responses) {
  let view$ = Rx.Observable.interval(1000)
    .map(i => {
      return h('h1', `I've been running for ${i} seconds!`)
    });

  return {
    IDOM: view$
  }
}

let drivers = {
  IDOM: makeIDOMDriver('.app')
}

run(main, drivers);

UI Partials

One cool feature provided by JSX-IR is to create functions that can encapsulate parts of your UI.

These are not custom elements, only resuable UI elements.

Example UI Partial

// With hyperscript
function myPartial(props, children) {
  //children === [ ];
  return h('div', {className: 'special-partial'}, [
   h('h1', `${props.currentTime.toLocaleString()}`)
  ]);
}

function view(state$) {
  return state$.map(
    ({currentTime}) => {
      //currentTime === new Date()
      return h('div', {}, [
        h(myPartial, {currentTime}, [])
      ])
    }
  );
}

// With JSX
function myPartial(props, children) {
  //children === [ ];
  return (
    <div className='special-partial'>
      <h1>{props.currentTime.toLocalestring()}</h1>
    </div>
  );
}

function view(state$) {
  return state$.map(
    ({currentTime}) =>
    <div>
      <myPartial currentTime={currentTime}></myPartial>
    </div>
  );
}

UI Partials that return hyperscript can be used in JSX and partials that return JSX can be used from hyperscript!

0.2.0

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.1

10 years ago