@myop/sdk 0.3.15 → 0.3.17

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 (34) hide show
  1. package/dist/bundled-declarations.d.ts +5 -2
  2. package/dist/cjs/{_IframeSDK.9748f61d.js → _IframeSDK.2444180b.js} +135 -88
  3. package/dist/cjs/_IframeSDK.2444180b.js.map +7 -0
  4. package/dist/cjs/_IframeSDK.d5896709.min.js +1 -0
  5. package/dist/cjs/_WebComponentSDK.87c5e31a.min.js +1 -0
  6. package/dist/cjs/{_WebComponentSDK.6157152e.js → _WebComponentSDK.8ff8e8a2.js} +135 -88
  7. package/dist/cjs/_WebComponentSDK.8ff8e8a2.js.map +7 -0
  8. package/dist/cjs/{_hostSDK.0fb0e40a.js → _hostSDK.8915b7f2.js} +135 -88
  9. package/dist/cjs/_hostSDK.8915b7f2.js.map +7 -0
  10. package/dist/cjs/_hostSDK.fe79b132.min.js +1 -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 +145 -97
  15. package/dist/cjs-bundled/myop_sdk.bundled.js.map +4 -4
  16. package/dist/cjs-bundled/myop_sdk.bundled.min.js +1 -1
  17. package/dist/module/Iframe/index.js +136 -89
  18. package/dist/module/Iframe/index.js.map +3 -3
  19. package/dist/module/SDK.js +145 -97
  20. package/dist/module/SDK.js.map +4 -4
  21. package/dist/module/embeddedSDK.js +1 -1
  22. package/dist/module/host/components/myopExtractedWebComponent.d.ts +5 -2
  23. package/dist/module/host/embeddedSDK.js +1 -1
  24. package/dist/module/host/index.js +136 -89
  25. package/dist/module/host/index.js.map +3 -3
  26. package/dist/module/webcomponent/index.js +136 -89
  27. package/dist/module/webcomponent/index.js.map +3 -3
  28. package/package.json +1 -1
  29. package/dist/cjs/_IframeSDK.9748f61d.js.map +0 -7
  30. package/dist/cjs/_IframeSDK.9bd2ab9c.min.js +0 -1
  31. package/dist/cjs/_WebComponentSDK.28ac5568.min.js +0 -1
  32. package/dist/cjs/_WebComponentSDK.6157152e.js.map +0 -7
  33. package/dist/cjs/_hostSDK.0fb0e40a.js.map +0 -7
  34. package/dist/cjs/_hostSDK.c253d85a.min.js +0 -1
@@ -1013,6 +1013,114 @@ var MyopRefComponent = class extends BaseMyopComponent {
1013
1013
  }
1014
1014
  };
1015
1015
 
1016
+ // src/host/components/myopExtractedWebComponent.ts
1017
+ var MyopExtractedWebComponent = class extends BaseMyopComponent {
1018
+ constructor(componentDefinition, skin, container, customElement, tagName, options) {
1019
+ super(componentDefinition, container, options);
1020
+ this.container = container;
1021
+ this.customElement = customElement;
1022
+ this.tagName = tagName;
1023
+ __publicField(this, "ctaCleanup");
1024
+ __publicField(this, "_ctaHandler");
1025
+ __publicField(this, "_ctaQueue", []);
1026
+ __publicField(this, "cleanupInspect", () => {
1027
+ });
1028
+ /**
1029
+ * For compatibility with message-based components.
1030
+ * Web components don't use postMessage, so this is a no-op for most messages.
1031
+ */
1032
+ __publicField(this, "send", (message) => {
1033
+ const cleanupHandler = super.send(message);
1034
+ console.debug("[MyopExtractedWebComponent] send() called - web components use direct API instead", message);
1035
+ return cleanupHandler;
1036
+ });
1037
+ __publicField(this, "dispose", () => {
1038
+ var _a;
1039
+ if (this.ctaCleanup) {
1040
+ this.ctaCleanup();
1041
+ }
1042
+ super.dispose();
1043
+ (_a = this.customElement.parentNode) == null ? void 0 : _a.removeChild(this.customElement);
1044
+ });
1045
+ this.element = customElement;
1046
+ this.setInitiated();
1047
+ }
1048
+ inspect() {
1049
+ this.cleanupInspect = setDebugStyle(this.id, "MyopExtractedWebComponent", 0, this.container, this.customElement, this.componentDefinition);
1050
+ return this.cleanupInspect;
1051
+ }
1052
+ hide() {
1053
+ this.customElement.style.opacity = "0";
1054
+ this.customElement.style.position = "absolute";
1055
+ this.customElement.style.pointerEvents = "none";
1056
+ this.customElement.style.visibility = "hidden";
1057
+ this.customElement.style.height = "0";
1058
+ this.customElement.style.width = "0";
1059
+ }
1060
+ show() {
1061
+ this.customElement.style.opacity = "1";
1062
+ this.customElement.style.position = "unset";
1063
+ this.customElement.style.pointerEvents = "all";
1064
+ this.customElement.style.visibility = "visible";
1065
+ this.customElement.style.height = "";
1066
+ this.customElement.style.width = "";
1067
+ }
1068
+ /**
1069
+ * Initialize the component with data by calling myop_init_interface directly
1070
+ */
1071
+ initWithData(data) {
1072
+ if (typeof this.customElement.myop_init_interface === "function") {
1073
+ this.customElement.myop_init_interface(data);
1074
+ }
1075
+ }
1076
+ /**
1077
+ * Get current data from the component
1078
+ */
1079
+ getData() {
1080
+ if (typeof this.customElement.myop_init_interface === "function") {
1081
+ return this.customElement.myop_init_interface();
1082
+ }
1083
+ return void 0;
1084
+ }
1085
+ /**
1086
+ * Set CTA handler - unified API with iframe components.
1087
+ * Called via props.myop_cta_handler = handler
1088
+ */
1089
+ setCtaHandler(handler) {
1090
+ if (this.ctaCleanup) {
1091
+ this.ctaCleanup();
1092
+ }
1093
+ this._ctaHandler = handler;
1094
+ if (this._ctaQueue.length > 0) {
1095
+ const queue = [...this._ctaQueue];
1096
+ this._ctaQueue = [];
1097
+ queue.forEach((item) => {
1098
+ if (!this.markedForDisposed) {
1099
+ handler(item.action, item.payload);
1100
+ }
1101
+ });
1102
+ }
1103
+ const listener = (e) => {
1104
+ var _a;
1105
+ const customEvent = e;
1106
+ if ((_a = customEvent.detail) == null ? void 0 : _a.action) {
1107
+ if (this._ctaHandler && !this.markedForDisposed) {
1108
+ this._ctaHandler(customEvent.detail.action, customEvent.detail.payload);
1109
+ } else if (!this._ctaHandler) {
1110
+ this._ctaQueue.push({
1111
+ action: customEvent.detail.action,
1112
+ payload: customEvent.detail.payload
1113
+ });
1114
+ }
1115
+ }
1116
+ };
1117
+ this.customElement.addEventListener("myop-cta", listener);
1118
+ this.ctaCleanup = () => {
1119
+ this.customElement.removeEventListener("myop-cta", listener);
1120
+ };
1121
+ }
1122
+ };
1123
+
1016
1124
  // src/host/componentCore.ts
1017
1125
  var createDebugTitle = (text, top, componentDefinitionConfig) => {
1018
1126
  const titleEl = document.createElement("a");
@@ -1065,6 +1173,19 @@ var connectProps = (component, propsConfig, selectedSkin) => {
1065
1173
  return false;
1066
1174
  }
1067
1175
  if (propConfig.behavior.type === PropConfigBehaviorTypes.code) {
1176
+ if (component instanceof MyopExtractedWebComponent) {
1177
+ const typedPropBehavior = propConfig.behavior;
1178
+ const propName = typedPropBehavior.remap || prop;
1179
+ if (propName === "myop_init_interface") {
1180
+ return (data) => {
1181
+ if (data === void 0) {
1182
+ return component.getData();
1183
+ }
1184
+ component.initWithData(data);
1185
+ };
1186
+ }
1187
+ return void 0;
1188
+ }
1068
1189
  if (selectedSkin.loader.type === SkinLoaders.HTMLLoader) {
1069
1190
  const typedLoader = selectedSkin.loader;
1070
1191
  if (typedLoader.shadowRootMode === ShadowRootModeType.localFrame) {
@@ -1099,6 +1220,18 @@ var connectProps = (component, propsConfig, selectedSkin) => {
1099
1220
  return false;
1100
1221
  }
1101
1222
  if (propConfig.behavior.type === PropConfigBehaviorTypes.code) {
1223
+ if (component instanceof MyopExtractedWebComponent) {
1224
+ const typedPropBehavior = propConfig.behavior;
1225
+ const propName = typedPropBehavior.remap || prop;
1226
+ if (propName === "myop_cta_handler") {
1227
+ component.setCtaHandler(value);
1228
+ return true;
1229
+ }
1230
+ if (propName === "myop_init_interface") {
1231
+ component.initWithData(value);
1232
+ return true;
1233
+ }
1234
+ }
1102
1235
  if (selectedSkin.loader.type === SkinLoaders.HTMLLoader) {
1103
1236
  const typedLoader = selectedSkin.loader;
1104
1237
  if (typedLoader.shadowRootMode === ShadowRootModeType.localFrame) {
@@ -1675,93 +1808,7 @@ var WebcomponentLoader = class extends BaseMyopLoader {
1675
1808
  };
1676
1809
 
1677
1810
  // version:myop-sdk-version
1678
- var myop_sdk_version_default = "0.3.15";
1679
-
1680
- // src/host/components/myopExtractedWebComponent.ts
1681
- var MyopExtractedWebComponent = class extends BaseMyopComponent {
1682
- constructor(componentDefinition, skin, container, customElement, tagName, options) {
1683
- super(componentDefinition, container, options);
1684
- this.container = container;
1685
- this.customElement = customElement;
1686
- this.tagName = tagName;
1687
- __publicField(this, "ctaCleanup");
1688
- __publicField(this, "cleanupInspect", () => {
1689
- });
1690
- /**
1691
- * For compatibility with message-based components.
1692
- * Web components don't use postMessage, so this is a no-op for most messages.
1693
- */
1694
- __publicField(this, "send", (message) => {
1695
- const cleanupHandler = super.send(message);
1696
- console.debug("[MyopExtractedWebComponent] send() called - web components use direct API instead", message);
1697
- return cleanupHandler;
1698
- });
1699
- __publicField(this, "dispose", () => {
1700
- var _a;
1701
- if (this.ctaCleanup) {
1702
- this.ctaCleanup();
1703
- }
1704
- super.dispose();
1705
- (_a = this.customElement.parentNode) == null ? void 0 : _a.removeChild(this.customElement);
1706
- });
1707
- this.element = customElement;
1708
- this.setInitiated();
1709
- }
1710
- inspect() {
1711
- this.cleanupInspect = setDebugStyle(this.id, "MyopExtractedWebComponent", 0, this.container, this.customElement, this.componentDefinition);
1712
- return this.cleanupInspect;
1713
- }
1714
- hide() {
1715
- this.customElement.style.opacity = "0";
1716
- this.customElement.style.position = "absolute";
1717
- this.customElement.style.pointerEvents = "none";
1718
- this.customElement.style.visibility = "hidden";
1719
- this.customElement.style.height = "0";
1720
- this.customElement.style.width = "0";
1721
- }
1722
- show() {
1723
- this.customElement.style.opacity = "1";
1724
- this.customElement.style.position = "unset";
1725
- this.customElement.style.pointerEvents = "all";
1726
- this.customElement.style.visibility = "visible";
1727
- this.customElement.style.height = "";
1728
- this.customElement.style.width = "";
1729
- }
1730
- /**
1731
- * Initialize the component with data by calling myop_init_interface directly
1732
- */
1733
- initWithData(data) {
1734
- if (typeof this.customElement.myop_init_interface === "function") {
1735
- this.customElement.myop_init_interface(data);
1736
- }
1737
- }
1738
- /**
1739
- * Get current data from the component
1740
- */
1741
- getData() {
1742
- if (typeof this.customElement.myop_init_interface === "function") {
1743
- return this.customElement.myop_init_interface();
1744
- }
1745
- return void 0;
1746
- }
1747
- /**
1748
- * Set up CTA handler to listen for myop-cta events
1749
- */
1750
- onCta(handler) {
1751
- const listener = (e) => {
1752
- const customEvent = e;
1753
- if (customEvent.detail && customEvent.detail.action) {
1754
- handler(customEvent.detail.action, customEvent.detail.payload);
1755
- }
1756
- };
1757
- this.customElement.addEventListener("myop-cta", listener);
1758
- const cleanup = () => {
1759
- this.customElement.removeEventListener("myop-cta", listener);
1760
- };
1761
- this.ctaCleanup = cleanup;
1762
- return cleanup;
1763
- }
1764
- };
1811
+ var myop_sdk_version_default = "0.3.17";
1765
1812
 
1766
1813
  // src/webcomponent/messageHandlers/BaseWebComponentMessageHandler.ts
1767
1814
  var BaseWebComponentMessageHandler = class extends BaseContextMessageHandler {
@@ -2183,7 +2230,7 @@ var HTMLComponentLoader = class extends BaseMyopLoader {
2183
2230
  _doc.head.insertBefore(_doc.importNode(node, true), _doc.head.firstChild);
2184
2231
  }
2185
2232
  HTML2Render = _doc.documentElement.outerHTML;
2186
- } else {
2233
+ } else if ((options == null ? void 0 : options.data) !== void 0) {
2187
2234
  const parser = new DOMParser();
2188
2235
  const _doc = parser.parseFromString(loaderConfig.HTML, "text/html");
2189
2236
  const myop_preview_script = _doc.getElementById("myop_preview");