|  | @@ -1,6 +1,10 @@
 | 
	
		
			
				|  |  |  define("amber/helpers", ["amber_vm/smalltalk", "amber_vm/globals", "require"], function (vm, globals, require) {
 | 
	
		
			
				|  |  |      var exports = Object.create(globals);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    var storage = (function (global) {
 | 
	
		
			
				|  |  | +        return 'localStorage' in global && global.localStorage;
 | 
	
		
			
				|  |  | +    })(new Function('return this')());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // API
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      exports.popupHelios = function () {
 | 
	
	
		
			
				|  | @@ -15,13 +19,36 @@ define("amber/helpers", ["amber_vm/smalltalk", "amber_vm/globals", "require"], f
 | 
	
		
			
				|  |  |          enumerable: true, configurable: true, writable: false
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      exports.initialize = function (options) {
 | 
	
		
			
				|  |  | -        options = options || {};
 | 
	
		
			
				|  |  | +        var settings = globals.SmalltalkSettings;
 | 
	
		
			
				|  |  | +        function mixinToSettings(source) {
 | 
	
		
			
				|  |  | +            Object.keys(source).forEach(function (key) {
 | 
	
		
			
				|  |  | +                settings[key] = source[key];
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        settings['vm.defaultAmdNamespace'] = vm.defaultAmdNamespace;
 | 
	
		
			
				|  |  | +        if (storage) {
 | 
	
		
			
				|  |  | +            var fromStorage;
 | 
	
		
			
				|  |  | +            try {
 | 
	
		
			
				|  |  | +                fromStorage = JSON.parse(storage.getItem('amber.SmalltalkSettings'));
 | 
	
		
			
				|  |  | +            } catch (ex) {
 | 
	
		
			
				|  |  | +                // pass
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            mixinToSettings(fromStorage || {});
 | 
	
		
			
				|  |  | +            if (typeof window !== "undefined") {
 | 
	
		
			
				|  |  | +                requirejs(['jquery'], function ($) {
 | 
	
		
			
				|  |  | +                    $(window).on('beforeunload', function () {
 | 
	
		
			
				|  |  | +                       storage.setItem('amber.SmalltalkSettings', JSON.stringify(globals.SmalltalkSettings));
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if (exports.defaultAmdNamespace) {
 | 
	
		
			
				|  |  | -            console.warn("`smalltalk.defaultAmdNamespace = 'namespace';` is deprecated. Please use `smalltalk.initialize({defaultAmdNamespace: 'namespace'});` instead.");
 | 
	
		
			
				|  |  | -            options.defaultAmdNamespace = options.defaultAmdNamespace || exports.defaultAmdNamespace;
 | 
	
		
			
				|  |  | +            console.warn("`smalltalk.defaultAmdNamespace = 'namespace';` is deprecated. Please use `smalltalk.initialize({'vm.defaultAmdNamespace': 'namespace'});` instead.");
 | 
	
		
			
				|  |  | +            settings['vm.defaultAmdNamespace'] = settings['vm.defaultAmdNamespace'] || exports.defaultAmdNamespace;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        vm.defaultAmdNamespace = options.defaultAmdNamespace || vm.defaultAmdNamespace;
 | 
	
		
			
				|  |  | +        mixinToSettings(options);
 | 
	
		
			
				|  |  |          console.warn("smalltalk.ClassName is deprecated. Please  use smalltalk.globals.ClassName instead.");
 | 
	
		
			
				|  |  | +        globals.SmalltalkSettings = settings;
 | 
	
		
			
				|  |  |          return vm.initialize();
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 |