@myop/sdk 0.4.0-beta.2 → 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 +29 -30
  2. package/dist/cjs/_IframeSDK.3faa31eb.min.js +1 -0
  3. package/dist/cjs/{_IframeSDK.a43cfa7d.js → _IframeSDK.c2e3efb9.js} +79 -57
  4. package/dist/cjs/_IframeSDK.c2e3efb9.js.map +7 -0
  5. package/dist/cjs/{_WebComponentSDK.0f6ef369.js → _WebComponentSDK.3728ca8b.js} +35 -12
  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.38fcc5b4.js → _hostSDK.94744d97.js} +35 -12
  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 +81 -58
  15. package/dist/cjs-bundled/myop_sdk.bundled.js.map +3 -3
  16. package/dist/cjs-bundled/myop_sdk.bundled.min.js +1 -1
  17. package/dist/module/Iframe/IframeSDK.d.ts +26 -30
  18. package/dist/module/Iframe/index.js +80 -58
  19. package/dist/module/Iframe/index.js.map +3 -3
  20. package/dist/module/SDK.js +81 -58
  21. package/dist/module/SDK.js.map +3 -3
  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 +36 -13
  26. package/dist/module/host/index.js.map +2 -2
  27. package/dist/module/webcomponent/index.js +36 -13
  28. package/dist/module/webcomponent/index.js.map +2 -2
  29. package/package.json +1 -1
  30. package/dist/cjs/_IframeSDK.8f08de4b.min.js +0 -1
  31. package/dist/cjs/_IframeSDK.a43cfa7d.js.map +0 -7
  32. package/dist/cjs/_WebComponentSDK.0f6ef369.js.map +0 -7
  33. package/dist/cjs/_WebComponentSDK.649e5e47.min.js +0 -1
  34. package/dist/cjs/_hostSDK.131fedc9.min.js +0 -1
  35. package/dist/cjs/_hostSDK.38fcc5b4.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;
@@ -1890,7 +1906,7 @@ var MyopIframeComponent = class extends BaseMyopComponent {
1890
1906
  return cleanupHandler;
1891
1907
  });
1892
1908
  __publicField(this, "dispose", () => {
1893
- var _a;
1909
+ var _a, _b;
1894
1910
  (_a = this._bridgeSizeCleanup) == null ? void 0 : _a.call(this);
1895
1911
  if (this._autoSizeCleanup) {
1896
1912
  this._autoSizeCleanup();
@@ -1903,7 +1919,7 @@ var MyopIframeComponent = class extends BaseMyopComponent {
1903
1919
  if (this.cleanupInspect)
1904
1920
  this.cleanupInspect();
1905
1921
  super.dispose();
1906
- this.IframeElement.parentNode.removeChild(this.IframeElement);
1922
+ (_b = this.IframeElement.parentNode) == null ? void 0 : _b.removeChild(this.IframeElement);
1907
1923
  });
1908
1924
  this.element = this.IframeElement;
1909
1925
  this._lastData = options == null ? void 0 : options.data;
@@ -2170,7 +2186,7 @@ var WebcomponentLoader = class extends BaseMyopLoader {
2170
2186
  };
2171
2187
 
2172
2188
  // version:myop-sdk-version
2173
- var myop_sdk_version_default = "0.4.0-beta.2";
2189
+ var myop_sdk_version_default = "0.4.0-beta.3";
2174
2190
 
2175
2191
  // src/helpers/deliveryStore.ts
2176
2192
  var DB_NAME = "myop-delivery";
@@ -3303,7 +3319,12 @@ var HostSDK = class {
3303
3319
  }
3304
3320
  const myopMessage = event.data;
3305
3321
  if (myopMessage.messageType === MyopMessages.InitRequest) {
3306
- 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) => {
3307
3328
  component2.send(new InitMessage(component2.id));
3308
3329
  });
3309
3330
  return;
@@ -3520,7 +3541,6 @@ var HostSDK = class {
3520
3541
  let component = await componentLoader.load(componentConfig.type, selectedSkin, container, options);
3521
3542
  if (!component.isInitiated) {
3522
3543
  this.components2init.push(component);
3523
- component.send(new InitMessage(component.id));
3524
3544
  }
3525
3545
  component.bind("onDispose", () => {
3526
3546
  this.components = this.components.filter((c) => c !== component);
@@ -3528,6 +3548,9 @@ var HostSDK = class {
3528
3548
  return true;
3529
3549
  });
3530
3550
  this.components.push(component);
3551
+ if (!component.isInitiated) {
3552
+ component.send(new InitMessage(component.id));
3553
+ }
3531
3554
  if (!options || options.connectProps !== false) {
3532
3555
  component = connectProps(component, componentConfig.type.props, selectedSkin);
3533
3556
  }