@capawesome/capacitor-in-app-browser 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapawesomeCapacitorInAppBrowser.podspec +17 -0
- package/LICENSE +21 -0
- package/Package.swift +28 -0
- package/README.md +690 -0
- package/android/build.gradle +60 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/InAppBrowser.java +242 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/InAppBrowserPlugin.java +289 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/CustomException.java +20 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/CustomExceptions.java +20 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/WebViewDialog.java +343 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/events/BrowserPageNavigationCompletedEvent.java +23 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/events/MessageReceivedEvent.java +23 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/ExecuteScriptOptions.java +29 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/GetCookiesOptions.java +29 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInExternalBrowserOptions.java +30 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInSystemBrowserOptions.java +74 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/OpenInWebViewOptions.java +112 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/PostMessageOptions.java +30 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/options/WebViewToolbarOptions.java +87 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/results/ExecuteScriptResult.java +25 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/classes/results/GetCookiesResult.java +28 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/Callback.java +5 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/EmptyCallback.java +5 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/NonEmptyResultCallback.java +7 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/inappbrowser/interfaces/Result.java +7 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/dist/docs.json +1173 -0
- package/dist/esm/definitions.d.ts +540 -0
- package/dist/esm/definitions.js +19 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +14 -0
- package/dist/esm/web.js +35 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +68 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +71 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Plugin/Classes/Events/BrowserPageNavigationCompletedEvent.swift +16 -0
- package/ios/Plugin/Classes/Events/MessageReceivedEvent.swift +24 -0
- package/ios/Plugin/Classes/Options/ExecuteScriptOptions.swift +17 -0
- package/ios/Plugin/Classes/Options/GetCookiesOptions.swift +20 -0
- package/ios/Plugin/Classes/Options/OpenInExternalBrowserOptions.swift +20 -0
- package/ios/Plugin/Classes/Options/OpenInSystemBrowserOptions.swift +52 -0
- package/ios/Plugin/Classes/Options/OpenInWebViewOptions.swift +48 -0
- package/ios/Plugin/Classes/Options/PostMessageOptions.swift +17 -0
- package/ios/Plugin/Classes/Options/WebViewToolbarOptions.swift +37 -0
- package/ios/Plugin/Classes/Results/ExecuteScriptResult.swift +25 -0
- package/ios/Plugin/Classes/Results/GetCookiesResult.swift +20 -0
- package/ios/Plugin/Classes/WebViewController.swift +224 -0
- package/ios/Plugin/Enums/CustomError.swift +49 -0
- package/ios/Plugin/InAppBrowser.swift +194 -0
- package/ios/Plugin/InAppBrowserHelper.swift +49 -0
- package/ios/Plugin/InAppBrowserPlugin.swift +191 -0
- package/ios/Plugin/Info.plist +24 -0
- package/ios/Plugin/Protocols/Result.swift +5 -0
- package/package.json +91 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@capacitor/core');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @since 0.1.0
|
|
7
|
+
*/
|
|
8
|
+
exports.ErrorCode = void 0;
|
|
9
|
+
(function (ErrorCode) {
|
|
10
|
+
/**
|
|
11
|
+
* No app was found on the device that can open the URL.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
*/
|
|
15
|
+
ErrorCode["BrowserNotFound"] = "BROWSER_NOT_FOUND";
|
|
16
|
+
/**
|
|
17
|
+
* No browser is currently open.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
*/
|
|
21
|
+
ErrorCode["NoBrowserOpen"] = "NO_BROWSER_OPEN";
|
|
22
|
+
})(exports.ErrorCode || (exports.ErrorCode = {}));
|
|
23
|
+
|
|
24
|
+
const InAppBrowser = core.registerPlugin('InAppBrowser', {
|
|
25
|
+
web: () => Promise.resolve().then(function () { return web; }).then(m => new m.InAppBrowserWeb()),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
class InAppBrowserWeb extends core.WebPlugin {
|
|
29
|
+
async clearCache() {
|
|
30
|
+
throw this.unimplemented('Not implemented on web.');
|
|
31
|
+
}
|
|
32
|
+
async clearSessionData() {
|
|
33
|
+
throw this.unimplemented('Not implemented on web.');
|
|
34
|
+
}
|
|
35
|
+
async close() {
|
|
36
|
+
throw this.unimplemented('Not implemented on web.');
|
|
37
|
+
}
|
|
38
|
+
async executeScript() {
|
|
39
|
+
throw this.unimplemented('Not implemented on web.');
|
|
40
|
+
}
|
|
41
|
+
async getCookies() {
|
|
42
|
+
throw this.unimplemented('Not implemented on web.');
|
|
43
|
+
}
|
|
44
|
+
async openInExternalBrowser(options) {
|
|
45
|
+
if (!options.url) {
|
|
46
|
+
throw new Error(InAppBrowserWeb.errorUrlMissing);
|
|
47
|
+
}
|
|
48
|
+
window.open(options.url, '_blank');
|
|
49
|
+
}
|
|
50
|
+
async openInSystemBrowser() {
|
|
51
|
+
throw this.unimplemented('Not implemented on web.');
|
|
52
|
+
}
|
|
53
|
+
async openInWebView() {
|
|
54
|
+
throw this.unimplemented('Not implemented on web.');
|
|
55
|
+
}
|
|
56
|
+
async postMessage() {
|
|
57
|
+
throw this.unimplemented('Not implemented on web.');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
InAppBrowserWeb.errorUrlMissing = 'url must be provided.';
|
|
61
|
+
|
|
62
|
+
var web = /*#__PURE__*/Object.freeze({
|
|
63
|
+
__proto__: null,
|
|
64
|
+
InAppBrowserWeb: InAppBrowserWeb
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
exports.InAppBrowser = InAppBrowser;
|
|
68
|
+
//# sourceMappingURL=plugin.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["/**\n * @since 0.1.0\n */\nexport var ErrorCode;\n(function (ErrorCode) {\n /**\n * No app was found on the device that can open the URL.\n *\n * @since 0.1.0\n */\n ErrorCode[\"BrowserNotFound\"] = \"BROWSER_NOT_FOUND\";\n /**\n * No browser is currently open.\n *\n * @since 0.1.0\n */\n ErrorCode[\"NoBrowserOpen\"] = \"NO_BROWSER_OPEN\";\n})(ErrorCode || (ErrorCode = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst InAppBrowser = registerPlugin('InAppBrowser', {\n web: () => import('./web').then(m => new m.InAppBrowserWeb()),\n});\nexport * from './definitions';\nexport { InAppBrowser };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class InAppBrowserWeb extends WebPlugin {\n async clearCache() {\n throw this.unimplemented('Not implemented on web.');\n }\n async clearSessionData() {\n throw this.unimplemented('Not implemented on web.');\n }\n async close() {\n throw this.unimplemented('Not implemented on web.');\n }\n async executeScript() {\n throw this.unimplemented('Not implemented on web.');\n }\n async getCookies() {\n throw this.unimplemented('Not implemented on web.');\n }\n async openInExternalBrowser(options) {\n if (!options.url) {\n throw new Error(InAppBrowserWeb.errorUrlMissing);\n }\n window.open(options.url, '_blank');\n }\n async openInSystemBrowser() {\n throw this.unimplemented('Not implemented on web.');\n }\n async openInWebView() {\n throw this.unimplemented('Not implemented on web.');\n }\n async postMessage() {\n throw this.unimplemented('Not implemented on web.');\n }\n}\nInAppBrowserWeb.errorUrlMissing = 'url must be provided.';\n//# sourceMappingURL=web.js.map"],"names":["ErrorCode","registerPlugin","WebPlugin"],"mappings":";;;;AAAA;AACA;AACA;AACWA;AACX,CAAC,UAAU,SAAS,EAAE;AACtB;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAG,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,iBAAiB;AAClD,CAAC,EAAEA,iBAAS,KAAKA,iBAAS,GAAG,EAAE,CAAC,CAAC;;AChB5B,MAAC,YAAY,GAAGC,mBAAc,CAAC,cAAc,EAAE;AACpD,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;AACjE,CAAC;;ACFM,MAAM,eAAe,SAASC,cAAS,CAAC;AAC/C,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,qBAAqB,CAAC,OAAO,EAAE;AACzC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC;AAC5D,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC1C,IAAI;AACJ,IAAI,MAAM,mBAAmB,GAAG;AAChC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC3D,IAAI;AACJ;AACA,eAAe,CAAC,eAAe,GAAG,uBAAuB;;;;;;;;;"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var capacitorInAppBrowser = (function (exports, core) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @since 0.1.0
|
|
6
|
+
*/
|
|
7
|
+
exports.ErrorCode = void 0;
|
|
8
|
+
(function (ErrorCode) {
|
|
9
|
+
/**
|
|
10
|
+
* No app was found on the device that can open the URL.
|
|
11
|
+
*
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
ErrorCode["BrowserNotFound"] = "BROWSER_NOT_FOUND";
|
|
15
|
+
/**
|
|
16
|
+
* No browser is currently open.
|
|
17
|
+
*
|
|
18
|
+
* @since 0.1.0
|
|
19
|
+
*/
|
|
20
|
+
ErrorCode["NoBrowserOpen"] = "NO_BROWSER_OPEN";
|
|
21
|
+
})(exports.ErrorCode || (exports.ErrorCode = {}));
|
|
22
|
+
|
|
23
|
+
const InAppBrowser = core.registerPlugin('InAppBrowser', {
|
|
24
|
+
web: () => Promise.resolve().then(function () { return web; }).then(m => new m.InAppBrowserWeb()),
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
class InAppBrowserWeb extends core.WebPlugin {
|
|
28
|
+
async clearCache() {
|
|
29
|
+
throw this.unimplemented('Not implemented on web.');
|
|
30
|
+
}
|
|
31
|
+
async clearSessionData() {
|
|
32
|
+
throw this.unimplemented('Not implemented on web.');
|
|
33
|
+
}
|
|
34
|
+
async close() {
|
|
35
|
+
throw this.unimplemented('Not implemented on web.');
|
|
36
|
+
}
|
|
37
|
+
async executeScript() {
|
|
38
|
+
throw this.unimplemented('Not implemented on web.');
|
|
39
|
+
}
|
|
40
|
+
async getCookies() {
|
|
41
|
+
throw this.unimplemented('Not implemented on web.');
|
|
42
|
+
}
|
|
43
|
+
async openInExternalBrowser(options) {
|
|
44
|
+
if (!options.url) {
|
|
45
|
+
throw new Error(InAppBrowserWeb.errorUrlMissing);
|
|
46
|
+
}
|
|
47
|
+
window.open(options.url, '_blank');
|
|
48
|
+
}
|
|
49
|
+
async openInSystemBrowser() {
|
|
50
|
+
throw this.unimplemented('Not implemented on web.');
|
|
51
|
+
}
|
|
52
|
+
async openInWebView() {
|
|
53
|
+
throw this.unimplemented('Not implemented on web.');
|
|
54
|
+
}
|
|
55
|
+
async postMessage() {
|
|
56
|
+
throw this.unimplemented('Not implemented on web.');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
InAppBrowserWeb.errorUrlMissing = 'url must be provided.';
|
|
60
|
+
|
|
61
|
+
var web = /*#__PURE__*/Object.freeze({
|
|
62
|
+
__proto__: null,
|
|
63
|
+
InAppBrowserWeb: InAppBrowserWeb
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
exports.InAppBrowser = InAppBrowser;
|
|
67
|
+
|
|
68
|
+
return exports;
|
|
69
|
+
|
|
70
|
+
})({}, capacitorExports);
|
|
71
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["/**\n * @since 0.1.0\n */\nexport var ErrorCode;\n(function (ErrorCode) {\n /**\n * No app was found on the device that can open the URL.\n *\n * @since 0.1.0\n */\n ErrorCode[\"BrowserNotFound\"] = \"BROWSER_NOT_FOUND\";\n /**\n * No browser is currently open.\n *\n * @since 0.1.0\n */\n ErrorCode[\"NoBrowserOpen\"] = \"NO_BROWSER_OPEN\";\n})(ErrorCode || (ErrorCode = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst InAppBrowser = registerPlugin('InAppBrowser', {\n web: () => import('./web').then(m => new m.InAppBrowserWeb()),\n});\nexport * from './definitions';\nexport { InAppBrowser };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class InAppBrowserWeb extends WebPlugin {\n async clearCache() {\n throw this.unimplemented('Not implemented on web.');\n }\n async clearSessionData() {\n throw this.unimplemented('Not implemented on web.');\n }\n async close() {\n throw this.unimplemented('Not implemented on web.');\n }\n async executeScript() {\n throw this.unimplemented('Not implemented on web.');\n }\n async getCookies() {\n throw this.unimplemented('Not implemented on web.');\n }\n async openInExternalBrowser(options) {\n if (!options.url) {\n throw new Error(InAppBrowserWeb.errorUrlMissing);\n }\n window.open(options.url, '_blank');\n }\n async openInSystemBrowser() {\n throw this.unimplemented('Not implemented on web.');\n }\n async openInWebView() {\n throw this.unimplemented('Not implemented on web.');\n }\n async postMessage() {\n throw this.unimplemented('Not implemented on web.');\n }\n}\nInAppBrowserWeb.errorUrlMissing = 'url must be provided.';\n//# sourceMappingURL=web.js.map"],"names":["ErrorCode","registerPlugin","WebPlugin"],"mappings":";;;IAAA;IACA;IACA;AACWA;IACX,CAAC,UAAU,SAAS,EAAE;IACtB;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,CAAC,iBAAiB,CAAC,GAAG,mBAAmB;IACtD;IACA;IACA;IACA;IACA;IACA,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,iBAAiB;IAClD,CAAC,EAAEA,iBAAS,KAAKA,iBAAS,GAAG,EAAE,CAAC,CAAC;;AChB5B,UAAC,YAAY,GAAGC,mBAAc,CAAC,cAAc,EAAE;IACpD,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;IACjE,CAAC;;ICFM,MAAM,eAAe,SAASC,cAAS,CAAC;IAC/C,IAAI,MAAM,UAAU,GAAG;IACvB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ,IAAI,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ,IAAI,MAAM,KAAK,GAAG;IAClB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ,IAAI,MAAM,aAAa,GAAG;IAC1B,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ,IAAI,MAAM,UAAU,GAAG;IACvB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ,IAAI,MAAM,qBAAqB,CAAC,OAAO,EAAE;IACzC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC;IAC5D,QAAQ;IACR,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;IAC1C,IAAI;IACJ,IAAI,MAAM,mBAAmB,GAAG;IAChC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ,IAAI,MAAM,aAAa,GAAG;IAC1B,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ,IAAI,MAAM,WAAW,GAAG;IACxB,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;IAC3D,IAAI;IACJ;IACA,eAAe,CAAC,eAAe,GAAG,uBAAuB;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class BrowserPageNavigationCompletedEvent: NSObject, Result {
|
|
5
|
+
let url: String
|
|
6
|
+
|
|
7
|
+
init(url: String) {
|
|
8
|
+
self.url = url
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@objc public func toJSObject() -> AnyObject {
|
|
12
|
+
var result = JSObject()
|
|
13
|
+
result["url"] = url
|
|
14
|
+
return result as AnyObject
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class MessageReceivedEvent: NSObject, Result {
|
|
5
|
+
let data: Any
|
|
6
|
+
|
|
7
|
+
init(data: Any) {
|
|
8
|
+
self.data = data
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@objc public func toJSObject() -> AnyObject {
|
|
12
|
+
var result = JSObject()
|
|
13
|
+
if let dictionary = data as? [AnyHashable: Any] {
|
|
14
|
+
result["data"] = JSTypes.coerceDictionaryToJSObject(dictionary) ?? JSObject()
|
|
15
|
+
} else if let array = data as? [Any] {
|
|
16
|
+
result["data"] = JSTypes.coerceArrayToJSArray(array) ?? JSArray()
|
|
17
|
+
} else if let value = data as? JSValue {
|
|
18
|
+
result["data"] = value
|
|
19
|
+
} else {
|
|
20
|
+
result["data"] = NSNull()
|
|
21
|
+
}
|
|
22
|
+
return result as AnyObject
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class ExecuteScriptOptions: NSObject {
|
|
5
|
+
let script: String
|
|
6
|
+
|
|
7
|
+
init(_ call: CAPPluginCall) throws {
|
|
8
|
+
self.script = try ExecuteScriptOptions.getScriptFromCall(call)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
private static func getScriptFromCall(_ call: CAPPluginCall) throws -> String {
|
|
12
|
+
guard let script = call.getString("script"), !script.isEmpty else {
|
|
13
|
+
throw CustomError.scriptMissing
|
|
14
|
+
}
|
|
15
|
+
return script
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class GetCookiesOptions: NSObject {
|
|
5
|
+
let url: URL
|
|
6
|
+
|
|
7
|
+
init(_ call: CAPPluginCall) throws {
|
|
8
|
+
self.url = try GetCookiesOptions.getUrlFromCall(call)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
private static func getUrlFromCall(_ call: CAPPluginCall) throws -> URL {
|
|
12
|
+
guard let urlString = call.getString("url"), !urlString.isEmpty else {
|
|
13
|
+
throw CustomError.urlMissing
|
|
14
|
+
}
|
|
15
|
+
guard let url = URL(string: urlString) else {
|
|
16
|
+
throw CustomError.urlInvalid
|
|
17
|
+
}
|
|
18
|
+
return url
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class OpenInExternalBrowserOptions: NSObject {
|
|
5
|
+
let url: URL
|
|
6
|
+
|
|
7
|
+
init(_ call: CAPPluginCall) throws {
|
|
8
|
+
self.url = try OpenInExternalBrowserOptions.getUrlFromCall(call)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
private static func getUrlFromCall(_ call: CAPPluginCall) throws -> URL {
|
|
12
|
+
guard let urlString = call.getString("url"), !urlString.isEmpty else {
|
|
13
|
+
throw CustomError.urlMissing
|
|
14
|
+
}
|
|
15
|
+
guard let url = URL(string: urlString) else {
|
|
16
|
+
throw CustomError.urlInvalid
|
|
17
|
+
}
|
|
18
|
+
return url
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
import SafariServices
|
|
4
|
+
import UIKit
|
|
5
|
+
|
|
6
|
+
@objc public class OpenInSystemBrowserOptions: NSObject {
|
|
7
|
+
let barCollapsing: Bool
|
|
8
|
+
let dismissButtonStyle: SFSafariViewController.DismissButtonStyle
|
|
9
|
+
let readerMode: Bool
|
|
10
|
+
let toolbarColor: UIColor?
|
|
11
|
+
let url: URL
|
|
12
|
+
|
|
13
|
+
init(_ call: CAPPluginCall) throws {
|
|
14
|
+
let iosOptions = call.getObject("ios")
|
|
15
|
+
self.barCollapsing = iosOptions?["barCollapsing"] as? Bool ?? true
|
|
16
|
+
self.dismissButtonStyle = OpenInSystemBrowserOptions.getDismissButtonStyleFromObject(iosOptions)
|
|
17
|
+
self.readerMode = iosOptions?["readerMode"] as? Bool ?? false
|
|
18
|
+
self.toolbarColor = try OpenInSystemBrowserOptions.getToolbarColorFromObject(iosOptions)
|
|
19
|
+
self.url = try OpenInSystemBrowserOptions.getUrlFromCall(call)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
private static func getDismissButtonStyleFromObject(_ object: JSObject?) -> SFSafariViewController.DismissButtonStyle {
|
|
23
|
+
switch object?["dismissButtonStyle"] as? String {
|
|
24
|
+
case "cancel":
|
|
25
|
+
return .cancel
|
|
26
|
+
case "close":
|
|
27
|
+
return .close
|
|
28
|
+
default:
|
|
29
|
+
return .done
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private static func getToolbarColorFromObject(_ object: JSObject?) throws -> UIColor? {
|
|
34
|
+
guard let toolbarColor = object?["toolbarColor"] as? String else {
|
|
35
|
+
return nil
|
|
36
|
+
}
|
|
37
|
+
guard let color = InAppBrowserHelper.parseColor(toolbarColor) else {
|
|
38
|
+
throw CustomError.toolbarColorInvalid
|
|
39
|
+
}
|
|
40
|
+
return color
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private static func getUrlFromCall(_ call: CAPPluginCall) throws -> URL {
|
|
44
|
+
guard let urlString = call.getString("url"), !urlString.isEmpty else {
|
|
45
|
+
throw CustomError.urlMissing
|
|
46
|
+
}
|
|
47
|
+
guard let url = URL(string: urlString), let scheme = url.scheme, ["http", "https"].contains(scheme.lowercased()) else {
|
|
48
|
+
throw CustomError.urlInvalid
|
|
49
|
+
}
|
|
50
|
+
return url
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class OpenInWebViewOptions: NSObject {
|
|
5
|
+
let allowsBackForwardNavigationGestures: Bool
|
|
6
|
+
let headers: [String: String]
|
|
7
|
+
let isolatedDataStore: Bool
|
|
8
|
+
let mediaPlaybackRequiresUserAction: Bool
|
|
9
|
+
let overscroll: Bool
|
|
10
|
+
let toolbar: WebViewToolbarOptions
|
|
11
|
+
let url: URL
|
|
12
|
+
let userAgent: String?
|
|
13
|
+
|
|
14
|
+
init(_ call: CAPPluginCall) throws {
|
|
15
|
+
let iosOptions = call.getObject("ios")
|
|
16
|
+
self.allowsBackForwardNavigationGestures = iosOptions?["allowsBackForwardNavigationGestures"] as? Bool ?? false
|
|
17
|
+
self.headers = OpenInWebViewOptions.getHeadersFromCall(call)
|
|
18
|
+
self.isolatedDataStore = call.getString("dataStore") == "isolated"
|
|
19
|
+
self.mediaPlaybackRequiresUserAction = call.getBool("mediaPlaybackRequiresUserAction", false)
|
|
20
|
+
self.overscroll = iosOptions?["overscroll"] as? Bool ?? true
|
|
21
|
+
self.toolbar = try WebViewToolbarOptions(call.getObject("toolbar"))
|
|
22
|
+
self.url = try OpenInWebViewOptions.getUrlFromCall(call)
|
|
23
|
+
self.userAgent = call.getString("userAgent")
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private static func getHeadersFromCall(_ call: CAPPluginCall) -> [String: String] {
|
|
27
|
+
var headers: [String: String] = [:]
|
|
28
|
+
guard let headersObject = call.getObject("headers") else {
|
|
29
|
+
return headers
|
|
30
|
+
}
|
|
31
|
+
for (key, value) in headersObject {
|
|
32
|
+
if let value = value as? String {
|
|
33
|
+
headers[key] = value
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return headers
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private static func getUrlFromCall(_ call: CAPPluginCall) throws -> URL {
|
|
40
|
+
guard let urlString = call.getString("url"), !urlString.isEmpty else {
|
|
41
|
+
throw CustomError.urlMissing
|
|
42
|
+
}
|
|
43
|
+
guard let url = URL(string: urlString), let scheme = url.scheme, ["http", "https"].contains(scheme.lowercased()) else {
|
|
44
|
+
throw CustomError.urlInvalid
|
|
45
|
+
}
|
|
46
|
+
return url
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class PostMessageOptions: NSObject {
|
|
5
|
+
let data: JSObject
|
|
6
|
+
|
|
7
|
+
init(_ call: CAPPluginCall) throws {
|
|
8
|
+
self.data = try PostMessageOptions.getDataFromCall(call)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
private static func getDataFromCall(_ call: CAPPluginCall) throws -> JSObject {
|
|
12
|
+
guard let data = call.getObject("data") else {
|
|
13
|
+
throw CustomError.dataMissing
|
|
14
|
+
}
|
|
15
|
+
return data
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
import UIKit
|
|
4
|
+
|
|
5
|
+
@objc public class WebViewToolbarOptions: NSObject {
|
|
6
|
+
let backgroundColor: UIColor?
|
|
7
|
+
let closeButtonText: String
|
|
8
|
+
let color: UIColor?
|
|
9
|
+
let showNavigationButtons: Bool
|
|
10
|
+
let showUrl: Bool
|
|
11
|
+
let title: String?
|
|
12
|
+
let visible: Bool
|
|
13
|
+
|
|
14
|
+
init(_ object: JSObject?) throws {
|
|
15
|
+
self.backgroundColor = try WebViewToolbarOptions.getColorFromObject(
|
|
16
|
+
object,
|
|
17
|
+
key: "backgroundColor",
|
|
18
|
+
invalidError: CustomError.backgroundColorInvalid
|
|
19
|
+
)
|
|
20
|
+
self.closeButtonText = object?["closeButtonText"] as? String ?? "Close"
|
|
21
|
+
self.color = try WebViewToolbarOptions.getColorFromObject(object, key: "color", invalidError: CustomError.colorInvalid)
|
|
22
|
+
self.showNavigationButtons = object?["showNavigationButtons"] as? Bool ?? false
|
|
23
|
+
self.showUrl = object?["showUrl"] as? Bool ?? false
|
|
24
|
+
self.title = object?["title"] as? String
|
|
25
|
+
self.visible = object?["visible"] as? Bool ?? true
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private static func getColorFromObject(_ object: JSObject?, key: String, invalidError: Error) throws -> UIColor? {
|
|
29
|
+
guard let value = object?[key] as? String else {
|
|
30
|
+
return nil
|
|
31
|
+
}
|
|
32
|
+
guard let color = InAppBrowserHelper.parseColor(value) else {
|
|
33
|
+
throw invalidError
|
|
34
|
+
}
|
|
35
|
+
return color
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class ExecuteScriptResult: NSObject, Result {
|
|
5
|
+
let result: String?
|
|
6
|
+
|
|
7
|
+
init(value: Any?) {
|
|
8
|
+
if let value = value, !(value is NSNull), let data = try? JSONSerialization.data(withJSONObject: value, options: [.fragmentsAllowed]),
|
|
9
|
+
let string = String(data: data, encoding: .utf8) {
|
|
10
|
+
self.result = string
|
|
11
|
+
} else {
|
|
12
|
+
self.result = nil
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@objc public func toJSObject() -> AnyObject {
|
|
17
|
+
var result = JSObject()
|
|
18
|
+
if let value = self.result {
|
|
19
|
+
result["result"] = value
|
|
20
|
+
} else {
|
|
21
|
+
result["result"] = NSNull()
|
|
22
|
+
}
|
|
23
|
+
return result as AnyObject
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
@objc public class GetCookiesResult: NSObject, Result {
|
|
5
|
+
let cookies: [String: String]
|
|
6
|
+
|
|
7
|
+
init(cookies: [String: String]) {
|
|
8
|
+
self.cookies = cookies
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@objc public func toJSObject() -> AnyObject {
|
|
12
|
+
var cookies = JSObject()
|
|
13
|
+
for (key, value) in self.cookies {
|
|
14
|
+
cookies[key] = value
|
|
15
|
+
}
|
|
16
|
+
var result = JSObject()
|
|
17
|
+
result["cookies"] = cookies
|
|
18
|
+
return result as AnyObject
|
|
19
|
+
}
|
|
20
|
+
}
|