Skip to content

marko-js/tsrx

Repository files navigation

tsrx · Marko

Write Marko components in TSRX.

TSRX syntax transitioning to compiled Marko output, using the code below

Show before & after
TSRX Marko
export default component() {
  <h1>{"Groceries"}</h1>

  let items = [];

  <ul>
    for (const counter of items; index i; key counter.id) {
      let count = 1;

      <li>
        <span>{text counter.label}</span>
        <button onClick={() => {
          if (--count < 1) {
            items = items.toSpliced(i, 1);
          }
        }}>{"−"}</button>
        <span>{count}</span>
        <button onClick={() => { count++ }}>{"+"}</button>
      </li>
    }
  </ul>

  let id = 0;

  <form onSubmit={(e) => {
    e.preventDefault();
    items = items.concat({ id: id++, label: e.target.item.value });
    e.target.reset();
  }}>
    <input name="item" />
    <button>{"Add"}</button>
  </form>
}
<h1>Groceries</h1>

<let/items=[]>

<ul>
  <for|counter, i| of=items by="id">
    <let/count=1>

    <li>
      <span>${counter.label}</span>
      <button onClick() {
        if (--count < 1) {
          items = items.toSpliced(i, 1);
        }
      }>−</button>
      <span>${count}</span>
      <button onClick() { count++ }>+</button>
    </li>
  </for>
</ul>

<let/id=0>

<form onSubmit(e) {
  e.preventDefault();
  items = items.concat({ id: id++, label: e.target.item.value });
  e.target.reset();
}>
  <input name="item">
  <button>Add</button>
</form>

Packages

Examples

Development

npm install
npm run build
npm test

About

Utilities for using `.tsrx` files with Marko

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors