@pisell/materials 1.0.1059 → 1.0.1060

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 (374) hide show
  1. package/README.md +285 -285
  2. package/build/lowcode/assets-daily.json +11 -11
  3. package/build/lowcode/assets-dev.json +2 -2
  4. package/build/lowcode/assets-prod.json +11 -11
  5. package/build/lowcode/index.js +1 -1
  6. package/build/lowcode/meta.js +7 -7
  7. package/build/lowcode/preview.js +9 -9
  8. package/build/lowcode/render/default/view.css +1 -1
  9. package/build/lowcode/render/default/view.js +27 -27
  10. package/build/lowcode/view.css +1 -1
  11. package/build/lowcode/view.js +26 -26
  12. package/es/components/PisellLayouts/index.d.ts +2 -1
  13. package/es/components/PisellLayouts/index.js +3 -1
  14. package/es/components/cardMetricItem/index.js +2 -2
  15. package/es/components/pisellFilter/type.d.ts +4 -2
  16. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +1 -1
  17. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +468 -201
  18. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.less +70 -0
  19. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.stories.d.ts +13 -0
  20. package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.stories.js +494 -63
  21. package/es/components/pisellFloorMapLayout/components/CanvasTabs.d.ts +22 -0
  22. package/es/components/pisellFloorMapLayout/components/CanvasTabs.js +203 -0
  23. package/es/components/pisellFloorMapLayout/components/CanvasTabs.less +189 -0
  24. package/es/components/pisellFloorMapLayout/components/EditableItemLayer.d.ts +37 -0
  25. package/es/components/pisellFloorMapLayout/components/EditableItemLayer.js +341 -0
  26. package/es/components/pisellFloorMapLayout/components/EditableItemLayer.less +89 -0
  27. package/es/components/pisellFloorMapLayout/components/FigmaTableCard.d.ts +39 -0
  28. package/es/components/pisellFloorMapLayout/components/FigmaTableCard.js +432 -0
  29. package/es/components/pisellFloorMapLayout/components/FloorMapDataForm.d.ts +17 -0
  30. package/es/components/pisellFloorMapLayout/components/FloorMapDataForm.js +131 -0
  31. package/es/components/pisellFloorMapLayout/components/FloorMapDataForm.less +7 -0
  32. package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.d.ts +11 -0
  33. package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +444 -0
  34. package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +153 -0
  35. package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.d.ts +34 -0
  36. package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.js +130 -0
  37. package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.less +131 -0
  38. package/es/components/pisellFloorMapLayout/components/FloorMapImageElement.d.ts +6 -0
  39. package/es/components/pisellFloorMapLayout/components/FloorMapImageElement.js +69 -0
  40. package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.d.ts +35 -0
  41. package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.js +361 -0
  42. package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.less +237 -0
  43. package/es/components/pisellFloorMapLayout/components/ItemLayer.d.ts +7 -0
  44. package/es/components/pisellFloorMapLayout/components/ItemLayer.js +32 -6
  45. package/es/components/pisellFloorMapLayout/components/MapLayer.d.ts +4 -0
  46. package/es/components/pisellFloorMapLayout/components/MapLayer.js +11 -3
  47. package/es/components/pisellFloorMapLayout/components/ViewControls.js +2 -2
  48. package/es/components/pisellFloorMapLayout/components/ViewControls.less +3 -2
  49. package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +11 -0
  50. package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +27 -0
  51. package/es/components/pisellFloorMapLayout/components/index.d.ts +14 -0
  52. package/es/components/pisellFloorMapLayout/components/index.js +8 -1
  53. package/es/components/pisellFloorMapLayout/context/FloorMapLayoutContext.d.ts +16 -0
  54. package/es/components/pisellFloorMapLayout/context/FloorMapLayoutContext.js +21 -0
  55. package/es/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.d.ts +5 -0
  56. package/es/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.js +27 -0
  57. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +60 -0
  58. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +436 -0
  59. package/es/components/pisellFloorMapLayout/hooks/useFloorMapPaletteTouchDrag.d.ts +21 -0
  60. package/es/components/pisellFloorMapLayout/hooks/useFloorMapPaletteTouchDrag.js +122 -0
  61. package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +67 -0
  62. package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +281 -0
  63. package/es/components/pisellFloorMapLayout/index.d.ts +9 -2
  64. package/es/components/pisellFloorMapLayout/index.js +7 -2
  65. package/es/components/pisellFloorMapLayout/locales.d.ts +186 -0
  66. package/es/components/pisellFloorMapLayout/locales.js +185 -0
  67. package/es/components/pisellFloorMapLayout/types.d.ts +346 -1
  68. package/es/components/pisellFloorMapLayout/types.js +148 -1
  69. package/es/components/pisellFloorMapLayout/utils/floorMapCanvasDisplay.d.ts +20 -0
  70. package/es/components/pisellFloorMapLayout/utils/floorMapCanvasDisplay.js +129 -0
  71. package/es/components/pisellFloorMapLayout/utils/floorMapConfigMerge.d.ts +8 -0
  72. package/es/components/pisellFloorMapLayout/utils/floorMapConfigMerge.js +87 -0
  73. package/es/components/pisellFloorMapLayout/utils/floorMapDropUtils.d.ts +26 -0
  74. package/es/components/pisellFloorMapLayout/utils/floorMapDropUtils.js +47 -0
  75. package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +11 -0
  76. package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +69 -0
  77. package/es/components/pisellFloorMapLayout/utils/floorMapFallbackRender.d.ts +11 -0
  78. package/es/components/pisellFloorMapLayout/utils/floorMapFallbackRender.js +88 -0
  79. package/es/components/pisellFloorMapLayout/utils/floorMapStageDefaults.d.ts +8 -0
  80. package/es/components/pisellFloorMapLayout/utils/floorMapStageDefaults.js +8 -0
  81. package/es/components/pisellFloorMapLayout/utils/floorMapViewConfigDiff.d.ts +8 -0
  82. package/es/components/pisellFloorMapLayout/utils/floorMapViewConfigDiff.js +108 -0
  83. package/es/components/pisellFloorMapLayout/utils/layoutMeasurements.d.ts +30 -0
  84. package/es/components/pisellFloorMapLayout/utils/layoutMeasurements.js +125 -0
  85. package/es/components/pisellFloorMapLayout/utils/mergeCanvasesForTabs.d.ts +7 -0
  86. package/es/components/pisellFloorMapLayout/utils/mergeCanvasesForTabs.js +29 -0
  87. package/es/components/pisellFloorMapLayout/utils/snap.d.ts +10 -0
  88. package/es/components/pisellFloorMapLayout/utils/snap.js +21 -0
  89. package/es/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.d.ts +6 -0
  90. package/es/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.js +175 -0
  91. package/es/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.less +129 -0
  92. package/es/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.stories.d.ts +10 -0
  93. package/es/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.stories.js +237 -0
  94. package/es/components/pisellHierarchicalSummaryList/components/Row.d.ts +35 -0
  95. package/es/components/pisellHierarchicalSummaryList/components/Row.js +313 -0
  96. package/es/components/pisellHierarchicalSummaryList/components/index.d.ts +1 -0
  97. package/es/components/pisellHierarchicalSummaryList/components/index.js +1 -0
  98. package/es/components/pisellHierarchicalSummaryList/hooks/index.d.ts +2 -0
  99. package/es/components/pisellHierarchicalSummaryList/hooks/index.js +1 -0
  100. package/es/components/pisellHierarchicalSummaryList/hooks/useExpandedKeys.d.ts +15 -0
  101. package/es/components/pisellHierarchicalSummaryList/hooks/useExpandedKeys.js +34 -0
  102. package/es/components/pisellHierarchicalSummaryList/index.d.ts +5 -0
  103. package/es/components/pisellHierarchicalSummaryList/index.js +5 -0
  104. package/es/components/pisellHierarchicalSummaryList/types.d.ts +248 -0
  105. package/es/components/pisellHierarchicalSummaryList/types.js +1 -0
  106. package/es/components/pisellLookup/PisellLookup.js +82 -82
  107. package/es/components/pisellMultipleSelect/PisellMultipleSelect.stories.js +34 -34
  108. package/es/components/pisellRecordBoard/PisellRecordBoard.d.ts +2 -1
  109. package/es/components/pisellRecordBoard/PisellRecordBoard.js +70 -18
  110. package/es/components/pisellRecordBoard/PisellRecordBoard.stories.d.ts +4 -0
  111. package/es/components/pisellRecordBoard/PisellRecordBoard.stories.js +1276 -344
  112. package/es/components/pisellRecordBoard/index.d.ts +7 -2
  113. package/es/components/pisellRecordBoard/index.js +2 -1
  114. package/es/components/pisellRecordBoard/shellFrame/ColumnSetting/index.js +1 -3
  115. package/es/components/pisellRecordBoard/shellFrame/FloorMap.d.ts +14 -0
  116. package/es/components/pisellRecordBoard/shellFrame/FloorMap.js +15 -0
  117. package/es/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.d.ts +16 -0
  118. package/es/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.js +11 -0
  119. package/es/components/pisellRecordBoard/shellFrame/ToolBar/ToolBarFilter.less +47 -0
  120. package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +53 -6
  121. package/es/components/pisellRecordBoard/shellFrame/ToolBarReset/index.js +3 -3
  122. package/es/components/pisellRecordBoard/shellFrame/index.d.ts +4 -10
  123. package/es/components/pisellRecordBoard/shellFrame/index.js +99 -19
  124. package/es/components/pisellRecordBoard/types.d.ts +55 -1
  125. package/es/components/pisellRecordBoard/utils/partitionShellFrameChildren.d.ts +15 -0
  126. package/es/components/pisellRecordBoard/utils/partitionShellFrameChildren.js +57 -0
  127. package/es/components/pisellReservationSchedule/PisellReservationSchedule.d.ts +10 -0
  128. package/es/components/pisellReservationSchedule/PisellReservationSchedule.js +156 -0
  129. package/es/components/pisellReservationSchedule/PisellReservationSchedule.less +88 -0
  130. package/es/components/pisellReservationSchedule/PisellReservationSchedule.stories.d.ts +12 -0
  131. package/es/components/pisellReservationSchedule/PisellReservationSchedule.stories.js +105 -0
  132. package/es/components/pisellReservationSchedule/index.d.ts +2 -0
  133. package/es/components/pisellReservationSchedule/index.js +1 -0
  134. package/es/components/pisellReservationSchedule/locales.d.ts +25 -0
  135. package/es/components/pisellReservationSchedule/locales.js +24 -0
  136. package/es/components/pisellReservationSchedule/types.d.ts +42 -0
  137. package/es/components/pisellReservationSchedule/types.js +1 -0
  138. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.d.ts +10 -0
  139. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.js +91 -0
  140. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +49 -0
  141. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.stories.d.ts +16 -0
  142. package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.stories.js +197 -0
  143. package/es/components/pisellReservationScheduleBand/index.d.ts +2 -0
  144. package/es/components/pisellReservationScheduleBand/index.js +1 -0
  145. package/es/components/pisellReservationScheduleBand/types.d.ts +45 -0
  146. package/es/components/pisellReservationScheduleBand/types.js +1 -0
  147. package/es/components/pisellRow/index.js +7 -7
  148. package/es/components/pisellTimeNavigator/PisellTimeNavigator.d.ts +10 -0
  149. package/es/components/pisellTimeNavigator/PisellTimeNavigator.js +512 -0
  150. package/es/components/pisellTimeNavigator/PisellTimeNavigator.less +378 -0
  151. package/es/components/pisellTimeNavigator/PisellTimeNavigator.stories.d.ts +79 -0
  152. package/es/components/pisellTimeNavigator/PisellTimeNavigator.stories.js +290 -0
  153. package/es/components/pisellTimeNavigator/components/BackgroundLayer.d.ts +14 -0
  154. package/es/components/pisellTimeNavigator/components/BackgroundLayer.js +30 -0
  155. package/es/components/pisellTimeNavigator/components/CursorLayer.d.ts +20 -0
  156. package/es/components/pisellTimeNavigator/components/CursorLayer.js +46 -0
  157. package/es/components/pisellTimeNavigator/components/GestureLayer.d.ts +31 -0
  158. package/es/components/pisellTimeNavigator/components/GestureLayer.js +82 -0
  159. package/es/components/pisellTimeNavigator/components/NowButton.d.ts +14 -0
  160. package/es/components/pisellTimeNavigator/components/NowButton.js +38 -0
  161. package/es/components/pisellTimeNavigator/components/ScaleLayer.d.ts +17 -0
  162. package/es/components/pisellTimeNavigator/components/ScaleLayer.js +51 -0
  163. package/es/components/pisellTimeNavigator/components/index.d.ts +5 -0
  164. package/es/components/pisellTimeNavigator/components/index.js +5 -0
  165. package/es/components/pisellTimeNavigator/hooks/index.d.ts +5 -0
  166. package/es/components/pisellTimeNavigator/hooks/index.js +3 -0
  167. package/es/components/pisellTimeNavigator/hooks/useDragInertia.d.ts +14 -0
  168. package/es/components/pisellTimeNavigator/hooks/useDragInertia.js +109 -0
  169. package/es/components/pisellTimeNavigator/hooks/useRealtime.d.ts +5 -0
  170. package/es/components/pisellTimeNavigator/hooks/useRealtime.js +16 -0
  171. package/es/components/pisellTimeNavigator/hooks/useTimeAxis.d.ts +27 -0
  172. package/es/components/pisellTimeNavigator/hooks/useTimeAxis.js +76 -0
  173. package/es/components/pisellTimeNavigator/index.d.ts +4 -0
  174. package/es/components/pisellTimeNavigator/index.js +3 -0
  175. package/es/components/pisellTimeNavigator/locales.d.ts +22 -0
  176. package/es/components/pisellTimeNavigator/locales.js +21 -0
  177. package/es/components/pisellTimeNavigator/types.d.ts +145 -0
  178. package/es/components/pisellTimeNavigator/types.js +1 -0
  179. package/es/components/pisellTimeNavigator/utils/index.d.ts +26 -0
  180. package/es/components/pisellTimeNavigator/utils/index.js +102 -0
  181. package/es/index.d.ts +15 -5
  182. package/es/index.js +23 -17
  183. package/es/locales/en-US.d.ts +2 -0
  184. package/es/locales/en-US.js +6 -4
  185. package/es/locales/zh-CN.d.ts +2 -0
  186. package/es/locales/zh-CN.js +6 -4
  187. package/es/locales/zh-TW.d.ts +2 -0
  188. package/es/locales/zh-TW.js +6 -4
  189. package/lib/components/PisellLayouts/index.d.ts +2 -1
  190. package/lib/components/PisellLayouts/index.js +13 -1
  191. package/lib/components/pisellFilter/type.d.ts +4 -2
  192. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.d.ts +1 -1
  193. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +562 -180
  194. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.less +70 -0
  195. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.stories.d.ts +13 -0
  196. package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.stories.js +682 -84
  197. package/lib/components/pisellFloorMapLayout/components/CanvasTabs.d.ts +22 -0
  198. package/lib/components/pisellFloorMapLayout/components/CanvasTabs.js +237 -0
  199. package/lib/components/pisellFloorMapLayout/components/CanvasTabs.less +189 -0
  200. package/lib/components/pisellFloorMapLayout/components/EditableItemLayer.d.ts +37 -0
  201. package/lib/components/pisellFloorMapLayout/components/EditableItemLayer.js +358 -0
  202. package/lib/components/pisellFloorMapLayout/components/EditableItemLayer.less +89 -0
  203. package/lib/components/pisellFloorMapLayout/components/FigmaTableCard.d.ts +39 -0
  204. package/lib/components/pisellFloorMapLayout/components/FigmaTableCard.js +482 -0
  205. package/lib/components/pisellFloorMapLayout/components/FloorMapDataForm.d.ts +17 -0
  206. package/lib/components/pisellFloorMapLayout/components/FloorMapDataForm.js +117 -0
  207. package/lib/components/pisellFloorMapLayout/components/FloorMapDataForm.less +7 -0
  208. package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.d.ts +11 -0
  209. package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +434 -0
  210. package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +153 -0
  211. package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.d.ts +34 -0
  212. package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.js +188 -0
  213. package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.less +131 -0
  214. package/lib/components/pisellFloorMapLayout/components/FloorMapImageElement.d.ts +6 -0
  215. package/lib/components/pisellFloorMapLayout/components/FloorMapImageElement.js +94 -0
  216. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.d.ts +35 -0
  217. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.js +333 -0
  218. package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.less +237 -0
  219. package/lib/components/pisellFloorMapLayout/components/ItemLayer.d.ts +7 -0
  220. package/lib/components/pisellFloorMapLayout/components/ItemLayer.js +26 -5
  221. package/lib/components/pisellFloorMapLayout/components/MapLayer.d.ts +4 -0
  222. package/lib/components/pisellFloorMapLayout/components/MapLayer.js +7 -2
  223. package/lib/components/pisellFloorMapLayout/components/ViewControls.less +3 -2
  224. package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +11 -0
  225. package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +63 -0
  226. package/lib/components/pisellFloorMapLayout/components/index.d.ts +14 -0
  227. package/lib/components/pisellFloorMapLayout/components/index.js +23 -2
  228. package/lib/components/pisellFloorMapLayout/context/FloorMapLayoutContext.d.ts +16 -0
  229. package/lib/components/pisellFloorMapLayout/context/FloorMapLayoutContext.js +54 -0
  230. package/lib/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.d.ts +5 -0
  231. package/lib/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.js +46 -0
  232. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +60 -0
  233. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +429 -0
  234. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapPaletteTouchDrag.d.ts +21 -0
  235. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapPaletteTouchDrag.js +146 -0
  236. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +67 -0
  237. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +263 -0
  238. package/lib/components/pisellFloorMapLayout/index.d.ts +9 -2
  239. package/lib/components/pisellFloorMapLayout/index.js +31 -2
  240. package/lib/components/pisellFloorMapLayout/locales.d.ts +186 -0
  241. package/lib/components/pisellFloorMapLayout/locales.js +206 -0
  242. package/lib/components/pisellFloorMapLayout/types.d.ts +346 -1
  243. package/lib/components/pisellFloorMapLayout/types.js +15 -0
  244. package/lib/components/pisellFloorMapLayout/utils/floorMapCanvasDisplay.d.ts +20 -0
  245. package/lib/components/pisellFloorMapLayout/utils/floorMapCanvasDisplay.js +126 -0
  246. package/lib/components/pisellFloorMapLayout/utils/floorMapConfigMerge.d.ts +8 -0
  247. package/lib/components/pisellFloorMapLayout/utils/floorMapConfigMerge.js +66 -0
  248. package/lib/components/pisellFloorMapLayout/utils/floorMapDropUtils.d.ts +26 -0
  249. package/lib/components/pisellFloorMapLayout/utils/floorMapDropUtils.js +61 -0
  250. package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +11 -0
  251. package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +70 -0
  252. package/lib/components/pisellFloorMapLayout/utils/floorMapFallbackRender.d.ts +11 -0
  253. package/lib/components/pisellFloorMapLayout/utils/floorMapFallbackRender.js +135 -0
  254. package/lib/components/pisellFloorMapLayout/utils/floorMapStageDefaults.d.ts +8 -0
  255. package/lib/components/pisellFloorMapLayout/utils/floorMapStageDefaults.js +33 -0
  256. package/lib/components/pisellFloorMapLayout/utils/floorMapViewConfigDiff.d.ts +8 -0
  257. package/lib/components/pisellFloorMapLayout/utils/floorMapViewConfigDiff.js +128 -0
  258. package/lib/components/pisellFloorMapLayout/utils/layoutMeasurements.d.ts +30 -0
  259. package/lib/components/pisellFloorMapLayout/utils/layoutMeasurements.js +96 -0
  260. package/lib/components/pisellFloorMapLayout/utils/mergeCanvasesForTabs.d.ts +7 -0
  261. package/lib/components/pisellFloorMapLayout/utils/mergeCanvasesForTabs.js +41 -0
  262. package/lib/components/pisellFloorMapLayout/utils/snap.d.ts +10 -0
  263. package/lib/components/pisellFloorMapLayout/utils/snap.js +43 -0
  264. package/lib/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.d.ts +6 -0
  265. package/lib/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.js +179 -0
  266. package/lib/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.less +129 -0
  267. package/lib/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.stories.d.ts +10 -0
  268. package/lib/components/pisellHierarchicalSummaryList/PisellHierarchicalSummaryList.stories.js +218 -0
  269. package/lib/components/pisellHierarchicalSummaryList/components/Row.d.ts +35 -0
  270. package/lib/components/pisellHierarchicalSummaryList/components/Row.js +343 -0
  271. package/lib/components/pisellHierarchicalSummaryList/components/index.d.ts +1 -0
  272. package/lib/components/pisellHierarchicalSummaryList/components/index.js +29 -0
  273. package/lib/components/pisellHierarchicalSummaryList/hooks/index.d.ts +2 -0
  274. package/lib/components/pisellHierarchicalSummaryList/hooks/index.js +29 -0
  275. package/lib/components/pisellHierarchicalSummaryList/hooks/useExpandedKeys.d.ts +15 -0
  276. package/lib/components/pisellHierarchicalSummaryList/hooks/useExpandedKeys.js +51 -0
  277. package/lib/components/pisellHierarchicalSummaryList/index.d.ts +5 -0
  278. package/lib/components/pisellHierarchicalSummaryList/index.js +31 -0
  279. package/lib/components/pisellHierarchicalSummaryList/types.d.ts +248 -0
  280. package/lib/components/pisellHierarchicalSummaryList/types.js +17 -0
  281. package/lib/components/pisellRecordBoard/PisellRecordBoard.d.ts +2 -1
  282. package/lib/components/pisellRecordBoard/PisellRecordBoard.js +54 -8
  283. package/lib/components/pisellRecordBoard/PisellRecordBoard.stories.d.ts +4 -0
  284. package/lib/components/pisellRecordBoard/PisellRecordBoard.stories.js +915 -25
  285. package/lib/components/pisellRecordBoard/index.d.ts +7 -2
  286. package/lib/components/pisellRecordBoard/index.js +1 -0
  287. package/lib/components/pisellRecordBoard/shellFrame/ColumnSetting/index.js +8 -2
  288. package/lib/components/pisellRecordBoard/shellFrame/FloorMap.d.ts +14 -0
  289. package/lib/components/pisellRecordBoard/shellFrame/FloorMap.js +27 -0
  290. package/lib/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.d.ts +16 -0
  291. package/lib/components/pisellRecordBoard/shellFrame/ShellBodyMetaContext.js +45 -0
  292. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/ToolBarFilter.less +47 -0
  293. package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +48 -4
  294. package/lib/components/pisellRecordBoard/shellFrame/index.d.ts +4 -10
  295. package/lib/components/pisellRecordBoard/shellFrame/index.js +87 -6
  296. package/lib/components/pisellRecordBoard/types.d.ts +55 -1
  297. package/lib/components/pisellRecordBoard/utils/partitionShellFrameChildren.d.ts +15 -0
  298. package/lib/components/pisellRecordBoard/utils/partitionShellFrameChildren.js +88 -0
  299. package/lib/components/pisellReservationSchedule/PisellReservationSchedule.d.ts +10 -0
  300. package/lib/components/pisellReservationSchedule/PisellReservationSchedule.js +200 -0
  301. package/lib/components/pisellReservationSchedule/PisellReservationSchedule.less +88 -0
  302. package/lib/components/pisellReservationSchedule/PisellReservationSchedule.stories.d.ts +12 -0
  303. package/lib/components/pisellReservationSchedule/PisellReservationSchedule.stories.js +116 -0
  304. package/lib/components/pisellReservationSchedule/index.d.ts +2 -0
  305. package/lib/components/pisellReservationSchedule/index.js +29 -0
  306. package/lib/components/pisellReservationSchedule/locales.d.ts +25 -0
  307. package/lib/components/pisellReservationSchedule/locales.js +47 -0
  308. package/lib/components/pisellReservationSchedule/types.d.ts +42 -0
  309. package/lib/components/pisellReservationSchedule/types.js +17 -0
  310. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.d.ts +10 -0
  311. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.js +127 -0
  312. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +49 -0
  313. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.stories.d.ts +16 -0
  314. package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.stories.js +181 -0
  315. package/lib/components/pisellReservationScheduleBand/index.d.ts +2 -0
  316. package/lib/components/pisellReservationScheduleBand/index.js +29 -0
  317. package/lib/components/pisellReservationScheduleBand/types.d.ts +45 -0
  318. package/lib/components/pisellReservationScheduleBand/types.js +17 -0
  319. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.d.ts +10 -0
  320. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.js +602 -0
  321. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.less +378 -0
  322. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.stories.d.ts +79 -0
  323. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.stories.js +273 -0
  324. package/lib/components/pisellTimeNavigator/components/BackgroundLayer.d.ts +14 -0
  325. package/lib/components/pisellTimeNavigator/components/BackgroundLayer.js +81 -0
  326. package/lib/components/pisellTimeNavigator/components/CursorLayer.d.ts +20 -0
  327. package/lib/components/pisellTimeNavigator/components/CursorLayer.js +74 -0
  328. package/lib/components/pisellTimeNavigator/components/GestureLayer.d.ts +31 -0
  329. package/lib/components/pisellTimeNavigator/components/GestureLayer.js +159 -0
  330. package/lib/components/pisellTimeNavigator/components/NowButton.d.ts +14 -0
  331. package/lib/components/pisellTimeNavigator/components/NowButton.js +81 -0
  332. package/lib/components/pisellTimeNavigator/components/ScaleLayer.d.ts +17 -0
  333. package/lib/components/pisellTimeNavigator/components/ScaleLayer.js +95 -0
  334. package/lib/components/pisellTimeNavigator/components/index.d.ts +5 -0
  335. package/lib/components/pisellTimeNavigator/components/index.js +41 -0
  336. package/lib/components/pisellTimeNavigator/hooks/index.d.ts +5 -0
  337. package/lib/components/pisellTimeNavigator/hooks/index.js +35 -0
  338. package/lib/components/pisellTimeNavigator/hooks/useDragInertia.d.ts +14 -0
  339. package/lib/components/pisellTimeNavigator/hooks/useDragInertia.js +136 -0
  340. package/lib/components/pisellTimeNavigator/hooks/useRealtime.d.ts +5 -0
  341. package/lib/components/pisellTimeNavigator/hooks/useRealtime.js +49 -0
  342. package/lib/components/pisellTimeNavigator/hooks/useTimeAxis.d.ts +27 -0
  343. package/lib/components/pisellTimeNavigator/hooks/useTimeAxis.js +81 -0
  344. package/lib/components/pisellTimeNavigator/index.d.ts +4 -0
  345. package/lib/components/pisellTimeNavigator/index.js +42 -0
  346. package/lib/components/pisellTimeNavigator/locales.d.ts +22 -0
  347. package/lib/components/pisellTimeNavigator/locales.js +41 -0
  348. package/lib/components/pisellTimeNavigator/types.d.ts +145 -0
  349. package/lib/components/pisellTimeNavigator/types.js +17 -0
  350. package/lib/components/pisellTimeNavigator/utils/index.d.ts +26 -0
  351. package/lib/components/pisellTimeNavigator/utils/index.js +98 -0
  352. package/lib/index.d.ts +15 -5
  353. package/lib/index.js +35 -0
  354. package/lib/locales/en-US.d.ts +2 -0
  355. package/lib/locales/en-US.js +2 -0
  356. package/lib/locales/zh-CN.d.ts +2 -0
  357. package/lib/locales/zh-CN.js +2 -0
  358. package/lib/locales/zh-TW.d.ts +2 -0
  359. package/lib/locales/zh-TW.js +2 -0
  360. package/lowcode/floor-map-layout-provider/meta.ts +65 -0
  361. package/lowcode/pisell-floor-map-layout/meta.ts +3820 -1
  362. package/lowcode/pisell-hierarchical-summary-list/meta.ts +244 -0
  363. package/lowcode/pisell-reservation-schedule/index.ts +3 -0
  364. package/lowcode/pisell-reservation-schedule/meta.ts +69 -0
  365. package/lowcode/pisell-reservation-schedule/snippets.ts +1 -0
  366. package/lowcode/pisell-reservation-schedule-band/index.ts +3 -0
  367. package/lowcode/pisell-reservation-schedule-band/meta.ts +96 -0
  368. package/lowcode/pisell-reservation-schedule-band/snippets.ts +1 -0
  369. package/lowcode/pisell-time-navigator/index.ts +3 -0
  370. package/lowcode/pisell-time-navigator/meta.ts +298 -0
  371. package/lowcode/pisell-time-navigator/snippets.ts +1 -0
  372. package/lowcode/render-figma-style-round-table-card/meta.ts +589 -0
  373. package/lowcode/render-figma-style-table-card/meta.ts +589 -0
  374. package/package.json +4 -4
@@ -0,0 +1,512 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
+ import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
14
+ import dayjs from 'dayjs';
15
+ import classNames from 'classnames';
16
+ import PisellScrollView from "../PisellScrollView";
17
+ import { parseValue, getRangeBounds, snapToStepMinutes, isInDisabledRanges as checkDisabledRanges } from "./utils";
18
+ import { useTimeAxis, useRealtime, useDragInertia } from "./hooks";
19
+ import { BackgroundLayer, CursorLayer, GestureLayer, NowButton, ScaleLayer } from "./components";
20
+ import { locales } from '@pisell/utils';
21
+ import pisellTimeNavigatorLocales from "./locales";
22
+ import "./PisellTimeNavigator.less";
23
+ import useEngineContext from "../../hooks/useEngineContext";
24
+
25
+ /** 横向每格宽度(px),Figma 约 82 */
26
+ var CELL_SIZE_H = 82;
27
+ /** 竖向每格高度(px) */
28
+ var CELL_SIZE_V = 20;
29
+
30
+ /**
31
+ * PisellTimeNavigator:可拖动的时间导航轴,时间范围内浏览、选择、控制
32
+ */
33
+ export function PisellTimeNavigator(props) {
34
+ var _context$engine;
35
+ var valueProp = props.value,
36
+ onChange = props.onChange,
37
+ defaultValue = props.defaultValue,
38
+ referenceDateProp = props.referenceDate,
39
+ _props$realtime = props.realtime,
40
+ realtime = _props$realtime === void 0 ? false : _props$realtime,
41
+ range = props.range,
42
+ _props$stepMinutes = props.stepMinutes,
43
+ stepMinutes = _props$stepMinutes === void 0 ? 15 : _props$stepMinutes,
44
+ _props$majorStepMinut = props.majorStepMinutes,
45
+ majorStepMinutes = _props$majorStepMinut === void 0 ? 60 : _props$majorStepMinut,
46
+ _props$cursorMode = props.cursorMode,
47
+ cursorMode = _props$cursorMode === void 0 ? 'axis-moves' : _props$cursorMode,
48
+ _props$orientation = props.orientation,
49
+ orientation = _props$orientation === void 0 ? 'horizontal' : _props$orientation,
50
+ disabledRanges = props.disabledRanges,
51
+ _props$showNowButton = props.showNowButton,
52
+ showNowButton = _props$showNowButton === void 0 ? true : _props$showNowButton,
53
+ _props$userInteractio = props.userInteractionLocked,
54
+ userInteractionLocked = _props$userInteractio === void 0 ? false : _props$userInteractio,
55
+ _props$snapToStep = props.snapToStep,
56
+ snapToStep = _props$snapToStep === void 0 ? true : _props$snapToStep,
57
+ _props$inertia = props.inertia,
58
+ inertia = _props$inertia === void 0 ? false : _props$inertia,
59
+ businessHours = props.businessHours,
60
+ pastTimeFade = props.pastTimeFade,
61
+ containerStyle = props.containerStyle,
62
+ scaleStyle = props.scaleStyle,
63
+ cursorStyle = props.cursorStyle,
64
+ nowButtonStyle = props.nowButtonStyle,
65
+ className = props.className,
66
+ style = props.style,
67
+ locale = props.locale,
68
+ _props$timeFormat = props.timeFormat,
69
+ timeFormat = _props$timeFormat === void 0 ? 'HH:mm' : _props$timeFormat,
70
+ renderNowButton = props.renderNowButton;
71
+ var context = useEngineContext();
72
+ locales.init(pisellTimeNavigatorLocales, (context === null || context === void 0 || (_context$engine = context.engine) === null || _context$engine === void 0 || (_context$engine = _context$engine.props) === null || _context$engine === void 0 ? void 0 : _context$engine.locale) || 'en');
73
+
74
+ /**
75
+ * 锚定日历日:传入 prop 时以 prop 为准;不传则每帧取当天 0 点(与历史行为一致,便于跨自然日)
76
+ */
77
+ var referenceDateFromProp = useMemo(function () {
78
+ if (referenceDateProp == null) return undefined;
79
+ var d = parseValue(referenceDateProp, dayjs());
80
+ return (d !== null && d !== void 0 ? d : dayjs()).startOf('day');
81
+ }, [referenceDateProp]);
82
+ var referenceDate = referenceDateFromProp !== null && referenceDateFromProp !== void 0 ? referenceDateFromProp : dayjs().startOf('day');
83
+ var isHorizontal = orientation === 'horizontal';
84
+ var cellSizePx = isHorizontal ? CELL_SIZE_H : CELL_SIZE_V;
85
+ var axis = useTimeAxis({
86
+ range: range,
87
+ stepMinutes: stepMinutes,
88
+ referenceDate: referenceDate,
89
+ orientation: orientation,
90
+ cellSizePx: cellSizePx
91
+ });
92
+ var isControlled = valueProp !== undefined;
93
+ var _useState = useState(function () {
94
+ var v = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue;
95
+ return parseValue(v, referenceDate);
96
+ }),
97
+ _useState2 = _slicedToArray(_useState, 2),
98
+ internalValue = _useState2[0],
99
+ setInternalValue = _useState2[1];
100
+ var value = isControlled ? valueProp != null ? parseValue(valueProp, referenceDate) : null : internalValue;
101
+ var effectiveValue = value !== null && value !== void 0 ? value : axis.rangeStart;
102
+ var scrollRef = useRef(null);
103
+ var viewportWrapRef = useRef(null);
104
+ /** 标记当前是否为「程序性滚动到中心」:其触发的 onScrollEnd 不再做时间判定 */
105
+ var scrollToCenterInProgressRef = useRef(false);
106
+ /** 标记 value 是否由滚动/松手更新:若是则不再根据 value 做「滚动到中心」 */
107
+ var valueUpdatedByScrollRef = useRef(false);
108
+ /** 手指是否仍按在滚动区域上;仅当完全松手后才执行吸附 */
109
+ var isPointerDownRef = useRef(false);
110
+ var _useState3 = useState({
111
+ scrollLeft: 0,
112
+ scrollTop: 0
113
+ }),
114
+ _useState4 = _slicedToArray(_useState3, 2),
115
+ scrollPosition = _useState4[0],
116
+ setScrollPosition = _useState4[1];
117
+ var _useState5 = useState({
118
+ w: 0,
119
+ h: 0
120
+ }),
121
+ _useState6 = _slicedToArray(_useState5, 2),
122
+ viewportSize = _useState6[0],
123
+ setViewportSize = _useState6[1];
124
+ /** 每分钟更新一次,使当前时间线/渐变块随真实时间移动 */
125
+ var _useState7 = useState(0),
126
+ _useState8 = _slicedToArray(_useState7, 2),
127
+ setNowTick = _useState8[1];
128
+ useEffect(function () {
129
+ var id = setInterval(function () {
130
+ return setNowTick(function (n) {
131
+ return n + 1;
132
+ });
133
+ }, 60 * 1000);
134
+ return function () {
135
+ return clearInterval(id);
136
+ };
137
+ }, []);
138
+ var isAxisMoves = cursorMode === 'axis-moves';
139
+ var getScrollContainer = useCallback(function () {
140
+ var _scrollRef$current$ge, _scrollRef$current, _scrollRef$current$ge2;
141
+ return (_scrollRef$current$ge = (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 || (_scrollRef$current$ge2 = _scrollRef$current.getScrollContainer) === null || _scrollRef$current$ge2 === void 0 ? void 0 : _scrollRef$current$ge2.call(_scrollRef$current)) !== null && _scrollRef$current$ge !== void 0 ? _scrollRef$current$ge : null;
142
+ }, []);
143
+
144
+ /** 挂载和视口变化时同步尺寸,保证两端半屏留白从首帧就正确 */
145
+ useEffect(function () {
146
+ var el = viewportWrapRef.current;
147
+ if (!el) return;
148
+ var setSize = function setSize() {
149
+ var w = el.clientWidth;
150
+ var h = el.clientHeight;
151
+ setViewportSize(function (prev) {
152
+ return prev.w === w && prev.h === h ? prev : {
153
+ w: w,
154
+ h: h
155
+ };
156
+ });
157
+ };
158
+ setSize();
159
+ var ro = new ResizeObserver(setSize);
160
+ ro.observe(el);
161
+ return function () {
162
+ return ro.disconnect();
163
+ };
164
+ }, []);
165
+ var inertiaHandlers = useDragInertia({
166
+ enabled: inertia && !userInteractionLocked,
167
+ orientation: orientation,
168
+ getScrollContainer: getScrollContainer
169
+ });
170
+
171
+ /** 横向:点位于每格中心 cellSizePx/2;竖向:对齐整点上面的粗线(格顶),dotOffsetPx=0 */
172
+ /** 视口未量到前用默认值,避免首帧 axisStartMargin 为 0 导致错位 */
173
+ var effectiveViewportW = viewportSize.w || 400;
174
+ var effectiveViewportH = viewportSize.h || 300;
175
+ var halfViewportW = effectiveViewportW / 2;
176
+ var halfViewportH = effectiveViewportH / 2;
177
+ var dotOffsetPx = isHorizontal ? cellSizePx / 2 : 0;
178
+ var axisStartMarginW = Math.max(0, halfViewportW - dotOffsetPx);
179
+ var axisStartMarginH = Math.max(0, halfViewportH - dotOffsetPx);
180
+
181
+ /** 拖动中:用连续映射按 1 分钟步长显示时间(不吸附到 stepMinutes) */
182
+ var handleScroll = useCallback(function (data) {
183
+ /** 程序性滚动到中心(如点 Now)过程中不更新任何状态,避免时间轴再动、value 被覆盖 */
184
+ if (scrollToCenterInProgressRef.current) return;
185
+ setScrollPosition({
186
+ scrollLeft: data.scrollLeft,
187
+ scrollTop: data.scrollTop
188
+ });
189
+ setViewportSize({
190
+ w: data.clientWidth,
191
+ h: data.clientHeight
192
+ });
193
+ if (userInteractionLocked) return;
194
+ if (!isAxisMoves || data.clientWidth <= 0 && data.clientHeight <= 0) return;
195
+ var halfW = data.clientWidth / 2;
196
+ var halfH = data.clientHeight / 2;
197
+ var hasPadding = isHorizontal ? effectiveViewportW > 0 : effectiveViewportH > 0;
198
+ var centerOffset = isHorizontal ? hasPadding ? data.scrollLeft + dotOffsetPx : data.scrollLeft + halfW : hasPadding ? data.scrollTop + dotOffsetPx : data.scrollTop + halfH;
199
+ var t = axis.offsetToTimeContinuous(centerOffset);
200
+ if (!t) return;
201
+ var tMinute = t.startOf('minute');
202
+ if (checkDisabledRanges(tMinute, disabledRanges)) return;
203
+ valueUpdatedByScrollRef.current = true;
204
+ if (!isControlled) setInternalValue(tMinute);
205
+ onChange === null || onChange === void 0 || onChange(tMinute);
206
+ }, [isAxisMoves, isHorizontal, isControlled, axis.offsetToTimeContinuous, disabledRanges, onChange, effectiveViewportW, effectiveViewportH, dotOffsetPx, userInteractionLocked]);
207
+
208
+ /** 根据当前视口中心吸附到 0/15/30/45 分钟并更新 value;由松手后的 scrollEnd 或 pointerUp 调用 */
209
+ var performSnapFromScrollPosition = useCallback(function (scrollLeft, scrollTop, clientWidth, clientHeight) {
210
+ if (!isAxisMoves || clientWidth <= 0 && clientHeight <= 0) return;
211
+ valueUpdatedByScrollRef.current = false;
212
+ var hasPadding = isHorizontal ? effectiveViewportW > 0 : effectiveViewportH > 0;
213
+ var centerOffset = isHorizontal ? hasPadding ? scrollLeft + dotOffsetPx : scrollLeft + clientWidth / 2 : hasPadding ? scrollTop + dotOffsetPx : scrollTop + clientHeight / 2;
214
+ var t = axis.offsetToTimeContinuous(centerOffset);
215
+ if (!t) return;
216
+ var snapped = snapToStep ? snapToStepMinutes(t, stepMinutes) : t.startOf('minute');
217
+ if (checkDisabledRanges(snapped, disabledRanges)) return;
218
+ if (!isControlled) setInternalValue(snapped);
219
+ onChange === null || onChange === void 0 || onChange(snapped);
220
+ }, [isAxisMoves, isHorizontal, isControlled, axis.offsetToTimeContinuous, snapToStep, stepMinutes, disabledRanges, onChange, effectiveViewportW, effectiveViewportH, dotOffsetPx]);
221
+
222
+ /** 程序性滚动结束后延迟清除标记,避免同一次滚动触发的后续 scrollEnd 误走吸附(导致轴动、值被改) */
223
+ var scrollEndClearTimeoutRef = useRef(null);
224
+
225
+ /** 滚动结束:仅当手指已松开时才吸附(避免拖动中停顿就吸附);若仍按着则等 pointerUp 再吸附 */
226
+ var handleScrollEnd = useCallback(function (data) {
227
+ if (userInteractionLocked) return;
228
+ if (scrollToCenterInProgressRef.current) {
229
+ if (scrollEndClearTimeoutRef.current) clearTimeout(scrollEndClearTimeoutRef.current);
230
+ /** 不立即清除:程序性滚动的 scrollEnd 会在动画结束时才触发(可能数百 ms 后),延迟清除才能跳过那次吸附 */
231
+ scrollEndClearTimeoutRef.current = setTimeout(function () {
232
+ scrollToCenterInProgressRef.current = false;
233
+ scrollEndClearTimeoutRef.current = null;
234
+ }, 500);
235
+ return;
236
+ }
237
+ if (isPointerDownRef.current) return;
238
+ performSnapFromScrollPosition(data.scrollLeft, data.scrollTop, data.clientWidth, data.clientHeight);
239
+ }, [performSnapFromScrollPosition, userInteractionLocked]);
240
+
241
+ /** 手指松开时若尚未吸附(例如按住不动再松手),用当前滚动位置做一次吸附;点 Now 按钮松手不吸附 */
242
+ var handlePointerUp = useCallback(function (e) {
243
+ var _e$target, _e$target$closest, _scrollRef$current2, _scrollRef$current2$g;
244
+ isPointerDownRef.current = false;
245
+ if (userInteractionLocked) return;
246
+ if ((_e$target = e.target) !== null && _e$target !== void 0 && (_e$target$closest = _e$target.closest) !== null && _e$target$closest !== void 0 && _e$target$closest.call(_e$target, '.pisell-time-navigator-now')) return;
247
+ if (!isAxisMoves) return;
248
+ var container = (_scrollRef$current2 = scrollRef.current) === null || _scrollRef$current2 === void 0 || (_scrollRef$current2$g = _scrollRef$current2.getScrollContainer) === null || _scrollRef$current2$g === void 0 ? void 0 : _scrollRef$current2$g.call(_scrollRef$current2);
249
+ if (!container) return;
250
+ performSnapFromScrollPosition(container.scrollLeft, container.scrollTop, container.clientWidth, container.clientHeight);
251
+ }, [isAxisMoves, performSnapFromScrollPosition, userInteractionLocked]);
252
+ var snapFn = useCallback(function (t) {
253
+ return snapToStepMinutes(t, stepMinutes);
254
+ }, [stepMinutes]);
255
+ var isInDisabled = useCallback(function (t) {
256
+ return checkDisabledRanges(t, disabledRanges);
257
+ }, [disabledRanges]);
258
+ var handleChange = useCallback(function (next) {
259
+ if (isInDisabled(next)) return;
260
+ if (!isControlled) setInternalValue(next);
261
+ onChange === null || onChange === void 0 || onChange(next);
262
+ }, [isControlled, onChange, isInDisabled]);
263
+ useRealtime(realtime, function () {
264
+ var wall = dayjs().startOf('minute');
265
+ var _getRangeBounds = getRangeBounds(range, referenceDate),
266
+ _getRangeBounds2 = _slicedToArray(_getRangeBounds, 2),
267
+ rangeStart = _getRangeBounds2[0],
268
+ rangeEnd = _getRangeBounds2[1];
269
+ /** 跨日营业:用真实此刻落在 [rangeStart, rangeEnd] 内,而非仅 reference 当日钟面 */
270
+ var clamped = wall.isBefore(rangeStart) ? rangeStart : wall.isAfter(rangeEnd) ? rangeEnd : wall;
271
+ var snapped = snapToStep ? snapFn(clamped) : clamped;
272
+ if (!isInDisabled(snapped)) handleChange(snapped);
273
+ });
274
+ useEffect(function () {
275
+ if (!isControlled && valueProp !== undefined) {
276
+ setInternalValue(parseValue(valueProp, referenceDate));
277
+ }
278
+ }, [isControlled, valueProp, referenceDate]);
279
+
280
+ /** 锚定日切换时保留非受控下的时分,落到新日上 */
281
+ var referenceDayMs = referenceDate.valueOf();
282
+ useEffect(function () {
283
+ if (isControlled) return;
284
+ setInternalValue(function (prev) {
285
+ if (!prev) {
286
+ return parseValue(defaultValue, referenceDate);
287
+ }
288
+ return referenceDate.hour(prev.hour()).minute(prev.minute()).second(0).millisecond(0);
289
+ });
290
+ }, [referenceDayMs, isControlled, defaultValue]);
291
+ var cursorOffsetPx = axis.timeToOffset(effectiveValue);
292
+ /** 刻度「现在线」:真实系统时刻落在轴区间内时绘制(含跨日营业次日凌晨) */
293
+ var wallAligned = dayjs().startOf('minute');
294
+ var currentTimeInRange = !wallAligned.isBefore(axis.rangeStart) && !wallAligned.isAfter(axis.rangeEnd);
295
+ var currentTimeOffsetPx = currentTimeInRange ? axis.timeToOffset(wallAligned) : undefined;
296
+
297
+ // 以点为基准:有留白时 targetScroll = cursorOffsetPx - dotOffsetPx(使该点对准视口中心)
298
+ var SCROLL_SYNC_THRESHOLD_PX = 2;
299
+ var hasScrollPadding = isHorizontal ? effectiveViewportW > 0 : effectiveViewportH > 0;
300
+ /**
301
+ * 竖向:上留白用 axis marginTop,下留白用 axis marginBottom(均为半屏)
302
+ * axis-wrap 高度 = marginTop + 轴内容 + marginBottom
303
+ */
304
+ var verticalTailPx = effectiveViewportH / 2;
305
+ var verticalWrapHeight = axisStartMarginH + axis.totalLengthPx + verticalTailPx;
306
+ var maxScrollPx = isHorizontal ? Math.max(0, axis.totalLengthPx - cellSizePx) : Math.max(0, verticalWrapHeight - effectiveViewportH);
307
+ useEffect(function () {
308
+ var _scrollRef$current3, _scrollRef$current3$g;
309
+ if (valueUpdatedByScrollRef.current) {
310
+ valueUpdatedByScrollRef.current = false;
311
+ return;
312
+ }
313
+ var container = (_scrollRef$current3 = scrollRef.current) === null || _scrollRef$current3 === void 0 || (_scrollRef$current3$g = _scrollRef$current3.getScrollContainer) === null || _scrollRef$current3$g === void 0 ? void 0 : _scrollRef$current3$g.call(_scrollRef$current3);
314
+ if (!container) return;
315
+ var viewportPx = isHorizontal ? container.clientWidth : container.clientHeight;
316
+ var targetScroll = hasScrollPadding ? Math.max(0, Math.min(cursorOffsetPx - dotOffsetPx, maxScrollPx)) : Math.max(0, Math.min(cursorOffsetPx - viewportPx / 2, Math.max(0, axis.totalLengthPx - viewportPx)));
317
+ var currentScroll = isHorizontal ? container.scrollLeft : container.scrollTop;
318
+ if (Math.abs(currentScroll - targetScroll) <= SCROLL_SYNC_THRESHOLD_PX) return;
319
+ scrollToCenterInProgressRef.current = true;
320
+ if (isHorizontal) {
321
+ container.scrollTo({
322
+ left: targetScroll,
323
+ behavior: 'smooth'
324
+ });
325
+ } else {
326
+ container.scrollTo({
327
+ top: targetScroll,
328
+ behavior: 'smooth'
329
+ });
330
+ }
331
+ }, [effectiveValue.valueOf(), isHorizontal, cursorOffsetPx, maxScrollPx, hasScrollPadding, dotOffsetPx, cellSizePx, axis.totalLengthPx]);
332
+ var scrollToCenterTime = useCallback(function (t) {
333
+ var container = getScrollContainer();
334
+ if (!container) return;
335
+ var offset = axis.timeToOffset(t);
336
+ var viewportPx = isHorizontal ? container.clientWidth : container.clientHeight;
337
+ var maxScroll = hasScrollPadding ? maxScrollPx : Math.max(0, axis.totalLengthPx - viewportPx);
338
+ var target = hasScrollPadding ? Math.max(0, Math.min(offset - dotOffsetPx, maxScrollPx)) : Math.max(0, Math.min(offset - viewportPx / 2, maxScroll));
339
+ scrollToCenterInProgressRef.current = true;
340
+ container.scrollTo({
341
+ left: isHorizontal ? target : 0,
342
+ top: isHorizontal ? 0 : target,
343
+ behavior: 'smooth'
344
+ });
345
+ }, [getScrollContainer, axis.timeToOffset, axis.totalLengthPx, isHorizontal, hasScrollPadding, dotOffsetPx, maxScrollPx]);
346
+ var handleSelectTime = useCallback(function (t) {
347
+ handleChange(t);
348
+ if (isAxisMoves) scrollToCenterTime(t);
349
+ }, [handleChange, isAxisMoves, scrollToCenterTime]);
350
+
351
+ /** 点 Now:系统当前时刻映射到锚定日,再 clamp 到 range */
352
+ var handleNow = useCallback(function () {
353
+ valueUpdatedByScrollRef.current = false;
354
+ var wall = dayjs().startOf('minute');
355
+ var _getRangeBounds3 = getRangeBounds(range, referenceDate),
356
+ _getRangeBounds4 = _slicedToArray(_getRangeBounds3, 2),
357
+ rangeStart = _getRangeBounds4[0],
358
+ rangeEnd = _getRangeBounds4[1];
359
+ var clamped = wall.isBefore(rangeStart) ? rangeStart : wall.isAfter(rangeEnd) ? rangeEnd : wall;
360
+ handleChange(clamped);
361
+ }, [range, referenceDate, handleChange]);
362
+ var businessHoursPx = useMemo(function () {
363
+ if (!businessHours) return undefined;
364
+ var _getRangeBounds5 = getRangeBounds(businessHours, referenceDate),
365
+ _getRangeBounds6 = _slicedToArray(_getRangeBounds5, 2),
366
+ s = _getRangeBounds6[0],
367
+ e = _getRangeBounds6[1];
368
+ return [axis.timeToOffset(s), axis.timeToOffset(e)];
369
+ }, [businessHours, referenceDate, axis.timeToOffset]);
370
+ var scrollConfig = useMemo(function () {
371
+ return {
372
+ show: false,
373
+ type: isHorizontal ? 'lrArrows' : 'tbArrows',
374
+ scrollDistance: cellSizePx
375
+ };
376
+ }, [isHorizontal, cellSizePx]);
377
+ return /*#__PURE__*/React.createElement("div", {
378
+ className: classNames('pisell-time-navigator', "pisell-time-navigator--".concat(orientation), userInteractionLocked && 'pisell-time-navigator--interaction-locked', className),
379
+ style: isHorizontal ? style : _objectSpread({
380
+ height: '100%',
381
+ minHeight: 200
382
+ }, style)
383
+ }, /*#__PURE__*/React.createElement("div", {
384
+ ref: viewportWrapRef,
385
+ className: "pisell-time-navigator-viewport-wrap",
386
+ style: isHorizontal ? undefined : {
387
+ height: '100%',
388
+ minHeight: 200,
389
+ maxHeight: 800
390
+ },
391
+ onPointerDownCapture: function onPointerDownCapture() {
392
+ isPointerDownRef.current = true;
393
+ },
394
+ onPointerUpCapture: handlePointerUp,
395
+ onPointerLeaveCapture: handlePointerUp
396
+ }, /*#__PURE__*/React.createElement("div", {
397
+ className: classNames('pisell-time-navigator-scroll-host', userInteractionLocked && 'pisell-time-navigator-scroll-host--interaction-locked')
398
+ }, /*#__PURE__*/React.createElement(PisellScrollView, {
399
+ ref: scrollRef,
400
+ width: '100%',
401
+ height: '100%',
402
+ overflow: isHorizontal ? 'x' : 'y',
403
+ showScrollButtons: false,
404
+ scrollbarStyle: "none",
405
+ scrollActionsConfig: scrollConfig,
406
+ onScroll: handleScroll,
407
+ onScrollEnd: handleScrollEnd,
408
+ style: _objectSpread(_objectSpread({}, isHorizontal ? {
409
+ height: 48
410
+ } : {
411
+ width: 54,
412
+ minHeight: 200,
413
+ height: '100%',
414
+ maxHeight: 800
415
+ }), containerStyle)
416
+ }, /*#__PURE__*/React.createElement(GestureLayer, {
417
+ orientation: orientation,
418
+ cellSizePx: cellSizePx,
419
+ axisStartMarginPx: isHorizontal ? axisStartMarginW : axisStartMarginH,
420
+ offsetToTime: axis.offsetToTime,
421
+ onSelectTime: handleSelectTime,
422
+ isInDisabledRanges: isInDisabled,
423
+ snapToStep: snapToStep,
424
+ stepMinutes: stepMinutes,
425
+ snapFn: snapFn,
426
+ scrollPosition: scrollPosition,
427
+ viewportSize: viewportSize,
428
+ onPointerDown: inertiaHandlers.onPointerDown,
429
+ onPointerMove: inertiaHandlers.onPointerMove,
430
+ onPointerUp: inertiaHandlers.onPointerUp,
431
+ onPointerLeave: inertiaHandlers.onPointerUp
432
+ }, /*#__PURE__*/React.createElement("div", {
433
+ className: "pisell-time-navigator-axis-wrap",
434
+ style: isHorizontal ? {
435
+ width: axis.totalLengthPx + (effectiveViewportW - cellSizePx),
436
+ minHeight: 48
437
+ } : {
438
+ width: '100%'
439
+ /* 不设 height,由轴(marginTop + 内容 + marginBottom)自然撑开,避免固定高度与 margin 的 CSS 盒模型歧义 */
440
+ }
441
+ }, isHorizontal && currentTimeOffsetPx != null && currentTimeOffsetPx >= 0 && /*#__PURE__*/React.createElement("div", {
442
+ className: "pisell-time-navigator-current-gradient pisell-time-navigator-current-gradient--horizontal",
443
+ style: {
444
+ left: axisStartMarginW + Math.max(0, currentTimeOffsetPx - CELL_SIZE_H),
445
+ top: 0,
446
+ width: Math.min(CELL_SIZE_H, currentTimeOffsetPx),
447
+ height: 48
448
+ },
449
+ "aria-hidden": true
450
+ }), /*#__PURE__*/React.createElement("div", {
451
+ className: classNames('pisell-time-navigator-axis', "pisell-time-navigator-axis--".concat(orientation)),
452
+ "data-time-navigator-axis": true,
453
+ style: isHorizontal ? {
454
+ width: axis.totalLengthPx,
455
+ height: 48,
456
+ marginLeft: axisStartMarginW
457
+ } : {
458
+ height: axis.totalLengthPx,
459
+ width: '100%',
460
+ marginTop: axisStartMarginH,
461
+ marginBottom: verticalTailPx
462
+ }
463
+ }, /*#__PURE__*/React.createElement(BackgroundLayer, {
464
+ orientation: orientation,
465
+ pastTimeFade: pastTimeFade,
466
+ businessHoursPx: businessHoursPx
467
+ }), /*#__PURE__*/React.createElement(ScaleLayer, {
468
+ orientation: orientation,
469
+ ticks: axis.ticks,
470
+ stepMinutes: stepMinutes,
471
+ majorStepMinutes: majorStepMinutes,
472
+ timeFormat: timeFormat,
473
+ locale: locale,
474
+ style: scaleStyle
475
+ }), !isHorizontal && currentTimeOffsetPx != null && currentTimeOffsetPx >= 0 && /*#__PURE__*/React.createElement("div", {
476
+ className: "pisell-time-navigator-current-line",
477
+ style: {
478
+ left: 0,
479
+ top: currentTimeOffsetPx - 1,
480
+ width: '100%',
481
+ height: 2,
482
+ background: '#FF692E'
483
+ },
484
+ "aria-hidden": true
485
+ }), !isAxisMoves && /*#__PURE__*/React.createElement(CursorLayer, {
486
+ orientation: orientation,
487
+ value: effectiveValue,
488
+ timeFormat: timeFormat,
489
+ locale: locale,
490
+ isRealtime: realtime,
491
+ offsetPx: cursorOffsetPx,
492
+ style: cursorStyle
493
+ })))))), isAxisMoves && /*#__PURE__*/React.createElement("div", {
494
+ className: classNames('pisell-time-navigator-cursor-fixed', "pisell-time-navigator-cursor-fixed--".concat(orientation)),
495
+ "aria-hidden": true
496
+ }, /*#__PURE__*/React.createElement(CursorLayer, {
497
+ orientation: orientation,
498
+ value: effectiveValue,
499
+ timeFormat: timeFormat,
500
+ locale: locale,
501
+ isRealtime: realtime,
502
+ offsetPx: 0,
503
+ fixedCenter: true,
504
+ style: cursorStyle
505
+ })), showNowButton && /*#__PURE__*/React.createElement(NowButton, {
506
+ orientation: orientation,
507
+ onClick: handleNow,
508
+ style: nowButtonStyle,
509
+ renderCustom: renderNowButton
510
+ })));
511
+ }
512
+ PisellTimeNavigator.displayName = 'PisellTimeNavigator';