@pisell/private-materials 6.12.175 → 6.12.177
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/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/preview.css +1 -1
- package/build/lowcode/preview.js +1 -1
- package/build/lowcode/render/default/view.js +21 -21
- package/build/lowcode/view.js +21 -21
- package/es/components/appointmentBooking/deposit/index.d.ts +2 -1
- package/es/components/appointmentBooking/index.d.ts +2 -1
- package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +0 -1
- package/es/components/bigSale/components/TimeBar/index.js +0 -1
- package/es/components/bigSale/dialog.js +0 -1
- package/es/components/bigSale/hooks/useBigSaleContext.js +0 -1
- package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +0 -1
- package/es/components/bigSale/index.js +1 -1
- package/es/components/bigSale/templates/Kiosk/index.js +104 -48
- package/es/components/booking/deposit/index.d.ts +3 -1
- package/es/components/booking/info/addServiceVariant/index.d.ts +3 -1
- package/es/components/booking/info/index.d.ts +2 -1
- package/es/components/booking/materiels/contacts/index.d.ts +2 -1
- package/es/components/booking/materiels/duration/index.d.ts +2 -1
- package/es/components/booking/materiels/startTime/index.d.ts +2 -1
- package/es/components/ecocup/cupList/index.d.ts +2 -1
- package/es/components/ecocup/customerList/index.d.ts +2 -2
- package/es/components/eftpos/index.d.ts +2 -1
- package/es/components/eftposPay/index.d.ts +2 -1
- package/es/components/eventBooking/index.d.ts +2 -1
- package/es/components/kioskSale/index.d.ts +2 -2
- package/es/components/kioskSale/index.js +1 -1
- package/es/components/kioskSkuDetail/index.d.ts +1 -1
- package/es/components/login/index.d.ts +2 -1
- package/es/components/pisellSelectCustomerModal/index.d.ts +2 -1
- package/es/components/productExtension/index.d.ts +2 -1
- package/es/components/ruleSetting/index.d.ts +2 -1
- package/es/components/scanOrder/index.d.ts +2 -2
- package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +0 -1
- package/es/components/sharedSecondaryBigSale/index.d.ts +2 -2
- package/es/components/shoppingCart/index.d.ts +2 -1
- package/es/components/subTotal/index.d.ts +1 -1
- package/es/components/taxSelect/index.d.ts +2 -1
- package/es/components/ticketBooking/index.d.ts +1 -1
- package/es/components/venueBooking/index.d.ts +2 -2
- package/es/components/walletList/index.d.ts +2 -1
- package/es/index.js +0 -2
- package/es/plus/orderList/index.d.ts +1 -1
- package/es/plus/pisellProResourcePickerModal/PisellFloorMapPaletteViewAllModal.d.ts +1 -1
- package/es/plus/pisellProResourcePickerModal/PisellProResourcePickerModal.d.ts +2 -2
- package/es/plus/pisellReservation/components/SelectFloorMapResourceDialog.d.ts +1 -1
- package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
- package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
- package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
- package/es/plus/pisellReservation/floorRoomCard/FloorRoomCardFromData.d.ts +1 -1
- package/es/plus/pisellReservation/floorRoomCard/ReservationFloorRoomCard.d.ts +1 -1
- package/es/plus/pisellReservation/floorRoomCard/mapFloorRoomCardViewProps.d.ts +1 -0
- package/es/plus/pisellReservation/floorRoomCard/views/RoomCardHeaderView.d.ts +1 -0
- package/es/plus/pisellSalesManagement/index.d.ts +1 -1
- package/es/plus/pisellTopology/PisellTopology.d.ts +2 -2
- package/es/plus/pisellTopology/TopologyDeviceCard.d.ts +1 -1
- package/es/plus/productSelect/ProductCard/SkuCard/index.d.ts +7 -5
- package/es/plus/saasCreateOrganization/index.d.ts +2 -1
- package/es/plus/saleDetail/Base.js +0 -1
- package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +0 -1
- package/es/plus/saleDetail/components/DetailActions/index.js +0 -1
- package/es/plus/saleDetail/components/PromotionWalletPanels/index.d.ts +1 -1
- package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +0 -1
- package/es/plus/saleDetail/index.js +0 -1
- package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +0 -1
- package/es/plus/saleDetail/tmpl/B/index.js +0 -1
- package/es/plus/salesSdk/bookingEditService/BookingEditHolderField.js +6 -6
- package/es/plus/salesSdk/components/SalesSdkConfirmHolderModal.js +2 -4
- package/es/plus/salesSdk/context/SalesSdkCartContext.js +28 -21
- package/es/plus/salesSdk/context/SalesSdkHolderContext.js +104 -22
- package/es/plus/salesSdk/context/SalesSdkProvider.js +3 -12
- package/es/plus/salesSdk/hosts/ConfirmHolderHostRenderer.js +14 -5
- package/es/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +5 -2
- package/es/plus/salesSdk/types.d.ts +16 -1
- package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
- package/es/plus/salesSdk/utils/bookingDate.js +1 -1
- package/es/plus/salesSdk/utils/customerAuthGate.js +2 -5
- package/es/plus/salesSdk/utils/enrichCacheItemBeforeAdd.js +1 -1
- package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
- package/es/plus/salesSdk/utils/ensureCustomerAuthBeforeAdd.js +6 -6
- package/es/plus/salesSdk/utils/holderSubmitValidation.js +3 -4
- package/es/plus/salesSdk/utils/productHolderConfig.js +3 -17
- package/es/plus/salesSdk/utils/runAddProductFlow.js +14 -5
- package/es/plus/walletPassGallery/components/passDetail/index.d.ts +2 -1
- package/es/plus/walletPassGallery/index.d.ts +2 -1
- package/es/private-materials/lowcode/authmodal/meta.d.ts +1 -0
- package/es/pro/Login2.0/AuthModal.d.ts +1 -1
- package/es/pro/Login2.0/index.d.ts +1 -2
- package/es/pro/Login2.0/shared/types.d.ts +1 -1
- package/es/pro/Selector/Item.d.ts +1 -1
- package/es/pro/numberKeyboard/index.d.ts +1 -1
- package/es/pro/pisellPhoneKeyboard/index.d.ts +2 -1
- package/es/pro/skuDetailModal/components/weighing/index.d.ts +2 -1
- package/es/pro/skuDetailModal/flow/modules/holder/index.js +4 -1
- package/lib/components/appointmentBooking/deposit/index.d.ts +2 -2
- package/lib/components/appointmentBooking/index.d.ts +2 -2
- package/lib/components/bigSale/index.js +1 -0
- package/lib/components/bigSale/templates/Kiosk/index.js +104 -47
- package/lib/components/booking/deposit/index.d.ts +3 -2
- package/lib/components/booking/info/addServiceVariant/index.d.ts +3 -2
- package/lib/components/booking/info/index.d.ts +2 -2
- package/lib/components/booking/materiels/contacts/index.d.ts +2 -2
- package/lib/components/booking/materiels/duration/index.d.ts +2 -2
- package/lib/components/booking/materiels/startTime/index.d.ts +2 -2
- package/lib/components/ecocup/cupList/index.d.ts +2 -2
- package/lib/components/ecocup/customerList/index.d.ts +2 -2
- package/lib/components/eftpos/index.d.ts +2 -2
- package/lib/components/eftposPay/index.d.ts +2 -2
- package/lib/components/eventBooking/index.d.ts +2 -2
- package/lib/components/kioskSale/index.d.ts +2 -2
- package/lib/components/kioskSale/index.js +1 -1
- package/lib/components/kioskSkuDetail/index.d.ts +1 -1
- package/lib/components/login/index.d.ts +2 -2
- package/lib/components/pisellSelectCustomerModal/index.d.ts +2 -2
- package/lib/components/productExtension/index.d.ts +2 -2
- package/lib/components/ruleSetting/index.d.ts +2 -2
- package/lib/components/scanOrder/index.d.ts +2 -2
- package/lib/components/sharedSecondaryBigSale/index.d.ts +2 -2
- package/lib/components/shoppingCart/index.d.ts +2 -2
- package/lib/components/subTotal/index.d.ts +1 -1
- package/lib/components/taxSelect/index.d.ts +2 -2
- package/lib/components/ticketBooking/index.d.ts +1 -1
- package/lib/components/venueBooking/index.d.ts +2 -2
- package/lib/components/walletList/index.d.ts +2 -2
- package/lib/plus/orderList/index.d.ts +1 -1
- package/lib/plus/pisellProResourcePickerModal/PisellFloorMapPaletteViewAllModal.d.ts +1 -1
- package/lib/plus/pisellProResourcePickerModal/PisellProResourcePickerModal.d.ts +2 -2
- package/lib/plus/pisellReservation/components/SelectFloorMapResourceDialog.d.ts +1 -1
- package/lib/plus/pisellReservation/floorRoomCard/FloorRoomCardFromData.d.ts +1 -1
- package/lib/plus/pisellReservation/floorRoomCard/ReservationFloorRoomCard.d.ts +1 -1
- package/lib/plus/pisellReservation/floorRoomCard/mapFloorRoomCardViewProps.d.ts +1 -0
- package/lib/plus/pisellReservation/floorRoomCard/views/RoomCardHeaderView.d.ts +1 -0
- package/lib/plus/pisellSalesManagement/index.d.ts +1 -1
- package/lib/plus/pisellTopology/PisellTopology.d.ts +2 -2
- package/lib/plus/pisellTopology/TopologyDeviceCard.d.ts +1 -1
- package/lib/plus/productSelect/ProductCard/SkuCard/index.d.ts +7 -6
- package/lib/plus/saasCreateOrganization/index.d.ts +2 -2
- package/lib/plus/saleDetail/components/PromotionWalletPanels/index.d.ts +1 -1
- package/lib/plus/salesSdk/bookingEditService/BookingEditHolderField.js +5 -5
- package/lib/plus/salesSdk/components/SalesSdkConfirmHolderModal.js +2 -4
- package/lib/plus/salesSdk/context/SalesSdkCartContext.js +28 -21
- package/lib/plus/salesSdk/context/SalesSdkHolderContext.js +104 -22
- package/lib/plus/salesSdk/context/SalesSdkProvider.js +3 -12
- package/lib/plus/salesSdk/hosts/ConfirmHolderHostRenderer.js +14 -5
- package/lib/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +5 -2
- package/lib/plus/salesSdk/types.d.ts +16 -1
- package/lib/plus/salesSdk/utils/customerAuthGate.js +1 -4
- package/lib/plus/salesSdk/utils/enrichCacheItemBeforeAdd.js +1 -1
- package/lib/plus/salesSdk/utils/ensureCustomerAuthBeforeAdd.js +6 -6
- package/lib/plus/salesSdk/utils/holderSubmitValidation.js +3 -4
- package/lib/plus/salesSdk/utils/productHolderConfig.js +3 -17
- package/lib/plus/salesSdk/utils/runAddProductFlow.js +14 -5
- package/lib/plus/walletPassGallery/components/passDetail/index.d.ts +2 -2
- package/lib/plus/walletPassGallery/index.d.ts +2 -2
- package/lib/pro/Selector/Item.d.ts +1 -1
- package/lib/pro/numberKeyboard/index.d.ts +1 -1
- package/lib/pro/pisellPhoneKeyboard/index.d.ts +2 -2
- package/lib/pro/skuDetailModal/components/weighing/index.d.ts +2 -2
- package/lib/pro/skuDetailModal/flow/modules/holder/index.js +4 -1
- package/package.json +4 -4
- package/es/plus/pisellReservation/index.js +0 -17
- package/es/plus/salesSdk/index.js +0 -51
|
@@ -27,6 +27,6 @@ interface TicketBookingProps {
|
|
|
27
27
|
/** Rendered at the top of BookingInfo body, before the original body content. */
|
|
28
28
|
bodyTopSlot?: React.ReactNode;
|
|
29
29
|
}
|
|
30
|
-
declare const _default: (props: TicketBookingProps) => JSX.Element;
|
|
30
|
+
declare const _default: (props: TicketBookingProps) => React.JSX.Element;
|
|
31
31
|
//#endregion
|
|
32
32
|
export { _default, ticketBookingInitialState };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { VenueBookingProps } from "./types.js";
|
|
2
|
+
import React from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/components/venueBooking/index.d.ts
|
|
5
5
|
/** 场地预订主组件 */
|
|
6
|
-
declare function VenueBooking(props: VenueBookingProps): JSX.Element;
|
|
6
|
+
declare function VenueBooking(props: VenueBookingProps): React.JSX.Element;
|
|
7
7
|
//#endregion
|
|
8
8
|
export { VenueBooking };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
2
|
//#region src/components/walletList/index.d.ts
|
|
3
|
-
declare const WalletList: (props: any) => JSX.Element;
|
|
3
|
+
declare const WalletList: (props: any) => React.JSX.Element;
|
|
4
4
|
//#endregion
|
|
5
5
|
export { WalletList };
|
|
@@ -23,6 +23,6 @@ interface PisellFloorMapPaletteViewAllModalProps {
|
|
|
23
23
|
/** 容器平台:透传到 PisellProResourcePickerModal,手机请传 'h5' */
|
|
24
24
|
platform?: 'pc' | 'h5' | 'ipad';
|
|
25
25
|
}
|
|
26
|
-
declare function PisellFloorMapPaletteViewAllModal(props: PisellFloorMapPaletteViewAllModalProps): JSX.Element;
|
|
26
|
+
declare function PisellFloorMapPaletteViewAllModal(props: PisellFloorMapPaletteViewAllModalProps): React.JSX.Element;
|
|
27
27
|
//#endregion
|
|
28
28
|
export { PisellFloorMapPaletteViewAllModal };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { PisellProResourcePickerModalProps } from "./types.js";
|
|
2
|
+
import React from "react";
|
|
3
3
|
//#region src/plus/pisellProResourcePickerModal/PisellProResourcePickerModal.d.ts
|
|
4
|
-
declare function PisellProResourcePickerModal(props: PisellProResourcePickerModalProps): JSX.Element;
|
|
4
|
+
declare function PisellProResourcePickerModal(props: PisellProResourcePickerModalProps): React.JSX.Element;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { PisellProResourcePickerModal };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import React from "react";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { PisellTopologyProps } from "./types.js";
|
|
2
|
+
import React from "react";
|
|
3
3
|
//#region src/plus/pisellTopology/PisellTopology.d.ts
|
|
4
|
-
declare function PisellTopology(props: PisellTopologyProps): JSX.Element;
|
|
4
|
+
declare function PisellTopology(props: PisellTopologyProps): React.JSX.Element;
|
|
5
5
|
declare const PisellTopologyCore: typeof PisellTopology;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { PisellTopology, PisellTopologyCore };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
2
3
|
//#region src/plus/productSelect/ProductCard/SkuCard/index.d.ts
|
|
3
4
|
declare const SkuCard: {
|
|
4
|
-
(props: any): JSX.Element | null;
|
|
5
|
-
A1: (props: any) => JSX.Element;
|
|
6
|
-
A2: (props: any) => JSX.Element;
|
|
7
|
-
A5: (props: any) => JSX.Element;
|
|
8
|
-
A9: (props: any) => JSX.Element;
|
|
5
|
+
(props: any): React.JSX.Element | null;
|
|
6
|
+
A1: (props: any) => React.JSX.Element;
|
|
7
|
+
A2: (props: any) => React.JSX.Element;
|
|
8
|
+
A5: (props: any) => React.JSX.Element;
|
|
9
|
+
A9: (props: any) => React.JSX.Element;
|
|
9
10
|
};
|
|
10
11
|
//#endregion
|
|
11
12
|
export { SkuCard };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { SCOProps } from "./types.js";
|
|
2
|
+
import React from "react";
|
|
3
3
|
//#region src/plus/saasCreateOrganization/index.d.ts
|
|
4
|
-
declare const SaasCreateOrganization: (props: SCOProps) => JSX.Element;
|
|
4
|
+
declare const SaasCreateOrganization: (props: SCOProps) => React.JSX.Element;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { SaasCreateOrganization };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Key, ReactNode, Ref } from "react";
|
|
1
|
+
import React, { Key, ReactNode, Ref } from "react";
|
|
2
2
|
//#region src/plus/saleDetail/components/PromotionWalletPanels/index.d.ts
|
|
3
3
|
type SaleDetailPromotionWalletPanelTone = 'default' | 'success' | 'warning' | 'danger';
|
|
4
4
|
type PromotionWalletPanelsAppearance = 'dark' | 'light';
|
|
@@ -32,7 +32,7 @@ function hasHolderFormFields(formDataConfig) {
|
|
|
32
32
|
return Array.isArray(formDataConfig === null || formDataConfig === void 0 ? void 0 : formDataConfig.field) || Array.isArray(formDataConfig === null || formDataConfig === void 0 ? void 0 : formDataConfig.form_field);
|
|
33
33
|
}
|
|
34
34
|
const BookingEditHolderField = ({ state, cacheItem, required, value, onChange, getCurrentCacheItem, presentation = "modal" }) => {
|
|
35
|
-
var _context$appHelper, _state$bookingConfig, _holderConfig$form,
|
|
35
|
+
var _context$appHelper, _state$bookingConfig, _holderConfig$form, _currentCacheItem$_ex, _cacheItem$_extend, _state$pet5, _state$pet6, _state$pet7, _state$bookingConfig3, _inlineState$bookingC2, _inlineState$pet2, _state$client2, _inlineState$client5;
|
|
36
36
|
const bridges = require_SalesSdkHostBridgesContext.useSalesSdkHostBridges();
|
|
37
37
|
const platform = require_useEngineContext.usePlatform();
|
|
38
38
|
const context = require_useEngineContext.default();
|
|
@@ -41,8 +41,8 @@ const BookingEditHolderField = ({ state, cacheItem, required, value, onChange, g
|
|
|
41
41
|
const isInline = presentation === "inline";
|
|
42
42
|
const holderConfig = (state === null || state === void 0 || (_state$bookingConfig = state.bookingConfig) === null || _state$bookingConfig === void 0 ? void 0 : _state$bookingConfig.holder) || {};
|
|
43
43
|
const title = (holderConfig === null || holderConfig === void 0 || (_holderConfig$form = holderConfig.form) === null || _holderConfig$form === void 0 ? void 0 : _holderConfig$form.title) || (holderConfig === null || holderConfig === void 0 ? void 0 : holderConfig.title) || _pisell_utils.locales.getText("pisell2.text.holder");
|
|
44
|
-
const isRequired = required !== null && required !== void 0 ? required : (state === null || state === void 0 || (_state$bookingConfig2 = state.bookingConfig) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.config) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.basic) === null || _state$bookingConfig2 === void 0 ? void 0 : _state$bookingConfig2.subject_require) === "require";
|
|
45
44
|
const currentCacheItem = (getCurrentCacheItem === null || getCurrentCacheItem === void 0 ? void 0 : getCurrentCacheItem()) || cacheItem;
|
|
45
|
+
const isRequired = required !== null && required !== void 0 ? required : require_productHolderConfig.isProductHolderRequired(currentCacheItem);
|
|
46
46
|
const maxSelectedCount = (holderConfig === null || holderConfig === void 0 ? void 0 : holderConfig.maxSelectedCount) || (currentCacheItem === null || currentCacheItem === void 0 || (_currentCacheItem$_ex = currentCacheItem._extend) === null || _currentCacheItem$_ex === void 0 ? void 0 : _currentCacheItem$_ex.quantity) || (cacheItem === null || cacheItem === void 0 || (_cacheItem$_extend = cacheItem._extend) === null || _cacheItem$_extend === void 0 ? void 0 : _cacheItem$_extend.quantity) || 1;
|
|
47
47
|
const selectType = maxSelectedCount > 1 ? "multiple" : "single";
|
|
48
48
|
const liveHolderOptions = getHolderOptionsForSource(currentCacheItem);
|
|
@@ -53,16 +53,16 @@ const BookingEditHolderField = ({ state, cacheItem, required, value, onChange, g
|
|
|
53
53
|
setSelectedValues(normalizeHolderFieldValue(value));
|
|
54
54
|
}, [value]);
|
|
55
55
|
const stateHolderRawList = (0, react.useMemo)(() => {
|
|
56
|
-
var _state$pet, _ref, _ref2, _state$pet$formData$, _state$pet2, _state$pet3, _state$
|
|
56
|
+
var _state$pet, _ref, _ref2, _state$pet$formData$, _state$pet2, _state$pet3, _state$bookingConfig2, _state$pet4;
|
|
57
57
|
const holdersFromState = Array.isArray(state === null || state === void 0 || (_state$pet = state.pet) === null || _state$pet === void 0 ? void 0 : _state$pet.holders) ? state.pet.holders : [];
|
|
58
|
-
const formId = (_ref = (_ref2 = (_state$pet$formData$ = state === null || state === void 0 || (_state$pet2 = state.pet) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2.formData) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2[0]) === null || _state$pet2 === void 0 ? void 0 : _state$pet2.form_id) !== null && _state$pet$formData$ !== void 0 ? _state$pet$formData$ : state === null || state === void 0 || (_state$pet3 = state.pet) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3.formData) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3[0]) === null || _state$pet3 === void 0 ? void 0 : _state$pet3.id) !== null && _ref2 !== void 0 ? _ref2 : state === null || state === void 0 || (_state$
|
|
58
|
+
const formId = (_ref = (_ref2 = (_state$pet$formData$ = state === null || state === void 0 || (_state$pet2 = state.pet) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2.formData) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2[0]) === null || _state$pet2 === void 0 ? void 0 : _state$pet2.form_id) !== null && _state$pet$formData$ !== void 0 ? _state$pet$formData$ : state === null || state === void 0 || (_state$pet3 = state.pet) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3.formData) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3[0]) === null || _state$pet3 === void 0 ? void 0 : _state$pet3.id) !== null && _ref2 !== void 0 ? _ref2 : state === null || state === void 0 || (_state$bookingConfig2 = state.bookingConfig) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.config) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.basic) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.appointment_subject) === null || _state$bookingConfig2 === void 0 ? void 0 : _state$bookingConfig2.form_id) !== null && _ref !== void 0 ? _ref : 0;
|
|
59
59
|
const holdersFromValue = Array.isArray(state === null || state === void 0 || (_state$pet4 = state.pet) === null || _state$pet4 === void 0 || (_state$pet4 = _state$pet4.value) === null || _state$pet4 === void 0 ? void 0 : _state$pet4[formId]) ? state.pet.value[formId] : [];
|
|
60
60
|
return holdersFromState.length > 0 ? holdersFromState : holdersFromValue;
|
|
61
61
|
}, [
|
|
62
62
|
state === null || state === void 0 || (_state$pet5 = state.pet) === null || _state$pet5 === void 0 ? void 0 : _state$pet5.formData,
|
|
63
63
|
state === null || state === void 0 || (_state$pet6 = state.pet) === null || _state$pet6 === void 0 ? void 0 : _state$pet6.holders,
|
|
64
64
|
state === null || state === void 0 || (_state$pet7 = state.pet) === null || _state$pet7 === void 0 ? void 0 : _state$pet7.value,
|
|
65
|
-
state === null || state === void 0 || (_state$
|
|
65
|
+
state === null || state === void 0 || (_state$bookingConfig3 = state.bookingConfig) === null || _state$bookingConfig3 === void 0 ? void 0 : _state$bookingConfig3.config
|
|
66
66
|
]);
|
|
67
67
|
const inlineHolders = (0, react.useMemo)(() => {
|
|
68
68
|
if (Array.isArray(inlinePet.holders)) return inlinePet.holders;
|
|
@@ -52,11 +52,9 @@ const STATUS_OPTIONS = [
|
|
|
52
52
|
/**
|
|
53
53
|
* SalesSdk 版「预约主体未分配」弹窗,UI 与交互对齐 booking ConfirmHolderModal。
|
|
54
54
|
*/
|
|
55
|
-
function SalesSdkConfirmHolderModalContent({ open, lines, liveUnassignedCount,
|
|
56
|
-
var _bookingConfig$config;
|
|
55
|
+
function SalesSdkConfirmHolderModalContent({ open, lines, liveUnassignedCount, canSkip, onAssign, onConfirm, onSkip, onDismissConfirmed, variant }) {
|
|
57
56
|
const isPhoneVariant = variant === "phone";
|
|
58
57
|
const [modal, contextHolder] = antd.Modal.useModal();
|
|
59
|
-
const isSubjectOptional = (bookingConfig === null || bookingConfig === void 0 || (_bookingConfig$config = bookingConfig.config) === null || _bookingConfig$config === void 0 || (_bookingConfig$config = _bookingConfig$config.basic) === null || _bookingConfig$config === void 0 ? void 0 : _bookingConfig$config.subject_require) !== "require";
|
|
60
58
|
const statusOptions = (0, react.useMemo)(() => STATUS_OPTIONS.map((option) => ({
|
|
61
59
|
key: option.key,
|
|
62
60
|
label: _pisell_utils.locales.getText(option.labelKey),
|
|
@@ -131,7 +129,7 @@ function SalesSdkConfirmHolderModalContent({ open, lines, liveUnassignedCount, b
|
|
|
131
129
|
onPromotion: () => {},
|
|
132
130
|
onGift: () => {}
|
|
133
131
|
});
|
|
134
|
-
})), /* @__PURE__ */ react.default.createElement("div", { className: "confirm-holder-modal-footer" },
|
|
132
|
+
})), /* @__PURE__ */ react.default.createElement("div", { className: "confirm-holder-modal-footer" }, canSkip && onSkip ? /* @__PURE__ */ react.default.createElement(antd.Button, {
|
|
135
133
|
onClick: onSkip,
|
|
136
134
|
className: "skip-button",
|
|
137
135
|
size: "large"
|
|
@@ -307,7 +307,7 @@ function readSnapshot(bookingTicket, getHolderOptionsForSource = () => [], shoul
|
|
|
307
307
|
return EMPTY_SNAPSHOT;
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
|
-
const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingLinesForDisplay = true }) => {
|
|
310
|
+
const SalesSdkCartProvider = ({ children, deferHolderAuthOnClose = false, shouldMergeProductLines, mergeBookingLinesForDisplay = true }) => {
|
|
311
311
|
var _sales$bookingTicket;
|
|
312
312
|
const sales = (0, react.useContext)(require_SalesSdkContext.SalesSdkContext);
|
|
313
313
|
const productsCtx = (0, react.useContext)(require_SalesSdkProductContext.SalesSdkProductContext);
|
|
@@ -318,7 +318,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
318
318
|
const refreshSummary = (0, react.useContext)(require_SalesSdkSummaryContext.SalesSdkSummaryRefreshContext);
|
|
319
319
|
const prepareSummary = (0, react.useContext)(require_SalesSdkSummaryContext.SalesSdkSummaryPrepareContext);
|
|
320
320
|
const refreshRoot = (0, react.useContext)(require_SalesSdkProvider.SalesSdkRootRefreshContext);
|
|
321
|
-
const { holderOptions, getHolderOptionsForSource, ensureHolderOptionsForSource, reload: reloadHolderOptions } = require_SalesSdkHolderContext.useSalesSdkHolderOptional();
|
|
321
|
+
const { holderOptions, getHolderOptionsForSource, ensureHolderOptionsForSource, prepareHolderOptionsForSource, reload: reloadHolderOptions } = require_SalesSdkHolderContext.useSalesSdkHolderOptional();
|
|
322
322
|
const Toast = (0, _pisell_materials.useToast)();
|
|
323
323
|
const toastRef = (0, react.useRef)(Toast);
|
|
324
324
|
toastRef.current = Toast;
|
|
@@ -938,7 +938,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
938
938
|
const runDirectAddFromCacheItem = function() {
|
|
939
939
|
var _ref11 = require_asyncToGenerator._asyncToGenerator(function* (rawCacheItem) {
|
|
940
940
|
const cacheItemForEnrich = require_mergeCatalogDurationIntoCacheItem.mergeCatalogDurationIntoCacheItem(require_applyExplicitAddQuantityToCacheItem.applyExplicitAddQuantityToCacheItem(rawCacheItem, addQty), product);
|
|
941
|
-
const shouldPrepareHolderOptions = require_shouldPromptHolderOnAddCart.shouldPromptHolderOnAddCart({
|
|
941
|
+
const shouldPrepareHolderOptions = !(options === null || options === void 0 ? void 0 : options.deferHolderUntilSubmit) && require_shouldPromptHolderOnAddCart.shouldPromptHolderOnAddCart({
|
|
942
942
|
cacheItem: cacheItemForEnrich,
|
|
943
943
|
bookingConfig: flowCtx.bookingConfig,
|
|
944
944
|
productSource: product,
|
|
@@ -952,6 +952,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
952
952
|
}, flowCtx), {}, {
|
|
953
953
|
initialHolderIds: options === null || options === void 0 ? void 0 : options.initialHolderIds,
|
|
954
954
|
holderOptions: holderOptionsForProduct,
|
|
955
|
+
deferHolderUntilSubmit: options === null || options === void 0 ? void 0 : options.deferHolderUntilSubmit,
|
|
955
956
|
mode: "direct"
|
|
956
957
|
})) : {
|
|
957
958
|
status: "ok",
|
|
@@ -1030,7 +1031,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
1030
1031
|
*/
|
|
1031
1032
|
const confirmDetail = (0, ahooks.useMemoizedFn)(function() {
|
|
1032
1033
|
var _ref15 = require_asyncToGenerator._asyncToGenerator(function* (input) {
|
|
1033
|
-
var _flowCtx$date7, _flowCtx$bookingConfi4, _input$options, _input$
|
|
1034
|
+
var _flowCtx$date7, _flowCtx$bookingConfi4, _input$options, _input$options5, _input$options6, _input$options7;
|
|
1034
1035
|
if (!bookingTicket) throw new Error("[SalesSdk] Cart: bookingTicket 未初始化");
|
|
1035
1036
|
if (typeof bookingTicket.transformDetailToProductAndBooking !== "function") throw new Error("[SalesSdk] Cart: bookingTicket.transformDetailToProductAndBooking 不可用");
|
|
1036
1037
|
const confirmQuantity = require_resolveConfirmDetailQuantity.resolveConfirmDetailQuantity(input);
|
|
@@ -1051,7 +1052,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
1051
1052
|
if ((_input$options = input.options) === null || _input$options === void 0 ? void 0 : _input$options.multiDayRange) cacheItem = require_patchCacheItemDateRange.patchCacheItemDateRange(cacheItem, input.options.multiDayRange);
|
|
1052
1053
|
else cacheItem = require_patchCacheItemDateRange.applyDefaultMultiDayRangeIfNeeded(cacheItem, catalogItem, flowCtx.date);
|
|
1053
1054
|
if (typeof bookingTicket.decideAfterDetail === "function") {
|
|
1054
|
-
var _flowCtx$date8, _flowCtx$bookingConfi5, _input$options2;
|
|
1055
|
+
var _flowCtx$date8, _flowCtx$bookingConfi5, _input$options2, _input$options3, _input$options4;
|
|
1055
1056
|
const decision = bookingTicket.decideAfterDetail(cacheItem, {
|
|
1056
1057
|
quantity: confirmQuantity,
|
|
1057
1058
|
customerId: flowCtx.customerId,
|
|
@@ -1073,14 +1074,15 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
1073
1074
|
})
|
|
1074
1075
|
};
|
|
1075
1076
|
}
|
|
1076
|
-
const holderOptionsForProduct = yield ensureHolderOptionsForSource(input.item);
|
|
1077
|
+
const holderOptionsForProduct = ((_input$options2 = input.options) === null || _input$options2 === void 0 ? void 0 : _input$options2.deferHolderUntilSubmit) ? getHolderOptionsForSource(input.item) : yield ensureHolderOptionsForSource(input.item);
|
|
1077
1078
|
const enriched = yield require_enrichCacheItemBeforeAdd.enrichCacheItemBeforeAdd(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({
|
|
1078
1079
|
cacheItem: decision.cacheItem,
|
|
1079
1080
|
catalogItem: input.item,
|
|
1080
1081
|
uiHosts
|
|
1081
1082
|
}, flowCtx), {}, {
|
|
1082
|
-
initialHolderIds: (_input$
|
|
1083
|
+
initialHolderIds: (_input$options3 = input.options) === null || _input$options3 === void 0 ? void 0 : _input$options3.initialHolderIds,
|
|
1083
1084
|
holderOptions: holderOptionsForProduct,
|
|
1085
|
+
deferHolderUntilSubmit: (_input$options4 = input.options) === null || _input$options4 === void 0 ? void 0 : _input$options4.deferHolderUntilSubmit,
|
|
1084
1086
|
mode: "direct"
|
|
1085
1087
|
}));
|
|
1086
1088
|
if (enriched.status !== "ok") throw new Error("[SalesSdk] confirmDetail: 加车前校验未通过(Holder / 跨日 Host 未配置或用户取消)");
|
|
@@ -1089,14 +1091,15 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
1089
1091
|
products: yield addProductToOrderFromCache(input.item, enriched.cacheItem, { quantity: require_resolveConfirmDetailQuantity.resolveAddQuantityFromCacheItem(enriched.cacheItem, confirmQuantity) })
|
|
1090
1092
|
};
|
|
1091
1093
|
}
|
|
1092
|
-
const holderOptionsForProduct = yield ensureHolderOptionsForSource(input.item);
|
|
1094
|
+
const holderOptionsForProduct = ((_input$options5 = input.options) === null || _input$options5 === void 0 ? void 0 : _input$options5.deferHolderUntilSubmit) ? getHolderOptionsForSource(input.item) : yield ensureHolderOptionsForSource(input.item);
|
|
1093
1095
|
const enriched = yield require_enrichCacheItemBeforeAdd.enrichCacheItemBeforeAdd(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({
|
|
1094
1096
|
cacheItem,
|
|
1095
1097
|
catalogItem: input.item,
|
|
1096
1098
|
uiHosts
|
|
1097
1099
|
}, flowCtx), {}, {
|
|
1098
|
-
initialHolderIds: (_input$
|
|
1100
|
+
initialHolderIds: (_input$options6 = input.options) === null || _input$options6 === void 0 ? void 0 : _input$options6.initialHolderIds,
|
|
1099
1101
|
holderOptions: holderOptionsForProduct,
|
|
1102
|
+
deferHolderUntilSubmit: (_input$options7 = input.options) === null || _input$options7 === void 0 ? void 0 : _input$options7.deferHolderUntilSubmit,
|
|
1100
1103
|
mode: "direct"
|
|
1101
1104
|
}));
|
|
1102
1105
|
if (enriched.status !== "ok") throw new Error("[SalesSdk] confirmDetail: 加车前校验未通过(Holder / 跨日 Host 未配置或用户取消)");
|
|
@@ -1112,9 +1115,9 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
1112
1115
|
/** 资源 / 时间抽屉确认后加车。 */
|
|
1113
1116
|
const confirmBookingEdit = (0, ahooks.useMemoizedFn)(function() {
|
|
1114
1117
|
var _ref16 = require_asyncToGenerator._asyncToGenerator(function* (input) {
|
|
1115
|
-
var _input$
|
|
1118
|
+
var _input$options8;
|
|
1116
1119
|
if (!bookingTicket) throw new Error("[SalesSdk] Cart: bookingTicket 未初始化");
|
|
1117
|
-
const products = yield addProductToOrderFromCache(input.cacheItem, input.cacheItem, { quantity: require_resolveConfirmDetailQuantity.resolveAddQuantityFromCacheItem(input.cacheItem, (_input$
|
|
1120
|
+
const products = yield addProductToOrderFromCache(input.cacheItem, input.cacheItem, { quantity: require_resolveConfirmDetailQuantity.resolveAddQuantityFromCacheItem(input.cacheItem, (_input$options8 = input.options) === null || _input$options8 === void 0 ? void 0 : _input$options8.quantity) });
|
|
1118
1121
|
reloadHolderOptions();
|
|
1119
1122
|
return { products };
|
|
1120
1123
|
});
|
|
@@ -1128,13 +1131,20 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
1128
1131
|
/** 无防抖的加车编排(规格 / 资源弹窗链)。 */
|
|
1129
1132
|
const runAddProductFlowBase = (0, ahooks.useMemoizedFn)(function() {
|
|
1130
1133
|
var _ref17 = require_asyncToGenerator._asyncToGenerator(function* (product, options) {
|
|
1131
|
-
|
|
1134
|
+
let deferHolderUntilSubmit = (options === null || options === void 0 ? void 0 : options.deferHolderUntilSubmit) === true;
|
|
1135
|
+
let holderOptionsForProduct = deferHolderUntilSubmit ? getHolderOptionsForSource(product) : [];
|
|
1136
|
+
if (!deferHolderUntilSubmit) {
|
|
1137
|
+
const preparedHolderOptions = yield prepareHolderOptionsForSource(product, { allowBoundCustomerAccess: deferHolderAuthOnClose });
|
|
1138
|
+
holderOptionsForProduct = preparedHolderOptions.options;
|
|
1139
|
+
if (deferHolderAuthOnClose && preparedHolderOptions.loginClosed) deferHolderUntilSubmit = true;
|
|
1140
|
+
}
|
|
1132
1141
|
return require_runAddProductFlow.runAddProductFlow({
|
|
1133
1142
|
addProduct,
|
|
1134
1143
|
confirmDetail,
|
|
1135
1144
|
confirmBookingEdit
|
|
1136
1145
|
}, uiHosts, product, require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, options), getAddFlowContext()), {}, {
|
|
1137
1146
|
holderOptions: holderOptionsForProduct,
|
|
1147
|
+
deferHolderUntilSubmit,
|
|
1138
1148
|
onBookingSelectionCommitted: syncCommittedBookingSelection
|
|
1139
1149
|
}));
|
|
1140
1150
|
});
|
|
@@ -1245,24 +1255,21 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
|
|
|
1245
1255
|
*/
|
|
1246
1256
|
const addProductWithFlow = (0, ahooks.useMemoizedFn)(function() {
|
|
1247
1257
|
var _ref20 = require_asyncToGenerator._asyncToGenerator(function* (product, options) {
|
|
1248
|
-
var _ticket$
|
|
1258
|
+
var _ticket$getTempOrder, _ticket$getTempOrder2, _ticket$getOrderCusto, _ticket$getOrderCusto2, _liveTempOrder$custom, _liveTempOrder$_exten, _liveTempOrder$_exten2, _flowCtx$tempOrder, _flowCtx$tempOrder2, _flowCtx$tempOrder3, _flowCtx$tempOrder4, _uiHostsRef$current2, _ticket$setOrderCusto;
|
|
1249
1259
|
if (!bookingTicketRef.current) throw new Error("[SalesSdk] Cart: bookingTicket 未初始化");
|
|
1250
1260
|
const ticket = bookingTicketRef.current;
|
|
1251
1261
|
const flowCtx = getAddFlowContextRef.current();
|
|
1252
|
-
const otherParams = yield Promise.resolve(((_ticket$getOtherParam = ticket.getOtherParams) === null || _ticket$getOtherParam === void 0 ? void 0 : _ticket$getOtherParam.call(ticket)) || {});
|
|
1253
1262
|
const liveTempOrder = (_ticket$getTempOrder = (_ticket$getTempOrder2 = ticket.getTempOrder) === null || _ticket$getTempOrder2 === void 0 ? void 0 : _ticket$getTempOrder2.call(ticket)) !== null && _ticket$getTempOrder !== void 0 ? _ticket$getTempOrder : null;
|
|
1254
1263
|
const orderCustomerSnapshot = (_ticket$getOrderCusto = (_ticket$getOrderCusto2 = ticket.getOrderCustomerSnapshot) === null || _ticket$getOrderCusto2 === void 0 ? void 0 : _ticket$getOrderCusto2.call(ticket)) !== null && _ticket$getOrderCusto !== void 0 ? _ticket$getOrderCusto : null;
|
|
1255
|
-
const
|
|
1256
|
-
if (!(yield require_ensureCustomerAuthBeforeAdd.ensureCustomerAuthBeforeAdd({
|
|
1264
|
+
const flowOptions = (yield require_ensureCustomerAuthBeforeAdd.ensureCustomerAuthBeforeAdd({
|
|
1257
1265
|
product,
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
currentCustomerId,
|
|
1266
|
+
enabled: deferHolderAuthOnClose,
|
|
1267
|
+
currentCustomerId: require_customerAuthGate.resolveCustomerAuthCurrentCustomerId(liveTempOrder === null || liveTempOrder === void 0 ? void 0 : liveTempOrder.customer_id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$custom = liveTempOrder.customer) === null || _liveTempOrder$custom === void 0 ? void 0 : _liveTempOrder$custom.id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$_exten = liveTempOrder._extend) === null || _liveTempOrder$_exten === void 0 || (_liveTempOrder$_exten = _liveTempOrder$_exten.customerSnapshot) === null || _liveTempOrder$_exten === void 0 ? void 0 : _liveTempOrder$_exten.customer_id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$_exten2 = liveTempOrder._extend) === null || _liveTempOrder$_exten2 === void 0 || (_liveTempOrder$_exten2 = _liveTempOrder$_exten2.customerSnapshot) === null || _liveTempOrder$_exten2 === void 0 ? void 0 : _liveTempOrder$_exten2.id, orderCustomerSnapshot === null || orderCustomerSnapshot === void 0 ? void 0 : orderCustomerSnapshot.customer_id, orderCustomerSnapshot === null || orderCustomerSnapshot === void 0 ? void 0 : orderCustomerSnapshot.id, flowCtx.customerId, (_flowCtx$tempOrder = flowCtx.tempOrder) === null || _flowCtx$tempOrder === void 0 ? void 0 : _flowCtx$tempOrder.customer_id, (_flowCtx$tempOrder2 = flowCtx.tempOrder) === null || _flowCtx$tempOrder2 === void 0 || (_flowCtx$tempOrder2 = _flowCtx$tempOrder2.customer) === null || _flowCtx$tempOrder2 === void 0 ? void 0 : _flowCtx$tempOrder2.id, (_flowCtx$tempOrder3 = flowCtx.tempOrder) === null || _flowCtx$tempOrder3 === void 0 || (_flowCtx$tempOrder3 = _flowCtx$tempOrder3._extend) === null || _flowCtx$tempOrder3 === void 0 || (_flowCtx$tempOrder3 = _flowCtx$tempOrder3.customerSnapshot) === null || _flowCtx$tempOrder3 === void 0 ? void 0 : _flowCtx$tempOrder3.customer_id, (_flowCtx$tempOrder4 = flowCtx.tempOrder) === null || _flowCtx$tempOrder4 === void 0 || (_flowCtx$tempOrder4 = _flowCtx$tempOrder4._extend) === null || _flowCtx$tempOrder4 === void 0 || (_flowCtx$tempOrder4 = _flowCtx$tempOrder4.customerSnapshot) === null || _flowCtx$tempOrder4 === void 0 ? void 0 : _flowCtx$tempOrder4.id),
|
|
1261
1268
|
openCustomerAuth: (_uiHostsRef$current2 = uiHostsRef.current) === null || _uiHostsRef$current2 === void 0 ? void 0 : _uiHostsRef$current2.openCustomerAuth,
|
|
1262
1269
|
setOrderCustomer: (_ticket$setOrderCusto = ticket.setOrderCustomer) === null || _ticket$setOrderCusto === void 0 ? void 0 : _ticket$setOrderCusto.bind(ticket)
|
|
1263
|
-
})))
|
|
1270
|
+
})).status === "deferred" ? require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, options), {}, { deferHolderUntilSubmit: true }) : options;
|
|
1264
1271
|
const productLineMergeEnabled = resolveProductLineMergeEnabled(shouldMergeProductLines);
|
|
1265
|
-
return debouncedAddRef.current.addProductWithFlow(product, productLineMergeEnabled ?
|
|
1272
|
+
return debouncedAddRef.current.addProductWithFlow(product, productLineMergeEnabled ? flowOptions : require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, flowOptions), {}, { debounceMs: 0 }));
|
|
1266
1273
|
});
|
|
1267
1274
|
return function(_x20, _x21) {
|
|
1268
1275
|
return _ref20.apply(this, arguments);
|
|
@@ -13,6 +13,11 @@ let react = require("react");
|
|
|
13
13
|
react = require_runtime.__toESM(react);
|
|
14
14
|
let ahooks = require("ahooks");
|
|
15
15
|
//#region src/plus/salesSdk/context/SalesSdkHolderContext.tsx
|
|
16
|
+
const HOLDER_ACCESS_ALLOWED = {
|
|
17
|
+
allowed: true,
|
|
18
|
+
loginOpened: false,
|
|
19
|
+
loginClosed: false
|
|
20
|
+
};
|
|
16
21
|
const SalesSdkHolderContext = (0, react.createContext)(null);
|
|
17
22
|
SalesSdkHolderContext.displayName = "SalesSdkHolderContext";
|
|
18
23
|
const EMPTY_HOLDER_OPTIONS = [];
|
|
@@ -110,31 +115,49 @@ const SalesSdkHolderProvider = ({ children }) => {
|
|
|
110
115
|
}
|
|
111
116
|
return true;
|
|
112
117
|
}));
|
|
113
|
-
const ensureHolderRequestAccess = (0, ahooks.useMemoizedFn)(() => {
|
|
118
|
+
const ensureHolderRequestAccess = (0, ahooks.useMemoizedFn)((options) => {
|
|
114
119
|
const normalizedPlatform = String(platform || "").trim().toLowerCase();
|
|
115
|
-
if (normalizedPlatform !== "pc" && normalizedPlatform !== "h5") return Promise.resolve(
|
|
120
|
+
if (normalizedPlatform !== "pc" && normalizedPlatform !== "h5") return Promise.resolve(HOLDER_ACCESS_ALLOWED);
|
|
116
121
|
const currentCustomerId = resolveHolderCustomerId(bookingTicket);
|
|
117
122
|
const loggedIn = isLoggedIn();
|
|
118
|
-
if (
|
|
123
|
+
if (!isUnboundHolderCustomerId(currentCustomerId) && (loggedIn || (options === null || options === void 0 ? void 0 : options.allowBoundCustomerAccess) === true)) return Promise.resolve(HOLDER_ACCESS_ALLOWED);
|
|
119
124
|
if (holderAccessPromiseRef.current) return holderAccessPromiseRef.current;
|
|
120
|
-
const accessPromise = loggedIn ? syncAuthenticatedHolderCustomer()
|
|
125
|
+
const accessPromise = loggedIn ? syncAuthenticatedHolderCustomer().then((allowed) => ({
|
|
126
|
+
allowed,
|
|
127
|
+
loginOpened: false,
|
|
128
|
+
loginClosed: false
|
|
129
|
+
})) : new Promise((resolve) => {
|
|
121
130
|
let settled = false;
|
|
122
|
-
const finish = (
|
|
131
|
+
const finish = (result) => {
|
|
123
132
|
if (settled) return;
|
|
124
133
|
settled = true;
|
|
125
|
-
resolve(
|
|
134
|
+
resolve(result);
|
|
126
135
|
};
|
|
127
136
|
if (!openLoginModal({ callback: (status) => {
|
|
128
137
|
if (settled) return;
|
|
129
138
|
if (status !== "success") {
|
|
130
|
-
finish(
|
|
139
|
+
finish({
|
|
140
|
+
allowed: false,
|
|
141
|
+
loginOpened: true,
|
|
142
|
+
loginClosed: true
|
|
143
|
+
});
|
|
131
144
|
return;
|
|
132
145
|
}
|
|
133
146
|
settled = true;
|
|
134
|
-
syncAuthenticatedHolderCustomer().then(
|
|
147
|
+
syncAuthenticatedHolderCustomer().then((allowed) => {
|
|
148
|
+
resolve({
|
|
149
|
+
allowed,
|
|
150
|
+
loginOpened: true,
|
|
151
|
+
loginClosed: false
|
|
152
|
+
});
|
|
153
|
+
});
|
|
135
154
|
} })) {
|
|
136
155
|
console.warn("[SalesSdk] holder request blocked: login modal is unavailable");
|
|
137
|
-
finish(
|
|
156
|
+
finish({
|
|
157
|
+
allowed: false,
|
|
158
|
+
loginOpened: false,
|
|
159
|
+
loginClosed: false
|
|
160
|
+
});
|
|
138
161
|
}
|
|
139
162
|
});
|
|
140
163
|
holderAccessPromiseRef.current = accessPromise;
|
|
@@ -186,14 +209,30 @@ const SalesSdkHolderProvider = ({ children }) => {
|
|
|
186
209
|
}, {});
|
|
187
210
|
});
|
|
188
211
|
});
|
|
189
|
-
const
|
|
190
|
-
var _ref = require_asyncToGenerator._asyncToGenerator(function* (source) {
|
|
212
|
+
const prepareHolderOptionsForSource = (0, ahooks.useMemoizedFn)(function() {
|
|
213
|
+
var _ref = require_asyncToGenerator._asyncToGenerator(function* (source, options) {
|
|
191
214
|
const holderConfig = require_productHolderConfig.resolveEffectiveHolderConfig(source, bookingConfig);
|
|
192
|
-
if (!holderConfig.enabled || holderConfig.formId === void 0) return
|
|
193
|
-
|
|
215
|
+
if (!holderConfig.enabled || holderConfig.formId === void 0) return {
|
|
216
|
+
options: EMPTY_HOLDER_OPTIONS,
|
|
217
|
+
accessAllowed: true,
|
|
218
|
+
loginOpened: false,
|
|
219
|
+
loginClosed: false
|
|
220
|
+
};
|
|
221
|
+
const access = yield ensureHolderRequestAccess(options);
|
|
222
|
+
if (!access.allowed) return {
|
|
223
|
+
options: EMPTY_HOLDER_OPTIONS,
|
|
224
|
+
accessAllowed: false,
|
|
225
|
+
loginOpened: access.loginOpened,
|
|
226
|
+
loginClosed: access.loginClosed
|
|
227
|
+
};
|
|
194
228
|
const params = resolveRequestParams(source);
|
|
195
229
|
const requestKey = require_enrichCartLineHolderDisplay.buildHolderListRequestKey(params);
|
|
196
|
-
if (!params || !requestKey) return
|
|
230
|
+
if (!params || !requestKey) return {
|
|
231
|
+
options: EMPTY_HOLDER_OPTIONS,
|
|
232
|
+
accessAllowed: true,
|
|
233
|
+
loginOpened: access.loginOpened,
|
|
234
|
+
loginClosed: access.loginClosed
|
|
235
|
+
};
|
|
197
236
|
const cached = mergeHolderOptionsStable(optimisticHolderOptionsByKey[requestKey] || EMPTY_HOLDER_OPTIONS, serverHolderOptionsByKey[requestKey] || EMPTY_HOLDER_OPTIONS);
|
|
198
237
|
if (cached.length) {
|
|
199
238
|
setHolderOptionsRequestKey(requestKey);
|
|
@@ -210,9 +249,19 @@ const SalesSdkHolderProvider = ({ children }) => {
|
|
|
210
249
|
setLoading(loadingKeysRef.current.size > 0);
|
|
211
250
|
});
|
|
212
251
|
}
|
|
213
|
-
return
|
|
252
|
+
return {
|
|
253
|
+
options: cached,
|
|
254
|
+
accessAllowed: true,
|
|
255
|
+
loginOpened: access.loginOpened,
|
|
256
|
+
loginClosed: access.loginClosed
|
|
257
|
+
};
|
|
214
258
|
}
|
|
215
|
-
if (loadingKeysRef.current.has(requestKey)) return
|
|
259
|
+
if (loadingKeysRef.current.has(requestKey)) return {
|
|
260
|
+
options: cached,
|
|
261
|
+
accessAllowed: true,
|
|
262
|
+
loginOpened: access.loginOpened,
|
|
263
|
+
loginClosed: access.loginClosed
|
|
264
|
+
};
|
|
216
265
|
loadingKeysRef.current.add(requestKey);
|
|
217
266
|
setLoading(true);
|
|
218
267
|
try {
|
|
@@ -220,20 +269,38 @@ const SalesSdkHolderProvider = ({ children }) => {
|
|
|
220
269
|
const fromServer = require_formatHolderOptions.formatHolderOptions(Array.isArray(data === null || data === void 0 ? void 0 : data.list) ? data.list : []);
|
|
221
270
|
setServerHolderOptionsByKey((prev) => require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, prev), {}, { [requestKey]: fromServer }));
|
|
222
271
|
setHolderOptionsRequestKey(requestKey);
|
|
223
|
-
return
|
|
272
|
+
return {
|
|
273
|
+
options: mergeHolderOptionsStable(optimisticHolderOptionsByKey[requestKey] || EMPTY_HOLDER_OPTIONS, fromServer),
|
|
274
|
+
accessAllowed: true,
|
|
275
|
+
loginOpened: access.loginOpened,
|
|
276
|
+
loginClosed: access.loginClosed
|
|
277
|
+
};
|
|
224
278
|
} catch (err) {
|
|
225
279
|
console.warn("[SalesSdk] load holderOptions failed", err);
|
|
226
280
|
setHolderOptionsRequestKey(null);
|
|
227
|
-
return
|
|
281
|
+
return {
|
|
282
|
+
options: EMPTY_HOLDER_OPTIONS,
|
|
283
|
+
accessAllowed: true,
|
|
284
|
+
loginOpened: access.loginOpened,
|
|
285
|
+
loginClosed: access.loginClosed
|
|
286
|
+
};
|
|
228
287
|
} finally {
|
|
229
288
|
loadingKeysRef.current.delete(requestKey);
|
|
230
289
|
setLoading(loadingKeysRef.current.size > 0);
|
|
231
290
|
}
|
|
232
291
|
});
|
|
233
|
-
return function(_x) {
|
|
292
|
+
return function(_x, _x2) {
|
|
234
293
|
return _ref.apply(this, arguments);
|
|
235
294
|
};
|
|
236
295
|
}());
|
|
296
|
+
const ensureHolderOptionsForSource = (0, ahooks.useMemoizedFn)(function() {
|
|
297
|
+
var _ref2 = require_asyncToGenerator._asyncToGenerator(function* (source) {
|
|
298
|
+
return (yield prepareHolderOptionsForSource(source)).options;
|
|
299
|
+
});
|
|
300
|
+
return function(_x3) {
|
|
301
|
+
return _ref2.apply(this, arguments);
|
|
302
|
+
};
|
|
303
|
+
}());
|
|
237
304
|
(0, react.useEffect)(() => {
|
|
238
305
|
return require_holderOptionsSyncBridge.registerHolderOptionsSyncBridge({
|
|
239
306
|
upsertHolderOptions,
|
|
@@ -251,7 +318,7 @@ const SalesSdkHolderProvider = ({ children }) => {
|
|
|
251
318
|
let cancelled = false;
|
|
252
319
|
collectHolderSources(bookingTicket, bookingConfig).forEach((source) => {
|
|
253
320
|
require_asyncToGenerator._asyncToGenerator(function* () {
|
|
254
|
-
if (!(yield ensureHolderRequestAccess()) || cancelled) return;
|
|
321
|
+
if (!(yield ensureHolderRequestAccess()).allowed || cancelled) return;
|
|
255
322
|
const params = resolveRequestParams(source);
|
|
256
323
|
const requestKey = require_enrichCartLineHolderDisplay.buildHolderListRequestKey(params);
|
|
257
324
|
if (!params || !requestKey) return;
|
|
@@ -307,6 +374,7 @@ const SalesSdkHolderProvider = ({ children }) => {
|
|
|
307
374
|
getHolderOptionsForSource,
|
|
308
375
|
getHolderOptionsRequestKeyForSource,
|
|
309
376
|
ensureHolderOptionsForSource,
|
|
377
|
+
prepareHolderOptionsForSource,
|
|
310
378
|
reload,
|
|
311
379
|
upsertHolderOptions
|
|
312
380
|
}), [
|
|
@@ -317,6 +385,7 @@ const SalesSdkHolderProvider = ({ children }) => {
|
|
|
317
385
|
getHolderOptionsForSource,
|
|
318
386
|
getHolderOptionsRequestKeyForSource,
|
|
319
387
|
ensureHolderOptionsForSource,
|
|
388
|
+
prepareHolderOptionsForSource,
|
|
320
389
|
reload,
|
|
321
390
|
upsertHolderOptions
|
|
322
391
|
]);
|
|
@@ -335,11 +404,24 @@ function useSalesSdkHolderOptional() {
|
|
|
335
404
|
getHolderOptionsForSource: () => EMPTY_HOLDER_OPTIONS,
|
|
336
405
|
getHolderOptionsRequestKeyForSource: () => null,
|
|
337
406
|
ensureHolderOptionsForSource: function() {
|
|
338
|
-
var
|
|
407
|
+
var _ref3 = require_asyncToGenerator._asyncToGenerator(function* () {
|
|
339
408
|
return EMPTY_HOLDER_OPTIONS;
|
|
340
409
|
});
|
|
341
410
|
return function ensureHolderOptionsForSource() {
|
|
342
|
-
return
|
|
411
|
+
return _ref3.apply(this, arguments);
|
|
412
|
+
};
|
|
413
|
+
}(),
|
|
414
|
+
prepareHolderOptionsForSource: function() {
|
|
415
|
+
var _ref4 = require_asyncToGenerator._asyncToGenerator(function* () {
|
|
416
|
+
return {
|
|
417
|
+
options: EMPTY_HOLDER_OPTIONS,
|
|
418
|
+
accessAllowed: true,
|
|
419
|
+
loginOpened: false,
|
|
420
|
+
loginClosed: false
|
|
421
|
+
};
|
|
422
|
+
});
|
|
423
|
+
return function prepareHolderOptionsForSource() {
|
|
424
|
+
return _ref4.apply(this, arguments);
|
|
343
425
|
};
|
|
344
426
|
}(),
|
|
345
427
|
reload: () => void 0,
|