Remove development code
This commit is contained in:
		
							parent
							
								
									1ba18b7341
								
							
						
					
					
						commit
						12fd1e3981
					
				@ -3,17 +3,18 @@ import React, { createContext, useContext, useMemo, useReducer } from 'react'
 | 
				
			|||||||
/** Takes options that fully define a store and turns it into a more potent reducer */
 | 
					/** Takes options that fully define a store and turns it into a more potent reducer */
 | 
				
			||||||
export const usePotentReducer = options => {
 | 
					export const usePotentReducer = options => {
 | 
				
			||||||
  const { reducer = {}, thunks = {}, initialState } = options
 | 
					  const { reducer = {}, thunks = {}, initialState } = options
 | 
				
			||||||
 | 
					  const { extState, extDispatch } = options
 | 
				
			||||||
  const { onUpdate, logging } = options
 | 
					  const { onUpdate, logging } = options
 | 
				
			||||||
  const reducerFn = useMemo(
 | 
					  const reducerFn = useMemo(
 | 
				
			||||||
    () => makeReducerFn(reducer, { onUpdate, logging }),
 | 
					    () => makeReducerFn(reducer, { onUpdate, logging }),
 | 
				
			||||||
    [reducer, onUpdate, logging]
 | 
					    [reducer, onUpdate, logging]
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  const [state, dispatch] = useReducer(reducerFn, initialState)
 | 
					  const [state, dispatch] = useReducer(reducerFn, initialState)
 | 
				
			||||||
  const _thunks = useMemo(() => bindThunks(thunks, dispatch), [
 | 
					  const _thunks = useMemo(() => bindThunks(thunks, extDispatch || dispatch), [
 | 
				
			||||||
    thunks,
 | 
					    thunks,
 | 
				
			||||||
    dispatch
 | 
					    extDispatch
 | 
				
			||||||
  ])
 | 
					  ])
 | 
				
			||||||
  return [state, _thunks]
 | 
					  return [extState || state, _thunks]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Turn a reducer definition object to a function
 | 
					/** Turn a reducer definition object to a function
 | 
				
			||||||
@ -21,7 +22,8 @@ export const usePotentReducer = options => {
 | 
				
			|||||||
 * @param {Object} options
 | 
					 * @param {Object} options
 | 
				
			||||||
 * @returns {Function}: Proper reducer
 | 
					 * @returns {Function}: Proper reducer
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function makeReducerFn(reducer, { onUpdate, logging }) {
 | 
					export function makeReducerFn(reducer, options = {}) {
 | 
				
			||||||
 | 
					  const { onUpdate, logging } = options
 | 
				
			||||||
  const noop = state => state
 | 
					  const noop = state => state
 | 
				
			||||||
  return (prevState, action) => {
 | 
					  return (prevState, action) => {
 | 
				
			||||||
    const { type } = action
 | 
					    const { type } = action
 | 
				
			||||||
@ -73,17 +75,17 @@ function patchDispatch(dispatch, type) {
 | 
				
			|||||||
/** A ReducerStore Factory that uses React.context
 | 
					/** A ReducerStore Factory that uses React.context
 | 
				
			||||||
 * Used to make a Store accessible through multiple components
 | 
					 * Used to make a Store accessible through multiple components
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export const createStore = options => {
 | 
					export const createStore = initialOptions => {
 | 
				
			||||||
  const context = createContext(null)
 | 
					  const context = createContext(null)
 | 
				
			||||||
  const { Consumer } = context
 | 
					  const { Consumer } = context
 | 
				
			||||||
  const Provider = ({ children }) => {
 | 
					  const Provider = ({ children, options }) => {
 | 
				
			||||||
    const store = usePotentReducer(options)
 | 
					    const store = usePotentReducer({ ...initialOptions, ...options })
 | 
				
			||||||
    return React.createElement(context.Provider, { value: store }, children)
 | 
					    return React.createElement(context.Provider, { value: store }, children)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  const useStore = () => useContext(context)
 | 
					  const useStore = () => useContext(context)
 | 
				
			||||||
  const useSelector = selector => {
 | 
					  const useSelector = selector => {
 | 
				
			||||||
    const val = selector(useContext(context)[0])
 | 
					    const val = selector(useContext(context)[0])
 | 
				
			||||||
    options.warnOnUndefinedSelect && assertSelectedExists(val)
 | 
					    initialOptions.warnOnUndefinedSelect && assertSelectedExists(val)
 | 
				
			||||||
    return val
 | 
					    return val
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  const useDispatch = () => useContext(context)[1]
 | 
					  const useDispatch = () => useContext(context)[1]
 | 
				
			||||||
 | 
				
			|||||||
@ -7,8 +7,6 @@ import { SearchBar } from './components/SearchBar'
 | 
				
			|||||||
import './App.css'
 | 
					import './App.css'
 | 
				
			||||||
import { LangSelect } from './components/LangSelect'
 | 
					import { LangSelect } from './components/LangSelect'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Counter } from 'components/Counter'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const App = () => {
 | 
					export const App = () => {
 | 
				
			||||||
  const { t } = useTranslation()
 | 
					  const { t } = useTranslation()
 | 
				
			||||||
  return (
 | 
					  return (
 | 
				
			||||||
@ -22,7 +20,6 @@ export const App = () => {
 | 
				
			|||||||
        <RsvpReader></RsvpReader>
 | 
					        <RsvpReader></RsvpReader>
 | 
				
			||||||
      </main>
 | 
					      </main>
 | 
				
			||||||
      <footer>Made by Alfred Melch</footer>
 | 
					      <footer>Made by Alfred Melch</footer>
 | 
				
			||||||
      <Counter />
 | 
					 | 
				
			||||||
    </>
 | 
					    </>
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,53 +0,0 @@
 | 
				
			|||||||
import React from 'react'
 | 
					 | 
				
			||||||
import {
 | 
					 | 
				
			||||||
  useCounter,
 | 
					 | 
				
			||||||
  CounterProvider,
 | 
					 | 
				
			||||||
  selectors,
 | 
					 | 
				
			||||||
  useCounterSelector
 | 
					 | 
				
			||||||
} from './CounterStore'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Counter = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <span>
 | 
					 | 
				
			||||||
      <CounterProvider>
 | 
					 | 
				
			||||||
        <MyCounter />
 | 
					 | 
				
			||||||
        <Text />
 | 
					 | 
				
			||||||
        <TextSetter />
 | 
					 | 
				
			||||||
        <Logger />
 | 
					 | 
				
			||||||
      </CounterProvider>
 | 
					 | 
				
			||||||
    </span>
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Logger = () => {
 | 
					 | 
				
			||||||
  const store = useCounter()
 | 
					 | 
				
			||||||
  return <></>
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const MyCounter = () => {
 | 
					 | 
				
			||||||
  const [_, { increment, decrement }] = useCounter()
 | 
					 | 
				
			||||||
  const counter = useCounterSelector(selectors.$count)
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <div>
 | 
					 | 
				
			||||||
      {counter}
 | 
					 | 
				
			||||||
      <button onClick={increment}>+</button>
 | 
					 | 
				
			||||||
      <button onClick={decrement}>-</button>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Text = () => {
 | 
					 | 
				
			||||||
  const [{ text }] = useCounter()
 | 
					 | 
				
			||||||
  return <span>{text}</span>
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const TextSetter = () => {
 | 
					 | 
				
			||||||
  const [{ text }, { setText }] = useCounter()
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <input
 | 
					 | 
				
			||||||
      type="text"
 | 
					 | 
				
			||||||
      value={text}
 | 
					 | 
				
			||||||
      onChange={evt => setText(evt.target.value)}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,9 +0,0 @@
 | 
				
			|||||||
export const $count = state => {
 | 
					 | 
				
			||||||
  return state.counter
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
export const lala = 'lalal'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  $count,
 | 
					 | 
				
			||||||
  lala
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,25 +0,0 @@
 | 
				
			|||||||
import { createStore } from 'potent-reducer'
 | 
					 | 
				
			||||||
import selectors from './CounterSelector'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const initialState = {
 | 
					 | 
				
			||||||
  counter: 0,
 | 
					 | 
				
			||||||
  text: 'initial'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const thunks = {
 | 
					 | 
				
			||||||
  increment: () => dispatch => dispatch(),
 | 
					 | 
				
			||||||
  decrement: () => dispatch => dispatch(),
 | 
					 | 
				
			||||||
  setText: text => dispatch => dispatch({ text })
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const reducer = {
 | 
					 | 
				
			||||||
  INCREMENT: state => ({ ...state, counter: state.counter + 1 }),
 | 
					 | 
				
			||||||
  DECREMENT: state => ({ ...state, counter: state.counter - 1 }),
 | 
					 | 
				
			||||||
  SET_TEXT: (state, { text }) => ({ ...state, text })
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const store = createStore({ reducer, thunks, initialState, logging: true })
 | 
					 | 
				
			||||||
export const CounterProvider = store.Provider
 | 
					 | 
				
			||||||
export const useCounter = store.useStore
 | 
					 | 
				
			||||||
export const useCounterSelector = store.useSelector
 | 
					 | 
				
			||||||
export { selectors }
 | 
					 | 
				
			||||||
@ -15,6 +15,7 @@ function createRootElement() {
 | 
				
			|||||||
  body.appendChild(root)
 | 
					  body.appendChild(root)
 | 
				
			||||||
  return root
 | 
					  return root
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ReactDOM.render(
 | 
					ReactDOM.render(
 | 
				
			||||||
  <Provider>
 | 
					  <Provider>
 | 
				
			||||||
    <App />
 | 
					    <App />
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,5 @@
 | 
				
			|||||||
import { createStore } from 'potent-reducer'
 | 
					import React, { useEffect, useState } from 'react'
 | 
				
			||||||
 | 
					import { createStore, makeReducerFn } from 'potent-reducer'
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  safeSelectNextWord,
 | 
					  safeSelectNextWord,
 | 
				
			||||||
  safeSelectNextSentence,
 | 
					  safeSelectNextSentence,
 | 
				
			||||||
@ -68,7 +69,13 @@ const reducer = {
 | 
				
			|||||||
  SET_LANG: (state, { lang }) => ({ ...state, lang })
 | 
					  SET_LANG: (state, { lang }) => ({ ...state, lang })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const store = createStore({ reducer, thunks, initialState, logging: true })
 | 
					const store = createStore({
 | 
				
			||||||
 | 
					  reducer,
 | 
				
			||||||
 | 
					  thunks,
 | 
				
			||||||
 | 
					  initialState,
 | 
				
			||||||
 | 
					  logging: true,
 | 
				
			||||||
 | 
					  warnOnUndefinedSelect: true
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
export const Provider = store.Provider
 | 
					export const Provider = store.Provider
 | 
				
			||||||
export const useStore = store.useStore
 | 
					export const useStore = store.useStore
 | 
				
			||||||
export const useSelector = store.useSelector
 | 
					export const useSelector = store.useSelector
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user