From 884385ab3deeb776d247eb8d05709be866b8491d Mon Sep 17 00:00:00 2001 From: Mario Schreiner Date: Thu, 12 Feb 2015 18:13:38 +0100 Subject: [PATCH] Started reworking debug Finally got around to improve debugging a little: - log priority has been renamed to log level - the debug settings (DEBUG preprocessor flag and MAX_LOG_LEVEL in CWDebug) are passed to the web library - the web library passes the debug information to a remote once it has connected, so all devices use the same settings - the web library doesn't rely on the native layer to filter by level anymore, but rather does it itself. This prevents unnecessary log messages on native-less remotes - CWDebug.err is now forwareded to ErrLog() in Objective-C, this way we make sure errors are always logged regardless of settings --- .../libwebsockets/libwebsockets.c | 24 +++--- Connichiwa/CWDebug.h | 22 ++++- Connichiwa/CWDebug.m | 17 ++-- Connichiwa/CWUtil.m | 6 +- Connichiwa/CWWebLibraryManager.m | 24 +++--- Connichiwa/GCDWebServer/Core/GCDWebServer.m | 24 +++--- ConnichiwaResources/weblib/connichiwa.js | 81 +++++++++---------- ConnichiwaResources/weblib/connichiwa.min.js | 4 +- .../weblib/connichiwa.min.js.map | 2 +- ConnichiwaResources/weblib/remote.js | 76 ++++++++--------- ConnichiwaResources/weblib/remote.min.js | 2 +- ConnichiwaResources/weblib/remote.min.js.map | 2 +- .../weblib_source/common/CWDebug.js | 78 +++++++++--------- .../master/CWNativeMasterCommunication.js | 7 +- .../master/CWWebsocketMessageParser.js | 5 +- .../remote/CWWebsocketMessageParser.js | 6 ++ 16 files changed, 202 insertions(+), 178 deletions(-) diff --git a/Connichiwa/BLWebSocketsServer/libwebsockets/libwebsockets.c b/Connichiwa/BLWebSocketsServer/libwebsockets/libwebsockets.c index 5e1ac6c..f39c2a5 100755 --- a/Connichiwa/BLWebSocketsServer/libwebsockets/libwebsockets.c +++ b/Connichiwa/BLWebSocketsServer/libwebsockets/libwebsockets.c @@ -2268,18 +2268,18 @@ void lwsl_emit_syslog(int level, const char *line) void _lws_log(int filter, const char *format, ...) { - char buf[256]; - va_list ap; - - if (!(log_level & filter)) - return; - - va_start(ap, format); - vsnprintf(buf, (sizeof buf), format, ap); - buf[(sizeof buf) - 1] = '\0'; - va_end(ap); - - lwsl_emit(filter, buf); +// char buf[256]; +// va_list ap; +// +// if (!(log_level & filter)) +// return; +// +// va_start(ap, format); +// vsnprintf(buf, (sizeof buf), format, ap); +// buf[(sizeof buf) - 1] = '\0'; +// va_end(ap); +// +// lwsl_emit(filter, buf); } /** diff --git a/Connichiwa/CWDebug.h b/Connichiwa/CWDebug.h index cc9a8ca..fa505f6 100644 --- a/Connichiwa/CWDebug.h +++ b/Connichiwa/CWDebug.h @@ -10,14 +10,14 @@ -void cwLogNew(int priority, NSString *source, NSString *file, int line, NSString *format, ...); +void _cwLogNew(int priority, NSString *source, NSString *file, int line, NSString *format, ...); //_CWLog() is a low-level macro that will only log if the CWDEBUG compiler flag is set to 1 //Thanks http://stackoverflow.com/questions/969130/how-to-print-out-the-method-name-and-line-number-and-conditionally-disable-nslog -#ifdef CWDEBUG -# define _CWLog(prio, source, file, line, format, ...) cwLogNew(prio, source, file, line, format, ##__VA_ARGS__) +#ifdef DEBUG +# define _CWLog(prio, source, file, line, format, ...) _cwLogNew(prio, source, file, line, format, ##__VA_ARGS__) #else -# define _CWLog(...) +# define _CWLog(...) //we don't need this but it saves us a method call #endif //CWLog is a higher-level logging macro to be used by the native layer @@ -26,6 +26,18 @@ void cwLogNew(int priority, NSString *source, NSString *file, int line, NSString //BTLog is a higher-level logging macro to be used by BT-related functions in the native layer #define BTLog(prio, format, ...) _CWLog(prio, @"BLUETOOTH", @((strrchr(__FILE__, '/') ? : __FILE__ - 1) + 1), __LINE__, format, ##__VA_ARGS__) +//HTTPLog is a higher-level logging macro to be used by HTTP Server-related functions in the native layer +#define HTTPLog(prio, format, ...) _CWLog(prio, @"HTTP", @((strrchr(__FILE__, '/') ? : __FILE__ - 1) + 1), __LINE__, format, ##__VA_ARGS__) + +//WSLog is a higher-level logging macro to be used by Websocket-related functions in the native layer +#define WSLog(prio, format, ...) _CWLog(prio, @"WEBSOCKET", @((strrchr(__FILE__, '/') ? : __FILE__ - 1) + 1), __LINE__, format, ##__VA_ARGS__) + +//MCLog is a higher-level logging macro to be used by Multipeer Connectivity-related functions in the native layer +#define MCLog(prio, format, ...) _CWLog(prio, @"MULTIPEER", @((strrchr(__FILE__, '/') ? : __FILE__ - 1) + 1), __LINE__, format, ##__VA_ARGS__) + +//WLLog is a higher-level logging macro to be used by messages sent from the JavaScript WebLibrary +#define WLLog(prio, format, ...) _CWLog(prio, @"WEBLIB",@"?????", -1, format, ##__VA_ARGS__) + //ErrLog is a higher-level logging macro to be used to log errors #define ErrLog(format, ...) _CWLog(1, @"ERROR", @((strrchr(__FILE__, '/') ? : __FILE__ - 1) + 1), __LINE__, format, ##__VA_ARGS__) @@ -48,4 +60,6 @@ void cwLogNew(int priority, NSString *source, NSString *file, int line, NSString */ + (void)executeInDebug:(void (^)(void))block; ++ (int)logLevel; + @end diff --git a/Connichiwa/CWDebug.m b/Connichiwa/CWDebug.m index 4e4c43d..59542ce 100644 --- a/Connichiwa/CWDebug.m +++ b/Connichiwa/CWDebug.m @@ -8,7 +8,7 @@ #import "CWDebug.h" -int const MAX_LOG_PRIORITY = 4; +int const MAX_LOG_LEVEL = 4; @@ -17,7 +17,7 @@ @implementation CWDebug + (BOOL)isDebugging { - #ifdef CWDEBUG + #ifdef DEBUG return YES; #else return NO; @@ -27,11 +27,15 @@ + (BOOL)isDebugging + (void)executeInDebug:(void (^)(void))block { - #ifdef CWDEBUG + #ifdef DEBUG block(); #endif } ++ (int)logLevel { + return MAX_LOG_LEVEL; +} + static long longestSourceLength = 10; @@ -40,7 +44,7 @@ + (void)executeInDebug:(void (^)(void))block * Custom logging function tailored towards usage in Connichiwa. It will log a message if the given priority is smaller or equal to MAX_LOG_PRIORITY and the given source is set up as an active debug source. * Thanks to http://stackoverflow.com/questions/1354728/in-xcode-is-there-a-way-to-disable-the-timestamps-that-appear-in-the-debugger-c * - * @param priority The logging priority determines the "level" of logging a message belongs to. A higher priority means the message is likely to occur more often. This allows us to reduce log messages by decreasing MAX_LOG_PRIORITY. The log priorities are roughly defined as follows: + * @param level A higher level means the message is likely to occur more often. This allows us to reduce log messages by decreasing MAX_LOG_LEVEL. The levels are roughly defined as follows: * 1 -- very rudimentary application flow (bt advertising starts, webserver was launched, ...) * 2 -- more detailed application flow (remote did connect/disconnect, getting intial data, ...) * 3 -- log message on most method calls, giving a detailed overview of the application flow @@ -52,12 +56,12 @@ + (void)executeInDebug:(void (^)(void))block * @param format The format of the message. A format string like it is also used in NSLog() * @param ... The arguments for the format string */ -void cwLogNew(int priority, NSString *source, NSString *file, int line, NSString *format, ...) +void _cwLogNew(int level, NSString *source, NSString *file, int line, NSString *format, ...) { NSArray *activeDebugSources = nil; //TODO is defined every time, lame, but static NSArray is not possible source = [source uppercaseString]; - if (priority <= MAX_LOG_PRIORITY && ([source isEqualToString:@"ERROR"] || activeDebugSources == nil || [activeDebugSources containsObject:source])) + if ([CWDebug isDebugging] && level <= MAX_LOG_LEVEL && ([source isEqualToString:@"ERROR"] || activeDebugSources == nil || [activeDebugSources containsObject:source])) { static dispatch_once_t token; static NSDateFormatter *dateFormatter; @@ -82,7 +86,6 @@ void cwLogNew(int priority, NSString *source, NSString *file, int line, NSString source = [source stringByAppendingString:spaces]; } -// NSString *finalString = [NSString stringWithFormat:@"%@ %@ %@:%d -- %@\n", source, dateString, file, line, formattedString]; NSString *finalString = [NSString stringWithFormat:@"%@ %@ -- %@\n", source, dateString, formattedString]; [[NSFileHandle fileHandleWithStandardOutput] writeData:[finalString dataUsingEncoding:NSUTF8StringEncoding]]; } diff --git a/Connichiwa/CWUtil.m b/Connichiwa/CWUtil.m index e474c63..8ae6192 100644 --- a/Connichiwa/CWUtil.m +++ b/Connichiwa/CWUtil.m @@ -16,7 +16,7 @@ /** * The options used when creating JSON strings. In debug mode, we use a pretty representation, otherwise a shorter, less readable presentation */ -#ifdef CWDEBUG +#ifdef DEBUG NSJSONWritingOptions const JSON_WRITING_OPTIONS = NSJSONWritingPrettyPrinted; #else NSJSONWritingOptions const JSON_WRITING_OPTIONS = kNilOptions; @@ -78,7 +78,7 @@ + (NSArray *)deviceInterfaceAddresses { struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; - int success = 0; + int success = -1; NSMutableArray *ips = [NSMutableArray arrayWithCapacity:1]; @@ -117,6 +117,8 @@ + (NSArray *)deviceInterfaceAddresses temp_addr = temp_addr->ifa_next; } + } else { + ErrLog(@"Error getting IPs: %@ (%d)", [NSString stringWithUTF8String:strerror(errno)], errno); } // Free memory diff --git a/Connichiwa/CWWebLibraryManager.m b/Connichiwa/CWWebLibraryManager.m index 4c61d90..588108a 100644 --- a/Connichiwa/CWWebLibraryManager.m +++ b/Connichiwa/CWWebLibraryManager.m @@ -71,7 +71,7 @@ - (void)_sendToView_disconnectWebsocket; /** * Tells the web library if we are running in debug mode or not */ -- (void)_sendToView_cwdebug; +- (void)_sendToView_debuginfo; /** * Tells the web library the unique connichiwa identifier we are known under @@ -295,11 +295,12 @@ - (void)_sendToView_disconnectWebsocket } -- (void)_sendToView_cwdebug +- (void)_sendToView_debuginfo { NSDictionary *data = @{ - @"_name": @"cwdebug", - @"cwdebug": @([CWDebug isDebugging]) + @"_name": @"debuginfo", + @"debug": @([CWDebug isDebugging]), + @"logLevel": @([CWDebug logLevel]) }; [self _sendToView_dictionary:data]; } @@ -395,10 +396,8 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView { CWLog(3, @"Web library webview did load, setting things up and connecting websocket"); - - [self _registerJSCallbacks]; - [self _sendToView_cwdebug]; + [self _sendToView_debuginfo]; [self _sendToView_connectWebsocket]; } else if (self.state == CWWebLibraryManagerStateDisconnecting) @@ -422,7 +421,7 @@ - (void)createWebViewContext { //Register JS error handler self.webViewContext.exceptionHandler = ^(JSContext *c, JSValue *e) { dispatch_async(dispatch_get_main_queue(), ^{ - _CWLog(1, @"WEBLIB", @"?????", -1, @"JAVASCRIPT ERROR: %@. Stack: %@", e, [e valueForProperty:@"stack"]); + ErrLog(@"JAVASCRIPT ERROR: %@. Stack: %@", e, [e valueForProperty:@"stack"]); }); }; @@ -432,11 +431,16 @@ - (void)createWebViewContext { NSArray *components = [logMessage componentsSeparatedByString:@"|"]; //array should contain: prio, message if ([components count] != 2) { - _CWLog(1, @"WEBLIB", @"?????", -1, logMessage); + WLLog(1, logMessage); } else { - _CWLog([[components objectAtIndex:0] intValue], @"WEBLIB", @"?????", -1, [components objectAtIndex:1]); + //First component should be a priority or can be "ERROR" for logging an error + if ([[components objectAtIndex:0] isEqualToString:@"ERROR"]) { + ErrLog([components objectAtIndex:1]); + } else { + WLLog([[components objectAtIndex:0] intValue], [components objectAtIndex:1]); + } } }; self.webViewContext[@"console"][@"log"] = logger; diff --git a/Connichiwa/GCDWebServer/Core/GCDWebServer.m b/Connichiwa/GCDWebServer/Core/GCDWebServer.m index 2d8d801..c70f6da 100755 --- a/Connichiwa/GCDWebServer/Core/GCDWebServer.m +++ b/Connichiwa/GCDWebServer/Core/GCDWebServer.m @@ -87,18 +87,18 @@ #ifdef __GCDWEBSERVER_LOGGING_FACILITY_BUILTIN__ void GCDWebServerLogMessage(GCDWebServerLoggingLevel level, NSString* format, ...) { - static const char* levelNames[] = {"DEBUG", "VERBOSE", "INFO", "WARNING", "ERROR", "EXCEPTION"}; - static int enableLogging = -1; - if (enableLogging < 0) { - enableLogging = (isatty(STDERR_FILENO) ? 1 : 0); - } - if (enableLogging) { - va_list arguments; - va_start(arguments, format); - NSString* message = [[NSString alloc] initWithFormat:format arguments:arguments]; - va_end(arguments); - fprintf(stderr, "[%s] %s\n", levelNames[level], [message UTF8String]); - } +// static const char* levelNames[] = {"DEBUG", "VERBOSE", "INFO", "WARNING", "ERROR", "EXCEPTION"}; +// static int enableLogging = -1; +// if (enableLogging < 0) { +// enableLogging = (isatty(STDERR_FILENO) ? 1 : 0); +// } +// if (enableLogging) { +// va_list arguments; +// va_start(arguments, format); +// NSString* message = [[NSString alloc] initWithFormat:format arguments:arguments]; +// va_end(arguments); +// fprintf(stderr, "[%s] %s\n", levelNames[level], [message UTF8String]); +// } } #endif diff --git a/ConnichiwaResources/weblib/connichiwa.js b/ConnichiwaResources/weblib/connichiwa.js index cc5331e..2daed32 100644 --- a/ConnichiwaResources/weblib/connichiwa.js +++ b/ConnichiwaResources/weblib/connichiwa.js @@ -204,6 +204,7 @@ var OOP = (function() { extendSingleton : extendSingleton }; })(); +/* global OOP */ "use strict"; @@ -213,48 +214,43 @@ var OOP = (function() { * * @namespace CWDebug */ -var CWDebug = (function() -{ - /** - * true if debug mode is on, otherwise false - */ - var debug = true; +var CWDebug = OOP.createSingleton("Connichiwa", "CWDebug", { + _debug: false, + _logLevel: 0, - var enableDebug = function() { - debug = true; - }; + "public setDebug": function(v) { + this._debug = v; + }, + "public setLogLevel": function(v) { + this._logLevel = v; + }, - var disableDebug = function() { - debug = false; - }; - /** - * Logs a message to the console if debug mode is on - * - * @param {int} priority The priority of the message. Messages with lower priority are printed at lower debug states. - * @param {string} message the message to log - * - * @memberof CWDebug - */ - var log = function(priority, message) - { - // if (priority > 3) return; - if (debug) console.log(priority + "|" + message); - }; + "public setDebugInfo": function(info) { + console.log("SETTING DEBUG INFO: "+info.debug+" || "+info.logLevel); + if (info.debug) CWDebug.setDebug(info.debug); + if (info.logLevel) CWDebug.setLogLevel(info.logLevel); + }, - var err = function(priority, message) { - if (debug) console.err(priority + "|" + message); - }; - return { - enableDebug : enableDebug, - disableDebug : disableDebug, - log : log, - err : err - }; -})(); -/* global Connichiwa, CWSystemInfo, CWUtil, CWEventManager, CWDebug */ + "public getDebugInfo": function() { + return { debug: this._debug, logLevel: this._logLevel }; + }, + + + "public log": function(level, msg) { + if (this._debug && level <= this._logLevel) { + console.log(level + "|" + msg); + } + }, + + "public err": function(msg) { + if (this._debug) { + console.log("ERROR" + "|" + msg); + } + } +});/* global Connichiwa, CWSystemInfo, CWUtil, CWEventManager, CWDebug */ /* global nativeCallConnectRemote */ "use strict"; @@ -1919,7 +1915,7 @@ var CWNativeMasterCommunication = OOP.createSingleton("Connichiwa", "CWNativeMas var object = JSON.parse(message); switch (object._name) { - case "cwdebug": this._parseDebug(object); break; + case "debuginfo": this._parseDebugInfo(object); break; case "connectwebsocket": this._parseConnectWebsocket(object); break; case "localinfo": this._parseLocalInfo(object); break; case "devicedetected": this._parseDeviceDetected(object); break; @@ -1932,10 +1928,9 @@ var CWNativeMasterCommunication = OOP.createSingleton("Connichiwa", "CWNativeMas }, - _parseDebug: function(message) + _parseDebugInfo: function(message) { - if (message.cwdebug === true) CWDebug.enableDebug(); - else CWDebug.disableDebug(); + CWDebug.setDebugInfo(message); }, @@ -2452,11 +2447,14 @@ OOP.extendSingleton("Connichiwa", "CWWebsocketMessageParser", device.connectionState = CWDeviceConnectionState.CONNECTED; nativeCallRemoteDidConnect(device.getIdentifier()); + + //Make sure the remote uses the same logging settings as we do + device.send("_debuginfo", CWDebug.getDebugInfo()); + // AutoLoad files from Connichiwa.autoLoad on the new remote device var didConnectCallback = function() { CWEventManager.trigger("deviceConnected", device); }; - var loadOtherFile = function(device, file) { //As of now, "other" files are only CSS var extension = file.split(".").pop().toLowerCase(); @@ -2619,7 +2617,6 @@ OOP.extendSingleton("Connichiwa", "Connichiwa", { _onWebsocketClose: function() { - console.log("close"); CWDebug.log(3, "Websocket closed"); this._cleanupWebsocket(); diff --git a/ConnichiwaResources/weblib/connichiwa.min.js b/ConnichiwaResources/weblib/connichiwa.min.js index 42b4e9c..2dabe12 100644 --- a/ConnichiwaResources/weblib/connichiwa.min.js +++ b/ConnichiwaResources/weblib/connichiwa.min.js @@ -1,3 +1,3 @@ -"use strict";function CWDevice(e){if(!e.identifier)throw"Cannot instantiate CWDevice without an identifier";this.discoveryState=CWDeviceDiscoveryState.LOST,this.connectionState=CWDeviceConnectionState.DISCONNECTED,this.distance=-1;var t=e.identifier,i=Date.now()/1e3,n=[],o=void 0,a="remote device",c=CWSystemInfo.DEFAULT_PPI();return e.launchDate&&(i=e.launchDate),e.ips&&(n=e.ips),e.port&&(o=e.port),e.name&&(a=e.name),e.ppi&&e.ppi>0&&(c=e.ppi),this.getIdentifier=function(){return t},this.getLaunchDate=function(){return i},this.getIPs=function(){return n},this.getPort=function(){return o},this.getName=function(){return a},this.getPPI=function(){return c},this.isLocal=function(){return this.equalTo(Connichiwa.getLocalDevice())},this.isNearby=function(){return this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.canBeConnected=function(){return this.connectionState===CWDeviceConnectionState.DISCONNECTED&&this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.isConnected=function(){return this.connectionState===CWDeviceConnectionState.CONNECTED},this}function CWLocation(e,t,i,n,o){if(o===!0){var a=CWLocation.toGlobal(e,t,i,n);this.x=a.x,this.y=a.y,this.width=a.width,this.height=a.height}else this.x=e,this.y=t,this.width=i,this.height=n;CWEventManager.register("wasUnstitched",function(e){this.x-=e.deviceTransformation.x,this.y-=e.deviceTransformation.y,this.x*=e.deviceTransformation.scale,this.y*=e.deviceTransformation.scale,this.width*=e.deviceTransformation.scale,this.height*=e.deviceTransformation.scale}.bind(this)),CWEventManager.register("wasStitched",function(e){this.x/=e.deviceTransformation.scale,this.y/=e.deviceTransformation.scale,this.width/=e.deviceTransformation.scale,this.height/=e.deviceTransformation.scale,this.x+=e.deviceTransformation.x,this.y+=e.deviceTransformation.y}.bind(this)),this.getGlobal=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},this.getLocal=function(){return CWLocation.toLocal(this.x,this.y,this.width,this.height)},this.getGlobalX=function(){return this.x},this.getGlobalY=function(){return this.y},this.getGlobalWidth=function(){return this.width},this.getGlobalHeight=function(){return this.height},this.getLocalX=function(){return this.getLocal().x},this.getLocalY=function(){return this.getLocal().y},this.getLocalWidth=function(){return this.getLocal().width},this.getLocalHeight=function(){return this.getLocal().height},this.setGlobal=function(e,t,i,n){void 0!==e&&(this.x=e),void 0!==t&&(this.y=t),void 0!==i&&(this.width=i),void 0!==n&&(this.height=n)},this.setLocal=function(e,t,i,n){CWDebug.log(3,"To Global: "+e+", "+t+", "+i+", "+n);var o=CWLocation.toGlobal(e,t,i,n);CWDebug.log(3,JSON.stringify(o)),this.x=o.x,this.y=o.y,this.width=o.width,this.height=o.height},this.setGlobalX=function(e){this.setGlobal(e,this.y,this.width,this.height)},this.setGlobalY=function(e){this.setGlobal(this.x,e,this.width,this.height)},this.setGlobalWidth=function(e){this.setGlobal(this.x,this.y,e,this.height)},this.setGlobalHeight=function(e){this.setGlobal(this.x,this.y,this.width,e)},this.setLocalX=function(e){var t=this.getLocal();this.setLocal(e,t.y,t.width,t.height)},this.setLocalY=function(e){var t=this.getLocal();this.setLocal(t.x,e,t.width,t.height)},this.setLocalWidth=function(e){var t=this.getLocal();this.setLocal(t.x,t.y,e,t.height)},this.setLocalHeight=function(e){var t=this.getLocal();this.setLocal(t.x,t.y,t.width,e)},this.toString=function(){return JSON.stringify(this.getGlobal())},this.copy=function(){return CWLocation.fromString(this.toString())}}function CWPoint(e,t,i){return new CWLocation(e,t,void 0,void 0,i)}function CWSize(e,t,i){return new CWLocation(void 0,void 0,e,t,i)}function CWVector(e,t){if(void 0===e||void 0===t)throw"Cannot instantiate Vector without 2 points";var i=e,n=t,o=n.x-i.x,a=n.y-i.y,c=Math.sqrt(Math.pow(o,2)+Math.pow(a,2));this.p1=function(){return i},this.p2=function(){return n},this.deltaX=function(){return o},this.deltaY=function(){return a},this.length=function(){return c}}var OOP=function(){var e="default",t={},i={},n=function(t,i,n){return void 0===n&&(n=i,i=t,t=e),o(t,i,n)},o=function(e,n,o){var a={private:function(){},package:function(){},public:function(){}};e in i==!1&&(i[e]=function(){});var r=i[e];return r[n]=a.package,a.private.package=r,e in t==!1&&(t[e]={}),t[e][n]=a,c(e,n,o)},a=function(t,i,n){return void 0===n&&(n=i,i=t,t=e),c(t,i,n)},c=function(e,i,n){if(e in t!=!1&&i in t[e]!=!1){var o=!1,a=t[e][i],c=function(e,t){return function(){return e[t]}},r=function(e,t){return function(i){e[t]=i}},s=function(){return void 0},h=function(){throw new TypeError("Cannot set non-visible property")};for(var d in n)if(n.hasOwnProperty(d)){var g="private",u=d;if(0===u.indexOf("public ")?(g="public",u=u.substr(7)):0===u.indexOf("package ")?(g="package",u=u.substr(8)):0===u.indexOf("private ")&&(u=u.substr(8)),"function"==typeof n[d]){var v=n[d].bind(a.private);switch(g){case"private":a.private[u]=v;break;case"package":a.private[u]=v,a.package[u]=v;break;case"public":a.private[u]=v,a.package[u]=v,a.public[u]=v}"__constructor"===u&&(o=!0)}else switch(g){case"private":a.private[u]=n[d],Object.defineProperty(a.package,u,{get:s,set:h}),Object.defineProperty(a.public,u,{get:s,set:h});break;case"package":a.package[u]=n[d],Object.defineProperty(a.private,u,{get:c(a.package,u),set:r(a.package,u)}),Object.defineProperty(a.public,u,{get:s,set:h});break;case"public":a.public[u]=n[d],Object.defineProperty(a.private,u,{get:c(a.public,u),set:r(a.public,u)}),Object.defineProperty(a.package,u,{get:c(a.public,u),set:r(a.public,u)})}}return o===!0&&window.setTimeout(a.private.__constructor,0),a.public}};return{createSingleton:n,extendSingleton:a}}(),CWDebug=function(){var e=!0,t=function(){e=!0},i=function(){e=!1},n=function(t,i){e&&console.log(t+"|"+i)},o=function(t,i){e&&console.err(t+"|"+i)};return{enableDebug:t,disableDebug:i,log:n,err:o}}(),CWDeviceDiscoveryState={DISCOVERED:"discovered",LOST:"lost"},CWDeviceConnectionState={DISCONNECTED:"disconnected",CONNECTING:"connecting",CONNECTED:"connected"};CWDevice.prototype.insert=function(e,t){Connichiwa.insert(this.getIdentifier(),e,t)},CWDevice.prototype.replace=function(e,t){Connichiwa.replace(this.getIdentifier(),e,t)},CWDevice.prototype.replaceContent=function(e,t){Connichiwa.replaceContent(this.getIdentifier(),e,t)},CWDevice.prototype.loadScript=function(e,t){Connichiwa.loadScript(this.getIdentifier(),e,t)},CWDevice.prototype.loadCSS=function(e){Connichiwa.loadCSS(this.getIdentifier(),e)},CWDevice.prototype.send=function(e,t){Connichiwa.send(this.getIdentifier(),e,t)},CWDevice.prototype.equalTo=function(e){return CWDevice.prototype.isPrototypeOf(e)===!1?!1:this.getIdentifier()===e.getIdentifier()},CWDevice.prototype.toString=function(){return this.getIdentifier()};var CWEventManager=function(){var e={},t=function(t,i){if("string"!=typeof t)throw"Event name must be a string";if("function"!=typeof i)throw"Event callback must be a function";if(t=t.toLowerCase(),-1===t.indexOf(" "))e[t]||(e[t]=[]),e[t].push(i),CWDebug.log(3,"Attached callback to "+t);else for(var n=t.split(" "),o=0;o5,this._touchCheckable&&n.length()>1)if(void 0!==this._touchAngleReferenceVector){var o=n.angle(this._touchAngleReferenceVector);if(o>20){if(this._touchAngleChangedCount++,3===this._touchAngleChangedCount)return this._touchStart=void 0,void(this._touchLast=void 0)}else this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0}else if(void 0!==this._touchLastVector){var a=n.angle(this._touchLastVector);a>20&&(this._touchAngleReferenceVector=this._touchLastVector,this._touchAngleChangedCount=1)}n.length()>0&&(this._touchLastVector=n)}this._touchLast=t}},"private _onUp":function(){var e=this._touchStart,t=this._touchLast;if(this._touchStart=void 0,this._touchLast=void 0,this._touchLastVector=void 0,this._touchCheckable=!1,this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0,void 0!==e&&void 0!==t){var i=t.x-e.x,n=t.y-e.y,o=Math.sqrt(Math.pow(i,2)+Math.pow(n,2));if(10>=o)return void CWDebug.log(3,"Swipe REJECTED because it was too short ("+o+")");var a=.25;100>o&&(a=.35),50>o&&(a=.4),40>o&&(a=.45),15>o&&(a=.8);var c="invalid";Math.abs(n)0&&(c="right"),0>i&&(c="left")),Math.abs(i)0&&(c="down"),0>n&&(c="up"));var r=$(window).height()-window.innerHeight;t.y+=r;var s=t.y<=50,h=t.x<=50,d=t.y>=$(window).height()-50,g=t.x>=$(window).width()-50,u="invalid";if(s&&"up"===c&&(u="top"),h&&"left"===c&&(u="left"),d&&"down"===c&&(u="bottom"),g&&"right"===c&&(u="right"),"invalid"===u)return void CWDebug.log(3,"Swipe REJECTED. Ending: x - "+t.x+"/"+($(window).width()-50)+", y - "+t.y+"/"+($(window).height()-50)+". Direction: "+c+". Edge endings: "+s+", "+g+", "+d+", "+h);"top"===u&&(t.y=0),"left"===u&&(t.x=0),"bottom"===u&&(t.y=$(window).height()),"right"===u&&(t.x=$(window).width());var v={edge:u,x:t.x,y:t.y};CWEventManager.trigger("stitchswipe",v)}},"public captureOn":function(e){e instanceof jQuery&&(e=e.get(0)),e.addEventListener("mousedown",this._onDown,!0),e.addEventListener("touchstart",this._onDown,!0),e.addEventListener("mousemove",this._onMove,!0),e.addEventListener("touchmove",this._onMove,!0),e.addEventListener("mouseup",this._onUp,!0),e.addEventListener("touchend",this._onUp,!0)}}),CWGyroscope=OOP.createSingleton("Connichiwa","CWGyroscope",{_lastMeasure:void 0,_alphaGammaFlipped:!1,__constructor:function(){gyro.frequency=500,gyro.startTracking(this._onUpdate)},"private _onUpdate":function(e){if(null!==e.alpha&&null!==e.beta&&null!==e.gamma&&null!==e.x&&null!==e.y&&null!==e.z){if(void 0===this._lastMeasure&&(this._lastMeasure=e),e.alpha<0||e.gamma>180){this._alphaGammaFlipped=!0;var t=this._lastMeasure.alpha;this._lastMeasure.alpha=this._lastMeasure.gamma,this._lastMeasure.gamma-t}var i=this._alphaGammaFlipped?e.gamma:e.alpha,n=e.beta,o=this._alphaGammaFlipped?e.alpha:e.gamma,a=i-this._lastMeasure.alpha,c=n-this._lastMeasure.beta,r=o-this._lastMeasure.gamma,s={alpha:i,beta:n,gamma:o,delta:{alpha:a,beta:c,gamma:r}};CWEventManager.trigger(5,"gyroscopeUpdate",s);var h=e.x-this._lastMeasure.x,d=e.y-this._lastMeasure.y,g=e.z-this._lastMeasure.z,u={x:e.x,y:e.y,z:e.z,delta:{x:h,y:d,z:g}};CWEventManager.trigger(5,"accelerometerUpdate",u),this._lastMeasure={x:e.x,y:e.y,z:e.z,alpha:i,beta:n,gamma:o}}},"package getLastGyroscopeMeasure":function(){return void 0===this._lastMeasure?void 0:{alpha:this._lastMeasure.alpha,beta:this._lastMeasure.beta,gamma:this._lastMeasure.gamma}},"package getLastAccelerometerMeasure":function(){return void 0===this._lastMeasure?void 0:{x:this._lastMeasure.x,y:this._lastMeasure.y,z:this._lastMeasure.z}}});CWLocation.toGlobal=function(e,t,i,n){void 0===e&&(e=0),void 0===t&&(t=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:e,y:t,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=t,o.x=e,o.width=i,o.height=n),90===a.rotation&&(o.y=a.height*a.scale-e-i,o.x=t,o.width=n,o.height=i),180===a.rotation&&(o.y=a.height*a.scale-t-n,o.x=a.width*a.scale-e-i,o.width=i,o.height=n),270===a.rotation&&(o.y=e,o.x=a.width*a.scale-t-n,o.width=n,o.height=i),o.x+=a.x*a.scale,o.y+=a.y*a.scale,o.x/=a.scale,o.y/=a.scale,o.width/=a.scale,o.height/=a.scale,o},CWLocation.toLocal=function(e,t,i,n){void 0===e&&(e=0),void 0===t&&(t=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:e,y:t,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=t-a.y,o.x=e-a.x,o.width=i,o.height=n),90===a.rotation&&(o.y=e-a.x,o.x=a.height-(t-a.y+n),o.width=n,o.height=i),180===a.rotation&&(o.y=a.height-(t-a.y+n),o.x=a.width-(e-a.x+i),o.width=i,o.height=n),270===a.rotation&&(o.y=a.width-(e-a.x+i),o.x=t-a.y,o.width=n,o.height=i),o.x*=a.scale,o.y*=a.scale,o.width*=a.scale,o.height*=a.scale,o},CWLocation.applyRotation=function(e,t,i,n,o){var a=CWStitchManager.getDeviceTransformation();void 0===e&&(e=0),void 0===t&&(t=0),void 0===i&&(i=0),void 0===n&&(n=0),void 0===o&&(o=a.rotation);var c={x:e,y:t,width:i,height:n};return 0===a.rotation&&(c.y=t,c.x=e,c.width=i,c.height=n),90===a.rotation&&(c.y=-e,c.x=t,c.width=n,c.height=i),180===a.rotation&&(c.y=-t,c.x=-e,c.width=i,c.height=n),270===a.rotation&&(c.y=e,c.x=-t,c.width=n,c.height=i),c},CWLocation.fromString=function(e){var t=JSON.parse(e);return new CWLocation(parseFloat(t.x),parseFloat(t.y),parseFloat(t.width),parseFloat(t.height),!1)};var CWStitchManager=OOP.createSingleton("Connichiwa","CWStitchManager",{"private _isStitched":!1,"private _deviceTransformation":void 0,"private _gyroDataOnStitch":void 0,"public unstitchOnMove":!0,"public ignoreMoveAxis":[],__constructor:function(){Connichiwa.on("stitchswipe",this._onLocalSwipe),Connichiwa.on("wasStitched",this._onWasStitched),Connichiwa.on("wasUnstitched",this._onWasUnstitched),Connichiwa.on("gyroscopeUpdate",this._onGyroUpdate),Connichiwa.on("accelerometerUpdate",this._onAccelerometerUpdate)},_onWasStitched:function(e){this._gyroDataOnStitch=this.package.CWGyroscope.getLastGyroscopeMeasure(),this._deviceTransformation=e.deviceTransformation,this._isStitched=!0},_onWasUnstitched:function(){this._gyroDataOnStitch=void 0,this._deviceTransformation=this.DEFAULT_DEVICE_TRANSFORMATION(),this._isStitched=!1},_onLocalSwipe:function(e){e.device=Connichiwa.getIdentifier(),e.width=CWSystemInfo.viewportWidth(),e.height=CWSystemInfo.viewportHeight(),Connichiwa.send("master","_stitchswipe",e)},_onGyroUpdate:function(e){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){void 0===this._gyroDataOnStitch&&(this._gyroDataOnStitch=e);var t=Math.abs(e.alpha-this._gyroDataOnStitch.alpha),i=Math.abs(e.beta-this._gyroDataOnStitch.beta),n=Math.abs(e.gamma-this._gyroDataOnStitch.gamma);t=Math.abs((t+180)%360-180),i=Math.abs((i+180)%360-180),n=Math.abs((n+180)%360-180),(CWUtil.inArray("alpha",this.ignoreMoveAxis)===!1&&t>=35||CWUtil.inArray("beta",this.ignoreMoveAxis)===!1&&i>=20||CWUtil.inArray("gamma",this.ignoreMoveAxis)===!1&&n>=20)&&this._quitStitch()}},_onAccelerometerUpdate:function(e){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){var t=Math.abs(e.x),i=Math.abs(e.y),n=Math.abs(Math.abs(e.z)-9.81);(CWUtil.inArray("x",this.ignoreMoveAxis)===!1&&t>=1||CWUtil.inArray("y",this.ignoreMoveAxis)===!1&&i>=1||CWUtil.inArray("z",this.ignoreMoveAxis)===!1&&n>=1)&&this._quitStitch()}},"private _quitStitch":function(){var e={device:Connichiwa.getIdentifier()};Connichiwa.send("master","_quitstitch",e)},"public unstitch":function(){this._quitStitch()},"public isStitched":function(){return this._isStitched},"public getDeviceTransformation":function(){return void 0===this._deviceTransformation?this.DEFAULT_DEVICE_TRANSFORMATION():this._deviceTransformation},"private DEFAULT_DEVICE_TRANSFORMATION":function(){return{x:0,y:0,width:CWSystemInfo.viewportWidth(),height:CWSystemInfo.viewportHeight(),rotation:0,scale:1}}}),CWSystemInfo=OOP.createSingleton("Connichiwa","CWSystemInfo",{_ppi:void 0,"public PPI":function(){return void 0!==this._ppi?this._ppi:(this._ppi=this.DEFAULT_PPI(),window.devicePixelRatio>1&&(this._ppi=142),"iPad"===navigator.platform&&(this._ppi=132),("iPhone"===navigator.platform||"iPod"===navigator.platform)&&(this._ppi=3===window.devicePixelRatio?153:163),this._ppi)},"public isLandscape":function(){return window.innerHeight-1},r=function(e){return e?(e^16*Math.random()>>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,CWUtil.createUUID)};return{parseURL:e,getEventLocation:t,randomInt:i,isInt:n,isString:o,isObject:a,inArray:c,createUUID:r}}();CWVector.prototype.angle=function(e){var t=this.deltaX()*e.deltaX()+this.deltaY()*e.deltaY(),i=this.length()*e.length();return Math.acos(t/i)*(180/Math.PI)};var CWWebsocketMessageParser=OOP.createSingleton("Connichiwa","CWWebsocketMessageParser",{"package parse":function(e){switch(e._name){case"_ack":this._parseAck(e);break;case"_insert":this._parseInsert(e);break;case"_replace":this._parseReplace(e);break;case"_loadscript":this._parseLoadScript(e);break;case"_loadcss":this._parseLoadCSS(e);break;case"_wasstitched":this._parseWasStitched(e);break;case"_wasunstitched":this._parseWasUnstitched(e);break;case"_gotstitchneighbor":this._parseGotStitchNeighbor(e)}return!0},_parseAck:function(e){CWEventManager.trigger("__ack_message"+e.original._id)},_parseInsert:function(e){$(e.selector).append(e.html)},_parseReplace:function(e){e.contentOnly===!0?$(e.selector).html(e.html):$(e.selector).replaceWith(e.html)},_parseLoadScript:function(e){var t=this;$.getScript(e.url).done(function(){t.package.Connichiwa._sendAck(e)}).fail(function(t,i,n){CWDebug.err(1,"There was an error loading '"+e.url+"': "+n)})},_parseLoadCSS:function(e){var t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),t.setAttribute("href",e.url),$("head").append(t),this.package.Connichiwa._sendAck(e)},_parseWasStitched:function(e){CWEventManager.trigger("wasStitched",e)},_parseWasUnstitched:function(e){CWEventManager.trigger("wasUnstitched",e)},_parseGotStitchNeighbor:function(e){CWEventManager.trigger("gotstitchneighbor",e)}}),Connichiwa=OOP.createSingleton("Connichiwa","Connichiwa",{"private _websocket":void 0,"public getLocalDevice":function(){},"public getIdentifier":function(){},"public isMaster":function(){},"public on":function(e,t){return"load"===e?void this.onLoad(t):void CWEventManager.register(e,t)},"public onMessage":function(e,t){this.on("message"+e,t)},"public onLoad":function(e){"complete"===document.readyState?window.setTimeout(e,0):Connichiwa.on("ready",e)},"public insert":function(e,t,i){if(void 0===i&&(i=t,t="body"),CWUtil.isObject(t)&&(t="#"+$(t).attr("id")),CWUtil.isObject(i)===!0){var n=$(i),o=n.clone();o[0].style.cssText=n[0].style.cssText,i=o[0].outerHTML}CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier());var a={selector:t,html:i};this.send(e,"_insert",a)},"public replace":function(e,t,i){void 0===i&&(i=t,t="body"),this._replace(e,t,i,!1)},"public replaceContent":function(e,t,i){void 0===i&&(i=t,t="body"),this._replace(e,t,i,!0)},"private _replace":function(e,t,i,n){if(void 0===i&&(i=t,t="body"),CWUtil.isObject(t)&&(t="#"+$(t).attr("id")),CWUtil.isObject(i)===!0){var o=$(i),a=o.clone();a[0].style.cssText=o[0].style.cssText,i=a[0].outerHTML}CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier());var c={selector:t,html:i,contentOnly:n};this.send(e,"_replace",c)},"public loadScript":function(e,t,i){var n={url:t},o=this.send(e,"_loadscript",n);void 0!==i&&this.on("__ack_message"+o,i)},"public loadCSS":function(e,t){{var i={url:t};this.send(e,"_loadcss",i)}},"public send":function(e,t,i){return void 0===i&&(i=e,e="master"),CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier()),i._name=t,i._source=this.getIdentifier(),i._target=e,this._sendObject(i)},"public respond":function(e,t,i){this.send(e._source,t,i)},"public broadcast":function(e,t,i){i&&(t._broadcastToSource=!0),this.send("broadcast",e,t)},"package _sendAck":function(e){var t={original:e};this.send(e._source,"_ack",t)},"package _sendObject":function(e){if("_name"in e==!1)return void console.warn("Tried to send message without _name, ignoring: "+JSON.stringify(e));e._id=CWUtil.randomInt(0,9999999999),e._name=e._name.toLowerCase();var t=JSON.stringify(e);return CWDebug.log(4,"Sending message: "+t),this._websocket.send(t),e._id},"package _disconnectWebsocket":function(){this._websocket.close()},_cleanupWebsocket:function(){void 0!==this._websocket&&(this._websocket.onopen=void 0,this._websocket.onmessage=void 0,this._websocket.onclose=void 0,this._websocket.onerror=void 0,this._websocket=void 0)}});CWDevice.prototype.connect=function(){this.canBeConnected()!==!1&&(this.connectionState=CWDeviceConnectionState.CONNECTING,nativeCallConnectRemote(this.getIdentifier()))};var CWDeviceManager=function(){var e,t=[],i=function(e){if(CWDevice.prototype.isPrototypeOf(e)===!1)throw"Cannot add a non-device";return null!==o(e.getIdentifier())?!1:(CWDebug.log(3,"Added device: "+e.getIdentifier()),t.push(e),!0)},n=function(e){CWDevice.prototype.isPrototypeOf(e)===!0&&(e=e.getIdentifier());var i=o(e);if(null===i)return!1;CWDebug.log("Removed device: "+e);var n=t.indexOf(i);return t.splice(n,1),!0},o=function(i){if(void 0!==e&&(i===e.getIdentifier()||"master"===i))return e;for(var n=0;n1e3))){CWDebug.log(4,"Checking connection constraint");var a=CWDeviceManager.getDeviceWithIdentifier(o.device);if(null!==a&&a.isConnected()!==!1)return void this._detectedStitch(o,t)}}this._swipes[t.device]=t}},"package unstitchDevice":function(e){if(e in this._devices){var t={deviceTransformation:this.getDeviceTransformation(e)};Connichiwa.send(e,"_wasunstitched",t),delete this._devices[e],CWDebug.log(3,"Device was unstitched: "+e)}},"private _detectedStitch":function(e,t){function i(e,t){var i={};return 0===t&&(i.y=e.y,i.x=e.x,i.width=e.width,i.height=e.height),90===t&&(i.y=e.width-e.x,i.x=e.y,i.width=e.height,i.height=e.width),180===t&&(i.y=e.height-e.y,i.x=e.width-e.x,i.width=e.width,i.height=e.height),270===t&&(i.y=e.x,i.x=e.height-e.y,i.width=e.height,i.height=e.width),i}if(0===Object.keys(this._devices).length){if(t.device===Connichiwa.getIdentifier()){var n=e;e=t,t=n}var o=this._createStitchData(e.device);o.width=e.width,o.height=e.height,this._devices[e.device]=o,CWDebug.log(3,"First device was auto-stitched: "+JSON.stringify(o)),CWEventManager.trigger("stitch",t.device,e.device);var a={otherDevice:t.device,edge:e.edge,deviceTransformation:this.getDeviceTransformation(e.device,!0)};Connichiwa.send(e.device,"_wasstitched",a)}var c=this._getStitchData(e.device),r=this._getStitchData(t.device);if(!(void 0===c&&void 0===r||void 0!==c&&void 0!==r)){var s,h;void 0!==c?(s=e,h=t):(s=t,h=e);var d=CWDeviceManager.getDeviceWithIdentifier(s.device),g=CWDeviceManager.getDeviceWithIdentifier(h.device),u=this._getStitchData(s.device),v=this._createStitchData(h.device);v.scale=g.getPPI()/d.getPPI()*u.scale;var l=0,p=this._indexForEdge(s.edge)-this._indexForEdge(h.edge);0>p&&(p+=4),2===p&&(l=0),3===p&&(l=90),1===p&&(l=270),0===p&&(l=180),v.rotation=(l+u.rotation)%360;var f=i(h,v.rotation);f.edge=(this._indexForEdge(h.edge)+v.rotation/90)%4,f.y/=v.scale,f.x/=v.scale,f.width/=v.scale,f.height/=v.scale;var C=i(s,u.rotation);C.edge=(this._indexForEdge(s.edge)+u.rotation/90)%4,C.y/=u.scale,C.x/=u.scale,C.width/=u.scale,C.height/=u.scale,v.width=f.width,v.height=f.height,v.deviceWidth=h.width,v.deviceHeight=h.height,v.transformX=u.transformX+C.x-f.x,v.transformY=u.transformY+C.y-f.y,this._devices[h.device]=v,CWDebug.log(3,"Device was stitched: "+JSON.stringify(v)),CWEventManager.trigger("stitch",s.device,h.device);var a={otherDevice:s.device,edge:h.edge,deviceTransformation:this.getDeviceTransformation(h.device,!0)};g.send("_wasstitched",a);var _={otherDevice:h.device,edge:s.edge};d.send("_gotstitchneighbor",_)}},"private _createStitchData":function(e){return{device:e,width:0,height:0,transformX:0,transformY:0,rotation:0,scale:1}},"private _getStitchData":function(e){return CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier()),this._devices[e]},"private _coordinateForEdge":function(e,t){var i=this._axisForEdge(e);return null===i?null:t[i]},"private _axisForEdge":function(e){return"left"===e||"right"===e?"y":"top"===e||"bottom"===e?"x":null},"private _invertAxis":function(e){return"x"===e?"y":"y"===e?"x":null},"private _oppositeEdge":function(e){switch(e){case"top":return"bottom";case"bottom":return"top";case"left":return"right";case"right":return"left"}return"invalid"},"private _indexForEdge":function(e){switch(e){case"top":return 0;case"bottom":return 2;case"left":return 1;case"right":return 3}return-1},"private _edgeForIndex":function(e){switch(e){case 0:return"top";case 2:return"bottom";case 3:return"right";case 1:return"left"}return"invalid"}}),OOP.extendSingleton("Connichiwa","CWWebsocketMessageParser",{"package parseOnMaster":function(e){switch(e._name){case"remoteinfo":this._parseRemoteInfo(e);break;case"_stitchswipe":this._parseStitchSwipe(e);break;case"_quitstitch":this._parseQuitStitch(e)}},_parseRemoteInfo:function(e){var t=CWDeviceManager.getDeviceWithIdentifier(e.identifier);null===t?(t=new CWDevice(e),CWDeviceManager.addDevice(t)):CWDebug.log(1,"TODO"),t.connectionState=CWDeviceConnectionState.CONNECTED,nativeCallRemoteDidConnect(t.getIdentifier());for(var i=function(){CWEventManager.trigger("deviceConnected",t)},n=function(e,t){var i=t.split(".").pop().toLowerCase();"css"===i&&e.loadCSS(t)},o=[],a=[],c=0;c0)for(var c=0;c=5?void nativeCallWebsocketDidClose():void setTimeout(function(){this._connectWebsocket()},1e3*this._connectionAttempts)},_onWebsocketError:function(){this._onWebsocketClose()}}); +"use strict";function CWDevice(e){if(!e.identifier)throw"Cannot instantiate CWDevice without an identifier";this.discoveryState=CWDeviceDiscoveryState.LOST,this.connectionState=CWDeviceConnectionState.DISCONNECTED,this.distance=-1;var t=e.identifier,i=Date.now()/1e3,n=[],o=void 0,a="remote device",c=CWSystemInfo.DEFAULT_PPI();return e.launchDate&&(i=e.launchDate),e.ips&&(n=e.ips),e.port&&(o=e.port),e.name&&(a=e.name),e.ppi&&e.ppi>0&&(c=e.ppi),this.getIdentifier=function(){return t},this.getLaunchDate=function(){return i},this.getIPs=function(){return n},this.getPort=function(){return o},this.getName=function(){return a},this.getPPI=function(){return c},this.isLocal=function(){return this.equalTo(Connichiwa.getLocalDevice())},this.isNearby=function(){return this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.canBeConnected=function(){return this.connectionState===CWDeviceConnectionState.DISCONNECTED&&this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.isConnected=function(){return this.connectionState===CWDeviceConnectionState.CONNECTED},this}function CWLocation(e,t,i,n,o){if(o===!0){var a=CWLocation.toGlobal(e,t,i,n);this.x=a.x,this.y=a.y,this.width=a.width,this.height=a.height}else this.x=e,this.y=t,this.width=i,this.height=n;CWEventManager.register("wasUnstitched",function(e){this.x-=e.deviceTransformation.x,this.y-=e.deviceTransformation.y,this.x*=e.deviceTransformation.scale,this.y*=e.deviceTransformation.scale,this.width*=e.deviceTransformation.scale,this.height*=e.deviceTransformation.scale}.bind(this)),CWEventManager.register("wasStitched",function(e){this.x/=e.deviceTransformation.scale,this.y/=e.deviceTransformation.scale,this.width/=e.deviceTransformation.scale,this.height/=e.deviceTransformation.scale,this.x+=e.deviceTransformation.x,this.y+=e.deviceTransformation.y}.bind(this)),this.getGlobal=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},this.getLocal=function(){return CWLocation.toLocal(this.x,this.y,this.width,this.height)},this.getGlobalX=function(){return this.x},this.getGlobalY=function(){return this.y},this.getGlobalWidth=function(){return this.width},this.getGlobalHeight=function(){return this.height},this.getLocalX=function(){return this.getLocal().x},this.getLocalY=function(){return this.getLocal().y},this.getLocalWidth=function(){return this.getLocal().width},this.getLocalHeight=function(){return this.getLocal().height},this.setGlobal=function(e,t,i,n){void 0!==e&&(this.x=e),void 0!==t&&(this.y=t),void 0!==i&&(this.width=i),void 0!==n&&(this.height=n)},this.setLocal=function(e,t,i,n){CWDebug.log(3,"To Global: "+e+", "+t+", "+i+", "+n);var o=CWLocation.toGlobal(e,t,i,n);CWDebug.log(3,JSON.stringify(o)),this.x=o.x,this.y=o.y,this.width=o.width,this.height=o.height},this.setGlobalX=function(e){this.setGlobal(e,this.y,this.width,this.height)},this.setGlobalY=function(e){this.setGlobal(this.x,e,this.width,this.height)},this.setGlobalWidth=function(e){this.setGlobal(this.x,this.y,e,this.height)},this.setGlobalHeight=function(e){this.setGlobal(this.x,this.y,this.width,e)},this.setLocalX=function(e){var t=this.getLocal();this.setLocal(e,t.y,t.width,t.height)},this.setLocalY=function(e){var t=this.getLocal();this.setLocal(t.x,e,t.width,t.height)},this.setLocalWidth=function(e){var t=this.getLocal();this.setLocal(t.x,t.y,e,t.height)},this.setLocalHeight=function(e){var t=this.getLocal();this.setLocal(t.x,t.y,t.width,e)},this.toString=function(){return JSON.stringify(this.getGlobal())},this.copy=function(){return CWLocation.fromString(this.toString())}}function CWPoint(e,t,i){return new CWLocation(e,t,void 0,void 0,i)}function CWSize(e,t,i){return new CWLocation(void 0,void 0,e,t,i)}function CWVector(e,t){if(void 0===e||void 0===t)throw"Cannot instantiate Vector without 2 points";var i=e,n=t,o=n.x-i.x,a=n.y-i.y,c=Math.sqrt(Math.pow(o,2)+Math.pow(a,2));this.p1=function(){return i},this.p2=function(){return n},this.deltaX=function(){return o},this.deltaY=function(){return a},this.length=function(){return c}}var OOP=function(){var e="default",t={},i={},n=function(t,i,n){return void 0===n&&(n=i,i=t,t=e),o(t,i,n)},o=function(e,n,o){var a={private:function(){},package:function(){},public:function(){}};e in i==!1&&(i[e]=function(){});var r=i[e];return r[n]=a.package,a.private.package=r,e in t==!1&&(t[e]={}),t[e][n]=a,c(e,n,o)},a=function(t,i,n){return void 0===n&&(n=i,i=t,t=e),c(t,i,n)},c=function(e,i,n){if(e in t!=!1&&i in t[e]!=!1){var o=!1,a=t[e][i],c=function(e,t){return function(){return e[t]}},r=function(e,t){return function(i){e[t]=i}},s=function(){return void 0},h=function(){throw new TypeError("Cannot set non-visible property")};for(var d in n)if(n.hasOwnProperty(d)){var g="private",u=d;if(0===u.indexOf("public ")?(g="public",u=u.substr(7)):0===u.indexOf("package ")?(g="package",u=u.substr(8)):0===u.indexOf("private ")&&(u=u.substr(8)),"function"==typeof n[d]){var v=n[d].bind(a.private);switch(g){case"private":a.private[u]=v;break;case"package":a.private[u]=v,a.package[u]=v;break;case"public":a.private[u]=v,a.package[u]=v,a.public[u]=v}"__constructor"===u&&(o=!0)}else switch(g){case"private":a.private[u]=n[d],Object.defineProperty(a.package,u,{get:s,set:h}),Object.defineProperty(a.public,u,{get:s,set:h});break;case"package":a.package[u]=n[d],Object.defineProperty(a.private,u,{get:c(a.package,u),set:r(a.package,u)}),Object.defineProperty(a.public,u,{get:s,set:h});break;case"public":a.public[u]=n[d],Object.defineProperty(a.private,u,{get:c(a.public,u),set:r(a.public,u)}),Object.defineProperty(a.package,u,{get:c(a.public,u),set:r(a.public,u)})}}return o===!0&&window.setTimeout(a.private.__constructor,0),a.public}};return{createSingleton:n,extendSingleton:a}}(),CWDebug=OOP.createSingleton("Connichiwa","CWDebug",{_debug:!1,_logLevel:0,"public setDebug":function(e){this._debug=e},"public setLogLevel":function(e){this._logLevel=e},"public setDebugInfo":function(e){console.log("SETTING DEBUG INFO: "+e.debug+" || "+e.logLevel),e.debug&&CWDebug.setDebug(e.debug),e.logLevel&&CWDebug.setLogLevel(e.logLevel)},"public getDebugInfo":function(){return{debug:this._debug,logLevel:this._logLevel}},"public log":function(e,t){this._debug&&e<=this._logLevel&&console.log(e+"|"+t)},"public err":function(e){this._debug&&console.log("ERROR|"+e)}}),CWDeviceDiscoveryState={DISCOVERED:"discovered",LOST:"lost"},CWDeviceConnectionState={DISCONNECTED:"disconnected",CONNECTING:"connecting",CONNECTED:"connected"};CWDevice.prototype.insert=function(e,t){Connichiwa.insert(this.getIdentifier(),e,t)},CWDevice.prototype.replace=function(e,t){Connichiwa.replace(this.getIdentifier(),e,t)},CWDevice.prototype.replaceContent=function(e,t){Connichiwa.replaceContent(this.getIdentifier(),e,t)},CWDevice.prototype.loadScript=function(e,t){Connichiwa.loadScript(this.getIdentifier(),e,t)},CWDevice.prototype.loadCSS=function(e){Connichiwa.loadCSS(this.getIdentifier(),e)},CWDevice.prototype.send=function(e,t){Connichiwa.send(this.getIdentifier(),e,t)},CWDevice.prototype.equalTo=function(e){return CWDevice.prototype.isPrototypeOf(e)===!1?!1:this.getIdentifier()===e.getIdentifier()},CWDevice.prototype.toString=function(){return this.getIdentifier()};var CWEventManager=function(){var e={},t=function(t,i){if("string"!=typeof t)throw"Event name must be a string";if("function"!=typeof i)throw"Event callback must be a function";if(t=t.toLowerCase(),-1===t.indexOf(" "))e[t]||(e[t]=[]),e[t].push(i),CWDebug.log(3,"Attached callback to "+t);else for(var n=t.split(" "),o=0;o5,this._touchCheckable&&n.length()>1)if(void 0!==this._touchAngleReferenceVector){var o=n.angle(this._touchAngleReferenceVector);if(o>20){if(this._touchAngleChangedCount++,3===this._touchAngleChangedCount)return this._touchStart=void 0,void(this._touchLast=void 0)}else this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0}else if(void 0!==this._touchLastVector){var a=n.angle(this._touchLastVector);a>20&&(this._touchAngleReferenceVector=this._touchLastVector,this._touchAngleChangedCount=1)}n.length()>0&&(this._touchLastVector=n)}this._touchLast=t}},"private _onUp":function(){var e=this._touchStart,t=this._touchLast;if(this._touchStart=void 0,this._touchLast=void 0,this._touchLastVector=void 0,this._touchCheckable=!1,this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0,void 0!==e&&void 0!==t){var i=t.x-e.x,n=t.y-e.y,o=Math.sqrt(Math.pow(i,2)+Math.pow(n,2));if(10>=o)return void CWDebug.log(3,"Swipe REJECTED because it was too short ("+o+")");var a=.25;100>o&&(a=.35),50>o&&(a=.4),40>o&&(a=.45),15>o&&(a=.8);var c="invalid";Math.abs(n)0&&(c="right"),0>i&&(c="left")),Math.abs(i)0&&(c="down"),0>n&&(c="up"));var r=$(window).height()-window.innerHeight;t.y+=r;var s=t.y<=50,h=t.x<=50,d=t.y>=$(window).height()-50,g=t.x>=$(window).width()-50,u="invalid";if(s&&"up"===c&&(u="top"),h&&"left"===c&&(u="left"),d&&"down"===c&&(u="bottom"),g&&"right"===c&&(u="right"),"invalid"===u)return void CWDebug.log(3,"Swipe REJECTED. Ending: x - "+t.x+"/"+($(window).width()-50)+", y - "+t.y+"/"+($(window).height()-50)+". Direction: "+c+". Edge endings: "+s+", "+g+", "+d+", "+h);"top"===u&&(t.y=0),"left"===u&&(t.x=0),"bottom"===u&&(t.y=$(window).height()),"right"===u&&(t.x=$(window).width());var v={edge:u,x:t.x,y:t.y};CWEventManager.trigger("stitchswipe",v)}},"public captureOn":function(e){e instanceof jQuery&&(e=e.get(0)),e.addEventListener("mousedown",this._onDown,!0),e.addEventListener("touchstart",this._onDown,!0),e.addEventListener("mousemove",this._onMove,!0),e.addEventListener("touchmove",this._onMove,!0),e.addEventListener("mouseup",this._onUp,!0),e.addEventListener("touchend",this._onUp,!0)}}),CWGyroscope=OOP.createSingleton("Connichiwa","CWGyroscope",{_lastMeasure:void 0,_alphaGammaFlipped:!1,__constructor:function(){gyro.frequency=500,gyro.startTracking(this._onUpdate)},"private _onUpdate":function(e){if(null!==e.alpha&&null!==e.beta&&null!==e.gamma&&null!==e.x&&null!==e.y&&null!==e.z){if(void 0===this._lastMeasure&&(this._lastMeasure=e),e.alpha<0||e.gamma>180){this._alphaGammaFlipped=!0;var t=this._lastMeasure.alpha;this._lastMeasure.alpha=this._lastMeasure.gamma,this._lastMeasure.gamma-t}var i=this._alphaGammaFlipped?e.gamma:e.alpha,n=e.beta,o=this._alphaGammaFlipped?e.alpha:e.gamma,a=i-this._lastMeasure.alpha,c=n-this._lastMeasure.beta,r=o-this._lastMeasure.gamma,s={alpha:i,beta:n,gamma:o,delta:{alpha:a,beta:c,gamma:r}};CWEventManager.trigger(5,"gyroscopeUpdate",s);var h=e.x-this._lastMeasure.x,d=e.y-this._lastMeasure.y,g=e.z-this._lastMeasure.z,u={x:e.x,y:e.y,z:e.z,delta:{x:h,y:d,z:g}};CWEventManager.trigger(5,"accelerometerUpdate",u),this._lastMeasure={x:e.x,y:e.y,z:e.z,alpha:i,beta:n,gamma:o}}},"package getLastGyroscopeMeasure":function(){return void 0===this._lastMeasure?void 0:{alpha:this._lastMeasure.alpha,beta:this._lastMeasure.beta,gamma:this._lastMeasure.gamma}},"package getLastAccelerometerMeasure":function(){return void 0===this._lastMeasure?void 0:{x:this._lastMeasure.x,y:this._lastMeasure.y,z:this._lastMeasure.z}}});CWLocation.toGlobal=function(e,t,i,n){void 0===e&&(e=0),void 0===t&&(t=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:e,y:t,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=t,o.x=e,o.width=i,o.height=n),90===a.rotation&&(o.y=a.height*a.scale-e-i,o.x=t,o.width=n,o.height=i),180===a.rotation&&(o.y=a.height*a.scale-t-n,o.x=a.width*a.scale-e-i,o.width=i,o.height=n),270===a.rotation&&(o.y=e,o.x=a.width*a.scale-t-n,o.width=n,o.height=i),o.x+=a.x*a.scale,o.y+=a.y*a.scale,o.x/=a.scale,o.y/=a.scale,o.width/=a.scale,o.height/=a.scale,o},CWLocation.toLocal=function(e,t,i,n){void 0===e&&(e=0),void 0===t&&(t=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:e,y:t,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=t-a.y,o.x=e-a.x,o.width=i,o.height=n),90===a.rotation&&(o.y=e-a.x,o.x=a.height-(t-a.y+n),o.width=n,o.height=i),180===a.rotation&&(o.y=a.height-(t-a.y+n),o.x=a.width-(e-a.x+i),o.width=i,o.height=n),270===a.rotation&&(o.y=a.width-(e-a.x+i),o.x=t-a.y,o.width=n,o.height=i),o.x*=a.scale,o.y*=a.scale,o.width*=a.scale,o.height*=a.scale,o},CWLocation.applyRotation=function(e,t,i,n,o){var a=CWStitchManager.getDeviceTransformation();void 0===e&&(e=0),void 0===t&&(t=0),void 0===i&&(i=0),void 0===n&&(n=0),void 0===o&&(o=a.rotation);var c={x:e,y:t,width:i,height:n};return 0===a.rotation&&(c.y=t,c.x=e,c.width=i,c.height=n),90===a.rotation&&(c.y=-e,c.x=t,c.width=n,c.height=i),180===a.rotation&&(c.y=-t,c.x=-e,c.width=i,c.height=n),270===a.rotation&&(c.y=e,c.x=-t,c.width=n,c.height=i),c},CWLocation.fromString=function(e){var t=JSON.parse(e);return new CWLocation(parseFloat(t.x),parseFloat(t.y),parseFloat(t.width),parseFloat(t.height),!1)};var CWStitchManager=OOP.createSingleton("Connichiwa","CWStitchManager",{"private _isStitched":!1,"private _deviceTransformation":void 0,"private _gyroDataOnStitch":void 0,"public unstitchOnMove":!0,"public ignoreMoveAxis":[],__constructor:function(){Connichiwa.on("stitchswipe",this._onLocalSwipe),Connichiwa.on("wasStitched",this._onWasStitched),Connichiwa.on("wasUnstitched",this._onWasUnstitched),Connichiwa.on("gyroscopeUpdate",this._onGyroUpdate),Connichiwa.on("accelerometerUpdate",this._onAccelerometerUpdate)},_onWasStitched:function(e){this._gyroDataOnStitch=this.package.CWGyroscope.getLastGyroscopeMeasure(),this._deviceTransformation=e.deviceTransformation,this._isStitched=!0},_onWasUnstitched:function(){this._gyroDataOnStitch=void 0,this._deviceTransformation=this.DEFAULT_DEVICE_TRANSFORMATION(),this._isStitched=!1},_onLocalSwipe:function(e){e.device=Connichiwa.getIdentifier(),e.width=CWSystemInfo.viewportWidth(),e.height=CWSystemInfo.viewportHeight(),Connichiwa.send("master","_stitchswipe",e)},_onGyroUpdate:function(e){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){void 0===this._gyroDataOnStitch&&(this._gyroDataOnStitch=e);var t=Math.abs(e.alpha-this._gyroDataOnStitch.alpha),i=Math.abs(e.beta-this._gyroDataOnStitch.beta),n=Math.abs(e.gamma-this._gyroDataOnStitch.gamma);t=Math.abs((t+180)%360-180),i=Math.abs((i+180)%360-180),n=Math.abs((n+180)%360-180),(CWUtil.inArray("alpha",this.ignoreMoveAxis)===!1&&t>=35||CWUtil.inArray("beta",this.ignoreMoveAxis)===!1&&i>=20||CWUtil.inArray("gamma",this.ignoreMoveAxis)===!1&&n>=20)&&this._quitStitch()}},_onAccelerometerUpdate:function(e){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){var t=Math.abs(e.x),i=Math.abs(e.y),n=Math.abs(Math.abs(e.z)-9.81);(CWUtil.inArray("x",this.ignoreMoveAxis)===!1&&t>=1||CWUtil.inArray("y",this.ignoreMoveAxis)===!1&&i>=1||CWUtil.inArray("z",this.ignoreMoveAxis)===!1&&n>=1)&&this._quitStitch()}},"private _quitStitch":function(){var e={device:Connichiwa.getIdentifier()};Connichiwa.send("master","_quitstitch",e)},"public unstitch":function(){this._quitStitch()},"public isStitched":function(){return this._isStitched},"public getDeviceTransformation":function(){return void 0===this._deviceTransformation?this.DEFAULT_DEVICE_TRANSFORMATION():this._deviceTransformation},"private DEFAULT_DEVICE_TRANSFORMATION":function(){return{x:0,y:0,width:CWSystemInfo.viewportWidth(),height:CWSystemInfo.viewportHeight(),rotation:0,scale:1}}}),CWSystemInfo=OOP.createSingleton("Connichiwa","CWSystemInfo",{_ppi:void 0,"public PPI":function(){return void 0!==this._ppi?this._ppi:(this._ppi=this.DEFAULT_PPI(),window.devicePixelRatio>1&&(this._ppi=142),"iPad"===navigator.platform&&(this._ppi=132),("iPhone"===navigator.platform||"iPod"===navigator.platform)&&(this._ppi=3===window.devicePixelRatio?153:163),this._ppi)},"public isLandscape":function(){return window.innerHeight-1},r=function(e){return e?(e^16*Math.random()>>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,CWUtil.createUUID)};return{parseURL:e,getEventLocation:t,randomInt:i,isInt:n,isString:o,isObject:a,inArray:c,createUUID:r}}();CWVector.prototype.angle=function(e){var t=this.deltaX()*e.deltaX()+this.deltaY()*e.deltaY(),i=this.length()*e.length();return Math.acos(t/i)*(180/Math.PI)};var CWWebsocketMessageParser=OOP.createSingleton("Connichiwa","CWWebsocketMessageParser",{"package parse":function(e){switch(e._name){case"_ack":this._parseAck(e);break;case"_insert":this._parseInsert(e);break;case"_replace":this._parseReplace(e);break;case"_loadscript":this._parseLoadScript(e);break;case"_loadcss":this._parseLoadCSS(e);break;case"_wasstitched":this._parseWasStitched(e);break;case"_wasunstitched":this._parseWasUnstitched(e);break;case"_gotstitchneighbor":this._parseGotStitchNeighbor(e)}return!0},_parseAck:function(e){CWEventManager.trigger("__ack_message"+e.original._id)},_parseInsert:function(e){$(e.selector).append(e.html)},_parseReplace:function(e){e.contentOnly===!0?$(e.selector).html(e.html):$(e.selector).replaceWith(e.html)},_parseLoadScript:function(e){var t=this;$.getScript(e.url).done(function(){t.package.Connichiwa._sendAck(e)}).fail(function(t,i,n){CWDebug.err(1,"There was an error loading '"+e.url+"': "+n)})},_parseLoadCSS:function(e){var t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),t.setAttribute("href",e.url),$("head").append(t),this.package.Connichiwa._sendAck(e)},_parseWasStitched:function(e){CWEventManager.trigger("wasStitched",e)},_parseWasUnstitched:function(e){CWEventManager.trigger("wasUnstitched",e)},_parseGotStitchNeighbor:function(e){CWEventManager.trigger("gotstitchneighbor",e)}}),Connichiwa=OOP.createSingleton("Connichiwa","Connichiwa",{"private _websocket":void 0,"public getLocalDevice":function(){},"public getIdentifier":function(){},"public isMaster":function(){},"public on":function(e,t){return"load"===e?void this.onLoad(t):void CWEventManager.register(e,t)},"public onMessage":function(e,t){this.on("message"+e,t)},"public onLoad":function(e){"complete"===document.readyState?window.setTimeout(e,0):Connichiwa.on("ready",e)},"public insert":function(e,t,i){if(void 0===i&&(i=t,t="body"),CWUtil.isObject(t)&&(t="#"+$(t).attr("id")),CWUtil.isObject(i)===!0){var n=$(i),o=n.clone();o[0].style.cssText=n[0].style.cssText,i=o[0].outerHTML}CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier());var a={selector:t,html:i};this.send(e,"_insert",a)},"public replace":function(e,t,i){void 0===i&&(i=t,t="body"),this._replace(e,t,i,!1)},"public replaceContent":function(e,t,i){void 0===i&&(i=t,t="body"),this._replace(e,t,i,!0)},"private _replace":function(e,t,i,n){if(void 0===i&&(i=t,t="body"),CWUtil.isObject(t)&&(t="#"+$(t).attr("id")),CWUtil.isObject(i)===!0){var o=$(i),a=o.clone();a[0].style.cssText=o[0].style.cssText,i=a[0].outerHTML}CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier());var c={selector:t,html:i,contentOnly:n};this.send(e,"_replace",c)},"public loadScript":function(e,t,i){var n={url:t},o=this.send(e,"_loadscript",n);void 0!==i&&this.on("__ack_message"+o,i)},"public loadCSS":function(e,t){{var i={url:t};this.send(e,"_loadcss",i)}},"public send":function(e,t,i){return void 0===i&&(i=e,e="master"),CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier()),i._name=t,i._source=this.getIdentifier(),i._target=e,this._sendObject(i)},"public respond":function(e,t,i){this.send(e._source,t,i)},"public broadcast":function(e,t,i){i&&(t._broadcastToSource=!0),this.send("broadcast",e,t)},"package _sendAck":function(e){var t={original:e};this.send(e._source,"_ack",t)},"package _sendObject":function(e){if("_name"in e==!1)return void console.warn("Tried to send message without _name, ignoring: "+JSON.stringify(e));e._id=CWUtil.randomInt(0,9999999999),e._name=e._name.toLowerCase();var t=JSON.stringify(e);return CWDebug.log(4,"Sending message: "+t),this._websocket.send(t),e._id},"package _disconnectWebsocket":function(){this._websocket.close()},_cleanupWebsocket:function(){void 0!==this._websocket&&(this._websocket.onopen=void 0,this._websocket.onmessage=void 0,this._websocket.onclose=void 0,this._websocket.onerror=void 0,this._websocket=void 0)}});CWDevice.prototype.connect=function(){this.canBeConnected()!==!1&&(this.connectionState=CWDeviceConnectionState.CONNECTING,nativeCallConnectRemote(this.getIdentifier()))};var CWDeviceManager=function(){var e,t=[],i=function(e){if(CWDevice.prototype.isPrototypeOf(e)===!1)throw"Cannot add a non-device";return null!==o(e.getIdentifier())?!1:(CWDebug.log(3,"Added device: "+e.getIdentifier()),t.push(e),!0)},n=function(e){CWDevice.prototype.isPrototypeOf(e)===!0&&(e=e.getIdentifier());var i=o(e);if(null===i)return!1;CWDebug.log("Removed device: "+e);var n=t.indexOf(i);return t.splice(n,1),!0},o=function(i){if(void 0!==e&&(i===e.getIdentifier()||"master"===i))return e;for(var n=0;n1e3))){CWDebug.log(4,"Checking connection constraint");var a=CWDeviceManager.getDeviceWithIdentifier(o.device);if(null!==a&&a.isConnected()!==!1)return void this._detectedStitch(o,t)}}this._swipes[t.device]=t}},"package unstitchDevice":function(e){if(e in this._devices){var t={deviceTransformation:this.getDeviceTransformation(e)};Connichiwa.send(e,"_wasunstitched",t),delete this._devices[e],CWDebug.log(3,"Device was unstitched: "+e)}},"private _detectedStitch":function(e,t){function i(e,t){var i={};return 0===t&&(i.y=e.y,i.x=e.x,i.width=e.width,i.height=e.height),90===t&&(i.y=e.width-e.x,i.x=e.y,i.width=e.height,i.height=e.width),180===t&&(i.y=e.height-e.y,i.x=e.width-e.x,i.width=e.width,i.height=e.height),270===t&&(i.y=e.x,i.x=e.height-e.y,i.width=e.height,i.height=e.width),i}if(0===Object.keys(this._devices).length){if(t.device===Connichiwa.getIdentifier()){var n=e;e=t,t=n}var o=this._createStitchData(e.device);o.width=e.width,o.height=e.height,this._devices[e.device]=o,CWDebug.log(3,"First device was auto-stitched: "+JSON.stringify(o)),CWEventManager.trigger("stitch",t.device,e.device);var a={otherDevice:t.device,edge:e.edge,deviceTransformation:this.getDeviceTransformation(e.device,!0)};Connichiwa.send(e.device,"_wasstitched",a)}var c=this._getStitchData(e.device),r=this._getStitchData(t.device);if(!(void 0===c&&void 0===r||void 0!==c&&void 0!==r)){var s,h;void 0!==c?(s=e,h=t):(s=t,h=e);var d=CWDeviceManager.getDeviceWithIdentifier(s.device),g=CWDeviceManager.getDeviceWithIdentifier(h.device),u=this._getStitchData(s.device),v=this._createStitchData(h.device);v.scale=g.getPPI()/d.getPPI()*u.scale;var l=0,p=this._indexForEdge(s.edge)-this._indexForEdge(h.edge);0>p&&(p+=4),2===p&&(l=0),3===p&&(l=90),1===p&&(l=270),0===p&&(l=180),v.rotation=(l+u.rotation)%360;var f=i(h,v.rotation);f.edge=(this._indexForEdge(h.edge)+v.rotation/90)%4,f.y/=v.scale,f.x/=v.scale,f.width/=v.scale,f.height/=v.scale;var C=i(s,u.rotation);C.edge=(this._indexForEdge(s.edge)+u.rotation/90)%4,C.y/=u.scale,C.x/=u.scale,C.width/=u.scale,C.height/=u.scale,v.width=f.width,v.height=f.height,v.deviceWidth=h.width,v.deviceHeight=h.height,v.transformX=u.transformX+C.x-f.x,v.transformY=u.transformY+C.y-f.y,this._devices[h.device]=v,CWDebug.log(3,"Device was stitched: "+JSON.stringify(v)),CWEventManager.trigger("stitch",s.device,h.device);var a={otherDevice:s.device,edge:h.edge,deviceTransformation:this.getDeviceTransformation(h.device,!0)};g.send("_wasstitched",a);var _={otherDevice:h.device,edge:s.edge};d.send("_gotstitchneighbor",_)}},"private _createStitchData":function(e){return{device:e,width:0,height:0,transformX:0,transformY:0,rotation:0,scale:1}},"private _getStitchData":function(e){return CWDevice.prototype.isPrototypeOf(e)&&(e=e.getIdentifier()),this._devices[e]},"private _coordinateForEdge":function(e,t){var i=this._axisForEdge(e);return null===i?null:t[i]},"private _axisForEdge":function(e){return"left"===e||"right"===e?"y":"top"===e||"bottom"===e?"x":null},"private _invertAxis":function(e){return"x"===e?"y":"y"===e?"x":null},"private _oppositeEdge":function(e){switch(e){case"top":return"bottom";case"bottom":return"top";case"left":return"right";case"right":return"left"}return"invalid"},"private _indexForEdge":function(e){switch(e){case"top":return 0;case"bottom":return 2;case"left":return 1;case"right":return 3}return-1},"private _edgeForIndex":function(e){switch(e){case 0:return"top";case 2:return"bottom";case 3:return"right";case 1:return"left"}return"invalid"}}),OOP.extendSingleton("Connichiwa","CWWebsocketMessageParser",{"package parseOnMaster":function(e){switch(e._name){case"remoteinfo":this._parseRemoteInfo(e);break;case"_stitchswipe":this._parseStitchSwipe(e);break;case"_quitstitch":this._parseQuitStitch(e)}},_parseRemoteInfo:function(e){var t=CWDeviceManager.getDeviceWithIdentifier(e.identifier);null===t?(t=new CWDevice(e),CWDeviceManager.addDevice(t)):CWDebug.log(1,"TODO"),t.connectionState=CWDeviceConnectionState.CONNECTED,nativeCallRemoteDidConnect(t.getIdentifier()),t.send("_debuginfo",CWDebug.getDebugInfo());for(var i=function(){CWEventManager.trigger("deviceConnected",t)},n=function(e,t){var i=t.split(".").pop().toLowerCase();"css"===i&&e.loadCSS(t)},o=[],a=[],c=0;c0)for(var c=0;c=5?void nativeCallWebsocketDidClose():void setTimeout(function(){this._connectWebsocket()},1e3*this._connectionAttempts)},_onWebsocketError:function(){this._onWebsocketClose()}}); //# sourceMappingURL=connichiwa.min.js.map \ No newline at end of file diff --git a/ConnichiwaResources/weblib/connichiwa.min.js.map b/ConnichiwaResources/weblib/connichiwa.min.js.map index 51f87be..f120fa9 100644 --- a/ConnichiwaResources/weblib/connichiwa.min.js.map +++ b/ConnichiwaResources/weblib/connichiwa.min.js.map @@ -1 +1 @@ -{"version":3,"file":"connichiwa.min.js","sources":["connichiwa.js"],"names":["CWDevice","properties","identifier","this","discoveryState","CWDeviceDiscoveryState","LOST","connectionState","CWDeviceConnectionState","DISCONNECTED","distance","_identifier","_launchDate","Date","now","_ips","_port","undefined","_name","_ppi","CWSystemInfo","DEFAULT_PPI","launchDate","ips","port","name","ppi","getIdentifier","getLaunchDate","getIPs","getPort","getName","getPPI","isLocal","equalTo","Connichiwa","getLocalDevice","isNearby","DISCOVERED","canBeConnected","isConnected","CONNECTED","CWLocation","x","y","width","height","global","toGlobal","CWEventManager","register","message","deviceTransformation","scale","bind","getGlobal","getLocal","toLocal","getGlobalX","getGlobalY","getGlobalWidth","getGlobalHeight","getLocalX","getLocalY","getLocalWidth","getLocalHeight","setGlobal","setLocal","CWDebug","log","JSON","stringify","setGlobalX","v","setGlobalY","setGlobalWidth","setGlobalHeight","setLocalX","local","setLocalY","setLocalWidth","setLocalHeight","toString","copy","fromString","CWPoint","CWSize","CWVector","p1","p2","_p1","_p2","_deltaX","_deltaY","_length","Math","sqrt","pow","deltaX","deltaY","length","OOP","DEFAULT_PACKAGE_NAME","classes","packages","createSingleton","packageName","className","_createSingletonInPackage","theClass","private","package","public","thePackage","_extendSingletonInPackage","extendSingleton","addedConstructor","getter","scope","propertyName","setter","value","errorGetter","errorSetter","TypeError","modifiedPropertyName","hasOwnProperty","visibility","indexOf","substr","theMethod","Object","defineProperty","get","set","window","setTimeout","__constructor","debug","enableDebug","disableDebug","priority","console","err","CONNECTING","prototype","insert","target","html","replace","replaceContent","loadScript","url","callback","loadCSS","send","object","isPrototypeOf","_callbacks","event","toLowerCase","push","events","split","i","trigger","logPrio","args","Array","slice","call","arguments","CWUtil","isString","shift","apply","CWGestures","private _touchStart","private _touchLast","private _touchLastVector","private _touchCheckable","private _touchAngleReferenceVector","private _touchAngleChangedCount","that","$","document","ready","captureOn","private _onDown","e","_touchStart","getEventLocation","private _onMove","newTouch","_touchLast","totalTouchVector","newTouchVector","_touchCheckable","_touchAngleReferenceVector","referenceTouchAngle","angle","_touchAngleChangedCount","_touchLastVector","newTouchAngle","private _onUp","swipeStart","swipeEnd","swipeLength","xyRatio","direction","abs","rubberBanding","innerHeight","endsAtTopEdge","endsAtLeftEdge","endsAtBottomEdge","endsAtRightEdge","edge","swipeData","public captureOn","el","jQuery","addEventListener","_onDown","_onMove","_onUp","CWGyroscope","_lastMeasure","_alphaGammaFlipped","gyro","frequency","startTracking","_onUpdate","private _onUpdate","o","alpha","beta","gamma","z","temp","deltaAlpha","deltaBeta","deltaGamma","gyroData","delta","deltaZ","accelData","package getLastGyroscopeMeasure","package getLastAccelerometerMeasure","result","transformation","CWStitchManager","getDeviceTransformation","rotation","applyRotation","s","obj","parse","parseFloat","private _isStitched","private _deviceTransformation","private _gyroDataOnStitch","public unstitchOnMove","public ignoreMoveAxis","on","_onLocalSwipe","_onWasStitched","_onWasUnstitched","_onGyroUpdate","_onAccelerometerUpdate","_gyroDataOnStitch","getLastGyroscopeMeasure","_deviceTransformation","_isStitched","DEFAULT_DEVICE_TRANSFORMATION","device","viewportWidth","viewportHeight","isStitched","unstitchOnMove","inArray","ignoreMoveAxis","_quitStitch","private _quitStitch","data","public unstitch","public isStitched","public getDeviceTransformation","private DEFAULT_DEVICE_TRANSFORMATION","public PPI","devicePixelRatio","navigator","platform","public isLandscape","innerWidth","public viewportWidth","public viewportHeight","public DEFAULT_PPI","parseURL","parser","createElement","href","type","pos","touches","originalEvent","targetTouches","randomInt","min","max","Number","MAX_VALUE","floor","random","isInt","parseInt","isObject","array","createUUID","a","otherVector","vectorsProduct","vectorsLength","acos","PI","CWWebsocketMessageParser","package parse","_parseAck","_parseInsert","_parseReplace","_parseLoadScript","_parseLoadCSS","_parseWasStitched","_parseWasUnstitched","_parseGotStitchNeighbor","original","_id","selector","append","contentOnly","replaceWith","getScript","done","_sendAck","fail","f","t","cssEntry","setAttribute","private _websocket","public getLocalDevice","public getIdentifier","public isMaster","public on","eventName","onLoad","public onMessage","public onLoad","readyState","public insert","attr","clone","style","cssText","outerHTML","public replace","_replace","public replaceContent","private _replace","public loadScript","messageID","public loadCSS","public send","_source","_target","_sendObject","public respond","originalMessage","responseObject","public broadcast","sendToSelf","_broadcastToSource","package _sendAck","ackMessage","package _sendObject","warn","messageString","_websocket","package _disconnectWebsocket","close","_cleanupWebsocket","onopen","onmessage","onclose","onerror","connect","nativeCallConnectRemote","CWDeviceManager","_localDevice","_remoteDevices","addDevice","newDevice","getDeviceWithIdentifier","removeDevice","index","splice","remoteDevice","getConnectedDevices","connectedDevices","createLocalDevice","CWNativeMasterCommunication","public callOnNative","methodName","isRunningNative","method","public parse","_parseDebug","_parseConnectWebsocket","_parseLocalInfo","_parseDeviceDetected","_parseDeviceDistanceChanged","_parseDeviceLost","_parseRemoteConnectFailed","_parseRemoteDisconnected","_parseDisconnectWebsocket","cwdebug","_connectWebsocket","success","autoConnect","localDevice","_disconnectWebsocket","private _swipes","private _devices","forceRecent","_getStitchData","transformX","transformY","package detectedSwipe","swipe","date","key","_swipes","savedSwipe","getTime","savedDevice","_detectedStitch","package unstitchDevice","_devices","unstitchMessage","private _detectedStitch","firstSwipe","secondSwipe","rotateSwipe","keys","tempSwipe","stitchData","_createStitchData","wasstitchMessage","otherDevice","firstStitchData","secondStitchData","stitchedSwipe","newSwipe","stitchedDevice","stitchedStitchData","newStitchData","rotationIndex","_indexForEdge","newRelativeSwipe","stitchedRelativeSwipe","deviceWidth","deviceHeight","gotneighborMessage","private _createStitchData","private _getStitchData","private _coordinateForEdge","point","axis","_axisForEdge","private _axisForEdge","private _invertAxis","private _oppositeEdge","private _indexForEdge","private _edgeForIndex","package parseOnMaster","_parseRemoteInfo","_parseStitchSwipe","_parseQuitStitch","nativeCallRemoteDidConnect","didConnectCallback","loadOtherFile","file","extension","pop","autoLoadJS","autoLoadOther","autoLoad","script","detectedSwipe","unstitchDevice","private _connectionAttempts","public autoConnect","public autoLoad","public getIPs","public getPort","package _connectWebsocket","state","OPEN","WebSocket","_onWebsocketOpen","_onWebsocketMessage","_onWebsocketClose","_onWebsocketError","_connectionAttempts","nativeCallWebsocketDidOpen","requestAnimationFrame","parseOnMaster","nativeCallWebsocketDidClose"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"connichiwa.min.js","sources":["connichiwa.js"],"names":["CWDevice","properties","identifier","this","discoveryState","CWDeviceDiscoveryState","LOST","connectionState","CWDeviceConnectionState","DISCONNECTED","distance","_identifier","_launchDate","Date","now","_ips","_port","undefined","_name","_ppi","CWSystemInfo","DEFAULT_PPI","launchDate","ips","port","name","ppi","getIdentifier","getLaunchDate","getIPs","getPort","getName","getPPI","isLocal","equalTo","Connichiwa","getLocalDevice","isNearby","DISCOVERED","canBeConnected","isConnected","CONNECTED","CWLocation","x","y","width","height","global","toGlobal","CWEventManager","register","message","deviceTransformation","scale","bind","getGlobal","getLocal","toLocal","getGlobalX","getGlobalY","getGlobalWidth","getGlobalHeight","getLocalX","getLocalY","getLocalWidth","getLocalHeight","setGlobal","setLocal","CWDebug","log","JSON","stringify","setGlobalX","v","setGlobalY","setGlobalWidth","setGlobalHeight","setLocalX","local","setLocalY","setLocalWidth","setLocalHeight","toString","copy","fromString","CWPoint","CWSize","CWVector","p1","p2","_p1","_p2","_deltaX","_deltaY","_length","Math","sqrt","pow","deltaX","deltaY","length","OOP","DEFAULT_PACKAGE_NAME","classes","packages","createSingleton","packageName","className","_createSingletonInPackage","theClass","private","package","public","thePackage","_extendSingletonInPackage","extendSingleton","addedConstructor","getter","scope","propertyName","setter","value","errorGetter","errorSetter","TypeError","modifiedPropertyName","hasOwnProperty","visibility","indexOf","substr","theMethod","Object","defineProperty","get","set","window","setTimeout","__constructor","_debug","_logLevel","public setDebug","public setLogLevel","public setDebugInfo","info","console","debug","logLevel","setDebug","setLogLevel","public getDebugInfo","public log","level","msg","public err","CONNECTING","prototype","insert","target","html","replace","replaceContent","loadScript","url","callback","loadCSS","send","object","isPrototypeOf","_callbacks","event","toLowerCase","push","events","split","i","trigger","logPrio","args","Array","slice","call","arguments","CWUtil","isString","shift","apply","CWGestures","private _touchStart","private _touchLast","private _touchLastVector","private _touchCheckable","private _touchAngleReferenceVector","private _touchAngleChangedCount","that","$","document","ready","captureOn","private _onDown","e","_touchStart","getEventLocation","private _onMove","newTouch","_touchLast","totalTouchVector","newTouchVector","_touchCheckable","_touchAngleReferenceVector","referenceTouchAngle","angle","_touchAngleChangedCount","_touchLastVector","newTouchAngle","private _onUp","swipeStart","swipeEnd","swipeLength","xyRatio","direction","abs","rubberBanding","innerHeight","endsAtTopEdge","endsAtLeftEdge","endsAtBottomEdge","endsAtRightEdge","edge","swipeData","public captureOn","el","jQuery","addEventListener","_onDown","_onMove","_onUp","CWGyroscope","_lastMeasure","_alphaGammaFlipped","gyro","frequency","startTracking","_onUpdate","private _onUpdate","o","alpha","beta","gamma","z","temp","deltaAlpha","deltaBeta","deltaGamma","gyroData","delta","deltaZ","accelData","package getLastGyroscopeMeasure","package getLastAccelerometerMeasure","result","transformation","CWStitchManager","getDeviceTransformation","rotation","applyRotation","s","obj","parse","parseFloat","private _isStitched","private _deviceTransformation","private _gyroDataOnStitch","public unstitchOnMove","public ignoreMoveAxis","on","_onLocalSwipe","_onWasStitched","_onWasUnstitched","_onGyroUpdate","_onAccelerometerUpdate","_gyroDataOnStitch","getLastGyroscopeMeasure","_deviceTransformation","_isStitched","DEFAULT_DEVICE_TRANSFORMATION","device","viewportWidth","viewportHeight","isStitched","unstitchOnMove","inArray","ignoreMoveAxis","_quitStitch","private _quitStitch","data","public unstitch","public isStitched","public getDeviceTransformation","private DEFAULT_DEVICE_TRANSFORMATION","public PPI","devicePixelRatio","navigator","platform","public isLandscape","innerWidth","public viewportWidth","public viewportHeight","public DEFAULT_PPI","parseURL","parser","createElement","href","type","pos","touches","originalEvent","targetTouches","randomInt","min","max","Number","MAX_VALUE","floor","random","isInt","parseInt","isObject","array","createUUID","a","otherVector","vectorsProduct","vectorsLength","acos","PI","CWWebsocketMessageParser","package parse","_parseAck","_parseInsert","_parseReplace","_parseLoadScript","_parseLoadCSS","_parseWasStitched","_parseWasUnstitched","_parseGotStitchNeighbor","original","_id","selector","append","contentOnly","replaceWith","getScript","done","_sendAck","fail","f","t","err","cssEntry","setAttribute","private _websocket","public getLocalDevice","public getIdentifier","public isMaster","public on","eventName","onLoad","public onMessage","public onLoad","readyState","public insert","attr","clone","style","cssText","outerHTML","public replace","_replace","public replaceContent","private _replace","public loadScript","messageID","public loadCSS","public send","_source","_target","_sendObject","public respond","originalMessage","responseObject","public broadcast","sendToSelf","_broadcastToSource","package _sendAck","ackMessage","package _sendObject","warn","messageString","_websocket","package _disconnectWebsocket","close","_cleanupWebsocket","onopen","onmessage","onclose","onerror","connect","nativeCallConnectRemote","CWDeviceManager","_localDevice","_remoteDevices","addDevice","newDevice","getDeviceWithIdentifier","removeDevice","index","splice","remoteDevice","getConnectedDevices","connectedDevices","createLocalDevice","CWNativeMasterCommunication","public callOnNative","methodName","isRunningNative","method","public parse","_parseDebugInfo","_parseConnectWebsocket","_parseLocalInfo","_parseDeviceDetected","_parseDeviceDistanceChanged","_parseDeviceLost","_parseRemoteConnectFailed","_parseRemoteDisconnected","_parseDisconnectWebsocket","setDebugInfo","_connectWebsocket","success","autoConnect","localDevice","_disconnectWebsocket","private _swipes","private _devices","forceRecent","_getStitchData","transformX","transformY","package detectedSwipe","swipe","date","key","_swipes","savedSwipe","getTime","savedDevice","_detectedStitch","package unstitchDevice","_devices","unstitchMessage","private _detectedStitch","firstSwipe","secondSwipe","rotateSwipe","keys","tempSwipe","stitchData","_createStitchData","wasstitchMessage","otherDevice","firstStitchData","secondStitchData","stitchedSwipe","newSwipe","stitchedDevice","stitchedStitchData","newStitchData","rotationIndex","_indexForEdge","newRelativeSwipe","stitchedRelativeSwipe","deviceWidth","deviceHeight","gotneighborMessage","private _createStitchData","private _getStitchData","private _coordinateForEdge","point","axis","_axisForEdge","private _axisForEdge","private _invertAxis","private _oppositeEdge","private _indexForEdge","private _edgeForIndex","package parseOnMaster","_parseRemoteInfo","_parseStitchSwipe","_parseQuitStitch","nativeCallRemoteDidConnect","getDebugInfo","didConnectCallback","loadOtherFile","file","extension","pop","autoLoadJS","autoLoadOther","autoLoad","script","detectedSwipe","unstitchDevice","private _connectionAttempts","public autoConnect","public autoLoad","public getIPs","public getPort","package _connectWebsocket","state","OPEN","WebSocket","_onWebsocketOpen","_onWebsocketMessage","_onWebsocketClose","_onWebsocketError","_connectionAttempts","nativeCallWebsocketDidOpen","requestAnimationFrame","parseOnMaster","nativeCallWebsocketDidClose"],"mappings":"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"} \ No newline at end of file diff --git a/ConnichiwaResources/weblib/remote.js b/ConnichiwaResources/weblib/remote.js index 722dd57..e49e223 100644 --- a/ConnichiwaResources/weblib/remote.js +++ b/ConnichiwaResources/weblib/remote.js @@ -204,6 +204,7 @@ var OOP = (function() { extendSingleton : extendSingleton }; })(); +/* global OOP */ "use strict"; @@ -213,48 +214,43 @@ var OOP = (function() { * * @namespace CWDebug */ -var CWDebug = (function() -{ - /** - * true if debug mode is on, otherwise false - */ - var debug = true; +var CWDebug = OOP.createSingleton("Connichiwa", "CWDebug", { + _debug: false, + _logLevel: 0, - var enableDebug = function() { - debug = true; - }; + "public setDebug": function(v) { + this._debug = v; + }, + "public setLogLevel": function(v) { + this._logLevel = v; + }, - var disableDebug = function() { - debug = false; - }; - /** - * Logs a message to the console if debug mode is on - * - * @param {int} priority The priority of the message. Messages with lower priority are printed at lower debug states. - * @param {string} message the message to log - * - * @memberof CWDebug - */ - var log = function(priority, message) - { - // if (priority > 3) return; - if (debug) console.log(priority + "|" + message); - }; + "public setDebugInfo": function(info) { + console.log("SETTING DEBUG INFO: "+info.debug+" || "+info.logLevel); + if (info.debug) CWDebug.setDebug(info.debug); + if (info.logLevel) CWDebug.setLogLevel(info.logLevel); + }, - var err = function(priority, message) { - if (debug) console.err(priority + "|" + message); - }; - return { - enableDebug : enableDebug, - disableDebug : disableDebug, - log : log, - err : err - }; -})(); -/* global Connichiwa, CWSystemInfo, CWUtil, CWEventManager, CWDebug */ + "public getDebugInfo": function() { + return { debug: this._debug, logLevel: this._logLevel }; + }, + + + "public log": function(level, msg) { + if (this._debug && level <= this._logLevel) { + console.log(level + "|" + msg); + } + }, + + "public err": function(msg) { + if (this._debug) { + console.log("ERROR" + "|" + msg); + } + } +});/* global Connichiwa, CWSystemInfo, CWUtil, CWEventManager, CWDebug */ /* global nativeCallConnectRemote */ "use strict"; @@ -1812,11 +1808,17 @@ OOP.extendSingleton("Connichiwa", "CWWebsocketMessageParser", { "package parseOnRemote": function(message) { switch (message._name) { + case "_debuginfo" : this._parseDebugInfo(message); break; case "_softdisconnect" : this._parseSoftDisconnect(message); break; } }, + _parseDebugInfo: function(message) { + CWDebug.setDebugInfo(message); + }, + + _parseSoftDisconnect: function(message) { this.package.Connichiwa._softDisconnectWebsocket(); }, @@ -1951,7 +1953,6 @@ OOP.extendSingleton("Connichiwa", "Connichiwa", { _onWebsocketClose: function() { - console.log("close"); CWDebug.log(3, "Websocket closed"); this._cleanupWebsocket(); // nativeWebsocketDidClose(); @@ -1970,7 +1971,6 @@ OOP.extendSingleton("Connichiwa", "Connichiwa", { _onWebsocketError: function() { - console.log("error"); CWDebug.log(3, "Error"); this._onWebsocketClose(); }, diff --git a/ConnichiwaResources/weblib/remote.min.js b/ConnichiwaResources/weblib/remote.min.js index 3f652d4..f7ca75e 100644 --- a/ConnichiwaResources/weblib/remote.min.js +++ b/ConnichiwaResources/weblib/remote.min.js @@ -1,2 +1,2 @@ -"use strict";function CWDevice(t){if(!t.identifier)throw"Cannot instantiate CWDevice without an identifier";this.discoveryState=CWDeviceDiscoveryState.LOST,this.connectionState=CWDeviceConnectionState.DISCONNECTED,this.distance=-1;var e=t.identifier,i=Date.now()/1e3,n=[],o=void 0,a="remote device",s=CWSystemInfo.DEFAULT_PPI();return t.launchDate&&(i=t.launchDate),t.ips&&(n=t.ips),t.port&&(o=t.port),t.name&&(a=t.name),t.ppi&&t.ppi>0&&(s=t.ppi),this.getIdentifier=function(){return e},this.getLaunchDate=function(){return i},this.getIPs=function(){return n},this.getPort=function(){return o},this.getName=function(){return a},this.getPPI=function(){return s},this.isLocal=function(){return this.equalTo(Connichiwa.getLocalDevice())},this.isNearby=function(){return this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.canBeConnected=function(){return this.connectionState===CWDeviceConnectionState.DISCONNECTED&&this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.isConnected=function(){return this.connectionState===CWDeviceConnectionState.CONNECTED},this}function CWLocation(t,e,i,n,o){if(o===!0){var a=CWLocation.toGlobal(t,e,i,n);this.x=a.x,this.y=a.y,this.width=a.width,this.height=a.height}else this.x=t,this.y=e,this.width=i,this.height=n;CWEventManager.register("wasUnstitched",function(t){this.x-=t.deviceTransformation.x,this.y-=t.deviceTransformation.y,this.x*=t.deviceTransformation.scale,this.y*=t.deviceTransformation.scale,this.width*=t.deviceTransformation.scale,this.height*=t.deviceTransformation.scale}.bind(this)),CWEventManager.register("wasStitched",function(t){this.x/=t.deviceTransformation.scale,this.y/=t.deviceTransformation.scale,this.width/=t.deviceTransformation.scale,this.height/=t.deviceTransformation.scale,this.x+=t.deviceTransformation.x,this.y+=t.deviceTransformation.y}.bind(this)),this.getGlobal=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},this.getLocal=function(){return CWLocation.toLocal(this.x,this.y,this.width,this.height)},this.getGlobalX=function(){return this.x},this.getGlobalY=function(){return this.y},this.getGlobalWidth=function(){return this.width},this.getGlobalHeight=function(){return this.height},this.getLocalX=function(){return this.getLocal().x},this.getLocalY=function(){return this.getLocal().y},this.getLocalWidth=function(){return this.getLocal().width},this.getLocalHeight=function(){return this.getLocal().height},this.setGlobal=function(t,e,i,n){void 0!==t&&(this.x=t),void 0!==e&&(this.y=e),void 0!==i&&(this.width=i),void 0!==n&&(this.height=n)},this.setLocal=function(t,e,i,n){CWDebug.log(3,"To Global: "+t+", "+e+", "+i+", "+n);var o=CWLocation.toGlobal(t,e,i,n);CWDebug.log(3,JSON.stringify(o)),this.x=o.x,this.y=o.y,this.width=o.width,this.height=o.height},this.setGlobalX=function(t){this.setGlobal(t,this.y,this.width,this.height)},this.setGlobalY=function(t){this.setGlobal(this.x,t,this.width,this.height)},this.setGlobalWidth=function(t){this.setGlobal(this.x,this.y,t,this.height)},this.setGlobalHeight=function(t){this.setGlobal(this.x,this.y,this.width,t)},this.setLocalX=function(t){var e=this.getLocal();this.setLocal(t,e.y,e.width,e.height)},this.setLocalY=function(t){var e=this.getLocal();this.setLocal(e.x,t,e.width,e.height)},this.setLocalWidth=function(t){var e=this.getLocal();this.setLocal(e.x,e.y,t,e.height)},this.setLocalHeight=function(t){var e=this.getLocal();this.setLocal(e.x,e.y,e.width,t)},this.toString=function(){return JSON.stringify(this.getGlobal())},this.copy=function(){return CWLocation.fromString(this.toString())}}function CWPoint(t,e,i){return new CWLocation(t,e,void 0,void 0,i)}function CWSize(t,e,i){return new CWLocation(void 0,void 0,t,e,i)}function CWVector(t,e){if(void 0===t||void 0===e)throw"Cannot instantiate Vector without 2 points";var i=t,n=e,o=n.x-i.x,a=n.y-i.y,s=Math.sqrt(Math.pow(o,2)+Math.pow(a,2));this.p1=function(){return i},this.p2=function(){return n},this.deltaX=function(){return o},this.deltaY=function(){return a},this.length=function(){return s}}var OOP=function(){var t="default",e={},i={},n=function(e,i,n){return void 0===n&&(n=i,i=e,e=t),o(e,i,n)},o=function(t,n,o){var a={private:function(){},package:function(){},public:function(){}};t in i==!1&&(i[t]=function(){});var c=i[t];return c[n]=a.package,a.private.package=c,t in e==!1&&(e[t]={}),e[t][n]=a,s(t,n,o)},a=function(e,i,n){return void 0===n&&(n=i,i=e,e=t),s(e,i,n)},s=function(t,i,n){if(t in e!=!1&&i in e[t]!=!1){var o=!1,a=e[t][i],s=function(t,e){return function(){return t[e]}},c=function(t,e){return function(i){t[e]=i}},r=function(){return void 0},h=function(){throw new TypeError("Cannot set non-visible property")};for(var u in n)if(n.hasOwnProperty(u)){var l="private",d=u;if(0===d.indexOf("public ")?(l="public",d=d.substr(7)):0===d.indexOf("package ")?(l="package",d=d.substr(8)):0===d.indexOf("private ")&&(d=d.substr(8)),"function"==typeof n[u]){var g=n[u].bind(a.private);switch(l){case"private":a.private[d]=g;break;case"package":a.private[d]=g,a.package[d]=g;break;case"public":a.private[d]=g,a.package[d]=g,a.public[d]=g}"__constructor"===d&&(o=!0)}else switch(l){case"private":a.private[d]=n[u],Object.defineProperty(a.package,d,{get:r,set:h}),Object.defineProperty(a.public,d,{get:r,set:h});break;case"package":a.package[d]=n[u],Object.defineProperty(a.private,d,{get:s(a.package,d),set:c(a.package,d)}),Object.defineProperty(a.public,d,{get:r,set:h});break;case"public":a.public[d]=n[u],Object.defineProperty(a.private,d,{get:s(a.public,d),set:c(a.public,d)}),Object.defineProperty(a.package,d,{get:s(a.public,d),set:c(a.public,d)})}}return o===!0&&window.setTimeout(a.private.__constructor,0),a.public}};return{createSingleton:n,extendSingleton:a}}(),CWDebug=function(){var t=!0,e=function(){t=!0},i=function(){t=!1},n=function(e,i){t&&console.log(e+"|"+i)},o=function(e,i){t&&console.err(e+"|"+i)};return{enableDebug:e,disableDebug:i,log:n,err:o}}(),CWDeviceDiscoveryState={DISCOVERED:"discovered",LOST:"lost"},CWDeviceConnectionState={DISCONNECTED:"disconnected",CONNECTING:"connecting",CONNECTED:"connected"};CWDevice.prototype.insert=function(t,e){Connichiwa.insert(this.getIdentifier(),t,e)},CWDevice.prototype.replace=function(t,e){Connichiwa.replace(this.getIdentifier(),t,e)},CWDevice.prototype.replaceContent=function(t,e){Connichiwa.replaceContent(this.getIdentifier(),t,e)},CWDevice.prototype.loadScript=function(t,e){Connichiwa.loadScript(this.getIdentifier(),t,e)},CWDevice.prototype.loadCSS=function(t){Connichiwa.loadCSS(this.getIdentifier(),t)},CWDevice.prototype.send=function(t,e){Connichiwa.send(this.getIdentifier(),t,e)},CWDevice.prototype.equalTo=function(t){return CWDevice.prototype.isPrototypeOf(t)===!1?!1:this.getIdentifier()===t.getIdentifier()},CWDevice.prototype.toString=function(){return this.getIdentifier()};var CWEventManager=function(){var t={},e=function(e,i){if("string"!=typeof e)throw"Event name must be a string";if("function"!=typeof i)throw"Event callback must be a function";if(e=e.toLowerCase(),-1===e.indexOf(" "))t[e]||(t[e]=[]),t[e].push(i),CWDebug.log(3,"Attached callback to "+e);else for(var n=e.split(" "),o=0;o5,this._touchCheckable&&n.length()>1)if(void 0!==this._touchAngleReferenceVector){var o=n.angle(this._touchAngleReferenceVector);if(o>20){if(this._touchAngleChangedCount++,3===this._touchAngleChangedCount)return this._touchStart=void 0,void(this._touchLast=void 0)}else this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0}else if(void 0!==this._touchLastVector){var a=n.angle(this._touchLastVector);a>20&&(this._touchAngleReferenceVector=this._touchLastVector,this._touchAngleChangedCount=1)}n.length()>0&&(this._touchLastVector=n)}this._touchLast=e}},"private _onUp":function(){var t=this._touchStart,e=this._touchLast;if(this._touchStart=void 0,this._touchLast=void 0,this._touchLastVector=void 0,this._touchCheckable=!1,this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0,void 0!==t&&void 0!==e){var i=e.x-t.x,n=e.y-t.y,o=Math.sqrt(Math.pow(i,2)+Math.pow(n,2));if(10>=o)return void CWDebug.log(3,"Swipe REJECTED because it was too short ("+o+")");var a=.25;100>o&&(a=.35),50>o&&(a=.4),40>o&&(a=.45),15>o&&(a=.8);var s="invalid";Math.abs(n)0&&(s="right"),0>i&&(s="left")),Math.abs(i)0&&(s="down"),0>n&&(s="up"));var c=$(window).height()-window.innerHeight;e.y+=c;var r=e.y<=50,h=e.x<=50,u=e.y>=$(window).height()-50,l=e.x>=$(window).width()-50,d="invalid";if(r&&"up"===s&&(d="top"),h&&"left"===s&&(d="left"),u&&"down"===s&&(d="bottom"),l&&"right"===s&&(d="right"),"invalid"===d)return void CWDebug.log(3,"Swipe REJECTED. Ending: x - "+e.x+"/"+($(window).width()-50)+", y - "+e.y+"/"+($(window).height()-50)+". Direction: "+s+". Edge endings: "+r+", "+l+", "+u+", "+h);"top"===d&&(e.y=0),"left"===d&&(e.x=0),"bottom"===d&&(e.y=$(window).height()),"right"===d&&(e.x=$(window).width());var g={edge:d,x:e.x,y:e.y};CWEventManager.trigger("stitchswipe",g)}},"public captureOn":function(t){t instanceof jQuery&&(t=t.get(0)),t.addEventListener("mousedown",this._onDown,!0),t.addEventListener("touchstart",this._onDown,!0),t.addEventListener("mousemove",this._onMove,!0),t.addEventListener("touchmove",this._onMove,!0),t.addEventListener("mouseup",this._onUp,!0),t.addEventListener("touchend",this._onUp,!0)}}),CWGyroscope=OOP.createSingleton("Connichiwa","CWGyroscope",{_lastMeasure:void 0,_alphaGammaFlipped:!1,__constructor:function(){gyro.frequency=500,gyro.startTracking(this._onUpdate)},"private _onUpdate":function(t){if(null!==t.alpha&&null!==t.beta&&null!==t.gamma&&null!==t.x&&null!==t.y&&null!==t.z){if(void 0===this._lastMeasure&&(this._lastMeasure=t),t.alpha<0||t.gamma>180){this._alphaGammaFlipped=!0;var e=this._lastMeasure.alpha;this._lastMeasure.alpha=this._lastMeasure.gamma,this._lastMeasure.gamma-e}var i=this._alphaGammaFlipped?t.gamma:t.alpha,n=t.beta,o=this._alphaGammaFlipped?t.alpha:t.gamma,a=i-this._lastMeasure.alpha,s=n-this._lastMeasure.beta,c=o-this._lastMeasure.gamma,r={alpha:i,beta:n,gamma:o,delta:{alpha:a,beta:s,gamma:c}};CWEventManager.trigger(5,"gyroscopeUpdate",r);var h=t.x-this._lastMeasure.x,u=t.y-this._lastMeasure.y,l=t.z-this._lastMeasure.z,d={x:t.x,y:t.y,z:t.z,delta:{x:h,y:u,z:l}};CWEventManager.trigger(5,"accelerometerUpdate",d),this._lastMeasure={x:t.x,y:t.y,z:t.z,alpha:i,beta:n,gamma:o}}},"package getLastGyroscopeMeasure":function(){return void 0===this._lastMeasure?void 0:{alpha:this._lastMeasure.alpha,beta:this._lastMeasure.beta,gamma:this._lastMeasure.gamma}},"package getLastAccelerometerMeasure":function(){return void 0===this._lastMeasure?void 0:{x:this._lastMeasure.x,y:this._lastMeasure.y,z:this._lastMeasure.z}}});CWLocation.toGlobal=function(t,e,i,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:t,y:e,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=e,o.x=t,o.width=i,o.height=n),90===a.rotation&&(o.y=a.height*a.scale-t-i,o.x=e,o.width=n,o.height=i),180===a.rotation&&(o.y=a.height*a.scale-e-n,o.x=a.width*a.scale-t-i,o.width=i,o.height=n),270===a.rotation&&(o.y=t,o.x=a.width*a.scale-e-n,o.width=n,o.height=i),o.x+=a.x*a.scale,o.y+=a.y*a.scale,o.x/=a.scale,o.y/=a.scale,o.width/=a.scale,o.height/=a.scale,o},CWLocation.toLocal=function(t,e,i,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:t,y:e,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=e-a.y,o.x=t-a.x,o.width=i,o.height=n),90===a.rotation&&(o.y=t-a.x,o.x=a.height-(e-a.y+n),o.width=n,o.height=i),180===a.rotation&&(o.y=a.height-(e-a.y+n),o.x=a.width-(t-a.x+i),o.width=i,o.height=n),270===a.rotation&&(o.y=a.width-(t-a.x+i),o.x=e-a.y,o.width=n,o.height=i),o.x*=a.scale,o.y*=a.scale,o.width*=a.scale,o.height*=a.scale,o},CWLocation.applyRotation=function(t,e,i,n,o){var a=CWStitchManager.getDeviceTransformation();void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0),void 0===o&&(o=a.rotation);var s={x:t,y:e,width:i,height:n};return 0===a.rotation&&(s.y=e,s.x=t,s.width=i,s.height=n),90===a.rotation&&(s.y=-t,s.x=e,s.width=n,s.height=i),180===a.rotation&&(s.y=-e,s.x=-t,s.width=i,s.height=n),270===a.rotation&&(s.y=t,s.x=-e,s.width=n,s.height=i),s},CWLocation.fromString=function(t){var e=JSON.parse(t);return new CWLocation(parseFloat(e.x),parseFloat(e.y),parseFloat(e.width),parseFloat(e.height),!1)};var CWStitchManager=OOP.createSingleton("Connichiwa","CWStitchManager",{"private _isStitched":!1,"private _deviceTransformation":void 0,"private _gyroDataOnStitch":void 0,"public unstitchOnMove":!0,"public ignoreMoveAxis":[],__constructor:function(){Connichiwa.on("stitchswipe",this._onLocalSwipe),Connichiwa.on("wasStitched",this._onWasStitched),Connichiwa.on("wasUnstitched",this._onWasUnstitched),Connichiwa.on("gyroscopeUpdate",this._onGyroUpdate),Connichiwa.on("accelerometerUpdate",this._onAccelerometerUpdate)},_onWasStitched:function(t){this._gyroDataOnStitch=this.package.CWGyroscope.getLastGyroscopeMeasure(),this._deviceTransformation=t.deviceTransformation,this._isStitched=!0},_onWasUnstitched:function(){this._gyroDataOnStitch=void 0,this._deviceTransformation=this.DEFAULT_DEVICE_TRANSFORMATION(),this._isStitched=!1},_onLocalSwipe:function(t){t.device=Connichiwa.getIdentifier(),t.width=CWSystemInfo.viewportWidth(),t.height=CWSystemInfo.viewportHeight(),Connichiwa.send("master","_stitchswipe",t)},_onGyroUpdate:function(t){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){void 0===this._gyroDataOnStitch&&(this._gyroDataOnStitch=t);var e=Math.abs(t.alpha-this._gyroDataOnStitch.alpha),i=Math.abs(t.beta-this._gyroDataOnStitch.beta),n=Math.abs(t.gamma-this._gyroDataOnStitch.gamma);e=Math.abs((e+180)%360-180),i=Math.abs((i+180)%360-180),n=Math.abs((n+180)%360-180),(CWUtil.inArray("alpha",this.ignoreMoveAxis)===!1&&e>=35||CWUtil.inArray("beta",this.ignoreMoveAxis)===!1&&i>=20||CWUtil.inArray("gamma",this.ignoreMoveAxis)===!1&&n>=20)&&this._quitStitch()}},_onAccelerometerUpdate:function(t){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){var e=Math.abs(t.x),i=Math.abs(t.y),n=Math.abs(Math.abs(t.z)-9.81);(CWUtil.inArray("x",this.ignoreMoveAxis)===!1&&e>=1||CWUtil.inArray("y",this.ignoreMoveAxis)===!1&&i>=1||CWUtil.inArray("z",this.ignoreMoveAxis)===!1&&n>=1)&&this._quitStitch()}},"private _quitStitch":function(){var t={device:Connichiwa.getIdentifier()};Connichiwa.send("master","_quitstitch",t)},"public unstitch":function(){this._quitStitch()},"public isStitched":function(){return this._isStitched},"public getDeviceTransformation":function(){return void 0===this._deviceTransformation?this.DEFAULT_DEVICE_TRANSFORMATION():this._deviceTransformation},"private DEFAULT_DEVICE_TRANSFORMATION":function(){return{x:0,y:0,width:CWSystemInfo.viewportWidth(),height:CWSystemInfo.viewportHeight(),rotation:0,scale:1}}}),CWSystemInfo=OOP.createSingleton("Connichiwa","CWSystemInfo",{_ppi:void 0,"public PPI":function(){return void 0!==this._ppi?this._ppi:(this._ppi=this.DEFAULT_PPI(),window.devicePixelRatio>1&&(this._ppi=142),"iPad"===navigator.platform&&(this._ppi=132),("iPhone"===navigator.platform||"iPod"===navigator.platform)&&(this._ppi=3===window.devicePixelRatio?153:163),this._ppi)},"public isLandscape":function(){return window.innerHeight-1},c=function(t){return t?(t^16*Math.random()>>t/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,CWUtil.createUUID)};return{parseURL:t,getEventLocation:e,randomInt:i,isInt:n,isString:o,isObject:a,inArray:s,createUUID:c}}();CWVector.prototype.angle=function(t){var e=this.deltaX()*t.deltaX()+this.deltaY()*t.deltaY(),i=this.length()*t.length();return Math.acos(e/i)*(180/Math.PI)};var CWWebsocketMessageParser=OOP.createSingleton("Connichiwa","CWWebsocketMessageParser",{"package parse":function(t){switch(t._name){case"_ack":this._parseAck(t);break;case"_insert":this._parseInsert(t);break;case"_replace":this._parseReplace(t);break;case"_loadscript":this._parseLoadScript(t);break;case"_loadcss":this._parseLoadCSS(t);break;case"_wasstitched":this._parseWasStitched(t);break;case"_wasunstitched":this._parseWasUnstitched(t);break;case"_gotstitchneighbor":this._parseGotStitchNeighbor(t)}return!0},_parseAck:function(t){CWEventManager.trigger("__ack_message"+t.original._id)},_parseInsert:function(t){$(t.selector).append(t.html)},_parseReplace:function(t){t.contentOnly===!0?$(t.selector).html(t.html):$(t.selector).replaceWith(t.html)},_parseLoadScript:function(t){var e=this;$.getScript(t.url).done(function(){e.package.Connichiwa._sendAck(t)}).fail(function(e,i,n){CWDebug.err(1,"There was an error loading '"+t.url+"': "+n)})},_parseLoadCSS:function(t){var e=document.createElement("link");e.setAttribute("rel","stylesheet"),e.setAttribute("type","text/css"),e.setAttribute("href",t.url),$("head").append(e),this.package.Connichiwa._sendAck(t)},_parseWasStitched:function(t){CWEventManager.trigger("wasStitched",t)},_parseWasUnstitched:function(t){CWEventManager.trigger("wasUnstitched",t)},_parseGotStitchNeighbor:function(t){CWEventManager.trigger("gotstitchneighbor",t)}}),Connichiwa=OOP.createSingleton("Connichiwa","Connichiwa",{"private _websocket":void 0,"public getLocalDevice":function(){},"public getIdentifier":function(){},"public isMaster":function(){},"public on":function(t,e){return"load"===t?void this.onLoad(e):void CWEventManager.register(t,e)},"public onMessage":function(t,e){this.on("message"+t,e)},"public onLoad":function(t){"complete"===document.readyState?window.setTimeout(t,0):Connichiwa.on("ready",t)},"public insert":function(t,e,i){if(void 0===i&&(i=e,e="body"),CWUtil.isObject(e)&&(e="#"+$(e).attr("id")),CWUtil.isObject(i)===!0){var n=$(i),o=n.clone();o[0].style.cssText=n[0].style.cssText,i=o[0].outerHTML}CWDevice.prototype.isPrototypeOf(t)&&(t=t.getIdentifier());var a={selector:e,html:i};this.send(t,"_insert",a)},"public replace":function(t,e,i){void 0===i&&(i=e,e="body"),this._replace(t,e,i,!1)},"public replaceContent":function(t,e,i){void 0===i&&(i=e,e="body"),this._replace(t,e,i,!0)},"private _replace":function(t,e,i,n){if(void 0===i&&(i=e,e="body"),CWUtil.isObject(e)&&(e="#"+$(e).attr("id")),CWUtil.isObject(i)===!0){var o=$(i),a=o.clone();a[0].style.cssText=o[0].style.cssText,i=a[0].outerHTML}CWDevice.prototype.isPrototypeOf(t)&&(t=t.getIdentifier());var s={selector:e,html:i,contentOnly:n};this.send(t,"_replace",s)},"public loadScript":function(t,e,i){var n={url:e},o=this.send(t,"_loadscript",n);void 0!==i&&this.on("__ack_message"+o,i)},"public loadCSS":function(t,e){{var i={url:e};this.send(t,"_loadcss",i)}},"public send":function(t,e,i){return void 0===i&&(i=t,t="master"),CWDevice.prototype.isPrototypeOf(t)&&(t=t.getIdentifier()),i._name=e,i._source=this.getIdentifier(),i._target=t,this._sendObject(i)},"public respond":function(t,e,i){this.send(t._source,e,i)},"public broadcast":function(t,e,i){i&&(e._broadcastToSource=!0),this.send("broadcast",t,e)},"package _sendAck":function(t){var e={original:t};this.send(t._source,"_ack",e)},"package _sendObject":function(t){if("_name"in t==!1)return void console.warn("Tried to send message without _name, ignoring: "+JSON.stringify(t));t._id=CWUtil.randomInt(0,9999999999),t._name=t._name.toLowerCase();var e=JSON.stringify(t);return CWDebug.log(4,"Sending message: "+e),this._websocket.send(e),t._id},"package _disconnectWebsocket":function(){this._websocket.close()},_cleanupWebsocket:function(){void 0!==this._websocket&&(this._websocket.onopen=void 0,this._websocket.onmessage=void 0,this._websocket.onclose=void 0,this._websocket.onerror=void 0,this._websocket=void 0)}}),CWNativeRemoteCommunication=OOP.createSingleton("Connichiwa","CWNativeRemoteCommunication",{_runsNative:!1,__constructor:function(){window.RUN_BY_CONNICHIWA_NATIVE===!0&&(this._runsNative=!0)},"public isRunningNative":function(){return this._runsNative===!0},"public callOnNative":function(t){if(this.isRunningNative()===!0){var e=Array.prototype.slice.call(arguments);e.shift();var i=window[t];"function"==typeof i?i.apply(null,e):CWDebug.log(1,"ERROR: Tried to call native method with name "+t+", but it doesn't exist!")}},"public parse":function(t){CWDebug.log(4,"Parsing native message (remote): "+t);var e=JSON.parse(t);switch(e._name){case"runsnative":this._parseRunsNative(e);break;case"connectwebsocket":this._parseConnectWebsocket(e);break;case"cwdebug":this._parseDebug(e);break;case"localinfo":this._parseLocalInfo(e);break;case"disconnectwebsocket":this._parseDisconnectWebsocket(e)}},_parseRunsNative:function(t){CWDebug.log(1,"RUNS NATIVE SET TO "+JSON.stringify(t)),this._runsNative=!0},_parseConnectWebsocket:function(){this.package.Connichiwa._connectWebsocket()},_parseDebug:function(){CWDebug.enableDebug()},_parseLocalInfo:function(t){this.package.Connichiwa._setLocalDevice(t),CWEventManager.trigger("ready")},_parseDisconnectWebsocket:function(){this.package.Connichiwa._disconnectWebsocket()}});OOP.extendSingleton("Connichiwa","CWWebsocketMessageParser",{"package parseOnRemote":function(t){switch(t._name){case"_softdisconnect":this._parseSoftDisconnect(t)}},_parseSoftDisconnect:function(){this.package.Connichiwa._softDisconnectWebsocket()}}),OOP.extendSingleton("Connichiwa","Connichiwa",{"private _localDevice":void 0,"private _softDisconnected":!1,"private _isReconnecting":!1,__constructor:function(){var t=this.package.CWNativeRemoteCommunication.isRunningNative();t!==!0&&this._connectWebsocket()},"public getLocalDevice":function(){return this._localDevice},"public getIdentifier":function(){return this._localDevice.getIdentifier()},"public isMaster":function(){return!1},"package _setLocalDevice":function(t){void 0===this._localDevice&&(t.isLocal=!0,this._localDevice=new CWDevice(t)),this.send("master","remoteinfo",t)},"package _connectWebsocket":function(){CWDebug.log(3,"Connecting");var t=this._websocket;this._cleanupWebsocket(),void 0!==t&&t.close();var e=new CWUtil.parseURL(document.URL);this._websocket=new WebSocket("ws://"+e.hostname+":"+(parseInt(e.port)+1)),this._websocket.onopen=this._onWebsocketOpen,this._websocket.onmessage=this._onWebsocketMessage,this._websocket.onclose=this._onWebsocketClose,this._websocket.onerror=this._onWebsocketError},_softDisconnectWebsocket:function(){this._softDisconnected=!0,CWNativeRemoteCommunication.callOnNative("nativeSoftDisconnect")},_onWebsocketOpen:function(){CWDebug.log(3,"Websocket opened"),this._softDisconnected=!1;var t=this.package.CWNativeRemoteCommunication.isRunningNative();if(CWNativeRemoteCommunication.callOnNative("nativeWebsocketDidOpen"),t===!1){if(this._isReconnecting===!0)return void location.reload(!0);var e={identifier:CWUtil.createUUID(),launchDate:Date.now()/1e3,ppi:CWSystemInfo.PPI()};this._setLocalDevice(e)}},_onWebsocketMessage:function(t){var e=JSON.parse(t.data);if("broadcast"!==e._target||e._source!==this.getLocalDevice().getIdentifier()||e._broadcastToSource===!0){CWDebug.log(4,"Received message: "+t.data);var i=this;window.requestAnimationFrame(function(){i.package.CWWebsocketMessageParser.parse(e),i.package.CWWebsocketMessageParser.parseOnRemote(e),e._name&&CWEventManager.trigger("message"+e._name,e)})}},_onWebsocketClose:function(){console.log("close"),CWDebug.log(3,"Websocket closed"),this._cleanupWebsocket(),CWNativeRemoteCommunication.callOnNative("nativeWebsocketDidClose");this.package.CWNativeRemoteCommunication.isRunningNative()},_onWebsocketError:function(){console.log("error"),CWDebug.log(3,"Error"),this._onWebsocketClose()},_tryWebsocketReconnect:function(){(void 0===this._websocket||this._websocket.readyState!==WebSocket.OPEN&&this._websocket.readyState!==WebSocket.CONNECTING)&&(this._isReconnecting=!0,CWDebug.log(3,"Try reconnect"),this._connectWebsocket())}}); +"use strict";function CWDevice(t){if(!t.identifier)throw"Cannot instantiate CWDevice without an identifier";this.discoveryState=CWDeviceDiscoveryState.LOST,this.connectionState=CWDeviceConnectionState.DISCONNECTED,this.distance=-1;var e=t.identifier,i=Date.now()/1e3,n=[],o=void 0,a="remote device",s=CWSystemInfo.DEFAULT_PPI();return t.launchDate&&(i=t.launchDate),t.ips&&(n=t.ips),t.port&&(o=t.port),t.name&&(a=t.name),t.ppi&&t.ppi>0&&(s=t.ppi),this.getIdentifier=function(){return e},this.getLaunchDate=function(){return i},this.getIPs=function(){return n},this.getPort=function(){return o},this.getName=function(){return a},this.getPPI=function(){return s},this.isLocal=function(){return this.equalTo(Connichiwa.getLocalDevice())},this.isNearby=function(){return this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.canBeConnected=function(){return this.connectionState===CWDeviceConnectionState.DISCONNECTED&&this.discoveryState===CWDeviceDiscoveryState.DISCOVERED},this.isConnected=function(){return this.connectionState===CWDeviceConnectionState.CONNECTED},this}function CWLocation(t,e,i,n,o){if(o===!0){var a=CWLocation.toGlobal(t,e,i,n);this.x=a.x,this.y=a.y,this.width=a.width,this.height=a.height}else this.x=t,this.y=e,this.width=i,this.height=n;CWEventManager.register("wasUnstitched",function(t){this.x-=t.deviceTransformation.x,this.y-=t.deviceTransformation.y,this.x*=t.deviceTransformation.scale,this.y*=t.deviceTransformation.scale,this.width*=t.deviceTransformation.scale,this.height*=t.deviceTransformation.scale}.bind(this)),CWEventManager.register("wasStitched",function(t){this.x/=t.deviceTransformation.scale,this.y/=t.deviceTransformation.scale,this.width/=t.deviceTransformation.scale,this.height/=t.deviceTransformation.scale,this.x+=t.deviceTransformation.x,this.y+=t.deviceTransformation.y}.bind(this)),this.getGlobal=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},this.getLocal=function(){return CWLocation.toLocal(this.x,this.y,this.width,this.height)},this.getGlobalX=function(){return this.x},this.getGlobalY=function(){return this.y},this.getGlobalWidth=function(){return this.width},this.getGlobalHeight=function(){return this.height},this.getLocalX=function(){return this.getLocal().x},this.getLocalY=function(){return this.getLocal().y},this.getLocalWidth=function(){return this.getLocal().width},this.getLocalHeight=function(){return this.getLocal().height},this.setGlobal=function(t,e,i,n){void 0!==t&&(this.x=t),void 0!==e&&(this.y=e),void 0!==i&&(this.width=i),void 0!==n&&(this.height=n)},this.setLocal=function(t,e,i,n){CWDebug.log(3,"To Global: "+t+", "+e+", "+i+", "+n);var o=CWLocation.toGlobal(t,e,i,n);CWDebug.log(3,JSON.stringify(o)),this.x=o.x,this.y=o.y,this.width=o.width,this.height=o.height},this.setGlobalX=function(t){this.setGlobal(t,this.y,this.width,this.height)},this.setGlobalY=function(t){this.setGlobal(this.x,t,this.width,this.height)},this.setGlobalWidth=function(t){this.setGlobal(this.x,this.y,t,this.height)},this.setGlobalHeight=function(t){this.setGlobal(this.x,this.y,this.width,t)},this.setLocalX=function(t){var e=this.getLocal();this.setLocal(t,e.y,e.width,e.height)},this.setLocalY=function(t){var e=this.getLocal();this.setLocal(e.x,t,e.width,e.height)},this.setLocalWidth=function(t){var e=this.getLocal();this.setLocal(e.x,e.y,t,e.height)},this.setLocalHeight=function(t){var e=this.getLocal();this.setLocal(e.x,e.y,e.width,t)},this.toString=function(){return JSON.stringify(this.getGlobal())},this.copy=function(){return CWLocation.fromString(this.toString())}}function CWPoint(t,e,i){return new CWLocation(t,e,void 0,void 0,i)}function CWSize(t,e,i){return new CWLocation(void 0,void 0,t,e,i)}function CWVector(t,e){if(void 0===t||void 0===e)throw"Cannot instantiate Vector without 2 points";var i=t,n=e,o=n.x-i.x,a=n.y-i.y,s=Math.sqrt(Math.pow(o,2)+Math.pow(a,2));this.p1=function(){return i},this.p2=function(){return n},this.deltaX=function(){return o},this.deltaY=function(){return a},this.length=function(){return s}}var OOP=function(){var t="default",e={},i={},n=function(e,i,n){return void 0===n&&(n=i,i=e,e=t),o(e,i,n)},o=function(t,n,o){var a={private:function(){},package:function(){},public:function(){}};t in i==!1&&(i[t]=function(){});var c=i[t];return c[n]=a.package,a.private.package=c,t in e==!1&&(e[t]={}),e[t][n]=a,s(t,n,o)},a=function(e,i,n){return void 0===n&&(n=i,i=e,e=t),s(e,i,n)},s=function(t,i,n){if(t in e!=!1&&i in e[t]!=!1){var o=!1,a=e[t][i],s=function(t,e){return function(){return t[e]}},c=function(t,e){return function(i){t[e]=i}},r=function(){return void 0},h=function(){throw new TypeError("Cannot set non-visible property")};for(var u in n)if(n.hasOwnProperty(u)){var l="private",g=u;if(0===g.indexOf("public ")?(l="public",g=g.substr(7)):0===g.indexOf("package ")?(l="package",g=g.substr(8)):0===g.indexOf("private ")&&(g=g.substr(8)),"function"==typeof n[u]){var d=n[u].bind(a.private);switch(l){case"private":a.private[g]=d;break;case"package":a.private[g]=d,a.package[g]=d;break;case"public":a.private[g]=d,a.package[g]=d,a.public[g]=d}"__constructor"===g&&(o=!0)}else switch(l){case"private":a.private[g]=n[u],Object.defineProperty(a.package,g,{get:r,set:h}),Object.defineProperty(a.public,g,{get:r,set:h});break;case"package":a.package[g]=n[u],Object.defineProperty(a.private,g,{get:s(a.package,g),set:c(a.package,g)}),Object.defineProperty(a.public,g,{get:r,set:h});break;case"public":a.public[g]=n[u],Object.defineProperty(a.private,g,{get:s(a.public,g),set:c(a.public,g)}),Object.defineProperty(a.package,g,{get:s(a.public,g),set:c(a.public,g)})}}return o===!0&&window.setTimeout(a.private.__constructor,0),a.public}};return{createSingleton:n,extendSingleton:a}}(),CWDebug=OOP.createSingleton("Connichiwa","CWDebug",{_debug:!1,_logLevel:0,"public setDebug":function(t){this._debug=t},"public setLogLevel":function(t){this._logLevel=t},"public setDebugInfo":function(t){console.log("SETTING DEBUG INFO: "+t.debug+" || "+t.logLevel),t.debug&&CWDebug.setDebug(t.debug),t.logLevel&&CWDebug.setLogLevel(t.logLevel)},"public getDebugInfo":function(){return{debug:this._debug,logLevel:this._logLevel}},"public log":function(t,e){this._debug&&t<=this._logLevel&&console.log(t+"|"+e)},"public err":function(t){this._debug&&console.log("ERROR|"+t)}}),CWDeviceDiscoveryState={DISCOVERED:"discovered",LOST:"lost"},CWDeviceConnectionState={DISCONNECTED:"disconnected",CONNECTING:"connecting",CONNECTED:"connected"};CWDevice.prototype.insert=function(t,e){Connichiwa.insert(this.getIdentifier(),t,e)},CWDevice.prototype.replace=function(t,e){Connichiwa.replace(this.getIdentifier(),t,e)},CWDevice.prototype.replaceContent=function(t,e){Connichiwa.replaceContent(this.getIdentifier(),t,e)},CWDevice.prototype.loadScript=function(t,e){Connichiwa.loadScript(this.getIdentifier(),t,e)},CWDevice.prototype.loadCSS=function(t){Connichiwa.loadCSS(this.getIdentifier(),t)},CWDevice.prototype.send=function(t,e){Connichiwa.send(this.getIdentifier(),t,e)},CWDevice.prototype.equalTo=function(t){return CWDevice.prototype.isPrototypeOf(t)===!1?!1:this.getIdentifier()===t.getIdentifier()},CWDevice.prototype.toString=function(){return this.getIdentifier()};var CWEventManager=function(){var t={},e=function(e,i){if("string"!=typeof e)throw"Event name must be a string";if("function"!=typeof i)throw"Event callback must be a function";if(e=e.toLowerCase(),-1===e.indexOf(" "))t[e]||(t[e]=[]),t[e].push(i),CWDebug.log(3,"Attached callback to "+e);else for(var n=e.split(" "),o=0;o5,this._touchCheckable&&n.length()>1)if(void 0!==this._touchAngleReferenceVector){var o=n.angle(this._touchAngleReferenceVector);if(o>20){if(this._touchAngleChangedCount++,3===this._touchAngleChangedCount)return this._touchStart=void 0,void(this._touchLast=void 0)}else this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0}else if(void 0!==this._touchLastVector){var a=n.angle(this._touchLastVector);a>20&&(this._touchAngleReferenceVector=this._touchLastVector,this._touchAngleChangedCount=1)}n.length()>0&&(this._touchLastVector=n)}this._touchLast=e}},"private _onUp":function(){var t=this._touchStart,e=this._touchLast;if(this._touchStart=void 0,this._touchLast=void 0,this._touchLastVector=void 0,this._touchCheckable=!1,this._touchAngleReferenceVector=void 0,this._touchAngleChangedCount=0,void 0!==t&&void 0!==e){var i=e.x-t.x,n=e.y-t.y,o=Math.sqrt(Math.pow(i,2)+Math.pow(n,2));if(10>=o)return void CWDebug.log(3,"Swipe REJECTED because it was too short ("+o+")");var a=.25;100>o&&(a=.35),50>o&&(a=.4),40>o&&(a=.45),15>o&&(a=.8);var s="invalid";Math.abs(n)0&&(s="right"),0>i&&(s="left")),Math.abs(i)0&&(s="down"),0>n&&(s="up"));var c=$(window).height()-window.innerHeight;e.y+=c;var r=e.y<=50,h=e.x<=50,u=e.y>=$(window).height()-50,l=e.x>=$(window).width()-50,g="invalid";if(r&&"up"===s&&(g="top"),h&&"left"===s&&(g="left"),u&&"down"===s&&(g="bottom"),l&&"right"===s&&(g="right"),"invalid"===g)return void CWDebug.log(3,"Swipe REJECTED. Ending: x - "+e.x+"/"+($(window).width()-50)+", y - "+e.y+"/"+($(window).height()-50)+". Direction: "+s+". Edge endings: "+r+", "+l+", "+u+", "+h);"top"===g&&(e.y=0),"left"===g&&(e.x=0),"bottom"===g&&(e.y=$(window).height()),"right"===g&&(e.x=$(window).width());var d={edge:g,x:e.x,y:e.y};CWEventManager.trigger("stitchswipe",d)}},"public captureOn":function(t){t instanceof jQuery&&(t=t.get(0)),t.addEventListener("mousedown",this._onDown,!0),t.addEventListener("touchstart",this._onDown,!0),t.addEventListener("mousemove",this._onMove,!0),t.addEventListener("touchmove",this._onMove,!0),t.addEventListener("mouseup",this._onUp,!0),t.addEventListener("touchend",this._onUp,!0)}}),CWGyroscope=OOP.createSingleton("Connichiwa","CWGyroscope",{_lastMeasure:void 0,_alphaGammaFlipped:!1,__constructor:function(){gyro.frequency=500,gyro.startTracking(this._onUpdate)},"private _onUpdate":function(t){if(null!==t.alpha&&null!==t.beta&&null!==t.gamma&&null!==t.x&&null!==t.y&&null!==t.z){if(void 0===this._lastMeasure&&(this._lastMeasure=t),t.alpha<0||t.gamma>180){this._alphaGammaFlipped=!0;var e=this._lastMeasure.alpha;this._lastMeasure.alpha=this._lastMeasure.gamma,this._lastMeasure.gamma-e}var i=this._alphaGammaFlipped?t.gamma:t.alpha,n=t.beta,o=this._alphaGammaFlipped?t.alpha:t.gamma,a=i-this._lastMeasure.alpha,s=n-this._lastMeasure.beta,c=o-this._lastMeasure.gamma,r={alpha:i,beta:n,gamma:o,delta:{alpha:a,beta:s,gamma:c}};CWEventManager.trigger(5,"gyroscopeUpdate",r);var h=t.x-this._lastMeasure.x,u=t.y-this._lastMeasure.y,l=t.z-this._lastMeasure.z,g={x:t.x,y:t.y,z:t.z,delta:{x:h,y:u,z:l}};CWEventManager.trigger(5,"accelerometerUpdate",g),this._lastMeasure={x:t.x,y:t.y,z:t.z,alpha:i,beta:n,gamma:o}}},"package getLastGyroscopeMeasure":function(){return void 0===this._lastMeasure?void 0:{alpha:this._lastMeasure.alpha,beta:this._lastMeasure.beta,gamma:this._lastMeasure.gamma}},"package getLastAccelerometerMeasure":function(){return void 0===this._lastMeasure?void 0:{x:this._lastMeasure.x,y:this._lastMeasure.y,z:this._lastMeasure.z}}});CWLocation.toGlobal=function(t,e,i,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:t,y:e,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=e,o.x=t,o.width=i,o.height=n),90===a.rotation&&(o.y=a.height*a.scale-t-i,o.x=e,o.width=n,o.height=i),180===a.rotation&&(o.y=a.height*a.scale-e-n,o.x=a.width*a.scale-t-i,o.width=i,o.height=n),270===a.rotation&&(o.y=t,o.x=a.width*a.scale-e-n,o.width=n,o.height=i),o.x+=a.x*a.scale,o.y+=a.y*a.scale,o.x/=a.scale,o.y/=a.scale,o.width/=a.scale,o.height/=a.scale,o},CWLocation.toLocal=function(t,e,i,n){void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0);var o={x:t,y:e,width:i,height:n},a=CWStitchManager.getDeviceTransformation();return 0===a.rotation&&(o.y=e-a.y,o.x=t-a.x,o.width=i,o.height=n),90===a.rotation&&(o.y=t-a.x,o.x=a.height-(e-a.y+n),o.width=n,o.height=i),180===a.rotation&&(o.y=a.height-(e-a.y+n),o.x=a.width-(t-a.x+i),o.width=i,o.height=n),270===a.rotation&&(o.y=a.width-(t-a.x+i),o.x=e-a.y,o.width=n,o.height=i),o.x*=a.scale,o.y*=a.scale,o.width*=a.scale,o.height*=a.scale,o},CWLocation.applyRotation=function(t,e,i,n,o){var a=CWStitchManager.getDeviceTransformation();void 0===t&&(t=0),void 0===e&&(e=0),void 0===i&&(i=0),void 0===n&&(n=0),void 0===o&&(o=a.rotation);var s={x:t,y:e,width:i,height:n};return 0===a.rotation&&(s.y=e,s.x=t,s.width=i,s.height=n),90===a.rotation&&(s.y=-t,s.x=e,s.width=n,s.height=i),180===a.rotation&&(s.y=-e,s.x=-t,s.width=i,s.height=n),270===a.rotation&&(s.y=t,s.x=-e,s.width=n,s.height=i),s},CWLocation.fromString=function(t){var e=JSON.parse(t);return new CWLocation(parseFloat(e.x),parseFloat(e.y),parseFloat(e.width),parseFloat(e.height),!1)};var CWStitchManager=OOP.createSingleton("Connichiwa","CWStitchManager",{"private _isStitched":!1,"private _deviceTransformation":void 0,"private _gyroDataOnStitch":void 0,"public unstitchOnMove":!0,"public ignoreMoveAxis":[],__constructor:function(){Connichiwa.on("stitchswipe",this._onLocalSwipe),Connichiwa.on("wasStitched",this._onWasStitched),Connichiwa.on("wasUnstitched",this._onWasUnstitched),Connichiwa.on("gyroscopeUpdate",this._onGyroUpdate),Connichiwa.on("accelerometerUpdate",this._onAccelerometerUpdate)},_onWasStitched:function(t){this._gyroDataOnStitch=this.package.CWGyroscope.getLastGyroscopeMeasure(),this._deviceTransformation=t.deviceTransformation,this._isStitched=!0},_onWasUnstitched:function(){this._gyroDataOnStitch=void 0,this._deviceTransformation=this.DEFAULT_DEVICE_TRANSFORMATION(),this._isStitched=!1},_onLocalSwipe:function(t){t.device=Connichiwa.getIdentifier(),t.width=CWSystemInfo.viewportWidth(),t.height=CWSystemInfo.viewportHeight(),Connichiwa.send("master","_stitchswipe",t)},_onGyroUpdate:function(t){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){void 0===this._gyroDataOnStitch&&(this._gyroDataOnStitch=t);var e=Math.abs(t.alpha-this._gyroDataOnStitch.alpha),i=Math.abs(t.beta-this._gyroDataOnStitch.beta),n=Math.abs(t.gamma-this._gyroDataOnStitch.gamma);e=Math.abs((e+180)%360-180),i=Math.abs((i+180)%360-180),n=Math.abs((n+180)%360-180),(CWUtil.inArray("alpha",this.ignoreMoveAxis)===!1&&e>=35||CWUtil.inArray("beta",this.ignoreMoveAxis)===!1&&i>=20||CWUtil.inArray("gamma",this.ignoreMoveAxis)===!1&&n>=20)&&this._quitStitch()}},_onAccelerometerUpdate:function(t){if(this.isStitched()!==!1&&this.unstitchOnMove!==!1){var e=Math.abs(t.x),i=Math.abs(t.y),n=Math.abs(Math.abs(t.z)-9.81);(CWUtil.inArray("x",this.ignoreMoveAxis)===!1&&e>=1||CWUtil.inArray("y",this.ignoreMoveAxis)===!1&&i>=1||CWUtil.inArray("z",this.ignoreMoveAxis)===!1&&n>=1)&&this._quitStitch()}},"private _quitStitch":function(){var t={device:Connichiwa.getIdentifier()};Connichiwa.send("master","_quitstitch",t)},"public unstitch":function(){this._quitStitch()},"public isStitched":function(){return this._isStitched},"public getDeviceTransformation":function(){return void 0===this._deviceTransformation?this.DEFAULT_DEVICE_TRANSFORMATION():this._deviceTransformation},"private DEFAULT_DEVICE_TRANSFORMATION":function(){return{x:0,y:0,width:CWSystemInfo.viewportWidth(),height:CWSystemInfo.viewportHeight(),rotation:0,scale:1}}}),CWSystemInfo=OOP.createSingleton("Connichiwa","CWSystemInfo",{_ppi:void 0,"public PPI":function(){return void 0!==this._ppi?this._ppi:(this._ppi=this.DEFAULT_PPI(),window.devicePixelRatio>1&&(this._ppi=142),"iPad"===navigator.platform&&(this._ppi=132),("iPhone"===navigator.platform||"iPod"===navigator.platform)&&(this._ppi=3===window.devicePixelRatio?153:163),this._ppi)},"public isLandscape":function(){return window.innerHeight-1},c=function(t){return t?(t^16*Math.random()>>t/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,CWUtil.createUUID)};return{parseURL:t,getEventLocation:e,randomInt:i,isInt:n,isString:o,isObject:a,inArray:s,createUUID:c}}();CWVector.prototype.angle=function(t){var e=this.deltaX()*t.deltaX()+this.deltaY()*t.deltaY(),i=this.length()*t.length();return Math.acos(e/i)*(180/Math.PI)};var CWWebsocketMessageParser=OOP.createSingleton("Connichiwa","CWWebsocketMessageParser",{"package parse":function(t){switch(t._name){case"_ack":this._parseAck(t);break;case"_insert":this._parseInsert(t);break;case"_replace":this._parseReplace(t);break;case"_loadscript":this._parseLoadScript(t);break;case"_loadcss":this._parseLoadCSS(t);break;case"_wasstitched":this._parseWasStitched(t);break;case"_wasunstitched":this._parseWasUnstitched(t);break;case"_gotstitchneighbor":this._parseGotStitchNeighbor(t)}return!0},_parseAck:function(t){CWEventManager.trigger("__ack_message"+t.original._id)},_parseInsert:function(t){$(t.selector).append(t.html)},_parseReplace:function(t){t.contentOnly===!0?$(t.selector).html(t.html):$(t.selector).replaceWith(t.html)},_parseLoadScript:function(t){var e=this;$.getScript(t.url).done(function(){e.package.Connichiwa._sendAck(t)}).fail(function(e,i,n){CWDebug.err(1,"There was an error loading '"+t.url+"': "+n)})},_parseLoadCSS:function(t){var e=document.createElement("link");e.setAttribute("rel","stylesheet"),e.setAttribute("type","text/css"),e.setAttribute("href",t.url),$("head").append(e),this.package.Connichiwa._sendAck(t)},_parseWasStitched:function(t){CWEventManager.trigger("wasStitched",t)},_parseWasUnstitched:function(t){CWEventManager.trigger("wasUnstitched",t)},_parseGotStitchNeighbor:function(t){CWEventManager.trigger("gotstitchneighbor",t)}}),Connichiwa=OOP.createSingleton("Connichiwa","Connichiwa",{"private _websocket":void 0,"public getLocalDevice":function(){},"public getIdentifier":function(){},"public isMaster":function(){},"public on":function(t,e){return"load"===t?void this.onLoad(e):void CWEventManager.register(t,e)},"public onMessage":function(t,e){this.on("message"+t,e)},"public onLoad":function(t){"complete"===document.readyState?window.setTimeout(t,0):Connichiwa.on("ready",t)},"public insert":function(t,e,i){if(void 0===i&&(i=e,e="body"),CWUtil.isObject(e)&&(e="#"+$(e).attr("id")),CWUtil.isObject(i)===!0){var n=$(i),o=n.clone();o[0].style.cssText=n[0].style.cssText,i=o[0].outerHTML}CWDevice.prototype.isPrototypeOf(t)&&(t=t.getIdentifier());var a={selector:e,html:i};this.send(t,"_insert",a)},"public replace":function(t,e,i){void 0===i&&(i=e,e="body"),this._replace(t,e,i,!1)},"public replaceContent":function(t,e,i){void 0===i&&(i=e,e="body"),this._replace(t,e,i,!0)},"private _replace":function(t,e,i,n){if(void 0===i&&(i=e,e="body"),CWUtil.isObject(e)&&(e="#"+$(e).attr("id")),CWUtil.isObject(i)===!0){var o=$(i),a=o.clone();a[0].style.cssText=o[0].style.cssText,i=a[0].outerHTML}CWDevice.prototype.isPrototypeOf(t)&&(t=t.getIdentifier());var s={selector:e,html:i,contentOnly:n};this.send(t,"_replace",s)},"public loadScript":function(t,e,i){var n={url:e},o=this.send(t,"_loadscript",n);void 0!==i&&this.on("__ack_message"+o,i)},"public loadCSS":function(t,e){{var i={url:e};this.send(t,"_loadcss",i)}},"public send":function(t,e,i){return void 0===i&&(i=t,t="master"),CWDevice.prototype.isPrototypeOf(t)&&(t=t.getIdentifier()),i._name=e,i._source=this.getIdentifier(),i._target=t,this._sendObject(i)},"public respond":function(t,e,i){this.send(t._source,e,i)},"public broadcast":function(t,e,i){i&&(e._broadcastToSource=!0),this.send("broadcast",t,e)},"package _sendAck":function(t){var e={original:t};this.send(t._source,"_ack",e)},"package _sendObject":function(t){if("_name"in t==!1)return void console.warn("Tried to send message without _name, ignoring: "+JSON.stringify(t));t._id=CWUtil.randomInt(0,9999999999),t._name=t._name.toLowerCase();var e=JSON.stringify(t);return CWDebug.log(4,"Sending message: "+e),this._websocket.send(e),t._id},"package _disconnectWebsocket":function(){this._websocket.close()},_cleanupWebsocket:function(){void 0!==this._websocket&&(this._websocket.onopen=void 0,this._websocket.onmessage=void 0,this._websocket.onclose=void 0,this._websocket.onerror=void 0,this._websocket=void 0)}}),CWNativeRemoteCommunication=OOP.createSingleton("Connichiwa","CWNativeRemoteCommunication",{_runsNative:!1,__constructor:function(){window.RUN_BY_CONNICHIWA_NATIVE===!0&&(this._runsNative=!0)},"public isRunningNative":function(){return this._runsNative===!0},"public callOnNative":function(t){if(this.isRunningNative()===!0){var e=Array.prototype.slice.call(arguments);e.shift();var i=window[t];"function"==typeof i?i.apply(null,e):CWDebug.log(1,"ERROR: Tried to call native method with name "+t+", but it doesn't exist!")}},"public parse":function(t){CWDebug.log(4,"Parsing native message (remote): "+t);var e=JSON.parse(t);switch(e._name){case"runsnative":this._parseRunsNative(e);break;case"connectwebsocket":this._parseConnectWebsocket(e);break;case"cwdebug":this._parseDebug(e);break;case"localinfo":this._parseLocalInfo(e);break;case"disconnectwebsocket":this._parseDisconnectWebsocket(e)}},_parseRunsNative:function(t){CWDebug.log(1,"RUNS NATIVE SET TO "+JSON.stringify(t)),this._runsNative=!0},_parseConnectWebsocket:function(){this.package.Connichiwa._connectWebsocket()},_parseDebug:function(){CWDebug.enableDebug()},_parseLocalInfo:function(t){this.package.Connichiwa._setLocalDevice(t),CWEventManager.trigger("ready")},_parseDisconnectWebsocket:function(){this.package.Connichiwa._disconnectWebsocket()}});OOP.extendSingleton("Connichiwa","CWWebsocketMessageParser",{"package parseOnRemote":function(t){switch(t._name){case"_debuginfo":this._parseDebugInfo(t);break;case"_softdisconnect":this._parseSoftDisconnect(t)}},_parseDebugInfo:function(t){CWDebug.setDebugInfo(t)},_parseSoftDisconnect:function(){this.package.Connichiwa._softDisconnectWebsocket()}}),OOP.extendSingleton("Connichiwa","Connichiwa",{"private _localDevice":void 0,"private _softDisconnected":!1,"private _isReconnecting":!1,__constructor:function(){var t=this.package.CWNativeRemoteCommunication.isRunningNative();t!==!0&&this._connectWebsocket()},"public getLocalDevice":function(){return this._localDevice},"public getIdentifier":function(){return this._localDevice.getIdentifier()},"public isMaster":function(){return!1},"package _setLocalDevice":function(t){void 0===this._localDevice&&(t.isLocal=!0,this._localDevice=new CWDevice(t)),this.send("master","remoteinfo",t)},"package _connectWebsocket":function(){CWDebug.log(3,"Connecting");var t=this._websocket;this._cleanupWebsocket(),void 0!==t&&t.close();var e=new CWUtil.parseURL(document.URL);this._websocket=new WebSocket("ws://"+e.hostname+":"+(parseInt(e.port)+1)),this._websocket.onopen=this._onWebsocketOpen,this._websocket.onmessage=this._onWebsocketMessage,this._websocket.onclose=this._onWebsocketClose,this._websocket.onerror=this._onWebsocketError},_softDisconnectWebsocket:function(){this._softDisconnected=!0,CWNativeRemoteCommunication.callOnNative("nativeSoftDisconnect")},_onWebsocketOpen:function(){CWDebug.log(3,"Websocket opened"),this._softDisconnected=!1;var t=this.package.CWNativeRemoteCommunication.isRunningNative();if(CWNativeRemoteCommunication.callOnNative("nativeWebsocketDidOpen"),t===!1){if(this._isReconnecting===!0)return void location.reload(!0);var e={identifier:CWUtil.createUUID(),launchDate:Date.now()/1e3,ppi:CWSystemInfo.PPI()};this._setLocalDevice(e)}},_onWebsocketMessage:function(t){var e=JSON.parse(t.data);if("broadcast"!==e._target||e._source!==this.getLocalDevice().getIdentifier()||e._broadcastToSource===!0){CWDebug.log(4,"Received message: "+t.data);var i=this;window.requestAnimationFrame(function(){i.package.CWWebsocketMessageParser.parse(e),i.package.CWWebsocketMessageParser.parseOnRemote(e),e._name&&CWEventManager.trigger("message"+e._name,e)})}},_onWebsocketClose:function(){CWDebug.log(3,"Websocket closed"),this._cleanupWebsocket(),CWNativeRemoteCommunication.callOnNative("nativeWebsocketDidClose");this.package.CWNativeRemoteCommunication.isRunningNative()},_onWebsocketError:function(){CWDebug.log(3,"Error"),this._onWebsocketClose()},_tryWebsocketReconnect:function(){(void 0===this._websocket||this._websocket.readyState!==WebSocket.OPEN&&this._websocket.readyState!==WebSocket.CONNECTING)&&(this._isReconnecting=!0,CWDebug.log(3,"Try reconnect"),this._connectWebsocket())}}); //# sourceMappingURL=remote.min.js.map \ No newline at end of file diff --git a/ConnichiwaResources/weblib/remote.min.js.map b/ConnichiwaResources/weblib/remote.min.js.map index 66ade63..59083ae 100644 --- a/ConnichiwaResources/weblib/remote.min.js.map +++ b/ConnichiwaResources/weblib/remote.min.js.map @@ -1 +1 @@ -{"version":3,"file":"remote.min.js","sources":["remote.js"],"names":["CWDevice","properties","identifier","this","discoveryState","CWDeviceDiscoveryState","LOST","connectionState","CWDeviceConnectionState","DISCONNECTED","distance","_identifier","_launchDate","Date","now","_ips","_port","undefined","_name","_ppi","CWSystemInfo","DEFAULT_PPI","launchDate","ips","port","name","ppi","getIdentifier","getLaunchDate","getIPs","getPort","getName","getPPI","isLocal","equalTo","Connichiwa","getLocalDevice","isNearby","DISCOVERED","canBeConnected","isConnected","CONNECTED","CWLocation","x","y","width","height","global","toGlobal","CWEventManager","register","message","deviceTransformation","scale","bind","getGlobal","getLocal","toLocal","getGlobalX","getGlobalY","getGlobalWidth","getGlobalHeight","getLocalX","getLocalY","getLocalWidth","getLocalHeight","setGlobal","setLocal","CWDebug","log","JSON","stringify","setGlobalX","v","setGlobalY","setGlobalWidth","setGlobalHeight","setLocalX","local","setLocalY","setLocalWidth","setLocalHeight","toString","copy","fromString","CWPoint","CWSize","CWVector","p1","p2","_p1","_p2","_deltaX","_deltaY","_length","Math","sqrt","pow","deltaX","deltaY","length","OOP","DEFAULT_PACKAGE_NAME","classes","packages","createSingleton","packageName","className","_createSingletonInPackage","theClass","private","package","public","thePackage","_extendSingletonInPackage","extendSingleton","addedConstructor","getter","scope","propertyName","setter","value","errorGetter","errorSetter","TypeError","modifiedPropertyName","hasOwnProperty","visibility","indexOf","substr","theMethod","Object","defineProperty","get","set","window","setTimeout","__constructor","debug","enableDebug","disableDebug","priority","console","err","CONNECTING","prototype","insert","target","html","replace","replaceContent","loadScript","url","callback","loadCSS","send","object","isPrototypeOf","_callbacks","event","toLowerCase","push","events","split","i","trigger","logPrio","args","Array","slice","call","arguments","CWUtil","isString","shift","apply","CWGestures","private _touchStart","private _touchLast","private _touchLastVector","private _touchCheckable","private _touchAngleReferenceVector","private _touchAngleChangedCount","that","$","document","ready","captureOn","private _onDown","e","_touchStart","getEventLocation","private _onMove","newTouch","_touchLast","totalTouchVector","newTouchVector","_touchCheckable","_touchAngleReferenceVector","referenceTouchAngle","angle","_touchAngleChangedCount","_touchLastVector","newTouchAngle","private _onUp","swipeStart","swipeEnd","swipeLength","xyRatio","direction","abs","rubberBanding","innerHeight","endsAtTopEdge","endsAtLeftEdge","endsAtBottomEdge","endsAtRightEdge","edge","swipeData","public captureOn","el","jQuery","addEventListener","_onDown","_onMove","_onUp","CWGyroscope","_lastMeasure","_alphaGammaFlipped","gyro","frequency","startTracking","_onUpdate","private _onUpdate","o","alpha","beta","gamma","z","temp","deltaAlpha","deltaBeta","deltaGamma","gyroData","delta","deltaZ","accelData","package getLastGyroscopeMeasure","package getLastAccelerometerMeasure","result","transformation","CWStitchManager","getDeviceTransformation","rotation","applyRotation","s","obj","parse","parseFloat","private _isStitched","private _deviceTransformation","private _gyroDataOnStitch","public unstitchOnMove","public ignoreMoveAxis","on","_onLocalSwipe","_onWasStitched","_onWasUnstitched","_onGyroUpdate","_onAccelerometerUpdate","_gyroDataOnStitch","getLastGyroscopeMeasure","_deviceTransformation","_isStitched","DEFAULT_DEVICE_TRANSFORMATION","device","viewportWidth","viewportHeight","isStitched","unstitchOnMove","inArray","ignoreMoveAxis","_quitStitch","private _quitStitch","data","public unstitch","public isStitched","public getDeviceTransformation","private DEFAULT_DEVICE_TRANSFORMATION","public PPI","devicePixelRatio","navigator","platform","public isLandscape","innerWidth","public viewportWidth","public viewportHeight","public DEFAULT_PPI","parseURL","parser","createElement","href","type","pos","touches","originalEvent","targetTouches","randomInt","min","max","Number","MAX_VALUE","floor","random","isInt","parseInt","isObject","array","createUUID","a","otherVector","vectorsProduct","vectorsLength","acos","PI","CWWebsocketMessageParser","package parse","_parseAck","_parseInsert","_parseReplace","_parseLoadScript","_parseLoadCSS","_parseWasStitched","_parseWasUnstitched","_parseGotStitchNeighbor","original","_id","selector","append","contentOnly","replaceWith","getScript","done","_sendAck","fail","f","t","cssEntry","setAttribute","private _websocket","public getLocalDevice","public getIdentifier","public isMaster","public on","eventName","onLoad","public onMessage","public onLoad","readyState","public insert","attr","clone","style","cssText","outerHTML","public replace","_replace","public replaceContent","private _replace","public loadScript","messageID","public loadCSS","public send","_source","_target","_sendObject","public respond","originalMessage","responseObject","public broadcast","sendToSelf","_broadcastToSource","package _sendAck","ackMessage","package _sendObject","warn","messageString","_websocket","package _disconnectWebsocket","close","_cleanupWebsocket","onopen","onmessage","onclose","onerror","CWNativeRemoteCommunication","_runsNative","RUN_BY_CONNICHIWA_NATIVE","public isRunningNative","public callOnNative","methodName","isRunningNative","method","public parse","_parseRunsNative","_parseConnectWebsocket","_parseDebug","_parseLocalInfo","_parseDisconnectWebsocket","_connectWebsocket","_setLocalDevice","_disconnectWebsocket","package parseOnRemote","_parseSoftDisconnect","_softDisconnectWebsocket","private _localDevice","private _softDisconnected","private _isReconnecting","runsNative","_localDevice","package _setLocalDevice","package _connectWebsocket","oldWebsocket","parsedURL","URL","WebSocket","hostname","_onWebsocketOpen","_onWebsocketMessage","_onWebsocketClose","_onWebsocketError","_softDisconnected","callOnNative","_isReconnecting","location","reload","localInfo","PPI","requestAnimationFrame","parseOnRemote","_tryWebsocketReconnect","OPEN"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"remote.min.js","sources":["remote.js"],"names":["CWDevice","properties","identifier","this","discoveryState","CWDeviceDiscoveryState","LOST","connectionState","CWDeviceConnectionState","DISCONNECTED","distance","_identifier","_launchDate","Date","now","_ips","_port","undefined","_name","_ppi","CWSystemInfo","DEFAULT_PPI","launchDate","ips","port","name","ppi","getIdentifier","getLaunchDate","getIPs","getPort","getName","getPPI","isLocal","equalTo","Connichiwa","getLocalDevice","isNearby","DISCOVERED","canBeConnected","isConnected","CONNECTED","CWLocation","x","y","width","height","global","toGlobal","CWEventManager","register","message","deviceTransformation","scale","bind","getGlobal","getLocal","toLocal","getGlobalX","getGlobalY","getGlobalWidth","getGlobalHeight","getLocalX","getLocalY","getLocalWidth","getLocalHeight","setGlobal","setLocal","CWDebug","log","JSON","stringify","setGlobalX","v","setGlobalY","setGlobalWidth","setGlobalHeight","setLocalX","local","setLocalY","setLocalWidth","setLocalHeight","toString","copy","fromString","CWPoint","CWSize","CWVector","p1","p2","_p1","_p2","_deltaX","_deltaY","_length","Math","sqrt","pow","deltaX","deltaY","length","OOP","DEFAULT_PACKAGE_NAME","classes","packages","createSingleton","packageName","className","_createSingletonInPackage","theClass","private","package","public","thePackage","_extendSingletonInPackage","extendSingleton","addedConstructor","getter","scope","propertyName","setter","value","errorGetter","errorSetter","TypeError","modifiedPropertyName","hasOwnProperty","visibility","indexOf","substr","theMethod","Object","defineProperty","get","set","window","setTimeout","__constructor","_debug","_logLevel","public setDebug","public setLogLevel","public setDebugInfo","info","console","debug","logLevel","setDebug","setLogLevel","public getDebugInfo","public log","level","msg","public err","CONNECTING","prototype","insert","target","html","replace","replaceContent","loadScript","url","callback","loadCSS","send","object","isPrototypeOf","_callbacks","event","toLowerCase","push","events","split","i","trigger","logPrio","args","Array","slice","call","arguments","CWUtil","isString","shift","apply","CWGestures","private _touchStart","private _touchLast","private _touchLastVector","private _touchCheckable","private _touchAngleReferenceVector","private _touchAngleChangedCount","that","$","document","ready","captureOn","private _onDown","e","_touchStart","getEventLocation","private _onMove","newTouch","_touchLast","totalTouchVector","newTouchVector","_touchCheckable","_touchAngleReferenceVector","referenceTouchAngle","angle","_touchAngleChangedCount","_touchLastVector","newTouchAngle","private _onUp","swipeStart","swipeEnd","swipeLength","xyRatio","direction","abs","rubberBanding","innerHeight","endsAtTopEdge","endsAtLeftEdge","endsAtBottomEdge","endsAtRightEdge","edge","swipeData","public captureOn","el","jQuery","addEventListener","_onDown","_onMove","_onUp","CWGyroscope","_lastMeasure","_alphaGammaFlipped","gyro","frequency","startTracking","_onUpdate","private _onUpdate","o","alpha","beta","gamma","z","temp","deltaAlpha","deltaBeta","deltaGamma","gyroData","delta","deltaZ","accelData","package getLastGyroscopeMeasure","package getLastAccelerometerMeasure","result","transformation","CWStitchManager","getDeviceTransformation","rotation","applyRotation","s","obj","parse","parseFloat","private _isStitched","private _deviceTransformation","private _gyroDataOnStitch","public unstitchOnMove","public ignoreMoveAxis","on","_onLocalSwipe","_onWasStitched","_onWasUnstitched","_onGyroUpdate","_onAccelerometerUpdate","_gyroDataOnStitch","getLastGyroscopeMeasure","_deviceTransformation","_isStitched","DEFAULT_DEVICE_TRANSFORMATION","device","viewportWidth","viewportHeight","isStitched","unstitchOnMove","inArray","ignoreMoveAxis","_quitStitch","private _quitStitch","data","public unstitch","public isStitched","public getDeviceTransformation","private DEFAULT_DEVICE_TRANSFORMATION","public PPI","devicePixelRatio","navigator","platform","public isLandscape","innerWidth","public viewportWidth","public viewportHeight","public DEFAULT_PPI","parseURL","parser","createElement","href","type","pos","touches","originalEvent","targetTouches","randomInt","min","max","Number","MAX_VALUE","floor","random","isInt","parseInt","isObject","array","createUUID","a","otherVector","vectorsProduct","vectorsLength","acos","PI","CWWebsocketMessageParser","package parse","_parseAck","_parseInsert","_parseReplace","_parseLoadScript","_parseLoadCSS","_parseWasStitched","_parseWasUnstitched","_parseGotStitchNeighbor","original","_id","selector","append","contentOnly","replaceWith","getScript","done","_sendAck","fail","f","t","err","cssEntry","setAttribute","private _websocket","public getLocalDevice","public getIdentifier","public isMaster","public on","eventName","onLoad","public onMessage","public onLoad","readyState","public insert","attr","clone","style","cssText","outerHTML","public replace","_replace","public replaceContent","private _replace","public loadScript","messageID","public loadCSS","public send","_source","_target","_sendObject","public respond","originalMessage","responseObject","public broadcast","sendToSelf","_broadcastToSource","package _sendAck","ackMessage","package _sendObject","warn","messageString","_websocket","package _disconnectWebsocket","close","_cleanupWebsocket","onopen","onmessage","onclose","onerror","CWNativeRemoteCommunication","_runsNative","RUN_BY_CONNICHIWA_NATIVE","public isRunningNative","public callOnNative","methodName","isRunningNative","method","public parse","_parseRunsNative","_parseConnectWebsocket","_parseDebug","_parseLocalInfo","_parseDisconnectWebsocket","_connectWebsocket","enableDebug","_setLocalDevice","_disconnectWebsocket","package parseOnRemote","_parseDebugInfo","_parseSoftDisconnect","setDebugInfo","_softDisconnectWebsocket","private _localDevice","private _softDisconnected","private _isReconnecting","runsNative","_localDevice","package _setLocalDevice","package _connectWebsocket","oldWebsocket","parsedURL","URL","WebSocket","hostname","_onWebsocketOpen","_onWebsocketMessage","_onWebsocketClose","_onWebsocketError","_softDisconnected","callOnNative","_isReconnecting","location","reload","localInfo","PPI","requestAnimationFrame","parseOnRemote","_tryWebsocketReconnect","OPEN"],"mappings":"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"} \ No newline at end of file diff --git a/ConnichiwaResources/weblib_source/common/CWDebug.js b/ConnichiwaResources/weblib_source/common/CWDebug.js index 55d4f1f..499619c 100644 --- a/ConnichiwaResources/weblib_source/common/CWDebug.js +++ b/ConnichiwaResources/weblib_source/common/CWDebug.js @@ -1,3 +1,4 @@ +/* global OOP */ "use strict"; @@ -7,44 +8,39 @@ * * @namespace CWDebug */ -var CWDebug = (function() -{ - /** - * true if debug mode is on, otherwise false - */ - var debug = true; - - var enableDebug = function() { - debug = true; - }; - - - var disableDebug = function() { - debug = false; - }; - - /** - * Logs a message to the console if debug mode is on - * - * @param {int} priority The priority of the message. Messages with lower priority are printed at lower debug states. - * @param {string} message the message to log - * - * @memberof CWDebug - */ - var log = function(priority, message) - { - // if (priority > 3) return; - if (debug) console.log(priority + "|" + message); - }; - - var err = function(priority, message) { - if (debug) console.err(priority + "|" + message); - }; - - return { - enableDebug : enableDebug, - disableDebug : disableDebug, - log : log, - err : err - }; -})(); +var CWDebug = OOP.createSingleton("Connichiwa", "CWDebug", { + _debug: false, + _logLevel: 0, + + "public setDebug": function(v) { + this._debug = v; + }, + + "public setLogLevel": function(v) { + this._logLevel = v; + }, + + + "public setDebugInfo": function(info) { + if (info.debug) CWDebug.setDebug(info.debug); + if (info.logLevel) CWDebug.setLogLevel(info.logLevel); + }, + + + "public getDebugInfo": function() { + return { debug: this._debug, logLevel: this._logLevel }; + }, + + + "public log": function(level, msg) { + if (this._debug && level <= this._logLevel) { + console.log(level + "|" + msg); + } + }, + + "public err": function(msg) { + if (this._debug) { + console.log("ERROR" + "|" + msg); + } + } +}); \ No newline at end of file diff --git a/ConnichiwaResources/weblib_source/master/CWNativeMasterCommunication.js b/ConnichiwaResources/weblib_source/master/CWNativeMasterCommunication.js index ac8d99f..4faca41 100644 --- a/ConnichiwaResources/weblib_source/master/CWNativeMasterCommunication.js +++ b/ConnichiwaResources/weblib_source/master/CWNativeMasterCommunication.js @@ -60,7 +60,7 @@ var CWNativeMasterCommunication = OOP.createSingleton("Connichiwa", "CWNativeMas var object = JSON.parse(message); switch (object._name) { - case "cwdebug": this._parseDebug(object); break; + case "debuginfo": this._parseDebugInfo(object); break; case "connectwebsocket": this._parseConnectWebsocket(object); break; case "localinfo": this._parseLocalInfo(object); break; case "devicedetected": this._parseDeviceDetected(object); break; @@ -73,10 +73,9 @@ var CWNativeMasterCommunication = OOP.createSingleton("Connichiwa", "CWNativeMas }, - _parseDebug: function(message) + _parseDebugInfo: function(message) { - if (message.cwdebug === true) CWDebug.enableDebug(); - else CWDebug.disableDebug(); + CWDebug.setDebugInfo(message); }, diff --git a/ConnichiwaResources/weblib_source/master/CWWebsocketMessageParser.js b/ConnichiwaResources/weblib_source/master/CWWebsocketMessageParser.js index 91d061b..22bb268 100644 --- a/ConnichiwaResources/weblib_source/master/CWWebsocketMessageParser.js +++ b/ConnichiwaResources/weblib_source/master/CWWebsocketMessageParser.js @@ -33,11 +33,14 @@ OOP.extendSingleton("Connichiwa", "CWWebsocketMessageParser", device.connectionState = CWDeviceConnectionState.CONNECTED; nativeCallRemoteDidConnect(device.getIdentifier()); + + //Make sure the remote uses the same logging settings as we do + device.send("_debuginfo", CWDebug.getDebugInfo()); + // AutoLoad files from Connichiwa.autoLoad on the new remote device var didConnectCallback = function() { CWEventManager.trigger("deviceConnected", device); }; - var loadOtherFile = function(device, file) { //As of now, "other" files are only CSS var extension = file.split(".").pop().toLowerCase(); diff --git a/ConnichiwaResources/weblib_source/remote/CWWebsocketMessageParser.js b/ConnichiwaResources/weblib_source/remote/CWWebsocketMessageParser.js index 2964d5d..dc6dc72 100644 --- a/ConnichiwaResources/weblib_source/remote/CWWebsocketMessageParser.js +++ b/ConnichiwaResources/weblib_source/remote/CWWebsocketMessageParser.js @@ -6,11 +6,17 @@ OOP.extendSingleton("Connichiwa", "CWWebsocketMessageParser", { "package parseOnRemote": function(message) { switch (message._name) { + case "_debuginfo" : this._parseDebugInfo(message); break; case "_softdisconnect" : this._parseSoftDisconnect(message); break; } }, + _parseDebugInfo: function(message) { + CWDebug.setDebugInfo(message); + }, + + _parseSoftDisconnect: function(message) { this.package.Connichiwa._softDisconnectWebsocket(); },