@pisell/materials 1.0.1059 → 1.0.1062

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 +27 -27
  12. package/es/components/PisellLayouts/index.d.ts +2 -1
  13. package/es/components/PisellLayouts/index.js +17 -15
  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 +474 -202
  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 +469 -38
  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 +497 -0
  34. package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +154 -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 +37 -11
  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 +28 -0
  57. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +62 -0
  58. package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +438 -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 +322 -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 +362 -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 +95 -18
  110. package/es/components/pisellRecordBoard/PisellRecordBoard.stories.d.ts +4 -0
  111. package/es/components/pisellRecordBoard/PisellRecordBoard.stories.js +1315 -383
  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 +57 -10
  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 +101 -19
  124. package/es/components/pisellRecordBoard/types.d.ts +62 -2
  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 +609 -0
  150. package/es/components/pisellTimeNavigator/PisellTimeNavigator.less +412 -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 +149 -0
  178. package/es/components/pisellTimeNavigator/types.js +1 -0
  179. package/es/components/pisellTimeNavigator/utils/index.d.ts +30 -0
  180. package/es/components/pisellTimeNavigator/utils/index.js +116 -0
  181. package/es/index.d.ts +15 -5
  182. package/es/index.js +7 -1
  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 +566 -181
  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 +508 -0
  210. package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +154 -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 +47 -0
  232. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +62 -0
  233. package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +431 -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 +309 -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 +362 -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 +82 -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 +88 -6
  296. package/lib/components/pisellRecordBoard/types.d.ts +62 -2
  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 +716 -0
  321. package/lib/components/pisellTimeNavigator/PisellTimeNavigator.less +412 -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 +149 -0
  349. package/lib/components/pisellTimeNavigator/types.js +17 -0
  350. package/lib/components/pisellTimeNavigator/utils/index.d.ts +30 -0
  351. package/lib/components/pisellTimeNavigator/utils/index.js +107 -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 +3894 -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 +3 -3
@@ -1,195 +1,291 @@
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 _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
3
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
4
  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."); }
3
- 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; } }
4
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
5
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
6
5
  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); }
7
6
  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; }
7
+ 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; } }
8
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9
+ 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; }
10
+ 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; }
11
+ 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; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
13
+ 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); }
8
14
  /**
9
15
  * PisellFloorMapLayout - 空间布局视图
10
- * 在二维平面按坐标渲染资源,支持缩放/平移/复位,仅负责展示与交互
16
+ * 支持两种用法:1) 仅传入 items + renderItem(原有用法);2) 传入 floorMapConfig + dataSources + mode 使用平面图视图(含多画布/编辑态)
11
17
  */
12
18
  import React, { useMemo, useRef, useImperativeHandle, useCallback, useState, useEffect } from 'react';
13
19
  import classNames from 'classnames';
14
20
  import { TransformWrapper, TransformComponent } from 'react-zoom-pan-pinch';
15
21
  import MapLayer from "./components/MapLayer";
16
22
  import ItemLayer from "./components/ItemLayer";
17
- import ViewControls from "./components/ViewControls";
23
+ import { EditableItemLayer } from "./components/EditableItemLayer";
24
+ import { FloorMapToolbar } from "./components/FloorMapToolbar";
25
+ import { FloorMapEditTopBar } from "./components/FloorMapEditTopBar";
26
+ import { CanvasTabs } from "./components/CanvasTabs";
27
+ import { FloorMapEditPanel } from "./components/FloorMapEditPanel";
28
+ import { ViewControlsWithZoom } from "./components/ViewControlsWithZoom";
29
+ import { useFloorMapEditState } from "./hooks/useFloorMapEditState";
30
+ import { useFloorMapTransformMetrics } from "./hooks/useFloorMapTransformMetrics";
31
+ import { DEFAULT_CELL_SIZE, gapToPx } from "./utils/layoutMeasurements";
32
+ import { renderFloorMapFallbackPlaceholder, renderFloorMapRenderError } from "./utils/floorMapFallbackRender";
33
+ import { getElementKindConfig, getSceneElementRenderIssue } from "./utils/floorMapElementKindUtils";
34
+ import { isFloorMapPaletteDrag, parsePaletteDragPayload, sceneXYFromContentDropOffset } from "./utils/floorMapDropUtils";
35
+ import { useFloorMapPaletteTouchDrag } from "./hooks/useFloorMapPaletteTouchDrag";
36
+ import { mergeCanvasesForTabs } from "./utils/mergeCanvasesForTabs";
37
+ import { useFloorMapLayoutContext } from "./context/FloorMapLayoutContext";
38
+ import { mergeFloorMapLayoutPropsFromContext } from "./context/mergeFloorMapLayoutContext";
39
+ import useEngineContext from "../../hooks/useEngineContext";
40
+ import { locales } from '@pisell/utils';
41
+ import { initFloorMapLayoutLocales } from "./utils/floorMapCanvasDisplay";
18
42
  import "./PisellFloorMapLayout.less";
19
43
  var PREFIX = 'pisell-floor-map-layout';
20
-
21
- /** 默认每格像素 */
22
- var DEFAULT_CELL_SIZE = 64;
23
-
24
- /** 默认 item 间距(像素) */
25
- var DEFAULT_ITEM_GAP = 8;
26
-
27
- /**
28
- * 将 mapLayer.gap 解析为像素数
29
- */
30
- function gapToPx(gap) {
31
- if (gap === undefined) return DEFAULT_ITEM_GAP;
32
- if (typeof gap === 'number') return gap;
33
- var match = String(gap).match(/^(\d+(?:\.\d+)?)\s*px?$/i);
34
- return match ? Number(match[1]) : DEFAULT_ITEM_GAP;
35
- }
36
-
37
- /**
38
- * 根据 items 计算内容区像素宽高
39
- * - cell:按格子数 + cellSize + itemGap 计算
40
- * - pixel:按 item 的 x/y/width/height 像素取边界
41
- */
42
- function getContentSize(items, cellSize, itemGap, itemUnit) {
43
- if (!items.length) {
44
- if (itemUnit === 'pixel') {
45
- return {
46
- contentWidth: cellSize * 4,
47
- contentHeight: cellSize * 3
48
- };
49
- }
50
- var _g = itemGap;
51
- return {
52
- contentWidth: 4 * (cellSize + _g) + _g,
53
- contentHeight: 3 * (cellSize + _g) + _g
54
- };
55
- }
56
- if (itemUnit === 'pixel') {
57
- var maxRight = 0;
58
- var maxBottom = 0;
59
- var _iterator = _createForOfIteratorHelper(items),
60
- _step;
61
- try {
62
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
63
- var _item$width, _item$height;
64
- var item = _step.value;
65
- var w = (_item$width = item.width) !== null && _item$width !== void 0 ? _item$width : cellSize;
66
- var h = (_item$height = item.height) !== null && _item$height !== void 0 ? _item$height : cellSize;
67
- maxRight = Math.max(maxRight, item.x + w);
68
- maxBottom = Math.max(maxBottom, item.y + h);
69
- }
70
- } catch (err) {
71
- _iterator.e(err);
72
- } finally {
73
- _iterator.f();
74
- }
75
- return {
76
- contentWidth: maxRight,
77
- contentHeight: maxBottom
78
- };
79
- }
80
- var maxX = 0;
81
- var maxY = 0;
82
- var _iterator2 = _createForOfIteratorHelper(items),
83
- _step2;
84
- try {
85
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
86
- var _item$width2, _item$height2;
87
- var _item = _step2.value;
88
- var _w = (_item$width2 = _item.width) !== null && _item$width2 !== void 0 ? _item$width2 : 1;
89
- var _h = (_item$height2 = _item.height) !== null && _item$height2 !== void 0 ? _item$height2 : 1;
90
- maxX = Math.max(maxX, _item.x + _w);
91
- maxY = Math.max(maxY, _item.y + _h);
92
- }
93
- } catch (err) {
94
- _iterator2.e(err);
95
- } finally {
96
- _iterator2.f();
97
- }
98
- var g = itemGap;
99
- return {
100
- contentWidth: maxX * (cellSize + g) + g,
101
- contentHeight: maxY * (cellSize + g) + g
102
- };
103
- }
104
44
  function PisellFloorMapLayoutInner(props, ref) {
105
- var className = props.className,
106
- style = props.style,
107
- items = props.items,
108
- renderItem = props.renderItem,
109
- rowKey = props.rowKey,
110
- mapLayer = props.mapLayer,
111
- cellSizeProp = props.cellSize,
112
- _props$itemUnit = props.itemUnit,
113
- itemUnit = _props$itemUnit === void 0 ? 'cell' : _props$itemUnit,
114
- _props$layoutMode = props.layoutMode,
115
- layoutMode = _props$layoutMode === void 0 ? 'free' : _props$layoutMode,
116
- gridLayout = props.gridLayout,
117
- _props$zoom = props.zoom,
118
- zoom = _props$zoom === void 0 ? {} : _props$zoom,
119
- _props$pan = props.pan,
120
- pan = _props$pan === void 0 ? {} : _props$pan,
121
- _props$controls = props.controls,
122
- controls = _props$controls === void 0 ? {} : _props$controls,
123
- _props$enableHover = props.enableHover,
124
- enableHover = _props$enableHover === void 0 ? true : _props$enableHover,
125
- onItemClick = props.onItemClick,
126
- onItemHover = props.onItemHover,
127
- onItemLeave = props.onItemLeave;
128
-
129
- /** 缩放平移库暴露的 API,由 TransformWrapper 的 render 参数注入 */
45
+ var _engineCtx$engine, _config$sceneElements, _mapLayer$boundingPad;
46
+ var layoutCtx = useFloorMapLayoutContext();
47
+ var p = mergeFloorMapLayoutPropsFromContext(props, layoutCtx);
48
+ var className = p.className,
49
+ style = p.style,
50
+ itemsProp = p.items,
51
+ renderItem = p.renderItem,
52
+ rowKey = p.rowKey,
53
+ renderItemByKind = p.renderItemByKind,
54
+ getMergedItemWrapperStyle = p.getMergedItemWrapperStyle,
55
+ mapLayer = p.mapLayer,
56
+ cellSizeProp = p.cellSize,
57
+ _p$itemUnit = p.itemUnit,
58
+ itemUnit = _p$itemUnit === void 0 ? 'cell' : _p$itemUnit,
59
+ _p$zoom = p.zoom,
60
+ zoom = _p$zoom === void 0 ? {} : _p$zoom,
61
+ _p$pan = p.pan,
62
+ pan = _p$pan === void 0 ? {} : _p$pan,
63
+ _p$controls = p.controls,
64
+ controls = _p$controls === void 0 ? {} : _p$controls,
65
+ _p$enableHover = p.enableHover,
66
+ enableHover = _p$enableHover === void 0 ? true : _p$enableHover,
67
+ onItemClick = p.onItemClick,
68
+ onItemHover = p.onItemHover,
69
+ onItemLeave = p.onItemLeave,
70
+ _p$mode = p.mode,
71
+ mode = _p$mode === void 0 ? 'read' : _p$mode,
72
+ floorMapConfigProp = p.floorMapConfig,
73
+ dataSources = p.dataSources,
74
+ onSave = p.onSave,
75
+ onDataSourceRecordSave = p.onDataSourceRecordSave,
76
+ dataSourceLabels = p.dataSourceLabels,
77
+ dataSourceFormColumns = p.dataSourceFormColumns,
78
+ dataSourceRecordForm = p.dataSourceRecordForm,
79
+ loading = p.loading,
80
+ saveError = p.saveError,
81
+ onElementRenderError = p.onElementRenderError,
82
+ _p$toolbarShowSave = p.toolbarShowSave,
83
+ toolbarShowSave = _p$toolbarShowSave === void 0 ? true : _p$toolbarShowSave,
84
+ floorMapFullscreenMode = p.floorMapFullscreenMode,
85
+ showDataSourceRecordFormBlock = p.showDataSourceRecordFormBlock;
86
+ var isFloorMapView = Boolean(floorMapConfigProp);
87
+ var contentOffsetRef = useRef({
88
+ x: 0,
89
+ y: 0
90
+ });
91
+ var mapDropLayerRef = useRef(null);
130
92
  var transformRef = useRef(null);
131
- var containerRef = useRef(null);
93
+ var edit = useFloorMapEditState({
94
+ floorMapConfigProp: floorMapConfigProp,
95
+ isFloorMapView: isFloorMapView,
96
+ itemsProp: itemsProp,
97
+ cellSizeProp: cellSizeProp,
98
+ dataSources: dataSources,
99
+ onSave: onSave,
100
+ onDataSourceRecordSave: onDataSourceRecordSave,
101
+ dataSourceFormColumns: dataSourceFormColumns,
102
+ dataSourceRecordForm: dataSourceRecordForm,
103
+ dataSourceLabels: dataSourceLabels,
104
+ layoutPrefix: PREFIX,
105
+ contentOffsetRef: contentOffsetRef,
106
+ showDataSourceRecordFormBlock: showDataSourceRecordFormBlock
107
+ });
108
+ var config = edit.config,
109
+ currentCanvasId = edit.currentCanvasId,
110
+ setCurrentCanvasId = edit.setCurrentCanvasId,
111
+ selectedId = edit.selectedId,
112
+ setSelectedId = edit.setSelectedId,
113
+ placeMode = edit.placeMode,
114
+ setPlaceMode = edit.setPlaceMode,
115
+ items = edit.items,
116
+ saving = edit.saving,
117
+ savingRecord = edit.savingRecord,
118
+ handleAddCanvas = edit.handleAddCanvas,
119
+ handleRemoveCanvas = edit.handleRemoveCanvas,
120
+ handleRenameCanvas = edit.handleRenameCanvas,
121
+ handleUpdateItem = edit.handleUpdateItem,
122
+ handleCanvasPlaceClick = edit.handleCanvasPlaceClick,
123
+ handleSave = edit.handleSave,
124
+ placeSceneElementFromPaletteDrop = edit.placeSceneElementFromPaletteDrop,
125
+ editPanelParams = edit.editPanelParams,
126
+ placeOverlayClass = edit.placeOverlayClass,
127
+ isLayoutDirty = edit.isLayoutDirty;
128
+ var canvasesForTabs = useMemo(function () {
129
+ return config ? mergeCanvasesForTabs(config) : [];
130
+ }, [config]);
131
+ var engineCtx = useEngineContext();
132
+ var engineLocale = (engineCtx === null || engineCtx === void 0 || (_engineCtx$engine = engineCtx.engine) === null || _engineCtx$engine === void 0 || (_engineCtx$engine = _engineCtx$engine.props) === null || _engineCtx$engine === void 0 ? void 0 : _engineCtx$engine.locale) || 'zh-CN';
133
+ var showReadModeCanvasTabsBar = useMemo(function () {
134
+ if (!isFloorMapView || mode !== 'read' || !config) return false;
135
+ return canvasesForTabs.filter(function (c) {
136
+ return c.enabled;
137
+ }).length > 1;
138
+ }, [isFloorMapView, mode, config, canvasesForTabs]);
139
+ var readCanvasTabsAriaLabel = useMemo(function () {
140
+ initFloorMapLayoutLocales(engineLocale);
141
+ return locales.getText('pisell-floor-map-layout.read-canvas-tabs.aria');
142
+ }, [engineLocale]);
143
+ var loadingLabel = useMemo(function () {
144
+ initFloorMapLayoutLocales(engineLocale);
145
+ return locales.getText('pisell-floor-map-layout.loading');
146
+ }, [engineLocale]);
132
147
  var cellSize = cellSizeProp !== null && cellSizeProp !== void 0 ? cellSizeProp : DEFAULT_CELL_SIZE;
133
148
  var itemGap = useMemo(function () {
134
149
  return gapToPx(mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.gap);
135
150
  }, [mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.gap]);
136
- var _useMemo = useMemo(function () {
137
- return getContentSize(items, cellSize, itemGap, itemUnit);
138
- }, [items, cellSize, itemGap, itemUnit]),
139
- contentWidth = _useMemo.contentWidth,
140
- contentHeight = _useMemo.contentHeight;
141
- var zoomConfig = useMemo(function () {
142
- var _zoom$defaultScale, _zoom$min, _zoom$max, _zoom$step;
143
- return {
144
- initialScale: (_zoom$defaultScale = zoom.defaultScale) !== null && _zoom$defaultScale !== void 0 ? _zoom$defaultScale : 1,
145
- minScale: (_zoom$min = zoom.min) !== null && _zoom$min !== void 0 ? _zoom$min : 0.5,
146
- maxScale: (_zoom$max = zoom.max) !== null && _zoom$max !== void 0 ? _zoom$max : 2,
147
- step: (_zoom$step = zoom.step) !== null && _zoom$step !== void 0 ? _zoom$step : 0.1
148
- };
149
- }, [zoom.defaultScale, zoom.min, zoom.max, zoom.step]);
150
- var _useState = useState(zoomConfig.initialScale),
151
+ var effectiveItemUnit = isFloorMapView ? 'pixel' : itemUnit;
152
+ var metrics = useFloorMapTransformMetrics({
153
+ items: items,
154
+ cellSize: cellSize,
155
+ itemGap: itemGap,
156
+ effectiveItemUnit: effectiveItemUnit,
157
+ isFloorMapView: isFloorMapView,
158
+ mode: mode,
159
+ zoom: zoom,
160
+ transformRef: transformRef,
161
+ contentOffsetRef: contentOffsetRef,
162
+ boundingPadding: mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.boundingPadding,
163
+ frameResetKey: isFloorMapView ? currentCanvasId !== null && currentCanvasId !== void 0 ? currentCanvasId : '' : undefined
164
+ });
165
+ var containerRef = metrics.containerRef,
166
+ mapAreaRef = metrics.mapAreaRef,
167
+ mapAreaSize = metrics.mapAreaSize,
168
+ contentWidth = metrics.contentWidth,
169
+ contentHeight = metrics.contentHeight,
170
+ contentOffsetX = metrics.contentOffsetX,
171
+ contentOffsetY = metrics.contentOffsetY,
172
+ initialPositionX = metrics.initialPositionX,
173
+ initialPositionY = metrics.initialPositionY,
174
+ zoomConfig = metrics.zoomConfig,
175
+ scale = metrics.scale,
176
+ setScale = metrics.setScale,
177
+ isFullscreen = metrics.isFullscreen,
178
+ toggleFullscreen = metrics.toggleFullscreen,
179
+ fitBounds = metrics.fitBounds,
180
+ lastTransformRef = metrics.lastTransformRef,
181
+ isInteractingWithElement = metrics.isInteractingWithElement,
182
+ setIsInteractingWithElement = metrics.setIsInteractingWithElement;
183
+
184
+ /** 编辑态全屏策略:toggle 可切换;locked 始终全屏顶栏且不可在组件内退出;disabled 无全屏按钮 */
185
+ var fsMode = floorMapFullscreenMode !== null && floorMapFullscreenMode !== void 0 ? floorMapFullscreenMode : 'toggle';
186
+ var useFullTopChrome = isFloorMapView && mode === 'edit' && (fsMode === 'locked' || fsMode === 'toggle' && isFullscreen);
187
+ /** 仅 toggle 时向顶栏/控件传入,避免 locked/disabled 误显全屏按钮 */
188
+ var editToggleFullscreen = fsMode === 'toggle' ? toggleFullscreen : undefined;
189
+ var viewControlsConfig = useMemo(function () {
190
+ if (!isFloorMapView || mode !== 'edit') return controls;
191
+ return _objectSpread(_objectSpread({}, controls), {}, {
192
+ showFullscreen: false,
193
+ showFitBounds: false
194
+ });
195
+ }, [isFloorMapView, mode, controls]);
196
+ var topBarExtraActions = useMemo(function () {
197
+ if (!isFloorMapView || mode !== 'edit') return null;
198
+ if (controls.showFitBounds !== true) return null;
199
+ return /*#__PURE__*/React.createElement("button", {
200
+ type: "button",
201
+ className: classNames("".concat(PREFIX, "-edit-top-bar-btn"), "".concat(PREFIX, "-edit-top-bar-btn-ghost")),
202
+ onClick: function onClick() {
203
+ return fitBounds();
204
+ },
205
+ "aria-label": "\u533A\u57DF\u5B9A\u4F4D",
206
+ title: "\u533A\u57DF\u5B9A\u4F4D"
207
+ }, "\u229E");
208
+ }, [isFloorMapView, mode, controls.showFitBounds, fitBounds]);
209
+ var _useState = useState(false),
151
210
  _useState2 = _slicedToArray(_useState, 2),
152
- scale = _useState2[0],
153
- setScale = _useState2[1];
154
- var _useState3 = useState(false),
155
- _useState4 = _slicedToArray(_useState3, 2),
156
- isFullscreen = _useState4[0],
157
- setIsFullscreen = _useState4[1];
211
+ mapPaletteDragActive = _useState2[0],
212
+ setMapPaletteDragActive = _useState2[1];
158
213
  useEffect(function () {
159
- var el = containerRef.current;
160
- if (!el) return;
161
- var onFullscreenChange = function onFullscreenChange() {
162
- return setIsFullscreen(document.fullscreenElement === el);
214
+ var clear = function clear() {
215
+ return setMapPaletteDragActive(false);
163
216
  };
164
- document.addEventListener('fullscreenchange', onFullscreenChange);
217
+ window.addEventListener('dragend', clear);
165
218
  return function () {
166
- return document.removeEventListener('fullscreenchange', onFullscreenChange);
219
+ return window.removeEventListener('dragend', clear);
167
220
  };
168
221
  }, []);
169
- var toggleFullscreen = useCallback(function () {
170
- var el = containerRef.current;
171
- if (!el) return;
172
- if (document.fullscreenElement) {
173
- var _document$exitFullscr, _document;
174
- (_document$exitFullscr = (_document = document).exitFullscreen) === null || _document$exitFullscr === void 0 || _document$exitFullscr.call(_document);
175
- } else {
176
- var _el$requestFullscreen;
177
- (_el$requestFullscreen = el.requestFullscreen) === null || _el$requestFullscreen === void 0 || _el$requestFullscreen.call(el);
178
- }
222
+ var handlePaletteDropOnCanvas = useCallback(function (e) {
223
+ e.preventDefault();
224
+ e.stopPropagation();
225
+ setMapPaletteDragActive(false);
226
+ if (!isFloorMapView || mode !== 'edit') return;
227
+ var payload = parsePaletteDragPayload(e.dataTransfer);
228
+ if (!payload) return;
229
+ var _sceneXYFromContentDr = sceneXYFromContentDropOffset(e.nativeEvent.offsetX, e.nativeEvent.offsetY, contentOffsetRef.current),
230
+ cx = _sceneXYFromContentDr.x,
231
+ cy = _sceneXYFromContentDr.y;
232
+ placeSceneElementFromPaletteDrop(cx, cy, {
233
+ type: 'scene',
234
+ elementKind: payload.elementKind,
235
+ dataSourceKey: payload.dataSourceKey,
236
+ recordId: payload.recordId
237
+ });
238
+ }, [isFloorMapView, mode, placeSceneElementFromPaletteDrop]);
239
+ var applyPaletteTouchDropInScene = useCallback(function (payload, cx, cy) {
240
+ if (!isFloorMapView || mode !== 'edit') return;
241
+ placeSceneElementFromPaletteDrop(cx, cy, {
242
+ type: 'scene',
243
+ elementKind: payload.elementKind,
244
+ dataSourceKey: payload.dataSourceKey,
245
+ recordId: payload.recordId
246
+ });
247
+ }, [isFloorMapView, mode, placeSceneElementFromPaletteDrop]);
248
+ var paletteTouchDrag = useFloorMapPaletteTouchDrag({
249
+ enabled: Boolean(isFloorMapView && mode === 'edit' && (config === null || config === void 0 ? void 0 : config.canvasUi.canCreate)),
250
+ mapDropLayerRef: mapDropLayerRef,
251
+ contentWidth: contentWidth,
252
+ contentHeight: contentHeight,
253
+ contentOffsetRef: contentOffsetRef,
254
+ setMapPaletteDragActive: setMapPaletteDragActive,
255
+ onDropInScene: applyPaletteTouchDropInScene
256
+ });
257
+ var fallbackPlaceholderRender = useCallback(function (item) {
258
+ return renderFloorMapFallbackPlaceholder(item);
179
259
  }, []);
180
- var fitBounds = useCallback(function () {
181
- var _zoom$max2;
182
- var ctx = transformRef.current;
183
- var container = containerRef.current;
184
- if (!ctx || !container) return;
185
- var wrapper = container.querySelector('.react-transform-wrapper');
186
- if (!wrapper) return;
187
- var wrapperRect = wrapper.getBoundingClientRect();
188
- var scale = Math.min(wrapperRect.width / contentWidth, wrapperRect.height / contentHeight, (_zoom$max2 = zoom.max) !== null && _zoom$max2 !== void 0 ? _zoom$max2 : 2);
189
- var x = (wrapperRect.width - contentWidth * scale) / 2;
190
- var y = (wrapperRect.height - contentHeight * scale) / 2;
191
- ctx.setTransform(x, y, scale);
192
- }, [contentWidth, contentHeight, zoom.max]);
260
+ var effectiveRenderItem = useCallback(function (item, index, options) {
261
+ var merged = item;
262
+ var kind = merged === null || merged === void 0 ? void 0 : merged.elementKind;
263
+ if (isFloorMapView && floorMapConfigProp && merged._sceneElement) {
264
+ var kc = getElementKindConfig(floorMapConfigProp, kind);
265
+ var issue = getSceneElementRenderIssue(merged._sceneElement, kc, dataSources);
266
+ if (issue) {
267
+ return renderFloorMapRenderError(issue);
268
+ }
269
+ }
270
+ if (isFloorMapView && kind && renderItemByKind !== null && renderItemByKind !== void 0 && renderItemByKind[kind]) {
271
+ try {
272
+ return renderItemByKind[kind](item, index, options);
273
+ } catch (err) {
274
+ if (merged._sceneElement) {
275
+ onElementRenderError === null || onElementRenderError === void 0 || onElementRenderError(merged._sceneElement, err);
276
+ }
277
+ return renderFloorMapRenderError(err instanceof Error ? err.message : String(err));
278
+ }
279
+ }
280
+ if (isFloorMapView && kind) {
281
+ return fallbackPlaceholderRender(merged);
282
+ }
283
+ return renderItem(item, index, options);
284
+ }, [isFloorMapView, floorMapConfigProp, dataSources, renderItemByKind, renderItem, fallbackPlaceholderRender, onElementRenderError]);
285
+ var handleItemClick = useCallback(function (item, index, e) {
286
+ if (isFloorMapView && mode === 'edit') setSelectedId(item.id);
287
+ onItemClick === null || onItemClick === void 0 || onItemClick(item, index, e);
288
+ }, [isFloorMapView, mode, onItemClick, setSelectedId]);
193
289
  useImperativeHandle(ref, function () {
194
290
  return {
195
291
  zoomIn: function zoomIn() {
@@ -204,46 +300,164 @@ function PisellFloorMapLayoutInner(props, ref) {
204
300
  var _transformRef$current3;
205
301
  return (_transformRef$current3 = transformRef.current) === null || _transformRef$current3 === void 0 ? void 0 : _transformRef$current3.resetTransform();
206
302
  },
207
- fitBounds: fitBounds
208
- };
209
- }, [fitBounds]);
210
- var controlsApi = useMemo(function () {
211
- return {
212
- zoomIn: function zoomIn() {
213
- var _transformRef$current4;
214
- return (_transformRef$current4 = transformRef.current) === null || _transformRef$current4 === void 0 ? void 0 : _transformRef$current4.zoomIn();
215
- },
216
- zoomOut: function zoomOut() {
217
- var _transformRef$current5;
218
- return (_transformRef$current5 = transformRef.current) === null || _transformRef$current5 === void 0 ? void 0 : _transformRef$current5.zoomOut();
219
- },
220
- resetTransform: function resetTransform() {
221
- var _transformRef$current6;
222
- return (_transformRef$current6 = transformRef.current) === null || _transformRef$current6 === void 0 ? void 0 : _transformRef$current6.resetTransform();
223
- },
224
303
  fitBounds: fitBounds,
225
- toggleFullscreen: toggleFullscreen
304
+ saveLayout: function saveLayout() {
305
+ return handleSave();
306
+ }
226
307
  };
227
- }, [fitBounds, toggleFullscreen]);
308
+ }, [fitBounds, handleSave]);
309
+ var showSidebar = isFloorMapView && mode === 'edit' && config && dataSources;
228
310
  return /*#__PURE__*/React.createElement("div", {
229
311
  ref: containerRef,
230
- className: classNames(PREFIX, className),
231
- style: style
312
+ className: classNames(PREFIX, className, _defineProperty(_defineProperty({}, "".concat(PREFIX, "-floor-map-view"), isFloorMapView), "".concat(PREFIX, "-mode-edit"), isFloorMapView && mode === 'edit')),
313
+ style: _objectSpread(_objectSpread({
314
+ display: 'flex',
315
+ flexDirection: 'column'
316
+ }, isFloorMapView ? {
317
+ minHeight: 0
318
+ } : {}), style)
319
+ }, isFloorMapView && mode === 'edit' && config && !useFullTopChrome && /*#__PURE__*/React.createElement(FloorMapEditTopBar, {
320
+ mode: "compact",
321
+ config: config,
322
+ canvases: canvasesForTabs,
323
+ currentCanvasId: currentCanvasId,
324
+ onTabChange: function onTabChange(id) {
325
+ setCurrentCanvasId(id);
326
+ setSelectedId(null);
327
+ },
328
+ canEditTabs: config.canvasUi.canEdit,
329
+ onAddCanvas: handleAddCanvas,
330
+ onRemoveCanvas: handleRemoveCanvas,
331
+ onRenameCanvas: handleRenameCanvas,
332
+ toggleFullscreen: editToggleFullscreen,
333
+ isFullscreen: false,
334
+ controls: controls
335
+ }), isFloorMapView && mode === 'edit' && config && useFullTopChrome && /*#__PURE__*/React.createElement(FloorMapEditTopBar, {
336
+ mode: "full",
337
+ config: config,
338
+ canvases: canvasesForTabs,
339
+ currentCanvasId: currentCanvasId,
340
+ onTabChange: function onTabChange(id) {
341
+ setCurrentCanvasId(id);
342
+ setSelectedId(null);
343
+ },
344
+ canEditTabs: config.canvasUi.canEdit,
345
+ onAddCanvas: handleAddCanvas,
346
+ onRemoveCanvas: handleRemoveCanvas,
347
+ onRenameCanvas: handleRenameCanvas,
348
+ onSave: onSave ? handleSave : undefined,
349
+ saving: saving,
350
+ saveError: saveError,
351
+ layoutDirty: isLayoutDirty,
352
+ toggleFullscreen: editToggleFullscreen,
353
+ isFullscreen: isFullscreen,
354
+ controls: controls,
355
+ extraActions: topBarExtraActions
356
+ }), showReadModeCanvasTabsBar && /*#__PURE__*/React.createElement("div", {
357
+ className: "".concat(PREFIX, "-edit-top-bar ").concat(PREFIX, "-read-canvas-tabs-bar"),
358
+ role: "toolbar",
359
+ "aria-label": readCanvasTabsAriaLabel
360
+ }, /*#__PURE__*/React.createElement("div", {
361
+ className: "".concat(PREFIX, "-edit-top-bar-tabs")
362
+ }, /*#__PURE__*/React.createElement(CanvasTabs, {
363
+ canvases: canvasesForTabs,
364
+ currentCanvasId: currentCanvasId,
365
+ onTabChange: function onTabChange(id) {
366
+ setCurrentCanvasId(id);
367
+ setSelectedId(null);
368
+ },
369
+ canEdit: false,
370
+ className: "".concat(PREFIX, "-edit-top-bar-canvas-tabs")
371
+ }))), loading && /*#__PURE__*/React.createElement("div", {
372
+ className: "".concat(PREFIX, "-loading")
373
+ }, /*#__PURE__*/React.createElement("span", null, loadingLabel)), saveError && !(isFloorMapView && mode === 'edit' && config) && /*#__PURE__*/React.createElement("div", {
374
+ className: "".concat(PREFIX, "-save-error")
375
+ }, typeof saveError === 'string' ? saveError : saveError === null || saveError === void 0 ? void 0 : saveError.message), /*#__PURE__*/React.createElement("div", {
376
+ className: showSidebar ? "".concat(PREFIX, "-edit-layout") : undefined,
377
+ style: {
378
+ flex: 1,
379
+ display: 'flex',
380
+ minHeight: 0
381
+ }
382
+ }, showSidebar && /*#__PURE__*/React.createElement(FloorMapToolbar, {
383
+ config: config,
384
+ dataSources: dataSources,
385
+ dataSourceLabels: dataSourceLabels,
386
+ canCreate: config.canvasUi.canCreate,
387
+ placeMode: placeMode,
388
+ onPlaceModeChange: setPlaceMode,
389
+ sceneElements: (_config$sceneElements = config.sceneElements) !== null && _config$sceneElements !== void 0 ? _config$sceneElements : [],
390
+ renderPreviewItem: function renderPreviewItem(item) {
391
+ return effectiveRenderItem(item, 0);
392
+ },
393
+ placementPreviewSize: {
394
+ width: 180,
395
+ height: 120
396
+ },
397
+ decorationPreviewSize: 48,
398
+ onSave: !useFullTopChrome && toolbarShowSave !== false && onSave && config.canvasUi.canEdit ? handleSave : undefined,
399
+ saving: saving,
400
+ saveError: saveError,
401
+ layoutDirty: isLayoutDirty,
402
+ onPaletteCardPointerDown: paletteTouchDrag.handlePaletteCardPointerDown,
403
+ consumeToolbarClickIfTouchDrag: paletteTouchDrag.consumeToolbarClickIfTouchDrag
404
+ }), /*#__PURE__*/React.createElement("div", {
405
+ ref: mapAreaRef,
406
+ className: showSidebar ? "".concat(PREFIX, "-map-area") : undefined,
407
+ style: {
408
+ flex: 1,
409
+ position: 'relative',
410
+ minWidth: 0,
411
+ overflow: 'hidden'
412
+ },
413
+ onDragEnter: function onDragEnter(e) {
414
+ if (!isFloorMapView || mode !== 'edit') return;
415
+ if (!isFloorMapPaletteDrag(e.dataTransfer)) return;
416
+ e.preventDefault();
417
+ e.stopPropagation();
418
+ setMapPaletteDragActive(true);
419
+ },
420
+ onDragOver: function onDragOver(e) {
421
+ if (!isFloorMapView || mode !== 'edit' || !mapPaletteDragActive) return;
422
+ e.preventDefault();
423
+ e.stopPropagation();
424
+ },
425
+ onDragLeave: function onDragLeave(e) {
426
+ var _mapAreaRef$current;
427
+ if (!mapPaletteDragActive) return;
428
+ var related = e.relatedTarget;
429
+ if (!((_mapAreaRef$current = mapAreaRef.current) !== null && _mapAreaRef$current !== void 0 && _mapAreaRef$current.contains(related))) {
430
+ setMapPaletteDragActive(false);
431
+ }
432
+ }
232
433
  }, /*#__PURE__*/React.createElement(TransformWrapper, {
434
+ key: isFloorMapView ? "fmap-".concat(currentCanvasId !== null && currentCanvasId !== void 0 ? currentCanvasId : 'na', "-bp").concat((_mapLayer$boundingPad = mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.boundingPadding) !== null && _mapLayer$boundingPad !== void 0 ? _mapLayer$boundingPad : 'd', "-z").concat(zoomConfig.initialScale) : 'fmap-layout',
435
+ centerOnInit: false,
233
436
  initialScale: zoomConfig.initialScale,
437
+ initialPositionX: initialPositionX,
438
+ initialPositionY: initialPositionY,
234
439
  minScale: zoomConfig.minScale,
235
- maxScale: zoomConfig.maxScale,
440
+ maxScale: zoomConfig.maxScale
441
+ // v3 类型定义未包含 step,库仍支持缩放步进时使用
442
+ ,
236
443
  step: zoomConfig.step,
237
444
  panning: {
238
- disabled: !pan.enabled
445
+ disabled: pan.enabled === false || isInteractingWithElement,
446
+ velocityDisabled: true
239
447
  },
240
448
  doubleClick: {
241
449
  disabled: true
242
450
  },
243
451
  onTransformed: function onTransformed(_, state) {
244
- return setScale(state.scale);
452
+ setScale(state.scale);
453
+ lastTransformRef.current = {
454
+ x: state.positionX,
455
+ y: state.positionY,
456
+ scale: state.scale
457
+ };
245
458
  }
246
459
  }, function (ctx) {
460
+ var _mapLayer$snapStep;
247
461
  transformRef.current = ctx;
248
462
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TransformComponent, {
249
463
  wrapperStyle: {
@@ -259,33 +473,91 @@ function PisellFloorMapLayoutInner(props, ref) {
259
473
  minHeight: contentHeight,
260
474
  position: 'relative',
261
475
  overflow: 'visible',
262
- backgroundColor: '#F2F4F7'
476
+ backgroundColor: '#F2F4F7',
477
+ backgroundImage: ['linear-gradient(to right, rgba(0,0,0,0.08) 1px, transparent 1px)', 'linear-gradient(to bottom, rgba(0,0,0,0.08) 1px, transparent 1px)'].join(', '),
478
+ backgroundSize: '50px 50px'
263
479
  }
264
480
  }, /*#__PURE__*/React.createElement(MapLayer, {
265
481
  config: mapLayer,
266
482
  contentWidth: contentWidth,
267
483
  contentHeight: contentHeight,
268
- cellSize: cellSize
269
- }), /*#__PURE__*/React.createElement(ItemLayer, {
484
+ cellSize: cellSize,
485
+ preferCanvasGrid: true,
486
+ pointerEventsNone: isFloorMapView && mode === 'edit'
487
+ }), isFloorMapView && mode === 'edit' ? /*#__PURE__*/React.createElement(EditableItemLayer, {
270
488
  items: items,
271
- renderItem: renderItem,
489
+ renderItem: effectiveRenderItem,
272
490
  rowKey: rowKey,
273
491
  cellSize: cellSize,
274
- itemUnit: itemUnit,
492
+ itemUnit: effectiveItemUnit,
275
493
  itemGap: itemGap,
276
494
  contentWidth: contentWidth,
277
495
  contentHeight: contentHeight,
496
+ contentOffsetX: contentOffsetX,
497
+ contentOffsetY: contentOffsetY,
498
+ selectedId: selectedId,
499
+ onSelect: setSelectedId,
500
+ onUpdateItem: handleUpdateItem,
501
+ snapStep: (_mapLayer$snapStep = mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.snapStep) !== null && _mapLayer$snapStep !== void 0 ? _mapLayer$snapStep : 0,
502
+ scale: scale,
503
+ onInteractionChange: setIsInteractingWithElement,
504
+ getMergedItemWrapperStyle: getMergedItemWrapperStyle
505
+ }) : /*#__PURE__*/React.createElement(ItemLayer, {
506
+ items: items,
507
+ renderItem: effectiveRenderItem,
508
+ rowKey: rowKey,
509
+ cellSize: cellSize,
510
+ itemUnit: effectiveItemUnit,
511
+ itemGap: itemGap,
512
+ contentWidth: contentWidth,
513
+ contentHeight: contentHeight,
514
+ contentOffsetX: contentOffsetX,
515
+ contentOffsetY: contentOffsetY,
278
516
  enableHover: enableHover,
279
- onItemClick: onItemClick,
517
+ onItemClick: handleItemClick,
280
518
  onItemHover: onItemHover,
281
- onItemLeave: onItemLeave
282
- })), /*#__PURE__*/React.createElement(ViewControls, {
283
- api: controlsApi,
284
- config: controls,
519
+ onItemLeave: onItemLeave,
520
+ getMergedItemWrapperStyle: getMergedItemWrapperStyle
521
+ }), isFloorMapView && mode === 'edit' && (placeMode === null || placeMode === void 0 ? void 0 : placeMode.type) === 'scene' && /*#__PURE__*/React.createElement("div", {
522
+ className: placeOverlayClass,
523
+ style: {
524
+ width: contentWidth,
525
+ height: contentHeight
526
+ },
527
+ onClick: handleCanvasPlaceClick
528
+ }), isFloorMapView && mode === 'edit' && /*#__PURE__*/React.createElement("div", {
529
+ ref: mapDropLayerRef,
530
+ className: classNames("".concat(PREFIX, "-map-drop-layer"), _defineProperty({}, "".concat(PREFIX, "-map-drop-layer-active"), mapPaletteDragActive)),
531
+ style: {
532
+ width: contentWidth,
533
+ height: contentHeight
534
+ },
535
+ onDragOver: function onDragOver(ev) {
536
+ ev.preventDefault();
537
+ ev.stopPropagation();
538
+ },
539
+ onDrop: handlePaletteDropOnCanvas
540
+ })), /*#__PURE__*/React.createElement(ViewControlsWithZoom, {
541
+ config: viewControlsConfig,
285
542
  scale: scale,
286
- isFullscreen: isFullscreen
287
- }));
288
- }));
543
+ isFullscreen: isFullscreen,
544
+ fitBounds: fitBounds,
545
+ toggleFullscreen: editToggleFullscreen
546
+ }), isFloorMapView && mode === 'edit' && editPanelParams && config && dataSources && /*#__PURE__*/React.createElement("div", {
547
+ className: classNames("".concat(PREFIX, "-edit-panel-wrap"), mapAreaSize.height > 0 && "".concat(PREFIX, "-edit-panel-wrap-constrained")),
548
+ style: mapAreaSize.height > 0 ? {
549
+ height: mapAreaSize.height - 32,
550
+ maxHeight: mapAreaSize.height - 32,
551
+ overflow: 'hidden',
552
+ top: 16,
553
+ transform: 'none'
554
+ } : undefined
555
+ }, /*#__PURE__*/React.createElement(FloorMapEditPanel, _extends({}, editPanelParams, {
556
+ config: config,
557
+ dataSources: dataSources,
558
+ savingRecord: savingRecord
559
+ }))));
560
+ }))));
289
561
  }
290
562
  var PisellFloorMapLayout = /*#__PURE__*/React.forwardRef(PisellFloorMapLayoutInner);
291
563
  export { PisellFloorMapLayout };