You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by he...@apache.org on 2013/03/25 22:21:34 UTC
[1/4] webos commit: update makefile to read cordova version from
version file
Updated Branches:
refs/heads/master e937e5c6c -> 8124a94e5
update makefile to read cordova version from version file
Project: http://git-wip-us.apache.org/repos/asf/cordova-webos/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-webos/commit/650c5f5a
Tree: http://git-wip-us.apache.org/repos/asf/cordova-webos/tree/650c5f5a
Diff: http://git-wip-us.apache.org/repos/asf/cordova-webos/diff/650c5f5a
Branch: refs/heads/master
Commit: 650c5f5a5776e5bcb6aea58b8a9d3a89e2a16717
Parents: e937e5c
Author: hermwong <he...@gmail.com>
Authored: Mon Mar 25 14:16:21 2013 -0700
Committer: hermwong <he...@gmail.com>
Committed: Mon Mar 25 14:17:27 2013 -0700
----------------------------------------------------------------------
Makefile | 2 +-
VERSION | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-webos/blob/650c5f5a/Makefile
----------------------------------------------------------------------
diff --git a/Makefile b/Makefile
index 08c6037..c3f238b 100644
--- a/Makefile
+++ b/Makefile
@@ -37,7 +37,7 @@ OPEN = open
ECHO = echo
ECHO_N = echo -n
JAVA = java
-PGVERSION = 2.5.0
+PGVERSION := $(shell cat VERSION)
UNAME := $(shell uname)
NAME = `$(CAT) framework/appinfo.json | $(GREP) '"id"' | $(CUT) -d \" -f 4`
http://git-wip-us.apache.org/repos/asf/cordova-webos/blob/650c5f5a/VERSION
----------------------------------------------------------------------
diff --git a/VERSION b/VERSION
index fad066f..914ec96 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.5.0
\ No newline at end of file
+2.6.0
\ No newline at end of file
[4/4] webos commit: update cordova.js libs to 2.6.0
Posted by he...@apache.org.
update cordova.js libs to 2.6.0
Project: http://git-wip-us.apache.org/repos/asf/cordova-webos/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-webos/commit/8124a94e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-webos/tree/8124a94e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-webos/diff/8124a94e
Branch: refs/heads/master
Commit: 8124a94e5220dac432cadc08e43adfb76323ccf6
Parents: 650c5f5
Author: hermwong <he...@gmail.com>
Authored: Mon Mar 25 14:16:47 2013 -0700
Committer: hermwong <he...@gmail.com>
Committed: Mon Mar 25 14:19:16 2013 -0700
----------------------------------------------------------------------
lib/cordova.webos-debug.js | 23 ++-
lib/cordova.webos.js | 393 ++++++++++++++++++++++++++++++++------
2 files changed, 343 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
[2/4] update cordova.js libs to 2.6.0
Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-webos/blob/8124a94e/lib/cordova.webos.js
----------------------------------------------------------------------
diff --git a/lib/cordova.webos.js b/lib/cordova.webos.js
index da2986a..614b1fa 100644
--- a/lib/cordova.webos.js
+++ b/lib/cordova.webos.js
@@ -1,8 +1,8 @@
// Platform: webos
-// commit 6b1ca4e5e6db2525cfa4d0de41306d9edf61642b
+// commit bbf1562d4934b1331ffb263424b6ae054cedeb71
-// File generated at :: Wed Feb 27 2013 10:55:38 GMT-0800 (PST)
+// File generated at :: Thu Mar 21 2013 14:40:07 GMT-0700 (PDT)
/*
Licensed to the Apache Software Foundation (ASF) under one
@@ -725,7 +725,6 @@ channel.createSticky('onCordovaInfoReady');
channel.createSticky('onCordovaConnectionReady');
// Event to indicate that all automatically loaded JS plugins are loaded and ready.
-// This is used in conjunction with the automatic plugin JS loading CLI prototype.
channel.createSticky('onPluginsReady');
// Event to indicate that Cordova is ready
@@ -934,6 +933,13 @@ module.exports = {
var modulemapper = require('cordova/modulemapper');
modulemapper.loadMatchingModules(/cordova.*\/symbols$/);
+
+ modulemapper.merges('cordova/plugin/webos/service', 'navigator.service');
+ modulemapper.merges('cordova/plugin/webos/application', 'navigator.application');
+ modulemapper.merges('cordova/plugin/webos/window', 'navigator.window');
+ modulemapper.merges('cordova/plugin/webos/orientation', 'navigator.orientation');
+ modulemapper.merges('cordova/plugin/webos/keyboard', 'navigator.keyboard');
+
modulemapper.mapModules(window);
if (window.PalmSystem) {
@@ -1005,27 +1011,6 @@ module.exports = {
});
});
- },
- merges: {
- navigator: {
- children: {
- service: {
- path: "cordova/plugin/webos/service"
- },
- application: {
- path: "cordova/plugin/webos/application"
- },
- window: {
- path: "cordova/plugin/webos/window"
- },
- orientation: {
- path: "cordova/plugin/webos/orientation"
- },
- keyboard: {
- path: "cordova/plugin/webos/keyboard"
- }
- }
- }
}
};
@@ -1086,9 +1071,10 @@ cameraExport.getPicture = function(successCallback, errorCallback, options) {
var correctOrientation = !!options.correctOrientation;
var saveToPhotoAlbum = !!options.saveToPhotoAlbum;
var popoverOptions = getValue(options.popoverOptions, null);
+ var cameraDirection = getValue(options.cameraDirection, Camera.Direction.BACK);
var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType,
- mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions];
+ mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions, cameraDirection];
exec(successCallback, errorCallback, "Camera", "takePicture", args);
return new CameraPopoverHandle();
@@ -1131,6 +1117,10 @@ module.exports = {
ARROW_LEFT : 4,
ARROW_RIGHT : 8,
ARROW_ANY : 15
+ },
+ Direction:{
+ BACK: 0,
+ FRONT: 1
}
};
@@ -2322,14 +2312,7 @@ FileReader.prototype.readAsText = function(file, encoding) {
// Default encoding is UTF-8
var enc = encoding ? encoding : "UTF-8";
var me = this;
- var execArgs = [this._fileName, enc];
-
- // Maybe add slice parameters.
- if (file.end < file.size) {
- execArgs.push(file.start, file.end);
- } else if (file.start > 0) {
- execArgs.push(file.start);
- }
+ var execArgs = [this._fileName, enc, file.start, file.end];
// Read file
exec(
@@ -2398,14 +2381,7 @@ FileReader.prototype.readAsDataURL = function(file) {
}
var me = this;
- var execArgs = [this._fileName];
-
- // Maybe add slice parameters.
- if (file.end < file.size) {
- execArgs.push(file.start, file.end);
- } else if (file.start > 0) {
- execArgs.push(file.start);
- }
+ var execArgs = [this._fileName, file.start, file.end];
// Read file
exec(
@@ -2468,9 +2444,59 @@ FileReader.prototype.readAsBinaryString = function(file) {
if (initRead(this, file)) {
return this._realReader.readAsBinaryString(file);
}
- // TODO - Can't return binary data to browser.
- console.log('method "readAsBinaryString" is not supported at this time.');
- this.abort();
+
+ var me = this;
+ var execArgs = [this._fileName, file.start, file.end];
+
+ // Read file
+ exec(
+ // Success callback
+ function(r) {
+ // If DONE (cancelled), then don't do anything
+ if (me._readyState === FileReader.DONE) {
+ return;
+ }
+
+ // DONE state
+ me._readyState = FileReader.DONE;
+
+ me._result = r;
+
+ // If onload callback
+ if (typeof me.onload === "function") {
+ me.onload(new ProgressEvent("load", {target:me}));
+ }
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend(new ProgressEvent("loadend", {target:me}));
+ }
+ },
+ // Error callback
+ function(e) {
+ // If DONE (cancelled), then don't do anything
+ if (me._readyState === FileReader.DONE) {
+ return;
+ }
+
+ // DONE state
+ me._readyState = FileReader.DONE;
+
+ me._result = null;
+
+ // Save error
+ me._error = new FileError(e);
+
+ // If onerror callback
+ if (typeof me.onerror === "function") {
+ me.onerror(new ProgressEvent("error", {target:me}));
+ }
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend(new ProgressEvent("loadend", {target:me}));
+ }
+ }, "File", "readAsBinaryString", execArgs);
};
/**
@@ -2482,9 +2508,59 @@ FileReader.prototype.readAsArrayBuffer = function(file) {
if (initRead(this, file)) {
return this._realReader.readAsArrayBuffer(file);
}
- // TODO - Can't return binary data to browser.
- console.log('This method is not supported at this time.');
- this.abort();
+
+ var me = this;
+ var execArgs = [this._fileName, file.start, file.end];
+
+ // Read file
+ exec(
+ // Success callback
+ function(r) {
+ // If DONE (cancelled), then don't do anything
+ if (me._readyState === FileReader.DONE) {
+ return;
+ }
+
+ // DONE state
+ me._readyState = FileReader.DONE;
+
+ me._result = r;
+
+ // If onload callback
+ if (typeof me.onload === "function") {
+ me.onload(new ProgressEvent("load", {target:me}));
+ }
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend(new ProgressEvent("loadend", {target:me}));
+ }
+ },
+ // Error callback
+ function(e) {
+ // If DONE (cancelled), then don't do anything
+ if (me._readyState === FileReader.DONE) {
+ return;
+ }
+
+ // DONE state
+ me._readyState = FileReader.DONE;
+
+ me._result = null;
+
+ // Save error
+ me._error = new FileError(e);
+
+ // If onerror callback
+ if (typeof me.onerror === "function") {
+ me.onerror(new ProgressEvent("error", {target:me}));
+ }
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend(new ProgressEvent("loadend", {target:me}));
+ }
+ }, "File", "readAsArrayBuffer", execArgs);
};
module.exports = FileReader;
@@ -2530,6 +2606,38 @@ function newProgressEvent(result) {
return pe;
}
+function getBasicAuthHeader(urlString) {
+ var header = null;
+
+ if (window.btoa) {
+ // parse the url using the Location object
+ var url = document.createElement('a');
+ url.href = urlString;
+
+ var credentials = null;
+ var protocol = url.protocol + "//";
+ var origin = protocol + url.host;
+
+ // check whether there are the username:password credentials in the url
+ if (url.href.indexOf(origin) != 0) { // credentials found
+ var atIndex = url.href.indexOf("@");
+ credentials = url.href.substring(protocol.length, atIndex);
+ }
+
+ if (credentials) {
+ var authHeader = "Authorization";
+ var authHeaderValue = "Basic " + window.btoa(credentials);
+
+ header = {
+ name : authHeader,
+ value : authHeaderValue
+ };
+ }
+ }
+
+ return header;
+}
+
var idCounter = 0;
/**
@@ -2560,6 +2668,18 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro
var params = null;
var chunkedMode = true;
var headers = null;
+
+ var basicAuthHeader = getBasicAuthHeader(server);
+ if (basicAuthHeader) {
+ if (!options) {
+ options = new FileUploadOptions();
+ }
+ if (!options.headers) {
+ options.headers = {};
+ }
+ options.headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
if (options) {
fileKey = options.fileKey;
fileName = options.fileName;
@@ -2601,10 +2721,28 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro
* @param successCallback (Function} Callback to be invoked when upload has completed
* @param errorCallback {Function} Callback to be invoked upon error
* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false
+ * @param options {FileDownloadOptions} Optional parameters such as headers
*/
-FileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts) {
+FileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts, options) {
argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments);
var self = this;
+
+ var basicAuthHeader = getBasicAuthHeader(source);
+ if (basicAuthHeader) {
+ if (!options) {
+ options = {};
+ }
+ if (!options.headers) {
+ options.headers = {};
+ }
+ options.headers[basicAuthHeader.name] = basicAuthHeader.value;
+ }
+
+ var headers = null;
+ if (options) {
+ headers = options.headers || null;
+ }
+
var win = function(result) {
if (typeof result.lengthComputable != "undefined") {
if (self.onprogress) {
@@ -2631,7 +2769,7 @@ FileTransfer.prototype.download = function(source, target, successCallback, erro
errorCallback(error);
};
- exec(win, fail, 'FileTransfer', 'download', [source, target, trustAllHosts, this._id]);
+ exec(win, fail, 'FileTransfer', 'download', [source, target, trustAllHosts, this._id, headers]);
};
/**
@@ -3029,6 +3167,7 @@ function InAppBrowser() {
this.channels = {
'loadstart': channel.create('loadstart'),
'loadstop' : channel.create('loadstop'),
+ 'loaderror' : channel.create('loaderror'),
'exit' : channel.create('exit')
};
}
@@ -3059,7 +3198,7 @@ module.exports = function(strUrl, strWindowName, strWindowFeatures) {
var cb = function(eventname) {
iab._eventHandler(eventname);
};
- exec(cb, null, "InAppBrowser", "open", [strUrl, strWindowName, strWindowFeatures]);
+ exec(cb, cb, "InAppBrowser", "open", [strUrl, strWindowName, strWindowFeatures]);
return iab;
};
@@ -5282,6 +5421,7 @@ modulemapper.defaults('cordova/plugin/Connection', 'Connection');
define("cordova/plugin/notification", function(require, exports, module) {
var exec = require('cordova/exec');
+var platform = require('cordova/platform');
/**
* Provides access to notifications on the device.
@@ -5310,15 +5450,53 @@ module.exports = {
* @param {String} message Message to print in the body of the alert
* @param {Function} resultCallback The callback that is called when user clicks on a button.
* @param {String} title Title of the alert dialog (default: Confirm)
- * @param {String} buttonLabels Comma separated list of the labels of the buttons (default: 'OK,Cancel')
+ * @param {Array} buttonLabels Array of the labels of the buttons (default: ['OK', 'Cancel'])
*/
confirm: function(message, resultCallback, title, buttonLabels) {
var _title = (title || "Confirm");
- var _buttonLabels = (buttonLabels || "OK,Cancel");
+ var _buttonLabels = (buttonLabels || ["OK", "Cancel"]);
+
+ // Strings are deprecated!
+ if (typeof _buttonLabels === 'string') {
+ console.log("Notification.confirm(string, function, string, string) is deprecated. Use Notification.confirm(string, function, string, array).");
+ }
+
+ // Android and iOS take an array of button label names.
+ // Other platforms take a comma separated list.
+ // For compatibility, we convert to the desired type based on the platform.
+ if (platform.id == "android" || platform.id == "ios") {
+ if (typeof _buttonLabels === 'string') {
+ var buttonLabelString = _buttonLabels;
+ _buttonLabels = buttonLabelString.split(",");
+ }
+ } else {
+ if (Array.isArray(_buttonLabels)) {
+ var buttonLabelArray = _buttonLabels;
+ _buttonLabels = buttonLabelArray.toString();
+ }
+ }
exec(resultCallback, null, "Notification", "confirm", [message, _title, _buttonLabels]);
},
/**
+ * Open a native prompt dialog, with a customizable title and button text.
+ * The following results are returned to the result callback:
+ * buttonIndex Index number of the button selected.
+ * input1 The text entered in the prompt dialog box.
+ *
+ * @param {String} message Dialog message to display (default: "Prompt message")
+ * @param {Function} resultCallback The callback that is called when user clicks on a button.
+ * @param {String} title Title of the dialog (default: "Prompt")
+ * @param {Array} buttonLabels Array of strings for the button labels (default: ["OK","Cancel"])
+ */
+ prompt: function(message, resultCallback, title, buttonLabels) {
+ var _message = (message || "Prompt message");
+ var _title = (title || "Prompt");
+ var _buttonLabels = (buttonLabels || ["OK","Cancel"]);
+ exec(resultCallback, null, "Notification", "prompt", [_message, _title, _buttonLabels]);
+ },
+
+ /**
* Causes the device to vibrate.
*
* @param {Integer} mills The number of milliseconds to vibrate for.
@@ -6510,15 +6688,6 @@ window.cordova = require('cordova');
/**
* Create all cordova objects once page has fully loaded and native side is ready.
*/
- var joinEvents = [ channel.onDOMContentLoaded, channel.onNativeReady ];
-
- // If this property is set to something truthy, join on onPluginsReady too.
- // This property is set by the automatic JS installation prototype in cordova-cli,
- // and will be removed when the prototype either becomes mainline or is dropped.
- if (window.__onPluginsLoadedHack) {
- joinEvents.push(channel.onPluginsReady);
- }
-
channel.join(function() {
var builder = require('cordova/builder'),
platform = require('cordova/platform');
@@ -6539,7 +6708,7 @@ window.cordova = require('cordova');
require('cordova').fireDocumentEvent('deviceready');
}, channel.deviceReadyChannelsArray);
- }, joinEvents);
+ }, [ channel.onDOMContentLoaded, channel.onNativeReady, channel.onPluginsReady ]);
}(window));
@@ -6547,5 +6716,105 @@ window.cordova = require('cordova');
require('cordova/channel').onNativeReady.fire();
+// file: lib/scripts/plugin_loader.js
+
+// Tries to load all plugins' js-modules.
+// This is an async process, but onDeviceReady is blocked on onPluginsReady.
+// onPluginsReady is fired when there are no plugins to load, or they are all done.
+(function (context) {
+ // To be populated with the handler by handlePluginsObject.
+ var onScriptLoadingComplete;
+
+ var scriptCounter = 0;
+ function scriptLoadedCallback() {
+ scriptCounter--;
+ if (scriptCounter === 0) {
+ onScriptLoadingComplete && onScriptLoadingComplete();
+ }
+ }
+
+ // Helper function to inject a <script> tag.
+ function injectScript(path) {
+ scriptCounter++;
+ var script = document.createElement("script");
+ script.onload = scriptLoadedCallback;
+ script.src = path;
+ document.head.appendChild(script);
+ }
+
+ // Called when:
+ // * There are plugins defined and all plugins are finished loading.
+ // * There are no plugins to load.
+ function finishPluginLoading() {
+ context.cordova.require('cordova/channel').onPluginsReady.fire();
+ }
+
+ // Handler for the cordova_plugins.json content.
+ // See plugman's plugin_loader.js for the details of this object.
+ // This function is only called if the really is a plugins array that isn't empty.
+ // Otherwise the XHR response handler will just call finishPluginLoading().
+ function handlePluginsObject(modules) {
+ // First create the callback for when all plugins are loaded.
+ var mapper = context.cordova.require('cordova/modulemapper');
+ onScriptLoadingComplete = function() {
+ // Loop through all the plugins and then through their clobbers and merges.
+ for (var i = 0; i < modules.length; i++) {
+ var module = modules[i];
+ if (!module) continue;
+
+ if (module.clobbers && module.clobbers.length) {
+ for (var j = 0; j < module.clobbers.length; j++) {
+ mapper.clobbers(module.id, module.clobbers[j]);
+ }
+ }
+
+ if (module.merges && module.merges.length) {
+ for (var k = 0; k < module.merges.length; k++) {
+ mapper.merges(module.id, module.merges[k]);
+ }
+ }
+
+ // Finally, if runs is truthy we want to simply require() the module.
+ // This can be skipped if it had any merges or clobbers, though,
+ // since the mapper will already have required the module.
+ if (module.runs && !(module.clobbers && module.clobbers.length) && !(module.merges && module.merges.length)) {
+ context.cordova.require(module.id);
+ }
+ }
+
+ finishPluginLoading();
+ };
+
+ // Now inject the scripts.
+ for (var i = 0; i < modules.length; i++) {
+ injectScript(modules[i].file);
+ }
+ }
+
+ // Try to XHR the cordova_plugins.json file asynchronously.
+ var xhr = new context.XMLHttpRequest();
+ xhr.onreadystatechange = function() {
+ if (this.readyState != 4) { // not DONE
+ return;
+ }
+
+ // If the response is a JSON string which composes an array, call handlePluginsObject.
+ // If the request fails, or the response is not a JSON array, just call finishPluginLoading.
+ if (this.status == 200) {
+ var obj = JSON.parse(this.responseText);
+ if (obj && obj instanceof Array && obj.length > 0) {
+ handlePluginsObject(obj);
+ } else {
+ finishPluginLoading();
+ }
+ } else {
+ finishPluginLoading();
+ }
+ };
+ xhr.open('GET', 'cordova_plugins.json', true); // Async
+ xhr.send();
+}(window));
+
+
})();
\ No newline at end of file
[3/4] update cordova.js libs to 2.6.0
Posted by he...@apache.org.
http://git-wip-us.apache.org/repos/asf/cordova-webos/blob/8124a94e/lib/cordova.webos-debug.js
----------------------------------------------------------------------
diff --git a/lib/cordova.webos-debug.js b/lib/cordova.webos-debug.js
index 7eead2f..1d99d53 100644
--- a/lib/cordova.webos-debug.js
+++ b/lib/cordova.webos-debug.js
@@ -1,8 +1,8 @@
// Platform: webos
-// commit 6b1ca4e5e6db2525cfa4d0de41306d9edf61642b
+// commit bbf1562d4934b1331ffb263424b6ae054cedeb71
-// File generated at :: Wed Feb 27 2013 10:55:39 GMT-0800 (PST)
+// File generated at :: Thu Mar 21 2013 14:40:07 GMT-0700 (PDT)
/*
Licensed to the Apache Software Foundation (ASF) under one
@@ -29,14 +29,14 @@ try {eval("\nvar require,\n define;\n\n(function () {\n var modules = {};\
try {eval("define(\"cordova\", function(require, exports, module) {\n\n\nvar channel = require('cordova/channel');\n\n/**\n * Listen for DOMContentLoaded and notify our channel subscribers.\n */\ndocument.addEventListener('DOMContentLoaded', function() {\n channel.onDOMContentLoaded.fire();\n}, false);\nif (document.readyState == 'complete' || document.readyState == 'interactive') {\n channel.onDOMContentLoaded.fire();\n}\n\n/**\n * Intercept calls to addEventListener + removeEventListener and handle deviceready,\n * resume, and pause events.\n */\nvar m_document_addEventListener = document.addEventListener;\nvar m_document_removeEventListener = document.removeEventListener;\nvar m_window_addEventListener = window.addEventListener;\nvar m_window_removeEventListener = window.removeEventListener;\n\n/**\n * Houses custom event handlers to intercept on document + window event listeners.\n */\nvar documentEventHandlers = {},\n windowEventHandlers = {};\n\ndocument.addEventListe
ner = function(evt, handler, capture) {\n var e = evt.toLowerCase();\n if (typeof documentEventHandlers[e] != 'undefined') {\n documentEventHandlers[e].subscribe(handler);\n } else {\n m_document_addEventListener.call(document, evt, handler, capture);\n }\n};\n\nwindow.addEventListener = function(evt, handler, capture) {\n var e = evt.toLowerCase();\n if (typeof windowEventHandlers[e] != 'undefined') {\n windowEventHandlers[e].subscribe(handler);\n } else {\n m_window_addEventListener.call(window, evt, handler, capture);\n }\n};\n\ndocument.removeEventListener = function(evt, handler, capture) {\n var e = evt.toLowerCase();\n // If unsubscribing from an event that is handled by a plugin\n if (typeof documentEventHandlers[e] != \"undefined\") {\n documentEventHandlers[e].unsubscribe(handler);\n } else {\n m_document_removeEventListener.call(document, evt, handler, capture);\n }\n};\n\nwindow.removeEventL
istener = function(evt, handler, capture) {\n var e = evt.toLowerCase();\n // If unsubscribing from an event that is handled by a plugin\n if (typeof windowEventHandlers[e] != \"undefined\") {\n windowEventHandlers[e].unsubscribe(handler);\n } else {\n m_window_removeEventListener.call(window, evt, handler, capture);\n }\n};\n\nfunction createEvent(type, data) {\n var event = document.createEvent('Events');\n event.initEvent(type, false, false);\n if (data) {\n for (var i in data) {\n if (data.hasOwnProperty(i)) {\n event[i] = data[i];\n }\n }\n }\n return event;\n}\n\nif(typeof window.console === \"undefined\") {\n window.console = {\n log:function(){}\n };\n}\n\nvar cordova = {\n define:define,\n require:require,\n /**\n * Methods to add/remove your own addEventListener hijacking on document + window.\n */\n addWindowEventHandler:function(event) {\n
return (windowEventHandlers[event] = channel.create(event));\n },\n addStickyDocumentEventHandler:function(event) {\n return (documentEventHandlers[event] = channel.createSticky(event));\n },\n addDocumentEventHandler:function(event) {\n return (documentEventHandlers[event] = channel.create(event));\n },\n removeWindowEventHandler:function(event) {\n delete windowEventHandlers[event];\n },\n removeDocumentEventHandler:function(event) {\n delete documentEventHandlers[event];\n },\n /**\n * Retrieve original event handlers that were replaced by Cordova\n *\n * @return object\n */\n getOriginalHandlers: function() {\n return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener},\n 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};\n },\n /**\n * Method to fire
event from native code\n * bNoDetach is required for events which cause an exception which needs to be caught in native code\n */\n fireDocumentEvent: function(type, data, bNoDetach) {\n var evt = createEvent(type, data);\n if (typeof documentEventHandlers[type] != 'undefined') {\n if( bNoDetach ) {\n documentEventHandlers[type].fire(evt);\n }\n else {\n setTimeout(function() {\n documentEventHandlers[type].fire(evt);\n }, 0);\n }\n } else {\n document.dispatchEvent(evt);\n }\n },\n fireWindowEvent: function(type, data) {\n var evt = createEvent(type,data);\n if (typeof windowEventHandlers[type] != 'undefined') {\n setTimeout(function() {\n windowEventHandlers[type].fire(evt);\n }, 0);\n } else {\n window.dispatchEvent(evt);\n }\n },\n\n /**\n *
Plugin callback mechanism.\n */\n // Randomize the starting callbackId to avoid collisions after refreshing or navigating.\n // This way, it's very unlikely that any new callback would get the same callbackId as an old callback.\n callbackId: Math.floor(Math.random() * 2000000000),\n callbacks: {},\n callbackStatus: {\n NO_RESULT: 0,\n OK: 1,\n CLASS_NOT_FOUND_EXCEPTION: 2,\n ILLEGAL_ACCESS_EXCEPTION: 3,\n INSTANTIATION_EXCEPTION: 4,\n MALFORMED_URL_EXCEPTION: 5,\n IO_EXCEPTION: 6,\n INVALID_ACTION: 7,\n JSON_EXCEPTION: 8,\n ERROR: 9\n },\n\n /**\n * Called by native code when returning successful result from an action.\n */\n callbackSuccess: function(callbackId, args) {\n try {\n cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback);\n } catch (e) {\n console.log(\"Error in error callback: \" + callba
ckId + \" = \"+e);\n }\n },\n\n /**\n * Called by native code when returning error result from an action.\n */\n callbackError: function(callbackId, args) {\n // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative.\n // Derive success from status.\n try {\n cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback);\n } catch (e) {\n console.log(\"Error in error callback: \" + callbackId + \" = \"+e);\n }\n },\n\n /**\n * Called by native code when returning the result from an action.\n */\n callbackFromNative: function(callbackId, success, status, args, keepCallback) {\n var callback = cordova.callbacks[callbackId];\n if (callback) {\n if (success && status == cordova.callbackStatus.OK) {\n callback.success && callback.success.apply(null, args);\n } else if (!success) {\n
callback.fail && callback.fail.apply(null, args);\n }\n\n // Clear callback if not expecting any more results\n if (!keepCallback) {\n delete cordova.callbacks[callbackId];\n }\n }\n },\n addConstructor: function(func) {\n channel.onCordovaReady.subscribe(function() {\n try {\n func();\n } catch(e) {\n console.log(\"Failed to run constructor: \" + e);\n }\n });\n }\n};\n\n// Register pause, resume and deviceready channels as events on document.\nchannel.onPause = cordova.addDocumentEventHandler('pause');\nchannel.onResume = cordova.addDocumentEventHandler('resume');\nchannel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');\n\nmodule.exports = cordova;\n\n});\n\n//@ sourceURL=lib/cordova.js")} catch(e) {console.log("exception: in lib/cordova.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/argscheck\", function(require, exports, module) {\n\nvar exec = require('cordova/exec');\nvar utils = require('cordova/utils');\n\nvar moduleExports = module.exports;\n\nvar typeMap = {\n 'A': 'Array',\n 'D': 'Date',\n 'N': 'Number',\n 'S': 'String',\n 'F': 'Function',\n 'O': 'Object'\n};\n\nfunction extractParamName(callee, argIndex) {\n return (/.*?\\((.*?)\\)/).exec(callee)[1].split(', ')[argIndex];\n}\n\nfunction checkArgs(spec, functionName, args, opt_callee) {\n if (!moduleExports.enableChecks) {\n return;\n }\n var errMsg = null;\n var typeName;\n for (var i = 0; i < spec.length; ++i) {\n var c = spec.charAt(i),\n cUpper = c.toUpperCase(),\n arg = args[i];\n // Asterix means allow anything.\n if (c == '*') {\n continue;\n }\n typeName = utils.typeName(arg);\n if ((arg === null || arg === undefined) && c == cUpper) {\n conti
nue;\n }\n if (typeName != typeMap[cUpper]) {\n errMsg = 'Expected ' + typeMap[cUpper];\n break;\n }\n }\n if (errMsg) {\n errMsg += ', but got ' + typeName + '.';\n errMsg = 'Wrong type for parameter \"' + extractParamName(opt_callee || args.callee, i) + '\" of ' + functionName + ': ' + errMsg;\n // Don't log when running jake test.\n if (typeof jasmine == 'undefined') {\n console.error(errMsg);\n }\n throw TypeError(errMsg);\n }\n}\n\nfunction getValue(value, defaultValue) {\n return value === undefined ? defaultValue : value;\n}\n\nmoduleExports.checkArgs = checkArgs;\nmoduleExports.getValue = getValue;\nmoduleExports.enableChecks = true;\n\n\n});\n\n//@ sourceURL=lib/common/argscheck.js")} catch(e) {console.log("exception: in lib/common/argscheck.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/builder\", function(require, exports, module) {\n\nvar utils = require('cordova/utils');\n\nfunction each(objects, func, context) {\n for (var prop in objects) {\n if (objects.hasOwnProperty(prop)) {\n func.apply(context, [objects[prop], prop]);\n }\n }\n}\n\nfunction clobber(obj, key, value) {\n exports.replaceHookForTesting(obj, key);\n obj[key] = value;\n // Getters can only be overridden by getters.\n if (obj[key] !== value) {\n utils.defineGetter(obj, key, function() {\n return value;\n });\n }\n}\n\nfunction assignOrWrapInDeprecateGetter(obj, key, value, message) {\n if (message) {\n utils.defineGetter(obj, key, function() {\n console.log(message);\n delete obj[key];\n clobber(obj, key, value);\n return value;\n });\n } else {\n clobber(obj, key, value);\n }\n}\n\nfunction include(parent, objects, clobber,
merge) {\n each(objects, function (obj, key) {\n try {\n var result = obj.path ? require(obj.path) : {};\n\n if (clobber) {\n // Clobber if it doesn't exist.\n if (typeof parent[key] === 'undefined') {\n assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);\n } else if (typeof obj.path !== 'undefined') {\n // If merging, merge properties onto parent, otherwise, clobber.\n if (merge) {\n recursiveMerge(parent[key], result);\n } else {\n assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);\n }\n }\n result = parent[key];\n } else {\n // Overwrite if not currently defined.\n if (typeof parent[key] == 'undefined') {\n assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);\n }
else {\n // Set result to what already exists, so we can build children into it if they exist.\n result = parent[key];\n }\n }\n\n if (obj.children) {\n include(result, obj.children, clobber, merge);\n }\n } catch(e) {\n utils.alert('Exception building cordova JS globals: ' + e + ' for key \"' + key + '\"');\n }\n });\n}\n\n/**\n * Merge properties from one object onto another recursively. Properties from\n * the src object will overwrite existing target property.\n *\n * @param target Object to merge properties into.\n * @param src Object to merge properties from.\n */\nfunction recursiveMerge(target, src) {\n for (var prop in src) {\n if (src.hasOwnProperty(prop)) {\n if (target.prototype && target.prototype.constructor === target) {\n // If the target object is a constructor override off prototype.\n clobber(target.prototype, pr
op, src[prop]);\n } else {\n if (typeof src[prop] === 'object' && typeof target[prop] === 'object') {\n recursiveMerge(target[prop], src[prop]);\n } else {\n clobber(target, prop, src[prop]);\n }\n }\n }\n }\n}\n\nexports.buildIntoButDoNotClobber = function(objects, target) {\n include(target, objects, false, false);\n};\nexports.buildIntoAndClobber = function(objects, target) {\n include(target, objects, true, false);\n};\nexports.buildIntoAndMerge = function(objects, target) {\n include(target, objects, true, true);\n};\nexports.recursiveMerge = recursiveMerge;\nexports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter;\nexports.replaceHookForTesting = function() {};\n\n});\n\n//@ sourceURL=lib/common/builder.js")} catch(e) {console.log("exception: in lib/common/builder.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/channel\", function(require, exports, module) {\n\nvar utils = require('cordova/utils'),\n nextGuid = 1;\n\n/**\n * Custom pub-sub \"channel\" that can have functions subscribed to it\n * This object is used to define and control firing of events for\n * cordova initialization, as well as for custom events thereafter.\n *\n * The order of events during page load and Cordova startup is as follows:\n *\n * onDOMContentLoaded* Internal event that is received when the web page is loaded and parsed.\n * onNativeReady* Internal event that indicates the Cordova native side is ready.\n * onCordovaReady* Internal event fired when all Cordova JavaScript objects have been created.\n * onCordovaInfoReady* Internal event fired when device properties are available.\n * onCordovaConnectionReady* Internal event fired when the connection property has been set.\n * onDeviceReady* User event fired to indicate that C
ordova is ready\n * onResume User event fired to indicate a start/resume lifecycle event\n * onPause User event fired to indicate a pause lifecycle event\n * onDestroy* Internal event fired when app is being destroyed (User should use window.onunload event, not this one).\n *\n * The events marked with an * are sticky. Once they have fired, they will stay in the fired state.\n * All listeners that subscribe after the event is fired will be executed right away.\n *\n * The only Cordova events that user code should register for are:\n * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript\n * pause App has moved to background\n * resume App has returned to foreground\n *\n * Listeners can be registered as:\n * document.addEventListener(\"deviceready\", myDeviceReadyListener, false);\n * document.addEventListener(\"resume\",
myResumeListener, false);\n * document.addEventListener(\"pause\", myPauseListener, false);\n *\n * The DOM lifecycle events should be used for saving and restoring state\n * window.onload\n * window.onunload\n *\n */\n\n/**\n * Channel\n * @constructor\n * @param type String the channel name\n */\nvar Channel = function(type, sticky) {\n this.type = type;\n // Map of guid -> function.\n this.handlers = {};\n // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired.\n this.state = sticky ? 1 : 0;\n // Used in sticky mode to remember args passed to fire().\n this.fireArgs = null;\n // Used by onHasSubscribersChange to know if there are any listeners.\n this.numHandlers = 0;\n // Function that is called when the first listener is subscribed, or when\n // the last listener is unsubscribed.\n this.onHasSubscribersChange = null;\n},\n channel = {\n /**\n * Calls the provided function only after all of the channels spe
cified\n * have been fired. All channels must be sticky channels.\n */\n join: function(h, c) {\n var len = c.length,\n i = len,\n f = function() {\n if (!(--i)) h();\n };\n for (var j=0; j<len; j++) {\n if (c[j].state === 0) {\n throw Error('Can only use join with sticky channels.');\n }\n c[j].subscribe(f);\n }\n if (!len) h();\n },\n create: function(type) {\n return channel[type] = new Channel(type, false);\n },\n createSticky: function(type) {\n return channel[type] = new Channel(type, true);\n },\n\n /**\n * cordova Channels that must fire before \"deviceready\" is fired.\n */\n deviceReadyChannelsArray: [],\n deviceReadyChannelsMap: {},\n\n /**\n * Indicate that a feature needs
to be initialized before it is ready to be used.\n * This holds up Cordova's \"deviceready\" event until the feature has been initialized\n * and Cordova.initComplete(feature) is called.\n *\n * @param feature {String} The unique feature name\n */\n waitForInitialization: function(feature) {\n if (feature) {\n var c = channel[feature] || this.createSticky(feature);\n this.deviceReadyChannelsMap[feature] = c;\n this.deviceReadyChannelsArray.push(c);\n }\n },\n\n /**\n * Indicate that initialization code has completed and the feature is ready to be used.\n *\n * @param feature {String} The unique feature name\n */\n initializationComplete: function(feature) {\n var c = this.deviceReadyChannelsMap[feature];\n if (c) {\n c.fire();\n }\n }\n };\n\nfunction f
orceFunction(f) {\n if (typeof f != 'function') throw \"Function required as first argument!\";\n}\n\n/**\n * Subscribes the given function to the channel. Any time that\n * Channel.fire is called so too will the function.\n * Optionally specify an execution context for the function\n * and a guid that can be used to stop subscribing to the channel.\n * Returns the guid.\n */\nChannel.prototype.subscribe = function(f, c) {\n // need a function to call\n forceFunction(f);\n if (this.state == 2) {\n f.apply(c || this, this.fireArgs);\n return;\n }\n\n var func = f,\n guid = f.observer_guid;\n if (typeof c == \"object\") { func = utils.close(c, f); }\n\n if (!guid) {\n // first time any channel has seen this subscriber\n guid = '' + nextGuid++;\n }\n func.observer_guid = guid;\n f.observer_guid = guid;\n\n // Don't add the same handler more than once.\n if (!this.handlers[guid]) {\n this.handlers[guid] = f
unc;\n this.numHandlers++;\n if (this.numHandlers == 1) {\n this.onHasSubscribersChange && this.onHasSubscribersChange();\n }\n }\n};\n\n/**\n * Unsubscribes the function with the given guid from the channel.\n */\nChannel.prototype.unsubscribe = function(f) {\n // need a function to unsubscribe\n forceFunction(f);\n\n var guid = f.observer_guid,\n handler = this.handlers[guid];\n if (handler) {\n delete this.handlers[guid];\n this.numHandlers--;\n if (this.numHandlers === 0) {\n this.onHasSubscribersChange && this.onHasSubscribersChange();\n }\n }\n};\n\n/**\n * Calls all functions subscribed to this channel.\n */\nChannel.prototype.fire = function(e) {\n var fail = false,\n fireArgs = Array.prototype.slice.call(arguments);\n // Apply stickiness.\n if (this.state == 1) {\n this.state = 2;\n this.fireArgs = fireArgs;\n }\n if (this.numHandlers) {\n
// Copy the values first so that it is safe to modify it from within\n // callbacks.\n var toCall = [];\n for (var item in this.handlers) {\n toCall.push(this.handlers[item]);\n }\n for (var i = 0; i < toCall.length; ++i) {\n toCall[i].apply(this, fireArgs);\n }\n if (this.state == 2 && this.numHandlers) {\n this.numHandlers = 0;\n this.handlers = {};\n this.onHasSubscribersChange && this.onHasSubscribersChange();\n }\n }\n};\n\n\n// defining them here so they are ready super fast!\n// DOM event that is received when the web page is loaded and parsed.\nchannel.createSticky('onDOMContentLoaded');\n\n// Event to indicate the Cordova native side is ready.\nchannel.createSticky('onNativeReady');\n\n// Event to indicate that all Cordova JavaScript objects have been created\n// and it's time to run plugin constructors.\nchannel.createSticky('onCordovaReady');\n\n// Event to
indicate that device properties are available\nchannel.createSticky('onCordovaInfoReady');\n\n// Event to indicate that the connection property has been set.\nchannel.createSticky('onCordovaConnectionReady');\n\n// Event to indicate that all automatically loaded JS plugins are loaded and ready.\n// This is used in conjunction with the automatic plugin JS loading CLI prototype.\nchannel.createSticky('onPluginsReady');\n\n// Event to indicate that Cordova is ready\nchannel.createSticky('onDeviceReady');\n\n// Event to indicate a resume lifecycle event\nchannel.create('onResume');\n\n// Event to indicate a pause lifecycle event\nchannel.create('onPause');\n\n// Event to indicate a destroy lifecycle event\nchannel.createSticky('onDestroy');\n\n// Channels that must fire before \"deviceready\" is fired.\nchannel.waitForInitialization('onCordovaReady');\nchannel.waitForInitialization('onCordovaConnectionReady');\n\nmodule.exports = channel;\n\n});\n\n//@ sourceURL=lib/common/channel.js")
} catch(e) {console.log("exception: in lib/common/channel.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/channel\", function(require, exports, module) {\n\nvar utils = require('cordova/utils'),\n nextGuid = 1;\n\n/**\n * Custom pub-sub \"channel\" that can have functions subscribed to it\n * This object is used to define and control firing of events for\n * cordova initialization, as well as for custom events thereafter.\n *\n * The order of events during page load and Cordova startup is as follows:\n *\n * onDOMContentLoaded* Internal event that is received when the web page is loaded and parsed.\n * onNativeReady* Internal event that indicates the Cordova native side is ready.\n * onCordovaReady* Internal event fired when all Cordova JavaScript objects have been created.\n * onCordovaInfoReady* Internal event fired when device properties are available.\n * onCordovaConnectionReady* Internal event fired when the connection property has been set.\n * onDeviceReady* User event fired to indicate that C
ordova is ready\n * onResume User event fired to indicate a start/resume lifecycle event\n * onPause User event fired to indicate a pause lifecycle event\n * onDestroy* Internal event fired when app is being destroyed (User should use window.onunload event, not this one).\n *\n * The events marked with an * are sticky. Once they have fired, they will stay in the fired state.\n * All listeners that subscribe after the event is fired will be executed right away.\n *\n * The only Cordova events that user code should register for are:\n * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript\n * pause App has moved to background\n * resume App has returned to foreground\n *\n * Listeners can be registered as:\n * document.addEventListener(\"deviceready\", myDeviceReadyListener, false);\n * document.addEventListener(\"resume\",
myResumeListener, false);\n * document.addEventListener(\"pause\", myPauseListener, false);\n *\n * The DOM lifecycle events should be used for saving and restoring state\n * window.onload\n * window.onunload\n *\n */\n\n/**\n * Channel\n * @constructor\n * @param type String the channel name\n */\nvar Channel = function(type, sticky) {\n this.type = type;\n // Map of guid -> function.\n this.handlers = {};\n // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired.\n this.state = sticky ? 1 : 0;\n // Used in sticky mode to remember args passed to fire().\n this.fireArgs = null;\n // Used by onHasSubscribersChange to know if there are any listeners.\n this.numHandlers = 0;\n // Function that is called when the first listener is subscribed, or when\n // the last listener is unsubscribed.\n this.onHasSubscribersChange = null;\n},\n channel = {\n /**\n * Calls the provided function only after all of the channels spe
cified\n * have been fired. All channels must be sticky channels.\n */\n join: function(h, c) {\n var len = c.length,\n i = len,\n f = function() {\n if (!(--i)) h();\n };\n for (var j=0; j<len; j++) {\n if (c[j].state === 0) {\n throw Error('Can only use join with sticky channels.');\n }\n c[j].subscribe(f);\n }\n if (!len) h();\n },\n create: function(type) {\n return channel[type] = new Channel(type, false);\n },\n createSticky: function(type) {\n return channel[type] = new Channel(type, true);\n },\n\n /**\n * cordova Channels that must fire before \"deviceready\" is fired.\n */\n deviceReadyChannelsArray: [],\n deviceReadyChannelsMap: {},\n\n /**\n * Indicate that a feature needs
to be initialized before it is ready to be used.\n * This holds up Cordova's \"deviceready\" event until the feature has been initialized\n * and Cordova.initComplete(feature) is called.\n *\n * @param feature {String} The unique feature name\n */\n waitForInitialization: function(feature) {\n if (feature) {\n var c = channel[feature] || this.createSticky(feature);\n this.deviceReadyChannelsMap[feature] = c;\n this.deviceReadyChannelsArray.push(c);\n }\n },\n\n /**\n * Indicate that initialization code has completed and the feature is ready to be used.\n *\n * @param feature {String} The unique feature name\n */\n initializationComplete: function(feature) {\n var c = this.deviceReadyChannelsMap[feature];\n if (c) {\n c.fire();\n }\n }\n };\n\nfunction f
orceFunction(f) {\n if (typeof f != 'function') throw \"Function required as first argument!\";\n}\n\n/**\n * Subscribes the given function to the channel. Any time that\n * Channel.fire is called so too will the function.\n * Optionally specify an execution context for the function\n * and a guid that can be used to stop subscribing to the channel.\n * Returns the guid.\n */\nChannel.prototype.subscribe = function(f, c) {\n // need a function to call\n forceFunction(f);\n if (this.state == 2) {\n f.apply(c || this, this.fireArgs);\n return;\n }\n\n var func = f,\n guid = f.observer_guid;\n if (typeof c == \"object\") { func = utils.close(c, f); }\n\n if (!guid) {\n // first time any channel has seen this subscriber\n guid = '' + nextGuid++;\n }\n func.observer_guid = guid;\n f.observer_guid = guid;\n\n // Don't add the same handler more than once.\n if (!this.handlers[guid]) {\n this.handlers[guid] = f
unc;\n this.numHandlers++;\n if (this.numHandlers == 1) {\n this.onHasSubscribersChange && this.onHasSubscribersChange();\n }\n }\n};\n\n/**\n * Unsubscribes the function with the given guid from the channel.\n */\nChannel.prototype.unsubscribe = function(f) {\n // need a function to unsubscribe\n forceFunction(f);\n\n var guid = f.observer_guid,\n handler = this.handlers[guid];\n if (handler) {\n delete this.handlers[guid];\n this.numHandlers--;\n if (this.numHandlers === 0) {\n this.onHasSubscribersChange && this.onHasSubscribersChange();\n }\n }\n};\n\n/**\n * Calls all functions subscribed to this channel.\n */\nChannel.prototype.fire = function(e) {\n var fail = false,\n fireArgs = Array.prototype.slice.call(arguments);\n // Apply stickiness.\n if (this.state == 1) {\n this.state = 2;\n this.fireArgs = fireArgs;\n }\n if (this.numHandlers) {\n
// Copy the values first so that it is safe to modify it from within\n // callbacks.\n var toCall = [];\n for (var item in this.handlers) {\n toCall.push(this.handlers[item]);\n }\n for (var i = 0; i < toCall.length; ++i) {\n toCall[i].apply(this, fireArgs);\n }\n if (this.state == 2 && this.numHandlers) {\n this.numHandlers = 0;\n this.handlers = {};\n this.onHasSubscribersChange && this.onHasSubscribersChange();\n }\n }\n};\n\n\n// defining them here so they are ready super fast!\n// DOM event that is received when the web page is loaded and parsed.\nchannel.createSticky('onDOMContentLoaded');\n\n// Event to indicate the Cordova native side is ready.\nchannel.createSticky('onNativeReady');\n\n// Event to indicate that all Cordova JavaScript objects have been created\n// and it's time to run plugin constructors.\nchannel.createSticky('onCordovaReady');\n\n// Event to
indicate that device properties are available\nchannel.createSticky('onCordovaInfoReady');\n\n// Event to indicate that the connection property has been set.\nchannel.createSticky('onCordovaConnectionReady');\n\n// Event to indicate that all automatically loaded JS plugins are loaded and ready.\nchannel.createSticky('onPluginsReady');\n\n// Event to indicate that Cordova is ready\nchannel.createSticky('onDeviceReady');\n\n// Event to indicate a resume lifecycle event\nchannel.create('onResume');\n\n// Event to indicate a pause lifecycle event\nchannel.create('onPause');\n\n// Event to indicate a destroy lifecycle event\nchannel.createSticky('onDestroy');\n\n// Channels that must fire before \"deviceready\" is fired.\nchannel.waitForInitialization('onCordovaReady');\nchannel.waitForInitialization('onCordovaConnectionReady');\n\nmodule.exports = channel;\n\n});\n\n//@ sourceURL=lib/common/channel.js")} catch(e) {console.log("exception: in lib/common/channel.js: " + e);console.log(e.s
tack);}
try {eval("define(\"cordova/commandProxy\", function(require, exports, module) {\n\n\n// internal map of proxy function\nvar CommandProxyMap = {};\n\nmodule.exports = {\n\n // example: cordova.commandProxy.add(\"Accelerometer\",{getCurrentAcceleration: function(successCallback, errorCallback, options) {...},...);\n add:function(id,proxyObj) {\n console.log(\"adding proxy for \" + id);\n CommandProxyMap[id] = proxyObj;\n return proxyObj;\n },\n\n // cordova.commandProxy.remove(\"Accelerometer\");\n remove:function(id) {\n var proxy = CommandProxyMap[id];\n delete CommandProxyMap[id];\n CommandProxyMap[id] = null;\n return proxy;\n },\n\n get:function(service,action) {\n return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );\n }\n};\n});\n\n//@ sourceURL=lib/common/commandProxy.js")} catch(e) {console.log("exception: in lib/common/commandProxy.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/exec\", function(require, exports, module) {\n\n/**\n * Execute a cordova command. It is up to the native side whether this action\n * is synchronous or asynchronous. The native side can return:\n * Synchronous: PluginResult object as a JSON string\n * Asynchrounous: Empty string \"\"\n * If async, the native side will cordova.callbackSuccess or cordova.callbackError,\n * depending upon the result of the action.\n *\n * @param {Function} success The success callback\n * @param {Function} fail The fail callback\n * @param {String} service The name of the service to use\n * @param {String} action Action to be run in cordova\n * @param {String[]} [args] Zero or more arguments to pass to the method\n */\n\nvar plugins = {\n \"Device\": require('cordova/plugin/webos/device'),\n \"NetworkStatus\": require('cordova/plugin/webos/network'),\n \"Compass\": require('cordova/plugin/webos/compass'),\n \"Camera\": require
('cordova/plugin/webos/camera'),\n \"Accelerometer\" : require('cordova/plugin/webos/accelerometer'),\n \"Notification\" : require('cordova/plugin/webos/notification'),\n \"Geolocation\": require('cordova/plugin/webos/geolocation')\n};\n\nmodule.exports = function(success, fail, service, action, args) {\n try {\n console.error(\"exec:call plugin:\"+service+\":\"+action);\n plugins[service][action](success, fail, args);\n }\n catch(e) {\n console.error(\"missing exec: \" + service + \".\" + action);\n console.error(args);\n console.error(e);\n console.error(e.stack);\n }\n};\n\n});\n\n//@ sourceURL=lib/webos/exec.js")} catch(e) {console.log("exception: in lib/webos/exec.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/modulemapper\", function(require, exports, module) {\n\nvar builder = require('cordova/builder'),\n moduleMap = define.moduleMap,\n symbolList,\n deprecationMap;\n\nexports.reset = function() {\n symbolList = [];\n deprecationMap = {};\n};\n\nfunction addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {\n if (!(moduleName in moduleMap)) {\n throw new Error('Module ' + moduleName + ' does not exist.');\n }\n symbolList.push(strategy, moduleName, symbolPath);\n if (opt_deprecationMessage) {\n deprecationMap[symbolPath] = opt_deprecationMessage;\n }\n}\n\n// Note: Android 2.3 does have Function.bind().\nexports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {\n addEntry('c', moduleName, symbolPath, opt_deprecationMessage);\n};\n\nexports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {\n addEntry('m', moduleName, symbolPath, opt_deprecationMessage);\n};\
n\nexports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {\n addEntry('d', moduleName, symbolPath, opt_deprecationMessage);\n};\n\nfunction prepareNamespace(symbolPath, context) {\n if (!symbolPath) {\n return context;\n }\n var parts = symbolPath.split('.');\n var cur = context;\n for (var i = 0, part; part = parts[i]; ++i) {\n cur = cur[part] = cur[part] || {};\n }\n return cur;\n}\n\nexports.mapModules = function(context) {\n var origSymbols = {};\n context.CDV_origSymbols = origSymbols;\n for (var i = 0, len = symbolList.length; i < len; i += 3) {\n var strategy = symbolList[i];\n var moduleName = symbolList[i + 1];\n var symbolPath = symbolList[i + 2];\n var lastDot = symbolPath.lastIndexOf('.');\n var namespace = symbolPath.substr(0, lastDot);\n var lastName = symbolPath.substr(lastDot + 1);\n\n var module = require(moduleName);\n var deprecationMsg = sy
mbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;\n var parentObj = prepareNamespace(namespace, context);\n var target = parentObj[lastName];\n\n if (strategy == 'm' && target) {\n builder.recursiveMerge(target, module);\n } else if ((strategy == 'd' && !target) || (strategy != 'd')) {\n if (!(symbolPath in origSymbols)) {\n origSymbols[symbolPath] = target;\n }\n builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);\n }\n }\n};\n\nexports.getOriginalSymbol = function(context, symbolPath) {\n var origSymbols = context.CDV_origSymbols;\n if (origSymbols && (symbolPath in origSymbols)) {\n return origSymbols[symbolPath];\n }\n var parts = symbolPath.split('.');\n var obj = context;\n for (var i = 0; i < parts.length; ++i) {\n obj = obj && obj[parts[i]];\n }\n ret
urn obj;\n};\n\nexports.loadMatchingModules = function(matchingRegExp) {\n for (var k in moduleMap) {\n if (matchingRegExp.exec(k)) {\n require(k);\n }\n }\n};\n\nexports.reset();\n\n\n});\n\n//@ sourceURL=lib/common/modulemapper.js")} catch(e) {console.log("exception: in lib/common/modulemapper.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/platform\", function(require, exports, module) {\n\nvar service=require('cordova/plugin/webos/service'),\n cordova = require('cordova');\n\nmodule.exports = {\n id: \"webos\",\n initialize: function() {\n var modulemapper = require('cordova/modulemapper');\n\n modulemapper.loadMatchingModules(/cordova.*\\/symbols$/);\n modulemapper.mapModules(window);\n\n if (window.PalmSystem) {\n window.PalmSystem.stageReady();\n }\n\n // create global Mojo object if it does not exist\n Mojo = window.Mojo || {};\n\n // wait for deviceready before listening and firing document events\n document.addEventListener(\"deviceready\", function () {\n\n // LunaSysMgr calls this when the windows is maximized or opened.\n window.Mojo.stageActivated = function() {\n console.log(\"stageActivated\");\n cordova.fireDocumentEvent(\"resume\");\n
};\n // LunaSysMgr calls this when the windows is minimized or closed.\n window.Mojo.stageDeactivated = function() {\n console.log(\"stageDeactivated\");\n cordova.fireDocumentEvent(\"pause\");\n };\n // LunaSysMgr calls this when a KeepAlive app's window is hidden\n window.Mojo.hide = function() {\n console.log(\"hide\");\n };\n // LunaSysMgr calls this when a KeepAlive app's window is shown\n window.Mojo.show = function() {\n console.log(\"show\");\n };\n\n // LunaSysMgr calls this whenever an app is \"launched;\"\n window.Mojo.relaunch = function() {\n // need to return true to tell sysmgr the relaunch succeeded.\n // otherwise, it'll try to focus the app, which will focus the first\n // opened window of an app with multiple windows.\n\n va
r lp=JSON.parse(PalmSystem.launchParams) || {};\n\n if (lp['palm-command'] && lp['palm-command'] == 'open-app-menu') {\n console.log(\"event:ToggleAppMenu\");\n cordova.fireDocumentEvent(\"menubutton\");\n }\n\n console.log(\"relaunch\");\n return true;\n };\n\n // start to listen for network connection changes\n service.Request('palm://com.palm.connectionmanager', {\n method: 'getstatus',\n parameters: { subscribe: true },\n onSuccess: function (result) {\n console.log(\"subscribe:result:\"+JSON.stringify(result));\n\n if (!result.isInternetConnectionAvailable) {\n if (navigator.onLine) {\n console.log(\"Firing event:offline\");\n cordova.fireDocumentEvent(\"offline\");\n }
\n } else {\n console.log(\"Firing event:online\");\n cordova.fireDocumentEvent(\"online\");\n }\n },\n onFailure: function(e) {\n console.error(\"subscribe:error\");\n }\n });\n\n });\n },\n merges: {\n navigator: {\n children: {\n service: {\n path: \"cordova/plugin/webos/service\"\n },\n application: {\n path: \"cordova/plugin/webos/application\"\n },\n window: {\n path: \"cordova/plugin/webos/window\"\n },\n orientation: {\n path: \"cordova/plugin/webos/orientation\"\n },\n keyboard: {\n path: \"cordova/plugin/webos/keyboard\"\n }\n }\n
}\n }\n};\n\n});\n\n//@ sourceURL=lib/webos/platform.js")} catch(e) {console.log("exception: in lib/webos/platform.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/platform\", function(require, exports, module) {\n\nvar service=require('cordova/plugin/webos/service'),\n cordova = require('cordova');\n\nmodule.exports = {\n id: \"webos\",\n initialize: function() {\n var modulemapper = require('cordova/modulemapper');\n\n modulemapper.loadMatchingModules(/cordova.*\\/symbols$/);\n\n modulemapper.merges('cordova/plugin/webos/service', 'navigator.service');\n modulemapper.merges('cordova/plugin/webos/application', 'navigator.application');\n modulemapper.merges('cordova/plugin/webos/window', 'navigator.window');\n modulemapper.merges('cordova/plugin/webos/orientation', 'navigator.orientation');\n modulemapper.merges('cordova/plugin/webos/keyboard', 'navigator.keyboard');\n\n modulemapper.mapModules(window);\n\n if (window.PalmSystem) {\n window.PalmSystem.stageReady();\n }\n\n // create global Mojo object if it does not exi
st\n Mojo = window.Mojo || {};\n\n // wait for deviceready before listening and firing document events\n document.addEventListener(\"deviceready\", function () {\n\n // LunaSysMgr calls this when the windows is maximized or opened.\n window.Mojo.stageActivated = function() {\n console.log(\"stageActivated\");\n cordova.fireDocumentEvent(\"resume\");\n };\n // LunaSysMgr calls this when the windows is minimized or closed.\n window.Mojo.stageDeactivated = function() {\n console.log(\"stageDeactivated\");\n cordova.fireDocumentEvent(\"pause\");\n };\n // LunaSysMgr calls this when a KeepAlive app's window is hidden\n window.Mojo.hide = function() {\n console.log(\"hide\");\n };\n // LunaSysMgr calls this when a KeepAlive app's window is shown\n window.Mojo.show = function(
) {\n console.log(\"show\");\n };\n\n // LunaSysMgr calls this whenever an app is \"launched;\"\n window.Mojo.relaunch = function() {\n // need to return true to tell sysmgr the relaunch succeeded.\n // otherwise, it'll try to focus the app, which will focus the first\n // opened window of an app with multiple windows.\n\n var lp=JSON.parse(PalmSystem.launchParams) || {};\n\n if (lp['palm-command'] && lp['palm-command'] == 'open-app-menu') {\n console.log(\"event:ToggleAppMenu\");\n cordova.fireDocumentEvent(\"menubutton\");\n }\n\n console.log(\"relaunch\");\n return true;\n };\n\n // start to listen for network connection changes\n service.Request('palm://com.palm.connectionmanager', {\n method: 'getstatus',\n parame
ters: { subscribe: true },\n onSuccess: function (result) {\n console.log(\"subscribe:result:\"+JSON.stringify(result));\n\n if (!result.isInternetConnectionAvailable) {\n if (navigator.onLine) {\n console.log(\"Firing event:offline\");\n cordova.fireDocumentEvent(\"offline\");\n }\n } else {\n console.log(\"Firing event:online\");\n cordova.fireDocumentEvent(\"online\");\n }\n },\n onFailure: function(e) {\n console.error(\"subscribe:error\");\n }\n });\n\n });\n }\n};\n\n});\n\n//@ sourceURL=lib/webos/platform.js")} catch(e) {console.log("exception: in lib/webos/platform.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/plugin/Acceleration\", function(require, exports, module) {\n\nvar Acceleration = function(x, y, z, timestamp) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.timestamp = timestamp || (new Date()).getTime();\n};\n\nmodule.exports = Acceleration;\n\n});\n\n//@ sourceURL=lib/common/plugin/Acceleration.js")} catch(e) {console.log("exception: in lib/common/plugin/Acceleration.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/Camera\", function(require, exports, module) {\n\nvar argscheck = require('cordova/argscheck'),\n exec = require('cordova/exec'),\n Camera = require('cordova/plugin/CameraConstants'),\n CameraPopoverHandle = require('cordova/plugin/CameraPopoverHandle');\n\nvar cameraExport = {};\n\n// Tack on the Camera Constants to the base camera plugin.\nfor (var key in Camera) {\n cameraExport[key] = Camera[key];\n}\n\n/**\n * Gets a picture from source defined by \"options.sourceType\", and returns the\n * image as defined by the \"options.destinationType\" option.\n\n * The defaults are sourceType=CAMERA and destinationType=FILE_URI.\n *\n * @param {Function} successCallback\n * @param {Function} errorCallback\n * @param {Object} options\n */\ncameraExport.getPicture = function(successCallback, errorCallback, options) {\n argscheck.checkArgs('fFO', 'Camera.getPicture', arguments);\n options = options || {};\n var getValue = argscheck.get
Value;\n\n var quality = getValue(options.quality, 50);\n var destinationType = getValue(options.destinationType, Camera.DestinationType.FILE_URI);\n var sourceType = getValue(options.sourceType, Camera.PictureSourceType.CAMERA);\n var targetWidth = getValue(options.targetWidth, -1);\n var targetHeight = getValue(options.targetHeight, -1);\n var encodingType = getValue(options.encodingType, Camera.EncodingType.JPEG);\n var mediaType = getValue(options.mediaType, Camera.MediaType.PICTURE);\n var allowEdit = !!options.allowEdit;\n var correctOrientation = !!options.correctOrientation;\n var saveToPhotoAlbum = !!options.saveToPhotoAlbum;\n var popoverOptions = getValue(options.popoverOptions, null);\n\n var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType,\n mediaType, allowEdit, correctOrientation, saveToPhotoAlbum, popoverOptions];\n\n exec(successCallback, errorCallback, \"Camera\", \"takePict
ure\", args);\n return new CameraPopoverHandle();\n};\n\ncameraExport.cleanup = function(successCallback, errorCallback) {\n exec(successCallback, errorCallback, \"Camera\", \"cleanup\", []);\n};\n\nmodule.exports = cameraExport;\n\n});\n\n//@ sourceURL=lib/common/plugin/Camera.js")} catch(e) {console.log("exception: in lib/common/plugin/Camera.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/CameraConstants\", function(require, exports, module) {\n\nmodule.exports = {\n DestinationType:{\n DATA_URL: 0, // Return base64 encoded string\n FILE_URI: 1, // Return file uri (content://media/external/images/media/2 for Android)\n NATIVE_URI: 2 // Return native uri (eg. asset-library://... for iOS)\n },\n EncodingType:{\n JPEG: 0, // Return JPEG encoded image\n PNG: 1 // Return PNG encoded image\n },\n MediaType:{\n PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType\n VIDEO: 1, // allow selection of video only, ONLY RETURNS URL\n ALLMEDIA : 2 // allow selection from all media types\n },\n PictureSourceType:{\n PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)\n CAMERA : 1, // Take picture from camera\n SAVEDPHOTOAL
BUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android)\n },\n PopoverArrowDirection:{\n ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants to specify arrow location on popover\n ARROW_DOWN : 2,\n ARROW_LEFT : 4,\n ARROW_RIGHT : 8,\n ARROW_ANY : 15\n }\n};\n\n});\n\n//@ sourceURL=lib/common/plugin/CameraConstants.js")} catch(e) {console.log("exception: in lib/common/plugin/CameraConstants.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/plugin/Camera\", function(require, exports, module) {\n\nvar argscheck = require('cordova/argscheck'),\n exec = require('cordova/exec'),\n Camera = require('cordova/plugin/CameraConstants'),\n CameraPopoverHandle = require('cordova/plugin/CameraPopoverHandle');\n\nvar cameraExport = {};\n\n// Tack on the Camera Constants to the base camera plugin.\nfor (var key in Camera) {\n cameraExport[key] = Camera[key];\n}\n\n/**\n * Gets a picture from source defined by \"options.sourceType\", and returns the\n * image as defined by the \"options.destinationType\" option.\n\n * The defaults are sourceType=CAMERA and destinationType=FILE_URI.\n *\n * @param {Function} successCallback\n * @param {Function} errorCallback\n * @param {Object} options\n */\ncameraExport.getPicture = function(successCallback, errorCallback, options) {\n argscheck.checkArgs('fFO', 'Camera.getPicture', arguments);\n options = options || {};\n var getValue = argscheck.get
Value;\n\n var quality = getValue(options.quality, 50);\n var destinationType = getValue(options.destinationType, Camera.DestinationType.FILE_URI);\n var sourceType = getValue(options.sourceType, Camera.PictureSourceType.CAMERA);\n var targetWidth = getValue(options.targetWidth, -1);\n var targetHeight = getValue(options.targetHeight, -1);\n var encodingType = getValue(options.encodingType, Camera.EncodingType.JPEG);\n var mediaType = getValue(options.mediaType, Camera.MediaType.PICTURE);\n var allowEdit = !!options.allowEdit;\n var correctOrientation = !!options.correctOrientation;\n var saveToPhotoAlbum = !!options.saveToPhotoAlbum;\n var popoverOptions = getValue(options.popoverOptions, null);\n var cameraDirection = getValue(options.cameraDirection, Camera.Direction.BACK);\n\n var args = [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType,\n mediaType, allowEdit, correctOrientation, saveToPhotoAlbum
, popoverOptions, cameraDirection];\n\n exec(successCallback, errorCallback, \"Camera\", \"takePicture\", args);\n return new CameraPopoverHandle();\n};\n\ncameraExport.cleanup = function(successCallback, errorCallback) {\n exec(successCallback, errorCallback, \"Camera\", \"cleanup\", []);\n};\n\nmodule.exports = cameraExport;\n\n});\n\n//@ sourceURL=lib/common/plugin/Camera.js")} catch(e) {console.log("exception: in lib/common/plugin/Camera.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/plugin/CameraConstants\", function(require, exports, module) {\n\nmodule.exports = {\n DestinationType:{\n DATA_URL: 0, // Return base64 encoded string\n FILE_URI: 1, // Return file uri (content://media/external/images/media/2 for Android)\n NATIVE_URI: 2 // Return native uri (eg. asset-library://... for iOS)\n },\n EncodingType:{\n JPEG: 0, // Return JPEG encoded image\n PNG: 1 // Return PNG encoded image\n },\n MediaType:{\n PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType\n VIDEO: 1, // allow selection of video only, ONLY RETURNS URL\n ALLMEDIA : 2 // allow selection from all media types\n },\n PictureSourceType:{\n PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)\n CAMERA : 1, // Take picture from camera\n SAVEDPHOTOAL
BUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android)\n },\n PopoverArrowDirection:{\n ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants to specify arrow location on popover\n ARROW_DOWN : 2,\n ARROW_LEFT : 4,\n ARROW_RIGHT : 8,\n ARROW_ANY : 15\n },\n Direction:{\n BACK: 0,\n FRONT: 1\n }\n};\n\n});\n\n//@ sourceURL=lib/common/plugin/CameraConstants.js")} catch(e) {console.log("exception: in lib/common/plugin/CameraConstants.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/plugin/CameraPopoverHandle\", function(require, exports, module) {\n\nvar exec = require('cordova/exec');\n\n/**\n * A handle to an image picker popover.\n */\nvar CameraPopoverHandle = function() {\n this.setPosition = function(popoverOptions) {\n console.log('CameraPopoverHandle.setPosition is only supported on iOS.');\n };\n};\n\nmodule.exports = CameraPopoverHandle;\n\n});\n\n//@ sourceURL=lib/common/plugin/CameraPopoverHandle.js")} catch(e) {console.log("exception: in lib/common/plugin/CameraPopoverHandle.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/plugin/CameraPopoverOptions\", function(require, exports, module) {\n\nvar Camera = require('cordova/plugin/CameraConstants');\n\n/**\n * Encapsulates options for iOS Popover image picker\n */\nvar CameraPopoverOptions = function(x,y,width,height,arrowDir){\n // information of rectangle that popover should be anchored to\n this.x = x || 0;\n this.y = y || 32;\n this.width = width || 320;\n this.height = height || 480;\n // The direction of the popover arrow\n this.arrowDir = arrowDir || Camera.PopoverArrowDirection.ARROW_ANY;\n};\n\nmodule.exports = CameraPopoverOptions;\n\n});\n\n//@ sourceURL=lib/common/plugin/CameraPopoverOptions.js")} catch(e) {console.log("exception: in lib/common/plugin/CameraPopoverOptions.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/plugin/CaptureAudioOptions\", function(require, exports, module) {\n\n/**\n * Encapsulates all audio capture operation configuration options.\n */\nvar CaptureAudioOptions = function(){\n // Upper limit of sound clips user can record. Value must be equal or greater than 1.\n this.limit = 1;\n // Maximum duration of a single sound clip in seconds.\n this.duration = 0;\n // The selected audio mode. Must match with one of the elements in supportedAudioModes array.\n this.mode = null;\n};\n\nmodule.exports = CaptureAudioOptions;\n\n});\n\n//@ sourceURL=lib/common/plugin/CaptureAudioOptions.js")} catch(e) {console.log("exception: in lib/common/plugin/CaptureAudioOptions.js: " + e);console.log(e.stack);}
@@ -61,16 +61,16 @@ try {eval("define(\"cordova/plugin/Entry\", function(require, exports, module) {
try {eval("define(\"cordova/plugin/File\", function(require, exports, module) {\n\n/**\n * Constructor.\n * name {DOMString} name of the file, without path information\n * fullPath {DOMString} the full path of the file, including the name\n * type {DOMString} mime type\n * lastModifiedDate {Date} last modified date\n * size {Number} size of the file in bytes\n */\n\nvar File = function(name, fullPath, type, lastModifiedDate, size){\n this.name = name || '';\n this.fullPath = fullPath || null;\n this.type = type || null;\n this.lastModifiedDate = lastModifiedDate || null;\n this.size = size || 0;\n\n // These store the absolute start and end for slicing the file.\n this.start = 0;\n this.end = this.size;\n};\n\n/**\n * Returns a \"slice\" of the file. Since Cordova Files don't contain the actual\n * content, this really returns a File with adjusted start and end.\n * Slices of slices are supported.\n * start {Number} The index at which to start the slice (incl
usive).\n * end {Number} The index at which to end the slice (exclusive).\n */\nFile.prototype.slice = function(start, end) {\n var size = this.end - this.start;\n var newStart = 0;\n var newEnd = size;\n if (arguments.length) {\n if (start < 0) {\n newStart = Math.max(size + start, 0);\n } else {\n newStart = Math.min(size, start);\n }\n }\n\n if (arguments.length >= 2) {\n if (end < 0) {\n newEnd = Math.max(size + end, 0);\n } else {\n newEnd = Math.min(end, size);\n }\n }\n\n var newFile = new File(this.name, this.fullPath, this.type, this.lastModifiedData, this.size);\n newFile.start = this.start + newStart;\n newFile.end = this.start + newEnd;\n return newFile;\n};\n\n\nmodule.exports = File;\n\n});\n\n//@ sourceURL=lib/common/plugin/File.js")} catch(e) {console.log("exception: in lib/common/plugin/File.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/plugin/FileEntry\", function(require, exports, module) {\n\nvar utils = require('cordova/utils'),\n exec = require('cordova/exec'),\n Entry = require('cordova/plugin/Entry'),\n FileWriter = require('cordova/plugin/FileWriter'),\n File = require('cordova/plugin/File'),\n FileError = require('cordova/plugin/FileError');\n\n/**\n * An interface representing a file on the file system.\n *\n * {boolean} isFile always true (readonly)\n * {boolean} isDirectory always false (readonly)\n * {DOMString} name of the file, excluding the path leading to it (readonly)\n * {DOMString} fullPath the absolute full path to the file (readonly)\n * {FileSystem} filesystem on which the file resides (readonly)\n */\nvar FileEntry = function(name, fullPath) {\n FileEntry.__super__.constructor.apply(this, [true, false, name, fullPath]);\n};\n\nutils.extend(FileEntry, Entry);\n\n/**\n * Creates a new FileWriter associated with the file that this FileEntry represe
nts.\n *\n * @param {Function} successCallback is called with the new FileWriter\n * @param {Function} errorCallback is called with a FileError\n */\nFileEntry.prototype.createWriter = function(successCallback, errorCallback) {\n this.file(function(filePointer) {\n var writer = new FileWriter(filePointer);\n\n if (writer.fileName === null || writer.fileName === \"\") {\n errorCallback && errorCallback(new FileError(FileError.INVALID_STATE_ERR));\n } else {\n successCallback && successCallback(writer);\n }\n }, errorCallback);\n};\n\n/**\n * Returns a File that represents the current state of the file that this FileEntry represents.\n *\n * @param {Function} successCallback is called with the new File object\n * @param {Function} errorCallback is called with a FileError\n */\nFileEntry.prototype.file = function(successCallback, errorCallback) {\n var win = successCallback && function(f) {\n var file = new File(f.name,
f.fullPath, f.type, f.lastModifiedDate, f.size);\n successCallback(file);\n };\n var fail = errorCallback && function(code) {\n errorCallback(new FileError(code));\n };\n exec(win, fail, \"File\", \"getFileMetadata\", [this.fullPath]);\n};\n\n\nmodule.exports = FileEntry;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileEntry.js")} catch(e) {console.log("exception: in lib/common/plugin/FileEntry.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/plugin/FileError\", function(require, exports, module) {\n\n/**\n * FileError\n */\nfunction FileError(error) {\n this.code = error || null;\n}\n\n// File error codes\n// Found in DOMException\nFileError.NOT_FOUND_ERR = 1;\nFileError.SECURITY_ERR = 2;\nFileError.ABORT_ERR = 3;\n\n// Added by File API specification\nFileError.NOT_READABLE_ERR = 4;\nFileError.ENCODING_ERR = 5;\nFileError.NO_MODIFICATION_ALLOWED_ERR = 6;\nFileError.INVALID_STATE_ERR = 7;\nFileError.SYNTAX_ERR = 8;\nFileError.INVALID_MODIFICATION_ERR = 9;\nFileError.QUOTA_EXCEEDED_ERR = 10;\nFileError.TYPE_MISMATCH_ERR = 11;\nFileError.PATH_EXISTS_ERR = 12;\n\nmodule.exports = FileError;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileError.js")} catch(e) {console.log("exception: in lib/common/plugin/FileError.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/FileReader\", function(require, exports, module) {\n\nvar exec = require('cordova/exec'),\n modulemapper = require('cordova/modulemapper'),\n utils = require('cordova/utils'),\n File = require('cordova/plugin/File'),\n FileError = require('cordova/plugin/FileError'),\n ProgressEvent = require('cordova/plugin/ProgressEvent'),\n origFileReader = modulemapper.getOriginalSymbol(this, 'FileReader');\n\n/**\n * This class reads the mobile device file system.\n *\n * For Android:\n * The root directory is the root of the file system.\n * To read from the SD card, the file name is \"sdcard/my_file.txt\"\n * @constructor\n */\nvar FileReader = function() {\n this._readyState = 0;\n this._error = null;\n this._result = null;\n this._fileName = '';\n this._realReader = origFileReader ? new origFileReader() : {};\n};\n\n// States\nFileReader.EMPTY = 0;\nFileReader.LOADING = 1;\nFileReader.DONE = 2;\n\nutils.defineGett
er(FileReader.prototype, 'readyState', function() {\n return this._fileName ? this._readyState : this._realReader.readyState;\n});\n\nutils.defineGetter(FileReader.prototype, 'error', function() {\n return this._fileName ? this._error: this._realReader.error;\n});\n\nutils.defineGetter(FileReader.prototype, 'result', function() {\n return this._fileName ? this._result: this._realReader.result;\n});\n\nfunction defineEvent(eventName) {\n utils.defineGetterSetter(FileReader.prototype, eventName, function() {\n return this._realReader[eventName] || null;\n }, function(value) {\n this._realReader[eventName] = value;\n });\n}\ndefineEvent('onloadstart'); // When the read starts.\ndefineEvent('onprogress'); // While reading (and decoding) file or fileBlob data, and reporting partial file data (progress.loaded/progress.total)\ndefineEvent('onload'); // When the read has successfully completed.\ndefineEvent('onerror'); // When the read h
as failed (see errors).\ndefineEvent('onloadend'); // When the request has completed (either in success or failure).\ndefineEvent('onabort'); // When the read has been aborted. For instance, by invoking the abort() method.\n\nfunction initRead(reader, file) {\n // Already loading something\n if (reader.readyState == FileReader.LOADING) {\n throw new FileError(FileError.INVALID_STATE_ERR);\n }\n\n reader._result = null;\n reader._error = null;\n reader._readyState = FileReader.LOADING;\n\n if (typeof file == 'string') {\n // Deprecated in Cordova 2.4.\n console.warning('Using a string argument with FileReader.readAs functions is deprecated.');\n reader._fileName = file;\n } else if (typeof file.fullPath == 'string') {\n reader._fileName = file.fullPath;\n } else {\n reader._fileName = '';\n return true;\n }\n\n reader.onloadstart && reader.onloadstart(new ProgressEvent(\"loadstart\", {target:r
eader}));\n}\n\n/**\n * Abort reading file.\n */\nFileReader.prototype.abort = function() {\n if (origFileReader && !this._fileName) {\n return this._realReader.abort();\n }\n this._result = null;\n\n if (this._readyState == FileReader.DONE || this._readyState == FileReader.EMPTY) {\n return;\n }\n\n this._readyState = FileReader.DONE;\n\n // If abort callback\n if (typeof this.onabort === 'function') {\n this.onabort(new ProgressEvent('abort', {target:this}));\n }\n // If load end callback\n if (typeof this.onloadend === 'function') {\n this.onloadend(new ProgressEvent('loadend', {target:this}));\n }\n};\n\n/**\n * Read text file.\n *\n * @param file {File} File object containing file properties\n * @param encoding [Optional] (see http://www.iana.org/assignments/character-sets)\n */\nFileReader.prototype.readAsText = function(file, encoding) {\n if (initRead(this, file)) {\n return this._realReade
r.readAsText(file, encoding);\n }\n\n // Default encoding is UTF-8\n var enc = encoding ? encoding : \"UTF-8\";\n var me = this;\n var execArgs = [this._fileName, enc];\n\n // Maybe add slice parameters.\n if (file.end < file.size) {\n execArgs.push(file.start, file.end);\n } else if (file.start > 0) {\n execArgs.push(file.start);\n }\n\n // Read file\n exec(\n // Success callback\n function(r) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // Save result\n me._result = r;\n\n // If onload callback\n if (typeof me.onload === \"function\") {\n me.onload(new ProgressEvent(\"load\", {target:me}));\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n // If onloadend callback\n if (typeof me.onl
oadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n },\n // Error callback\n function(e) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n // null result\n me._result = null;\n\n // Save error\n me._error = new FileError(e);\n\n // If onerror callback\n if (typeof me.onerror === \"function\") {\n me.onerror(new ProgressEvent(\"error\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n }, \"File\", \"readAsText\", execArgs);\n};\n\n\n/**\n * Read file and retu
rn data as a base64 encoded data url.\n * A data url is of the form:\n * data:[<mediatype>][;base64],<data>\n *\n * @param file {File} File object containing file properties\n */\nFileReader.prototype.readAsDataURL = function(file) {\n if (initRead(this, file)) {\n return this._realReader.readAsDataURL(file);\n }\n\n var me = this;\n var execArgs = [this._fileName];\n\n // Maybe add slice parameters.\n if (file.end < file.size) {\n execArgs.push(file.start, file.end);\n } else if (file.start > 0) {\n execArgs.push(file.start);\n }\n\n // Read file\n exec(\n // Success callback\n function(r) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n // Save result\n me._result = r;\n\n // If onload
callback\n if (typeof me.onload === \"function\") {\n me.onload(new ProgressEvent(\"load\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n },\n // Error callback\n function(e) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n me._result = null;\n\n // Save error\n me._error = new FileError(e);\n\n // If onerror callback\n if (typeof me.onerror === \"function\") {\n me.onerror(new ProgressEvent(\"error\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \
"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n }, \"File\", \"readAsDataURL\", execArgs);\n};\n\n/**\n * Read file and return data as a binary data.\n *\n * @param file {File} File object containing file properties\n */\nFileReader.prototype.readAsBinaryString = function(file) {\n if (initRead(this, file)) {\n return this._realReader.readAsBinaryString(file);\n }\n // TODO - Can't return binary data to browser.\n console.log('method \"readAsBinaryString\" is not supported at this time.');\n this.abort();\n};\n\n/**\n * Read file and return data as a binary data.\n *\n * @param file {File} File object containing file properties\n */\nFileReader.prototype.readAsArrayBuffer = function(file) {\n if (initRead(this, file)) {\n return this._realReader.readAsArrayBuffer(file);\n }\n // TODO - Can't return binary data to browser.\n console.log('This method is not sup
ported at this time.');\n this.abort();\n};\n\nmodule.exports = FileReader;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileReader.js")} catch(e) {console.log("exception: in lib/common/plugin/FileReader.js: " + e);console.log(e.stack);}
+try {eval("define(\"cordova/plugin/FileReader\", function(require, exports, module) {\n\nvar exec = require('cordova/exec'),\n modulemapper = require('cordova/modulemapper'),\n utils = require('cordova/utils'),\n File = require('cordova/plugin/File'),\n FileError = require('cordova/plugin/FileError'),\n ProgressEvent = require('cordova/plugin/ProgressEvent'),\n origFileReader = modulemapper.getOriginalSymbol(this, 'FileReader');\n\n/**\n * This class reads the mobile device file system.\n *\n * For Android:\n * The root directory is the root of the file system.\n * To read from the SD card, the file name is \"sdcard/my_file.txt\"\n * @constructor\n */\nvar FileReader = function() {\n this._readyState = 0;\n this._error = null;\n this._result = null;\n this._fileName = '';\n this._realReader = origFileReader ? new origFileReader() : {};\n};\n\n// States\nFileReader.EMPTY = 0;\nFileReader.LOADING = 1;\nFileReader.DONE = 2;\n\nutils.defineGett
er(FileReader.prototype, 'readyState', function() {\n return this._fileName ? this._readyState : this._realReader.readyState;\n});\n\nutils.defineGetter(FileReader.prototype, 'error', function() {\n return this._fileName ? this._error: this._realReader.error;\n});\n\nutils.defineGetter(FileReader.prototype, 'result', function() {\n return this._fileName ? this._result: this._realReader.result;\n});\n\nfunction defineEvent(eventName) {\n utils.defineGetterSetter(FileReader.prototype, eventName, function() {\n return this._realReader[eventName] || null;\n }, function(value) {\n this._realReader[eventName] = value;\n });\n}\ndefineEvent('onloadstart'); // When the read starts.\ndefineEvent('onprogress'); // While reading (and decoding) file or fileBlob data, and reporting partial file data (progress.loaded/progress.total)\ndefineEvent('onload'); // When the read has successfully completed.\ndefineEvent('onerror'); // When the read h
as failed (see errors).\ndefineEvent('onloadend'); // When the request has completed (either in success or failure).\ndefineEvent('onabort'); // When the read has been aborted. For instance, by invoking the abort() method.\n\nfunction initRead(reader, file) {\n // Already loading something\n if (reader.readyState == FileReader.LOADING) {\n throw new FileError(FileError.INVALID_STATE_ERR);\n }\n\n reader._result = null;\n reader._error = null;\n reader._readyState = FileReader.LOADING;\n\n if (typeof file == 'string') {\n // Deprecated in Cordova 2.4.\n console.warning('Using a string argument with FileReader.readAs functions is deprecated.');\n reader._fileName = file;\n } else if (typeof file.fullPath == 'string') {\n reader._fileName = file.fullPath;\n } else {\n reader._fileName = '';\n return true;\n }\n\n reader.onloadstart && reader.onloadstart(new ProgressEvent(\"loadstart\", {target:r
eader}));\n}\n\n/**\n * Abort reading file.\n */\nFileReader.prototype.abort = function() {\n if (origFileReader && !this._fileName) {\n return this._realReader.abort();\n }\n this._result = null;\n\n if (this._readyState == FileReader.DONE || this._readyState == FileReader.EMPTY) {\n return;\n }\n\n this._readyState = FileReader.DONE;\n\n // If abort callback\n if (typeof this.onabort === 'function') {\n this.onabort(new ProgressEvent('abort', {target:this}));\n }\n // If load end callback\n if (typeof this.onloadend === 'function') {\n this.onloadend(new ProgressEvent('loadend', {target:this}));\n }\n};\n\n/**\n * Read text file.\n *\n * @param file {File} File object containing file properties\n * @param encoding [Optional] (see http://www.iana.org/assignments/character-sets)\n */\nFileReader.prototype.readAsText = function(file, encoding) {\n if (initRead(this, file)) {\n return this._realReade
r.readAsText(file, encoding);\n }\n\n // Default encoding is UTF-8\n var enc = encoding ? encoding : \"UTF-8\";\n var me = this;\n var execArgs = [this._fileName, enc, file.start, file.end];\n\n // Read file\n exec(\n // Success callback\n function(r) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // Save result\n me._result = r;\n\n // If onload callback\n if (typeof me.onload === \"function\") {\n me.onload(new ProgressEvent(\"load\", {target:me}));\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n },\n // Error callback\n functi
on(e) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n // null result\n me._result = null;\n\n // Save error\n me._error = new FileError(e);\n\n // If onerror callback\n if (typeof me.onerror === \"function\") {\n me.onerror(new ProgressEvent(\"error\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n }, \"File\", \"readAsText\", execArgs);\n};\n\n\n/**\n * Read file and return data as a base64 encoded data url.\n * A data url is of the form:\n * data:[<mediatype>][;base64],<data>\n *\n * @param file {File} File object containing
file properties\n */\nFileReader.prototype.readAsDataURL = function(file) {\n if (initRead(this, file)) {\n return this._realReader.readAsDataURL(file);\n }\n\n var me = this;\n var execArgs = [this._fileName, file.start, file.end];\n\n // Read file\n exec(\n // Success callback\n function(r) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n // Save result\n me._result = r;\n\n // If onload callback\n if (typeof me.onload === \"function\") {\n me.onload(new ProgressEvent(\"load\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n
},\n // Error callback\n function(e) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n me._result = null;\n\n // Save error\n me._error = new FileError(e);\n\n // If onerror callback\n if (typeof me.onerror === \"function\") {\n me.onerror(new ProgressEvent(\"error\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n }, \"File\", \"readAsDataURL\", execArgs);\n};\n\n/**\n * Read file and return data as a binary data.\n *\n * @param file {File} File object containing file properties\n */\nFileReader.prototype.readAsBinaryString = func
tion(file) {\n if (initRead(this, file)) {\n return this._realReader.readAsBinaryString(file);\n }\n\n var me = this;\n var execArgs = [this._fileName, file.start, file.end];\n\n // Read file\n exec(\n // Success callback\n function(r) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n me._result = r;\n\n // If onload callback\n if (typeof me.onload === \"function\") {\n me.onload(new ProgressEvent(\"load\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n },\n // Error callback\n function(e) {\n // If DONE (cancell
ed), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n me._result = null;\n\n // Save error\n me._error = new FileError(e);\n\n // If onerror callback\n if (typeof me.onerror === \"function\") {\n me.onerror(new ProgressEvent(\"error\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n }, \"File\", \"readAsBinaryString\", execArgs);\n};\n\n/**\n * Read file and return data as a binary data.\n *\n * @param file {File} File object containing file properties\n */\nFileReader.prototype.readAsArrayBuffer = function(file) {\n if (initRead(this, file)) {\n return this._realReader.rea
dAsArrayBuffer(file);\n }\n\n var me = this;\n var execArgs = [this._fileName, file.start, file.end];\n\n // Read file\n exec(\n // Success callback\n function(r) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n me._result = r;\n\n // If onload callback\n if (typeof me.onload === \"function\") {\n me.onload(new ProgressEvent(\"load\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n },\n // Error callback\n function(e) {\n // If DONE (cancelled), then don't do anything\n if (me._readyState === FileReader.DONE) {\
n return;\n }\n\n // DONE state\n me._readyState = FileReader.DONE;\n\n me._result = null;\n\n // Save error\n me._error = new FileError(e);\n\n // If onerror callback\n if (typeof me.onerror === \"function\") {\n me.onerror(new ProgressEvent(\"error\", {target:me}));\n }\n\n // If onloadend callback\n if (typeof me.onloadend === \"function\") {\n me.onloadend(new ProgressEvent(\"loadend\", {target:me}));\n }\n }, \"File\", \"readAsArrayBuffer\", execArgs);\n};\n\nmodule.exports = FileReader;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileReader.js")} catch(e) {console.log("exception: in lib/common/plugin/FileReader.js: " + e);console.log(e.stack);}
try {eval("define(\"cordova/plugin/FileSystem\", function(require, exports, module) {\n\nvar DirectoryEntry = require('cordova/plugin/DirectoryEntry');\n\n/**\n * An interface representing a file system\n *\n * @constructor\n * {DOMString} name the unique name of the file system (readonly)\n * {DirectoryEntry} root directory of the file system (readonly)\n */\nvar FileSystem = function(name, root) {\n this.name = name || null;\n if (root) {\n this.root = new DirectoryEntry(root.name, root.fullPath);\n }\n};\n\nmodule.exports = FileSystem;\n\n});\n\n//@ sourceURL=lib/common/plugin/FileSystem.js")} catch(e) {console.log("exception: in lib/common/plugin/FileSystem.js: " + e);console.log(e.stack);}
-try {eval("define(\"cordova/plugin/FileTransfer\", function(require, exports, module) {\n\nvar argscheck = require('cordova/argscheck'),\n exec = require('cordova/exec'),\n FileTransferError = require('cordova/plugin/FileTransferError'),\n ProgressEvent = require('cordova/plugin/ProgressEvent');\n\nfunction newProgressEvent(result) {\n var pe = new ProgressEvent();\n pe.lengthComputable = result.lengthComputable;\n pe.loaded = result.loaded;\n pe.total = result.total;\n return pe;\n}\n\nvar idCounter = 0;\n\n/**\n * FileTransfer uploads a file to a remote server.\n * @constructor\n */\nvar FileTransfer = function() {\n this._id = ++idCounter;\n this.onprogress = null; // optional callback\n};\n\n/**\n* Given an absolute file path, uploads a file on the device to a remote server\n* using a multipart HTTP request.\n* @param filePath {String} Full path of the file on the device\n* @param server {String} URL of the server to receive th
e file\n* @param successCallback (Function} Callback to be invoked when upload has completed\n* @param errorCallback {Function} Callback to be invoked upon error\n* @param options {FileUploadOptions} Optional parameters such as file name and mimetype\n* @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false\n*/\nFileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, trustAllHosts) {\n argscheck.checkArgs('ssFFO*', 'FileTransfer.upload', arguments);\n // check for options\n var fileKey = null;\n var fileName = null;\n var mimeType = null;\n var params = null;\n var chunkedMode = true;\n var headers = null;\n if (options) {\n fileKey = options.fileKey;\n fileName = options.fileName;\n mimeType = options.mimeType;\n headers = options.headers;\n if (options.chunkedMode !== null || typeof options.chunkedMode != \"undefined\") {\n
chunkedMode = options.chunkedMode;\n }\n if (options.params) {\n params = options.params;\n }\n else {\n params = {};\n }\n }\n\n var fail = errorCallback && function(e) {\n var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body);\n errorCallback(error);\n };\n\n var self = this;\n var win = function(result) {\n if (typeof result.lengthComputable != \"undefined\") {\n if (self.onprogress) {\n self.onprogress(newProgressEvent(result));\n }\n } else {\n successCallback && successCallback(result);\n }\n };\n exec(win, fail, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, trustAllHosts, chunkedMode, headers, this._id]);\n};\n\n/**\n * Downloads a file form a given URL and saves it to the specified directory.\n * @param source {String} URL of the s
erver to receive the file\n * @param target {String} Full path of the file on the device\n * @param successCallback (Function} Callback to be invoked when upload has completed\n * @param errorCallback {Function} Callback to be invoked upon error\n * @param trustAllHosts {Boolean} Optional trust all hosts (e.g. for self-signed certs), defaults to false\n */\nFileTransfer.prototype.download = function(source, target, successCallback, errorCallback, trustAllHosts) {\n argscheck.checkArgs('ssFF*', 'FileTransfer.download', arguments);\n var self = this;\n var win = function(result) {\n if (typeof result.lengthComputable != \"undefined\") {\n if (self.onprogress) {\n return self.onprogress(newProgressEvent(result));\n }\n } else if (successCallback) {\n var entry = null;\n if (result.isDirectory) {\n entry = new (require('cordova/plugin/DirectoryEntry'))();\n }\n
else if (result.isFile) {\n entry = new (require('cordova/plugin/FileEntry'))();\n }\n entry.isDirectory = result.isDirectory;\n entry.isFile = result.isFile;\n entry.name = result.name;\n entry.fullPath = result.fullPath;\n successCallback(entry);\n }\n };\n\n var fail = errorCallback && function(e) {\n var error = new FileTransferError(e.code, e.source, e.target, e.http_status, e.body);\n errorCallback(error);\n };\n\n exec(win, fail, 'FileTransfer', 'download', [source, target, trustAllHosts, this._id]);\n};\n\n/**\n * Aborts the ongoing file transfer on this object\n * @param successCallback {Function} Callback to be invoked upon success\n * @param errorCallback {Function} Callback to be invoked upon error\n */\nFileTransfer.prototype.abort = function(successCallback, errorCallback) {\n exec(successCallback, errorCallback, 'FileTransfer', 'abort', [this._i
d]);\n};\n\nmodule.exports = FileTransfer;\n\n});\n\n//@ sour
<TRUNCATED>