UNPKG

@rxx/core

Version:

React MVI micro framework.

97 lines (96 loc) 3.42 kB
/** * The MIT License (MIT) * Copyright (c) Taketoshi Aono * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @fileoverview * @author Taketoshi Aono */ import React from 'react'; import PropTypes from 'prop-types'; import { StoreConstructor, StateFactory } from '../store/store'; import { Intent, IntentConstructor } from '../intent/intent'; import { StateHandler } from '../handler/state-handler'; import { Provisioning } from '../provisioning'; import { IntentHandler } from '../intent/intent-handler'; import { SubjectTree } from '../subject'; /** * Provider context type. */ export interface ProviderContextType<State> { intent: IntentHandler; state: any; parent: ProviderContextType<any>; } /** * Provider props. */ export declare type ProviderProps = { intent?: IntentConstructor | { [key: string]: IntentConstructor; }; store?: StoreConstructor<any, any> | StoreConstructor<any, any>[]; app?: StateFactory; service?: { [key: string]: any; }; useCache?: boolean; [key: string]: any; }; /** * Container component for intent and state. * This component provide context object and props from store state. * * @example * <Provider store={Store} intent={Intent}> * <Component /> * </Provider> */ export declare class Provider extends React.Component<ProviderProps, { prepared: boolean; }> { static contextTypes: { provisioning: PropTypes.Requireable<any>; intent: PropTypes.Requireable<any>; state: PropTypes.Requireable<any>; parent: PropTypes.Requireable<any>; __subject: PropTypes.Requireable<any>; __intent: PropTypes.Requireable<any>; }; /** * Internal component. */ private ProviderComponent; private provisioning; private storeState; context: ProviderContextType<any> & { provisioning: Provisioning<any>; __subject: SubjectTree; __intent: Intent; }; constructor(p: any, c: any); render(): JSX.Element | null; componentDidMount(): void; componentWillUnmount(): void; } export declare function directConnect<State, Props>(Component: React.ComponentClass<Props>): React.ComponentClass<{ state?: State; props?: Props; handlers?: { [key: string]: (...args: any[]) => any; }[]; stateHandlers?: { [key: string]: StateHandler; }; app?: StateFactory; }>;