UNPKG

7.39 kBSource Map (JSON)View Raw
1{"version":3,"file":"statty.cjs.min.js","sources":["../node_modules/is-shallow-equal/index.js","../src/state.js","../node_modules/brcast/dist/brcast.es.js","../src/provider.js"],"sourcesContent":["module.exports = function isShallowEqual (a, b) {\n if (a === b) return true\n for (var i in a) if (!(i in b)) return false\n for (var i in b) if (a[i] !== b[i]) return false\n return true\n}\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport shallowEqual from 'is-shallow-equal'\n\nconst isObjectNotNull = (a, b) => {\n return (\n typeof a === 'object' && typeof b === 'object' && a !== null && b !== null\n )\n}\n\nclass State extends Component {\n constructor (props, context) {\n super(props, context)\n this.broadcast = context.__statty__.broadcast\n this.inspect = context.__statty__.inspect\n this.state = props.state\n ? props.state\n : props.select(this.broadcast.getState())\n this.update = this.update.bind(this)\n this.setStateIfNeeded = this.setStateIfNeeded.bind(this)\n }\n\n update (updaterFn) {\n if (this.props.state) {\n this.setState(updaterFn)\n } else {\n const oldState = this.broadcast.getState()\n const nextState = updaterFn(oldState)\n this.inspect && this.inspect(oldState, nextState, updaterFn)\n this.broadcast.setState(nextState)\n }\n }\n\n setStateIfNeeded (nextState) {\n const oldSelectdedState = this.state\n const newSelectedState = this.props.select(nextState)\n if (\n !isObjectNotNull(oldSelectdedState, newSelectedState) ||\n !shallowEqual(oldSelectdedState, newSelectedState)\n ) {\n this.setState(newSelectedState)\n }\n }\n\n componentDidMount () {\n if (!this.props.state) {\n this.subscriptionId = this.broadcast.subscribe(this.setStateIfNeeded)\n // To handle the case where a child component may have triggered a state change in\n // its cWM/cDM, we have to re-run the selector and maybe re-render.\n this.setStateIfNeeded(this.broadcast.getState())\n }\n }\n\n componentWillUnmount () {\n this.subscriptionId && this.broadcast.unsubscribe(this.subscriptionId)\n }\n\n render () {\n return (\n this.props.render(\n this.props.select(\n this.props.state ? this.state : this.broadcast.getState()\n ),\n this.update\n ) || null\n )\n }\n}\n\nState.defaultProps = {\n select: s => s,\n render: () => null\n}\n\nState.contextTypes = {\n __statty__: PropTypes.object.isRequired\n}\n\nState.propTypes = {\n state: PropTypes.object,\n render: PropTypes.func,\n select: PropTypes.func\n}\n\nexport default State\n","function createBroadcast (initialState) {\n var listeners = {};\n var id = 1;\n var _state = initialState;\n\n function getState () {\n return _state\n }\n\n function setState (state) {\n _state = state;\n var keys = Object.keys(listeners);\n var i = 0;\n var len = keys.length;\n for (; i < len; i++) {\n // if a listener gets unsubscribed during setState we just skip it\n if (listeners[keys[i]]) { listeners[keys[i]](state); }\n }\n }\n\n // subscribe to changes and return the subscriptionId\n function subscribe (listener) {\n if (typeof listener !== 'function') {\n throw new Error('listener must be a function.')\n }\n var currentId = id;\n listeners[currentId] = listener;\n id += 1;\n return currentId\n }\n\n // remove subscription by removing the listener function\n function unsubscribe (id) {\n listeners[id] = undefined;\n }\n\n return { getState: getState, setState: setState, subscribe: subscribe, unsubscribe: unsubscribe }\n}\n\nexport default createBroadcast;\n","import { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport brcast from 'brcast'\n\nclass Provider extends Component {\n constructor (props, context) {\n super(props, context)\n this.broadcast = brcast(props.state)\n }\n\n getChildContext () {\n return {\n __statty__: {\n broadcast: this.broadcast,\n inspect: this.props.inspect\n }\n }\n }\n\n render () {\n const children = this.props.children\n return Array.isArray(children) ? children[0] : children\n }\n}\n\nProvider.childContextTypes = {\n __statty__: PropTypes.object\n}\n\nProvider.propTypes = {\n inspect: PropTypes.func,\n state: PropTypes.object.isRequired,\n children: PropTypes.node.isRequired\n}\n\nexport default Provider\n"],"names":["a","b","i","isObjectNotNull","State","props","context","super","this","broadcast","__statty__","inspect","state","select","getState","update","bind","setStateIfNeeded","updaterFn","setState","const","oldState","nextState","oldSelectdedState","newSelectedState","shallowEqual","componentDidMount","subscriptionId","subscribe","componentWillUnmount","unsubscribe","render","Component","createBroadcast","initialState","listeners","id","_state","keys","Object","len","length","listener","Error","currentId","undefined","defaultProps","s","contextTypes","PropTypes","object","isRequired","propTypes","func","Provider","brcast","getChildContext","children","Array","isArray","childContextTypes","node"],"mappings":"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"}
\No newline at end of file