| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- import React from "react";
 
- export const createInverseContext = <T extends unknown = null>(
 
-   initialValue: T,
 
- ) => {
 
-   const Context = React.createContext(initialValue) as React.Context<T> & {
 
-     _updateProviderValue?: (value: T) => void;
 
-   };
 
-   class InverseConsumer extends React.Component {
 
-     state = { value: initialValue };
 
-     constructor(props: any) {
 
-       super(props);
 
-       Context._updateProviderValue = (value: T) => this.setState({ value });
 
-     }
 
-     render() {
 
-       return (
 
-         <Context.Provider value={this.state.value}>
 
-           {this.props.children}
 
-         </Context.Provider>
 
-       );
 
-     }
 
-   }
 
-   class InverseProvider extends React.Component<{ value: T }> {
 
-     componentDidMount() {
 
-       Context._updateProviderValue?.(this.props.value);
 
-     }
 
-     componentDidUpdate() {
 
-       Context._updateProviderValue?.(this.props.value);
 
-     }
 
-     render() {
 
-       return <Context.Consumer>{() => this.props.children}</Context.Consumer>;
 
-     }
 
-   }
 
-   return {
 
-     Context,
 
-     Consumer: InverseConsumer,
 
-     Provider: InverseProvider,
 
-   };
 
- };
 
 
  |