@myop/sdk 0.3.13 → 0.3.15
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.
- package/README.md +1 -19
- package/dist/bundled-declarations.d.ts +61 -1
- package/dist/cjs/{_IframeSDK.06523760.js → _IframeSDK.9748f61d.js} +170 -1
- package/dist/cjs/{_IframeSDK.06523760.js.map → _IframeSDK.9748f61d.js.map} +3 -3
- package/dist/cjs/_IframeSDK.9bd2ab9c.min.js +1 -0
- package/dist/cjs/_WebComponentSDK.28ac5568.min.js +1 -0
- package/dist/cjs/{_WebComponentSDK.4ed98c20.js → _WebComponentSDK.6157152e.js} +170 -1
- package/dist/cjs/{_WebComponentSDK.4ed98c20.js.map → _WebComponentSDK.6157152e.js.map} +3 -3
- package/dist/cjs/{_hostSDK.f8d320df.js → _hostSDK.0fb0e40a.js} +170 -1
- package/dist/cjs/{_hostSDK.f8d320df.js.map → _hostSDK.0fb0e40a.js.map} +3 -3
- package/dist/cjs/_hostSDK.c253d85a.min.js +1 -0
- package/dist/cjs/myop_sdk.js +11 -11
- package/dist/cjs/myop_sdk.js.map +1 -1
- package/dist/cjs/myop_sdk.min.js +1 -1
- package/dist/cjs-bundled/myop_sdk.bundled.js +181 -3
- package/dist/cjs-bundled/myop_sdk.bundled.js.map +4 -4
- package/dist/cjs-bundled/myop_sdk.bundled.min.js +1 -1
- package/dist/module/Iframe/index.js +173 -2
- package/dist/module/Iframe/index.js.map +3 -3
- package/dist/module/SDK.js +183 -3
- package/dist/module/SDK.js.map +4 -4
- package/dist/module/embeddedSDK.js +1 -1
- package/dist/module/host/components/myopExtractedWebComponent.d.ts +40 -0
- package/dist/module/host/embeddedSDK.js +1 -1
- package/dist/module/host/index.d.ts +1 -0
- package/dist/module/host/index.js +174 -2
- package/dist/module/host/index.js.map +3 -3
- package/dist/module/host/loaders/HTMLComponentLoader.d.ts +18 -1
- package/dist/module/webcomponent/index.js +173 -2
- package/dist/module/webcomponent/index.js.map +3 -3
- package/package.json +1 -1
- package/dist/cjs/_IframeSDK.5b34af50.min.js +0 -1
- package/dist/cjs/_WebComponentSDK.acba38a4.min.js +0 -1
- package/dist/cjs/_hostSDK.dc07390b.min.js +0 -1
|
@@ -1675,7 +1675,93 @@ var WebcomponentLoader = class extends BaseMyopLoader {
|
|
|
1675
1675
|
};
|
|
1676
1676
|
|
|
1677
1677
|
// version:myop-sdk-version
|
|
1678
|
-
var myop_sdk_version_default = "0.3.
|
|
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
|
+
};
|
|
1679
1765
|
|
|
1680
1766
|
// src/webcomponent/messageHandlers/BaseWebComponentMessageHandler.ts
|
|
1681
1767
|
var BaseWebComponentMessageHandler = class extends BaseContextMessageHandler {
|
|
@@ -2027,6 +2113,9 @@ var EMBEDDED_SDK_CONTENT = "";
|
|
|
2027
2113
|
var HAS_EMBEDDED_SDK = false;
|
|
2028
2114
|
|
|
2029
2115
|
// src/host/loaders/HTMLComponentLoader.ts
|
|
2116
|
+
var MYOP_WEB_COMPONENT_MARKER = "<!-- myop-web-component -->";
|
|
2117
|
+
var MYOP_WEB_COMPONENT_SCRIPT_ID = "myop-web-component";
|
|
2118
|
+
var extractedWebComponentScripts = /* @__PURE__ */ new Set();
|
|
2030
2119
|
var seen2 = [];
|
|
2031
2120
|
var sdk;
|
|
2032
2121
|
var getInitiatedSdk = async () => {
|
|
@@ -2065,6 +2154,9 @@ var HTMLComponentLoader = class extends BaseMyopLoader {
|
|
|
2065
2154
|
__publicField(this, "type", SkinLoaders.HTMLLoader);
|
|
2066
2155
|
__publicField(this, "load", async (componentDefinition, skin, container, options) => {
|
|
2067
2156
|
const loaderConfig = skin.loader;
|
|
2157
|
+
if (this.isMyopWebComponent(loaderConfig.HTML)) {
|
|
2158
|
+
return this.loadExtractedWebComponent(componentDefinition, skin, container, loaderConfig.HTML, options);
|
|
2159
|
+
}
|
|
2068
2160
|
let domId = "myop-comp-".concat(uuidv4());
|
|
2069
2161
|
let element;
|
|
2070
2162
|
if (loaderConfig.shadowRootMode === ShadowRootModeType.localFrame) {
|
|
@@ -2149,6 +2241,83 @@ var HTMLComponentLoader = class extends BaseMyopLoader {
|
|
|
2149
2241
|
return new MyopWebComponent(componentDefinition, skin, container, element, options);
|
|
2150
2242
|
});
|
|
2151
2243
|
}
|
|
2244
|
+
/**
|
|
2245
|
+
* Detect if HTML is a Myop Web Component (starts with marker comment)
|
|
2246
|
+
*/
|
|
2247
|
+
isMyopWebComponent(html) {
|
|
2248
|
+
return html.trimStart().startsWith(MYOP_WEB_COMPONENT_MARKER);
|
|
2249
|
+
}
|
|
2250
|
+
/**
|
|
2251
|
+
* Extract the web component script content from HTML
|
|
2252
|
+
*/
|
|
2253
|
+
extractWebComponentScript(html) {
|
|
2254
|
+
const parser = new DOMParser();
|
|
2255
|
+
const doc = parser.parseFromString(html, "text/html");
|
|
2256
|
+
const script = doc.getElementById(MYOP_WEB_COMPONENT_SCRIPT_ID);
|
|
2257
|
+
return (script == null ? void 0 : script.textContent) || null;
|
|
2258
|
+
}
|
|
2259
|
+
/**
|
|
2260
|
+
* Execute the web component script on the host document
|
|
2261
|
+
*/
|
|
2262
|
+
executeWebComponentScript(scriptContent, scriptId) {
|
|
2263
|
+
if (extractedWebComponentScripts.has(scriptId)) {
|
|
2264
|
+
console.log("[MyopWebComponent] Script already executed for ".concat(scriptId, ", skipping"));
|
|
2265
|
+
return;
|
|
2266
|
+
}
|
|
2267
|
+
const script = document.createElement("script");
|
|
2268
|
+
script.textContent = scriptContent;
|
|
2269
|
+
script.id = "myop-extracted-".concat(scriptId);
|
|
2270
|
+
document.head.appendChild(script);
|
|
2271
|
+
extractedWebComponentScripts.add(scriptId);
|
|
2272
|
+
console.log("[MyopWebComponent] Executed web component script: ".concat(scriptId));
|
|
2273
|
+
}
|
|
2274
|
+
/**
|
|
2275
|
+
* Load a Myop Web Component (extracted and run on host document)
|
|
2276
|
+
*/
|
|
2277
|
+
async loadExtractedWebComponent(componentDefinition, skin, container, html, options) {
|
|
2278
|
+
const scriptContent = this.extractWebComponentScript(html);
|
|
2279
|
+
if (!scriptContent) {
|
|
2280
|
+
throw new Error('[MyopWebComponent] No <script id="myop-web-component"> found in HTML');
|
|
2281
|
+
}
|
|
2282
|
+
const scriptId = "".concat(componentDefinition.id, "-").concat(skin.id);
|
|
2283
|
+
const previousTagName = window.__MYOP_TAG_NAME__;
|
|
2284
|
+
this.executeWebComponentScript(scriptContent, scriptId);
|
|
2285
|
+
const tagName = window.__MYOP_TAG_NAME__;
|
|
2286
|
+
if (!tagName) {
|
|
2287
|
+
throw new Error("[MyopWebComponent] Script did not set window.__MYOP_TAG_NAME__");
|
|
2288
|
+
}
|
|
2289
|
+
if (previousTagName && previousTagName !== tagName) {
|
|
2290
|
+
console.warn("[MyopWebComponent] __MYOP_TAG_NAME__ changed from ".concat(previousTagName, " to ").concat(tagName));
|
|
2291
|
+
}
|
|
2292
|
+
const domId = "myop-comp-".concat(uuidv4());
|
|
2293
|
+
const element = document.createElement(tagName);
|
|
2294
|
+
element.id = domId;
|
|
2295
|
+
if (options == null ? void 0 : options.hidden) {
|
|
2296
|
+
element.style.opacity = "0";
|
|
2297
|
+
element.style.position = "absolute";
|
|
2298
|
+
element.style.height = "0";
|
|
2299
|
+
element.style.width = "0";
|
|
2300
|
+
element.style.pointerEvents = "none";
|
|
2301
|
+
element.style.visibility = "hidden";
|
|
2302
|
+
}
|
|
2303
|
+
if (!container.querySelector('[id^="myop-comp-"]')) {
|
|
2304
|
+
container.innerHTML = "";
|
|
2305
|
+
}
|
|
2306
|
+
this.appendChild(container, element, options);
|
|
2307
|
+
const component = new MyopExtractedWebComponent(
|
|
2308
|
+
componentDefinition,
|
|
2309
|
+
skin,
|
|
2310
|
+
container,
|
|
2311
|
+
element,
|
|
2312
|
+
tagName,
|
|
2313
|
+
options
|
|
2314
|
+
);
|
|
2315
|
+
if ((options == null ? void 0 : options.data) !== void 0) {
|
|
2316
|
+
component.initWithData(options.data);
|
|
2317
|
+
}
|
|
2318
|
+
console.log("[MyopWebComponent] Loaded <".concat(tagName, "> into container"));
|
|
2319
|
+
return component;
|
|
2320
|
+
}
|
|
2152
2321
|
};
|
|
2153
2322
|
|
|
2154
2323
|
// src/helpers/CloudRepository.ts
|