[
  {
    "__docId__": 1,
    "kind": "external",
    "name": "Infinity",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Infinity",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 2,
    "kind": "external",
    "name": "NaN",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~NaN",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 3,
    "kind": "external",
    "name": "undefined",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~undefined",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 4,
    "kind": "external",
    "name": "null",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~null",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 5,
    "kind": "external",
    "name": "Object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Object",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 6,
    "kind": "external",
    "name": "object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~object",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 7,
    "kind": "external",
    "name": "Function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Function",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 8,
    "kind": "external",
    "name": "function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~function",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 9,
    "kind": "external",
    "name": "Boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Boolean",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 10,
    "kind": "external",
    "name": "boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~boolean",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 11,
    "kind": "external",
    "name": "Symbol",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Symbol",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 12,
    "kind": "external",
    "name": "Error",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Error",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 13,
    "kind": "external",
    "name": "EvalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~EvalError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 14,
    "kind": "external",
    "name": "InternalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~InternalError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 15,
    "kind": "external",
    "name": "RangeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~RangeError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 16,
    "kind": "external",
    "name": "ReferenceError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~ReferenceError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 17,
    "kind": "external",
    "name": "SyntaxError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~SyntaxError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 18,
    "kind": "external",
    "name": "TypeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~TypeError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 19,
    "kind": "external",
    "name": "URIError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~URIError",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 20,
    "kind": "external",
    "name": "Number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Number",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 21,
    "kind": "external",
    "name": "number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~number",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 22,
    "kind": "external",
    "name": "Date",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Date",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 23,
    "kind": "external",
    "name": "String",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~String",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 24,
    "kind": "external",
    "name": "string",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~string",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 25,
    "kind": "external",
    "name": "RegExp",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~RegExp",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 26,
    "kind": "external",
    "name": "Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 27,
    "kind": "external",
    "name": "Int8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Int8Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 28,
    "kind": "external",
    "name": "Uint8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint8Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 29,
    "kind": "external",
    "name": "Uint8ClampedArray",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint8ClampedArray",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 30,
    "kind": "external",
    "name": "Int16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Int16Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 31,
    "kind": "external",
    "name": "Uint16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint16Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 32,
    "kind": "external",
    "name": "Int32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Int32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 33,
    "kind": "external",
    "name": "Uint32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Uint32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 34,
    "kind": "external",
    "name": "Float32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Float32Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 35,
    "kind": "external",
    "name": "Float64Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Float64Array",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 36,
    "kind": "external",
    "name": "Map",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Map",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 37,
    "kind": "external",
    "name": "Set",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Set",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 38,
    "kind": "external",
    "name": "WeakMap",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~WeakMap",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 39,
    "kind": "external",
    "name": "WeakSet",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~WeakSet",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 40,
    "kind": "external",
    "name": "ArrayBuffer",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~ArrayBuffer",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 41,
    "kind": "external",
    "name": "DataView",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~DataView",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 42,
    "kind": "external",
    "name": "JSON",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~JSON",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 43,
    "kind": "external",
    "name": "Promise",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Promise",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 44,
    "kind": "external",
    "name": "Generator",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Generator",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 45,
    "kind": "external",
    "name": "GeneratorFunction",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~GeneratorFunction",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 46,
    "kind": "external",
    "name": "Reflect",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Reflect",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 47,
    "kind": "external",
    "name": "Proxy",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
    "memberof": "lib/.external-ecmascript.js",
    "static": true,
    "longname": "lib/.external-ecmascript.js~Proxy",
    "access": "public",
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 48,
    "kind": "file",
    "name": "lib/Store.js",
    "content": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Store = void 0;\n/**\n * Created by sam_g on 2/7/2017.\n */\nvar _ = require(\"lodash\");\n// import * as areEqual from 'fbjs/lib/areEqual';s\n/** Simple data store with history recording and on change callbacks */\nvar Store = /** @class */ (function () {\n    /***\n     * Creates a store and sets its initial state to the optional value passed in\n     * @param state\n     */\n    function Store(state) {\n        /***\n         *\n         * @ignore\n         * @type {any[]}\n         * @private\n         */\n        this._boundStates = [];\n        this.maxHistoryLength = 32;\n        /** @private {function[]} */\n        this.onChangeCallbacks = {\n            __anyChange: []\n        };\n        /** @property {object} [state={}] state - An object that represents the present state */\n        this.state = state || {};\n        /** @private */ // @ts-ignore\n        this.state.__time = Date.now();\n        /** @private An array of states from the first to the last, excluding the present state */\n        this.stateHistory = [];\n    }\n    /**\n     * Get an array of states from the first to the last\n     * @return {object[]} An array of states\n     */\n    Store.prototype.getFullHistory = function () {\n        return _.concat(this.stateHistory, [this.state]);\n    };\n    /**\n     * Trims the history down to the last 'x' number of entries\n     * @param {number} length - max number of state history entries\n     */\n    Store.prototype.trimHistory = function (length) {\n        if (length === void 0) { length = 32; }\n        this.stateHistory = this.stateHistory.slice(-length);\n    };\n    /***\n     * Automaticly updates the state of stateParent\n     * @example <caption>Binding to a React component</caption>\n     * componentDidMount(){\n     *     // Don't forget to unbind on unmount\n     *     mainStore.bindState(this);\n     * }\n     * @param stateParent\n     * @param {function} mapping - (string)=>string\n     * @param {boolean} forward\n     */\n    Store.prototype.bindState = function (stateParent, mapping, forward) {\n        if (forward === void 0) { forward = true; }\n        this._boundStates.push({ boundState: stateParent, mapper: mapping });\n        if (forward)\n            this.forwardState(stateParent);\n    };\n    /***\n     * Unbinds the state of stateParent\n     * @example <caption>Unbinding to a React component</caption>\n     * componentWillUnmount(){\n     *     mainStore.unbindState(this);\n     * }\n     * @param stateParent\n     */\n    Store.prototype.unbindState = function (stateParent) {\n        var index = -1;\n        var boundStates = this._boundStates;\n        for (var i = 0; i < boundStates.length; i++) {\n            if (boundStates[i].boundState === stateParent)\n                index = i;\n        }\n        if (index > -1) {\n            boundStates.splice(index, 1);\n        }\n    };\n    Store.prototype.forwardState = function (receivingStateParent, mapping) {\n        var _this = this;\n        // the new state that will be transferred to the receiving state\n        var newState = {};\n        var receivingKeys = Object.keys(receivingStateParent.state);\n        // Loop through all of the values in this store's state\n        Object.keys(this.state).forEach(function (key) {\n            // Map the sender's key to the receiver\n            var mappedKey = mapping ? mapping(key) : key;\n            // If the mappedKey can be found in the receiver add the value to the new state\n            if (receivingKeys.indexOf(mappedKey) != -1)\n                newState[mappedKey] = _this.state[key];\n        });\n        // Send the new state to the receiving store\n        receivingStateParent.setState(newState);\n    };\n    Store.prototype.forwardToBoundStates = function () {\n        var _this = this;\n        this._boundStates.forEach(function (info) { return _this.forwardState(info.boundState, info.mapper); });\n    };\n    /**\n     * Get the previous state of the store\n     * @return {object} previous state\n     */\n    Store.prototype.getPreviousState = function () {\n        var index = this.stateHistory.length - 1;\n        return this.stateHistory[index];\n    };\n    /**\n     * Set the store's state and optionally save the last state to history\n     * @param {object} newState\n     * @param {boolean} historyMode\n     * @example <caption>Set state and record previous state to history</caption>\n     * myStore.setState({userName: \"John Doe\"});\n     * @example <caption>Set state and forget about recording previous state to history</caption>\n     * myStore.setState({userName: \"Billy Bob\", false});\n     */\n    Store.prototype.setState = function (newState, historyMode) {\n        var _this = this;\n        if (historyMode === void 0) { historyMode = true; }\n        // Save the old state\n        var oldState = this.state;\n        // Update the state\n        this.state = _.assign({}, oldState, newState);\n        var changes = Store.getChangeList(oldState, this.state);\n        this.trimHistory(this.maxHistoryLength);\n        // Loop through list of changes and trigger their respective callbacks\n        changes.forEach(function (o) {\n            // Get the name of the changed property\n            var property = o.property;\n            // Get the new and old values of the property\n            var newProperty = _this.state[property];\n            var oldProperty = oldState[property];\n            // Trigger the property's callback\n            _this._triggerChangeCallbacks(property, newProperty, oldProperty);\n        });\n        if (changes.length) {\n            // @ts-ignore\n            this.state.__time = Date.now();\n            if (historyMode == true) {\n                this.stateHistory.push(oldState);\n            }\n            this._triggerChangeCallbacks(\"__anyChange\", this.state, oldState);\n            this.forwardToBoundStates();\n        }\n    };\n    /**\n     * Subscribe to changes in the state\n     * @param {function(newValue: *, oldValue: *)} callback\n     * @param {string} property - Name of the property to watch\n     * @example <caption>Trigger callback when userName is updated</caption>\n     * myStore.subscribeToChanges((newVal)=>{ console.log(\"userName changed to...\", newVal)}, \"userName\");\n     */\n    Store.prototype.subscribeToChanges = function (callback, property) {\n        if (property === void 0) { property = \"__anyChange\"; }\n        if (this.onChangeCallbacks[property] == undefined)\n            this.onChangeCallbacks[property] = [];\n        if (typeof callback != \"function\") {\n            console.error(\"Callback given is not a function as expected\");\n        }\n        else {\n            this.onChangeCallbacks[property].push(callback);\n        }\n    };\n    /**\n     * Remove subscription to changes in the state\n     * @param {function} callback\n     * @param {string} property - Name of the property to unsubscribe from\n     */\n    Store.prototype.unSubscribeToChanges = function (callback, property) {\n        if (property === void 0) { property = \"__anyChange\"; }\n        var callbackList = this.onChangeCallbacks[property];\n        if (callbackList == undefined)\n            return;\n        this.onChangeCallbacks[property] = _.pull(callbackList, callback);\n    };\n    /**\n     *\n     * @param {object} oldState\n     * @param {object} newState\n     * @return {Array}\n     */\n    Store.getChangeList = function (oldState, newState) {\n        // Loop through state properties looking for changes\n        var changes = [];\n        for (var property in newState) {\n            var newProperty = newState[property];\n            var oldProperty = oldState[property];\n            if (property == \"__time\")\n                continue;\n            // Generate change list\n            if (!_.isEqual(newProperty, oldProperty)) {\n                changes.push({\n                    property: property,\n                    isNew: oldProperty == undefined || oldProperty == null\n                });\n            }\n        }\n        return changes;\n    };\n    /**\n     * Returns difference between two states in human-readable form\n     * @param {object} oldState\n     * @param {object} newState\n     * @return {string}\n     */\n    Store.getChangeLog = function (oldState, newState) {\n        var changes = this.getChangeList(oldState, newState);\n        var log = changes.map(function (o) {\n            if (o.isNew)\n                return \"Added new property \\\"\".concat(o.property, \"\\\"\");\n            else\n                return \"Changed value of \\\"\".concat(o.property, \"\\\"\");\n        });\n        return log.join(\"\\n\");\n    };\n    // TODO: Should this be private\n    /***\n     *\n     * @ignore\n     * @param property\n     * @param newValue\n     * @param oldValue\n     * @private\n     */\n    Store.prototype._triggerChangeCallbacks = function (property, newValue, oldValue) {\n        if (!this.onChangeCallbacks[property])\n            return;\n        this.onChangeCallbacks[property].forEach(function (callback) { return callback(newValue, oldValue, property); });\n    };\n    /**\n     * Returns change log of entire history in human-readable form\n     * @return {string}\n     */\n    Store.prototype.getChangeLog = function () {\n        var fullHistory = this.getFullHistory();\n        var changes = [];\n        fullHistory.forEach(function (o, i) {\n            if (i == 0)\n                return;\n            changes.push(Store.getChangeLog(fullHistory[i - 1], o));\n        });\n        return changes.join(\"\\n------------\\n\");\n    };\n    return Store;\n}());\nexports.Store = Store;\nexports.default = Store;\n//# sourceMappingURL=Store.js.map",
    "static": true,
    "longname": "/home/samuelsylvester/Projects/acid-reflux-js/lib/Store.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 49,
    "kind": "variable",
    "name": "_",
    "memberof": "lib/Store.js",
    "static": true,
    "longname": "lib/Store.js~_",
    "access": "private",
    "export": false,
    "importPath": "acid-reflux-js/lib/Store.js",
    "importStyle": null,
    "description": "Created by sam_g on 2/7/2017.",
    "lineNumber": 7,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 50,
    "kind": "variable",
    "name": "Store",
    "memberof": "lib/Store.js",
    "static": true,
    "longname": "lib/Store.js~Store",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js/lib/Store.js",
    "importStyle": null,
    "description": "Simple data store with history recording and on change callbacks",
    "lineNumber": 10,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 51,
    "kind": "file",
    "name": "lib/hooks/useAcidRefluxValue.js",
    "content": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useAcidRefluxValue = void 0;\nvar useStoreValue_1 = require(\"./useStoreValue\");\n/***\n * @deprecated use useStoreValue(...) instead\n */\nvar useAcidRefluxValue = useStoreValue_1.useStoreValue;\nexports.useAcidRefluxValue = useAcidRefluxValue;\n//# sourceMappingURL=useAcidRefluxValue.js.map",
    "static": true,
    "longname": "/home/samuelsylvester/Projects/acid-reflux-js/lib/hooks/useAcidRefluxValue.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 52,
    "kind": "variable",
    "name": "useStoreValue_1",
    "memberof": "lib/hooks/useAcidRefluxValue.js",
    "static": true,
    "longname": "lib/hooks/useAcidRefluxValue.js~useStoreValue_1",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js/lib/hooks/useAcidRefluxValue.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 53,
    "kind": "variable",
    "name": "useAcidRefluxValue",
    "memberof": "lib/hooks/useAcidRefluxValue.js",
    "static": true,
    "longname": "lib/hooks/useAcidRefluxValue.js~useAcidRefluxValue",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js/lib/hooks/useAcidRefluxValue.js",
    "importStyle": null,
    "description": "",
    "lineNumber": 8,
    "deprecated": "use useStoreValue(...) instead",
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 54,
    "kind": "file",
    "name": "lib/hooks/useStoreState.js",
    "content": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useStoreState = void 0;\nvar react_1 = require(\"react\");\n/**\n *\n * @param store Store to subscribe to\n * @param valueName Name of the state value to subscribe to\n * @returns [Selected value, setter]\n */\nfunction useStoreState(store, valueName) {\n    // Make sure store is passed in\n    if (!store) {\n        console.error(\"Store passed in is undefined, failed to bind to \".concat(valueName.toString()));\n    }\n    var currentValue = store.state[valueName];\n    // Setup state to trigger updates when changes happen\n    var _a = (0, react_1.useState)(currentValue), value = _a[0], setValue = _a[1];\n    //\n    var storeSetter = (0, react_1.useCallback)(function (newValue) {\n        var newState = {};\n        newState[valueName] = newValue;\n        store.setState(newState);\n    }, [store, valueName]);\n    // Use effect to subscribe to the store's selected value's changes\n    (0, react_1.useEffect)(function () {\n        // Store or valueName has changed, update state\n        setValue(currentValue);\n        //\n        store.subscribeToChanges(setValue, valueName.toString());\n        return function () {\n            //\n            store.unSubscribeToChanges(setValue, valueName.toString());\n        };\n    }, [setValue, valueName, store]);\n    return [value, storeSetter];\n}\nexports.useStoreState = useStoreState;\n//# sourceMappingURL=useStoreState.js.map",
    "static": true,
    "longname": "/home/samuelsylvester/Projects/acid-reflux-js/lib/hooks/useStoreState.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 55,
    "kind": "variable",
    "name": "react_1",
    "memberof": "lib/hooks/useStoreState.js",
    "static": true,
    "longname": "lib/hooks/useStoreState.js~react_1",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js/lib/hooks/useStoreState.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 56,
    "kind": "function",
    "name": "useStoreState",
    "memberof": "lib/hooks/useStoreState.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/hooks/useStoreState.js~useStoreState",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js/lib/hooks/useStoreState.js",
    "importStyle": null,
    "description": "",
    "lineNumber": 11,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "[Selected value, setter]"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "store",
        "description": "Store to subscribe to"
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "valueName",
        "description": "Name of the state value to subscribe to"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "[Selected value, setter]"
    },
    "ignore": true
  },
  {
    "__docId__": 57,
    "kind": "file",
    "name": "lib/hooks/useStoreValue.js",
    "content": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useStoreValue = void 0;\nvar react_1 = require(\"react\");\n/**\n *\n * @param store Store to subscribe to\n * @param valueName Name of the state value to subscribe to\n * @returns Selected value\n */\nfunction useStoreValue(store, valueName) {\n    // Make sure store is passed in\n    if (!store) {\n        console.error(\"Store passed in is undefined, failed to bind to \".concat(valueName.toString()));\n    }\n    var currentValue = store.state[valueName];\n    // Setup state to trigger updates when changes happen\n    var _a = (0, react_1.useState)(currentValue), value = _a[0], setValue = _a[1];\n    // Use effect to subscribe to the store's selected value's changes\n    (0, react_1.useEffect)(function () {\n        // Store or valueName has changed, update state\n        setValue(currentValue);\n        //\n        store.subscribeToChanges(setValue, valueName);\n        // Return cleanup func\n        return function () {\n            store.unSubscribeToChanges(setValue, valueName);\n        };\n    }, [setValue, valueName, store]);\n    return value;\n}\nexports.useStoreValue = useStoreValue;\n//# sourceMappingURL=useStoreValue.js.map",
    "static": true,
    "longname": "/home/samuelsylvester/Projects/acid-reflux-js/lib/hooks/useStoreValue.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 58,
    "kind": "variable",
    "name": "react_1",
    "memberof": "lib/hooks/useStoreValue.js",
    "static": true,
    "longname": "lib/hooks/useStoreValue.js~react_1",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js/lib/hooks/useStoreValue.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "__docId__": 59,
    "kind": "function",
    "name": "useStoreValue",
    "memberof": "lib/hooks/useStoreValue.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "lib/hooks/useStoreValue.js~useStoreValue",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js/lib/hooks/useStoreValue.js",
    "importStyle": null,
    "description": "",
    "lineNumber": 11,
    "unknown": [
      {
        "tagName": "@returns",
        "tagValue": "Selected value"
      }
    ],
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "store",
        "description": "Store to subscribe to"
      },
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "valueName",
        "description": "Name of the state value to subscribe to"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "Selected value"
    },
    "ignore": true
  },
  {
    "__docId__": 60,
    "kind": "file",
    "name": "lib/index.js",
    "content": "\"use strict\";\n/**\n * Created by sam_g on 2/7/2017.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Store = void 0;\nvar Store_1 = require(\"./Store\");\nObject.defineProperty(exports, \"Store\", { enumerable: true, get: function () { return Store_1.Store; } });\n//# sourceMappingURL=index.js.map",
    "static": true,
    "longname": "/home/samuelsylvester/Projects/acid-reflux-js/lib/index.js",
    "access": "public",
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 61,
    "kind": "variable",
    "name": "Store_1",
    "memberof": "lib/index.js",
    "static": true,
    "longname": "lib/index.js~Store_1",
    "access": "public",
    "export": false,
    "importPath": "acid-reflux-js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "type": {
      "types": [
        "*"
      ]
    },
    "ignore": true
  },
  {
    "kind": "index",
    "content": "# acid-reflux-js\nA simple library for uni-directional dataflow application architecture... inspired by Flux and Redux\n\n[![npm version](https://badge.fury.io/js/acid-reflux-js.svg)](https://badge.fury.io/js/acid-reflux-js)\n\nSee more in depth docs [here](https://sam-g-steel.github.io/acid-reflux-js/)\n\nExample code...\n\n    var acidRefluxJS = require(\"acid-reflux-js\")\n    \n    // Create store\n    let store = new acidRefluxJS.Store();\n    \n    // Subscribe to changes\n    store.subscribeToChanges((newState, oldState)=>{\n        console.log(\"on any change\", newState)\n    });\n    \n    store.subscribeToChanges((newVal, oldVal)=>{\n        console.log(\"isLoggedIn changed to...\", newVal)\n    }, \"isLoggedIn\");\n    \n    // Set time\n    store.setState({\n        time: Date.now()\n    });\n    \n    // Set time and isLoggedIn\n    store.setState({\n        time: Date.now(),\n        isLoggedIn: true\n    });\n    \n    console.log(\"Full History\", store.getFullHistory());\n    \n#Latest Changes\n\n\n\n**v1.2.0**\n+ Deprecated hook useAcidRefluxValue, use useStoreValue(...) instead\n+ Added useStoreState, returns [value, setValue(...)]\n\n**v1.1.0**\n+ Added hook useAcidRefluxValue\n\n**v1.0.0**\nChanged build dir from /es5 to /lib\nAdded improved TypeScript support\n\n\n**v0.3.2**\nUpdating docs\n\n\n**v0.3.1**\nFixed a bug in the TypeScript definition file\n\n\n**v0.3.0**\n\nAdded state mapping\nMore docs on this later\n\n\n**v0.2.0**\n\nAdded State.maxHistoryLength\nAdded state binding\n\n\n**v0.1.7**\n\nAdded more docs using ESdoc [wip]\n\n\n\n**v0.1.6**\n\nUpdated Change Log functions... internal property \"__time\" is now ignored\n\nLog looks cleaner\n\n\n**v0.1.5**\n\nAdded Change Log functions... More to come in the docs!\n\n\n**v0.1.4**\n\nImproved changed detection, now if a state property changes from one object to another that is identical, no change is registered\n\n#Future Plans\n\n- More Docs\n- State change playback mode\n",
    "longname": "/home/samuelsylvester/Projects/acid-reflux-js/README.md",
    "name": "./README.md",
    "static": true,
    "access": "public"
  },
  {
    "kind": "packageJSON",
    "content": "{\n  \"name\": \"acid-reflux-js\",\n  \"version\": \"1.2.0\",\n  \"description\": \"A simple library for uni-directional dataflow application architecture... inspired by Flux and Redux\",\n  \"main\": \"./lib/index.js\",\n  \"module\": \"./lib/index.js\",\n  \"scripts\": {\n    \"build\": \"tsc -d -w\",\n    \"generate-docs\": \"esdoc -c esdoc.json\",\n    \"test\": \"node ./tests/demo-1.js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/sam-g-steel/acid-reflux-js.git\"\n  },\n  \"keywords\": [\n    \"Store\"\n  ],\n  \"author\": \"Samuel Vincent Sylvester Sr.\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/sam-g-steel/acid-reflux-js/issues\"\n  },\n  \"homepage\": \"https://github.com/sam-g-steel/acid-reflux-js#readme\",\n  \"peerDependencies\": {\n    \"lodash\": \"^4.17.21\"\n  },\n  \"devDependencies\": {\n    \"react\": \"^18.2.0\",\n    \"@types/lodash\": \"^4.14.182\",\n    \"esdoc\": \"^1.1.0\",\n    \"esdoc-ecmascript-proposal-plugin\": \"^1.0.0\",\n    \"esdoc-standard-plugin\": \"^1.0.0\",\n    \"esdoc-typescript-plugin\": \"^1.0.1\",\n    \"typescript\": \"^4.6.3\"\n  }\n}\n",
    "longname": "/home/samuelsylvester/Projects/acid-reflux-js/package.json",
    "name": "package.json",
    "static": true,
    "access": "public"
  }
]