@getflip/bridge 0.0.0-beta-20260114160010

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.
Files changed (133) hide show
  1. package/LICENSE.md +25 -0
  2. package/README.md +569 -0
  3. package/dist/dialog/dialog.d.ts +10 -0
  4. package/dist/dialog/dialog.js +45 -0
  5. package/dist/dialog/dialog.js.map +1 -0
  6. package/dist/dialog/dialog.spec.d.ts +1 -0
  7. package/dist/dialog/dialog.spec.js +83 -0
  8. package/dist/dialog/dialog.spec.js.map +1 -0
  9. package/dist/dialog/dialog.types.d.ts +33 -0
  10. package/dist/dialog/dialog.types.js +2 -0
  11. package/dist/dialog/dialog.types.js.map +1 -0
  12. package/dist/dialog/index.d.ts +2 -0
  13. package/dist/dialog/index.js +3 -0
  14. package/dist/dialog/index.js.map +1 -0
  15. package/dist/download/download.d.ts +1 -0
  16. package/dist/download/download.js +17 -0
  17. package/dist/download/download.js.map +1 -0
  18. package/dist/download/download.spec.d.ts +1 -0
  19. package/dist/download/download.spec.js +39 -0
  20. package/dist/download/download.spec.js.map +1 -0
  21. package/dist/download/download.types.d.ts +9 -0
  22. package/dist/download/download.types.js +2 -0
  23. package/dist/download/download.types.js.map +1 -0
  24. package/dist/download/index.d.ts +2 -0
  25. package/dist/download/index.js +3 -0
  26. package/dist/download/index.js.map +1 -0
  27. package/dist/events/events.d.ts +3 -0
  28. package/dist/events/events.js +44 -0
  29. package/dist/events/events.js.map +1 -0
  30. package/dist/events/events.spec.d.ts +1 -0
  31. package/dist/events/events.spec.js +64 -0
  32. package/dist/events/events.spec.js.map +1 -0
  33. package/dist/events/events.types.d.ts +29 -0
  34. package/dist/events/events.types.js +10 -0
  35. package/dist/events/events.types.js.map +1 -0
  36. package/dist/events/index.d.ts +2 -0
  37. package/dist/events/index.js +3 -0
  38. package/dist/events/index.js.map +1 -0
  39. package/dist/i18n/i18n.d.ts +3 -0
  40. package/dist/i18n/i18n.js +18 -0
  41. package/dist/i18n/i18n.js.map +1 -0
  42. package/dist/i18n/i18n.spec.d.ts +1 -0
  43. package/dist/i18n/i18n.spec.js +27 -0
  44. package/dist/i18n/i18n.spec.js.map +1 -0
  45. package/dist/i18n/i18n.types.d.ts +6 -0
  46. package/dist/i18n/i18n.types.js +2 -0
  47. package/dist/i18n/i18n.types.js.map +1 -0
  48. package/dist/i18n/index.d.ts +2 -0
  49. package/dist/i18n/index.js +3 -0
  50. package/dist/i18n/index.js.map +1 -0
  51. package/dist/index.cjs.js +329 -0
  52. package/dist/index.cjs.js.map +1 -0
  53. package/dist/index.d.ts +17 -0
  54. package/dist/index.js +18 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/index.mjs +310 -0
  57. package/dist/index.mjs.map +1 -0
  58. package/dist/index.spec.d.ts +1 -0
  59. package/dist/index.spec.js +20 -0
  60. package/dist/index.spec.js.map +1 -0
  61. package/dist/logging/index.d.ts +1 -0
  62. package/dist/logging/index.js +2 -0
  63. package/dist/logging/index.js.map +1 -0
  64. package/dist/logging/logging.d.ts +1 -0
  65. package/dist/logging/logging.js +8 -0
  66. package/dist/logging/logging.js.map +1 -0
  67. package/dist/logging/logging.spec.d.ts +1 -0
  68. package/dist/logging/logging.spec.js +19 -0
  69. package/dist/logging/logging.spec.js.map +1 -0
  70. package/dist/messaging/index.d.ts +2 -0
  71. package/dist/messaging/index.js +3 -0
  72. package/dist/messaging/index.js.map +1 -0
  73. package/dist/messaging/messaging.d.ts +15 -0
  74. package/dist/messaging/messaging.js +70 -0
  75. package/dist/messaging/messaging.js.map +1 -0
  76. package/dist/messaging/messaging.spec.d.ts +1 -0
  77. package/dist/messaging/messaging.spec.js +59 -0
  78. package/dist/messaging/messaging.spec.js.map +1 -0
  79. package/dist/messaging/messaging.types.d.ts +11 -0
  80. package/dist/messaging/messaging.types.js +2 -0
  81. package/dist/messaging/messaging.types.js.map +1 -0
  82. package/dist/modal/index.d.ts +2 -0
  83. package/dist/modal/index.js +3 -0
  84. package/dist/modal/index.js.map +1 -0
  85. package/dist/modal/modal.d.ts +10 -0
  86. package/dist/modal/modal.js +45 -0
  87. package/dist/modal/modal.js.map +1 -0
  88. package/dist/modal/modal.spec.d.ts +1 -0
  89. package/dist/modal/modal.spec.js +81 -0
  90. package/dist/modal/modal.spec.js.map +1 -0
  91. package/dist/modal/modal.types.d.ts +30 -0
  92. package/dist/modal/modal.types.js +2 -0
  93. package/dist/modal/modal.types.js.map +1 -0
  94. package/dist/navigation/index.d.ts +2 -0
  95. package/dist/navigation/index.js +3 -0
  96. package/dist/navigation/index.js.map +1 -0
  97. package/dist/navigation/navigation.d.ts +1 -0
  98. package/dist/navigation/navigation.js +12 -0
  99. package/dist/navigation/navigation.js.map +1 -0
  100. package/dist/navigation/navigation.spec.d.ts +1 -0
  101. package/dist/navigation/navigation.spec.js +22 -0
  102. package/dist/navigation/navigation.spec.js.map +1 -0
  103. package/dist/navigation/navigation.types.d.ts +6 -0
  104. package/dist/navigation/navigation.types.js +2 -0
  105. package/dist/navigation/navigation.types.js.map +1 -0
  106. package/dist/theming/index.d.ts +2 -0
  107. package/dist/theming/index.js +3 -0
  108. package/dist/theming/index.js.map +1 -0
  109. package/dist/theming/theming.d.ts +4 -0
  110. package/dist/theming/theming.js +19 -0
  111. package/dist/theming/theming.js.map +1 -0
  112. package/dist/theming/theming.spec.d.ts +1 -0
  113. package/dist/theming/theming.spec.js +30 -0
  114. package/dist/theming/theming.spec.js.map +1 -0
  115. package/dist/theming/theming.types.d.ts +12 -0
  116. package/dist/theming/theming.types.js +2 -0
  117. package/dist/theming/theming.types.js.map +1 -0
  118. package/dist/toast/index.d.ts +2 -0
  119. package/dist/toast/index.js +3 -0
  120. package/dist/toast/index.js.map +1 -0
  121. package/dist/toast/toast.d.ts +2 -0
  122. package/dist/toast/toast.js +12 -0
  123. package/dist/toast/toast.js.map +1 -0
  124. package/dist/toast/toast.spec.d.ts +1 -0
  125. package/dist/toast/toast.spec.js +32 -0
  126. package/dist/toast/toast.spec.js.map +1 -0
  127. package/dist/toast/toast.types.d.ts +11 -0
  128. package/dist/toast/toast.types.js +2 -0
  129. package/dist/toast/toast.types.js.map +1 -0
  130. package/dist/types.d.ts +57 -0
  131. package/dist/types.js +26 -0
  132. package/dist/types.js.map +1 -0
  133. package/package.json +38 -0
@@ -0,0 +1,329 @@
1
+ 'use strict';
2
+
3
+ var uuid = require('uuid');
4
+
5
+ exports.BridgeErrorCode = void 0;
6
+ (function (BridgeErrorCode) {
7
+ BridgeErrorCode["FORBIDDEN_ORIGIN"] = "FORBIDDEN_ORIGIN";
8
+ BridgeErrorCode["INVALID_REQUEST"] = "INVALID_REQUEST";
9
+ })(exports.BridgeErrorCode || (exports.BridgeErrorCode = {}));
10
+ exports.BridgeMethod = void 0;
11
+ (function (BridgeMethod) {
12
+ BridgeMethod["CLOSE_DIALOG"] = "CLOSE_DIALOG";
13
+ BridgeMethod["CLOSE_MODAL"] = "CLOSE_MODAL";
14
+ BridgeMethod["CREATE_DIALOG"] = "CREATE_DIALOG";
15
+ BridgeMethod["CREATE_MODAL"] = "CREATE_MODAL";
16
+ BridgeMethod["DESTROY_DIALOG"] = "DESTROY_DIALOG";
17
+ BridgeMethod["DESTROY_MODAL"] = "DESTROY_MODAL";
18
+ BridgeMethod["GET_AVAILABLE_LANGS"] = "GET_AVAILABLE_LANGS";
19
+ BridgeMethod["GET_LANG"] = "GET_LANG";
20
+ BridgeMethod["GET_THEME"] = "GET_THEME";
21
+ BridgeMethod["NAVIGATE"] = "NAVIGATE";
22
+ BridgeMethod["OPEN_DIALOG"] = "OPEN_DIALOG";
23
+ BridgeMethod["OPEN_MODAL"] = "OPEN_MODAL";
24
+ BridgeMethod["SET_THEME"] = "SET_THEME";
25
+ BridgeMethod["SHOW_TOAST"] = "SHOW_TOAST";
26
+ BridgeMethod["SUBSCRIBE"] = "SUBSCRIBE";
27
+ BridgeMethod["UNSUBSCRIBE"] = "UNSUBSCRIBE";
28
+ BridgeMethod["DOWNLOAD"] = "DOWNLOAD";
29
+ })(exports.BridgeMethod || (exports.BridgeMethod = {}));
30
+
31
+ function log(message, details) {
32
+ var _a;
33
+ const debug = (_a = window.flipBridgeOptions) === null || _a === void 0 ? void 0 : _a.debug;
34
+ if (debug) {
35
+ console.log(`${message} – `, details);
36
+ }
37
+ }
38
+
39
+ function isFlutterApp() {
40
+ return "FlipFlutter" in window;
41
+ }
42
+ function postMessage(message) {
43
+ var _a, _b;
44
+ const isFlutter = isFlutterApp();
45
+ if (!window.top && !isFlutter) {
46
+ return;
47
+ }
48
+ const hostAppOrigin = (_a = window.flipBridgeOptions) === null || _a === void 0 ? void 0 : _a.hostAppOrigin;
49
+ if (!hostAppOrigin) {
50
+ throw Error(`Please call 'initFlipBridge'.`);
51
+ }
52
+ if (isFlutter) {
53
+ window.FlipFlutter.postMessage(JSON.stringify(message));
54
+ }
55
+ else {
56
+ (_b = window.top) === null || _b === void 0 ? void 0 : _b.postMessage(message, hostAppOrigin);
57
+ }
58
+ log("postMessage", {
59
+ message,
60
+ isFlutter,
61
+ targetOrigin: hostAppOrigin,
62
+ });
63
+ }
64
+ function makeRequest(request) {
65
+ return new Promise((resolve, reject) => {
66
+ const handler = getRequestHandler(request, resolve, reject);
67
+ window.addEventListener("message", handler);
68
+ postMessage(request);
69
+ });
70
+ }
71
+ function getRequestHandler(request, resolve, reject) {
72
+ const handler = (event) => {
73
+ if (!isResponse(event.data) || event.data.id !== request.id) {
74
+ return;
75
+ }
76
+ if (!isAllowedOrigin(event.origin)) {
77
+ reject({
78
+ code: exports.BridgeErrorCode.FORBIDDEN_ORIGIN,
79
+ });
80
+ return;
81
+ }
82
+ log("handleResponse", event.data);
83
+ window.removeEventListener("message", handler);
84
+ if (event.data.error) {
85
+ reject(event.data.error);
86
+ }
87
+ else {
88
+ resolve(event.data.result);
89
+ }
90
+ };
91
+ return handler;
92
+ }
93
+ function isResponse(message) {
94
+ return (typeof message === "object" &&
95
+ "id" in message &&
96
+ ("result" in message || "error" in message));
97
+ }
98
+ function isAllowedOrigin(origin) {
99
+ var _a;
100
+ if (isFlutterApp()) {
101
+ return true;
102
+ }
103
+ const hostAppOrigin = (_a = window.flipBridgeOptions) === null || _a === void 0 ? void 0 : _a.hostAppOrigin;
104
+ return origin === hostAppOrigin;
105
+ }
106
+
107
+ async function createDialog(params) {
108
+ const request = {
109
+ id: uuid.v4(),
110
+ method: exports.BridgeMethod.CREATE_DIALOG,
111
+ params,
112
+ };
113
+ const result = await makeRequest(request);
114
+ if (!result) {
115
+ return;
116
+ }
117
+ return {
118
+ id: params.id,
119
+ open: async () => openDialog({ id: params.id }),
120
+ close: async () => closeDialog({ id: params.id }),
121
+ destroy: async () => destroyDialog({ id: params.id }),
122
+ };
123
+ }
124
+ async function openDialog(params) {
125
+ const request = {
126
+ id: uuid.v4(),
127
+ method: exports.BridgeMethod.OPEN_DIALOG,
128
+ params,
129
+ };
130
+ return makeRequest(request);
131
+ }
132
+ async function closeDialog(params) {
133
+ const request = {
134
+ id: uuid.v4(),
135
+ method: exports.BridgeMethod.CLOSE_DIALOG,
136
+ params,
137
+ };
138
+ return makeRequest(request);
139
+ }
140
+ async function destroyDialog(params) {
141
+ const request = {
142
+ id: uuid.v4(),
143
+ method: exports.BridgeMethod.DESTROY_DIALOG,
144
+ params,
145
+ };
146
+ return makeRequest(request);
147
+ }
148
+
149
+ function download(fileName, fileType, url, dataUrl) {
150
+ const request = {
151
+ id: uuid.v4(),
152
+ method: exports.BridgeMethod.DOWNLOAD,
153
+ params: {
154
+ fileName,
155
+ fileType,
156
+ url,
157
+ dataUrl,
158
+ },
159
+ };
160
+ return makeRequest(request);
161
+ }
162
+
163
+ exports.BridgeEventType = void 0;
164
+ (function (BridgeEventType) {
165
+ BridgeEventType["NAVIGATION_END"] = "NAVIGATION_END";
166
+ BridgeEventType["PRIMARY_ACTION_CLICK"] = "PRIMARY_ACTION_CLICK";
167
+ BridgeEventType["LANG_CHANGE"] = "LANG_CHANGE";
168
+ BridgeEventType["SECONDARY_ACTION_CLICK"] = "SECONDARY_ACTION_CLICK";
169
+ BridgeEventType["THEME_CHANGE"] = "THEME_CHANGE";
170
+ BridgeEventType["TITLE_CHANGE"] = "TITLE_CHANGE";
171
+ })(exports.BridgeEventType || (exports.BridgeEventType = {}));
172
+
173
+ async function subscribe(type, callback, options) {
174
+ const subscriptionId = (options === null || options === void 0 ? void 0 : options.id) || uuid.v4();
175
+ const subscribeRequest = {
176
+ id: uuid.v4(),
177
+ method: exports.BridgeMethod.SUBSCRIBE,
178
+ params: { id: subscriptionId, type },
179
+ };
180
+ const eventHandler = (event) => {
181
+ if (!isAllowedOrigin(event.origin) ||
182
+ !isEvent(event.data) ||
183
+ event.data.type !== type ||
184
+ event.data.id !== subscriptionId) {
185
+ return;
186
+ }
187
+ log("handleEvent", event.data);
188
+ callback(event.data);
189
+ };
190
+ window.addEventListener("message", eventHandler);
191
+ const subscribed = await makeRequest(subscribeRequest);
192
+ if (!subscribed) {
193
+ window.removeEventListener("message", eventHandler);
194
+ throw new Error(`Could not subscribe to event "${type}".`);
195
+ }
196
+ return async () => {
197
+ const unsubscribeRequest = {
198
+ id: uuid.v4(),
199
+ method: exports.BridgeMethod.UNSUBSCRIBE,
200
+ params: { id: subscriptionId, type },
201
+ };
202
+ await makeRequest(unsubscribeRequest);
203
+ window.removeEventListener("message", eventHandler);
204
+ };
205
+ }
206
+ function isEvent(message) {
207
+ return (typeof message === "object" &&
208
+ "type" in message &&
209
+ Object.values(exports.BridgeEventType).includes(message.type));
210
+ }
211
+
212
+ function getAvailableLangs() {
213
+ const request = {
214
+ id: uuid.v4(),
215
+ method: exports.BridgeMethod.GET_AVAILABLE_LANGS,
216
+ };
217
+ return makeRequest(request);
218
+ }
219
+ function getLang() {
220
+ const request = {
221
+ id: uuid.v4(),
222
+ method: exports.BridgeMethod.GET_LANG,
223
+ };
224
+ return makeRequest(request);
225
+ }
226
+
227
+ async function createModal(params) {
228
+ const request = {
229
+ id: uuid.v4(),
230
+ method: exports.BridgeMethod.CREATE_MODAL,
231
+ params,
232
+ };
233
+ const result = await makeRequest(request);
234
+ if (!result) {
235
+ return;
236
+ }
237
+ return {
238
+ id: params.id,
239
+ open: async () => openModal({ id: params.id }),
240
+ close: async () => closeModal({ id: params.id }),
241
+ destroy: async () => destroyModal({ id: params.id }),
242
+ };
243
+ }
244
+ async function openModal(params) {
245
+ const request = {
246
+ id: uuid.v4(),
247
+ method: exports.BridgeMethod.OPEN_MODAL,
248
+ params,
249
+ };
250
+ return makeRequest(request);
251
+ }
252
+ async function closeModal(params) {
253
+ const request = {
254
+ id: uuid.v4(),
255
+ method: exports.BridgeMethod.CLOSE_MODAL,
256
+ params,
257
+ };
258
+ return makeRequest(request);
259
+ }
260
+ async function destroyModal(params) {
261
+ const request = {
262
+ id: uuid.v4(),
263
+ method: exports.BridgeMethod.DESTROY_MODAL,
264
+ params,
265
+ };
266
+ return makeRequest(request);
267
+ }
268
+
269
+ function navigate(path) {
270
+ const request = {
271
+ id: uuid.v4(),
272
+ method: exports.BridgeMethod.NAVIGATE,
273
+ params: { path },
274
+ };
275
+ return makeRequest(request);
276
+ }
277
+
278
+ function getTheme() {
279
+ const request = {
280
+ id: uuid.v4(),
281
+ method: exports.BridgeMethod.GET_THEME,
282
+ };
283
+ return makeRequest(request);
284
+ }
285
+ function setTheme(theme) {
286
+ const request = {
287
+ id: uuid.v4(),
288
+ method: exports.BridgeMethod.SET_THEME,
289
+ params: { theme },
290
+ };
291
+ return makeRequest(request);
292
+ }
293
+
294
+ async function showToast(params) {
295
+ const request = {
296
+ id: uuid.v4(),
297
+ method: exports.BridgeMethod.SHOW_TOAST,
298
+ params,
299
+ };
300
+ return await makeRequest(request);
301
+ }
302
+
303
+ function initFlipBridge(options) {
304
+ if (window.flipBridgeOptions) {
305
+ console.warn(`'initFlipBridge' has already been called.`);
306
+ return;
307
+ }
308
+ window.flipBridgeOptions = options;
309
+ }
310
+
311
+ exports.closeDialog = closeDialog;
312
+ exports.closeModal = closeModal;
313
+ exports.createDialog = createDialog;
314
+ exports.createModal = createModal;
315
+ exports.destroyDialog = destroyDialog;
316
+ exports.destroyModal = destroyModal;
317
+ exports.download = download;
318
+ exports.getAvailableLangs = getAvailableLangs;
319
+ exports.getLang = getLang;
320
+ exports.getTheme = getTheme;
321
+ exports.initFlipBridge = initFlipBridge;
322
+ exports.isEvent = isEvent;
323
+ exports.navigate = navigate;
324
+ exports.openDialog = openDialog;
325
+ exports.openModal = openModal;
326
+ exports.setTheme = setTheme;
327
+ exports.showToast = showToast;
328
+ exports.subscribe = subscribe;
329
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/logging/logging.ts","../src/messaging/messaging.ts","../src/dialog/dialog.ts","../src/download/download.ts","../src/events/events.types.ts","../src/events/events.ts","../src/i18n/i18n.ts","../src/modal/modal.ts","../src/navigation/navigation.ts","../src/theming/theming.ts","../src/toast/toast.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["BridgeErrorCode","BridgeMethod","uuidv4","BridgeEventType"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BridgeOptions } from "./types";
2
+ export * from "./messaging/messaging.types";
3
+ export * from "./types";
4
+ export * from "./dialog";
5
+ export * from "./download";
6
+ export * from "./events";
7
+ export * from "./i18n";
8
+ export * from "./modal";
9
+ export * from "./navigation";
10
+ export * from "./theming";
11
+ export * from "./toast";
12
+ declare global {
13
+ interface Window {
14
+ flipBridgeOptions: BridgeOptions;
15
+ }
16
+ }
17
+ export declare function initFlipBridge(options: BridgeOptions): void;
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ export * from "./messaging/messaging.types";
2
+ export * from "./types";
3
+ export * from "./dialog";
4
+ export * from "./download";
5
+ export * from "./events";
6
+ export * from "./i18n";
7
+ export * from "./modal";
8
+ export * from "./navigation";
9
+ export * from "./theming";
10
+ export * from "./toast";
11
+ export function initFlipBridge(options) {
12
+ if (window.flipBridgeOptions) {
13
+ console.warn(`'initFlipBridge' has already been called.`);
14
+ return;
15
+ }
16
+ window.flipBridgeOptions = options;
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AAExB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AAQxB,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,IAAI,MAAM,CAAC,iBAAiB,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO;KACR;IAED,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC;AACrC,CAAC"}
package/dist/index.mjs ADDED
@@ -0,0 +1,310 @@
1
+ import { v4 } from 'uuid';
2
+
3
+ var BridgeErrorCode;
4
+ (function (BridgeErrorCode) {
5
+ BridgeErrorCode["FORBIDDEN_ORIGIN"] = "FORBIDDEN_ORIGIN";
6
+ BridgeErrorCode["INVALID_REQUEST"] = "INVALID_REQUEST";
7
+ })(BridgeErrorCode || (BridgeErrorCode = {}));
8
+ var BridgeMethod;
9
+ (function (BridgeMethod) {
10
+ BridgeMethod["CLOSE_DIALOG"] = "CLOSE_DIALOG";
11
+ BridgeMethod["CLOSE_MODAL"] = "CLOSE_MODAL";
12
+ BridgeMethod["CREATE_DIALOG"] = "CREATE_DIALOG";
13
+ BridgeMethod["CREATE_MODAL"] = "CREATE_MODAL";
14
+ BridgeMethod["DESTROY_DIALOG"] = "DESTROY_DIALOG";
15
+ BridgeMethod["DESTROY_MODAL"] = "DESTROY_MODAL";
16
+ BridgeMethod["GET_AVAILABLE_LANGS"] = "GET_AVAILABLE_LANGS";
17
+ BridgeMethod["GET_LANG"] = "GET_LANG";
18
+ BridgeMethod["GET_THEME"] = "GET_THEME";
19
+ BridgeMethod["NAVIGATE"] = "NAVIGATE";
20
+ BridgeMethod["OPEN_DIALOG"] = "OPEN_DIALOG";
21
+ BridgeMethod["OPEN_MODAL"] = "OPEN_MODAL";
22
+ BridgeMethod["SET_THEME"] = "SET_THEME";
23
+ BridgeMethod["SHOW_TOAST"] = "SHOW_TOAST";
24
+ BridgeMethod["SUBSCRIBE"] = "SUBSCRIBE";
25
+ BridgeMethod["UNSUBSCRIBE"] = "UNSUBSCRIBE";
26
+ BridgeMethod["DOWNLOAD"] = "DOWNLOAD";
27
+ })(BridgeMethod || (BridgeMethod = {}));
28
+
29
+ function log(message, details) {
30
+ var _a;
31
+ const debug = (_a = window.flipBridgeOptions) === null || _a === void 0 ? void 0 : _a.debug;
32
+ if (debug) {
33
+ console.log(`${message} – `, details);
34
+ }
35
+ }
36
+
37
+ function isFlutterApp() {
38
+ return "FlipFlutter" in window;
39
+ }
40
+ function postMessage(message) {
41
+ var _a, _b;
42
+ const isFlutter = isFlutterApp();
43
+ if (!window.top && !isFlutter) {
44
+ return;
45
+ }
46
+ const hostAppOrigin = (_a = window.flipBridgeOptions) === null || _a === void 0 ? void 0 : _a.hostAppOrigin;
47
+ if (!hostAppOrigin) {
48
+ throw Error(`Please call 'initFlipBridge'.`);
49
+ }
50
+ if (isFlutter) {
51
+ window.FlipFlutter.postMessage(JSON.stringify(message));
52
+ }
53
+ else {
54
+ (_b = window.top) === null || _b === void 0 ? void 0 : _b.postMessage(message, hostAppOrigin);
55
+ }
56
+ log("postMessage", {
57
+ message,
58
+ isFlutter,
59
+ targetOrigin: hostAppOrigin,
60
+ });
61
+ }
62
+ function makeRequest(request) {
63
+ return new Promise((resolve, reject) => {
64
+ const handler = getRequestHandler(request, resolve, reject);
65
+ window.addEventListener("message", handler);
66
+ postMessage(request);
67
+ });
68
+ }
69
+ function getRequestHandler(request, resolve, reject) {
70
+ const handler = (event) => {
71
+ if (!isResponse(event.data) || event.data.id !== request.id) {
72
+ return;
73
+ }
74
+ if (!isAllowedOrigin(event.origin)) {
75
+ reject({
76
+ code: BridgeErrorCode.FORBIDDEN_ORIGIN,
77
+ });
78
+ return;
79
+ }
80
+ log("handleResponse", event.data);
81
+ window.removeEventListener("message", handler);
82
+ if (event.data.error) {
83
+ reject(event.data.error);
84
+ }
85
+ else {
86
+ resolve(event.data.result);
87
+ }
88
+ };
89
+ return handler;
90
+ }
91
+ function isResponse(message) {
92
+ return (typeof message === "object" &&
93
+ "id" in message &&
94
+ ("result" in message || "error" in message));
95
+ }
96
+ function isAllowedOrigin(origin) {
97
+ var _a;
98
+ if (isFlutterApp()) {
99
+ return true;
100
+ }
101
+ const hostAppOrigin = (_a = window.flipBridgeOptions) === null || _a === void 0 ? void 0 : _a.hostAppOrigin;
102
+ return origin === hostAppOrigin;
103
+ }
104
+
105
+ async function createDialog(params) {
106
+ const request = {
107
+ id: v4(),
108
+ method: BridgeMethod.CREATE_DIALOG,
109
+ params,
110
+ };
111
+ const result = await makeRequest(request);
112
+ if (!result) {
113
+ return;
114
+ }
115
+ return {
116
+ id: params.id,
117
+ open: async () => openDialog({ id: params.id }),
118
+ close: async () => closeDialog({ id: params.id }),
119
+ destroy: async () => destroyDialog({ id: params.id }),
120
+ };
121
+ }
122
+ async function openDialog(params) {
123
+ const request = {
124
+ id: v4(),
125
+ method: BridgeMethod.OPEN_DIALOG,
126
+ params,
127
+ };
128
+ return makeRequest(request);
129
+ }
130
+ async function closeDialog(params) {
131
+ const request = {
132
+ id: v4(),
133
+ method: BridgeMethod.CLOSE_DIALOG,
134
+ params,
135
+ };
136
+ return makeRequest(request);
137
+ }
138
+ async function destroyDialog(params) {
139
+ const request = {
140
+ id: v4(),
141
+ method: BridgeMethod.DESTROY_DIALOG,
142
+ params,
143
+ };
144
+ return makeRequest(request);
145
+ }
146
+
147
+ function download(fileName, fileType, url, dataUrl) {
148
+ const request = {
149
+ id: v4(),
150
+ method: BridgeMethod.DOWNLOAD,
151
+ params: {
152
+ fileName,
153
+ fileType,
154
+ url,
155
+ dataUrl,
156
+ },
157
+ };
158
+ return makeRequest(request);
159
+ }
160
+
161
+ var BridgeEventType;
162
+ (function (BridgeEventType) {
163
+ BridgeEventType["NAVIGATION_END"] = "NAVIGATION_END";
164
+ BridgeEventType["PRIMARY_ACTION_CLICK"] = "PRIMARY_ACTION_CLICK";
165
+ BridgeEventType["LANG_CHANGE"] = "LANG_CHANGE";
166
+ BridgeEventType["SECONDARY_ACTION_CLICK"] = "SECONDARY_ACTION_CLICK";
167
+ BridgeEventType["THEME_CHANGE"] = "THEME_CHANGE";
168
+ BridgeEventType["TITLE_CHANGE"] = "TITLE_CHANGE";
169
+ })(BridgeEventType || (BridgeEventType = {}));
170
+
171
+ async function subscribe(type, callback, options) {
172
+ const subscriptionId = (options === null || options === void 0 ? void 0 : options.id) || v4();
173
+ const subscribeRequest = {
174
+ id: v4(),
175
+ method: BridgeMethod.SUBSCRIBE,
176
+ params: { id: subscriptionId, type },
177
+ };
178
+ const eventHandler = (event) => {
179
+ if (!isAllowedOrigin(event.origin) ||
180
+ !isEvent(event.data) ||
181
+ event.data.type !== type ||
182
+ event.data.id !== subscriptionId) {
183
+ return;
184
+ }
185
+ log("handleEvent", event.data);
186
+ callback(event.data);
187
+ };
188
+ window.addEventListener("message", eventHandler);
189
+ const subscribed = await makeRequest(subscribeRequest);
190
+ if (!subscribed) {
191
+ window.removeEventListener("message", eventHandler);
192
+ throw new Error(`Could not subscribe to event "${type}".`);
193
+ }
194
+ return async () => {
195
+ const unsubscribeRequest = {
196
+ id: v4(),
197
+ method: BridgeMethod.UNSUBSCRIBE,
198
+ params: { id: subscriptionId, type },
199
+ };
200
+ await makeRequest(unsubscribeRequest);
201
+ window.removeEventListener("message", eventHandler);
202
+ };
203
+ }
204
+ function isEvent(message) {
205
+ return (typeof message === "object" &&
206
+ "type" in message &&
207
+ Object.values(BridgeEventType).includes(message.type));
208
+ }
209
+
210
+ function getAvailableLangs() {
211
+ const request = {
212
+ id: v4(),
213
+ method: BridgeMethod.GET_AVAILABLE_LANGS,
214
+ };
215
+ return makeRequest(request);
216
+ }
217
+ function getLang() {
218
+ const request = {
219
+ id: v4(),
220
+ method: BridgeMethod.GET_LANG,
221
+ };
222
+ return makeRequest(request);
223
+ }
224
+
225
+ async function createModal(params) {
226
+ const request = {
227
+ id: v4(),
228
+ method: BridgeMethod.CREATE_MODAL,
229
+ params,
230
+ };
231
+ const result = await makeRequest(request);
232
+ if (!result) {
233
+ return;
234
+ }
235
+ return {
236
+ id: params.id,
237
+ open: async () => openModal({ id: params.id }),
238
+ close: async () => closeModal({ id: params.id }),
239
+ destroy: async () => destroyModal({ id: params.id }),
240
+ };
241
+ }
242
+ async function openModal(params) {
243
+ const request = {
244
+ id: v4(),
245
+ method: BridgeMethod.OPEN_MODAL,
246
+ params,
247
+ };
248
+ return makeRequest(request);
249
+ }
250
+ async function closeModal(params) {
251
+ const request = {
252
+ id: v4(),
253
+ method: BridgeMethod.CLOSE_MODAL,
254
+ params,
255
+ };
256
+ return makeRequest(request);
257
+ }
258
+ async function destroyModal(params) {
259
+ const request = {
260
+ id: v4(),
261
+ method: BridgeMethod.DESTROY_MODAL,
262
+ params,
263
+ };
264
+ return makeRequest(request);
265
+ }
266
+
267
+ function navigate(path) {
268
+ const request = {
269
+ id: v4(),
270
+ method: BridgeMethod.NAVIGATE,
271
+ params: { path },
272
+ };
273
+ return makeRequest(request);
274
+ }
275
+
276
+ function getTheme() {
277
+ const request = {
278
+ id: v4(),
279
+ method: BridgeMethod.GET_THEME,
280
+ };
281
+ return makeRequest(request);
282
+ }
283
+ function setTheme(theme) {
284
+ const request = {
285
+ id: v4(),
286
+ method: BridgeMethod.SET_THEME,
287
+ params: { theme },
288
+ };
289
+ return makeRequest(request);
290
+ }
291
+
292
+ async function showToast(params) {
293
+ const request = {
294
+ id: v4(),
295
+ method: BridgeMethod.SHOW_TOAST,
296
+ params,
297
+ };
298
+ return await makeRequest(request);
299
+ }
300
+
301
+ function initFlipBridge(options) {
302
+ if (window.flipBridgeOptions) {
303
+ console.warn(`'initFlipBridge' has already been called.`);
304
+ return;
305
+ }
306
+ window.flipBridgeOptions = options;
307
+ }
308
+
309
+ export { BridgeErrorCode, BridgeEventType, BridgeMethod, closeDialog, closeModal, createDialog, createModal, destroyDialog, destroyModal, download, getAvailableLangs, getLang, getTheme, initFlipBridge, isEvent, navigate, openDialog, openModal, setTheme, showToast, subscribe };
310
+ //# sourceMappingURL=index.mjs.map