{"id":0,"registry":{"0":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":1},"_ClipMode":"visible","derivationIds":["CFDFE794-C1EA-459F-8ACF-C2926E7204F8","8FE8A1F2-7A34-491D-B7CE-A33EAB2A42A0","828A8A99-4F3D-4E48-8170-9748672D3187"],"id":"6F8EF5C0-0051-497A-B487-E8B06747FA55","droppingEnabled":false,"halosEnabled":true,"_adaptCanvasSizeHTMLInProgress":false,"attributeConnections":[{"__isSmartRef__":true,"id":2}],"eventHandler":{"__isSmartRef__":true,"id":4},"_Rotation":0,"_Scale":1,"showsHalos":false,"name":"ChunkCanvas","partsBinMetaInfo":{"__isSmartRef__":true,"id":5},"_canvasSerializationDataURI":"data:image/png;base64,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","doNotSerialize":["whenOpenedInWorldCallbacks"],"__serializedExpressions__":["_Position","distanceToDragEvent"],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":10},"__LivelyClassName__":"lively.morphic.CanvasMorph","__SourceModuleName__":"Global.lively.morphic.AdditionalMorphs","_Position":"lively.pt(0.0,0.0)","distanceToDragEvent":"lively.pt(196.0,13.0)"},"1":{"_BorderWidth":0,"_BorderColor":null,"_Fill":null,"stringifiedShapeNode":"<canvas xmlns=\"http://www.w3.org/1999/xhtml\" data-lively-morphid=\"6F8EF5C0-0051-497A-B487-E8B06747FA55\" width=\"300\" height=\"300\" class=\"Morph CanvasMorph\" id=\"null\" style=\"overflow: visible; border: 0px solid rgba(0, 0, 0, 0); padding: 0px; width: 300px; height: 300px;\"></canvas>","__serializedExpressions__":["_Padding","_Extent","extent"],"__LivelyClassName__":"lively.morphic.Shapes.External","__SourceModuleName__":"Global.lively.morphic.Shapes","_Padding":"lively.rect(0,0,0,0)","_Extent":"lively.pt(300.0,300.0)","extent":"lively.pt(300.0,300.0)"},"2":{"sourceObj":{"__isSmartRef__":true,"id":0},"sourceAttrName":"showHalos","targetObj":{"__isSmartRef__":true,"id":0},"targetMethodName":"modifyHalos","varMapping":{"__isSmartRef__":true,"id":3},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings.Core"},"3":{"source":{"__isSmartRef__":true,"id":0},"target":{"__isSmartRef__":true,"id":0}},"4":{"morph":{"__isSmartRef__":true,"id":0},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"5":{"partName":"ChunkCanvas","requiredModules":[],"partsSpaceName":"PartsBin/Astrid/","comment":"canvas prepared to receive strokes from a canvas that are supposed to be exported - either to move and re-integrate them into the history or to become self-sufficient morphs that can be sripted or re-integrated in to other canvasses. The InteractiveDrawingCavnasMorph uses these Canvasses.","changes":[{"__isSmartRef__":true,"id":6},{"__isSmartRef__":true,"id":7},{"__isSmartRef__":true,"id":8},{"__isSmartRef__":true,"id":9}],"migrationLevel":9,"__serializedExpressions__":["lastModifiedDate"],"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin","lastModifiedDate":"new Date(\"Mon Dec 08 2014 11:57:48 GMT-0800 (PST)\")"},"6":{"author":"athomschke","message":"including full bounds to add to canvas","id":"0277CC70-6739-4163-8F94-1CB3E68F360C","__serializedExpressions__":["date"],"date":"new Date(\"Mon Dec 08 2014 11:57:47 GMT-0800 (PST)\")"},"7":{"author":"athomschke","message":"allowed close halo","id":"BCB43287-315D-4F5D-8E8E-ACEEDB29A244","__serializedExpressions__":["date"],"date":"new Date(\"Mon Dec 08 2014 11:42:24 GMT-0800 (PST)\")"},"8":{"author":"athomschke","message":"add to any canvas containing bounds","id":"0C12F2B1-6D6B-4682-9366-881BE28D1981","__serializedExpressions__":["date"],"date":"new Date(\"Mon Dec 08 2014 11:52:11 GMT-0800 (PST)\")"},"9":{"__serializedExpressions__":["date"],"author":"athomschke","message":"no more changing the halos","id":"7DB1421A-8F1B-4C95-B748-00C865C51790","date":"new Date(\"Mon Dec 08 2014 12:21:27 GMT-0800 (PST)\")"},"10":{"beNormalCanvas":{"__isSmartRef__":true,"id":11},"onToggleHalos":{"__isSmartRef__":true,"id":14},"tryAddToCanvas":{"__isSmartRef__":true,"id":17},"getHaloClasses":{"__isSmartRef__":true,"id":20},"modifyHalos":{"__isSmartRef__":true,"id":27}},"11":{"varMapping":{"__isSmartRef__":true,"id":12},"source":"function beNormalCanvas() {\n        if (this.getHaloClasses.hasLivelyClosure) {\n            this.getHaloClasses = this.constructor.prototype.getHaloClasses;\n        }\n        Global.disconnect(this, 'showsHalos', this, 'onToggleHalos');\n        delete this.onToggleHalos;\n        delete this.drawingCanvas;\n        delete this.modifyScriptEditorHalo;\n        Global.disconnect(this, 'showsHalos', this, 'modifyScriptEditorHalo');\n    }","funcProperties":{"__isSmartRef__":true,"id":13},"__LivelyClassName__":"lively.Closure"},"12":{"this":{"__isSmartRef__":true,"id":0}},"13":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Dec 08 2014 11:40:29 GMT-0800 (PST)\")"},"14":{"varMapping":{"__isSmartRef__":true,"id":15},"source":"function onToggleHalos(bool) {\n        if (bool) {\n            this.onToggleHalosTimeout = Global.clearTimeout(this.onToggleHalosTimeout);\n        } else {\n            this.onToggleHalosTimeout = this.onToggleHalosTimeout ||\n                Global.setTimeout(function() {\n                    if (!this.tryAddToCanvas()) {\n                        // become a normal canvas\n                        this.beNormalCanvas();\n                    }\n                }.bind(this),1);\n        }\n    }","funcProperties":{"__isSmartRef__":true,"id":16},"__LivelyClassName__":"lively.Closure"},"15":{"this":{"__isSmartRef__":true,"id":0}},"16":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Dec 08 2014 11:40:29 GMT-0800 (PST)\")"},"17":{"varMapping":{"__isSmartRef__":true,"id":18},"source":"function tryAddToCanvas() {\n    var maybe = $world.morphsContainingPoint(this.bounds().topLeft())\n        .concat($world.morphsContainingPoint(this.bounds().bottomRight()))\n        .concat($world.morphsContainingPoint(this.bounds().bottomLeft()))\n        .concat($world.morphsContainingPoint(this.bounds().topRight()))\n        .find(function(morph) { return morph instanceof Global.DrawingCanvasMorph});\n    if (maybe && maybe.history) {\n        maybe.addStrokesFromCanvas(this, maybe === this.drawingCavnas ?\n                this.index : maybe.history.length-1);\n        this.remove();\n        return true\n    }\n    return false\n}","funcProperties":{"__isSmartRef__":true,"id":19},"__LivelyClassName__":"lively.Closure"},"18":{"this":{"__isSmartRef__":true,"id":0}},"19":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Dec 08 2014 11:57:07 GMT-0800 (PST)\")"},"20":{"varMapping":{"__isSmartRef__":true,"id":21},"source":"function getHaloClasses() {\n        var classes = $super()\n        return classes\n            .without(lively.morphic.GrabHalo)\n            .without(lively.morphic.CopyHalo)\n            .without(lively.morphic.ResizeHalo)\n            .without(lively.morphic.StyleHalo)\n            .without(lively.morphic.InspectHalo)\n            .without(lively.morphic.MenuHalo)\n            .without(lively.morphic.OriginHalo);\n    }","funcProperties":{"__isSmartRef__":true,"id":26},"__LivelyClassName__":"lively.Closure"},"21":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":22}},"22":{"$super":{"__isSmartRef__":true,"id":23}},"23":{"varMapping":{"__isSmartRef__":true,"id":24},"source":"function () {\n        try {\n          // FIXME super is supposed to be static\n          return Object.getPrototypeOf(obj)[name].apply(obj, arguments);\n        } catch (e) {\n          if (typeof $world !== undefined) $world.logError(e, 'Error in $super call')\n          else alert('Error in $super call: ' + e + '\\n' + e.stack);\n          return null;\n        }\n      }","funcProperties":{"__isSmartRef__":true,"id":25},"__LivelyClassName__":"lively.Closure"},"24":{"obj":{"__isSmartRef__":true,"id":0},"name":"getHaloClasses"},"25":{},"26":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Dec 08 2014 11:40:29 GMT-0800 (PST)\")"},"27":{"varMapping":{"__isSmartRef__":true,"id":28},"source":"function modifyHalos() {\n    if (this.halos) {\n        var scriptHalo = this.halos.find(function(halo) {\n                return halo instanceof lively.morphic.ScriptEditorHalo\n            });\n        if (scriptHalo) {\n            Global.connect(scriptHalo, 'clickAction', this, 'beNormalCanvas', {\n                removeAfterUpdate: true\n            });\n        }\n        var closeHalo = this.halos.find(function(halo) {\n                return halo instanceof lively.morphic.CloseHalo\n            });\n        if (closeHalo) {\n            Global.connect(closeHalo, 'clickAction', this, 'beNormalCanvas', {\n                removeAfterUpdate: true\n            });\n        }\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":29},"__LivelyClassName__":"lively.Closure"},"28":{"this":{"__isSmartRef__":true,"id":0}},"29":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Mon Dec 08 2014 12:21:06 GMT-0800 (PST)\")"},"isSimplifiedRegistry":true}}