all imlementations using Cyclow all imlementations of Composition

an es6 implementation
of the Composition demo using Cyclow



import {Block} from 'cyclow'
import Field from './field'

const Form = () => Block({
  components: {field: Field()},
  on: {
    init: () => [
      ['field.init', 'Enter name'],
      state => ({current: 'Steve'})
    ],
    'field.submission': submission => state => ({current: submission})
  },
  view: ({current}, {field}) => ({
    content: [
      field,
      {tag: 'p', content: `Submitted value: ${current}`}
    ],
    attrs: {id: 'app'}
  })
})

export default Form

The same file in a TypeScript implementation using Angular (2.4.9):

import {Component} from '@angular/core'

@Component({
  selector: '#app',
  template: `
    <field instruction="Enter name" (submission)="onSubmission($event)"></field>
    <p>Submitted name: {{submission}}</p>
  `
})
export class Form {
  submission: string = 'Steve'
  onSubmission(txt) {
    this.submission = txt;
  }
}

The same file in a composition helper implementation using CycleJS (10.0.5):

import xs from 'xstream'
import {div, p} from '@cycle/dom'
import Field from './field'
import withComponent from './extras'

function view ({childsinks: {submit$, DOM}}) {
  return xs.combine(submit$.startWith('Steve'), DOM).map(([submission, childvtree]) => div([
    childvtree,
    p('Submitted value: ' + submission)
  ]))
}

function Form (sources) {
  return {
    DOM: view(sources),
    instruction$: xs.of('Enter name')
  }
}

export default withComponent(Form, Field, 'instruction$')

The same file in a createClass implementation using React (15.2.0):

import React from 'react'
import Field from './field'

let Form = React.createClass({
  getInitialState: () => ({submission: 'Steve'}),
  onSubmission (txt) { this.setState({submission: txt}) },
  render () {
    return (
      <div>
        <Field instruction='Enter name' onSubmission={this.onSubmission} />
        <p>Submitted value: {this.state.submission}</p>
      </div>
    )
  }
})

export default Form