git.fiddlerwoaroof.com
Raw Blame History
import { html } from "https://unpkg.com/lit-html@1.2.1/lit-html.js?module";
import { selectPackage } from "./api.js";

const PackageSymbol = ({
  name,
  "value-bound": v,
  "function-bound": f,
  "macro-bound": m,
}) =>
  html`
    <tr>
      <td>${name}</td>
      <td>${v}</td>
      <td>${f}</td>
      <td>${m}</td>
    </tr>
  `;

const Package = ({ pkg, symbols }) => html`
  <div id="package-section">
    <h2>${pkg}</h2>
    <table id="package">
      <thead>
        <th>Symbol Name</th>
        <th>Value Bound?</th>
        <th>Function Bound?</th>
        <th>Macro Bound?</th>
      </thead>
      <tbody>
        ${R.map(
          (v) => PackageSymbol(v),
          R.sortBy(
            R.compose(R.toLower, ({ name }) => name),
            symbols
          )
        )}
      </tbody>
    </table>
  </div>
`;

export const PackageList = (
  dispatchers,
  { packages, currentPackage, symbols }
) =>
  html`
    <main>
      <div>
        <ul id="packages">
          ${R.map(
            (pkg) =>
              html`<li>
                <button @click=${(_) => selectPackage(dispatchers, pkg)}>
                  ${pkg}
                </button>
              </li>`,
            R.sortBy(R.toLower, packages)
          )}
        </ul>
      </div>
      ${Package({ pkg: currentPackage, symbols })}
    </main>
  `;