@crystaldesign/diva-seller 26.13.0-beta.1 → 26.13.0-beta.11
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/esm/index.js +65 -4
- package/build/types/seller/src/components/Basket/index.d.ts.map +1 -1
- package/build/types/seller/src/components/Basket/sellerBasketInit.d.ts +32 -0
- package/build/types/seller/src/components/Basket/sellerBasketInit.d.ts.map +1 -0
- package/build/types/seller/src/tests/sellerBasketInit.test.d.ts +2 -0
- package/build/types/seller/src/tests/sellerBasketInit.test.d.ts.map +1 -0
- package/package.json +5 -5
package/build/esm/index.js
CHANGED
|
@@ -8037,6 +8037,37 @@ function useProduct(basket) {
|
|
|
8037
8037
|
};
|
|
8038
8038
|
}
|
|
8039
8039
|
|
|
8040
|
+
/** The basket fields the seller-basket initialization is derived from. */
|
|
8041
|
+
|
|
8042
|
+
/** Labels of the `onInitSellerBasket` business event — the catalog part of `onInitializeConfigurator`. */
|
|
8043
|
+
|
|
8044
|
+
/**
|
|
8045
|
+
* Builds the analytics payload for a basket that is opened in the seller without a configurator (archive, QR code,
|
|
8046
|
+
* deep link). Without it the configurator session would carry no catalog data, because `onInitializeConfigurator`
|
|
8047
|
+
* is only logged by the configurator. Only the first order set is used.
|
|
8048
|
+
*
|
|
8049
|
+
* @param basket the loaded basket
|
|
8050
|
+
* @param requestedDivaNr the divaNr the basket was opened with (the archive passes `DivaNr-DocumentVersion`)
|
|
8051
|
+
* @returns undefined for a basket without order sets
|
|
8052
|
+
*/
|
|
8053
|
+
function getSellerBasketInit(basket, requestedDivaNr) {
|
|
8054
|
+
var _basket$OrderSets;
|
|
8055
|
+
var orderSet = (_basket$OrderSets = basket.OrderSets) === null || _basket$OrderSets === void 0 ? void 0 : _basket$OrderSets[0];
|
|
8056
|
+
if (!orderSet) return undefined;
|
|
8057
|
+
return {
|
|
8058
|
+
basketValue: orderSet.SetPrice,
|
|
8059
|
+
labels: {
|
|
8060
|
+
catalogCodex: orderSet.CatalogCodex,
|
|
8061
|
+
catalogName: orderSet.CatalogName,
|
|
8062
|
+
accountName: orderSet.AccountName,
|
|
8063
|
+
supplierId: orderSet.AccountGUID,
|
|
8064
|
+
originalProductId: basket.MatchingProductId || basket.OrigProductId,
|
|
8065
|
+
initializationType: 'SELLER_BASKET',
|
|
8066
|
+
initializationId: requestedDivaNr || basket.DivaNr
|
|
8067
|
+
}
|
|
8068
|
+
};
|
|
8069
|
+
}
|
|
8070
|
+
|
|
8040
8071
|
function ownKeys$s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8041
8072
|
function _objectSpread$s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$s(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8042
8073
|
var LOG$5 = getLogger('SellerBasket', 'Basket');
|
|
@@ -8090,8 +8121,30 @@ function Basket(_ref) {
|
|
|
8090
8121
|
isLoading = _useProduct.isLoading,
|
|
8091
8122
|
resetProductSaved = _useProduct.resetProductSaved;
|
|
8092
8123
|
var statusRef = useRef(basket !== null && basket !== void 0 && basket.StatusKey ? basket === null || basket === void 0 ? void 0 : basket.StatusKey : basket !== null && basket !== void 0 && basket.Status ? basket === null || basket === void 0 ? void 0 : basket.Status : '');
|
|
8124
|
+
// Configurator session started by the basket itself, i.e. without a configurator: it still lacks the catalog data.
|
|
8125
|
+
var ownSessionIdRef = useRef();
|
|
8126
|
+
var startOwnSession = function startOwnSession() {
|
|
8127
|
+
DivaUtils$1.businessMetrics.setConfiguratorSessionId();
|
|
8128
|
+
ownSessionIdRef.current = DivaUtils$1.businessMetrics.getConfiguratorSessionId();
|
|
8129
|
+
};
|
|
8130
|
+
var logSellerBasketInit = function logSellerBasketInit(loadedBasket, requestedDivaNr, sessionIdAtOpen) {
|
|
8131
|
+
var ownSessionId = ownSessionIdRef.current;
|
|
8132
|
+
// Baskets handed over by the configurator already have its init event in their session, and a load overtaken
|
|
8133
|
+
// by a newer open belongs to an older session.
|
|
8134
|
+
if (!ownSessionId || ownSessionId !== sessionIdAtOpen || ownSessionId !== DivaUtils$1.businessMetrics.getConfiguratorSessionId()) return;
|
|
8135
|
+
if (!loadedBasket) return;
|
|
8136
|
+
var init = getSellerBasketInit(loadedBasket, requestedDivaNr);
|
|
8137
|
+
if (!init) return;
|
|
8138
|
+
// Once per session: loadBasket re-opens the seller with the loaded basket, which runs the loading effect again.
|
|
8139
|
+
ownSessionIdRef.current = undefined;
|
|
8140
|
+
LOG$5.businessEvent('onInitSellerBasket', 'SellerBasket', 'Basket opened without configurator', init.labels);
|
|
8141
|
+
LOG$5.businessEvent('onActualBasketValue', 'SellerBasket', 'Aktueller Basket Value: ' + init.basketValue, {
|
|
8142
|
+
basketValue: init.basketValue,
|
|
8143
|
+
isInit: true
|
|
8144
|
+
});
|
|
8145
|
+
};
|
|
8093
8146
|
useEffect(function () {
|
|
8094
|
-
if (!basket)
|
|
8147
|
+
if (!basket) startOwnSession();
|
|
8095
8148
|
LOG$5.startTransaction({
|
|
8096
8149
|
event: 'onOpenModule',
|
|
8097
8150
|
message: 'Open Basket',
|
|
@@ -8104,12 +8157,16 @@ function Basket(_ref) {
|
|
|
8104
8157
|
useEffect(function () {
|
|
8105
8158
|
// Wait for the seller session to be established before loading the basket.
|
|
8106
8159
|
if (!sessionGuid) return;
|
|
8107
|
-
|
|
8108
|
-
|
|
8160
|
+
// Opening from the archive starts a new session, also while the basket stays mounted.
|
|
8161
|
+
if (checkBasket === '1' || assignNewDivaNr) startOwnSession();
|
|
8162
|
+
var requestedDivaNr = divaNr;
|
|
8163
|
+
var sessionIdAtOpen = DivaUtils$1.businessMetrics.getConfiguratorSessionId();
|
|
8164
|
+
openBasket(statusRef, divaNr, checkBasket, basket, assignNewDivaNr).then(function (result) {
|
|
8109
8165
|
var _getBasketStatusArr;
|
|
8110
8166
|
LOG$5.successTransaction('ON_OPEN_MODULE_BASKET', {
|
|
8111
8167
|
divaNr: divaNr
|
|
8112
8168
|
});
|
|
8169
|
+
logSellerBasketInit(result === null || result === void 0 ? void 0 : result.basket, requestedDivaNr, sessionIdAtOpen);
|
|
8113
8170
|
if (!statusRef.current || !((_getBasketStatusArr = getBasketStatusArr()) !== null && _getBasketStatusArr !== void 0 && _getBasketStatusArr.includes(statusRef.current))) {
|
|
8114
8171
|
var _basketToUpdate, _currentBasketState$b;
|
|
8115
8172
|
var basketToUpdate = basket;
|
|
@@ -8142,11 +8199,15 @@ function Basket(_ref) {
|
|
|
8142
8199
|
setActBasketPage(currentBasketState === null || currentBasketState === void 0 ? void 0 : currentBasketState.step);
|
|
8143
8200
|
}
|
|
8144
8201
|
}, [currentBasketState === null || currentBasketState === void 0 ? void 0 : currentBasketState.step]);
|
|
8202
|
+
var hasSellerSession = !!sessionGuid;
|
|
8145
8203
|
useEffect(function () {
|
|
8204
|
+
// Until the seller session exists the configurator session id is not final yet (cold load, archive open):
|
|
8205
|
+
// a step logged now would end up in a configurator session of its own.
|
|
8206
|
+
if (!hasSellerSession) return;
|
|
8146
8207
|
LOG$5.businessEvent('onBasketStep', 'SellerBasket', "goto BasketStep '".concat(actBasketPage, "'"), {
|
|
8147
8208
|
basketStep: actBasketPage
|
|
8148
8209
|
});
|
|
8149
|
-
}, [actBasketPage]);
|
|
8210
|
+
}, [actBasketPage, hasSellerSession]);
|
|
8150
8211
|
if (!(currentBasketState !== null && currentBasketState !== void 0 && currentBasketState.basket) || loadingBasket) {
|
|
8151
8212
|
return /*#__PURE__*/jsx(Fragment, {});
|
|
8152
8213
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Basket/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAOhD,OAAO,EAA0C,UAAU,EAAa,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Basket/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAOhD,OAAO,EAA0C,UAAU,EAAa,MAAM,0BAA0B,CAAC;AASzG,UAAU,KAAK;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,KAAK,qBA8frF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BasketData, OrderSetData } from '@crystaldesign/diva-core';
|
|
2
|
+
/** The basket fields the seller-basket initialization is derived from. */
|
|
3
|
+
export interface SellerBasketInitSource extends Pick<BasketData, 'DivaNr' | 'MatchingProductId' | 'OrigProductId'> {
|
|
4
|
+
OrderSets?: Pick<OrderSetData, 'CatalogCodex' | 'CatalogName' | 'AccountName' | 'AccountGUID' | 'SetPrice'>[];
|
|
5
|
+
}
|
|
6
|
+
/** Labels of the `onInitSellerBasket` business event — the catalog part of `onInitializeConfigurator`. */
|
|
7
|
+
export interface SellerBasketInitLabels {
|
|
8
|
+
catalogCodex: string;
|
|
9
|
+
catalogName: string;
|
|
10
|
+
accountName: string;
|
|
11
|
+
/** The AccountGUID, logged under the same name as by the configurator. */
|
|
12
|
+
supplierId: string;
|
|
13
|
+
originalProductId?: string;
|
|
14
|
+
initializationType: 'SELLER_BASKET';
|
|
15
|
+
initializationId: string;
|
|
16
|
+
}
|
|
17
|
+
export interface SellerBasketInit {
|
|
18
|
+
/** Price of the first set — the same meaning as the configurator's `onActualBasketValue`. */
|
|
19
|
+
basketValue: number;
|
|
20
|
+
labels: SellerBasketInitLabels;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Builds the analytics payload for a basket that is opened in the seller without a configurator (archive, QR code,
|
|
24
|
+
* deep link). Without it the configurator session would carry no catalog data, because `onInitializeConfigurator`
|
|
25
|
+
* is only logged by the configurator. Only the first order set is used.
|
|
26
|
+
*
|
|
27
|
+
* @param basket the loaded basket
|
|
28
|
+
* @param requestedDivaNr the divaNr the basket was opened with (the archive passes `DivaNr-DocumentVersion`)
|
|
29
|
+
* @returns undefined for a basket without order sets
|
|
30
|
+
*/
|
|
31
|
+
export declare function getSellerBasketInit(basket: SellerBasketInitSource, requestedDivaNr?: string): SellerBasketInit | undefined;
|
|
32
|
+
//# sourceMappingURL=sellerBasketInit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sellerBasketInit.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Basket/sellerBasketInit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEzE,0EAA0E;AAC1E,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,mBAAmB,GAAG,eAAe,CAAC;IAChH,SAAS,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;CAC/G;AAED,0GAA0G;AAC1G,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,eAAe,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAgB1H"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sellerBasketInit.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/sellerBasketInit.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crystaldesign/diva-seller",
|
|
3
|
-
"version": "26.13.0-beta.
|
|
3
|
+
"version": "26.13.0-beta.11",
|
|
4
4
|
"description": "Seller-facing UI section with its own state provider and services.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"react-dom": "^18.3.1"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@crystaldesign/analytics": "26.13.0-beta.
|
|
33
|
-
"@crystaldesign/products-component": "26.13.0-beta.
|
|
34
|
-
"@crystaldesign/real-time-viewer": "26.13.0-beta.
|
|
32
|
+
"@crystaldesign/analytics": "26.13.0-beta.11",
|
|
33
|
+
"@crystaldesign/products-component": "26.13.0-beta.11",
|
|
34
|
+
"@crystaldesign/real-time-viewer": "26.13.0-beta.11",
|
|
35
35
|
"@emotion/react": "^11.13.3",
|
|
36
36
|
"@emotion/styled": "^11.13.0",
|
|
37
37
|
"@mui/icons-material": "7.3.11",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
},
|
|
43
43
|
"types": "./build/types/seller/src/index.d.ts",
|
|
44
44
|
"module": "build/esm/index.js",
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "a89250fd23b051ef39a88d640b72633fa67a508d"
|
|
46
46
|
}
|