import * as React from 'react'; import { useState, useEffect } from 'react'; import './inventory.css' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faLock, faLockOpen, faBook, faHammer, faBan } from '@fortawesome/free-solid-svg-icons' import Markdown from './Markdown'; import { useLoadDocQuery, ComputedInventoryItem } from '../state/api'; export function Inventory({ tactics, lemmas, definitions, setInventoryDoc } : {lemmas: ComputedInventoryItem[], tactics: ComputedInventoryItem[], definitions: ComputedInventoryItem[], setInventoryDoc: (inventoryDoc: {name: string, type: string}) => void}) { function openDoc(name, type) { setInventoryDoc({name, type}) } return (
{/* TODO: Click on Tactic: show info TODO: click on paste icon -> paste into command line */}

Tactics

Definitions

Lemmas

) } function InventoryList({items, docType, openDoc} : {items: ComputedInventoryItem[], docType: string, openDoc(name: string, type: string): void}) { const categorySet = new Set() for (let item of items) { categorySet.add(item.category) } const categories = Array.from(categorySet).sort() const [tab, setTab] = useState(categories[0]); return <> {categories.length > 1 &&
{categories.map((cat) =>
{ setTab(cat) }}>{cat}
)}
}
{ [...items].sort( // sort unavailable tactics/lemmas/def to the back. (x, y) => +x.locked - +y.locked || +x.disabled - +y.disabled ).map(item => { if (tab == item.category) { return {openDoc(item.name, docType)}} name={item.name} displayName={item.displayName} locked={item.locked} disabled={item.disabled} /> } }) }
} function InventoryItem({name, displayName, locked, disabled, showDoc}) { const icon = locked ? : disabled ? : "" const className = locked ? "locked" : disabled ? "disabled" : "" const handleClick = () => { if (!locked && !disabled) { showDoc() } } return
{icon} {displayName}
} export function Documentation({name, type}) { const doc = useLoadDocQuery({type: type, name: name}) return <>

{doc.data?.displayName}

{doc.data?.text} }