@myop/sdk 0.3.24 → 0.3.26

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 (41) hide show
  1. package/dist/bundled-declarations.d.ts +23 -0
  2. package/dist/cjs/_IframeSDK.8724e6a9.min.js +1 -0
  3. package/dist/cjs/{_IframeSDK.398c9caf.js → _IframeSDK.f8e27dc0.js} +63 -14
  4. package/dist/cjs/_IframeSDK.f8e27dc0.js.map +7 -0
  5. package/dist/cjs/_MyopHelpers.6fb8c382.min.js +1 -0
  6. package/dist/cjs/{_MyopHelpers.71a8a09b.js → _MyopHelpers.859b9bc8.js} +37 -0
  7. package/dist/cjs/{_MyopHelpers.71a8a09b.js.map → _MyopHelpers.859b9bc8.js.map} +2 -2
  8. package/dist/cjs/_WebComponentSDK.9222ca02.min.js +1 -0
  9. package/dist/cjs/{_WebComponentSDK.c8c6ebc0.js → _WebComponentSDK.f8bc2f3a.js} +63 -14
  10. package/dist/cjs/{_WebComponentSDK.c8c6ebc0.js.map → _WebComponentSDK.f8bc2f3a.js.map} +2 -2
  11. package/dist/cjs/{_hostSDK.6d5f8f31.js → _hostSDK.9c5e7767.js} +63 -14
  12. package/dist/cjs/_hostSDK.9c5e7767.js.map +7 -0
  13. package/dist/cjs/_hostSDK.e2851f6a.min.js +1 -0
  14. package/dist/cjs/myop_sdk.js +14 -14
  15. package/dist/cjs/myop_sdk.js.map +1 -1
  16. package/dist/cjs/myop_sdk.min.js +1 -1
  17. package/dist/cjs-bundled/myop_sdk.bundled.js +70 -16
  18. package/dist/cjs-bundled/myop_sdk.bundled.js.map +3 -3
  19. package/dist/cjs-bundled/myop_sdk.bundled.min.js +1 -1
  20. package/dist/module/Iframe/index.js +64 -15
  21. package/dist/module/Iframe/index.js.map +2 -2
  22. package/dist/module/SDK.js +70 -16
  23. package/dist/module/SDK.js.map +3 -3
  24. package/dist/module/embeddedSDK.js +1 -1
  25. package/dist/module/helpers/CloudRepository.d.ts +14 -0
  26. package/dist/module/helpers/cloudRepositoryHelpers.d.ts +1 -0
  27. package/dist/module/helpers/index.js +37 -1
  28. package/dist/module/helpers/index.js.map +2 -2
  29. package/dist/module/host/embeddedSDK.js +1 -1
  30. package/dist/module/host/hostSDK.d.ts +8 -0
  31. package/dist/module/host/index.js +64 -15
  32. package/dist/module/host/index.js.map +2 -2
  33. package/dist/module/webcomponent/index.js +64 -15
  34. package/dist/module/webcomponent/index.js.map +2 -2
  35. package/package.json +1 -1
  36. package/dist/cjs/_IframeSDK.398c9caf.js.map +0 -7
  37. package/dist/cjs/_IframeSDK.b1090eff.min.js +0 -1
  38. package/dist/cjs/_MyopHelpers.19dc0df3.min.js +0 -1
  39. package/dist/cjs/_WebComponentSDK.fc58ea5a.min.js +0 -1
  40. package/dist/cjs/_hostSDK.2c80162b.min.js +0 -1
  41. package/dist/cjs/_hostSDK.6d5f8f31.js.map +0 -7
@@ -1530,16 +1530,12 @@ var MyopIframeComponent = class extends BaseMyopComponent {
1530
1530
  if (!shouldAutoWidth && !shouldAutoHeight) {
1531
1531
  iframe.style.width = typeof resolvedExplicitWidth === "number" ? "".concat(resolvedExplicitWidth, "px") : "100%";
1532
1532
  iframe.style.height = typeof resolvedExplicitHeight === "number" ? "".concat(resolvedExplicitHeight, "px") : "100%";
1533
- const explicitWidthPx = typeof resolvedExplicitWidth === "number" ? resolvedExplicitWidth : void 0;
1534
- const explicitHeightPx = typeof resolvedExplicitHeight === "number" ? resolvedExplicitHeight : void 0;
1535
- if (explicitWidthPx !== void 0 || explicitHeightPx !== void 0) {
1536
- (_g = opts == null ? void 0 : opts.onSizeChange) == null ? void 0 : _g.call(opts, {
1537
- width: explicitWidthPx,
1538
- height: explicitHeightPx,
1539
- autoSizingWidth: false,
1540
- autoSizingHeight: false
1541
- });
1542
- }
1533
+ (_g = opts == null ? void 0 : opts.onSizeChange) == null ? void 0 : _g.call(opts, {
1534
+ width: typeof resolvedExplicitWidth === "number" ? resolvedExplicitWidth : void 0,
1535
+ height: typeof resolvedExplicitHeight === "number" ? resolvedExplicitHeight : void 0,
1536
+ autoSizingWidth: false,
1537
+ autoSizingHeight: false
1538
+ });
1543
1539
  return;
1544
1540
  }
1545
1541
  const prevTransition = iframe.style.transition;
@@ -1562,10 +1558,22 @@ var MyopIframeComponent = class extends BaseMyopComponent {
1562
1558
  const prevMinWidth = container.style.minWidth;
1563
1559
  if (needsHeightCollapse) container.style.minHeight = "".concat(currentIframeHeight, "px");
1564
1560
  if (needsWidthCollapse) container.style.minWidth = "".concat(currentIframeWidth, "px");
1561
+ const measureStyle = contentDoc.createElement("style");
1562
+ measureStyle.id = "__myop_measure";
1563
+ const rules = [];
1564
+ if (needsHeightCollapse) {
1565
+ rules.push("height: auto !important", "min-height: 0 !important", "max-height: none !important");
1566
+ }
1567
+ if (needsWidthCollapse) {
1568
+ rules.push("width: auto !important", "min-width: 0 !important", "max-width: none !important");
1569
+ }
1570
+ measureStyle.textContent = "*, *::before, *::after { ".concat(rules.join("; "), "; flex-basis: auto !important; flex-grow: 0 !important; }");
1571
+ contentDoc.head.appendChild(measureStyle);
1565
1572
  if (needsHeightCollapse) iframe.style.height = "0px";
1566
1573
  if (needsWidthCollapse) iframe.style.width = "0px";
1567
1574
  contentWidth = Math.ceil(Math.max(contentDoc.documentElement.scrollWidth, contentDoc.body.scrollWidth, contentDoc.body.getBoundingClientRect().width));
1568
1575
  contentHeight = Math.ceil(Math.max(contentDoc.documentElement.scrollHeight, contentDoc.body.scrollHeight, contentDoc.body.getBoundingClientRect().height));
1576
+ measureStyle.remove();
1569
1577
  container.style.minHeight = prevMinHeight;
1570
1578
  container.style.minWidth = prevMinWidth;
1571
1579
  }
@@ -1886,7 +1894,7 @@ var WebcomponentLoader = class extends BaseMyopLoader {
1886
1894
  };
1887
1895
 
1888
1896
  // version:myop-sdk-version
1889
- var myop_sdk_version_default = "0.3.24";
1897
+ var myop_sdk_version_default = "0.3.26";
1890
1898
 
1891
1899
  // src/webcomponent/messageHandlers/BaseWebComponentMessageHandler.ts
1892
1900
  var BaseWebComponentMessageHandler = class extends BaseContextMessageHandler {
@@ -2343,10 +2351,19 @@ var HTMLComponentLoader = class extends BaseMyopLoader {
2343
2351
  const comp = new MyopIframeComponent(componentDefinition, skin, container, IframeElement, options);
2344
2352
  comp.sizeMeta = parsedSizeMeta;
2345
2353
  comp.initiated().then(() => {
2346
- comp.observeAutoSize({ forceAutoSize: true });
2347
- if (!(options == null ? void 0 : options.hidden)) {
2348
- comp.show();
2354
+ if ((options == null ? void 0 : options.autoSize) === false) {
2355
+ return;
2349
2356
  }
2357
+ let shown = false;
2358
+ comp.observeAutoSize({
2359
+ forceAutoSize: true,
2360
+ onSizeChange: () => {
2361
+ if (!shown && !(options == null ? void 0 : options.hidden)) {
2362
+ shown = true;
2363
+ comp.show();
2364
+ }
2365
+ }
2366
+ });
2350
2367
  });
2351
2368
  return comp;
2352
2369
  }
@@ -2533,6 +2550,7 @@ var _CloudRepository = class _CloudRepository {
2533
2550
  constructor(_baseUrl = "https://cloud.myop.dev") {
2534
2551
  this._baseUrl = _baseUrl;
2535
2552
  // v2 cache - keyed by componentId:env:preview|live
2553
+ // Each Promise is tagged with a `resolved` property after settling (see fetchComponentV2).
2536
2554
  __publicField(this, "variants", {});
2537
2555
  // Track which components were preloaded and with what params
2538
2556
  // Key: componentId, Value: { env, preview }
@@ -2633,6 +2651,7 @@ var _CloudRepository = class _CloudRepository {
2633
2651
  return;
2634
2652
  }
2635
2653
  const componentConfig = convertV2VariantToComponentConfig(variant);
2654
+ this.variants[cacheKey].resolved = componentConfig;
2636
2655
  resolve(componentConfig);
2637
2656
  } catch (e) {
2638
2657
  reject(e);
@@ -2642,6 +2661,36 @@ var _CloudRepository = class _CloudRepository {
2642
2661
  }
2643
2662
  return await this.variants[cacheKey];
2644
2663
  }
2664
+ /**
2665
+ * Synchronous version of fetchComponentV2 — returns the config only if
2666
+ * the fetch already completed, null otherwise.
2667
+ *
2668
+ * Uses the same `this.variants` cache that fetchComponentV2/preloadComponents
2669
+ * populate. Each cached Promise is tagged with a `.resolved` property when
2670
+ * it settles — this method just reads that property. No separate cache.
2671
+ *
2672
+ * Why this exists: React Native needs the config at render time to embed it
2673
+ * in the WebView HTML (can't await in useState). If preloadComponents ran
2674
+ * earlier and the fetch completed, this returns the result synchronously,
2675
+ * skipping the WEBVIEW_READY → fetch → inject round trip entirely.
2676
+ */
2677
+ getResolvedConfig(componentId, env, preview) {
2678
+ var _a;
2679
+ const preloaded = this.preloadedComponents[componentId];
2680
+ const hasExplicitParams = env !== void 0 || preview !== void 0;
2681
+ let resolvedEnv;
2682
+ let usePreview;
2683
+ if (!hasExplicitParams && preloaded) {
2684
+ resolvedEnv = preloaded.env;
2685
+ usePreview = preloaded.preview;
2686
+ } else {
2687
+ resolvedEnv = env || this._defaultEnv;
2688
+ const hasEffectiveEnv = env || this._envExplicitlySet;
2689
+ usePreview = preview === true ? true : preview === false ? false : !hasEffectiveEnv;
2690
+ }
2691
+ const cacheKey = "".concat(componentId, ":").concat(resolvedEnv, ":").concat(usePreview ? "preview" : "live");
2692
+ return ((_a = this.variants[cacheKey]) == null ? void 0 : _a.resolved) || null;
2693
+ }
2645
2694
  // ============ V1 Methods (Legacy) ============
2646
2695
  /**
2647
2696
  * Fetch a v1 component from a flow