@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
@@ -1,195 +1,289 @@
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
+ var isFloorMapView = Boolean(floorMapConfigProp);
86
+ var contentOffsetRef = useRef({
87
+ x: 0,
88
+ y: 0
89
+ });
90
+ var mapDropLayerRef = useRef(null);
130
91
  var transformRef = useRef(null);
131
- var containerRef = useRef(null);
92
+ var edit = useFloorMapEditState({
93
+ floorMapConfigProp: floorMapConfigProp,
94
+ isFloorMapView: isFloorMapView,
95
+ itemsProp: itemsProp,
96
+ cellSizeProp: cellSizeProp,
97
+ dataSources: dataSources,
98
+ onSave: onSave,
99
+ onDataSourceRecordSave: onDataSourceRecordSave,
100
+ dataSourceFormColumns: dataSourceFormColumns,
101
+ dataSourceRecordForm: dataSourceRecordForm,
102
+ dataSourceLabels: dataSourceLabels,
103
+ layoutPrefix: PREFIX,
104
+ contentOffsetRef: contentOffsetRef
105
+ });
106
+ var config = edit.config,
107
+ currentCanvasId = edit.currentCanvasId,
108
+ setCurrentCanvasId = edit.setCurrentCanvasId,
109
+ selectedId = edit.selectedId,
110
+ setSelectedId = edit.setSelectedId,
111
+ placeMode = edit.placeMode,
112
+ setPlaceMode = edit.setPlaceMode,
113
+ items = edit.items,
114
+ saving = edit.saving,
115
+ savingRecord = edit.savingRecord,
116
+ handleAddCanvas = edit.handleAddCanvas,
117
+ handleRemoveCanvas = edit.handleRemoveCanvas,
118
+ handleRenameCanvas = edit.handleRenameCanvas,
119
+ handleUpdateItem = edit.handleUpdateItem,
120
+ handleCanvasPlaceClick = edit.handleCanvasPlaceClick,
121
+ handleSave = edit.handleSave,
122
+ placeSceneElementFromPaletteDrop = edit.placeSceneElementFromPaletteDrop,
123
+ editPanelParams = edit.editPanelParams,
124
+ placeOverlayClass = edit.placeOverlayClass,
125
+ isLayoutDirty = edit.isLayoutDirty;
126
+ var canvasesForTabs = useMemo(function () {
127
+ return config ? mergeCanvasesForTabs(config) : [];
128
+ }, [config]);
129
+ var engineCtx = useEngineContext();
130
+ 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';
131
+ var showReadModeCanvasTabsBar = useMemo(function () {
132
+ if (!isFloorMapView || mode !== 'read' || !config) return false;
133
+ return canvasesForTabs.filter(function (c) {
134
+ return c.enabled;
135
+ }).length > 1;
136
+ }, [isFloorMapView, mode, config, canvasesForTabs]);
137
+ var readCanvasTabsAriaLabel = useMemo(function () {
138
+ initFloorMapLayoutLocales(engineLocale);
139
+ return locales.getText('pisell-floor-map-layout.read-canvas-tabs.aria');
140
+ }, [engineLocale]);
141
+ var loadingLabel = useMemo(function () {
142
+ initFloorMapLayoutLocales(engineLocale);
143
+ return locales.getText('pisell-floor-map-layout.loading');
144
+ }, [engineLocale]);
132
145
  var cellSize = cellSizeProp !== null && cellSizeProp !== void 0 ? cellSizeProp : DEFAULT_CELL_SIZE;
133
146
  var itemGap = useMemo(function () {
134
147
  return gapToPx(mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.gap);
135
148
  }, [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),
149
+ var effectiveItemUnit = isFloorMapView ? 'pixel' : itemUnit;
150
+ var metrics = useFloorMapTransformMetrics({
151
+ items: items,
152
+ cellSize: cellSize,
153
+ itemGap: itemGap,
154
+ effectiveItemUnit: effectiveItemUnit,
155
+ isFloorMapView: isFloorMapView,
156
+ mode: mode,
157
+ zoom: zoom,
158
+ transformRef: transformRef,
159
+ contentOffsetRef: contentOffsetRef,
160
+ boundingPadding: mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.boundingPadding,
161
+ frameResetKey: isFloorMapView ? currentCanvasId !== null && currentCanvasId !== void 0 ? currentCanvasId : '' : undefined
162
+ });
163
+ var containerRef = metrics.containerRef,
164
+ mapAreaRef = metrics.mapAreaRef,
165
+ mapAreaSize = metrics.mapAreaSize,
166
+ contentWidth = metrics.contentWidth,
167
+ contentHeight = metrics.contentHeight,
168
+ contentOffsetX = metrics.contentOffsetX,
169
+ contentOffsetY = metrics.contentOffsetY,
170
+ initialPositionX = metrics.initialPositionX,
171
+ initialPositionY = metrics.initialPositionY,
172
+ zoomConfig = metrics.zoomConfig,
173
+ scale = metrics.scale,
174
+ setScale = metrics.setScale,
175
+ isFullscreen = metrics.isFullscreen,
176
+ toggleFullscreen = metrics.toggleFullscreen,
177
+ fitBounds = metrics.fitBounds,
178
+ lastTransformRef = metrics.lastTransformRef,
179
+ isInteractingWithElement = metrics.isInteractingWithElement,
180
+ setIsInteractingWithElement = metrics.setIsInteractingWithElement;
181
+
182
+ /** 编辑态全屏策略:toggle 可切换;locked 始终全屏顶栏且不可在组件内退出;disabled 无全屏按钮 */
183
+ var fsMode = floorMapFullscreenMode !== null && floorMapFullscreenMode !== void 0 ? floorMapFullscreenMode : 'toggle';
184
+ var useFullTopChrome = isFloorMapView && mode === 'edit' && (fsMode === 'locked' || fsMode === 'toggle' && isFullscreen);
185
+ /** 仅 toggle 时向顶栏/控件传入,避免 locked/disabled 误显全屏按钮 */
186
+ var editToggleFullscreen = fsMode === 'toggle' ? toggleFullscreen : undefined;
187
+ var viewControlsConfig = useMemo(function () {
188
+ if (!isFloorMapView || mode !== 'edit') return controls;
189
+ return _objectSpread(_objectSpread({}, controls), {}, {
190
+ showFullscreen: false,
191
+ showFitBounds: false
192
+ });
193
+ }, [isFloorMapView, mode, controls]);
194
+ var topBarExtraActions = useMemo(function () {
195
+ if (!isFloorMapView || mode !== 'edit') return null;
196
+ if (controls.showFitBounds !== true) return null;
197
+ return /*#__PURE__*/React.createElement("button", {
198
+ type: "button",
199
+ className: classNames("".concat(PREFIX, "-edit-top-bar-btn"), "".concat(PREFIX, "-edit-top-bar-btn-ghost")),
200
+ onClick: function onClick() {
201
+ return fitBounds();
202
+ },
203
+ "aria-label": "\u533A\u57DF\u5B9A\u4F4D",
204
+ title: "\u533A\u57DF\u5B9A\u4F4D"
205
+ }, "\u229E");
206
+ }, [isFloorMapView, mode, controls.showFitBounds, fitBounds]);
207
+ var _useState = useState(false),
151
208
  _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];
209
+ mapPaletteDragActive = _useState2[0],
210
+ setMapPaletteDragActive = _useState2[1];
158
211
  useEffect(function () {
159
- var el = containerRef.current;
160
- if (!el) return;
161
- var onFullscreenChange = function onFullscreenChange() {
162
- return setIsFullscreen(document.fullscreenElement === el);
212
+ var clear = function clear() {
213
+ return setMapPaletteDragActive(false);
163
214
  };
164
- document.addEventListener('fullscreenchange', onFullscreenChange);
215
+ window.addEventListener('dragend', clear);
165
216
  return function () {
166
- return document.removeEventListener('fullscreenchange', onFullscreenChange);
217
+ return window.removeEventListener('dragend', clear);
167
218
  };
168
219
  }, []);
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
- }
220
+ var handlePaletteDropOnCanvas = useCallback(function (e) {
221
+ e.preventDefault();
222
+ e.stopPropagation();
223
+ setMapPaletteDragActive(false);
224
+ if (!isFloorMapView || mode !== 'edit') return;
225
+ var payload = parsePaletteDragPayload(e.dataTransfer);
226
+ if (!payload) return;
227
+ var _sceneXYFromContentDr = sceneXYFromContentDropOffset(e.nativeEvent.offsetX, e.nativeEvent.offsetY, contentOffsetRef.current),
228
+ cx = _sceneXYFromContentDr.x,
229
+ cy = _sceneXYFromContentDr.y;
230
+ placeSceneElementFromPaletteDrop(cx, cy, {
231
+ type: 'scene',
232
+ elementKind: payload.elementKind,
233
+ dataSourceKey: payload.dataSourceKey,
234
+ recordId: payload.recordId
235
+ });
236
+ }, [isFloorMapView, mode, placeSceneElementFromPaletteDrop]);
237
+ var applyPaletteTouchDropInScene = useCallback(function (payload, cx, cy) {
238
+ if (!isFloorMapView || mode !== 'edit') return;
239
+ placeSceneElementFromPaletteDrop(cx, cy, {
240
+ type: 'scene',
241
+ elementKind: payload.elementKind,
242
+ dataSourceKey: payload.dataSourceKey,
243
+ recordId: payload.recordId
244
+ });
245
+ }, [isFloorMapView, mode, placeSceneElementFromPaletteDrop]);
246
+ var paletteTouchDrag = useFloorMapPaletteTouchDrag({
247
+ enabled: Boolean(isFloorMapView && mode === 'edit' && (config === null || config === void 0 ? void 0 : config.canvasUi.canCreate)),
248
+ mapDropLayerRef: mapDropLayerRef,
249
+ contentWidth: contentWidth,
250
+ contentHeight: contentHeight,
251
+ contentOffsetRef: contentOffsetRef,
252
+ setMapPaletteDragActive: setMapPaletteDragActive,
253
+ onDropInScene: applyPaletteTouchDropInScene
254
+ });
255
+ var fallbackPlaceholderRender = useCallback(function (item) {
256
+ return renderFloorMapFallbackPlaceholder(item);
179
257
  }, []);
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]);
258
+ var effectiveRenderItem = useCallback(function (item, index, options) {
259
+ var merged = item;
260
+ var kind = merged === null || merged === void 0 ? void 0 : merged.elementKind;
261
+ if (isFloorMapView && floorMapConfigProp && merged._sceneElement) {
262
+ var kc = getElementKindConfig(floorMapConfigProp, kind);
263
+ var issue = getSceneElementRenderIssue(merged._sceneElement, kc, dataSources);
264
+ if (issue) {
265
+ return renderFloorMapRenderError(issue);
266
+ }
267
+ }
268
+ if (isFloorMapView && kind && renderItemByKind !== null && renderItemByKind !== void 0 && renderItemByKind[kind]) {
269
+ try {
270
+ return renderItemByKind[kind](item, index, options);
271
+ } catch (err) {
272
+ if (merged._sceneElement) {
273
+ onElementRenderError === null || onElementRenderError === void 0 || onElementRenderError(merged._sceneElement, err);
274
+ }
275
+ return renderFloorMapRenderError(err instanceof Error ? err.message : String(err));
276
+ }
277
+ }
278
+ if (isFloorMapView && kind) {
279
+ return fallbackPlaceholderRender(merged);
280
+ }
281
+ return renderItem(item, index, options);
282
+ }, [isFloorMapView, floorMapConfigProp, dataSources, renderItemByKind, renderItem, fallbackPlaceholderRender, onElementRenderError]);
283
+ var handleItemClick = useCallback(function (item, index, e) {
284
+ if (isFloorMapView && mode === 'edit') setSelectedId(item.id);
285
+ onItemClick === null || onItemClick === void 0 || onItemClick(item, index, e);
286
+ }, [isFloorMapView, mode, onItemClick, setSelectedId]);
193
287
  useImperativeHandle(ref, function () {
194
288
  return {
195
289
  zoomIn: function zoomIn() {
@@ -207,43 +301,158 @@ function PisellFloorMapLayoutInner(props, ref) {
207
301
  fitBounds: fitBounds
208
302
  };
209
303
  }, [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
- fitBounds: fitBounds,
225
- toggleFullscreen: toggleFullscreen
226
- };
227
- }, [fitBounds, toggleFullscreen]);
304
+ var showSidebar = isFloorMapView && mode === 'edit' && config && dataSources;
228
305
  return /*#__PURE__*/React.createElement("div", {
229
306
  ref: containerRef,
230
- className: classNames(PREFIX, className),
231
- style: style
307
+ className: classNames(PREFIX, className, _defineProperty(_defineProperty({}, "".concat(PREFIX, "-floor-map-view"), isFloorMapView), "".concat(PREFIX, "-mode-edit"), isFloorMapView && mode === 'edit')),
308
+ style: _objectSpread(_objectSpread({
309
+ display: 'flex',
310
+ flexDirection: 'column'
311
+ }, isFloorMapView ? {
312
+ minHeight: 0
313
+ } : {}), style)
314
+ }, isFloorMapView && mode === 'edit' && config && !useFullTopChrome && /*#__PURE__*/React.createElement(FloorMapEditTopBar, {
315
+ mode: "compact",
316
+ config: config,
317
+ canvases: canvasesForTabs,
318
+ currentCanvasId: currentCanvasId,
319
+ onTabChange: function onTabChange(id) {
320
+ setCurrentCanvasId(id);
321
+ setSelectedId(null);
322
+ },
323
+ canEditTabs: config.canvasUi.canEdit,
324
+ onAddCanvas: handleAddCanvas,
325
+ onRemoveCanvas: handleRemoveCanvas,
326
+ onRenameCanvas: handleRenameCanvas,
327
+ toggleFullscreen: editToggleFullscreen,
328
+ isFullscreen: false,
329
+ controls: controls
330
+ }), isFloorMapView && mode === 'edit' && config && useFullTopChrome && /*#__PURE__*/React.createElement(FloorMapEditTopBar, {
331
+ mode: "full",
332
+ config: config,
333
+ canvases: canvasesForTabs,
334
+ currentCanvasId: currentCanvasId,
335
+ onTabChange: function onTabChange(id) {
336
+ setCurrentCanvasId(id);
337
+ setSelectedId(null);
338
+ },
339
+ canEditTabs: config.canvasUi.canEdit,
340
+ onAddCanvas: handleAddCanvas,
341
+ onRemoveCanvas: handleRemoveCanvas,
342
+ onRenameCanvas: handleRenameCanvas,
343
+ onSave: onSave ? handleSave : undefined,
344
+ saving: saving,
345
+ saveError: saveError,
346
+ layoutDirty: isLayoutDirty,
347
+ toggleFullscreen: editToggleFullscreen,
348
+ isFullscreen: isFullscreen,
349
+ controls: controls,
350
+ extraActions: topBarExtraActions
351
+ }), showReadModeCanvasTabsBar && /*#__PURE__*/React.createElement("div", {
352
+ className: "".concat(PREFIX, "-edit-top-bar ").concat(PREFIX, "-read-canvas-tabs-bar"),
353
+ role: "toolbar",
354
+ "aria-label": readCanvasTabsAriaLabel
355
+ }, /*#__PURE__*/React.createElement("div", {
356
+ className: "".concat(PREFIX, "-edit-top-bar-tabs")
357
+ }, /*#__PURE__*/React.createElement(CanvasTabs, {
358
+ canvases: canvasesForTabs,
359
+ currentCanvasId: currentCanvasId,
360
+ onTabChange: function onTabChange(id) {
361
+ setCurrentCanvasId(id);
362
+ setSelectedId(null);
363
+ },
364
+ canEdit: false,
365
+ className: "".concat(PREFIX, "-edit-top-bar-canvas-tabs")
366
+ }))), loading && /*#__PURE__*/React.createElement("div", {
367
+ className: "".concat(PREFIX, "-loading")
368
+ }, /*#__PURE__*/React.createElement("span", null, loadingLabel)), saveError && !(isFloorMapView && mode === 'edit' && config) && /*#__PURE__*/React.createElement("div", {
369
+ className: "".concat(PREFIX, "-save-error")
370
+ }, typeof saveError === 'string' ? saveError : saveError === null || saveError === void 0 ? void 0 : saveError.message), /*#__PURE__*/React.createElement("div", {
371
+ className: showSidebar ? "".concat(PREFIX, "-edit-layout") : undefined,
372
+ style: {
373
+ flex: 1,
374
+ display: 'flex',
375
+ minHeight: 0
376
+ }
377
+ }, showSidebar && /*#__PURE__*/React.createElement(FloorMapToolbar, {
378
+ config: config,
379
+ dataSources: dataSources,
380
+ dataSourceLabels: dataSourceLabels,
381
+ canCreate: config.canvasUi.canCreate,
382
+ placeMode: placeMode,
383
+ onPlaceModeChange: setPlaceMode,
384
+ sceneElements: (_config$sceneElements = config.sceneElements) !== null && _config$sceneElements !== void 0 ? _config$sceneElements : [],
385
+ renderPreviewItem: function renderPreviewItem(item) {
386
+ return effectiveRenderItem(item, 0);
387
+ },
388
+ placementPreviewSize: {
389
+ width: 180,
390
+ height: 120
391
+ },
392
+ decorationPreviewSize: 48,
393
+ onSave: !useFullTopChrome && toolbarShowSave !== false && onSave && config.canvasUi.canEdit ? handleSave : undefined,
394
+ saving: saving,
395
+ saveError: saveError,
396
+ layoutDirty: isLayoutDirty,
397
+ onPaletteCardPointerDown: paletteTouchDrag.handlePaletteCardPointerDown,
398
+ consumeToolbarClickIfTouchDrag: paletteTouchDrag.consumeToolbarClickIfTouchDrag
399
+ }), /*#__PURE__*/React.createElement("div", {
400
+ ref: mapAreaRef,
401
+ className: showSidebar ? "".concat(PREFIX, "-map-area") : undefined,
402
+ style: {
403
+ flex: 1,
404
+ position: 'relative',
405
+ minWidth: 0,
406
+ overflow: 'hidden'
407
+ },
408
+ onDragEnter: function onDragEnter(e) {
409
+ if (!isFloorMapView || mode !== 'edit') return;
410
+ if (!isFloorMapPaletteDrag(e.dataTransfer)) return;
411
+ e.preventDefault();
412
+ e.stopPropagation();
413
+ setMapPaletteDragActive(true);
414
+ },
415
+ onDragOver: function onDragOver(e) {
416
+ if (!isFloorMapView || mode !== 'edit' || !mapPaletteDragActive) return;
417
+ e.preventDefault();
418
+ e.stopPropagation();
419
+ },
420
+ onDragLeave: function onDragLeave(e) {
421
+ var _mapAreaRef$current;
422
+ if (!mapPaletteDragActive) return;
423
+ var related = e.relatedTarget;
424
+ if (!((_mapAreaRef$current = mapAreaRef.current) !== null && _mapAreaRef$current !== void 0 && _mapAreaRef$current.contains(related))) {
425
+ setMapPaletteDragActive(false);
426
+ }
427
+ }
232
428
  }, /*#__PURE__*/React.createElement(TransformWrapper, {
429
+ 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',
430
+ centerOnInit: false,
233
431
  initialScale: zoomConfig.initialScale,
432
+ initialPositionX: initialPositionX,
433
+ initialPositionY: initialPositionY,
234
434
  minScale: zoomConfig.minScale,
235
- maxScale: zoomConfig.maxScale,
435
+ maxScale: zoomConfig.maxScale
436
+ // v3 类型定义未包含 step,库仍支持缩放步进时使用
437
+ ,
236
438
  step: zoomConfig.step,
237
439
  panning: {
238
- disabled: !pan.enabled
440
+ disabled: pan.enabled === false || isInteractingWithElement,
441
+ velocityDisabled: true
239
442
  },
240
443
  doubleClick: {
241
444
  disabled: true
242
445
  },
243
446
  onTransformed: function onTransformed(_, state) {
244
- return setScale(state.scale);
447
+ setScale(state.scale);
448
+ lastTransformRef.current = {
449
+ x: state.positionX,
450
+ y: state.positionY,
451
+ scale: state.scale
452
+ };
245
453
  }
246
454
  }, function (ctx) {
455
+ var _mapLayer$snapStep;
247
456
  transformRef.current = ctx;
248
457
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TransformComponent, {
249
458
  wrapperStyle: {
@@ -259,33 +468,91 @@ function PisellFloorMapLayoutInner(props, ref) {
259
468
  minHeight: contentHeight,
260
469
  position: 'relative',
261
470
  overflow: 'visible',
262
- backgroundColor: '#F2F4F7'
471
+ backgroundColor: '#F2F4F7',
472
+ 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(', '),
473
+ backgroundSize: '50px 50px'
263
474
  }
264
475
  }, /*#__PURE__*/React.createElement(MapLayer, {
265
476
  config: mapLayer,
266
477
  contentWidth: contentWidth,
267
478
  contentHeight: contentHeight,
268
- cellSize: cellSize
269
- }), /*#__PURE__*/React.createElement(ItemLayer, {
479
+ cellSize: cellSize,
480
+ preferCanvasGrid: true,
481
+ pointerEventsNone: isFloorMapView && mode === 'edit'
482
+ }), isFloorMapView && mode === 'edit' ? /*#__PURE__*/React.createElement(EditableItemLayer, {
270
483
  items: items,
271
- renderItem: renderItem,
484
+ renderItem: effectiveRenderItem,
272
485
  rowKey: rowKey,
273
486
  cellSize: cellSize,
274
- itemUnit: itemUnit,
487
+ itemUnit: effectiveItemUnit,
275
488
  itemGap: itemGap,
276
489
  contentWidth: contentWidth,
277
490
  contentHeight: contentHeight,
491
+ contentOffsetX: contentOffsetX,
492
+ contentOffsetY: contentOffsetY,
493
+ selectedId: selectedId,
494
+ onSelect: setSelectedId,
495
+ onUpdateItem: handleUpdateItem,
496
+ snapStep: (_mapLayer$snapStep = mapLayer === null || mapLayer === void 0 ? void 0 : mapLayer.snapStep) !== null && _mapLayer$snapStep !== void 0 ? _mapLayer$snapStep : 0,
497
+ scale: scale,
498
+ onInteractionChange: setIsInteractingWithElement,
499
+ getMergedItemWrapperStyle: getMergedItemWrapperStyle
500
+ }) : /*#__PURE__*/React.createElement(ItemLayer, {
501
+ items: items,
502
+ renderItem: effectiveRenderItem,
503
+ rowKey: rowKey,
504
+ cellSize: cellSize,
505
+ itemUnit: effectiveItemUnit,
506
+ itemGap: itemGap,
507
+ contentWidth: contentWidth,
508
+ contentHeight: contentHeight,
509
+ contentOffsetX: contentOffsetX,
510
+ contentOffsetY: contentOffsetY,
278
511
  enableHover: enableHover,
279
- onItemClick: onItemClick,
512
+ onItemClick: handleItemClick,
280
513
  onItemHover: onItemHover,
281
- onItemLeave: onItemLeave
282
- })), /*#__PURE__*/React.createElement(ViewControls, {
283
- api: controlsApi,
284
- config: controls,
514
+ onItemLeave: onItemLeave,
515
+ getMergedItemWrapperStyle: getMergedItemWrapperStyle
516
+ }), isFloorMapView && mode === 'edit' && (placeMode === null || placeMode === void 0 ? void 0 : placeMode.type) === 'scene' && /*#__PURE__*/React.createElement("div", {
517
+ className: placeOverlayClass,
518
+ style: {
519
+ width: contentWidth,
520
+ height: contentHeight
521
+ },
522
+ onClick: handleCanvasPlaceClick
523
+ }), isFloorMapView && mode === 'edit' && /*#__PURE__*/React.createElement("div", {
524
+ ref: mapDropLayerRef,
525
+ className: classNames("".concat(PREFIX, "-map-drop-layer"), _defineProperty({}, "".concat(PREFIX, "-map-drop-layer-active"), mapPaletteDragActive)),
526
+ style: {
527
+ width: contentWidth,
528
+ height: contentHeight
529
+ },
530
+ onDragOver: function onDragOver(ev) {
531
+ ev.preventDefault();
532
+ ev.stopPropagation();
533
+ },
534
+ onDrop: handlePaletteDropOnCanvas
535
+ })), /*#__PURE__*/React.createElement(ViewControlsWithZoom, {
536
+ config: viewControlsConfig,
285
537
  scale: scale,
286
- isFullscreen: isFullscreen
287
- }));
288
- }));
538
+ isFullscreen: isFullscreen,
539
+ fitBounds: fitBounds,
540
+ toggleFullscreen: editToggleFullscreen
541
+ }), isFloorMapView && mode === 'edit' && editPanelParams && config && dataSources && /*#__PURE__*/React.createElement("div", {
542
+ className: classNames("".concat(PREFIX, "-edit-panel-wrap"), mapAreaSize.height > 0 && "".concat(PREFIX, "-edit-panel-wrap-constrained")),
543
+ style: mapAreaSize.height > 0 ? {
544
+ height: mapAreaSize.height - 32,
545
+ maxHeight: mapAreaSize.height - 32,
546
+ overflow: 'hidden',
547
+ top: 16,
548
+ transform: 'none'
549
+ } : undefined
550
+ }, /*#__PURE__*/React.createElement(FloorMapEditPanel, _extends({}, editPanelParams, {
551
+ config: config,
552
+ dataSources: dataSources,
553
+ savingRecord: savingRecord
554
+ }))));
555
+ }))));
289
556
  }
290
557
  var PisellFloorMapLayout = /*#__PURE__*/React.forwardRef(PisellFloorMapLayoutInner);
291
558
  export { PisellFloorMapLayout };