{"version":3,"file":"Frameworks/JsonYatta.coffee","names":[],"mappings":"","sources":["Frameworks/JsonYatta.coffee"],"sourcesContent":["\njson_types_uninitialized = require \"../Types/JsonTypes\"\nHistoryBuffer = require \"../HistoryBuffer\"\nEngine = require \"../Engine\"\n\n#\n# Framework for Json data-structures.\n# Known values that are supported:\n# * String\n# * Integer\n# * Array\n#\nclass JsonYatta\n\n  #\n  # @param {String} user_id Unique id of the peer.\n  # @param {Connector} Connector the connector class.\n  #\n  constructor: (user_id, Connector)->\n    @HB = new HistoryBuffer user_id\n    json_types = json_types_uninitialized @HB\n    @engine = new Engine @HB, json_types.parser\n    @connector = new Connector @engine, @HB, json_types.execution_listener, @\n\n    first_word = new json_types.types.JsonType @HB.getReservedUniqueIdentifier()\n    @HB.addOperation(first_word).execute()\n    @root_element = first_word\n\n  #\n  # @result JsonType\n  #\n  getRootElement: ()->\n    @root_element\n\n  #\n  # @see Engine\n  #\n  getEngine: ()->\n    @engine\n\n  #\n  # Get the initialized connector.\n  #\n  getConnector: ()->\n    @connector\n\n  #\n  # @see HistoryBuffer\n  #\n  getHistoryBuffer: ()->\n    @HB\n\n  #\n  # @see JsonType.setMutableDefault\n  #\n  setMutableDefault: (mutable)->\n    @root_element.setMutableDefault(mutable)\n\n  #\n  # Get the UserId from the HistoryBuffer object.\n  # In most cases this will be the same as the user_id value with which\n  # JsonYatta was initialized (Depending on the HistoryBuffer implementation).\n  #\n  getUserId: ()->\n    @HB.getUserId()\n\n  #\n  # @see JsonType.val\n  #\n  val : (name, content, mutable)->\n    @root_element.val(name, content, mutable)\n\n  #\n  # @see JsonType.value\n  #\n  Object.defineProperty JsonYatta.prototype, 'value',\n    get : -> @root_element.value\n    set : (o)->\n      if o.constructor is {}.constructor\n        for o_name,o_obj of o\n          @val(o_name, o_obj, 'immutable')\n      else\n        throw new Error \"You must only set Object values!\"\nwindow?.JsonYatta = JsonYatta\nmodule.exports = JsonYatta\n"],"sourceRoot":"/source/"}