@pisell/private-materials 6.12.168 → 6.12.169

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 (252) 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/render/default/view.css +1 -1
  6. package/build/lowcode/render/default/view.js +10 -10
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +10 -10
  9. package/es/components/HDLKiosk/{contracts → app/contracts}/config.js +1 -1
  10. package/es/components/HDLKiosk/app/manifest.js +11 -11
  11. package/es/components/HDLKiosk/app/operations.js +92 -0
  12. package/es/components/HDLKiosk/app/workflow/barcode.js +7 -3
  13. package/es/components/HDLKiosk/app/workflow/index.js +16 -0
  14. package/es/components/HDLKiosk/app/workflow/predicates.js +1 -1
  15. package/es/components/HDLKiosk/app/workflow/quick.js +1 -1
  16. package/es/components/HDLKiosk/app/workflow/registry.js +4 -4
  17. package/es/components/HDLKiosk/app/workflow/scale.js +5 -1
  18. package/es/components/HDLKiosk/docs/00-/346/226/207/344/273/266/345/257/274/350/210/252.md +104 -167
  19. 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
  20. package/es/components/HDLKiosk/docs/04-/350/256/276/345/244/207/344/270/216/347/247/260/351/207/215.md +43 -26
  21. package/es/components/HDLKiosk/docs/05-/344/272/244/346/230/223/345/256/211/345/205/250.md +2 -0
  22. 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
  23. 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
  24. package/es/components/HDLKiosk/docs/README.md +6 -2
  25. package/es/components/HDLKiosk/docs//345/256/236/346/226/275/350/277/233/345/272/246.md +8 -7
  26. package/es/components/HDLKiosk/docs//346/236/266/346/236/204/350/256/276/350/256/241.md +16 -18
  27. package/es/components/HDLKiosk/index.js +22 -28
  28. package/es/components/HDLKiosk/index.less +1 -1
  29. package/es/components/HDLKiosk/kernel/README.md +13 -12
  30. package/es/components/HDLKiosk/kernel/application/defineApplication.js +63 -24
  31. package/es/components/HDLKiosk/kernel/application/defineSlice.js +6 -6
  32. package/es/components/HDLKiosk/kernel/application/runtime.js +237 -0
  33. package/es/components/HDLKiosk/kernel/operations/coordinator.js +1 -1
  34. package/es/components/HDLKiosk/kernel/operations/registry.js +3 -3
  35. package/es/components/HDLKiosk/kernel/operations/sessionEpoch.js +1 -1
  36. package/es/components/HDLKiosk/kernel/operations/types.js +7 -3
  37. package/es/components/HDLKiosk/kernel/workflow/actor.js +16 -17
  38. package/es/components/HDLKiosk/kernel/workflow/compiler.js +14 -16
  39. package/es/components/HDLKiosk/runtime/createRuntime.js +238 -0
  40. package/es/components/HDLKiosk/{devices → runtime/devices}/dedupeStore.js +1 -1
  41. package/es/components/HDLKiosk/{devices → runtime/devices}/scaleIngress.js +1 -1
  42. package/es/components/HDLKiosk/{devices/scale/runtime.js → runtime/devices/scaleStore.js} +18 -24
  43. package/es/components/HDLKiosk/{devices → runtime/devices}/scannerIngress.js +1 -1
  44. package/es/components/HDLKiosk/runtime/devices/scannerSessionPort.js +60 -0
  45. package/es/components/HDLKiosk/runtime/devices/scannerSessionRouter.js +212 -0
  46. package/es/components/HDLKiosk/runtime/operations/barcode.js +18 -0
  47. package/es/components/HDLKiosk/runtime/operations/cart.js +44 -0
  48. package/es/components/HDLKiosk/{app → runtime}/operations/cartConsistency.js +1 -1
  49. package/es/components/HDLKiosk/{app → runtime}/operations/checkout.js +95 -110
  50. package/es/components/HDLKiosk/{app → runtime}/operations/checkoutRequirements.js +1 -1
  51. package/es/components/HDLKiosk/{app → runtime}/operations/checkoutSafety.js +1 -1
  52. package/es/components/HDLKiosk/{app → runtime}/operations/coordinator.js +2 -2
  53. package/es/components/HDLKiosk/runtime/operations/customization.js +70 -0
  54. package/es/components/HDLKiosk/{app → runtime}/operations/errors.js +1 -1
  55. package/es/components/HDLKiosk/runtime/operations/fulfillment.js +6 -0
  56. package/es/components/HDLKiosk/runtime/operations/identity.js +55 -0
  57. package/es/components/HDLKiosk/runtime/operations/registry.js +34 -0
  58. package/es/components/HDLKiosk/runtime/operations/session.js +29 -0
  59. package/es/components/HDLKiosk/runtime/operations/types.js +13 -0
  60. package/es/components/HDLKiosk/runtime/session/blockPolicy.js +14 -0
  61. package/es/components/HDLKiosk/runtime/{createWorkflowSession.js → session/createSession.js} +67 -17
  62. package/es/components/HDLKiosk/runtime/{domainTransitionRunner.js → session/transitionRunner.js} +10 -5
  63. package/es/components/HDLKiosk/runtime/{workflowContext.js → session/workflowContext.js} +2 -2
  64. package/es/components/HDLKiosk/runtime/{workflowLifecycle.js → session/workflowLifecycle.js} +2 -2
  65. package/es/components/HDLKiosk/runtime/triggers.js +28 -0
  66. package/es/components/HDLKiosk/slices/catalog/Screen/index.js +15 -8
  67. package/es/components/HDLKiosk/slices/catalog/Screen/index.less +74 -13
  68. package/es/components/HDLKiosk/slices/catalog/slice.js +2 -2
  69. package/es/components/HDLKiosk/slices/customization/Screen/index.js +34 -35
  70. package/es/components/HDLKiosk/slices/customization/Screen/index.less +5 -0
  71. package/es/components/HDLKiosk/slices/customization/slice.js +2 -3
  72. package/es/components/HDLKiosk/slices/fulfillment/slice.js +2 -2
  73. package/es/components/HDLKiosk/slices/fulfillment/view.js +1 -1
  74. package/es/components/HDLKiosk/slices/identity/slice.js +2 -2
  75. package/es/components/HDLKiosk/slices/identity/view.js +1 -1
  76. package/es/components/HDLKiosk/slices/payment/slice.js +3 -3
  77. package/es/components/HDLKiosk/slices/primaryProductPrompt/slice.js +1 -1
  78. package/es/components/HDLKiosk/{runtime → ui}/HDLKioskWorkflowView.js +43 -129
  79. package/es/components/HDLKiosk/ui/ScaleSimulatorConsole/index.js +387 -0
  80. package/es/components/HDLKiosk/ui/ScaleSimulatorConsole/index.less +621 -0
  81. package/es/components/HDLKiosk/{app → ui}/ScreenRenderer.js +1 -1
  82. package/es/components/HDLKiosk/ui/controllers/useHDLKioskActionDispatcher.js +66 -0
  83. package/es/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskCustomerController.js +1 -1
  84. package/es/components/HDLKiosk/ui/controllers/useHDLKioskDeviceController.js +25 -0
  85. package/es/components/HDLKiosk/ui/controllers/useHDLKioskExitController.js +53 -0
  86. package/es/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskScreenData.js +1 -1
  87. package/es/components/HDLKiosk/ui/controllers/useHDLKioskSessionController.js +39 -0
  88. package/es/components/HDLKiosk/{app → ui}/entry/Screen/index.js +8 -6
  89. package/es/components/HDLKiosk/{app → ui}/entry/model.js +2 -2
  90. package/es/components/HDLKiosk/ui/scale.js +20 -0
  91. package/es/components/HDLKiosk/{runtime/useHostSnapshot.js → ui/snapshots.js} +6 -8
  92. package/es/components/HDLKiosk/{app → ui}/views.js +1 -1
  93. package/es/components/HDLKiosk/{runtime → ui}/workflowEvent.js +1 -1
  94. package/es/components/HDLKiosk/utils.js +4 -4
  95. package/es/components/bigSale/components/BookingFloatingPanel/useBookingPanelController.js +1 -0
  96. package/es/components/bigSale/components/TimeBar/index.js +1 -0
  97. package/es/components/bigSale/dialog.js +1 -0
  98. package/es/components/bigSale/hooks/useBigSaleContext.js +1 -0
  99. package/es/components/bigSale/hooks/useSelectFloorMapResourceForBigSale.js +1 -0
  100. package/es/components/bigSale/index.js +1 -0
  101. package/es/components/bigSale/templates/HDLKiosk/adapter/HDLKioskPaymentRuntime.js +2 -1
  102. package/es/components/bigSale/templates/HDLKiosk/adapter/capabilities.js +1 -1
  103. package/es/components/bigSale/templates/HDLKiosk/adapter/projection.js +21 -11
  104. package/es/components/bigSale/templates/HDLKiosk/adapter/sales.js +21 -3
  105. package/es/components/bigSale/templates/HDLKiosk/adapter/scaleTrigger.js +20 -5
  106. package/es/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskHost.js +3 -0
  107. package/es/components/bigSale/templates/HDLKiosk/index.js +3 -3
  108. package/es/components/bigSale/templates/Kiosk/index.js +1 -0
  109. package/es/components/sharedSecondaryBigSale/SharedSecondaryBigSaleReceiver.js +1 -0
  110. package/es/index.js +2 -0
  111. package/es/plus/pisellReservation/data/bookingToReservationTables.js +1 -1
  112. package/es/plus/pisellReservation/floorMap/floorPlanApi.js +1 -1
  113. package/es/plus/pisellReservation/floorMap/reservationMock.js +1 -1
  114. package/es/plus/pisellReservation/index.js +17 -0
  115. package/es/plus/saleDetail/Base.js +1 -0
  116. package/es/plus/saleDetail/components/Client/hooks/useClientSelectorProps.js +1 -0
  117. package/es/plus/saleDetail/components/DetailActions/index.js +1 -0
  118. package/es/plus/saleDetail/components/SummaryFinancialSections/index.js +1 -0
  119. package/es/plus/saleDetail/index.js +1 -0
  120. package/es/plus/saleDetail/tmpl/B/components/Dish/index.js +1 -0
  121. package/es/plus/saleDetail/tmpl/B/index.js +1 -0
  122. package/es/plus/salesSdk/index.js +52 -0
  123. package/es/plus/salesSdk/utils/addProductWithFlowDebounced.js +1 -1
  124. package/es/plus/salesSdk/utils/bookingDate.js +1 -1
  125. package/es/plus/salesSdk/utils/customerAuthGate.js +1 -1
  126. package/es/plus/salesSdk/utils/enrichCartLineHolderDisplay.js +1 -1
  127. package/es/pro/Login2.0/AuthModal.d.ts +1 -1
  128. package/es/pro/Login2.0/index.d.ts +2 -1
  129. package/es/pro/Login2.0/shared/types.d.ts +1 -1
  130. package/lib/components/HDLKiosk/{contracts → app/contracts}/config.js +1 -1
  131. package/lib/components/HDLKiosk/app/manifest.js +18 -19
  132. package/lib/components/HDLKiosk/app/operations.js +105 -0
  133. package/lib/components/HDLKiosk/app/workflow/barcode.js +7 -3
  134. package/lib/components/HDLKiosk/app/workflow/index.js +16 -0
  135. package/lib/components/HDLKiosk/app/workflow/predicates.js +1 -0
  136. package/lib/components/HDLKiosk/app/workflow/quick.js +1 -1
  137. package/lib/components/HDLKiosk/app/workflow/registry.js +3 -3
  138. package/lib/components/HDLKiosk/app/workflow/scale.js +5 -1
  139. package/lib/components/HDLKiosk/docs/00-/346/226/207/344/273/266/345/257/274/350/210/252.md +104 -167
  140. 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
  141. package/lib/components/HDLKiosk/docs/04-/350/256/276/345/244/207/344/270/216/347/247/260/351/207/215.md +43 -26
  142. package/lib/components/HDLKiosk/docs/05-/344/272/244/346/230/223/345/256/211/345/205/250.md +2 -0
  143. 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
  144. 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
  145. package/lib/components/HDLKiosk/docs/README.md +6 -2
  146. package/lib/components/HDLKiosk/docs//345/256/236/346/226/275/350/277/233/345/272/246.md +8 -7
  147. package/lib/components/HDLKiosk/docs//346/236/266/346/236/204/350/256/276/350/256/241.md +16 -18
  148. package/lib/components/HDLKiosk/index.js +25 -31
  149. package/lib/components/HDLKiosk/index.less +1 -1
  150. package/lib/components/HDLKiosk/kernel/README.md +13 -12
  151. package/lib/components/HDLKiosk/kernel/application/defineApplication.js +65 -25
  152. package/lib/components/HDLKiosk/kernel/application/defineSlice.js +6 -6
  153. package/lib/components/HDLKiosk/kernel/application/runtime.js +237 -0
  154. package/lib/components/HDLKiosk/kernel/operations/coordinator.js +1 -1
  155. package/lib/components/HDLKiosk/kernel/operations/registry.js +3 -3
  156. package/lib/components/HDLKiosk/kernel/operations/sessionEpoch.js +1 -1
  157. package/lib/components/HDLKiosk/kernel/operations/types.js +8 -3
  158. package/lib/components/HDLKiosk/kernel/workflow/actor.js +16 -17
  159. package/lib/components/HDLKiosk/kernel/workflow/compiler.js +14 -16
  160. package/lib/components/HDLKiosk/runtime/createRuntime.js +239 -0
  161. package/lib/components/HDLKiosk/{devices → runtime/devices}/dedupeStore.js +1 -1
  162. package/lib/components/HDLKiosk/{devices → runtime/devices}/scaleIngress.js +1 -1
  163. package/lib/components/HDLKiosk/{devices/scale/runtime.js → runtime/devices/scaleStore.js} +17 -27
  164. package/lib/components/HDLKiosk/{devices → runtime/devices}/scannerIngress.js +1 -1
  165. package/lib/components/HDLKiosk/runtime/devices/scannerSessionPort.js +60 -0
  166. package/lib/components/HDLKiosk/runtime/devices/scannerSessionRouter.js +212 -0
  167. package/lib/components/HDLKiosk/runtime/operations/barcode.js +17 -0
  168. package/lib/components/HDLKiosk/runtime/operations/cart.js +46 -0
  169. package/lib/components/HDLKiosk/{app → runtime}/operations/cartConsistency.js +1 -1
  170. package/lib/components/HDLKiosk/{app → runtime}/operations/checkout.js +97 -112
  171. package/lib/components/HDLKiosk/{app → runtime}/operations/checkoutRequirements.js +1 -1
  172. package/lib/components/HDLKiosk/{app → runtime}/operations/checkoutSafety.js +1 -1
  173. package/lib/components/HDLKiosk/{app → runtime}/operations/coordinator.js +2 -2
  174. package/lib/components/HDLKiosk/runtime/operations/customization.js +73 -0
  175. package/lib/components/HDLKiosk/{app → runtime}/operations/errors.js +1 -1
  176. package/lib/components/HDLKiosk/runtime/operations/fulfillment.js +5 -0
  177. package/lib/components/HDLKiosk/runtime/operations/identity.js +55 -0
  178. package/lib/components/HDLKiosk/runtime/operations/registry.js +34 -0
  179. package/lib/components/HDLKiosk/runtime/operations/session.js +30 -0
  180. package/lib/components/HDLKiosk/runtime/operations/types.js +14 -0
  181. package/lib/components/HDLKiosk/runtime/session/blockPolicy.js +14 -0
  182. package/lib/components/HDLKiosk/runtime/{createWorkflowSession.js → session/createSession.js} +71 -21
  183. package/lib/components/HDLKiosk/runtime/{domainTransitionRunner.js → session/transitionRunner.js} +10 -5
  184. package/lib/components/HDLKiosk/runtime/{workflowContext.js → session/workflowContext.js} +2 -2
  185. package/lib/components/HDLKiosk/runtime/{workflowLifecycle.js → session/workflowLifecycle.js} +2 -2
  186. package/lib/components/HDLKiosk/runtime/triggers.js +28 -0
  187. package/lib/components/HDLKiosk/slices/catalog/Screen/index.js +15 -8
  188. package/lib/components/HDLKiosk/slices/catalog/Screen/index.less +74 -13
  189. package/lib/components/HDLKiosk/slices/catalog/slice.js +3 -3
  190. package/lib/components/HDLKiosk/slices/customization/Screen/index.js +35 -36
  191. package/lib/components/HDLKiosk/slices/customization/Screen/index.less +5 -0
  192. package/lib/components/HDLKiosk/slices/customization/slice.js +5 -6
  193. package/lib/components/HDLKiosk/slices/fulfillment/slice.js +3 -3
  194. package/lib/components/HDLKiosk/slices/fulfillment/view.js +1 -1
  195. package/lib/components/HDLKiosk/slices/identity/slice.js +4 -4
  196. package/lib/components/HDLKiosk/slices/identity/view.js +1 -1
  197. package/lib/components/HDLKiosk/slices/payment/slice.js +5 -5
  198. package/lib/components/HDLKiosk/slices/primaryProductPrompt/slice.js +1 -1
  199. package/lib/components/HDLKiosk/{runtime → ui}/HDLKioskWorkflowView.js +44 -130
  200. package/lib/components/HDLKiosk/ui/ScaleSimulatorConsole/index.js +390 -0
  201. package/lib/components/HDLKiosk/ui/ScaleSimulatorConsole/index.less +621 -0
  202. package/lib/components/HDLKiosk/{app → ui}/ScreenRenderer.js +1 -1
  203. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskActionDispatcher.js +67 -0
  204. package/lib/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskCustomerController.js +1 -1
  205. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskDeviceController.js +26 -0
  206. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskExitController.js +54 -0
  207. package/lib/components/HDLKiosk/{runtime → ui}/controllers/useHDLKioskScreenData.js +1 -1
  208. package/lib/components/HDLKiosk/ui/controllers/useHDLKioskSessionController.js +40 -0
  209. package/lib/components/HDLKiosk/{app → ui}/entry/Screen/index.js +8 -6
  210. package/lib/components/HDLKiosk/{app → ui}/entry/model.js +2 -2
  211. package/lib/components/HDLKiosk/ui/scale.js +24 -0
  212. package/lib/components/HDLKiosk/{runtime/useHostSnapshot.js → ui/snapshots.js} +6 -7
  213. package/lib/components/HDLKiosk/{app → ui}/views.js +1 -1
  214. package/lib/components/HDLKiosk/{runtime → ui}/workflowEvent.js +1 -1
  215. package/lib/components/HDLKiosk/utils.js +4 -4
  216. package/lib/components/bigSale/templates/HDLKiosk/adapter/HDLKioskPaymentRuntime.js +2 -1
  217. package/lib/components/bigSale/templates/HDLKiosk/adapter/capabilities.js +1 -1
  218. package/lib/components/bigSale/templates/HDLKiosk/adapter/projection.js +21 -10
  219. package/lib/components/bigSale/templates/HDLKiosk/adapter/sales.js +20 -2
  220. package/lib/components/bigSale/templates/HDLKiosk/adapter/scaleTrigger.js +19 -4
  221. package/lib/components/bigSale/templates/HDLKiosk/adapter/useBigSaleHDLKioskHost.js +3 -0
  222. package/lib/components/bigSale/templates/HDLKiosk/index.js +4 -4
  223. package/package.json +3 -3
  224. package/es/components/HDLKiosk/app/constants.js +0 -9
  225. package/es/components/HDLKiosk/app/operations/barcode.js +0 -22
  226. package/es/components/HDLKiosk/app/operations/cart.js +0 -60
  227. package/es/components/HDLKiosk/app/operations/fulfillment.js +0 -11
  228. package/es/components/HDLKiosk/app/operations/session.js +0 -41
  229. package/es/components/HDLKiosk/app/operations/types.js +0 -11
  230. package/es/components/HDLKiosk/devices/entryArbiter.js +0 -33
  231. package/es/components/HDLKiosk/runtime/controllers/useHDLKioskDeviceController.js +0 -75
  232. package/es/components/HDLKiosk/runtime/controllers/useHDLKioskScannerController.js +0 -160
  233. package/es/components/HDLKiosk/runtime/controllers/useHDLKioskSessionController.js +0 -185
  234. package/es/components/HDLKiosk/runtime/useWorkflowSnapshot.js +0 -12
  235. package/es/components/HDLKiosk/slices/customization/operation.js +0 -80
  236. package/es/components/HDLKiosk/slices/identity/operation.js +0 -60
  237. package/es/private-materials/lowcode/authmodal/meta.d.ts +0 -1
  238. package/lib/components/HDLKiosk/app/constants.js +0 -9
  239. package/lib/components/HDLKiosk/app/operations/barcode.js +0 -21
  240. package/lib/components/HDLKiosk/app/operations/cart.js +0 -62
  241. package/lib/components/HDLKiosk/app/operations/fulfillment.js +0 -10
  242. package/lib/components/HDLKiosk/app/operations/session.js +0 -42
  243. package/lib/components/HDLKiosk/app/operations/types.js +0 -12
  244. package/lib/components/HDLKiosk/devices/entryArbiter.js +0 -33
  245. package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskDeviceController.js +0 -76
  246. package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskScannerController.js +0 -161
  247. package/lib/components/HDLKiosk/runtime/controllers/useHDLKioskSessionController.js +0 -186
  248. package/lib/components/HDLKiosk/runtime/useWorkflowSnapshot.js +0 -13
  249. package/lib/components/HDLKiosk/slices/customization/operation.js +0 -83
  250. package/lib/components/HDLKiosk/slices/identity/operation.js +0 -60
  251. /package/es/components/HDLKiosk/{app → ui}/entry/Screen/index.less +0 -0
  252. /package/lib/components/HDLKiosk/{app → ui}/entry/Screen/index.less +0 -0
@@ -0,0 +1,621 @@
1
+ .pisell-hdl-kiosk {
2
+ .hdl-entry-brand-mark {
3
+ appearance: none;
4
+ padding: 0;
5
+ cursor: pointer;
6
+ transition: transform 160ms ease, filter 160ms ease;
7
+ }
8
+
9
+ .hdl-entry-brand-mark:hover {
10
+ filter: brightness(1.12);
11
+ transform: rotate(-7deg) scale(1.035);
12
+ }
13
+
14
+ .hdl-entry-brand-mark:active {
15
+ transform: rotate(-7deg) scale(0.97);
16
+ }
17
+
18
+ .hdl-scale-simulator-gate {
19
+ position: fixed;
20
+ z-index: 90;
21
+ inset: 0;
22
+ display: grid;
23
+ place-items: center;
24
+ padding: 28px;
25
+ background: radial-gradient(circle at 50% 40%, rgba(51, 176, 151, 0.12), transparent 38%), rgba(4, 8, 12, 0.76);
26
+ backdrop-filter: blur(18px) saturate(0.8);
27
+ }
28
+
29
+ .hdl-scale-simulator-gate__card {
30
+ position: relative;
31
+ display: grid;
32
+ width: min(520px, calc(100vw - 48px));
33
+ overflow: hidden;
34
+ border: 1px solid rgba(255, 255, 255, 0.14);
35
+ border-radius: 32px;
36
+ padding: 40px;
37
+ background: linear-gradient(145deg, rgba(25, 34, 42, 0.98), rgba(8, 13, 18, 0.99));
38
+ color: #f8fbfc;
39
+ box-shadow: 0 36px 100px rgba(0, 0, 0, 0.58), inset 0 1px 0 rgba(255, 255, 255, 0.08);
40
+ }
41
+
42
+ .hdl-scale-simulator-gate__card::before {
43
+ position: absolute;
44
+ top: -140px;
45
+ right: -120px;
46
+ width: 330px;
47
+ height: 330px;
48
+ border-radius: 50%;
49
+ background: rgba(50, 205, 167, 0.09);
50
+ content: '';
51
+ pointer-events: none;
52
+ }
53
+
54
+ .hdl-scale-simulator-gate__icon {
55
+ position: relative;
56
+ display: grid;
57
+ width: 76px;
58
+ height: 76px;
59
+ place-items: center;
60
+ border: 1px solid rgba(104, 235, 203, 0.26);
61
+ border-radius: 24px;
62
+ background: linear-gradient(145deg, rgba(47, 201, 166, 0.2), rgba(47, 201, 166, 0.05));
63
+ color: #6ee8c9;
64
+ box-shadow: 0 18px 34px rgba(0, 0, 0, 0.24);
65
+ }
66
+
67
+ .hdl-scale-simulator-gate__icon svg,
68
+ .hdl-scale-simulator-panel__brand svg {
69
+ width: 45px;
70
+ fill: none;
71
+ stroke: currentColor;
72
+ stroke-width: 1.8;
73
+ stroke-linecap: round;
74
+ stroke-linejoin: round;
75
+ }
76
+
77
+ .hdl-scale-simulator-gate__copy {
78
+ position: relative;
79
+ margin-top: 26px;
80
+ }
81
+
82
+ .hdl-scale-simulator-gate__copy small,
83
+ .hdl-scale-simulator-panel__title small,
84
+ .hdl-scale-simulator-section__heading small {
85
+ color: #66dfc1;
86
+ font-size: 11px;
87
+ font-weight: 900;
88
+ letter-spacing: 0.18em;
89
+ }
90
+
91
+ .hdl-scale-simulator-gate__copy h2 {
92
+ margin: 7px 0 8px;
93
+ color: #fff;
94
+ font-size: 30px;
95
+ line-height: 1.15;
96
+ font-weight: 900;
97
+ }
98
+
99
+ .hdl-scale-simulator-gate__copy p {
100
+ margin: 0;
101
+ color: rgba(232, 242, 246, 0.58);
102
+ font-size: 15px;
103
+ }
104
+
105
+ .hdl-scale-simulator-gate__card > label {
106
+ display: grid;
107
+ gap: 9px;
108
+ margin-top: 28px;
109
+ color: rgba(236, 244, 247, 0.72);
110
+ font-size: 13px;
111
+ font-weight: 800;
112
+ }
113
+
114
+ .hdl-scale-simulator-gate__card > label input {
115
+ width: 100%;
116
+ height: 58px;
117
+ border: 1px solid rgba(255, 255, 255, 0.14);
118
+ border-radius: 16px;
119
+ outline: 0;
120
+ padding: 0 18px;
121
+ background: rgba(255, 255, 255, 0.06);
122
+ color: #fff;
123
+ font-size: 26px;
124
+ font-weight: 800;
125
+ letter-spacing: 0.42em;
126
+ }
127
+
128
+ .hdl-scale-simulator-gate__card > label input:focus {
129
+ border-color: rgba(104, 235, 203, 0.7);
130
+ box-shadow: 0 0 0 4px rgba(104, 235, 203, 0.1);
131
+ }
132
+
133
+ .hdl-scale-simulator-gate__card > label.is-error input {
134
+ border-color: rgba(255, 104, 104, 0.8);
135
+ }
136
+
137
+ .hdl-scale-simulator-gate__error {
138
+ margin: 9px 0 0;
139
+ color: #ff9999;
140
+ font-size: 13px;
141
+ font-weight: 700;
142
+ }
143
+
144
+ .hdl-scale-simulator-gate__actions {
145
+ display: grid;
146
+ grid-template-columns: 1fr 1.45fr;
147
+ gap: 12px;
148
+ margin-top: 28px;
149
+ }
150
+
151
+ .hdl-scale-simulator-gate__actions button {
152
+ min-height: 52px;
153
+ border: 1px solid rgba(255, 255, 255, 0.13);
154
+ border-radius: 15px;
155
+ background: rgba(255, 255, 255, 0.05);
156
+ color: rgba(255, 255, 255, 0.76);
157
+ font-size: 15px;
158
+ font-weight: 850;
159
+ cursor: pointer;
160
+ }
161
+
162
+ .hdl-scale-simulator-gate__actions button.is-primary {
163
+ border-color: transparent;
164
+ background: linear-gradient(135deg, #3ed0ad, #159b7e);
165
+ color: #04130f;
166
+ box-shadow: 0 12px 28px rgba(26, 178, 143, 0.22);
167
+ }
168
+
169
+ .hdl-scale-simulator-panel {
170
+ position: fixed;
171
+ z-index: 80;
172
+ width: min(720px, calc(100vw - 24px));
173
+ max-height: calc(100vh - 20px);
174
+ overflow: hidden;
175
+ border: 1px solid rgba(255, 255, 255, 0.13);
176
+ border-radius: 25px;
177
+ background: #0c1218;
178
+ color: #edf5f6;
179
+ box-shadow: 0 34px 90px rgba(0, 0, 0, 0.58), inset 0 1px 0 rgba(255, 255, 255, 0.06);
180
+ }
181
+
182
+ .hdl-scale-simulator-panel.is-minimized {
183
+ width: min(420px, calc(100vw - 24px));
184
+ }
185
+
186
+ .hdl-scale-simulator-panel__header {
187
+ display: grid;
188
+ min-height: 76px;
189
+ grid-template-columns: 45px minmax(0, 1fr) max-content max-content;
190
+ align-items: center;
191
+ gap: 13px;
192
+ padding: 12px 14px 12px 17px;
193
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
194
+ background: radial-gradient(circle at 8% 0%, rgba(55, 213, 175, 0.13), transparent 34%), linear-gradient(180deg, #182129, #111820);
195
+ cursor: grab;
196
+ touch-action: none;
197
+ user-select: none;
198
+ }
199
+
200
+ .hdl-scale-simulator-panel__brand {
201
+ display: grid;
202
+ width: 45px;
203
+ height: 45px;
204
+ place-items: center;
205
+ border: 1px solid rgba(83, 224, 190, 0.2);
206
+ border-radius: 14px;
207
+ background: rgba(64, 208, 174, 0.1);
208
+ color: #65e0c2;
209
+ }
210
+
211
+ .hdl-scale-simulator-panel__brand svg {
212
+ width: 29px;
213
+ }
214
+
215
+ .hdl-scale-simulator-panel__title {
216
+ display: grid;
217
+ min-width: 0;
218
+ gap: 2px;
219
+ }
220
+
221
+ .hdl-scale-simulator-panel__title strong {
222
+ color: #f7fbfc;
223
+ font-size: 17px;
224
+ font-weight: 900;
225
+ }
226
+
227
+ .hdl-scale-simulator-panel__availability {
228
+ display: inline-flex;
229
+ min-height: 30px;
230
+ align-items: center;
231
+ gap: 7px;
232
+ border: 1px solid rgba(255, 255, 255, 0.08);
233
+ border-radius: 999px;
234
+ padding: 5px 10px;
235
+ background: rgba(255, 255, 255, 0.04);
236
+ color: rgba(255, 255, 255, 0.6);
237
+ font-size: 11px;
238
+ font-weight: 800;
239
+ white-space: nowrap;
240
+ }
241
+
242
+ .hdl-scale-simulator-panel__availability i {
243
+ width: 7px;
244
+ height: 7px;
245
+ border-radius: 50%;
246
+ background: #ff7a7a;
247
+ }
248
+
249
+ .hdl-scale-simulator-panel__availability.is-online i {
250
+ background: #56e4bd;
251
+ box-shadow: 0 0 10px rgba(86, 228, 189, 0.62);
252
+ }
253
+
254
+ .hdl-scale-simulator-panel__window-actions {
255
+ display: inline-flex;
256
+ gap: 5px;
257
+ }
258
+
259
+ .hdl-scale-simulator-panel__window-actions button {
260
+ display: grid;
261
+ width: 38px;
262
+ height: 38px;
263
+ place-items: center;
264
+ border: 0;
265
+ border-radius: 12px;
266
+ background: transparent;
267
+ color: rgba(255, 255, 255, 0.62);
268
+ cursor: pointer;
269
+ }
270
+
271
+ .hdl-scale-simulator-panel__window-actions button:hover {
272
+ background: rgba(255, 255, 255, 0.08);
273
+ color: #fff;
274
+ }
275
+
276
+ .hdl-scale-simulator-panel__window-actions button:last-child:hover {
277
+ background: rgba(234, 69, 78, 0.18);
278
+ color: #ff9da3;
279
+ }
280
+
281
+ .hdl-scale-simulator-panel__window-actions svg {
282
+ width: 20px;
283
+ fill: none;
284
+ stroke: currentColor;
285
+ stroke-width: 2;
286
+ stroke-linecap: round;
287
+ }
288
+
289
+ .hdl-scale-simulator-panel__body {
290
+ max-height: calc(100vh - 106px);
291
+ overflow: auto;
292
+ padding: 18px;
293
+ background: radial-gradient(circle at 100% 0%, rgba(64, 202, 171, 0.055), transparent 34%), #0c1218;
294
+ scrollbar-color: rgba(104, 235, 203, 0.28) transparent;
295
+ }
296
+
297
+ .hdl-scale-simulator-panel__unavailable {
298
+ display: grid;
299
+ min-height: 270px;
300
+ place-items: center;
301
+ align-content: center;
302
+ border: 1px dashed rgba(255, 255, 255, 0.13);
303
+ border-radius: 19px;
304
+ padding: 34px;
305
+ background: rgba(255, 255, 255, 0.025);
306
+ text-align: center;
307
+ }
308
+
309
+ .hdl-scale-simulator-panel__unavailable p {
310
+ max-width: 390px;
311
+ margin: 10px 0 20px;
312
+ color: rgba(255, 255, 255, 0.5);
313
+ font-size: 13px;
314
+ line-height: 1.6;
315
+ }
316
+
317
+ .hdl-scale-simulator-panel__unavailable button,
318
+ .hdl-scale-simulator-section__heading button {
319
+ min-height: 34px;
320
+ border: 1px solid rgba(255, 255, 255, 0.12);
321
+ border-radius: 10px;
322
+ padding: 5px 13px;
323
+ background: rgba(255, 255, 255, 0.05);
324
+ color: rgba(255, 255, 255, 0.72);
325
+ font-size: 12px;
326
+ font-weight: 800;
327
+ cursor: pointer;
328
+ }
329
+
330
+ .hdl-scale-simulator-readout {
331
+ display: grid;
332
+ grid-template-columns: minmax(250px, 0.86fr) minmax(280px, 1.14fr);
333
+ gap: 14px;
334
+ }
335
+
336
+ .hdl-scale-simulator-readout__screen {
337
+ display: grid;
338
+ min-height: 174px;
339
+ grid-template-columns: 1fr auto;
340
+ align-content: center;
341
+ overflow: hidden;
342
+ border: 1px solid rgba(92, 238, 201, 0.24);
343
+ border-radius: 18px;
344
+ padding: 21px 22px;
345
+ background: repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.015) 0 1px, transparent 1px 4px), linear-gradient(145deg, #102c29, #071815);
346
+ box-shadow: inset 0 0 34px rgba(69, 231, 190, 0.05), 0 13px 28px rgba(0, 0, 0, 0.22);
347
+ }
348
+
349
+ .hdl-scale-simulator-readout__screen > span {
350
+ display: inline-flex;
351
+ align-items: center;
352
+ gap: 7px;
353
+ grid-column: 1 / -1;
354
+ color: rgba(114, 239, 208, 0.52);
355
+ font: 900 10px ui-monospace, SFMono-Regular, Menlo, monospace;
356
+ letter-spacing: 0.17em;
357
+ }
358
+
359
+ .hdl-scale-simulator-readout__screen > span i {
360
+ width: 7px;
361
+ height: 7px;
362
+ border-radius: 50%;
363
+ background: #62e6c5;
364
+ box-shadow: 0 0 9px rgba(81, 239, 200, 0.55);
365
+ }
366
+
367
+ .hdl-scale-simulator-readout__screen strong {
368
+ color: #7af3d4;
369
+ font: 500 47px/1.1 ui-monospace, SFMono-Regular, Menlo, monospace;
370
+ letter-spacing: -0.06em;
371
+ text-shadow: 0 0 22px rgba(81, 239, 200, 0.24);
372
+ }
373
+
374
+ .hdl-scale-simulator-readout__screen b {
375
+ align-self: end;
376
+ margin: 0 0 7px 9px;
377
+ color: rgba(122, 243, 212, 0.62);
378
+ font: 14px ui-monospace, SFMono-Regular, Menlo, monospace;
379
+ }
380
+
381
+ .hdl-scale-simulator-readout__screen small {
382
+ grid-column: 1 / -1;
383
+ color: rgba(122, 243, 212, 0.38);
384
+ font: 11px ui-monospace, SFMono-Regular, Menlo, monospace;
385
+ }
386
+
387
+ .hdl-scale-simulator-readout__telemetry {
388
+ display: grid;
389
+ grid-template-columns: 1fr 1fr;
390
+ gap: 9px;
391
+ }
392
+
393
+ .hdl-scale-simulator-readout__telemetry > span {
394
+ display: grid;
395
+ min-height: 80px;
396
+ align-content: center;
397
+ gap: 7px;
398
+ border: 1px solid rgba(255, 255, 255, 0.07);
399
+ border-radius: 15px;
400
+ padding: 13px 15px;
401
+ background: rgba(255, 255, 255, 0.03);
402
+ }
403
+
404
+ .hdl-scale-simulator-readout__telemetry small {
405
+ color: rgba(255, 255, 255, 0.38);
406
+ font-size: 11px;
407
+ }
408
+
409
+ .hdl-scale-simulator-readout__telemetry strong {
410
+ color: rgba(255, 255, 255, 0.84);
411
+ font-size: 14px;
412
+ }
413
+
414
+ .hdl-scale-simulator-readout__telemetry strong.is-connected { color: #61e6c4; }
415
+ .hdl-scale-simulator-readout__telemetry strong.is-connecting { color: #f1c96d; }
416
+ .hdl-scale-simulator-readout__telemetry strong.is-disconnected { color: #ff8b91; }
417
+
418
+ .hdl-scale-simulator-panel__notice,
419
+ .hdl-scale-simulator-panel__error {
420
+ margin: 12px 0 0;
421
+ border: 1px solid rgba(240, 190, 91, 0.14);
422
+ border-radius: 12px;
423
+ padding: 10px 13px;
424
+ background: rgba(240, 190, 91, 0.06);
425
+ color: rgba(250, 218, 149, 0.76);
426
+ font-size: 11px;
427
+ font-weight: 700;
428
+ line-height: 1.5;
429
+ }
430
+
431
+ .hdl-scale-simulator-section {
432
+ margin-top: 16px;
433
+ border: 1px solid rgba(255, 255, 255, 0.075);
434
+ border-radius: 18px;
435
+ padding: 16px;
436
+ background: rgba(255, 255, 255, 0.022);
437
+ }
438
+
439
+ .hdl-scale-simulator-section__heading {
440
+ display: flex;
441
+ align-items: center;
442
+ justify-content: space-between;
443
+ gap: 14px;
444
+ margin-bottom: 14px;
445
+ }
446
+
447
+ .hdl-scale-simulator-section__heading > span {
448
+ display: grid;
449
+ gap: 2px;
450
+ }
451
+
452
+ .hdl-scale-simulator-section__heading strong {
453
+ color: rgba(255, 255, 255, 0.9);
454
+ font-size: 16px;
455
+ }
456
+
457
+ .hdl-scale-simulator-section__heading button.is-stop {
458
+ border-color: rgba(255, 102, 112, 0.18);
459
+ background: rgba(255, 73, 86, 0.08);
460
+ color: #ff9ca3;
461
+ }
462
+
463
+ .hdl-scale-simulator-manual {
464
+ display: grid;
465
+ grid-template-columns: minmax(150px, 0.85fr) minmax(250px, 1.35fr) 105px;
466
+ align-items: end;
467
+ gap: 10px;
468
+ }
469
+
470
+ .hdl-scale-simulator-manual label,
471
+ .hdl-scale-simulator-manual fieldset {
472
+ display: grid;
473
+ min-width: 0;
474
+ gap: 7px;
475
+ border: 0;
476
+ margin: 0;
477
+ padding: 0;
478
+ color: rgba(255, 255, 255, 0.42);
479
+ font-size: 10px;
480
+ font-weight: 800;
481
+ }
482
+
483
+ .hdl-scale-simulator-manual legend { margin-bottom: 7px; padding: 0; }
484
+
485
+ .hdl-scale-simulator-manual__input {
486
+ display: grid;
487
+ height: 44px;
488
+ grid-template-columns: minmax(0, 1fr) 34px;
489
+ align-items: center;
490
+ overflow: hidden;
491
+ border: 1px solid rgba(255, 255, 255, 0.1);
492
+ border-radius: 11px;
493
+ background: rgba(255, 255, 255, 0.04);
494
+ }
495
+
496
+ .hdl-scale-simulator-manual__input input {
497
+ width: 100%;
498
+ height: 42px;
499
+ border: 0;
500
+ outline: 0;
501
+ padding: 0 11px;
502
+ background: transparent;
503
+ color: #fff;
504
+ font: 800 15px ui-monospace, SFMono-Regular, Menlo, monospace;
505
+ }
506
+
507
+ .hdl-scale-simulator-manual__input b {
508
+ color: rgba(255, 255, 255, 0.38);
509
+ font-size: 11px;
510
+ }
511
+
512
+ .hdl-scale-simulator-manual fieldset > span {
513
+ display: grid;
514
+ height: 44px;
515
+ grid-template-columns: repeat(4, 1fr);
516
+ gap: 3px;
517
+ border: 1px solid rgba(255, 255, 255, 0.08);
518
+ border-radius: 11px;
519
+ padding: 3px;
520
+ background: rgba(0, 0, 0, 0.16);
521
+ }
522
+
523
+ .hdl-scale-simulator-manual fieldset button {
524
+ border: 0;
525
+ border-radius: 8px;
526
+ background: transparent;
527
+ color: rgba(255, 255, 255, 0.45);
528
+ font-size: 11px;
529
+ font-weight: 800;
530
+ cursor: pointer;
531
+ }
532
+
533
+ .hdl-scale-simulator-manual fieldset button.is-active {
534
+ background: rgba(83, 224, 190, 0.14);
535
+ color: #71e8cb;
536
+ }
537
+
538
+ .hdl-scale-simulator-manual__apply {
539
+ height: 44px;
540
+ border: 0;
541
+ border-radius: 11px;
542
+ background: linear-gradient(135deg, #42d4b0, #189c80);
543
+ color: #041511;
544
+ font-size: 12px;
545
+ font-weight: 900;
546
+ cursor: pointer;
547
+ }
548
+
549
+ .hdl-scale-simulator-presets {
550
+ display: grid;
551
+ grid-template-columns: repeat(4, minmax(0, 1fr));
552
+ gap: 8px;
553
+ }
554
+
555
+ .hdl-scale-simulator-presets > button {
556
+ position: relative;
557
+ display: grid;
558
+ min-height: 92px;
559
+ align-content: center;
560
+ gap: 4px;
561
+ overflow: hidden;
562
+ border: 1px solid rgba(255, 255, 255, 0.075);
563
+ border-radius: 13px;
564
+ padding: 12px;
565
+ background: linear-gradient(145deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.015));
566
+ color: #fff;
567
+ text-align: left;
568
+ cursor: pointer;
569
+ transition: border-color 150ms ease, background 150ms ease, transform 150ms ease;
570
+ }
571
+
572
+ .hdl-scale-simulator-presets > button:hover {
573
+ border-color: rgba(92, 230, 197, 0.25);
574
+ background: rgba(68, 214, 178, 0.07);
575
+ transform: translateY(-1px);
576
+ }
577
+
578
+ .hdl-scale-simulator-presets > button > span {
579
+ position: absolute;
580
+ top: 8px;
581
+ right: 9px;
582
+ color: rgba(105, 231, 200, 0.2);
583
+ font: 900 18px ui-monospace, SFMono-Regular, Menlo, monospace;
584
+ }
585
+
586
+ .hdl-scale-simulator-presets strong {
587
+ position: relative;
588
+ color: rgba(255, 255, 255, 0.85);
589
+ font-size: 12px;
590
+ }
591
+
592
+ .hdl-scale-simulator-presets small {
593
+ position: relative;
594
+ color: rgba(255, 255, 255, 0.34);
595
+ font-size: 9px;
596
+ line-height: 1.35;
597
+ }
598
+
599
+ .hdl-scale-simulator-panel__error {
600
+ border-color: rgba(255, 94, 106, 0.18);
601
+ background: rgba(255, 70, 83, 0.07);
602
+ color: #ff9aa1;
603
+ }
604
+ }
605
+
606
+ @media (max-width: 760px) {
607
+ .pisell-hdl-kiosk {
608
+ .hdl-scale-simulator-panel__availability { display: none; }
609
+ .hdl-scale-simulator-panel__header { grid-template-columns: 45px minmax(0, 1fr) max-content; }
610
+ .hdl-scale-simulator-readout { grid-template-columns: 1fr; }
611
+ .hdl-scale-simulator-manual { grid-template-columns: 1fr; }
612
+ .hdl-scale-simulator-presets { grid-template-columns: repeat(2, minmax(0, 1fr)); }
613
+ }
614
+ }
615
+
616
+ @media (prefers-reduced-motion: reduce) {
617
+ .pisell-hdl-kiosk .hdl-entry-brand-mark,
618
+ .pisell-hdl-kiosk .hdl-scale-simulator-presets > button {
619
+ transition: none;
620
+ }
621
+ }
@@ -3,7 +3,7 @@ import { BlockingNotice } from "../components/common/BlockingNotice/index.js";
3
3
  import { resolveHDLKioskView } from "./views.js";
4
4
  import React from "react";
5
5
  import { locales } from "@pisell/utils";
6
- //#region src/components/HDLKiosk/app/ScreenRenderer.tsx
6
+ //#region src/components/HDLKiosk/ui/ScreenRenderer.tsx
7
7
  /**
8
8
  * 文件角色:把当前 Workflow Node 交给其 Slice 自有 View 渲染。
9
9
  * 运行机制:从应用 View 注册表按 Activity 读取同步组件;先渲染 Actor
@@ -0,0 +1,66 @@
1
+ import { createWorkflowEvent } from "../workflowEvent.js";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ //#region src/components/HDLKiosk/ui/controllers/useHDLKioskActionDispatcher.ts
4
+ /**
5
+ * 文件角色:把 Slice UI Action 适配为当前 Workflow Session 的 Event 或 Command。
6
+ * 运行机制:统一生成 intent ID,并只投影当前节点发起的 Screen Command 状态。
7
+ * 边界:不决定业务跳转、不解释 Operation 结果,也不拥有 Session 生命周期。
8
+ */
9
+ function useHDLKioskActionDispatcher({ session, snapshot, activityId, resetSession }) {
10
+ const intentSequence = useRef(0);
11
+ const commandSequence = useRef(0);
12
+ const commandGeneration = useRef(0);
13
+ const pendingCommands = useRef(/* @__PURE__ */ new Map());
14
+ const [commandState, setCommandState] = useState({ busy: false });
15
+ useEffect(() => {
16
+ commandGeneration.current += 1;
17
+ pendingCommands.current.clear();
18
+ setCommandState({ busy: false });
19
+ return () => {
20
+ commandGeneration.current += 1;
21
+ pendingCommands.current.clear();
22
+ };
23
+ }, [session, snapshot.nodeId]);
24
+ return {
25
+ send: useCallback((action) => {
26
+ if (action.kind === "session") {
27
+ resetSession();
28
+ return;
29
+ }
30
+ intentSequence.current += 1;
31
+ const intentId = `ui:${snapshot.sessionEpoch}:${intentSequence.current}`;
32
+ if (action.kind === "intent" || action.kind === "navigation") {
33
+ const event = createWorkflowEvent(action, activityId, snapshot.nodeId, intentId);
34
+ if (event) session.dispatch(event);
35
+ return;
36
+ }
37
+ commandSequence.current += 1;
38
+ const execution = commandSequence.current;
39
+ const generation = commandGeneration.current;
40
+ pendingCommands.current.set(execution, action.command);
41
+ setCommandState({
42
+ busy: true,
43
+ commandId: action.command
44
+ });
45
+ session.executeCommand(action.command, action.input, intentId).then((result) => {
46
+ if (generation !== commandGeneration.current) return;
47
+ pendingCommands.current.delete(execution);
48
+ const remaining = [...pendingCommands.current.values()];
49
+ setCommandState({
50
+ busy: remaining.length > 0,
51
+ commandId: remaining[remaining.length - 1],
52
+ error: result.status === "failed" || result.status === "partialFailure" || result.status === "unknown" ? result.error : void 0
53
+ });
54
+ });
55
+ }, [
56
+ activityId,
57
+ resetSession,
58
+ session,
59
+ snapshot.nodeId,
60
+ snapshot.sessionEpoch
61
+ ]),
62
+ commandState
63
+ };
64
+ }
65
+ //#endregion
66
+ export { useHDLKioskActionDispatcher };
@@ -1,6 +1,6 @@
1
1
  import { _asyncToGenerator } from "../../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/asyncToGenerator.js";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
- //#region src/components/HDLKiosk/runtime/controllers/useHDLKioskCustomerController.ts
3
+ //#region src/components/HDLKiosk/ui/controllers/useHDLKioskCustomerController.ts
4
4
  /**
5
5
  * 文件角色:协调 Shell 全程可用的会员入口与插入式身份同步。
6
6
  * 运行机制:登录成功后通过 identity.sync 写入客户并触发订单一致性/重报价;再根据最新