@plattar/plattar-ar-adapter 1.155.2 → 1.155.4-b1
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/build/es2015/plattar-ar-adapter.js +743 -493
- package/build/es2015/plattar-ar-adapter.min.js +1 -1
- package/build/es2019/plattar-ar-adapter.js +223 -43
- package/build/es2019/plattar-ar-adapter.min.js +1 -1
- package/dist/embed/controllers/configurator-controller.d.ts +1 -0
- package/dist/embed/controllers/configurator-controller.js +91 -19
- package/dist/embed/controllers/plattar-controller.d.ts +11 -3
- package/dist/embed/controllers/plattar-controller.js +12 -1
- package/dist/embed/controllers/product-controller.d.ts +0 -1
- package/dist/embed/controllers/product-controller.js +0 -5
- package/dist/embed/plattar-embed.d.ts +11 -1
- package/dist/embed/plattar-embed.js +35 -11
- package/dist/util/configurator-state.d.ts +13 -1
- package/dist/util/configurator-state.js +84 -6
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -976,12 +976,58 @@ class ConfiguratorController extends plattar_controller_1.PlattarController {
|
|
|
976
976
|
return;
|
|
977
977
|
}
|
|
978
978
|
}
|
|
979
|
+
async startARQRCode(options) {
|
|
980
|
+
try {
|
|
981
|
+
const dState = await this.getConfiguratorState();
|
|
982
|
+
// if this is declared, we have a furniture scene that we need to re-create the embed
|
|
983
|
+
// with new attributes
|
|
984
|
+
const product = dState.state.firstOfType("product");
|
|
985
|
+
if (product) {
|
|
986
|
+
this.parent.lockObserver();
|
|
987
|
+
this.parent.destroy();
|
|
988
|
+
this.setAttribute("product-id", product.scene_product_id);
|
|
989
|
+
this.parent.unlockObserver();
|
|
990
|
+
const controller = this.parent.create();
|
|
991
|
+
if (controller) {
|
|
992
|
+
return controller.startARQRCode(options);
|
|
993
|
+
}
|
|
994
|
+
return Promise.reject(new Error("ConfiguratorController.startARQRCode() - legacy product transition failed"));
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
catch (_err) {
|
|
998
|
+
}
|
|
999
|
+
return super.startARQRCode(options);
|
|
1000
|
+
}
|
|
979
1001
|
async startViewerQRCode(options) {
|
|
980
1002
|
// remove the old renderer instance if any
|
|
981
1003
|
this.removeRenderer();
|
|
982
1004
|
const sceneID = this.getAttribute("scene-id");
|
|
983
1005
|
if (!sceneID) {
|
|
984
|
-
throw new Error("ConfiguratorController.
|
|
1006
|
+
throw new Error("ConfiguratorController.startViewerQRCode() - minimum required attributes not set, use scene-id as a minimum");
|
|
1007
|
+
}
|
|
1008
|
+
// optional attributes
|
|
1009
|
+
let configState = null;
|
|
1010
|
+
try {
|
|
1011
|
+
const dState = await this.getConfiguratorState();
|
|
1012
|
+
// if this is declared, we have a furniture scene that we need to re-create the embed
|
|
1013
|
+
// with new attributes
|
|
1014
|
+
const product = dState.state.firstOfType("product");
|
|
1015
|
+
if (product) {
|
|
1016
|
+
this.parent.lockObserver();
|
|
1017
|
+
this.parent.destroy();
|
|
1018
|
+
this.setAttribute("product-id", product.scene_product_id);
|
|
1019
|
+
this.parent.unlockObserver();
|
|
1020
|
+
const controller = this.parent.create();
|
|
1021
|
+
if (controller) {
|
|
1022
|
+
return controller.startViewerQRCode(options);
|
|
1023
|
+
}
|
|
1024
|
+
return Promise.reject(new Error("ConfiguratorController.startViewerQRCode() - legacy product transition failed"));
|
|
1025
|
+
}
|
|
1026
|
+
configState = dState.state.encode();
|
|
1027
|
+
}
|
|
1028
|
+
catch (_err) {
|
|
1029
|
+
// config state is not available
|
|
1030
|
+
configState = null;
|
|
985
1031
|
}
|
|
986
1032
|
const opt = options || this._GetDefaultQROptions();
|
|
987
1033
|
const viewer = document.createElement("plattar-qrcode");
|
|
@@ -1002,17 +1048,8 @@ class ConfiguratorController extends plattar_controller_1.PlattarController {
|
|
|
1002
1048
|
}
|
|
1003
1049
|
viewer.setAttribute("shorten", (opt.shorten && (opt.shorten === true || opt.shorten === "true")) ? "true" : "false");
|
|
1004
1050
|
let dst = plattar_api_1.Server.location().base + "renderer/configurator.html?scene_id=" + sceneID;
|
|
1005
|
-
// optional attributes
|
|
1006
|
-
let configState = null;
|
|
1007
1051
|
const showAR = this.getAttribute("show-ar");
|
|
1008
1052
|
const showUI = this.getAttribute("show-ui");
|
|
1009
|
-
try {
|
|
1010
|
-
configState = (await this.getConfiguratorState()).state.encode();
|
|
1011
|
-
}
|
|
1012
|
-
catch (_err) {
|
|
1013
|
-
// config state is not available
|
|
1014
|
-
configState = null;
|
|
1015
|
-
}
|
|
1016
1053
|
if (showUI && showUI === "true") {
|
|
1017
1054
|
dst = plattar_api_1.Server.location().base + "configurator/dist/index.html?scene_id=" + sceneID;
|
|
1018
1055
|
}
|
|
@@ -1039,6 +1076,30 @@ class ConfiguratorController extends plattar_controller_1.PlattarController {
|
|
|
1039
1076
|
if (!sceneID) {
|
|
1040
1077
|
throw new Error("ConfiguratorController.startRenderer() - minimum required attributes not set, use scene-id as a minimum");
|
|
1041
1078
|
}
|
|
1079
|
+
// optional attributes
|
|
1080
|
+
let configState = null;
|
|
1081
|
+
try {
|
|
1082
|
+
const dState = await this.getConfiguratorState();
|
|
1083
|
+
// if this is declared, we have a furniture scene that we need to re-create the embed
|
|
1084
|
+
// with new attributes
|
|
1085
|
+
const product = dState.state.firstOfType("product");
|
|
1086
|
+
if (product) {
|
|
1087
|
+
this.parent.lockObserver();
|
|
1088
|
+
this.parent.destroy();
|
|
1089
|
+
this.setAttribute("product-id", product.scene_product_id);
|
|
1090
|
+
this.parent.unlockObserver();
|
|
1091
|
+
const controller = this.parent.create();
|
|
1092
|
+
if (controller) {
|
|
1093
|
+
return controller.startRenderer();
|
|
1094
|
+
}
|
|
1095
|
+
return Promise.reject(new Error("ConfiguratorController.startRenderer() - legacy product transition failed"));
|
|
1096
|
+
}
|
|
1097
|
+
configState = dState;
|
|
1098
|
+
}
|
|
1099
|
+
catch (_err) {
|
|
1100
|
+
// config state is not available
|
|
1101
|
+
configState = null;
|
|
1102
|
+
}
|
|
1042
1103
|
// required attributes with defaults for plattar-configurator node
|
|
1043
1104
|
const width = this.getAttribute("width") || "500px";
|
|
1044
1105
|
const height = this.getAttribute("height") || "500px";
|
|
@@ -1049,15 +1110,6 @@ class ConfiguratorController extends plattar_controller_1.PlattarController {
|
|
|
1049
1110
|
viewer.setAttribute("height", height);
|
|
1050
1111
|
viewer.setAttribute("server", server);
|
|
1051
1112
|
viewer.setAttribute("scene-id", sceneID);
|
|
1052
|
-
// optional attributes
|
|
1053
|
-
let configState = null;
|
|
1054
|
-
try {
|
|
1055
|
-
configState = await this.getConfiguratorState();
|
|
1056
|
-
}
|
|
1057
|
-
catch (_err) {
|
|
1058
|
-
// config state is not available
|
|
1059
|
-
configState = null;
|
|
1060
|
-
}
|
|
1061
1113
|
const showAR = this.getAttribute("show-ar");
|
|
1062
1114
|
const showUI = this.getAttribute("show-ui");
|
|
1063
1115
|
if (configState) {
|
|
@@ -1082,6 +1134,26 @@ class ConfiguratorController extends plattar_controller_1.PlattarController {
|
|
|
1082
1134
|
if (!util_1.Util.canAugment()) {
|
|
1083
1135
|
throw new Error("ConfiguratorController.initAR() - cannot proceed as AR not available in context");
|
|
1084
1136
|
}
|
|
1137
|
+
try {
|
|
1138
|
+
const dState = await this.getConfiguratorState();
|
|
1139
|
+
// if this is declared, we have a furniture scene that we need to re-create the embed
|
|
1140
|
+
// with new attributes
|
|
1141
|
+
const product = dState.state.firstOfType("product");
|
|
1142
|
+
if (product) {
|
|
1143
|
+
this.parent.lockObserver();
|
|
1144
|
+
this.parent.destroy();
|
|
1145
|
+
this.setAttribute("product-id", product.scene_product_id);
|
|
1146
|
+
this.parent.unlockObserver();
|
|
1147
|
+
const controller = this.parent.create();
|
|
1148
|
+
if (controller) {
|
|
1149
|
+
return controller.initAR();
|
|
1150
|
+
}
|
|
1151
|
+
return Promise.reject(new Error("ConfiguratorController.initAR() - legacy product transition failed"));
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
catch (_err) {
|
|
1155
|
+
// config state is not available
|
|
1156
|
+
}
|
|
1085
1157
|
const arMode = this.getAttribute("ar-mode") || "generated";
|
|
1086
1158
|
switch (arMode.toLowerCase()) {
|
|
1087
1159
|
case "inherited":
|
|
@@ -1341,12 +1413,23 @@ class PlattarController {
|
|
|
1341
1413
|
}
|
|
1342
1414
|
/**
|
|
1343
1415
|
* Returns the specified attribute from the parent
|
|
1344
|
-
* @param attribute - The name of
|
|
1416
|
+
* @param attribute - The name of the attribute
|
|
1345
1417
|
* @returns - The attribute value or null
|
|
1346
1418
|
*/
|
|
1347
1419
|
getAttribute(attribute) {
|
|
1348
1420
|
return this.parent ? (this.parent.hasAttribute(attribute) ? this.parent.getAttribute(attribute) : null) : null;
|
|
1349
1421
|
}
|
|
1422
|
+
/**
|
|
1423
|
+
* Sets a particular attribute into the HTML DOM
|
|
1424
|
+
*
|
|
1425
|
+
* @param attribute - The name of the attribute
|
|
1426
|
+
* @param value - The value of the attribute
|
|
1427
|
+
*/
|
|
1428
|
+
setAttribute(attribute, value) {
|
|
1429
|
+
if (this.parent) {
|
|
1430
|
+
this.parent.setAttribute(attribute, value);
|
|
1431
|
+
}
|
|
1432
|
+
}
|
|
1350
1433
|
/**
|
|
1351
1434
|
* Appends the provided element into the shadow-root of the parent element
|
|
1352
1435
|
* @param element - The element to append
|
|
@@ -1376,11 +1459,6 @@ class ProductController extends plattar_controller_1.PlattarController {
|
|
|
1376
1459
|
async getConfiguratorState() {
|
|
1377
1460
|
throw new Error("ProductController.getConfiguratorState() - legacy embeds do not support configurator states");
|
|
1378
1461
|
}
|
|
1379
|
-
constructor(parent) {
|
|
1380
|
-
// this is a hack against DecodedConfiguratorState that's now stored in PlattarController
|
|
1381
|
-
// this is not used in legacy mode
|
|
1382
|
-
super(parent);
|
|
1383
|
-
}
|
|
1384
1462
|
async onAttributesUpdated(attributeName) {
|
|
1385
1463
|
const state = this._state;
|
|
1386
1464
|
// re-render the QR Code when attributes have changed
|
|
@@ -1848,6 +1926,14 @@ var EmbedType;
|
|
|
1848
1926
|
EmbedType[EmbedType["VTO"] = 2] = "VTO";
|
|
1849
1927
|
EmbedType[EmbedType["None"] = 3] = "None";
|
|
1850
1928
|
})(EmbedType || (EmbedType = {}));
|
|
1929
|
+
/**
|
|
1930
|
+
* Controls the state of the observer
|
|
1931
|
+
*/
|
|
1932
|
+
var ObserverState;
|
|
1933
|
+
(function (ObserverState) {
|
|
1934
|
+
ObserverState[ObserverState["Locked"] = 0] = "Locked";
|
|
1935
|
+
ObserverState[ObserverState["Unlocked"] = 1] = "Unlocked";
|
|
1936
|
+
})(ObserverState || (ObserverState = {}));
|
|
1851
1937
|
/**
|
|
1852
1938
|
* This is the primary <plattar-embed /> node that allows easy embedding
|
|
1853
1939
|
* of Plattar related content
|
|
@@ -1857,6 +1943,7 @@ class PlattarEmbed extends HTMLElement {
|
|
|
1857
1943
|
super();
|
|
1858
1944
|
// this is the current embed type, viewer by default
|
|
1859
1945
|
this._currentType = EmbedType.None;
|
|
1946
|
+
this._observerState = ObserverState.Unlocked;
|
|
1860
1947
|
this._controller = null;
|
|
1861
1948
|
this._currentSceneID = null;
|
|
1862
1949
|
this._observer = null;
|
|
@@ -1879,17 +1966,19 @@ class PlattarEmbed extends HTMLElement {
|
|
|
1879
1966
|
plattar_api_1.Server.create(plattar_api_1.Server.match(server || "production"));
|
|
1880
1967
|
if (!this._observer) {
|
|
1881
1968
|
this._observer = new MutationObserver((mutations) => {
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
this.
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1969
|
+
if (this._observerState === ObserverState.Unlocked) {
|
|
1970
|
+
mutations.forEach((mutation) => {
|
|
1971
|
+
if (mutation.type === "attributes") {
|
|
1972
|
+
const attributeName = mutation.attributeName ? mutation.attributeName : "none";
|
|
1973
|
+
if (this._currentType !== EmbedType.Legacy) {
|
|
1974
|
+
this._CreateEmbed(attributeName);
|
|
1975
|
+
}
|
|
1976
|
+
else {
|
|
1977
|
+
this._OnAttributesUpdated(attributeName);
|
|
1978
|
+
}
|
|
1890
1979
|
}
|
|
1891
|
-
}
|
|
1892
|
-
}
|
|
1980
|
+
});
|
|
1981
|
+
}
|
|
1893
1982
|
});
|
|
1894
1983
|
this._observer.observe(this, {
|
|
1895
1984
|
attributes: true
|
|
@@ -1899,9 +1988,22 @@ class PlattarEmbed extends HTMLElement {
|
|
|
1899
1988
|
if (productID) {
|
|
1900
1989
|
this._currentType = EmbedType.Legacy;
|
|
1901
1990
|
this._CreateLegacyEmbed();
|
|
1902
|
-
return;
|
|
1991
|
+
return this._controller;
|
|
1903
1992
|
}
|
|
1904
1993
|
this._CreateEmbed("none");
|
|
1994
|
+
return this._controller;
|
|
1995
|
+
}
|
|
1996
|
+
/**
|
|
1997
|
+
* Locks the observer so attribute changes do not trigger anything
|
|
1998
|
+
*/
|
|
1999
|
+
lockObserver() {
|
|
2000
|
+
this._observerState = ObserverState.Locked;
|
|
2001
|
+
}
|
|
2002
|
+
/**
|
|
2003
|
+
* Unlocks the observer so attribute changes will start to re-trigger properly
|
|
2004
|
+
*/
|
|
2005
|
+
unlockObserver() {
|
|
2006
|
+
this._observerState = ObserverState.Unlocked;
|
|
1905
2007
|
}
|
|
1906
2008
|
/**
|
|
1907
2009
|
* Destroys the active instance of this embed and resets internal state to default
|
|
@@ -2111,6 +2213,7 @@ class ConfiguratorState {
|
|
|
2111
2213
|
meta: {
|
|
2112
2214
|
scene_product_index: 0,
|
|
2113
2215
|
scene_model_index: 0,
|
|
2216
|
+
product_index: 0,
|
|
2114
2217
|
product_variation_index: 1,
|
|
2115
2218
|
meta_index: 2,
|
|
2116
2219
|
},
|
|
@@ -2124,6 +2227,7 @@ class ConfiguratorState {
|
|
|
2124
2227
|
if (parsedState.meta) {
|
|
2125
2228
|
defaultState.meta.scene_product_index = parsedState.meta.scene_product_index || 0;
|
|
2126
2229
|
defaultState.meta.scene_model_index = parsedState.meta.scene_model_index || 0;
|
|
2230
|
+
defaultState.meta.product_index = parsedState.meta.product_index || 0;
|
|
2127
2231
|
defaultState.meta.product_variation_index = parsedState.meta.product_variation_index || 1;
|
|
2128
2232
|
defaultState.meta.meta_index = parsedState.meta.meta_index || 2;
|
|
2129
2233
|
}
|
|
@@ -2141,12 +2245,14 @@ class ConfiguratorState {
|
|
|
2141
2245
|
* purposes of Configuration
|
|
2142
2246
|
*/
|
|
2143
2247
|
setVariationSKU(productVariationSKU) {
|
|
2144
|
-
const
|
|
2145
|
-
if (!
|
|
2248
|
+
const variationIDs = this._mappedVariationSKUValues.get(productVariationSKU);
|
|
2249
|
+
if (!variationIDs) {
|
|
2146
2250
|
console.warn("ConfiguratorState.setVariationSKU() - Variation SKU of " + productVariationSKU + " is not defined in any variations");
|
|
2147
2251
|
return;
|
|
2148
2252
|
}
|
|
2149
|
-
|
|
2253
|
+
variationIDs.forEach((variationID) => {
|
|
2254
|
+
this.setVariationID(variationID);
|
|
2255
|
+
});
|
|
2150
2256
|
}
|
|
2151
2257
|
/**
|
|
2152
2258
|
* Modifyes the SceneProduct that this Variation belongs to and changes for
|
|
@@ -2198,6 +2304,33 @@ class ConfiguratorState {
|
|
|
2198
2304
|
newData[meta.meta_index] = metaData;
|
|
2199
2305
|
}
|
|
2200
2306
|
}
|
|
2307
|
+
/**
|
|
2308
|
+
* Adds a new Product with meta-data into the Configurator State
|
|
2309
|
+
*
|
|
2310
|
+
* @param productID - The Product ID to add
|
|
2311
|
+
* @param metaData - Arbitrary meta-data that can be used against certain operaions
|
|
2312
|
+
*/
|
|
2313
|
+
setProduct(productID, productVariationID, metaData = null) {
|
|
2314
|
+
if (productID && productVariationID) {
|
|
2315
|
+
metaData = metaData || { augment: true, type: "product" };
|
|
2316
|
+
metaData.type = "product";
|
|
2317
|
+
const states = this._state.states;
|
|
2318
|
+
const meta = this._state.meta;
|
|
2319
|
+
let newData = null;
|
|
2320
|
+
const existingData = this.findSceneProductIndex(productID);
|
|
2321
|
+
if (existingData) {
|
|
2322
|
+
newData = existingData;
|
|
2323
|
+
}
|
|
2324
|
+
else {
|
|
2325
|
+
newData = [];
|
|
2326
|
+
// push the new data into the stack
|
|
2327
|
+
states.push(newData);
|
|
2328
|
+
}
|
|
2329
|
+
newData[meta.product_index] = productID;
|
|
2330
|
+
newData[meta.product_variation_index] = productVariationID;
|
|
2331
|
+
newData[meta.meta_index] = metaData;
|
|
2332
|
+
}
|
|
2333
|
+
}
|
|
2201
2334
|
/**
|
|
2202
2335
|
* Adds a new Scene Product/Variation combo with meta-data into the Configurator State
|
|
2203
2336
|
*
|
|
@@ -2341,6 +2474,35 @@ class ConfiguratorState {
|
|
|
2341
2474
|
}
|
|
2342
2475
|
return null;
|
|
2343
2476
|
}
|
|
2477
|
+
/**
|
|
2478
|
+
* @returns Returns the first reference of data in the stack that matches a type, otherwise returns null
|
|
2479
|
+
*/
|
|
2480
|
+
firstOfType(type) {
|
|
2481
|
+
const states = this._state.states;
|
|
2482
|
+
if (states.length > 0) {
|
|
2483
|
+
const meta = this._state.meta;
|
|
2484
|
+
const found = states.find((productState) => {
|
|
2485
|
+
const check = productState[meta.scene_product_index];
|
|
2486
|
+
if (check !== null && check !== undefined) {
|
|
2487
|
+
return productState.length === 3 && data.meta_data.type === type;
|
|
2488
|
+
}
|
|
2489
|
+
return false;
|
|
2490
|
+
});
|
|
2491
|
+
if (!found) {
|
|
2492
|
+
return null;
|
|
2493
|
+
}
|
|
2494
|
+
const data = {
|
|
2495
|
+
scene_product_id: found[meta.scene_product_index],
|
|
2496
|
+
product_variation_id: found[meta.product_variation_index],
|
|
2497
|
+
meta_data: {
|
|
2498
|
+
augment: found[meta.meta_index].augment || true,
|
|
2499
|
+
type: found[meta.meta_index].type || type
|
|
2500
|
+
}
|
|
2501
|
+
};
|
|
2502
|
+
return data;
|
|
2503
|
+
}
|
|
2504
|
+
return null;
|
|
2505
|
+
}
|
|
2344
2506
|
get length() {
|
|
2345
2507
|
return this._state.states.length;
|
|
2346
2508
|
}
|
|
@@ -2366,6 +2528,7 @@ class ConfiguratorState {
|
|
|
2366
2528
|
const configState = new ConfiguratorState(state);
|
|
2367
2529
|
const fscene = new plattar_api_1.Scene(sceneID);
|
|
2368
2530
|
fscene.include(plattar_api_1.Project);
|
|
2531
|
+
fscene.include(plattar_api_1.Product);
|
|
2369
2532
|
fscene.include(plattar_api_1.SceneProduct);
|
|
2370
2533
|
fscene.include(plattar_api_1.SceneModel);
|
|
2371
2534
|
fscene.include(plattar_api_1.SceneProduct.include(plattar_api_1.Product.include(plattar_api_1.ProductVariation)));
|
|
@@ -2390,18 +2553,29 @@ class ConfiguratorState {
|
|
|
2390
2553
|
fscene.include(plattar_api_1.Project);
|
|
2391
2554
|
fscene.include(plattar_api_1.SceneProduct);
|
|
2392
2555
|
fscene.include(plattar_api_1.SceneModel);
|
|
2556
|
+
fscene.include(plattar_api_1.Product);
|
|
2393
2557
|
fscene.include(plattar_api_1.SceneProduct.include(plattar_api_1.Product.include(plattar_api_1.ProductVariation)));
|
|
2394
2558
|
const scene = await fscene.get();
|
|
2395
2559
|
const sceneProducts = scene.relationships.filter(plattar_api_1.SceneProduct);
|
|
2396
2560
|
const sceneModels = scene.relationships.filter(plattar_api_1.SceneModel);
|
|
2397
|
-
|
|
2561
|
+
const products = scene.relationships.filter(plattar_api_1.Product);
|
|
2562
|
+
// add our scene models
|
|
2398
2563
|
sceneModels.forEach((sceneModel) => {
|
|
2399
2564
|
configState.setSceneModel(sceneModel.id, {
|
|
2400
2565
|
augment: sceneModel.attributes.include_in_augment,
|
|
2401
2566
|
type: "scenemodel"
|
|
2402
2567
|
});
|
|
2403
2568
|
});
|
|
2404
|
-
// add
|
|
2569
|
+
// add our products - this is used when scene == furniture
|
|
2570
|
+
products.forEach((product) => {
|
|
2571
|
+
if (product.attributes.product_variation_id) {
|
|
2572
|
+
configState.setProduct(product.id, product.attributes.product_variation_id, {
|
|
2573
|
+
augment: true,
|
|
2574
|
+
type: "product"
|
|
2575
|
+
});
|
|
2576
|
+
}
|
|
2577
|
+
});
|
|
2578
|
+
// add our scene products
|
|
2405
2579
|
sceneProducts.forEach((sceneProduct) => {
|
|
2406
2580
|
const product = sceneProduct.relationships.find(plattar_api_1.Product);
|
|
2407
2581
|
if (product) {
|
|
@@ -2416,7 +2590,13 @@ class ConfiguratorState {
|
|
|
2416
2590
|
variations.forEach((variation) => {
|
|
2417
2591
|
configState._mappedVariationIDValues.set(variation.id, sceneProduct.id);
|
|
2418
2592
|
if (variation.attributes.sku) {
|
|
2419
|
-
configState._mappedVariationSKUValues.
|
|
2593
|
+
const existingSKUs = configState._mappedVariationSKUValues.get(variation.attributes.sku);
|
|
2594
|
+
if (existingSKUs) {
|
|
2595
|
+
existingSKUs.push(variation.id);
|
|
2596
|
+
}
|
|
2597
|
+
else {
|
|
2598
|
+
configState._mappedVariationSKUValues.set(variation.attributes.sku, [variation.id]);
|
|
2599
|
+
}
|
|
2420
2600
|
}
|
|
2421
2601
|
});
|
|
2422
2602
|
}
|
|
@@ -2513,7 +2693,7 @@ exports.Util = Util;
|
|
|
2513
2693
|
},{}],16:[function(require,module,exports){
|
|
2514
2694
|
"use strict";
|
|
2515
2695
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2516
|
-
exports.default = "1.155.
|
|
2696
|
+
exports.default = "1.155.4-b1";
|
|
2517
2697
|
|
|
2518
2698
|
},{}],17:[function(require,module,exports){
|
|
2519
2699
|
"use strict";
|