@myop/sdk 0.4.0-beta.1 → 0.4.0-beta.3

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 (35) hide show
  1. package/dist/bundled-declarations.d.ts +35 -0
  2. package/dist/cjs/_IframeSDK.3faa31eb.min.js +1 -0
  3. package/dist/cjs/{_IframeSDK.158994c9.js → _IframeSDK.c2e3efb9.js} +89 -16
  4. package/dist/cjs/_IframeSDK.c2e3efb9.js.map +7 -0
  5. package/dist/cjs/{_WebComponentSDK.ca9d238e.js → _WebComponentSDK.3728ca8b.js} +39 -13
  6. package/dist/cjs/_WebComponentSDK.3728ca8b.js.map +7 -0
  7. package/dist/cjs/_WebComponentSDK.e517f1a4.min.js +1 -0
  8. package/dist/cjs/_hostSDK.48b3ff7a.min.js +1 -0
  9. package/dist/cjs/{_hostSDK.3c04ba71.js → _hostSDK.94744d97.js} +39 -13
  10. package/dist/cjs/_hostSDK.94744d97.js.map +7 -0
  11. package/dist/cjs/myop_sdk.js +11 -11
  12. package/dist/cjs/myop_sdk.js.map +1 -1
  13. package/dist/cjs/myop_sdk.min.js +1 -1
  14. package/dist/cjs-bundled/myop_sdk.bundled.js +91 -17
  15. package/dist/cjs-bundled/myop_sdk.bundled.js.map +2 -2
  16. package/dist/cjs-bundled/myop_sdk.bundled.min.js +1 -1
  17. package/dist/module/Iframe/IframeSDK.d.ts +32 -0
  18. package/dist/module/Iframe/index.js +90 -17
  19. package/dist/module/Iframe/index.js.map +2 -2
  20. package/dist/module/SDK.js +91 -17
  21. package/dist/module/SDK.js.map +2 -2
  22. package/dist/module/embeddedSDK.js +1 -1
  23. package/dist/module/host/components/IMyopComponent.d.ts +3 -0
  24. package/dist/module/host/embeddedSDK.js +1 -1
  25. package/dist/module/host/index.js +40 -14
  26. package/dist/module/host/index.js.map +2 -2
  27. package/dist/module/webcomponent/index.js +40 -14
  28. package/dist/module/webcomponent/index.js.map +2 -2
  29. package/package.json +1 -1
  30. package/dist/cjs/_IframeSDK.158994c9.js.map +0 -7
  31. package/dist/cjs/_IframeSDK.941e9a62.min.js +0 -1
  32. package/dist/cjs/_WebComponentSDK.5f41b3b7.min.js +0 -1
  33. package/dist/cjs/_WebComponentSDK.ca9d238e.js.map +0 -7
  34. package/dist/cjs/_hostSDK.23c64e1b.min.js +0 -1
  35. package/dist/cjs/_hostSDK.3c04ba71.js.map +0 -7
@@ -1010,6 +1010,7 @@ var BaseMyopComponent = class {
1010
1010
  setTimeout(() => {
1011
1011
  if (!this.isInitiated && this._whenInitiatedReject && !this._markedForDisposed) {
1012
1012
  this._whenInitiatedReject("timeout_".concat(timeout, " ").concat(this.id));
1013
+ this.dispose();
1013
1014
  }
1014
1015
  }, timeout);
1015
1016
  this.initiated().then(() => {
@@ -1093,19 +1094,27 @@ var BaseMyopComponent = class {
1093
1094
  };
1094
1095
  }
1095
1096
  }
1097
+ /** Runs the 'onDispose' handlers once. hostSDK registers the one that unregisters
1098
+ * this component, so it has to run on EVERY dispose path, initiated or not. */
1099
+ runDisposeHandlers() {
1100
+ const onDisposeHandlers = this.messageHandlers["onDispose"];
1101
+ if (onDisposeHandlers) {
1102
+ onDisposeHandlers.forEach((disposeHandler) => {
1103
+ disposeHandler(null);
1104
+ });
1105
+ }
1106
+ }
1096
1107
  dispose() {
1097
1108
  this.markedForDisposed = true;
1098
1109
  if (!this.isInitiated) {
1110
+ this.runDisposeHandlers();
1111
+ this.messageHandlers = {};
1112
+ this.id += "_disposed";
1099
1113
  return;
1100
1114
  }
1101
1115
  console.log("disposing component", this.id);
1102
1116
  this.send(new DisposeMessage());
1103
- const onDisposeHandlers = this.messageHandlers["onDispose"];
1104
- if (onDisposeHandlers) {
1105
- onDisposeHandlers.forEach((disposeHandler) => {
1106
- disposeHandler(null);
1107
- });
1108
- }
1117
+ this.runDisposeHandlers();
1109
1118
  this.messageHandlers = {};
1110
1119
  this.id += "_disposed";
1111
1120
  this.isInitiated = false;
@@ -1508,8 +1517,13 @@ var createRefComponent = async (ref, componentConfig, components, options) => {
1508
1517
  return new Promise(async (resolve, reject) => {
1509
1518
  const refComponent = new MyopRefComponent(componentConfig.type, component, options);
1510
1519
  components.push(refComponent);
1520
+ const unregister = () => {
1521
+ const at = components.indexOf(refComponent);
1522
+ if (at !== -1) components.splice(at, 1);
1523
+ };
1511
1524
  await component.initiated();
1512
1525
  const timeout = setTimeout(() => {
1526
+ unregister();
1513
1527
  reject("timeout");
1514
1528
  }, 5e3);
1515
1529
  component.send(new CreateRefComponentMessage(
@@ -1522,11 +1536,13 @@ var createRefComponent = async (ref, componentConfig, components, options) => {
1522
1536
  async (message) => {
1523
1537
  clearTimeout(timeout);
1524
1538
  if (message.failed) {
1539
+ unregister();
1525
1540
  reject("CreateRefComponentMessage failed");
1526
1541
  return;
1527
1542
  }
1528
1543
  const implementationComponent = components.find((c) => c.id == refComponent.id);
1529
- if (implementationComponent !== refComponent) {
1544
+ if (implementationComponent && implementationComponent !== refComponent) {
1545
+ unregister();
1530
1546
  component.refs[ref.refConfig.name] = implementationComponent;
1531
1547
  resolve(implementationComponent);
1532
1548
  return;
@@ -1840,7 +1856,8 @@ var MyopIframeComponent = class extends BaseMyopComponent {
1840
1856
  this.IframeElement.style.width = "100%";
1841
1857
  this.setHeightBasedOnScrollHeight();
1842
1858
  observerCleanup = this.send(new SetResizeObserverMessage());
1843
- }).catch(() => {
1859
+ }).catch((e) => {
1860
+ console.warn("[MyopIframeComponent] auto-height skipped for ".concat(this.id, ": ").concat(e));
1844
1861
  });
1845
1862
  return cleanup;
1846
1863
  });
@@ -1889,7 +1906,7 @@ var MyopIframeComponent = class extends BaseMyopComponent {
1889
1906
  return cleanupHandler;
1890
1907
  });
1891
1908
  __publicField(this, "dispose", () => {
1892
- var _a;
1909
+ var _a, _b;
1893
1910
  (_a = this._bridgeSizeCleanup) == null ? void 0 : _a.call(this);
1894
1911
  if (this._autoSizeCleanup) {
1895
1912
  this._autoSizeCleanup();
@@ -1902,7 +1919,7 @@ var MyopIframeComponent = class extends BaseMyopComponent {
1902
1919
  if (this.cleanupInspect)
1903
1920
  this.cleanupInspect();
1904
1921
  super.dispose();
1905
- this.IframeElement.parentNode.removeChild(this.IframeElement);
1922
+ (_b = this.IframeElement.parentNode) == null ? void 0 : _b.removeChild(this.IframeElement);
1906
1923
  });
1907
1924
  this.element = this.IframeElement;
1908
1925
  this._lastData = options == null ? void 0 : options.data;
@@ -2169,7 +2186,7 @@ var WebcomponentLoader = class extends BaseMyopLoader {
2169
2186
  };
2170
2187
 
2171
2188
  // version:myop-sdk-version
2172
- var myop_sdk_version_default = "0.4.0-beta.1";
2189
+ var myop_sdk_version_default = "0.4.0-beta.3";
2173
2190
 
2174
2191
  // src/helpers/deliveryStore.ts
2175
2192
  var DB_NAME = "myop-delivery";
@@ -3302,7 +3319,12 @@ var HostSDK = class {
3302
3319
  }
3303
3320
  const myopMessage = event.data;
3304
3321
  if (myopMessage.messageType === MyopMessages.InitRequest) {
3305
- this.components2init.forEach((component2) => {
3322
+ const fromAskingFrame = this.components2init.filter((component2) => {
3323
+ const element = component2.element;
3324
+ return (element == null ? void 0 : element.nodeName) === "IFRAME" && element.contentWindow === event.source;
3325
+ });
3326
+ const targets = fromAskingFrame.length ? fromAskingFrame : this.components2init;
3327
+ targets.forEach((component2) => {
3306
3328
  component2.send(new InitMessage(component2.id));
3307
3329
  });
3308
3330
  return;
@@ -3517,14 +3539,18 @@ var HostSDK = class {
3517
3539
  throw new Error('no loader "'.concat(selectedSkin.loader.type, '" was found for component'));
3518
3540
  }
3519
3541
  let component = await componentLoader.load(componentConfig.type, selectedSkin, container, options);
3520
- if (!component.isInitiated)
3542
+ if (!component.isInitiated) {
3521
3543
  this.components2init.push(component);
3544
+ }
3522
3545
  component.bind("onDispose", () => {
3523
3546
  this.components = this.components.filter((c) => c !== component);
3524
3547
  this.components2init = this.components2init.filter((c) => c !== component);
3525
3548
  return true;
3526
3549
  });
3527
3550
  this.components.push(component);
3551
+ if (!component.isInitiated) {
3552
+ component.send(new InitMessage(component.id));
3553
+ }
3528
3554
  if (!options || options.connectProps !== false) {
3529
3555
  component = connectProps(component, componentConfig.type.props, selectedSkin);
3530
3556
  }