{"shas":[["cc965c38271b745ce2feaa148385ac1e854ed9d2","80a4591a911242c9fa599aed77b85cda981a27b8@samskivert.com","Refactored shared listener list and notification code into Reactor/Cons.","Michael Bayne"],["8177822b6d0472c11d574816387dd4d5cdc97d76","80a4591a911242c9fa599aed77b85cda981a27b8@samskivert.com","Added areEqual(), made use of it. Tweaked internal value updating API.","Michael Bayne"],["4ee66430899a61cb9c4f7f1cba776ff9ac12f959","80a4591a911242c9fa599aed77b85cda981a27b8@samskivert.com","Added MappedValueView to allow removal of mapped value listeners.","Michael Bayne"],["eca0561c4ab7188dfd6ff13219a668568012d089","80a4591a911242c9fa599aed77b85cda981a27b8@samskivert.com","Added a reactive Map implementation.\n\nNote containsKeyView() and getView(), which are awesome. They will allow you\nto do things like:\n\n  gameObj.scores.getView(p1key).map(Functions.TO_STRING).\n    connect(scoreLabel1.textSlot());\n\nwhich will extract the score for player 1 from the scores map, convert it to a\nstring and bind it to a label in the user interface, such that when the score\nchanges in the distributed object, the label automatically changes.","Michael Bayne"]],"ref":"refs/heads/master","size":4,"head":"eca0561c4ab7188dfd6ff13219a668568012d089","push_id":39301927}