import * as React from "react"; import { Observable } from "rxjs"; import { ITokenQueryOptions as FilterOptions } from "@daostack/arc.js"; import { Arc as Protocol, ArcConfig as ProtocolConfig, InferredToken as Component, TokenEntity as Entity, TokenData as Data, CProps, ComponentList, ComponentListLogs, ComponentListProps, } from "../"; import { CreateContextFeed } from "../runtime/ContextFeed"; type RequiredProps = ComponentListProps; interface InferredProps extends RequiredProps { config: ProtocolConfig; } class InferredTokens extends ComponentList { createObservableEntities(): Observable { const { config, filter } = this.props; if (!config) { throw Error( "Arc Config Missing: Please provide this field as a prop, or use the inference component." ); } return Entity.search(config.connection, filter); } renderComponent( entity: Entity, children: any, index: number ): React.ComponentElement, any> { const { config } = this.props; return ( {children} ); } public static get Entities() { return CreateContextFeed( this.EntitiesContext.Consumer, this.LogsContext.Consumer, "Tokens" ); } public static get Logs() { return CreateContextFeed( this.LogsContext.Consumer, this.LogsContext.Consumer, "Tokens" ); } protected static EntitiesContext = React.createContext( undefined ); protected static LogsContext = React.createContext< ComponentListLogs | undefined >(undefined); } class Tokens extends React.Component { render() { const { children, sort, filter } = this.props; return ( {(config: ProtocolConfig) => ( {children} )} ); } public static get Entities() { return InferredTokens.Entities; } public static get Logs() { return InferredTokens.Logs; } } export default Tokens; export { Tokens, InferredTokens };