@myop/sdk 0.1.43 → 0.1.45
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/dist/bundled-declarations.d.ts +4 -3
- package/dist/cjs/_IframeSDK.1993fad2.min.js +1 -0
- package/dist/cjs/{_IframeSDK.d40f5d05.js → _IframeSDK.6e68e329.js} +119 -47
- package/dist/cjs/_IframeSDK.6e68e329.js.map +7 -0
- package/dist/cjs/{_WebComponentSDK.82d073da.js → _WebComponentSDK.1f50ec03.js} +119 -47
- package/dist/cjs/_WebComponentSDK.1f50ec03.js.map +7 -0
- package/dist/cjs/_WebComponentSDK.c0dcea75.min.js +1 -0
- package/dist/cjs/{_hostSDK.cc791efe.js → _hostSDK.3215ab07.js} +119 -47
- package/dist/cjs/_hostSDK.3215ab07.js.map +7 -0
- package/dist/cjs/_hostSDK.f697667b.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/module/Iframe/index.js +140 -58
- package/dist/module/Iframe/index.js.map +3 -3
- package/dist/module/SDK.js +142 -60
- package/dist/module/SDK.js.map +3 -3
- package/dist/module/common/index.d.ts +1 -0
- package/dist/module/common/index.js +1 -1
- package/dist/module/common/index.js.map +2 -2
- package/dist/module/host/componentCore.d.ts +2 -2
- package/dist/module/host/components/myopIframeComponent.d.ts +1 -1
- package/dist/module/host/index.js +140 -58
- package/dist/module/host/index.js.map +3 -3
- package/dist/module/webcomponent/index.js +140 -58
- package/dist/module/webcomponent/index.js.map +3 -3
- package/package.json +1 -1
- package/dist/cjs/_IframeSDK.125baf65.min.js +0 -1
- package/dist/cjs/_IframeSDK.d40f5d05.js.map +0 -7
- package/dist/cjs/_WebComponentSDK.82d073da.js.map +0 -7
- package/dist/cjs/_WebComponentSDK.e5da466e.min.js +0 -1
- package/dist/cjs/_hostSDK.78b64302.min.js +0 -1
- package/dist/cjs/_hostSDK.cc791efe.js.map +0 -7
|
@@ -684,6 +684,10 @@ var ShadowRootModeType = {
|
|
|
684
684
|
"none": "none",
|
|
685
685
|
"localFrame": "localFrame"
|
|
686
686
|
};
|
|
687
|
+
var PropConfigBehaviorTypes = {
|
|
688
|
+
"message": "message",
|
|
689
|
+
"code": "code"
|
|
690
|
+
};
|
|
687
691
|
var RefBehaviorType = class {
|
|
688
692
|
};
|
|
689
693
|
__publicField(RefBehaviorType, "code", "code");
|
|
@@ -1177,7 +1181,22 @@ var setDebugStyle = (id, type, top, container, componentElement, componentDefini
|
|
|
1177
1181
|
container.removeChild(topText);
|
|
1178
1182
|
};
|
|
1179
1183
|
};
|
|
1180
|
-
var
|
|
1184
|
+
var reportError = (propConfig, propName, component) => {
|
|
1185
|
+
if (!propConfig) {
|
|
1186
|
+
console.error(
|
|
1187
|
+
// throw new Error(
|
|
1188
|
+
"Error: Undefined Prop\n\nIt looks like you've tried to use a prop that hasn't been defined.\nPlease check the prop name for any typos or ensure that it is properly defined in the component's prop list.\n\n" + "Prop Name: ".concat(propName, "\n") + "Component: ".concat(component.componentDefinition.name, ", ID: ").concat(component.componentDefinition.id, "\n\n") + "For more information, refer to the component page https://dashboard.myop.dev/dashboard/component/".concat(component.componentDefinition.id, " or consult the developer guide.")
|
|
1189
|
+
);
|
|
1190
|
+
return true;
|
|
1191
|
+
}
|
|
1192
|
+
return false;
|
|
1193
|
+
};
|
|
1194
|
+
var reportUnsupported = (propConfig, propName, component) => {
|
|
1195
|
+
console.error(
|
|
1196
|
+
"Error: Code Prop Not Supported\n\nCurrently, code props are only supported in local frame components.\n\u26A0\uFE0F This is a work in progress feature \u2014 code props will be supported in upcoming versions.\n\nIn the meantime, you can use message props.\n\n" + "Prop Name: ".concat(propName, "\n") + "Component: ".concat(component.componentDefinition.name, ", ID: ").concat(component.componentDefinition.id, "\n\n") + "For more information, refer to the component page https://dashboard.myop.dev/dashboard/component/".concat(component.componentDefinition.id, " or consult the developer guide.")
|
|
1197
|
+
);
|
|
1198
|
+
};
|
|
1199
|
+
var connectProps = (component, propsConfig, selectedSkin) => {
|
|
1181
1200
|
const propsMap = propsConfig.reduce((previousValue, currentValue) => {
|
|
1182
1201
|
return __spreadProps(__spreadValues({}, previousValue), {
|
|
1183
1202
|
[currentValue.name]: __spreadValues({}, currentValue)
|
|
@@ -1186,6 +1205,20 @@ var connectProps = (component, propsConfig) => {
|
|
|
1186
1205
|
const propsHandler = {
|
|
1187
1206
|
get: (_, prop) => {
|
|
1188
1207
|
const propConfig = propsMap[prop];
|
|
1208
|
+
if (reportError(propConfig, prop, component)) {
|
|
1209
|
+
return false;
|
|
1210
|
+
}
|
|
1211
|
+
if (propConfig.behavior.type === PropConfigBehaviorTypes.code) {
|
|
1212
|
+
if (selectedSkin.loader.type === SkinLoaders.HTMLLoader) {
|
|
1213
|
+
const typedLoader = selectedSkin.loader;
|
|
1214
|
+
if (typedLoader.shadowRootMode === ShadowRootModeType.localFrame) {
|
|
1215
|
+
const typedPropBehavior = propConfig.behavior;
|
|
1216
|
+
return component.element.contentWindow[typedPropBehavior.remap || prop];
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
reportUnsupported(propConfig, prop, component);
|
|
1220
|
+
return false;
|
|
1221
|
+
}
|
|
1189
1222
|
if (propConfig.mode === "output") {
|
|
1190
1223
|
return new Promise((resolve) => {
|
|
1191
1224
|
const messageParams = [];
|
|
@@ -1206,29 +1239,40 @@ var connectProps = (component, propsConfig) => {
|
|
|
1206
1239
|
},
|
|
1207
1240
|
set: (_, prop, value) => {
|
|
1208
1241
|
const propConfig = propsMap[prop];
|
|
1209
|
-
if (
|
|
1210
|
-
|
|
1211
|
-
"Error: Undefined Prop\n\nIt looks like you've tried to use a prop that hasn't been defined.\nPlease check the prop name for any typos or ensure that it is properly defined in the component's prop list.\n\n" + "Prop Name: ".concat(prop, "\n") + "Component: ".concat(component.componentDefinition.name, ", ID: ").concat(component.componentDefinition.id, "\n\n") + "For more information, refer to the component page https://dashboard.myop.dev/dashboard/component/".concat(component.componentDefinition.id, " or consult the developer guide.")
|
|
1212
|
-
);
|
|
1242
|
+
if (reportError(propConfig, prop, component)) {
|
|
1243
|
+
return false;
|
|
1213
1244
|
}
|
|
1214
|
-
if (propConfig.
|
|
1215
|
-
if (
|
|
1216
|
-
const
|
|
1217
|
-
if (
|
|
1218
|
-
|
|
1245
|
+
if (propConfig.behavior.type === PropConfigBehaviorTypes.code) {
|
|
1246
|
+
if (selectedSkin.loader.type === SkinLoaders.HTMLLoader) {
|
|
1247
|
+
const typedLoader = selectedSkin.loader;
|
|
1248
|
+
if (typedLoader.shadowRootMode === ShadowRootModeType.localFrame) {
|
|
1249
|
+
const typedPropBehavior = propConfig.behavior;
|
|
1250
|
+
component.element.contentWindow[typedPropBehavior.remap || prop] = value;
|
|
1251
|
+
return true;
|
|
1219
1252
|
}
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1253
|
+
}
|
|
1254
|
+
reportUnsupported(propConfig, prop, component);
|
|
1255
|
+
return false;
|
|
1256
|
+
} else {
|
|
1257
|
+
if (propConfig.mode === "input") {
|
|
1258
|
+
if (propConfig.behavior.type === "message") {
|
|
1259
|
+
const messageParams = [];
|
|
1260
|
+
if (propConfig.behavior.ref) {
|
|
1261
|
+
messageParams.push(Ref.create(propConfig.behavior.ref));
|
|
1262
|
+
}
|
|
1263
|
+
messageParams.push(value);
|
|
1264
|
+
if (propConfig.behavior.params) {
|
|
1265
|
+
messageParams.push(...propConfig.behavior.params);
|
|
1266
|
+
}
|
|
1267
|
+
const messageCtor = messages_exports[propConfig.behavior.message];
|
|
1268
|
+
component.send(new messageCtor(...messageParams));
|
|
1269
|
+
return true;
|
|
1270
|
+
} else {
|
|
1271
|
+
throw new Error(
|
|
1272
|
+
"Error: Unsupported Behavior\n\nThe 'behavior' field provided is not supported.\n" + "Component: ".concat(component.componentDefinition.name, ", ID: ").concat(component.componentDefinition.id, "\n\n") + "Prop Name: ".concat(prop, "\n") + "Behavior Field: ".concat(propConfig.behavior.type, "\n\n") + "Check the documentation for valid behavior options."
|
|
1273
|
+
);
|
|
1274
|
+
return false;
|
|
1223
1275
|
}
|
|
1224
|
-
const messageCtor = messages_exports[propConfig.behavior.message];
|
|
1225
|
-
component.send(new messageCtor(...messageParams));
|
|
1226
|
-
return true;
|
|
1227
|
-
} else {
|
|
1228
|
-
throw new Error(
|
|
1229
|
-
"Error: Unsupported Behavior\n\nThe 'behavior' field provided is not supported.\n" + "Component: ".concat(component.componentDefinition.name, ", ID: ").concat(component.componentDefinition.id, "\n\n") + "Prop Name: ".concat(prop, "\n") + "Behavior Field: ".concat(propConfig.behavior.type, "\n\n") + "Check the documentation for valid behavior options."
|
|
1230
|
-
);
|
|
1231
|
-
return false;
|
|
1232
1276
|
}
|
|
1233
1277
|
}
|
|
1234
1278
|
return false;
|
|
@@ -1422,6 +1466,7 @@ var MyopIframeComponent = class extends BaseMyopComponent {
|
|
|
1422
1466
|
this.IframeElement.style.width = "".concat(ret.content.width, "px");
|
|
1423
1467
|
this.IframeElement.style.height = "".concat(ret.content.height, "px");
|
|
1424
1468
|
}));
|
|
1469
|
+
return cleanupHandler;
|
|
1425
1470
|
});
|
|
1426
1471
|
__publicField(this, "setSizeBasedOnDocumentElement", () => {
|
|
1427
1472
|
const cleanupHandler = this.send(new ExecuteScriptMessage(() => {
|
|
@@ -1682,7 +1727,7 @@ var WebcomponentLoader = class extends BaseMyopLoader {
|
|
|
1682
1727
|
};
|
|
1683
1728
|
|
|
1684
1729
|
// version:myop-sdk-version
|
|
1685
|
-
var myop_sdk_version_default = "0.1.
|
|
1730
|
+
var myop_sdk_version_default = "0.1.45";
|
|
1686
1731
|
|
|
1687
1732
|
// src/host/loaders/HTMLComponentLoader.ts
|
|
1688
1733
|
var seen2 = [];
|
|
@@ -1756,12 +1801,14 @@ var HTMLComponentLoader = class extends BaseMyopLoader {
|
|
|
1756
1801
|
doc.writeln('<script src="'.concat(window.myop.__ROOT_SDK_PUBLIC_URL__, "\"><\/script>\n <script>\n window.__federation__ = \n { ...window.__federation__,\n //TODO : get from ENV at build time, \n // inject value to module at build time \n // today we doing so just for the CJS version \n __public_path__ :'https://cdn.myop.dev/sdk/next',\n ...").concat(JSON.stringify(
|
|
1757
1802
|
// @ts-ignore
|
|
1758
1803
|
window.__federation__
|
|
1759
|
-
), "};\n const
|
|
1804
|
+
), "};\n const __myop_init = async () => {\n const {IframeSDK} = (await window.myop.rootSDK.getIframeModule());\n const sdk = new IframeSDK()\n sdk.init();\n }\n __myop_init().then();\n <\/script>"));
|
|
1760
1805
|
doc.close();
|
|
1761
1806
|
const comp = new MyopIframeComponent(componentDefinition, skin, container, IframeElement, options);
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1807
|
+
if (loaderConfig.autoHeight) {
|
|
1808
|
+
IframeElement.onload = () => {
|
|
1809
|
+
comp.observeSizeBasedOnDocumentElement();
|
|
1810
|
+
};
|
|
1811
|
+
}
|
|
1765
1812
|
return comp;
|
|
1766
1813
|
}
|
|
1767
1814
|
if (loaderConfig.shadowRootMode === ShadowRootModeType.none) {
|
|
@@ -1859,24 +1906,50 @@ var checkMyopOverride = async (componentConfig) => {
|
|
|
1859
1906
|
const params = new URLSearchParams(url.search);
|
|
1860
1907
|
const myopOverride = params.get("myopOverride");
|
|
1861
1908
|
if (myopOverride) {
|
|
1862
|
-
const [
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1909
|
+
const [source, ...uuids] = decompressUUIDs(myopOverride);
|
|
1910
|
+
switch (source) {
|
|
1911
|
+
case "component":
|
|
1912
|
+
{
|
|
1913
|
+
const [componentId, skinId] = uuids;
|
|
1914
|
+
const componentToOverride = await CloudRepository.Main.fetchComponent(componentId);
|
|
1915
|
+
if (componentToOverride) {
|
|
1916
|
+
const skin = componentToOverride.type.skins.find((skin2) => skin2.id === skinId);
|
|
1917
|
+
if (skin) {
|
|
1918
|
+
componentToOverride.instance.skinSelector = {
|
|
1919
|
+
type: SkinSelectorTypes.Dedicated,
|
|
1920
|
+
skin: {
|
|
1921
|
+
id: skinId
|
|
1922
|
+
}
|
|
1923
|
+
};
|
|
1875
1924
|
return componentToOverride;
|
|
1876
1925
|
}
|
|
1877
1926
|
}
|
|
1878
1927
|
}
|
|
1879
|
-
|
|
1928
|
+
break;
|
|
1929
|
+
// case 'flow': {
|
|
1930
|
+
default:
|
|
1931
|
+
{
|
|
1932
|
+
const [flowId, experimentId] = decompressUUIDs(myopOverride);
|
|
1933
|
+
const flow = await CloudRepository.Main.fetchFlow(flowId);
|
|
1934
|
+
const componentToOverride = flow.components.find((c) => c.type.id === componentConfig.type.id);
|
|
1935
|
+
if (componentToOverride) {
|
|
1936
|
+
if (componentToOverride.instance.skinSelector.type === SkinSelectorTypes.Segmented) {
|
|
1937
|
+
if (componentToOverride.instance.resolvedExperiences) {
|
|
1938
|
+
const resolvedExperience = componentToOverride.instance.resolvedExperiences.find((e) => e.id === experimentId);
|
|
1939
|
+
if ((resolvedExperience == null ? void 0 : resolvedExperience.type) === ExperienceTypes.Segment) {
|
|
1940
|
+
const typedResolvedExperience = resolvedExperience;
|
|
1941
|
+
const typedSkinSelector = componentToOverride.instance.skinSelector;
|
|
1942
|
+
const segment = typedSkinSelector.segments.find((s) => s.segmentId === typedResolvedExperience.segment.id);
|
|
1943
|
+
if (segment) {
|
|
1944
|
+
componentToOverride.instance.skinSelector = segment == null ? void 0 : segment.skinSelector;
|
|
1945
|
+
return componentToOverride;
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
break;
|
|
1880
1953
|
}
|
|
1881
1954
|
}
|
|
1882
1955
|
} finally {
|
|
@@ -2080,7 +2153,7 @@ var HostSDK = class {
|
|
|
2080
2153
|
});
|
|
2081
2154
|
__publicField(this, "loaderHooks");
|
|
2082
2155
|
__publicField(this, "loadComponent", async (componentConfig, container, options) => {
|
|
2083
|
-
var _a, _b, _c, _d
|
|
2156
|
+
var _a, _b, _c, _d;
|
|
2084
2157
|
if (!container) {
|
|
2085
2158
|
debugger;
|
|
2086
2159
|
throw new Error("no container was found for this component");
|
|
@@ -2089,13 +2162,13 @@ var HostSDK = class {
|
|
|
2089
2162
|
if (overriddenConfig) {
|
|
2090
2163
|
componentConfig = overriddenConfig;
|
|
2091
2164
|
}
|
|
2165
|
+
const hooks = __spreadValues(__spreadValues({}, (_a = this.loaderHooks) != null ? _a : {}), (_b = options == null ? void 0 : options.hooks) != null ? _b : {});
|
|
2092
2166
|
const ref = container;
|
|
2093
2167
|
if (ref.myop) {
|
|
2094
2168
|
if (ref.component) {
|
|
2095
2169
|
componentConfig = __spreadValues({}, componentConfig);
|
|
2096
2170
|
componentConfig.instance = __spreadValues({}, componentConfig.instance);
|
|
2097
|
-
|
|
2098
|
-
let selectedSkin2 = await this.runSkinSelector(componentConfig, hooks2);
|
|
2171
|
+
let selectedSkin2 = await this.runSkinSelector(componentConfig, hooks);
|
|
2099
2172
|
if (!selectedSkin2) {
|
|
2100
2173
|
throw new Error("runSkinSelector failed to choose skin, check the provided config");
|
|
2101
2174
|
}
|
|
@@ -2118,12 +2191,11 @@ var HostSDK = class {
|
|
|
2118
2191
|
}
|
|
2119
2192
|
}
|
|
2120
2193
|
container = container;
|
|
2121
|
-
const hooks = __spreadValues(__spreadValues({}, (_d = this.loaderHooks) != null ? _d : {}), (_e = options == null ? void 0 : options.hooks) != null ? _e : {});
|
|
2122
2194
|
let selectedSkin = await this.runSkinSelector(componentConfig, hooks);
|
|
2123
2195
|
if (!selectedSkin) {
|
|
2124
2196
|
throw new Error("runSkinSelector failed to choose skin, check the provided config");
|
|
2125
2197
|
}
|
|
2126
|
-
if ((
|
|
2198
|
+
if ((_d = options == null ? void 0 : options.hooks) == null ? void 0 : _d.afterSkinSelected) {
|
|
2127
2199
|
selectedSkin = await options.hooks.afterSkinSelected(__spreadValues({}, selectedSkin));
|
|
2128
2200
|
}
|
|
2129
2201
|
const componentLoader = this.componentsLoaders.find((loader) => loader.type === selectedSkin.loader.type);
|
|
@@ -2140,8 +2212,8 @@ var HostSDK = class {
|
|
|
2140
2212
|
return true;
|
|
2141
2213
|
});
|
|
2142
2214
|
this.components.push(component);
|
|
2143
|
-
if (options
|
|
2144
|
-
component = connectProps(component, componentConfig.type.props);
|
|
2215
|
+
if (!options || options.connectProps !== false) {
|
|
2216
|
+
component = connectProps(component, componentConfig.type.props, selectedSkin);
|
|
2145
2217
|
}
|
|
2146
2218
|
try {
|
|
2147
2219
|
await connectRefs(component, componentConfig, this.components);
|