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}
))}
)
}