@pisell/private-materials 6.12.168 → 6.12.170
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/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +10 -10
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +10 -10
- package/es/components/HDLKiosk/{contracts → app/contracts}/config.js +1 -1
- package/es/components/HDLKiosk/app/manifest.js +11 -11
- package/es/components/HDLKiosk/app/operations.js +92 -0
- package/es/components/HDLKiosk/app/workflow/barcode.js +7 -3
- package/es/components/HDLKiosk/app/workflow/index.js +16 -0
- package/es/components/HDLKiosk/app/workflow/predicates.js +1 -1
- package/es/components/HDLKiosk/app/workflow/quick.js +1 -1
- package/es/components/HDLKiosk/app/workflow/registry.js +4 -4
- package/es/components/HDLKiosk/app/workflow/scale.js +5 -1
- package/es/components/HDLKiosk/components/common/HDLKioskSkuOptionsSelection/index.less +1 -1
- package/es/components/HDLKiosk/components/overlays/HDLKioskModal/index.less +1 -1
- package/es/components/HDLKiosk/components/shell/HDLKioskBottomBarHost/index.js +4 -1
- package/es/components/HDLKiosk/docs/00-/346/226/207/344/273/266/345/257/274/350/210/252.md +104 -167
- package/es/components/HDLKiosk/docs/01-/346/240/270/345/277/203/350/277/220/350/241/214/346/234/272/345/210/266.md +95 -89
- package/es/components/HDLKiosk/docs/02-Host/351/200/202/351/205/215/344/270/216/344/270/232/345/212/241/346/225/260/346/215/256.md +20 -19
- package/es/components/HDLKiosk/docs/04-/350/256/276/345/244/207/344/270/216/347/247/260/351/207/215.md +43 -26
- package/es/components/HDLKiosk/docs/05-/344/272/244/346/230/223/345/256/211/345/205/250.md +2 -0
- package/es/components/HDLKiosk/docs/08-/346/227/240/345/244/264Application/350/277/220/350/241/214/346/227/266/351/207/215/346/236/204/350/256/276/350/256/241.md +719 -0
- package/es/components/HDLKiosk/docs/09-Entry/350/256/276/345/244/207/344/272/213/344/273/266/351/207/215/346/236/204/344/277/256/345/244/215/346/212/245/345/221/212.md +187 -0
- package/es/components/HDLKiosk/docs/README.md +6 -2
- package/es/components/HDLKiosk/docs//345/256/236/346/226/275/350/277/233/345/272/246.md +8 -7
- package/es/components/HDLKiosk/docs//346/236/266/346/236/204/350/256/276/350/256/241.md +16 -18
- package/es/components/HDLKiosk/index.js +32 -30
- package/es/components/HDLKiosk/index.less +8 -3
- package/es/components/HDLKiosk/kernel/README.md +13 -12
- package/es/components/HDLKiosk/kernel/application/defineApplication.js +63 -24
- package/es/components/HDLKiosk/kernel/application/defineSlice.js +6 -6
- package/es/components/HDLKiosk/kernel/application/runtime.js +237 -0
- package/es/components/HDLKiosk/kernel/operations/coordinator.js +1 -1
- package/es/components/HDLKiosk/kernel/operations/registry.js +3 -3
- package/es/components/HDLKiosk/kernel/operations/sessionEpoch.js +1 -1
- package/es/components/HDLKiosk/kernel/operations/types.js +7 -3
- package/es/components/HDLKiosk/kernel/workflow/actor.js +16 -17
- package/es/components/HDLKiosk/kernel/workflow/compiler.js +14 -16
- package/es/components/HDLKiosk/runtime/createRuntime.js +238 -0
- package/es/components/HDLKiosk/{devices → runtime/devices}/dedupeStore.js +1 -1
- package/es/components/HDLKiosk/{devices → runtime/devices}/scaleIngress.js +1 -1
- package/es/components/HDLKiosk/{devices/scale/runtime.js → runtime/devices/scaleStore.js} +18 -24
- package/es/components/HDLKiosk/{devices → runtime/devices}/scannerIngress.js +1 -1
- package/es/components/HDLKiosk/runtime/devices/scannerSessionPort.js +60 -0
- package/es/components/HDLKiosk/runtime/devices/scannerSessionRouter.js +212 -0
- package/es/components/HDLKiosk/runtime/operations/barcode.js +18 -0
- package/es/components/HDLKiosk/runtime/operations/cart.js +44 -0
- package/es/components/HDLKiosk/{app → runtime}/operations/cartConsistency.js +1 -1
- package/es/components/HDLKiosk/{app → runtime}/operations/checkout.js +95 -110
- package/es/components/HDLKiosk/{app → runtime}/operations/checkoutRequirements.js +1 -1
- package/es/components/HDLKiosk/{app → runtime}/operations/checkoutSafety.js +1 -1
- package/es/components/HDLKiosk/{app → runtime}/operations/coordinator.js +2 -2
- package/es/components/HDLKiosk/runtime/operations/customization.js +70 -0
- package/es/components/HDLKiosk/{app → runtime}/operations/errors.js +1 -1
- package/es/components/HDLKiosk/runtime/operations/fulfillment.js +6 -0
- package/es/components/HDLKiosk/runtime/operations/identity.js +55 -0
- package/es/components/HDLKiosk/runtime/operations/registry.js +34 -0
- package/es/components/HDLKiosk/runtime/operations/session.js +29 -0
- package/es/components/HDLKiosk/runtime/operations/types.js +13 -0
- package/es/components/HDLKiosk/runtime/session/blockPolicy.js +14 -0
- package/es/components/HDLKiosk/runtime/{createWorkflowSession.js → session/createSession.js} +67 -17
- package/es/components/HDLKiosk/runtime/{domainTransitionRunner.js → session/transitionRunner.js} +10 -5
- package/es/components/HDLKiosk/runtime/{workflowContext.js → session/workflowContext.js} +2 -2
- package/es/components/HDLKiosk/runtime/{workflowLifecycle.js → session/workflowLifecycle.js} +2 -2
- package/es/components/HDLKiosk/runtime/triggers.js +28 -0
- package/es/components/HDLKiosk/slices/catalog/Screen/index.js +15 -8
- package/es/components/HDLKiosk/slices/catalog/Screen/index.less +74 -13
- package/es/components/HDLKiosk/slices/catalog/slice.js +2 -2
- package/es/components/HDLKiosk/slices/customization/Screen/index.js +34 -35
- package/es/components/HDLKiosk/slices/customization/Screen/index.less +5 -0
- package/es/components/HDLKiosk/slices/customization/slice.js +2 -3
- package/es/components/HDLKiosk/slices/fulfillment/slice.js +2 -2
- package/es/components/HDLKiosk/slices/fulfillment/view.js +1 -1
- package/es/components/HDLKiosk/slices/identity/Screen/index.less +1 -1
- package/es/components/HDLKiosk/slices/identity/slice.js +2 -2
- package/es/components/HDLKiosk/slices/identity/view.js +1 -1
- package/es/components/HDLKiosk/slices/payment/Screen/index.less +1 -1
- package/es/components/HDLKiosk/slices/payment/slice.js +3 -3
- package/es/components/HDLKiosk/slices/primaryProductPrompt/slice.js +1 -1
- package/es/components/HDLKiosk/{runtime → ui}/HDLKioskWorkflowView.js +68 -129
- package/es/components/HDLKiosk/ui/ScaleSimulatorConsole/index.js +387 -0
- package/es/components/HDLKiosk/ui/ScaleSimulatorConsole/index.less +621 -0
- package/es/components/HDLKiosk/{app → ui}/ScreenRenderer.js +1 -1
- package/es/components/HDLKiosk/ui/collaborationStatus.js +11 -0
- package/es/components/HDLKiosk/ui/controllers/useHDLKioskActionDispatcher.js +66 -0
- package/es/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskCustomerController.js +1 -1
- package/es/components/HDLKiosk/ui/controllers/useHDLKioskDeviceController.js +25 -0
- package/es/components/HDLKiosk/ui/controllers/useHDLKioskExitController.js +53 -0
- package/es/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskScreenData.js +1 -1
- package/es/components/HDLKiosk/ui/controllers/useHDLKioskSessionController.js +39 -0
- package/es/components/HDLKiosk/{app → ui}/entry/Screen/index.js +8 -6
- package/es/components/HDLKiosk/{app → ui}/entry/model.js +2 -2
- package/es/components/HDLKiosk/ui/scale.js +20 -0
- package/es/components/HDLKiosk/{runtime/useHostSnapshot.js → ui/snapshots.js} +6 -8
- package/es/components/HDLKiosk/{app → ui}/views.js +1 -1
- package/es/components/HDLKiosk/{runtime → ui}/workflowEvent.js +1 -1
- package/es/components/HDLKiosk/utils.js +4 -4
- package/es/components/bigSale/templates/HDLKiosk/README.md +43 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/createHost.js +7 -7
- package/es/components/bigSale/templates/HDLKiosk/adapter/{devices.js → devices/devicePort.js} +10 -38
- package/es/components/bigSale/templates/HDLKiosk/adapter/{capabilities.js → host/capabilities.js} +2 -2
- package/es/components/bigSale/templates/HDLKiosk/adapter/{fulfillment.js → host/fulfillmentWriter.js} +3 -3
- package/es/components/bigSale/templates/HDLKiosk/adapter/{projection.js → host/projection.js} +24 -14
- package/es/components/bigSale/templates/HDLKiosk/adapter/{telemetry.js → host/telemetry.js} +1 -1
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/cart.js +187 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/catalog.js +160 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/{customizationProduct.js → sales/customizationProduct.js} +3 -3
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/fulfillment.js +31 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/identity.js +57 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/index.js +18 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/payment.js +123 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/session.js +71 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales/weightedOperations.js +124 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/{weightedProduct.js → sales/weightedProduct.js} +2 -2
- package/es/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskAdapter.js +41 -0
- package/es/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskHost.js +10 -7
- package/es/components/bigSale/templates/HDLKiosk/cart/useBigSaleHDLKioskCart.js +122 -0
- package/es/components/bigSale/templates/HDLKiosk/{adapter → hooks}/useHDLKioskEntryPreparationToast.js +2 -1
- package/es/components/bigSale/templates/HDLKiosk/index.js +42 -148
- package/es/components/bigSale/templates/HDLKiosk/{adapter/scaleTrigger.js → runtime/BigSaleScaleRuntimeOwner.js} +33 -62
- package/es/components/bigSale/templates/HDLKiosk/{adapter → runtime}/HDLKioskPaymentRuntime.js +4 -3
- package/es/components/bigSale/templates/HDLKiosk/runtime/scaleBridge.js +44 -0
- package/lib/components/HDLKiosk/{contracts → app/contracts}/config.js +1 -1
- package/lib/components/HDLKiosk/app/manifest.js +18 -19
- package/lib/components/HDLKiosk/app/operations.js +105 -0
- package/lib/components/HDLKiosk/app/workflow/barcode.js +7 -3
- package/lib/components/HDLKiosk/app/workflow/index.js +16 -0
- package/lib/components/HDLKiosk/app/workflow/predicates.js +1 -0
- package/lib/components/HDLKiosk/app/workflow/quick.js +1 -1
- package/lib/components/HDLKiosk/app/workflow/registry.js +3 -3
- package/lib/components/HDLKiosk/app/workflow/scale.js +5 -1
- package/lib/components/HDLKiosk/components/common/HDLKioskSkuOptionsSelection/index.less +1 -1
- package/lib/components/HDLKiosk/components/overlays/HDLKioskModal/index.less +1 -1
- package/lib/components/HDLKiosk/components/shell/HDLKioskBottomBarHost/index.js +4 -1
- package/lib/components/HDLKiosk/docs/00-/346/226/207/344/273/266/345/257/274/350/210/252.md +104 -167
- package/lib/components/HDLKiosk/docs/01-/346/240/270/345/277/203/350/277/220/350/241/214/346/234/272/345/210/266.md +95 -89
- package/lib/components/HDLKiosk/docs/02-Host/351/200/202/351/205/215/344/270/216/344/270/232/345/212/241/346/225/260/346/215/256.md +20 -19
- package/lib/components/HDLKiosk/docs/04-/350/256/276/345/244/207/344/270/216/347/247/260/351/207/215.md +43 -26
- package/lib/components/HDLKiosk/docs/05-/344/272/244/346/230/223/345/256/211/345/205/250.md +2 -0
- package/lib/components/HDLKiosk/docs/08-/346/227/240/345/244/264Application/350/277/220/350/241/214/346/227/266/351/207/215/346/236/204/350/256/276/350/256/241.md +719 -0
- package/lib/components/HDLKiosk/docs/09-Entry/350/256/276/345/244/207/344/272/213/344/273/266/351/207/215/346/236/204/344/277/256/345/244/215/346/212/245/345/221/212.md +187 -0
- package/lib/components/HDLKiosk/docs/README.md +6 -2
- package/lib/components/HDLKiosk/docs//345/256/236/346/226/275/350/277/233/345/272/246.md +8 -7
- package/lib/components/HDLKiosk/docs//346/236/266/346/236/204/350/256/276/350/256/241.md +16 -18
- package/lib/components/HDLKiosk/index.js +35 -33
- package/lib/components/HDLKiosk/index.less +8 -3
- package/lib/components/HDLKiosk/kernel/README.md +13 -12
- package/lib/components/HDLKiosk/kernel/application/defineApplication.js +65 -25
- package/lib/components/HDLKiosk/kernel/application/defineSlice.js +6 -6
- package/lib/components/HDLKiosk/kernel/application/runtime.js +237 -0
- package/lib/components/HDLKiosk/kernel/operations/coordinator.js +1 -1
- package/lib/components/HDLKiosk/kernel/operations/registry.js +3 -3
- package/lib/components/HDLKiosk/kernel/operations/sessionEpoch.js +1 -1
- package/lib/components/HDLKiosk/kernel/operations/types.js +8 -3
- package/lib/components/HDLKiosk/kernel/workflow/actor.js +16 -17
- package/lib/components/HDLKiosk/kernel/workflow/compiler.js +14 -16
- package/lib/components/HDLKiosk/runtime/createRuntime.js +239 -0
- package/lib/components/HDLKiosk/{devices → runtime/devices}/dedupeStore.js +1 -1
- package/lib/components/HDLKiosk/{devices → runtime/devices}/scaleIngress.js +1 -1
- package/lib/components/HDLKiosk/{devices/scale/runtime.js → runtime/devices/scaleStore.js} +17 -27
- package/lib/components/HDLKiosk/{devices → runtime/devices}/scannerIngress.js +1 -1
- package/lib/components/HDLKiosk/runtime/devices/scannerSessionPort.js +60 -0
- package/lib/components/HDLKiosk/runtime/devices/scannerSessionRouter.js +212 -0
- package/lib/components/HDLKiosk/runtime/operations/barcode.js +17 -0
- package/lib/components/HDLKiosk/runtime/operations/cart.js +46 -0
- package/lib/components/HDLKiosk/{app → runtime}/operations/cartConsistency.js +1 -1
- package/lib/components/HDLKiosk/{app → runtime}/operations/checkout.js +97 -112
- package/lib/components/HDLKiosk/{app → runtime}/operations/checkoutRequirements.js +1 -1
- package/lib/components/HDLKiosk/{app → runtime}/operations/checkoutSafety.js +1 -1
- package/lib/components/HDLKiosk/{app → runtime}/operations/coordinator.js +2 -2
- package/lib/components/HDLKiosk/runtime/operations/customization.js +73 -0
- package/lib/components/HDLKiosk/{app → runtime}/operations/errors.js +1 -1
- package/lib/components/HDLKiosk/runtime/operations/fulfillment.js +5 -0
- package/lib/components/HDLKiosk/runtime/operations/identity.js +55 -0
- package/lib/components/HDLKiosk/runtime/operations/registry.js +34 -0
- package/lib/components/HDLKiosk/runtime/operations/session.js +30 -0
- package/lib/components/HDLKiosk/runtime/operations/types.js +14 -0
- package/lib/components/HDLKiosk/runtime/session/blockPolicy.js +14 -0
- package/lib/components/HDLKiosk/runtime/{createWorkflowSession.js → session/createSession.js} +71 -21
- package/lib/components/HDLKiosk/runtime/{domainTransitionRunner.js → session/transitionRunner.js} +10 -5
- package/lib/components/HDLKiosk/runtime/{workflowContext.js → session/workflowContext.js} +2 -2
- package/lib/components/HDLKiosk/runtime/{workflowLifecycle.js → session/workflowLifecycle.js} +2 -2
- package/lib/components/HDLKiosk/runtime/triggers.js +28 -0
- package/lib/components/HDLKiosk/slices/catalog/Screen/index.js +15 -8
- package/lib/components/HDLKiosk/slices/catalog/Screen/index.less +74 -13
- package/lib/components/HDLKiosk/slices/catalog/slice.js +3 -3
- package/lib/components/HDLKiosk/slices/customization/Screen/index.js +35 -36
- package/lib/components/HDLKiosk/slices/customization/Screen/index.less +5 -0
- package/lib/components/HDLKiosk/slices/customization/slice.js +5 -6
- package/lib/components/HDLKiosk/slices/fulfillment/slice.js +3 -3
- package/lib/components/HDLKiosk/slices/fulfillment/view.js +1 -1
- package/lib/components/HDLKiosk/slices/identity/Screen/index.less +1 -1
- package/lib/components/HDLKiosk/slices/identity/slice.js +4 -4
- package/lib/components/HDLKiosk/slices/identity/view.js +1 -1
- package/lib/components/HDLKiosk/slices/payment/Screen/index.less +1 -1
- package/lib/components/HDLKiosk/slices/payment/slice.js +5 -5
- package/lib/components/HDLKiosk/slices/primaryProductPrompt/slice.js +1 -1
- package/lib/components/HDLKiosk/{runtime → ui}/HDLKioskWorkflowView.js +69 -130
- package/lib/components/HDLKiosk/ui/ScaleSimulatorConsole/index.js +390 -0
- package/lib/components/HDLKiosk/ui/ScaleSimulatorConsole/index.less +621 -0
- package/lib/components/HDLKiosk/{app → ui}/ScreenRenderer.js +1 -1
- package/lib/components/HDLKiosk/ui/collaborationStatus.js +11 -0
- package/lib/components/HDLKiosk/ui/controllers/useHDLKioskActionDispatcher.js +67 -0
- package/lib/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskCustomerController.js +1 -1
- package/lib/components/HDLKiosk/ui/controllers/useHDLKioskDeviceController.js +26 -0
- package/lib/components/HDLKiosk/ui/controllers/useHDLKioskExitController.js +54 -0
- package/lib/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskScreenData.js +1 -1
- package/lib/components/HDLKiosk/ui/controllers/useHDLKioskSessionController.js +40 -0
- package/lib/components/HDLKiosk/{app → ui}/entry/Screen/index.js +8 -6
- package/lib/components/HDLKiosk/{app → ui}/entry/model.js +2 -2
- package/lib/components/HDLKiosk/ui/scale.js +24 -0
- package/lib/components/HDLKiosk/{runtime/useHostSnapshot.js → ui/snapshots.js} +6 -7
- package/lib/components/HDLKiosk/{app → ui}/views.js +1 -1
- package/lib/components/HDLKiosk/{runtime → ui}/workflowEvent.js +1 -1
- package/lib/components/HDLKiosk/utils.js +4 -4
- package/lib/components/bigSale/templates/HDLKiosk/README.md +43 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/createHost.js +9 -9
- package/lib/components/bigSale/templates/HDLKiosk/adapter/{devices.js → devices/devicePort.js} +10 -38
- package/lib/components/bigSale/templates/HDLKiosk/adapter/{capabilities.js → host/capabilities.js} +2 -2
- package/lib/components/bigSale/templates/HDLKiosk/adapter/{fulfillment.js → host/fulfillmentWriter.js} +3 -3
- package/lib/components/bigSale/templates/HDLKiosk/adapter/{projection.js → host/projection.js} +25 -14
- package/lib/components/bigSale/templates/HDLKiosk/adapter/{telemetry.js → host/telemetry.js} +1 -1
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/cart.js +189 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/catalog.js +162 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/{customizationProduct.js → sales/customizationProduct.js} +4 -4
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/fulfillment.js +31 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/identity.js +57 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/index.js +18 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/payment.js +123 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/session.js +71 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales/weightedOperations.js +126 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/{weightedProduct.js → sales/weightedProduct.js} +3 -3
- package/lib/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskAdapter.js +42 -0
- package/lib/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskHost.js +10 -7
- package/lib/components/bigSale/templates/HDLKiosk/cart/useBigSaleHDLKioskCart.js +124 -0
- package/lib/components/bigSale/templates/HDLKiosk/{adapter → hooks}/useHDLKioskEntryPreparationToast.js +2 -1
- package/lib/components/bigSale/templates/HDLKiosk/index.js +43 -149
- package/lib/components/bigSale/templates/HDLKiosk/{adapter/scaleTrigger.js → runtime/BigSaleScaleRuntimeOwner.js} +31 -61
- package/lib/components/bigSale/templates/HDLKiosk/{adapter → runtime}/HDLKioskPaymentRuntime.js +4 -3
- package/lib/components/bigSale/templates/HDLKiosk/runtime/scaleBridge.js +44 -0
- package/package.json +2 -2
- package/es/components/HDLKiosk/app/constants.js +0 -9
- package/es/components/HDLKiosk/app/operations/barcode.js +0 -22
- package/es/components/HDLKiosk/app/operations/cart.js +0 -60
- package/es/components/HDLKiosk/app/operations/fulfillment.js +0 -11
- package/es/components/HDLKiosk/app/operations/session.js +0 -41
- package/es/components/HDLKiosk/app/operations/types.js +0 -11
- package/es/components/HDLKiosk/devices/entryArbiter.js +0 -33
- package/es/components/HDLKiosk/runtime/controllers/useHDLKioskDeviceController.js +0 -75
- package/es/components/HDLKiosk/runtime/controllers/useHDLKioskScannerController.js +0 -160
- package/es/components/HDLKiosk/runtime/controllers/useHDLKioskSessionController.js +0 -185
- package/es/components/HDLKiosk/runtime/useWorkflowSnapshot.js +0 -12
- package/es/components/HDLKiosk/slices/customization/operation.js +0 -80
- package/es/components/HDLKiosk/slices/identity/operation.js +0 -60
- package/es/components/bigSale/templates/HDLKiosk/adapter/sales.js +0 -692
- package/lib/components/HDLKiosk/app/constants.js +0 -9
- package/lib/components/HDLKiosk/app/operations/barcode.js +0 -21
- package/lib/components/HDLKiosk/app/operations/cart.js +0 -62
- package/lib/components/HDLKiosk/app/operations/fulfillment.js +0 -10
- package/lib/components/HDLKiosk/app/operations/session.js +0 -42
- package/lib/components/HDLKiosk/app/operations/types.js +0 -12
- package/lib/components/HDLKiosk/devices/entryArbiter.js +0 -33
- package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskDeviceController.js +0 -76
- package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskScannerController.js +0 -161
- package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskSessionController.js +0 -186
- package/lib/components/HDLKiosk/runtime/useWorkflowSnapshot.js +0 -13
- package/lib/components/HDLKiosk/slices/customization/operation.js +0 -83
- package/lib/components/HDLKiosk/slices/identity/operation.js +0 -60
- package/lib/components/bigSale/templates/HDLKiosk/adapter/sales.js +0 -694
- /package/es/components/HDLKiosk/{app → ui}/entry/Screen/index.less +0 -0
- /package/lib/components/HDLKiosk/{app → ui}/entry/Screen/index.less +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
let react = require("react");
|
|
3
|
+
//#region src/components/HDLKiosk/ui/controllers/useHDLKioskDeviceController.ts
|
|
4
|
+
/**
|
|
5
|
+
* 文件角色:把 Scale 连接状态投影给 React Entry。
|
|
6
|
+
* 运行机制:只观察 connectionChanged;称重启动完全由 Runtime 的 onWeight Adapter 持有。
|
|
7
|
+
* 边界:不消费重量、不创建 Session,也不参与 Trigger 路由。
|
|
8
|
+
*/
|
|
9
|
+
function useHDLKioskDeviceController({ host, isActive }) {
|
|
10
|
+
const [scaleConnectionState, setScaleConnectionState] = (0, react.useState)();
|
|
11
|
+
(0, react.useEffect)(() => {
|
|
12
|
+
setScaleConnectionState(void 0);
|
|
13
|
+
}, [host]);
|
|
14
|
+
(0, react.useEffect)(() => {
|
|
15
|
+
if (!isActive || !host.capabilities.scale.available) return void 0;
|
|
16
|
+
return host.devices.subscribe((event) => {
|
|
17
|
+
if (event.type === "connectionChanged" && event.device === "scale") {
|
|
18
|
+
var _event$state;
|
|
19
|
+
setScaleConnectionState((_event$state = event.state) !== null && _event$state !== void 0 ? _event$state : event.connected ? "connected" : "disconnected");
|
|
20
|
+
}
|
|
21
|
+
}, { sources: ["scale"] });
|
|
22
|
+
}, [host, isActive]);
|
|
23
|
+
return { scaleConnectionState };
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
exports.useHDLKioskDeviceController = useHDLKioskDeviceController;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
let react = require("react");
|
|
3
|
+
//#region src/components/HDLKiosk/ui/controllers/useHDLKioskExitController.ts
|
|
4
|
+
/**
|
|
5
|
+
* 文件角色:适配 Session Exit Navigation 与验证式订单重置。
|
|
6
|
+
* 运行机制:用户退出先经过 Actor Guard/确认;自动退出直接解析既有 Pending Navigation,
|
|
7
|
+
* 两者最终都调用 Runtime 提供的 returnToEntry。
|
|
8
|
+
* 边界:不拥有 reset pending/error,也不渲染确认弹层。
|
|
9
|
+
*/
|
|
10
|
+
function useHDLKioskExitController({ session, snapshot, returnToEntry }) {
|
|
11
|
+
var _snapshot$pendingNavi, _snapshot$pendingNavi2;
|
|
12
|
+
const sequence = (0, react.useRef)(0);
|
|
13
|
+
const pendingConfirmation = ((_snapshot$pendingNavi = snapshot.pendingNavigation) === null || _snapshot$pendingNavi === void 0 ? void 0 : _snapshot$pendingNavi.request.kind) === "confirmEndOrder" ? snapshot.pendingNavigation : void 0;
|
|
14
|
+
const pendingAutomaticExit = ((_snapshot$pendingNavi2 = snapshot.pendingNavigation) === null || _snapshot$pendingNavi2 === void 0 ? void 0 : _snapshot$pendingNavi2.request.kind) === "performSessionExit" ? snapshot.pendingNavigation : void 0;
|
|
15
|
+
const resetSession = (0, react.useCallback)(() => {
|
|
16
|
+
returnToEntry("ui");
|
|
17
|
+
}, [returnToEntry]);
|
|
18
|
+
const requestEndOrder = (0, react.useCallback)(() => {
|
|
19
|
+
sequence.current += 1;
|
|
20
|
+
session.actor.navigate({
|
|
21
|
+
kind: "sessionExit",
|
|
22
|
+
reason: "userRequest"
|
|
23
|
+
}, `ui:${snapshot.sessionEpoch}:exit:${sequence.current}`);
|
|
24
|
+
}, [session.actor, snapshot.sessionEpoch]);
|
|
25
|
+
const cancelEndOrder = (0, react.useCallback)(() => {
|
|
26
|
+
if (!pendingConfirmation) return;
|
|
27
|
+
session.actor.resolvePendingNavigation(pendingConfirmation.navigationId, "cancel");
|
|
28
|
+
}, [pendingConfirmation, session.actor]);
|
|
29
|
+
const confirmEndOrder = (0, react.useCallback)(() => {
|
|
30
|
+
if (!pendingConfirmation || !session.actor.resolvePendingNavigation(pendingConfirmation.navigationId, "allow")) return;
|
|
31
|
+
resetSession();
|
|
32
|
+
}, [
|
|
33
|
+
pendingConfirmation,
|
|
34
|
+
resetSession,
|
|
35
|
+
session.actor
|
|
36
|
+
]);
|
|
37
|
+
(0, react.useEffect)(() => {
|
|
38
|
+
if (!pendingAutomaticExit || !session.actor.resolvePendingNavigation(pendingAutomaticExit.navigationId, "allow")) return;
|
|
39
|
+
resetSession();
|
|
40
|
+
}, [
|
|
41
|
+
pendingAutomaticExit,
|
|
42
|
+
resetSession,
|
|
43
|
+
session.actor
|
|
44
|
+
]);
|
|
45
|
+
return {
|
|
46
|
+
endOrderConfirmationOpen: Boolean(pendingConfirmation),
|
|
47
|
+
resetSession,
|
|
48
|
+
requestEndOrder,
|
|
49
|
+
cancelEndOrder,
|
|
50
|
+
confirmEndOrder
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
exports.useHDLKioskExitController = useHDLKioskExitController;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
2
|
let react = require("react");
|
|
3
|
-
//#region src/components/HDLKiosk/
|
|
3
|
+
//#region src/components/HDLKiosk/ui/controllers/useHDLKioskScreenData.ts
|
|
4
4
|
/**
|
|
5
5
|
* 文件角色:按当前 Screen 集中加载页面所需的 Catalog/称重/定制商品数据。
|
|
6
6
|
* 运行机制:观察当前节点,调用 Host read/query 能力并输出 loading/ready/error 数据,
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_createRuntime = require("../../runtime/createRuntime.js");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
//#region src/components/HDLKiosk/ui/controllers/useHDLKioskSessionController.ts
|
|
5
|
+
/**
|
|
6
|
+
* 文件角色:把 React Entry 状态适配到无头 Application Runtime。
|
|
7
|
+
* 运行机制:Controller 只处理能力/可见性和 UI pending;Trigger 路由、Session 创建、
|
|
8
|
+
* ensure、单会话准入与销毁均由 Runtime 持有。
|
|
9
|
+
* 边界:不直接创建 Actor,也不消费具体 Screen 的局部交互。
|
|
10
|
+
*/
|
|
11
|
+
function useHDLKioskSessionController({ host, config, isActive }) {
|
|
12
|
+
const applicationRuntime = (0, react.useMemo)(() => require_createRuntime.createHDLKioskApplicationRuntime(host, { config }), [config, host]);
|
|
13
|
+
const snapshot = (0, react.useSyncExternalStore)(applicationRuntime.subscribe, applicationRuntime.getSnapshot, applicationRuntime.getSnapshot);
|
|
14
|
+
(0, react.useEffect)(() => {
|
|
15
|
+
return () => applicationRuntime.dispose();
|
|
16
|
+
}, [applicationRuntime]);
|
|
17
|
+
(0, react.useEffect)(() => {
|
|
18
|
+
if (!isActive) {
|
|
19
|
+
applicationRuntime.deactivate();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
applicationRuntime.activate();
|
|
23
|
+
return () => applicationRuntime.deactivate();
|
|
24
|
+
}, [applicationRuntime, isActive]);
|
|
25
|
+
const start = (0, react.useCallback)(({ entry }) => applicationRuntime.start(entry), [applicationRuntime]);
|
|
26
|
+
const completeReset = (0, react.useCallback)((completedSession) => applicationRuntime.completeReset(completedSession), [applicationRuntime]);
|
|
27
|
+
const returnToEntry = (0, react.useCallback)((reason = "application") => applicationRuntime.returnToEntry(reason), [applicationRuntime]);
|
|
28
|
+
return {
|
|
29
|
+
session: snapshot.session,
|
|
30
|
+
starting: snapshot.starting,
|
|
31
|
+
startErrorReference: snapshot.startErrorReference,
|
|
32
|
+
returning: snapshot.returning,
|
|
33
|
+
returnError: snapshot.returnError,
|
|
34
|
+
start,
|
|
35
|
+
completeReset,
|
|
36
|
+
returnToEntry
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
exports.useHDLKioskSessionController = useHDLKioskSessionController;
|
|
@@ -2,7 +2,7 @@ const require_runtime = require("../../../../../_virtual/_rolldown/runtime.js");
|
|
|
2
2
|
let react = require("react");
|
|
3
3
|
react = require_runtime.__toESM(react);
|
|
4
4
|
let _pisell_utils = require("@pisell/utils");
|
|
5
|
-
//#region src/components/HDLKiosk/
|
|
5
|
+
//#region src/components/HDLKiosk/ui/entry/Screen/index.tsx
|
|
6
6
|
const LANGUAGE_OPTIONS = Object.freeze([
|
|
7
7
|
{
|
|
8
8
|
value: "en",
|
|
@@ -25,10 +25,12 @@ const LANGUAGE_OPTIONS = Object.freeze([
|
|
|
25
25
|
label: "Português"
|
|
26
26
|
}
|
|
27
27
|
]);
|
|
28
|
-
function BrandMark() {
|
|
29
|
-
return /* @__PURE__ */ react.default.createElement("
|
|
28
|
+
function BrandMark({ onClick }) {
|
|
29
|
+
return /* @__PURE__ */ react.default.createElement("button", {
|
|
30
30
|
className: "hdl-entry-brand-mark",
|
|
31
|
-
|
|
31
|
+
type: "button",
|
|
32
|
+
"aria-label": "打开称重模拟器",
|
|
33
|
+
onClick
|
|
32
34
|
}, "Hi");
|
|
33
35
|
}
|
|
34
36
|
function GlobeIcon() {
|
|
@@ -178,7 +180,7 @@ function EntryGraphic({ entry }) {
|
|
|
178
180
|
if (entry === "barcode") return /* @__PURE__ */ react.default.createElement(BarcodeGraphic, null);
|
|
179
181
|
return /* @__PURE__ */ react.default.createElement(ScaleGraphic, null);
|
|
180
182
|
}
|
|
181
|
-
function EntryScreen({ locale, model, onLocaleChange, onTechnicalSupportClick, onSelect, busy = false, errorReference, errorMessage = "Unable to start a safe order session." }) {
|
|
183
|
+
function EntryScreen({ locale, model, onLocaleChange, onTechnicalSupportClick, onScaleSimulatorRequest, onSelect, busy = false, errorReference, errorMessage = "Unable to start a safe order session." }) {
|
|
182
184
|
const [reachMode, setReachMode] = (0, react.useState)(false);
|
|
183
185
|
const entryLocale = locale || "en";
|
|
184
186
|
return /* @__PURE__ */ react.default.createElement("section", {
|
|
@@ -204,7 +206,7 @@ function EntryScreen({ locale, model, onLocaleChange, onTechnicalSupportClick, o
|
|
|
204
206
|
}, /* @__PURE__ */ react.default.createElement("path", { d: "M112 248c-52-38-43-88-5-118 33-26 40-71 3-116" })), /* @__PURE__ */ react.default.createElement("svg", {
|
|
205
207
|
className: "hdl-entry-steam hdl-entry-steam--two",
|
|
206
208
|
viewBox: "0 0 180 260"
|
|
207
|
-
}, /* @__PURE__ */ react.default.createElement("path", { d: "M71 250c38-41 22-78-6-111-31-37-19-78 16-125" })), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null)), /* @__PURE__ */ react.default.createElement("header", { className: "hdl-entry-screen__header" }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-entry-brand" }, /* @__PURE__ */ react.default.createElement(BrandMark,
|
|
209
|
+
}, /* @__PURE__ */ react.default.createElement("path", { d: "M71 250c38-41 22-78-6-111-31-37-19-78 16-125" })), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null), /* @__PURE__ */ react.default.createElement("span", null)), /* @__PURE__ */ react.default.createElement("header", { className: "hdl-entry-screen__header" }, /* @__PURE__ */ react.default.createElement("div", { className: "hdl-entry-brand" }, /* @__PURE__ */ react.default.createElement(BrandMark, { onClick: onScaleSimulatorRequest }), /* @__PURE__ */ react.default.createElement("span", { className: "hdl-entry-brand__copy" }, /* @__PURE__ */ react.default.createElement("strong", null, _pisell_utils.locales.getText("pisell2.hdl-kiosk.brand")), /* @__PURE__ */ react.default.createElement("small", null, "MALA · TANG"))), /* @__PURE__ */ react.default.createElement("label", { className: "hdl-entry-language" }, /* @__PURE__ */ react.default.createElement(GlobeIcon, null), /* @__PURE__ */ react.default.createElement("select", {
|
|
208
210
|
"aria-label": _pisell_utils.locales.getText("pisell2.hdl-kiosk.entry-language-label"),
|
|
209
211
|
value: entryLocale,
|
|
210
212
|
onChange: (event) => onLocaleChange === null || onLocaleChange === void 0 ? void 0 : onLocaleChange(event.target.value)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require("../../../../_virtual/_rolldown/runtime.js");
|
|
2
|
-
const require_registry = require("
|
|
2
|
+
const require_registry = require("../../app/workflow/registry.js");
|
|
3
3
|
let _pisell_utils = require("@pisell/utils");
|
|
4
|
-
//#region src/components/HDLKiosk/
|
|
4
|
+
//#region src/components/HDLKiosk/ui/entry/model.ts
|
|
5
5
|
function createEntryScreenModel(config, capabilities, scaleConnectionState, hostStatus, entryDataPreparing = false) {
|
|
6
6
|
const dataPreparing = entryDataPreparing || hostStatus === "loading";
|
|
7
7
|
const hostUnavailable = hostStatus === "error";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_scaleStore = require("../runtime/devices/scaleStore.js");
|
|
3
|
+
let react = require("react");
|
|
4
|
+
react = require_runtime.__toESM(react);
|
|
5
|
+
//#region src/components/HDLKiosk/ui/scale.tsx
|
|
6
|
+
const HDLScaleRuntimeContext = (0, react.createContext)(require_scaleStore.createHDLScaleRuntime());
|
|
7
|
+
function HDLScaleRuntimeProvider({ runtime, children }) {
|
|
8
|
+
return react.default.createElement(HDLScaleRuntimeContext.Provider, {
|
|
9
|
+
value: runtime,
|
|
10
|
+
children
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function useHDLScaleSnapshot() {
|
|
14
|
+
const runtime = (0, react.useContext)(HDLScaleRuntimeContext);
|
|
15
|
+
return (0, react.useSyncExternalStore)(runtime.subscribe, runtime.getSnapshot, runtime.getSnapshot);
|
|
16
|
+
}
|
|
17
|
+
/** 仅供提交边界同步读取点击当下的最新设备快照。 */
|
|
18
|
+
function useHDLScaleRuntime() {
|
|
19
|
+
return (0, react.useContext)(HDLScaleRuntimeContext);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.HDLScaleRuntimeProvider = HDLScaleRuntimeProvider;
|
|
23
|
+
exports.useHDLScaleRuntime = useHDLScaleRuntime;
|
|
24
|
+
exports.useHDLScaleSnapshot = useHDLScaleSnapshot;
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
require("../../../_virtual/_rolldown/runtime.js");
|
|
2
2
|
let react = require("react");
|
|
3
|
-
//#region src/components/HDLKiosk/
|
|
4
|
-
/**
|
|
5
|
-
* 文件角色:将 Host Sales Projection 安全接入 React。
|
|
6
|
-
* 运行机制:通过 useSyncExternalStore 订阅统一快照,确保同一次 render 读取一致事实并
|
|
7
|
-
* 兼容 Host 对象身份稳定、内部来源变化的情况。
|
|
8
|
-
* 边界:只读,不触发 load/recalc,也不复制一份 React 订单状态。
|
|
9
|
-
*/
|
|
3
|
+
//#region src/components/HDLKiosk/ui/snapshots.ts
|
|
4
|
+
/** 将纯 Host 与 Workflow 快照安全接入 React,不发送命令或派生业务事实。 */
|
|
10
5
|
function useHostSnapshot(host) {
|
|
11
6
|
const cacheRef = (0, react.useRef)();
|
|
12
7
|
const getSnapshot = (0, react.useCallback)(() => {
|
|
@@ -21,5 +16,9 @@ function useHostSnapshot(host) {
|
|
|
21
16
|
}, [host]);
|
|
22
17
|
return (0, react.useSyncExternalStore)(host.sales.subscribe, getSnapshot, getSnapshot);
|
|
23
18
|
}
|
|
19
|
+
function useWorkflowSnapshot(actor) {
|
|
20
|
+
return (0, react.useSyncExternalStore)(actor.subscribe, actor.getSnapshot, actor.getSnapshot);
|
|
21
|
+
}
|
|
24
22
|
//#endregion
|
|
25
23
|
exports.useHostSnapshot = useHostSnapshot;
|
|
24
|
+
exports.useWorkflowSnapshot = useWorkflowSnapshot;
|
|
@@ -4,7 +4,7 @@ const require_view$2 = require("../slices/fulfillment/view.js");
|
|
|
4
4
|
const require_view$3 = require("../slices/identity/view.js");
|
|
5
5
|
const require_view$4 = require("../slices/payment/view.js");
|
|
6
6
|
const require_view$5 = require("../slices/primaryProductPrompt/view.js");
|
|
7
|
-
//#region src/components/HDLKiosk/
|
|
7
|
+
//#region src/components/HDLKiosk/ui/views.ts
|
|
8
8
|
const hdlKioskViews = Object.freeze({
|
|
9
9
|
identity: require_view$3.renderIdentity,
|
|
10
10
|
fulfillment: require_view$2.renderFulfillment,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_objectSpread2 = require("../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js");
|
|
2
2
|
const require_objectWithoutProperties = require("../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectWithoutProperties.js");
|
|
3
|
-
//#region src/components/HDLKiosk/
|
|
3
|
+
//#region src/components/HDLKiosk/ui/workflowEvent.ts
|
|
4
4
|
const _excluded = ["kind"];
|
|
5
5
|
function createWorkflowEvent(action, currentActivity, stepId, intentId) {
|
|
6
6
|
if (action.activityId !== currentActivity) return void 0;
|
|
@@ -57,10 +57,10 @@ function createCartDrawerModel(sales, primaryWeightedProductId) {
|
|
|
57
57
|
totalLabel: totalText ? _pisell_utils.locales.getText("pisell2.hdl-kiosk.total") : _pisell_utils.locales.getText("pisell2.hdl-kiosk.total-calculating")
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
-
function createActivityScreenModel(
|
|
60
|
+
function createActivityScreenModel(surfaceId, snapshot, node, sales, businessMode = "prototype") {
|
|
61
61
|
let title;
|
|
62
62
|
let description;
|
|
63
|
-
switch (
|
|
63
|
+
switch (surfaceId) {
|
|
64
64
|
case "entry":
|
|
65
65
|
title = _pisell_utils.locales.getText("pisell2.hdl-kiosk.entry-title");
|
|
66
66
|
description = _pisell_utils.locales.getText("pisell2.hdl-kiosk.entry-supporting");
|
|
@@ -86,12 +86,12 @@ function createActivityScreenModel(screenId, snapshot, node, sales, businessMode
|
|
|
86
86
|
description = _pisell_utils.locales.getText("pisell2.hdl-kiosk.checkout-title");
|
|
87
87
|
break;
|
|
88
88
|
}
|
|
89
|
-
const canReviewCatalog =
|
|
89
|
+
const canReviewCatalog = surfaceId !== "catalog" || sales.cart.lineCount > 0;
|
|
90
90
|
const placeholder = node.readiness === "placeholder";
|
|
91
91
|
const placeholderBlocked = placeholder && businessMode === "production";
|
|
92
92
|
const error = resolveHDLKioskErrorPresentation({ error: snapshot.lastError });
|
|
93
93
|
return Object.freeze({
|
|
94
|
-
|
|
94
|
+
surfaceId,
|
|
95
95
|
activity: node.activity,
|
|
96
96
|
title,
|
|
97
97
|
description,
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# BigSale HDLKiosk integration
|
|
2
|
+
|
|
3
|
+
This directory is the compatibility boundary between BigSale/SalesSDK and the
|
|
4
|
+
independent `components/HDLKiosk` material.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
- `index.tsx`: outer composition only; renders device owners, HDLKiosk and the
|
|
9
|
+
embedded payment runtime.
|
|
10
|
+
- `adapter/useBigSaleHDLKioskAdapter.ts`: owns late React capabilities and the
|
|
11
|
+
stable Host assembly (payment controller, authenticated customer, scale and
|
|
12
|
+
fulfillment).
|
|
13
|
+
- `adapter/useBigSaleHDLKioskHost.ts`: bridges changing React Context into one
|
|
14
|
+
stable Host and publishes semantic Projection changes.
|
|
15
|
+
- `adapter/createHost.ts`: pure Host composition factory.
|
|
16
|
+
- `adapter/host/`: pure Host support: capabilities, Projection, telemetry and
|
|
17
|
+
the fulfillment writer.
|
|
18
|
+
- `adapter/devices/`: raw BigSale device sources converted to HDLKiosk ports.
|
|
19
|
+
- `adapter/sales/index.ts`: composition-only Sales Port entry.
|
|
20
|
+
- `adapter/sales/`: capability modules for session, catalog, identity,
|
|
21
|
+
fulfillment, cart, weighted products and payment.
|
|
22
|
+
- `runtime/scaleBridge.ts`: owns one Scale Snapshot runtime and one standard
|
|
23
|
+
device-event stream.
|
|
24
|
+
- `runtime/BigSaleScaleRuntimeOwner.tsx`: the only React owner of the native
|
|
25
|
+
scale Hook; publishes exclusively through ScaleBridge.
|
|
26
|
+
- `runtime/HDLKioskPaymentRuntime.tsx`: React-owned payment runtime.
|
|
27
|
+
- `hooks/`: template-level React effects that are not Host adapters.
|
|
28
|
+
- `cart/`: SaleDetail-based cart overlay presentation.
|
|
29
|
+
- `auth/`: BigSale login/register integration.
|
|
30
|
+
|
|
31
|
+
## Boundary rules
|
|
32
|
+
|
|
33
|
+
1. Raw BigSale, SalesSDK and OS objects stop in this directory.
|
|
34
|
+
2. HDLKiosk Core receives only contracts from `components/HDLKiosk/app`.
|
|
35
|
+
3. Reads use Projection snapshots; writes use explicit Host operations.
|
|
36
|
+
4. A stable Host must pair `getSnapshot` with semantic `subscribe`
|
|
37
|
+
notifications. Updating a ref without publishing is not a valid store.
|
|
38
|
+
5. React-owned capabilities are assembled in `useBigSaleHDLKioskAdapter`; do
|
|
39
|
+
not add new controller refs to `index.tsx`.
|
|
40
|
+
6. Add capability-specific code to `adapter/sales/` rather than growing the
|
|
41
|
+
Sales Port composition file with unrelated concerns.
|
|
42
|
+
7. Keep tests beside their capability. Shared BigSale test data belongs in
|
|
43
|
+
`adapter/testing/`, not in a new aggregate adapter suite.
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
const require_capabilities = require("./capabilities.js");
|
|
2
|
-
const
|
|
3
|
-
const require_projection = require("./projection.js");
|
|
4
|
-
const
|
|
5
|
-
const require_telemetry = require("./telemetry.js");
|
|
1
|
+
const require_capabilities = require("./host/capabilities.js");
|
|
2
|
+
const require_devicePort = require("./devices/devicePort.js");
|
|
3
|
+
const require_projection = require("./host/projection.js");
|
|
4
|
+
const require_index = require("./sales/index.js");
|
|
5
|
+
const require_telemetry = require("./host/telemetry.js");
|
|
6
6
|
//#region src/components/bigSale/templates/HDLKiosk/adapter/createHost.ts
|
|
7
7
|
function createBigSaleHDLKioskHost({ getContext, executeScan, hasScanExecutionSource, devices, writeFulfillment, getWriteFulfillment, getAuthenticatedCustomer, allowSimulatedFulfillment, subscribeProjection, getPickupReferenceMode, getPaymentController }) {
|
|
8
|
-
const
|
|
8
|
+
const resolveScaleEventSource = () => (devices === null || devices === void 0 ? void 0 : devices.getSubscribeScaleEvents) ? devices.getSubscribeScaleEvents() : devices === null || devices === void 0 ? void 0 : devices.subscribeScaleEvents;
|
|
9
9
|
const getSnapshot = require_projection.createBigSaleProjectionReader(getContext, getPickupReferenceMode);
|
|
10
10
|
const telemetry = require_telemetry.createBigSaleTelemetryPort();
|
|
11
11
|
let compatibilityFallbackSequence = 0;
|
|
12
12
|
return {
|
|
13
|
-
sales:
|
|
13
|
+
sales: require_index.createBigSaleSalesPort({
|
|
14
14
|
getContext,
|
|
15
15
|
getSnapshot,
|
|
16
16
|
executeScan,
|
|
@@ -33,11 +33,11 @@ function createBigSaleHDLKioskHost({ getContext, executeScan, hasScanExecutionSo
|
|
|
33
33
|
subscribeProjection,
|
|
34
34
|
getPaymentController
|
|
35
35
|
}),
|
|
36
|
-
devices:
|
|
36
|
+
devices: require_devicePort.createBigSaleDevicePort(devices),
|
|
37
37
|
telemetry,
|
|
38
38
|
get capabilities() {
|
|
39
39
|
return require_capabilities.resolveBigSaleHDLKioskCapabilities(getContext(), {
|
|
40
|
-
hasScaleWeightChangeSource: typeof
|
|
40
|
+
hasScaleWeightChangeSource: typeof resolveScaleEventSource() === "function",
|
|
41
41
|
hasScanExecutionSource: (hasScanExecutionSource === null || hasScanExecutionSource === void 0 ? void 0 : hasScanExecutionSource()) === true
|
|
42
42
|
});
|
|
43
43
|
}
|
package/lib/components/bigSale/templates/HDLKiosk/adapter/{devices.js → devices/devicePort.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region src/components/bigSale/templates/HDLKiosk/adapter/devices.ts
|
|
1
|
+
//#region src/components/bigSale/templates/HDLKiosk/adapter/devices/devicePort.ts
|
|
2
2
|
const SCAN_RESULT_EVENT = "nativeScanResult";
|
|
3
3
|
const FALLBACK_DEDUPE_WINDOW_MS = 350;
|
|
4
4
|
function fingerprint(value) {
|
|
@@ -13,7 +13,7 @@ function fingerprint(value) {
|
|
|
13
13
|
* BigSale/PisellOS 原始扫码协议只停留在本文件。缺少宿主 eventId 时使用
|
|
14
14
|
* 非明文 fingerprint + 短窗口合成降级 ID;capability 会保持 stableEventId=false。
|
|
15
15
|
*/
|
|
16
|
-
function createBigSaleDevicePort({ getPubsub, getAcquireScanFocus,
|
|
16
|
+
function createBigSaleDevicePort({ getPubsub, getAcquireScanFocus, subscribeScaleEvents, getSubscribeScaleEvents, now = Date.now } = {}) {
|
|
17
17
|
const listeners = /* @__PURE__ */ new Map();
|
|
18
18
|
let stopScanner;
|
|
19
19
|
let stopScale;
|
|
@@ -82,44 +82,16 @@ function createBigSaleDevicePort({ getPubsub, getAcquireScanFocus, subscribeWeig
|
|
|
82
82
|
} catch (_unused5) {}
|
|
83
83
|
};
|
|
84
84
|
const connectScale = () => {
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const cleanup = currentSubscribeWeightChange((payload) => {
|
|
91
|
-
var _payload$occurredAt, _payload$eventId;
|
|
92
|
-
const occurredAt = (_payload$occurredAt = payload.occurredAt) !== null && _payload$occurredAt !== void 0 ? _payload$occurredAt : now();
|
|
93
|
-
eventSequence += 1;
|
|
94
|
-
emit("scale", {
|
|
95
|
-
type: "weightChanged",
|
|
96
|
-
eventId: (_payload$eventId = payload.eventId) !== null && _payload$eventId !== void 0 ? _payload$eventId : `big-sale-scale:${occurredAt}:${eventSequence}`,
|
|
97
|
-
weight: payload.weight,
|
|
98
|
-
occurredAt
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
if (typeof cleanup === "function") cleanups.push(cleanup);
|
|
102
|
-
} catch (_unused6) {}
|
|
103
|
-
if (currentSubscribeScaleConnection) try {
|
|
104
|
-
const cleanup = currentSubscribeScaleConnection((payload) => {
|
|
105
|
-
var _payload$occurredAt2;
|
|
106
|
-
emit("scale", {
|
|
107
|
-
type: "connectionChanged",
|
|
108
|
-
device: "scale",
|
|
109
|
-
connected: payload.connected,
|
|
110
|
-
state: payload.state,
|
|
111
|
-
occurredAt: (_payload$occurredAt2 = payload.occurredAt) !== null && _payload$occurredAt2 !== void 0 ? _payload$occurredAt2 : now()
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
if (typeof cleanup === "function") cleanups.push(cleanup);
|
|
115
|
-
} catch (_unused7) {}
|
|
116
|
-
stopScale = () => {
|
|
117
|
-
cleanups.forEach((cleanup) => {
|
|
85
|
+
const currentSubscribe = getSubscribeScaleEvents ? getSubscribeScaleEvents() : subscribeScaleEvents;
|
|
86
|
+
if (stopScale || !currentSubscribe) return;
|
|
87
|
+
try {
|
|
88
|
+
const cleanup = currentSubscribe((event) => emit("scale", event));
|
|
89
|
+
stopScale = () => {
|
|
118
90
|
try {
|
|
119
91
|
cleanup();
|
|
120
|
-
} catch (
|
|
121
|
-
}
|
|
122
|
-
}
|
|
92
|
+
} catch (_unused6) {}
|
|
93
|
+
};
|
|
94
|
+
} catch (_unused7) {}
|
|
123
95
|
};
|
|
124
96
|
const syncConnections = () => {
|
|
125
97
|
const scannerNeeded = Array.from(listeners.values()).some((sources) => sources.has("scanner"));
|
package/lib/components/bigSale/templates/HDLKiosk/adapter/{capabilities.js → host/capabilities.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region src/components/bigSale/templates/HDLKiosk/adapter/capabilities.ts
|
|
1
|
+
//#region src/components/bigSale/templates/HDLKiosk/adapter/host/capabilities.ts
|
|
2
2
|
function resolveBigSaleHDLKioskCapabilities(context, options = {}) {
|
|
3
3
|
var _bookingTicket$store;
|
|
4
4
|
const bookingTicket = context.sales.bookingTicket;
|
|
@@ -6,7 +6,7 @@ function resolveBigSaleHDLKioskCapabilities(context, options = {}) {
|
|
|
6
6
|
const canUpdateCustomizedProduct = typeof context.cart.updateItem === "function" && typeof (bookingTicket === null || bookingTicket === void 0 ? void 0 : bookingTicket.transformDetailToProductAndBooking) === "function";
|
|
7
7
|
return {
|
|
8
8
|
session: {
|
|
9
|
-
ensure: typeof context.sales.createNew === "function",
|
|
9
|
+
ensure: typeof context.sales.createNew === "function" && typeof context.sales.clearCartAndReset === "function",
|
|
10
10
|
reset: typeof context.sales.clearCartAndReset === "function"
|
|
11
11
|
},
|
|
12
12
|
cart: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_asyncToGenerator = require("
|
|
2
|
-
const require_normalize = require("
|
|
3
|
-
//#region src/components/bigSale/templates/HDLKiosk/adapter/
|
|
1
|
+
const require_asyncToGenerator = require("../../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js");
|
|
2
|
+
const require_normalize = require("../normalize.js");
|
|
3
|
+
//#region src/components/bigSale/templates/HDLKiosk/adapter/host/fulfillmentWriter.ts
|
|
4
4
|
function createHDLKioskFulfillmentWriter(runtime) {
|
|
5
5
|
if (typeof (runtime === null || runtime === void 0 ? void 0 : runtime.setPickupReferenceMode) !== "function" || typeof (runtime === null || runtime === void 0 ? void 0 : runtime.setServiceType) !== "function") return;
|
|
6
6
|
const setPickupReferenceMode = runtime.setPickupReferenceMode.bind(runtime);
|
package/lib/components/bigSale/templates/HDLKiosk/adapter/{projection.js → host/projection.js}
RENAMED
|
@@ -1,15 +1,24 @@
|
|
|
1
|
-
const require_runtime = require("
|
|
2
|
-
const require_objectSpread2 = require("
|
|
3
|
-
const require_resolveSkuValue = require("
|
|
1
|
+
const require_runtime = require("../../../../../../_virtual/_rolldown/runtime.js");
|
|
2
|
+
const require_objectSpread2 = require("../../../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/objectSpread2.js");
|
|
3
|
+
const require_resolveSkuValue = require("../../../../../../plus/skuOptionsSelection/utils/resolveSkuValue.js");
|
|
4
4
|
let decimal_js = require("decimal.js");
|
|
5
5
|
decimal_js = require_runtime.__toESM(decimal_js);
|
|
6
|
-
//#region src/components/bigSale/templates/HDLKiosk/adapter/projection.ts
|
|
6
|
+
//#region src/components/bigSale/templates/HDLKiosk/adapter/host/projection.ts
|
|
7
7
|
/**
|
|
8
8
|
* 文件角色:把 BigSale/SalesSDK 当前状态投影成 HDLKiosk 只读业务快照。
|
|
9
9
|
* 运行机制:归一化订单行、称重数量、Summary、Customer、Payment 和 fingerprint,
|
|
10
10
|
* 仅在语义变化时推进 observationId。
|
|
11
11
|
* 边界:Projection 只读且不是第二个 Store;不得在这里执行 load、写入或前端定价。
|
|
12
12
|
*/
|
|
13
|
+
/**
|
|
14
|
+
* 交易门禁必须优先读取 OS 同步真源。SalesSDK reset 已完成但 React RootSnapshot
|
|
15
|
+
* 尚未提交时,context.tempOrder 可能仍是上一笔 paid 订单。
|
|
16
|
+
*/
|
|
17
|
+
function resolveBigSaleLiveTempOrder(context) {
|
|
18
|
+
const bookingTicket = context.sales.bookingTicket;
|
|
19
|
+
if (typeof (bookingTicket === null || bookingTicket === void 0 ? void 0 : bookingTicket.getTempOrder) === "function") return bookingTicket.getTempOrder();
|
|
20
|
+
return context.sales.tempOrder;
|
|
21
|
+
}
|
|
13
22
|
function getProduct(line) {
|
|
14
23
|
return "product_id" in line ? line : line._extend.product;
|
|
15
24
|
}
|
|
@@ -95,9 +104,10 @@ function projectBigSaleCartLine(line) {
|
|
|
95
104
|
});
|
|
96
105
|
}
|
|
97
106
|
function normalizePayment(context, cartLineCount) {
|
|
98
|
-
var
|
|
99
|
-
const
|
|
100
|
-
const
|
|
107
|
+
var _tempOrder$payment_st, _context$summary$summ;
|
|
108
|
+
const tempOrder = resolveBigSaleLiveTempOrder(context);
|
|
109
|
+
const paymentStatus = String((_tempOrder$payment_st = tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.payment_status) !== null && _tempOrder$payment_st !== void 0 ? _tempOrder$payment_st : "").toLowerCase();
|
|
110
|
+
const orderId = tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.order_id;
|
|
101
111
|
const amount = (_context$summary$summ = context.summary.summary) === null || _context$summary$summ === void 0 ? void 0 : _context$summary$summ.total_amount;
|
|
102
112
|
if (paymentStatus === "paid" && orderId != null && amount != null) return Object.freeze({
|
|
103
113
|
status: "succeeded",
|
|
@@ -120,19 +130,19 @@ function resolveHDLKioskPickupReferenceMode(openData) {
|
|
|
120
130
|
return (openData === null || openData === void 0 ? void 0 : openData["fulfillment.fulfillment_ref_mode"]) === "sale_number" ? "sale_number" : "short_number";
|
|
121
131
|
}
|
|
122
132
|
function resolvePickupNumber(context, mode) {
|
|
123
|
-
var _context$sales$
|
|
133
|
+
var _context$sales$tempOr;
|
|
124
134
|
const field = mode === "sale_number" ? "shop_order_number" : "shop_full_order_number";
|
|
125
|
-
return ((_context$sales$
|
|
135
|
+
return ((_context$sales$tempOr = context.sales.tempOrder) === null || _context$sales$tempOr === void 0 ? void 0 : _context$sales$tempOr[field]) || void 0;
|
|
126
136
|
}
|
|
127
137
|
function buildSnapshot(context, observationId, pickupReferenceMode) {
|
|
128
|
-
var _context$cart$display, _context$sales$
|
|
138
|
+
var _context$cart$display, _context$sales$tempOr2, _context$sales$tempOr3, _context$sales$tempOr4, _context$sales$tempOr5, _context$customer$sel, _context$customer$sel2, _context$sales$tempOr6, _context$sales$tempOr7, _customer$customerId, _context$sales$tempOr8;
|
|
129
139
|
const rawLines = (_context$cart$display = context.cart.displayLines) !== null && _context$cart$display !== void 0 ? _context$cart$display : context.cart.items;
|
|
130
140
|
const lines = Object.freeze(rawLines.map(projectBigSaleCartLine).filter((line) => line !== null));
|
|
131
141
|
const summary = context.summary.summary;
|
|
132
142
|
const normalizedSummary = summary ? Object.freeze({
|
|
133
143
|
status: "ready",
|
|
134
|
-
currency: String((_context$sales$
|
|
135
|
-
currencySymbol: String((_context$sales$
|
|
144
|
+
currency: String((_context$sales$tempOr2 = (_context$sales$tempOr3 = context.sales.tempOrder) === null || _context$sales$tempOr3 === void 0 ? void 0 : _context$sales$tempOr3.currency_code) !== null && _context$sales$tempOr2 !== void 0 ? _context$sales$tempOr2 : ""),
|
|
145
|
+
currencySymbol: String((_context$sales$tempOr4 = (_context$sales$tempOr5 = context.sales.tempOrder) === null || _context$sales$tempOr5 === void 0 ? void 0 : _context$sales$tempOr5.currency_symbol) !== null && _context$sales$tempOr4 !== void 0 ? _context$sales$tempOr4 : ""),
|
|
136
146
|
total: String(summary.total_amount),
|
|
137
147
|
due: String(summary.expect_amount)
|
|
138
148
|
}) : context.sales.status === "loading" ? Object.freeze({ status: "calculating" }) : Object.freeze({ status: "missing" });
|
|
@@ -146,7 +156,7 @@ function buildSnapshot(context, observationId, pickupReferenceMode) {
|
|
|
146
156
|
""
|
|
147
157
|
].includes(String((_context$customer$sel2 = context.customer.selected.id) !== null && _context$customer$sel2 !== void 0 ? _context$customer$sel2 : "")) })) : void 0;
|
|
148
158
|
const fingerprintValue = [
|
|
149
|
-
(_context$sales$
|
|
159
|
+
(_context$sales$tempOr6 = (_context$sales$tempOr7 = context.sales.tempOrder) === null || _context$sales$tempOr7 === void 0 ? void 0 : _context$sales$tempOr7.order_id) !== null && _context$sales$tempOr6 !== void 0 ? _context$sales$tempOr6 : "",
|
|
150
160
|
...lines.map((line) => `${line.lineId}:${line.quantity}`),
|
|
151
161
|
normalizedSummary.status === "ready" ? normalizedSummary.due : "",
|
|
152
162
|
(_customer$customerId = customer === null || customer === void 0 ? void 0 : customer.customerId) !== null && _customer$customerId !== void 0 ? _customer$customerId : ""
|
|
@@ -154,7 +164,7 @@ function buildSnapshot(context, observationId, pickupReferenceMode) {
|
|
|
154
164
|
return Object.freeze({
|
|
155
165
|
observationId,
|
|
156
166
|
hostStatus: context.sales.status,
|
|
157
|
-
orderId: ((_context$sales$
|
|
167
|
+
orderId: ((_context$sales$tempOr8 = context.sales.tempOrder) === null || _context$sales$tempOr8 === void 0 ? void 0 : _context$sales$tempOr8.order_id) == null ? void 0 : String(context.sales.tempOrder.order_id),
|
|
158
168
|
pickupNumber: resolvePickupNumber(context, pickupReferenceMode),
|
|
159
169
|
cart: Object.freeze({
|
|
160
170
|
lines,
|
|
@@ -188,4 +198,5 @@ function createBigSaleProjectionReader(getContext, getPickupReferenceMode = () =
|
|
|
188
198
|
exports.createBigSaleProjectionReader = createBigSaleProjectionReader;
|
|
189
199
|
exports.projectBigSaleCartLine = projectBigSaleCartLine;
|
|
190
200
|
exports.resolveBigSaleLineId = resolveBigSaleLineId;
|
|
201
|
+
exports.resolveBigSaleLiveTempOrder = resolveBigSaleLiveTempOrder;
|
|
191
202
|
exports.resolveHDLKioskPickupReferenceMode = resolveHDLKioskPickupReferenceMode;
|