@monterosa/sdk-launcher-kit 0.18.9 → 0.18.10

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.
@@ -1,4 +1,4 @@
1
- import { Logger, Sdk, getSdk, LogLevel } from '@monterosa/sdk-core';
1
+ import { Logger, getSdk, LogLevel, Sdk } from '@monterosa/sdk-core';
2
2
  import { createError, getGlobal, Emitter, getErrorMessage, subscribe, delay, throttle } from '@monterosa/sdk-util';
3
3
  import { v4 } from 'uuid';
4
4
  import { fetchListings } from '@monterosa/sdk-interact-interop';
@@ -161,6 +161,10 @@ var Action;
161
161
  * Notifies child Experience about the request to load more data
162
162
  */
163
163
  Action["OnMoreDataRequested"] = "onMoreDataRequested";
164
+ /**
165
+ * Notifies about a share request
166
+ */
167
+ Action["OnShare"] = "onShare";
164
168
  })(Action || (Action = {}));
165
169
  /**
166
170
  * @internal
@@ -230,7 +234,7 @@ var QueryParam;
230
234
  *
231
235
  * More details on the license can be found at https://www.monterosa.co/sdk/license
232
236
  */
233
- var _a$2;
237
+ var _a$3;
234
238
  /**
235
239
  * Defines a set of error codes that may be encountered when using the
236
240
  * Launcher Kit bridge
@@ -269,14 +273,14 @@ var BridgeError;
269
273
  */
270
274
  BridgeError["RequestTimeoutError"] = "request_timeout_error";
271
275
  })(BridgeError || (BridgeError = {}));
272
- var BridgeErrorMessages = (_a$2 = {},
273
- _a$2[BridgeError.InvalidRequestTimeoutError] = function () {
276
+ var BridgeErrorMessages = (_a$3 = {},
277
+ _a$3[BridgeError.InvalidRequestTimeoutError] = function () {
274
278
  return 'Request timeout must be greater than 0';
275
279
  },
276
- _a$2[BridgeError.RequestTimeoutError] = function (action, timeout) {
280
+ _a$3[BridgeError.RequestTimeoutError] = function (action, timeout) {
277
281
  return "Request timeout: action \"" + action + "\" did not receive a response within " + timeout + "ms";
278
282
  },
279
- _a$2);
283
+ _a$3);
280
284
 
281
285
  /**
282
286
  * @license
@@ -346,7 +350,7 @@ function isMessage(message) {
346
350
  *
347
351
  * More details on the license can be found at https://www.monterosa.co/sdk/license
348
352
  */
349
- var _a$1, _b$1, _c$1, _d$1;
353
+ var _a$2, _b$1, _c$1, _d$1;
350
354
  var _e, _f, _g;
351
355
  var globals$2 = getGlobal();
352
356
  var receiveMessage = function (message) {
@@ -378,7 +382,7 @@ function handleWindowMessage(_a) {
378
382
  */
379
383
  // The Monterosa SDK namespace may already exist, either because it was created
380
384
  // by a native SDK or by another web app using the JS SDK from the same scope.
381
- (_a$1 = globals$2.monterosaSdk) !== null && _a$1 !== void 0 ? _a$1 : (globals$2.monterosaSdk = {
385
+ (_a$2 = globals$2.monterosaSdk) !== null && _a$2 !== void 0 ? _a$2 : (globals$2.monterosaSdk = {
382
386
  initialised: false,
383
387
  emitter: new Emitter(),
384
388
  receiveMessage: receiveMessage,
@@ -407,13 +411,13 @@ if (!globals$2.monterosaSdk.initialised) {
407
411
  *
408
412
  * More details on the license can be found at https://www.monterosa.co/sdk/license
409
413
  */
410
- var _a, _b, _c, _d;
414
+ var _a$1, _b, _c, _d;
411
415
  var globals$1 = getGlobal();
412
416
  /**
413
417
  * @internal
414
418
  */
415
419
  var IFRAME_ID_PREFIX = 'micBridge';
416
- var IS_IOS = !!((_c = (_b = (_a = globals$1.webkit) === null || _a === void 0 ? void 0 : _a.messageHandlers) === null || _b === void 0 ? void 0 : _b.monterosaSdk) === null || _c === void 0 ? void 0 : _c.postMessage);
420
+ var IS_IOS = !!((_c = (_b = (_a$1 = globals$1.webkit) === null || _a$1 === void 0 ? void 0 : _a$1.messageHandlers) === null || _b === void 0 ? void 0 : _b.monterosaSdk) === null || _c === void 0 ? void 0 : _c.postMessage);
417
421
  var IS_ANDROID = !!((_d = globals$1.monterosaSdk) === null || _d === void 0 ? void 0 : _d.postMessage);
418
422
  var IS_WEB = globals$1.self !== globals$1.parent;
419
423
  /**
@@ -1055,7 +1059,7 @@ function unstashStyles(element) {
1055
1059
  element.removeAttribute('data-stash');
1056
1060
  }
1057
1061
 
1058
- var version = "0.18.9";
1062
+ var version = "0.18.10";
1059
1063
 
1060
1064
  /**
1061
1065
  * @license
@@ -1563,5 +1567,158 @@ function reportExperienceSizeChanges(element) {
1563
1567
  return function () { return observer.unobserve(element); };
1564
1568
  }
1565
1569
 
1566
- export { Action, VERSION$1 as BRIDGE_VERSION, BridgeError, BridgeImpl, ExperienceImpl, ParentApplicationImpl, QueryParam, Source, VERSION, embed, enableLogging, getBridge, getExperience, getParentApplication, getParentBridge, isAutoresizesHeight, onMessage, onMoreDataRequested, onReady, onSdkMessage, registerEmbedHook, reportExperienceSizeChanges, requestMoreData, respondToMessage, respondToSdkMessage, sendExperienceSize, sendExperienceSizeThrottled, sendFinishedLoadingUI, sendMessage, sendReady, sendRequest, sendSdkMessage, sendSdkRequest, setRequestTimeout, shouldHideHeaderAndFooter, unmount };
1570
+ /**
1571
+ * @license
1572
+ * share.ts
1573
+ * launcher-kit
1574
+ *
1575
+ * Copyright © 2026 Monterosa Productions Limited. All rights reserved.
1576
+ *
1577
+ * More details on the license can be found at https://www.monterosa.co/sdk/license
1578
+ */
1579
+ var _a;
1580
+ /**
1581
+ * Share requests block on the native share tray which waits for user
1582
+ * interaction (composing a message, picking a target app, etc.). The default
1583
+ * bridge timeout of 20 seconds is too short for this. 5 minutes gives users
1584
+ * ample time while still acting as a safety net against lost messages.
1585
+ */
1586
+ var SHARE_REQUEST_TIMEOUT = 300000;
1587
+ var ShareError;
1588
+ (function (ShareError) {
1589
+ ShareError["ParentAppError"] = "parent_app_error";
1590
+ ShareError["ShareFailed"] = "share_failed";
1591
+ })(ShareError || (ShareError = {}));
1592
+ var ShareErrorMessages = (_a = {},
1593
+ _a[ShareError.ParentAppError] = function (error) {
1594
+ return "Parent application error: " + error;
1595
+ },
1596
+ _a[ShareError.ShareFailed] = function (error) { return "Share failed: " + error; },
1597
+ _a);
1598
+ /**
1599
+ * Executes share using the Web Share API.
1600
+ *
1601
+ * @internal
1602
+ */
1603
+ function executeShare(data) {
1604
+ return __awaiter(this, void 0, void 0, function () {
1605
+ var err_1;
1606
+ return __generator(this, function (_a) {
1607
+ switch (_a.label) {
1608
+ case 0:
1609
+ _a.trys.push([0, 2, , 3]);
1610
+ return [4 /*yield*/, navigator.share({
1611
+ url: data.url,
1612
+ title: data.title,
1613
+ text: data.description,
1614
+ })];
1615
+ case 1:
1616
+ _a.sent();
1617
+ return [2 /*return*/, 'success'];
1618
+ case 2:
1619
+ err_1 = _a.sent();
1620
+ if (err_1 instanceof DOMException && err_1.name === 'AbortError') {
1621
+ return [2 /*return*/, 'cancelled'];
1622
+ }
1623
+ throw createError(ShareError.ShareFailed, ShareErrorMessages, getErrorMessage(err_1));
1624
+ case 3: return [2 /*return*/];
1625
+ }
1626
+ });
1627
+ });
1628
+ }
1629
+ /**
1630
+ * Initiates a share action. When running inside a parent application,
1631
+ * the share request is sent to the parent via the communication bridge.
1632
+ * When running standalone, `navigator.share()` is called directly.
1633
+ *
1634
+ * @param data - The data to share
1635
+ */
1636
+ function share(data) {
1637
+ return __awaiter(this, void 0, void 0, function () {
1638
+ var parentApp, response;
1639
+ return __generator(this, function (_a) {
1640
+ switch (_a.label) {
1641
+ case 0:
1642
+ parentApp = getParentApplication();
1643
+ if (!(parentApp !== null)) return [3 /*break*/, 2];
1644
+ return [4 /*yield*/, sendSdkRequest(parentApp, Action.OnShare, data, SHARE_REQUEST_TIMEOUT)];
1645
+ case 1:
1646
+ response = _a.sent();
1647
+ if (response.payload.result === 'failure') {
1648
+ throw createError(ShareError.ParentAppError, ShareErrorMessages, response.payload.message);
1649
+ }
1650
+ // 'success' and 'cancelled' both resolve silently
1651
+ return [2 /*return*/];
1652
+ case 2: return [4 /*yield*/, executeShare(data)];
1653
+ case 3:
1654
+ _a.sent();
1655
+ return [2 /*return*/];
1656
+ }
1657
+ });
1658
+ });
1659
+ }
1660
+ /**
1661
+ * Registers a callback to be called when a share request is received
1662
+ * from a child Experience.
1663
+ *
1664
+ * @param experience - The Experience instance to listen on
1665
+ * @param callback - Called with ShareData when a share request is received
1666
+ * @returns Unsubscribe function
1667
+ */
1668
+ function onShare(experience, callback) {
1669
+ return onSdkMessage(experience, function (message) {
1670
+ if (message.action === Action.OnShare) {
1671
+ callback(message.payload);
1672
+ }
1673
+ });
1674
+ }
1675
+ function onExperienceEmbed(experience) {
1676
+ var _this = this;
1677
+ return onSdkMessage(experience, function (message) { return __awaiter(_this, void 0, void 0, function () {
1678
+ var parentApp, payload, response, result, err_2;
1679
+ return __generator(this, function (_a) {
1680
+ switch (_a.label) {
1681
+ case 0:
1682
+ if (message.action !== Action.OnShare) {
1683
+ return [2 /*return*/];
1684
+ }
1685
+ _a.label = 1;
1686
+ case 1:
1687
+ _a.trys.push([1, 6, , 7]);
1688
+ parentApp = getParentApplication();
1689
+ payload = void 0;
1690
+ if (!(parentApp !== null)) return [3 /*break*/, 3];
1691
+ return [4 /*yield*/, sendSdkRequest(parentApp, Action.OnShare, message.payload, SHARE_REQUEST_TIMEOUT)];
1692
+ case 2:
1693
+ response = _a.sent();
1694
+ payload = response.payload;
1695
+ return [3 /*break*/, 5];
1696
+ case 3: return [4 /*yield*/, executeShare(message.payload)];
1697
+ case 4:
1698
+ result = _a.sent();
1699
+ payload = {
1700
+ result: result,
1701
+ message: result === 'success' ? 'Share successful' : 'Share cancelled',
1702
+ data: {},
1703
+ };
1704
+ _a.label = 5;
1705
+ case 5:
1706
+ respondToSdkMessage(experience, message, payload);
1707
+ return [3 /*break*/, 7];
1708
+ case 6:
1709
+ err_2 = _a.sent();
1710
+ respondToSdkMessage(experience, message, {
1711
+ result: 'failure',
1712
+ message: getErrorMessage(err_2),
1713
+ data: {},
1714
+ });
1715
+ return [3 /*break*/, 7];
1716
+ case 7: return [2 /*return*/];
1717
+ }
1718
+ });
1719
+ }); });
1720
+ }
1721
+ registerEmbedHook(onExperienceEmbed);
1722
+
1723
+ export { Action, VERSION$1 as BRIDGE_VERSION, BridgeError, BridgeImpl, ExperienceImpl, ParentApplicationImpl, QueryParam, ShareError, ShareErrorMessages, Source, VERSION, embed, enableLogging, executeShare, getBridge, getExperience, getParentApplication, getParentBridge, isAutoresizesHeight, onMessage, onMoreDataRequested, onReady, onSdkMessage, onShare, registerEmbedHook, reportExperienceSizeChanges, requestMoreData, respondToMessage, respondToSdkMessage, sendExperienceSize, sendExperienceSizeThrottled, sendFinishedLoadingUI, sendMessage, sendReady, sendRequest, sendSdkMessage, sendSdkRequest, setRequestTimeout, share, shouldHideHeaderAndFooter, unmount };
1567
1724
  //# sourceMappingURL=index.esm5.js.map