import { EditArray, EditComplexCodecComponentProps, EditSequence, EditTuple, NOTIN, } from "@polkadot-api/react-builder" import { compact } from "@polkadot-api/substrate-bindings" import { useStateObservable } from "@react-rxjs/core" import React, { ReactNode } from "react" import { isActive$ } from "../common/paths.state" import { useSubtreeFocus } from "../common/SubtreeFocus" import { headerHighlight, highlight, MissingData, toConcatHex, } from "./codec-components" export const CSequence: EditSequence = (props) => export const CArray: EditArray = (props) => ( ) export const CTuple: EditTuple = (props) => ( ) export const ListDisplay: React.FC< EditComplexCodecComponentProps & { innerComponents: ReactNode[] fixedLength?: boolean } > = (props) => { const { innerComponents, fixedLength, value, path } = props const isActive = useStateObservable(isActive$(path.join("."))) const focus = useSubtreeFocus() const sub = focus.getNextPath(path) if (sub) { return innerComponents[Number(sub)] } if (value === NOTIN) { return } return ( {fixedLength ? null : ( {toConcatHex(compact.enc(value.length))} )} {innerComponents.map((jsx, idx) => ( {jsx} ))} ) }