@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
@@ -0,0 +1,333 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/pisellFloorMapLayout/components/FloorMapToolbar.tsx
30
+ var FloorMapToolbar_exports = {};
31
+ __export(FloorMapToolbar_exports, {
32
+ FloorMapToolbar: () => FloorMapToolbar,
33
+ default: () => FloorMapToolbar_default
34
+ });
35
+ module.exports = __toCommonJS(FloorMapToolbar_exports);
36
+ var import_react = __toESM(require("react"));
37
+ var import_classnames = __toESM(require("classnames"));
38
+ var import_antd = require("antd");
39
+ var import_types = require("../types");
40
+ var import_floorMapElementKindUtils = require("../utils/floorMapElementKindUtils");
41
+ var import_floorMapDropUtils = require("../utils/floorMapDropUtils");
42
+ var import_FloorMapToolbar = require("./FloorMapToolbar.less");
43
+ var PREFIX = "pisell-floor-map-layout";
44
+ var DEFAULT_PLACEMENT_SIZE = { width: 180, height: 120 };
45
+ var DEFAULT_DECORATION_SIZE = 48;
46
+ function formatDataRecordOptionLabel(record) {
47
+ const name = record.name != null ? String(record.name) : "";
48
+ const status = record.status != null ? String(record.status) : "";
49
+ if (name && status) return `${name}(${status})`;
50
+ return name || String(record.id);
51
+ }
52
+ function getUnplacedRecordsForKey(dataSourceKey, dataSources, elements) {
53
+ const used = new Set(
54
+ elements.filter((e) => {
55
+ var _a;
56
+ return ((_a = e.dataBinding) == null ? void 0 : _a.dataSourceKey) === dataSourceKey;
57
+ }).map((e) => e.dataBinding.recordId)
58
+ );
59
+ const list = dataSources[dataSourceKey] ?? [];
60
+ return list.filter(
61
+ (r) => r && typeof r.id === "string" && !used.has(r.id)
62
+ );
63
+ }
64
+ function buildScenePreviewMergedItem(kind, dataSourceKey, size) {
65
+ const el = {
66
+ instanceId: `preview_${kind.value}`,
67
+ canvasId: "",
68
+ x: 0,
69
+ y: 0,
70
+ width: size.width,
71
+ height: size.height,
72
+ elementKind: kind.value,
73
+ shape: kind.defaultShape,
74
+ dataBinding: dataSourceKey && (0, import_floorMapElementKindUtils.resolveDataBindingPolicy)(kind) !== "none" ? { dataSourceKey, recordId: "" } : void 0,
75
+ ...kind.value === import_types.FLOOR_MAP_IMAGE_ELEMENT_KIND ? { imageUrl: "" } : {}
76
+ };
77
+ return {
78
+ id: el.instanceId,
79
+ instanceId: el.instanceId,
80
+ x: 0,
81
+ y: 0,
82
+ width: size.width,
83
+ height: size.height,
84
+ shape: kind.defaultShape,
85
+ elementKind: kind.value,
86
+ _sceneElement: el
87
+ };
88
+ }
89
+ var STAGE_PREVIEW_SIZE = { width: 160, height: 64 };
90
+ var IMAGE_PREVIEW_SIZE = { width: 140, height: 80 };
91
+ function FloorMapToolbar(props) {
92
+ const {
93
+ config,
94
+ dataSources,
95
+ dataSourceLabels = {},
96
+ canCreate,
97
+ placeMode,
98
+ onPlaceModeChange,
99
+ renderPreviewItem,
100
+ placementPreviewSize = DEFAULT_PLACEMENT_SIZE,
101
+ decorationPreviewSize = DEFAULT_DECORATION_SIZE,
102
+ sceneElements = [],
103
+ onSave,
104
+ saving,
105
+ saveError,
106
+ layoutDirty,
107
+ className,
108
+ onPaletteCardPointerDown,
109
+ consumeToolbarClickIfTouchDrag
110
+ } = props;
111
+ const paletteKinds = (0, import_react.useMemo)(
112
+ () => (config.elementKinds ?? []).filter((k) => k.showInPalette !== false),
113
+ [config.elementKinds]
114
+ );
115
+ const categories = (0, import_react.useMemo)(() => {
116
+ const raw = config.elementKindCategories ?? [];
117
+ const sorted = [...raw].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
118
+ return sorted.length ? sorted : [{ id: "_uncat", label: "图元", order: 0 }];
119
+ }, [config.elementKindCategories]);
120
+ const kindsByCategory = (0, import_react.useMemo)(() => {
121
+ var _a;
122
+ const map = /* @__PURE__ */ new Map();
123
+ for (const c of categories) {
124
+ map.set(c.id, []);
125
+ }
126
+ const fallbackId = ((_a = categories[0]) == null ? void 0 : _a.id) ?? "_uncat";
127
+ for (const k of paletteKinds) {
128
+ const cid = k.categoryId ?? fallbackId;
129
+ if (!map.has(cid)) map.set(cid, []);
130
+ map.get(cid).push(k);
131
+ }
132
+ return map;
133
+ }, [categories, paletteKinds]);
134
+ const handleSelectKind = (kind) => {
135
+ const policy = (0, import_floorMapElementKindUtils.resolveDataBindingPolicy)(kind);
136
+ const next = {
137
+ type: "scene",
138
+ elementKind: kind.value,
139
+ /** 不预锁单一数据源,由用户在工具栏「数据源」中选择;落点时用 allowedKeys[0] 作兜底 */
140
+ dataSourceKey: void 0,
141
+ recordId: void 0
142
+ };
143
+ const isSame = (placeMode == null ? void 0 : placeMode.type) === "scene" && placeMode.elementKind === kind.value;
144
+ onPlaceModeChange(isSame ? null : next);
145
+ };
146
+ const handleDsChange = (mode, key) => {
147
+ onPlaceModeChange({
148
+ ...mode,
149
+ dataSourceKey: key,
150
+ recordId: void 0
151
+ });
152
+ };
153
+ const handleRecordChange = (mode, recordId) => {
154
+ onPlaceModeChange({ ...mode, recordId: recordId || void 0 });
155
+ };
156
+ const cancelPlaceMode = () => onPlaceModeChange(null);
157
+ const renderKindCard = (k) => {
158
+ var _a;
159
+ const policy = (0, import_floorMapElementKindUtils.resolveDataBindingPolicy)(k);
160
+ const isStage = k.value === import_types.FLOOR_MAP_STAGE_ELEMENT_KIND;
161
+ const isImageKind = k.value === import_types.FLOOR_MAP_IMAGE_ELEMENT_KIND;
162
+ const placementLike = policy !== "none" && !isStage || isImageKind;
163
+ const size = isStage ? STAGE_PREVIEW_SIZE : placementLike ? isImageKind ? IMAGE_PREVIEW_SIZE : placementPreviewSize : {
164
+ width: decorationPreviewSize,
165
+ height: decorationPreviewSize
166
+ };
167
+ const activeDs = (placeMode == null ? void 0 : placeMode.type) === "scene" && placeMode.elementKind === k.value ? placeMode.dataSourceKey : void 0;
168
+ const item = buildScenePreviewMergedItem(k, activeDs, size);
169
+ const isActive = (placeMode == null ? void 0 : placeMode.type) === "scene" && placeMode.elementKind === k.value;
170
+ const cellW = isStage ? 92 : placementLike ? 80 : decorationPreviewSize;
171
+ const cellH = isStage ? 40 : placementLike ? 54 : decorationPreviewSize;
172
+ const previewW = isImageKind ? IMAGE_PREVIEW_SIZE.width : placementPreviewSize.width;
173
+ const previewH = isImageKind ? IMAGE_PREVIEW_SIZE.height : placementPreviewSize.height;
174
+ const placeScale = placementLike ? Math.min(cellW / previewW, cellH / previewH) : 1;
175
+ const stageScale = isStage ? Math.min(cellW / item.width, cellH / item.height, 1) : 1;
176
+ const allKeys = Object.keys(dataSources);
177
+ const allowedKeys = ((_a = k.allowedDataSourceKeys) == null ? void 0 : _a.length) ? k.allowedDataSourceKeys.filter((x) => allKeys.includes(x)) : allKeys;
178
+ const paletteDragPayload = {
179
+ elementKind: k.value,
180
+ ...(placeMode == null ? void 0 : placeMode.type) === "scene" && placeMode.elementKind === k.value ? {
181
+ dataSourceKey: placeMode.dataSourceKey,
182
+ recordId: placeMode.recordId
183
+ } : {}
184
+ };
185
+ return /* @__PURE__ */ import_react.default.createElement("div", { key: k.value, className: `${PREFIX}-toolbar-preview-card-wrap` }, /* @__PURE__ */ import_react.default.createElement(
186
+ "button",
187
+ {
188
+ type: "button",
189
+ draggable: true,
190
+ className: (0, import_classnames.default)(
191
+ `${PREFIX}-toolbar-preview-card`,
192
+ !placementLike ? `${PREFIX}-toolbar-preview-card-deco` : void 0,
193
+ { [`${PREFIX}-toolbar-preview-card-active`]: isActive }
194
+ ),
195
+ onClick: () => {
196
+ if (consumeToolbarClickIfTouchDrag == null ? void 0 : consumeToolbarClickIfTouchDrag()) return;
197
+ handleSelectKind(k);
198
+ },
199
+ onPointerDown: (e) => onPaletteCardPointerDown == null ? void 0 : onPaletteCardPointerDown(paletteDragPayload, e),
200
+ onDragStart: (e) => {
201
+ e.dataTransfer.setData(
202
+ import_floorMapDropUtils.FLOOR_MAP_PALETTE_DRAG_MIME,
203
+ JSON.stringify(paletteDragPayload)
204
+ );
205
+ e.dataTransfer.effectAllowed = "copy";
206
+ },
207
+ title: `点击后画布落点,或拖拽到画布生成「${k.label}」`
208
+ },
209
+ /* @__PURE__ */ import_react.default.createElement(
210
+ "div",
211
+ {
212
+ className: `${PREFIX}-toolbar-preview-cell`,
213
+ style: { width: cellW, height: cellH }
214
+ },
215
+ renderPreviewItem ? /* @__PURE__ */ import_react.default.createElement(
216
+ "div",
217
+ {
218
+ className: `${PREFIX}-toolbar-preview-content`,
219
+ style: placementLike ? {
220
+ width: previewW,
221
+ height: previewH,
222
+ transform: `scale(${placeScale})`,
223
+ transformOrigin: "top left"
224
+ } : isStage ? {
225
+ width: item.width,
226
+ height: item.height,
227
+ transform: `scale(${stageScale})`,
228
+ transformOrigin: "top left"
229
+ } : void 0
230
+ },
231
+ renderPreviewItem(item)
232
+ ) : /* @__PURE__ */ import_react.default.createElement("span", { className: `${PREFIX}-toolbar-preview-fallback` }, k.label)
233
+ ),
234
+ /* @__PURE__ */ import_react.default.createElement("span", { className: `${PREFIX}-toolbar-preview-card-label` }, k.label)
235
+ ), isActive && policy !== "none" && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, allowedKeys.length >= 1 && /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-record-pick` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-record-pick-label` }, "数据绑定(可选)"), /* @__PURE__ */ import_react.default.createElement(
236
+ import_antd.Select,
237
+ {
238
+ placeholder: "选择数据源",
239
+ allowClear: true,
240
+ value: placeMode.type === "scene" ? placeMode.dataSourceKey : void 0,
241
+ options: allowedKeys.map((key) => ({
242
+ value: key,
243
+ label: dataSourceLabels[key] ?? key
244
+ })),
245
+ onChange: (v) => {
246
+ if ((placeMode == null ? void 0 : placeMode.type) === "scene")
247
+ handleDsChange(placeMode, v);
248
+ },
249
+ size: "small",
250
+ style: { width: "100%" }
251
+ }
252
+ ), (() => {
253
+ const mode = (placeMode == null ? void 0 : placeMode.type) === "scene" ? placeMode : null;
254
+ const key = mode == null ? void 0 : mode.dataSourceKey;
255
+ if (!key) {
256
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-record-pick-hint` }, "选择数据源后可选绑定数据行,或直接落点占位。");
257
+ }
258
+ const unplaced = getUnplacedRecordsForKey(
259
+ key,
260
+ dataSources,
261
+ sceneElements
262
+ );
263
+ if (unplaced.length === 0) {
264
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-record-pick-hint` }, "当前数据源无未绑定记录,或列表为空;可直接在画布落点占位。");
265
+ }
266
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(
267
+ import_antd.Select,
268
+ {
269
+ placeholder: "选择要展示的记录(可选)",
270
+ allowClear: true,
271
+ value: mode == null ? void 0 : mode.recordId,
272
+ options: unplaced.map((r) => ({
273
+ value: r.id,
274
+ label: formatDataRecordOptionLabel(r)
275
+ })),
276
+ onChange: (v) => {
277
+ if (mode) handleRecordChange(mode, v);
278
+ },
279
+ size: "small",
280
+ style: { width: "100%", marginTop: 4 }
281
+ }
282
+ ), /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-record-pick-hint` }, "选中后在画布点击完成落位;留空则先占位,稍后在侧栏绑定。"));
283
+ })()), allowedKeys.length === 0 && /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-record-hint` }, "无可用数据源"), /* @__PURE__ */ import_react.default.createElement(
284
+ "button",
285
+ {
286
+ type: "button",
287
+ className: `${PREFIX}-toolbar-btn cancel-inline`,
288
+ onClick: cancelPlaceMode
289
+ },
290
+ "取消新建"
291
+ )), isActive && policy === "none" && /* @__PURE__ */ import_react.default.createElement(
292
+ "button",
293
+ {
294
+ type: "button",
295
+ className: `${PREFIX}-toolbar-btn cancel-inline`,
296
+ onClick: cancelPlaceMode
297
+ },
298
+ "取消新建"
299
+ ));
300
+ };
301
+ return /* @__PURE__ */ import_react.default.createElement(
302
+ "div",
303
+ {
304
+ className: (0, import_classnames.default)(
305
+ `${PREFIX}-toolbar`,
306
+ `${PREFIX}-toolbar-sidebar`,
307
+ className
308
+ )
309
+ },
310
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-body` }, canCreate && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, categories.map((cat) => {
311
+ const kinds = kindsByCategory.get(cat.id) ?? [];
312
+ if (!kinds.length) return null;
313
+ return /* @__PURE__ */ import_react.default.createElement("section", { key: cat.id, className: `${PREFIX}-toolbar-section` }, /* @__PURE__ */ import_react.default.createElement("h3", { className: `${PREFIX}-toolbar-section-title` }, cat.label), /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-preview-list` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-preview-group` }, kinds.map((k) => renderKindCard(k)))));
314
+ }))),
315
+ onSave && config.canvasUi.canEdit && /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-toolbar-footer` }, layoutDirty ? /* @__PURE__ */ import_react.default.createElement("span", { className: `${PREFIX}-toolbar-dirty-hint`, role: "status" }, "布局已修改,请点击「保存」持久化。") : null, saveError && /* @__PURE__ */ import_react.default.createElement("span", { className: `${PREFIX}-toolbar-error` }, typeof saveError === "string" ? saveError : saveError == null ? void 0 : saveError.message), /* @__PURE__ */ import_react.default.createElement(
316
+ "button",
317
+ {
318
+ type: "button",
319
+ className: (0, import_classnames.default)(`${PREFIX}-toolbar-btn`, "primary", {
320
+ [`${PREFIX}-toolbar-save-dirty`]: layoutDirty
321
+ }),
322
+ disabled: saving,
323
+ onClick: onSave
324
+ },
325
+ saving ? "保存中..." : "保存"
326
+ ))
327
+ );
328
+ }
329
+ var FloorMapToolbar_default = FloorMapToolbar;
330
+ // Annotate the CommonJS export names for ESM import in node:
331
+ 0 && (module.exports = {
332
+ FloorMapToolbar
333
+ });
@@ -0,0 +1,237 @@
1
+ /* 左侧侧边栏:添加数据图元 / 添加装饰(图元预览)+ 保存 */
2
+ .pisell-floor-map-layout-toolbar {
3
+ &.pisell-floor-map-layout-toolbar-sidebar {
4
+ position: relative;
5
+ width: 220px;
6
+ flex-shrink: 0;
7
+ display: flex;
8
+ flex-direction: column;
9
+ background: #fff;
10
+ border-right: 1px solid #e8e8e8;
11
+ z-index: 10;
12
+ }
13
+
14
+ &-body {
15
+ flex: 1;
16
+ min-height: 0;
17
+ overflow-y: auto;
18
+ padding: 12px 10px;
19
+ }
20
+
21
+ &-section {
22
+ margin-bottom: 16px;
23
+
24
+ &:last-of-type {
25
+ margin-bottom: 0;
26
+ }
27
+ }
28
+
29
+ &-section-title {
30
+ margin: 0 0 8px 0;
31
+ padding: 0 4px;
32
+ font-size: 13px;
33
+ font-weight: 600;
34
+ color: #262626;
35
+ line-height: 20px;
36
+ }
37
+
38
+ &-preview-list {
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 8px;
42
+ }
43
+
44
+ &-preview-group {
45
+ display: flex;
46
+ flex-direction: column;
47
+ gap: 6px;
48
+ }
49
+
50
+ &-preview-group-label {
51
+ padding: 0 4px;
52
+ font-size: 12px;
53
+ color: #8c8c8c;
54
+ line-height: 18px;
55
+ }
56
+
57
+ &-preview-card-wrap {
58
+ display: flex;
59
+ flex-direction: column;
60
+ gap: 6px;
61
+ align-items: stretch;
62
+ }
63
+
64
+ &-preview-card {
65
+ display: block;
66
+ width: 100%;
67
+ padding: 6px;
68
+ text-align: center;
69
+ background: #fafafa;
70
+ border: 1px solid #e8e8e8;
71
+ border-radius: 6px;
72
+ cursor: grab;
73
+ transition: border-color 0.2s, background 0.2s;
74
+
75
+ &:hover {
76
+ background: #f0f7ff;
77
+ border-color: #91caff;
78
+ }
79
+
80
+ &.pisell-floor-map-layout-toolbar-preview-card-active {
81
+ background: #e6f4ff;
82
+ border-color: #1677ff;
83
+ box-shadow: 0 0 0 1px #1677ff;
84
+ }
85
+
86
+ &.pisell-floor-map-layout-toolbar-preview-card-deco {
87
+ .pisell-floor-map-layout-toolbar-preview-cell {
88
+ margin: 0 auto;
89
+ }
90
+ }
91
+ }
92
+
93
+ &-preview-card-label {
94
+ display: block;
95
+ margin-top: 4px;
96
+ font-size: 12px;
97
+ color: #262626;
98
+ line-height: 18px;
99
+ }
100
+
101
+ &-preview-cell {
102
+ position: relative;
103
+ margin: 0 auto;
104
+ overflow: hidden;
105
+ border-radius: 4px;
106
+ box-sizing: border-box;
107
+ }
108
+
109
+ &-preview-content {
110
+ pointer-events: none;
111
+ }
112
+
113
+ &-preview-cell {
114
+ .pisell-floor-map-layout-toolbar-preview-content {
115
+ overflow: hidden;
116
+ }
117
+ }
118
+
119
+ &-preview-fallback {
120
+ display: inline-flex;
121
+ align-items: center;
122
+ justify-content: center;
123
+ width: 100%;
124
+ height: 100%;
125
+ min-height: 40px;
126
+ font-size: 12px;
127
+ color: #8c8c8c;
128
+ }
129
+
130
+ &-btn {
131
+ display: block;
132
+ width: 100%;
133
+ margin-top: 8px;
134
+ padding: 8px 12px;
135
+ font-size: 13px;
136
+ color: #333;
137
+ background: #f5f5f5;
138
+ border: 1px solid #d9d9d9;
139
+ border-radius: 6px;
140
+ cursor: pointer;
141
+
142
+ &:hover {
143
+ color: #1677ff;
144
+ border-color: #1677ff;
145
+ background: #e6f4ff;
146
+ }
147
+
148
+ &.cancel {
149
+ color: #8c8c8c;
150
+ margin-top: 12px;
151
+ }
152
+
153
+ &.cancel-inline {
154
+ margin-top: 0;
155
+ padding: 4px 8px;
156
+ font-size: 12px;
157
+ color: #8c8c8c;
158
+ }
159
+
160
+ &.primary {
161
+ color: #fff;
162
+ background: #1677ff;
163
+ border-color: #1677ff;
164
+
165
+ &:hover:not(:disabled) {
166
+ background: #4096ff;
167
+ border-color: #4096ff;
168
+ }
169
+
170
+ &:disabled {
171
+ opacity: 0.6;
172
+ cursor: not-allowed;
173
+ }
174
+ }
175
+ }
176
+
177
+ &-footer {
178
+ flex-shrink: 0;
179
+ padding: 12px 10px;
180
+ border-top: 1px solid #f0f0f0;
181
+ display: flex;
182
+ flex-direction: column;
183
+ gap: 8px;
184
+ }
185
+
186
+ &-dirty-hint {
187
+ font-size: 12px;
188
+ line-height: 1.45;
189
+ color: #d48806;
190
+ padding: 6px 8px;
191
+ background: #fffbe6;
192
+ border: 1px solid #ffe58f;
193
+ border-radius: 6px;
194
+ }
195
+
196
+ &-save-dirty {
197
+ box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.35);
198
+ }
199
+
200
+ &-error {
201
+ font-size: 12px;
202
+ color: #ff4d4f;
203
+ }
204
+
205
+ &-record-pick {
206
+ display: flex;
207
+ flex-direction: column;
208
+ gap: 6px;
209
+ padding: 8px;
210
+ margin-top: 4px;
211
+ background: #f5f5f5;
212
+ border-radius: 6px;
213
+ border: 1px solid #e8e8e8;
214
+ }
215
+
216
+ &-record-pick-label {
217
+ font-size: 12px;
218
+ font-weight: 600;
219
+ color: #434343;
220
+ }
221
+
222
+ &-record-pick-hint {
223
+ font-size: 11px;
224
+ color: #8c8c8c;
225
+ line-height: 1.45;
226
+ }
227
+
228
+ &-record-hint {
229
+ font-size: 11px;
230
+ color: #8c8c8c;
231
+ padding: 6px 8px;
232
+ margin-top: 4px;
233
+ line-height: 1.45;
234
+ background: #fafafa;
235
+ border-radius: 4px;
236
+ }
237
+ }
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import React from 'react';
6
6
  import type { FloorMapItemBase, FloorMapItemUnit } from '../types';
7
+ import type { CSSProperties } from 'react';
7
8
  import './ItemLayer.less';
8
9
  export interface ItemLayerProps<T extends FloorMapItemBase> {
9
10
  /** 资源列表 */
@@ -22,6 +23,10 @@ export interface ItemLayerProps<T extends FloorMapItemBase> {
22
23
  contentWidth: number;
23
24
  /** 内容区总高度(像素) */
24
25
  contentHeight: number;
26
+ /** 内容区 X 偏移(画布包围盒向左/上扩展时,图元层整体平移) */
27
+ contentOffsetX?: number;
28
+ /** 内容区 Y 偏移 */
29
+ contentOffsetY?: number;
25
30
  /** 是否启用 hover 事件 */
26
31
  enableHover?: boolean;
27
32
  /** 点击回调 */
@@ -30,6 +35,8 @@ export interface ItemLayerProps<T extends FloorMapItemBase> {
30
35
  onItemHover?: (item: T, index: number, e: React.MouseEvent<HTMLElement>) => void;
31
36
  /** hover 离开 */
32
37
  onItemLeave?: (item: T, index: number, e: React.MouseEvent<HTMLElement>) => void;
38
+ /** 每项外层容器额外样式(与定位样式合并) */
39
+ getMergedItemWrapperStyle?: (item: T, index: number) => CSSProperties | undefined;
33
40
  className?: string;
34
41
  }
35
42
  export declare function ItemLayer<T extends FloorMapItemBase>(props: ItemLayerProps<T>): JSX.Element;
@@ -39,7 +39,8 @@ var import_ItemLayer = require("./ItemLayer.less");
39
39
  var PREFIX = "pisell-floor-map-layout";
40
40
  function getItemKey(item, index, rowKey) {
41
41
  if (!rowKey) return item.id;
42
- if (typeof rowKey === "string") return String(item[rowKey] ?? item.id);
42
+ if (typeof rowKey === "string")
43
+ return String(item[rowKey] ?? item.id);
43
44
  return rowKey(item, index);
44
45
  }
45
46
  function getShapeStyle(shape = "rect") {
@@ -65,16 +66,20 @@ function ItemLayer(props) {
65
66
  itemGap = 0,
66
67
  contentWidth,
67
68
  contentHeight,
69
+ contentOffsetX = 0,
70
+ contentOffsetY = 0,
68
71
  enableHover = true,
69
72
  onItemClick,
70
73
  onItemHover,
71
74
  onItemLeave,
75
+ getMergedItemWrapperStyle,
72
76
  className
73
77
  } = props;
74
78
  const itemNodes = (0, import_react.useMemo)(() => {
75
79
  const isPixel = itemUnit === "pixel";
76
80
  const g = itemGap;
77
- return items.map((item, index) => {
81
+ const sorted = [...items].sort((a, b) => (a.zIndex ?? 0) - (b.zIndex ?? 0));
82
+ return sorted.map((item, index) => {
78
83
  let left;
79
84
  let top;
80
85
  let width;
@@ -108,7 +113,9 @@ function ItemLayer(props) {
108
113
  width,
109
114
  height,
110
115
  boxSizing: "border-box",
111
- ...shapeStyle
116
+ zIndex: item.zIndex ?? 0,
117
+ ...shapeStyle,
118
+ ...getMergedItemWrapperStyle == null ? void 0 : getMergedItemWrapperStyle(item, index)
112
119
  },
113
120
  onClick: (e) => onItemClick == null ? void 0 : onItemClick(item, index, e),
114
121
  onMouseEnter: (e) => onItemHover == null ? void 0 : onItemHover(item, index, e),
@@ -127,7 +134,8 @@ function ItemLayer(props) {
127
134
  enableHover,
128
135
  onItemClick,
129
136
  onItemHover,
130
- onItemLeave
137
+ onItemLeave,
138
+ getMergedItemWrapperStyle
131
139
  ]);
132
140
  return /* @__PURE__ */ import_react.default.createElement(
133
141
  "div",
@@ -143,7 +151,20 @@ function ItemLayer(props) {
143
151
  minHeight: contentHeight
144
152
  }
145
153
  },
146
- itemNodes
154
+ contentOffsetX !== 0 || contentOffsetY !== 0 ? /* @__PURE__ */ import_react.default.createElement(
155
+ "div",
156
+ {
157
+ style: {
158
+ position: "absolute",
159
+ left: 0,
160
+ top: 0,
161
+ width: contentWidth,
162
+ height: contentHeight,
163
+ transform: `translate(${contentOffsetX}px, ${contentOffsetY}px)`
164
+ }
165
+ },
166
+ itemNodes
167
+ ) : itemNodes
147
168
  );
148
169
  }
149
170
  var ItemLayer_default = ItemLayer;
@@ -14,6 +14,10 @@ export interface MapLayerProps {
14
14
  contentHeight?: number;
15
15
  /** 每格像素尺寸(用于网格线间距) */
16
16
  cellSize?: number;
17
+ /** 为 true 时不应用纯色背景,让画布底层网格透出 */
18
+ preferCanvasGrid?: boolean;
19
+ /** 为 true 时容器设置 pointer-events: none,空白处点击可透传到下层,供 react-zoom-pan-pinch 画布平移 */
20
+ pointerEventsNone?: boolean;
17
21
  /** 子节点(展示层会叠在上方) */
18
22
  children?: React.ReactNode;
19
23
  /** 自定义类名 */