@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.
Files changed (165) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/meta.js +1 -1
  5. package/build/lowcode/preview.css +1 -1
  6. package/build/lowcode/preview.js +1 -1
  7. package/build/lowcode/render/default/view.js +21 -21
  8. package/build/lowcode/view.js +21 -21
  9. package/es/components/appointmentBooking/deposit/index.d.ts +2 -1
  10. package/es/components/appointmentBooking/index.d.ts +2 -1
  11. package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +0 -1
  12. package/es/components/bigSale/components/TimeBar/index.js +0 -1
  13. package/es/components/bigSale/dialog.js +0 -1
  14. package/es/components/bigSale/hooks/useBigSaleContext.js +0 -1
  15. package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +0 -1
  16. package/es/components/bigSale/index.js +1 -1
  17. package/es/components/bigSale/templates/Kiosk/index.js +104 -48
  18. package/es/components/booking/deposit/index.d.ts +3 -1
  19. package/es/components/booking/info/addServiceVariant/index.d.ts +3 -1
  20. package/es/components/booking/info/index.d.ts +2 -1
  21. package/es/components/booking/materiels/contacts/index.d.ts +2 -1
  22. package/es/components/booking/materiels/duration/index.d.ts +2 -1
  23. package/es/components/booking/materiels/startTime/index.d.ts +2 -1
  24. package/es/components/ecocup/cupList/index.d.ts +2 -1
  25. package/es/components/ecocup/customerList/index.d.ts +2 -2
  26. package/es/components/eftpos/index.d.ts +2 -1
  27. package/es/components/eftposPay/index.d.ts +2 -1
  28. package/es/components/eventBooking/index.d.ts +2 -1
  29. package/es/components/kioskSale/index.d.ts +2 -2
  30. package/es/components/kioskSale/index.js +1 -1
  31. package/es/components/kioskSkuDetail/index.d.ts +1 -1
  32. package/es/components/login/index.d.ts +2 -1
  33. package/es/components/pisellSelectCustomerModal/index.d.ts +2 -1
  34. package/es/components/productExtension/index.d.ts +2 -1
  35. package/es/components/ruleSetting/index.d.ts +2 -1
  36. package/es/components/scanOrder/index.d.ts +2 -2
  37. package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +0 -1
  38. package/es/components/sharedSecondaryBigSale/index.d.ts +2 -2
  39. package/es/components/shoppingCart/index.d.ts +2 -1
  40. package/es/components/subTotal/index.d.ts +1 -1
  41. package/es/components/taxSelect/index.d.ts +2 -1
  42. package/es/components/ticketBooking/index.d.ts +1 -1
  43. package/es/components/venueBooking/index.d.ts +2 -2
  44. package/es/components/walletList/index.d.ts +2 -1
  45. package/es/index.js +0 -2
  46. package/es/plus/orderList/index.d.ts +1 -1
  47. package/es/plus/pisellProResourcePickerModal/PisellFloorMapPaletteViewAllModal.d.ts +1 -1
  48. package/es/plus/pisellProResourcePickerModal/PisellProResourcePickerModal.d.ts +2 -2
  49. package/es/plus/pisellReservation/components/SelectFloorMapResourceDialog.d.ts +1 -1
  50. package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
  51. package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
  52. package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
  53. package/es/plus/pisellReservation/floorRoomCard/FloorRoomCardFromData.d.ts +1 -1
  54. package/es/plus/pisellReservation/floorRoomCard/ReservationFloorRoomCard.d.ts +1 -1
  55. package/es/plus/pisellReservation/floorRoomCard/mapFloorRoomCardViewProps.d.ts +1 -0
  56. package/es/plus/pisellReservation/floorRoomCard/views/RoomCardHeaderView.d.ts +1 -0
  57. package/es/plus/pisellSalesManagement/index.d.ts +1 -1
  58. package/es/plus/pisellTopology/PisellTopology.d.ts +2 -2
  59. package/es/plus/pisellTopology/TopologyDeviceCard.d.ts +1 -1
  60. package/es/plus/productSelect/ProductCard/SkuCard/index.d.ts +7 -5
  61. package/es/plus/saasCreateOrganization/index.d.ts +2 -1
  62. package/es/plus/saleDetail/Base.js +0 -1
  63. package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +0 -1
  64. package/es/plus/saleDetail/components/DetailActions/index.js +0 -1
  65. package/es/plus/saleDetail/components/PromotionWalletPanels/index.d.ts +1 -1
  66. package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +0 -1
  67. package/es/plus/saleDetail/index.js +0 -1
  68. package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +0 -1
  69. package/es/plus/saleDetail/tmpl/B/index.js +0 -1
  70. package/es/plus/salesSdk/bookingEditService/BookingEditHolderField.js +6 -6
  71. package/es/plus/salesSdk/components/SalesSdkConfirmHolderModal.js +2 -4
  72. package/es/plus/salesSdk/context/SalesSdkCartContext.js +28 -21
  73. package/es/plus/salesSdk/context/SalesSdkHolderContext.js +104 -22
  74. package/es/plus/salesSdk/context/SalesSdkProvider.js +3 -12
  75. package/es/plus/salesSdk/hosts/ConfirmHolderHostRenderer.js +14 -5
  76. package/es/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +5 -2
  77. package/es/plus/salesSdk/types.d.ts +16 -1
  78. package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
  79. package/es/plus/salesSdk/utils/bookingDate.js +1 -1
  80. package/es/plus/salesSdk/utils/customerAuthGate.js +2 -5
  81. package/es/plus/salesSdk/utils/enrichCacheItemBeforeAdd.js +1 -1
  82. package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
  83. package/es/plus/salesSdk/utils/ensureCustomerAuthBeforeAdd.js +6 -6
  84. package/es/plus/salesSdk/utils/holderSubmitValidation.js +3 -4
  85. package/es/plus/salesSdk/utils/productHolderConfig.js +3 -17
  86. package/es/plus/salesSdk/utils/runAddProductFlow.js +14 -5
  87. package/es/plus/walletPassGallery/components/passDetail/index.d.ts +2 -1
  88. package/es/plus/walletPassGallery/index.d.ts +2 -1
  89. package/es/private-materials/lowcode/authmodal/meta.d.ts +1 -0
  90. package/es/pro/Login2.0/AuthModal.d.ts +1 -1
  91. package/es/pro/Login2.0/index.d.ts +1 -2
  92. package/es/pro/Login2.0/shared/types.d.ts +1 -1
  93. package/es/pro/Selector/Item.d.ts +1 -1
  94. package/es/pro/numberKeyboard/index.d.ts +1 -1
  95. package/es/pro/pisellPhoneKeyboard/index.d.ts +2 -1
  96. package/es/pro/skuDetailModal/components/weighing/index.d.ts +2 -1
  97. package/es/pro/skuDetailModal/flow/modules/holder/index.js +4 -1
  98. package/lib/components/appointmentBooking/deposit/index.d.ts +2 -2
  99. package/lib/components/appointmentBooking/index.d.ts +2 -2
  100. package/lib/components/bigSale/index.js +1 -0
  101. package/lib/components/bigSale/templates/Kiosk/index.js +104 -47
  102. package/lib/components/booking/deposit/index.d.ts +3 -2
  103. package/lib/components/booking/info/addServiceVariant/index.d.ts +3 -2
  104. package/lib/components/booking/info/index.d.ts +2 -2
  105. package/lib/components/booking/materiels/contacts/index.d.ts +2 -2
  106. package/lib/components/booking/materiels/duration/index.d.ts +2 -2
  107. package/lib/components/booking/materiels/startTime/index.d.ts +2 -2
  108. package/lib/components/ecocup/cupList/index.d.ts +2 -2
  109. package/lib/components/ecocup/customerList/index.d.ts +2 -2
  110. package/lib/components/eftpos/index.d.ts +2 -2
  111. package/lib/components/eftposPay/index.d.ts +2 -2
  112. package/lib/components/eventBooking/index.d.ts +2 -2
  113. package/lib/components/kioskSale/index.d.ts +2 -2
  114. package/lib/components/kioskSale/index.js +1 -1
  115. package/lib/components/kioskSkuDetail/index.d.ts +1 -1
  116. package/lib/components/login/index.d.ts +2 -2
  117. package/lib/components/pisellSelectCustomerModal/index.d.ts +2 -2
  118. package/lib/components/productExtension/index.d.ts +2 -2
  119. package/lib/components/ruleSetting/index.d.ts +2 -2
  120. package/lib/components/scanOrder/index.d.ts +2 -2
  121. package/lib/components/sharedSecondaryBigSale/index.d.ts +2 -2
  122. package/lib/components/shoppingCart/index.d.ts +2 -2
  123. package/lib/components/subTotal/index.d.ts +1 -1
  124. package/lib/components/taxSelect/index.d.ts +2 -2
  125. package/lib/components/ticketBooking/index.d.ts +1 -1
  126. package/lib/components/venueBooking/index.d.ts +2 -2
  127. package/lib/components/walletList/index.d.ts +2 -2
  128. package/lib/plus/orderList/index.d.ts +1 -1
  129. package/lib/plus/pisellProResourcePickerModal/PisellFloorMapPaletteViewAllModal.d.ts +1 -1
  130. package/lib/plus/pisellProResourcePickerModal/PisellProResourcePickerModal.d.ts +2 -2
  131. package/lib/plus/pisellReservation/components/SelectFloorMapResourceDialog.d.ts +1 -1
  132. package/lib/plus/pisellReservation/floorRoomCard/FloorRoomCardFromData.d.ts +1 -1
  133. package/lib/plus/pisellReservation/floorRoomCard/ReservationFloorRoomCard.d.ts +1 -1
  134. package/lib/plus/pisellReservation/floorRoomCard/mapFloorRoomCardViewProps.d.ts +1 -0
  135. package/lib/plus/pisellReservation/floorRoomCard/views/RoomCardHeaderView.d.ts +1 -0
  136. package/lib/plus/pisellSalesManagement/index.d.ts +1 -1
  137. package/lib/plus/pisellTopology/PisellTopology.d.ts +2 -2
  138. package/lib/plus/pisellTopology/TopologyDeviceCard.d.ts +1 -1
  139. package/lib/plus/productSelect/ProductCard/SkuCard/index.d.ts +7 -6
  140. package/lib/plus/saasCreateOrganization/index.d.ts +2 -2
  141. package/lib/plus/saleDetail/components/PromotionWalletPanels/index.d.ts +1 -1
  142. package/lib/plus/salesSdk/bookingEditService/BookingEditHolderField.js +5 -5
  143. package/lib/plus/salesSdk/components/SalesSdkConfirmHolderModal.js +2 -4
  144. package/lib/plus/salesSdk/context/SalesSdkCartContext.js +28 -21
  145. package/lib/plus/salesSdk/context/SalesSdkHolderContext.js +104 -22
  146. package/lib/plus/salesSdk/context/SalesSdkProvider.js +3 -12
  147. package/lib/plus/salesSdk/hosts/ConfirmHolderHostRenderer.js +14 -5
  148. package/lib/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +5 -2
  149. package/lib/plus/salesSdk/types.d.ts +16 -1
  150. package/lib/plus/salesSdk/utils/customerAuthGate.js +1 -4
  151. package/lib/plus/salesSdk/utils/enrichCacheItemBeforeAdd.js +1 -1
  152. package/lib/plus/salesSdk/utils/ensureCustomerAuthBeforeAdd.js +6 -6
  153. package/lib/plus/salesSdk/utils/holderSubmitValidation.js +3 -4
  154. package/lib/plus/salesSdk/utils/productHolderConfig.js +3 -17
  155. package/lib/plus/salesSdk/utils/runAddProductFlow.js +14 -5
  156. package/lib/plus/walletPassGallery/components/passDetail/index.d.ts +2 -2
  157. package/lib/plus/walletPassGallery/index.d.ts +2 -2
  158. package/lib/pro/Selector/Item.d.ts +1 -1
  159. package/lib/pro/numberKeyboard/index.d.ts +1 -1
  160. package/lib/pro/pisellPhoneKeyboard/index.d.ts +2 -2
  161. package/lib/pro/skuDetailModal/components/weighing/index.d.ts +2 -2
  162. package/lib/pro/skuDetailModal/flow/modules/holder/index.js +4 -1
  163. package/package.json +4 -4
  164. package/es/plus/pisellReservation/index.js +0 -17
  165. 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
- /// <reference types="react" />
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 };
@@ -6,6 +6,6 @@ interface OrderListProps {
6
6
  style?: React.CSSProperties;
7
7
  __id?: string;
8
8
  }
9
- declare const OrderList: (props: OrderListProps) => JSX.Element;
9
+ declare const OrderList: (props: OrderListProps) => React.JSX.Element;
10
10
  //#endregion
11
11
  export { OrderList };
@@ -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 };
@@ -37,6 +37,6 @@ declare function SelectFloorMapResourceDialog({
37
37
  dataSources,
38
38
  floorMap,
39
39
  title
40
- }: SelectFloorMapResourceDialogProps): JSX.Element;
40
+ }: SelectFloorMapResourceDialogProps): React.JSX.Element;
41
41
  //#endregion
42
42
  export { SelectFloorMapResourceDialog };
@@ -1 +1 @@
1
- export { };
1
+ import React from "react";
@@ -1 +1 @@
1
- export { };
1
+ import React from "react";
@@ -0,0 +1 @@
1
+ import React from "react";
@@ -42,6 +42,6 @@ interface IProps {
42
42
  record: any;
43
43
  }) => void;
44
44
  }
45
- declare const PisellSalesManagement: (props: IProps) => JSX.Element;
45
+ declare const PisellSalesManagement: (props: IProps) => React.JSX.Element;
46
46
  //#endregion
47
47
  export { PisellSalesManagement };
@@ -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,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  import { FloorMapEdgeStatus, FloorMapMergedItem } from "@pisell/materials";
3
3
  //#region src/plus/pisellTopology/TopologyDeviceCard.d.ts
4
4
  interface TopologyDeviceRow {
@@ -1,11 +1,12 @@
1
- /// <reference types="react" />
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, _state$bookingConfig2, _currentCacheItem$_ex, _cacheItem$_extend, _state$pet5, _state$pet6, _state$pet7, _state$bookingConfig4, _inlineState$bookingC2, _inlineState$pet2, _state$client2, _inlineState$client5;
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$bookingConfig3, _state$pet4;
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$bookingConfig3 = state.bookingConfig) === null || _state$bookingConfig3 === void 0 || (_state$bookingConfig3 = _state$bookingConfig3.config) === null || _state$bookingConfig3 === void 0 || (_state$bookingConfig3 = _state$bookingConfig3.basic) === null || _state$bookingConfig3 === void 0 || (_state$bookingConfig3 = _state$bookingConfig3.appointment_subject) === null || _state$bookingConfig3 === void 0 ? void 0 : _state$bookingConfig3.form_id) !== null && _ref !== void 0 ? _ref : 0;
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$bookingConfig4 = state.bookingConfig) === null || _state$bookingConfig4 === void 0 ? void 0 : _state$bookingConfig4.config
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, bookingConfig, onAssign, onConfirm, onSkip, onDismissConfirmed, variant }) {
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" }, isSubjectOptional && onSkip ? /* @__PURE__ */ react.default.createElement(antd.Button, {
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$options3;
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$options2 = input.options) === null || _input$options2 === void 0 ? void 0 : _input$options2.initialHolderIds,
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$options3 = input.options) === null || _input$options3 === void 0 ? void 0 : _input$options3.initialHolderIds,
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$options4;
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$options4 = input.options) === null || _input$options4 === void 0 ? void 0 : _input$options4.quantity) });
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
- const holderOptionsForProduct = yield ensureHolderOptionsForSource(product);
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$getOtherParam, _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;
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 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);
1256
- if (!(yield require_ensureCustomerAuthBeforeAdd.ensureCustomerAuthBeforeAdd({
1264
+ const flowOptions = (yield require_ensureCustomerAuthBeforeAdd.ensureCustomerAuthBeforeAdd({
1257
1265
  product,
1258
- platform: otherParams.platform,
1259
- channel: productLoadChannelRef.current || otherParams.channel,
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
- }))) return { status: "cancelled" };
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 ? options : require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, options), {}, { debounceMs: 0 }));
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(true);
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 (loggedIn && !isUnboundHolderCustomerId(currentCustomerId)) return Promise.resolve(true);
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() : new Promise((resolve) => {
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 = (allowed) => {
131
+ const finish = (result) => {
123
132
  if (settled) return;
124
133
  settled = true;
125
- resolve(allowed);
134
+ resolve(result);
126
135
  };
127
136
  if (!openLoginModal({ callback: (status) => {
128
137
  if (settled) return;
129
138
  if (status !== "success") {
130
- finish(false);
139
+ finish({
140
+ allowed: false,
141
+ loginOpened: true,
142
+ loginClosed: true
143
+ });
131
144
  return;
132
145
  }
133
146
  settled = true;
134
- syncAuthenticatedHolderCustomer().then(resolve);
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(false);
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 ensureHolderOptionsForSource = (0, ahooks.useMemoizedFn)(function() {
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 EMPTY_HOLDER_OPTIONS;
193
- if (!(yield ensureHolderRequestAccess())) return EMPTY_HOLDER_OPTIONS;
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 EMPTY_HOLDER_OPTIONS;
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 cached;
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 cached;
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 mergeHolderOptionsStable(optimisticHolderOptionsByKey[requestKey] || EMPTY_HOLDER_OPTIONS, fromServer);
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 EMPTY_HOLDER_OPTIONS;
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 _ref2 = require_asyncToGenerator._asyncToGenerator(function* () {
407
+ var _ref3 = require_asyncToGenerator._asyncToGenerator(function* () {
339
408
  return EMPTY_HOLDER_OPTIONS;
340
409
  });
341
410
  return function ensureHolderOptionsForSource() {
342
- return _ref2.apply(this, arguments);
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,