@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,508 @@
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/FloorMapEditPanel.tsx
30
+ var FloorMapEditPanel_exports = {};
31
+ __export(FloorMapEditPanel_exports, {
32
+ FloorMapEditPanel: () => FloorMapEditPanel,
33
+ default: () => FloorMapEditPanel_default
34
+ });
35
+ module.exports = __toCommonJS(FloorMapEditPanel_exports);
36
+ var import_react = __toESM(require("react"));
37
+ var import_utils = require("@pisell/utils");
38
+ var import_classnames = __toESM(require("classnames"));
39
+ var import_icons = require("@ant-design/icons");
40
+ var import_antd = require("antd");
41
+ var import_types = require("../types");
42
+ var import_floorMapElementKindUtils = require("../utils/floorMapElementKindUtils");
43
+ var import_FloorMapDataForm = require("./FloorMapDataForm");
44
+ var import_useEngineContext = __toESM(require("../../../hooks/useEngineContext"));
45
+ var import_floorMapCanvasDisplay = require("../utils/floorMapCanvasDisplay");
46
+ var import_FloorMapEditPanel = require("./FloorMapEditPanel.less");
47
+ var PREFIX = "pisell-floor-map-layout";
48
+ var I18N_EP = "pisell-floor-map-layout.edit-panel";
49
+ function formatDataRecordOptionLabel(record) {
50
+ const name = record.name != null ? String(record.name) : "";
51
+ const status = record.status != null ? String(record.status) : "";
52
+ if (name && status) return `${name}(${status})`;
53
+ return name || String(record.id);
54
+ }
55
+ function resolveDataSourceRecordForm(content, ctx) {
56
+ if (typeof content === "function") {
57
+ return content(
58
+ ctx
59
+ );
60
+ }
61
+ return content;
62
+ }
63
+ function FloorMapEditPanel(props) {
64
+ var _a, _b, _c, _d;
65
+ const {
66
+ sceneElement,
67
+ itemId,
68
+ onUpdate,
69
+ onSaveRecord,
70
+ onClose,
71
+ onDelete,
72
+ recordFormColumns,
73
+ dataSourceRecordForm,
74
+ config,
75
+ dataSources,
76
+ savingRecord,
77
+ dataSourceLabels = {},
78
+ layoutDraftDirty,
79
+ showDataSourceRecordFormBlock: showRecordFormProp,
80
+ className
81
+ } = props;
82
+ const [form] = import_antd.Form.useForm();
83
+ const skipFormValuesChangeRef = (0, import_react.useRef)(false);
84
+ const [formHasUnappliedChanges, setFormHasUnappliedChanges] = (0, import_react.useState)(false);
85
+ const engineCtx = (0, import_useEngineContext.default)();
86
+ const engineLocale = ((_b = (_a = engineCtx == null ? void 0 : engineCtx.engine) == null ? void 0 : _a.props) == null ? void 0 : _b.locale) || "zh-CN";
87
+ (0, import_floorMapCanvasDisplay.initFloorMapLayoutLocales)(engineLocale);
88
+ const ep = (0, import_react.useMemo)(
89
+ () => ({
90
+ elementProps: import_utils.locales.getText(`${I18N_EP}.element-props`),
91
+ closeAria: import_utils.locales.getText(`${I18N_EP}.close-aria`),
92
+ hintApply: import_utils.locales.getText(`${I18N_EP}.hint-apply`),
93
+ hintSave: import_utils.locales.getText(`${I18N_EP}.hint-save`),
94
+ sectionLayout: import_utils.locales.getText(`${I18N_EP}.section-layout`),
95
+ lockOn: import_utils.locales.getText(`${I18N_EP}.lock-on`),
96
+ lockOff: import_utils.locales.getText(`${I18N_EP}.lock-off`),
97
+ labelX: import_utils.locales.getText(`${I18N_EP}.label-x`),
98
+ labelY: import_utils.locales.getText(`${I18N_EP}.label-y`),
99
+ labelZ: import_utils.locales.getText(`${I18N_EP}.label-z`),
100
+ labelWidth: import_utils.locales.getText(`${I18N_EP}.label-width`),
101
+ labelHeight: import_utils.locales.getText(`${I18N_EP}.label-height`),
102
+ labelName: import_utils.locales.getText(`${I18N_EP}.label-name`),
103
+ labelNameStage: import_utils.locales.getText(`${I18N_EP}.label-name-stage`),
104
+ phNameStage: import_utils.locales.getText(`${I18N_EP}.ph-name-stage`),
105
+ phName: import_utils.locales.getText(`${I18N_EP}.ph-name`),
106
+ labelImageUrl: import_utils.locales.getText(`${I18N_EP}.label-image-url`),
107
+ extraImageUrl: import_utils.locales.getText(`${I18N_EP}.extra-image-url`),
108
+ phHttps: import_utils.locales.getText(`${I18N_EP}.ph-https`),
109
+ labelCanvas: import_utils.locales.getText(`${I18N_EP}.label-canvas`),
110
+ apply: import_utils.locales.getText(`${I18N_EP}.apply`),
111
+ dataBinding: import_utils.locales.getText(`${I18N_EP}.data-binding`),
112
+ dataBindingNote: import_utils.locales.getText(`${I18N_EP}.data-binding-note`),
113
+ labelDataSource: import_utils.locales.getText(`${I18N_EP}.label-data-source`),
114
+ phDataSource: import_utils.locales.getText(`${I18N_EP}.ph-data-source`),
115
+ labelPickRow: import_utils.locales.getText(`${I18N_EP}.label-pick-row`),
116
+ phPickRow: import_utils.locales.getText(`${I18N_EP}.ph-pick-row`),
117
+ phNoRows: import_utils.locales.getText(`${I18N_EP}.ph-no-rows`),
118
+ hintUnbound: import_utils.locales.getText(`${I18N_EP}.hint-unbound`),
119
+ recordTitle: import_utils.locales.getText(`${I18N_EP}.record-title`),
120
+ popTitle: import_utils.locales.getText(`${I18N_EP}.pop-title`),
121
+ popDesc: import_utils.locales.getText(`${I18N_EP}.pop-desc`),
122
+ btnDelete: import_utils.locales.getText(`${I18N_EP}.btn-delete`),
123
+ btnCancel: import_utils.locales.getText(`${I18N_EP}.btn-cancel`),
124
+ btnOkDelete: import_utils.locales.getText(`${I18N_EP}.btn-ok-delete`)
125
+ }),
126
+ [engineLocale]
127
+ );
128
+ const canvasOptions = config.canvases.filter((c) => c.enabled).sort((a, b) => a.order - b.order);
129
+ const kindConfig = (0, import_floorMapElementKindUtils.getElementKindConfig)(config, sceneElement.elementKind);
130
+ const bindingPolicy = (0, import_floorMapElementKindUtils.resolveDataBindingPolicy)(kindConfig);
131
+ const allKeys = Object.keys(dataSources);
132
+ const allowedKeys = ((_c = kindConfig == null ? void 0 : kindConfig.allowedDataSourceKeys) == null ? void 0 : _c.length) ? kindConfig.allowedDataSourceKeys.filter((k) => allKeys.includes(k)) : allKeys;
133
+ const isImageKind = sceneElement.elementKind === import_types.FLOOR_MAP_IMAGE_ELEMENT_KIND;
134
+ const layoutLocked = Boolean(sceneElement.layoutTransformLocked);
135
+ const initialValues = import_react.default.useMemo(() => {
136
+ const dw = isImageKind ? 400 : 180;
137
+ const dh = isImageKind ? 240 : 120;
138
+ return {
139
+ x: sceneElement.x,
140
+ y: sceneElement.y,
141
+ name: sceneElement.name ?? "",
142
+ zIndex: sceneElement.zIndex ?? 0,
143
+ width: sceneElement.width ?? dw,
144
+ height: sceneElement.height ?? dh,
145
+ canvasId: sceneElement.canvasId,
146
+ imageUrl: sceneElement.imageUrl ?? ""
147
+ };
148
+ }, [sceneElement, isImageKind]);
149
+ import_react.default.useEffect(() => {
150
+ setFormHasUnappliedChanges(false);
151
+ }, [itemId]);
152
+ import_react.default.useEffect(() => {
153
+ skipFormValuesChangeRef.current = true;
154
+ form.setFieldsValue(initialValues);
155
+ queueMicrotask(() => {
156
+ skipFormValuesChangeRef.current = false;
157
+ setFormHasUnappliedChanges(false);
158
+ });
159
+ }, [itemId, initialValues, form]);
160
+ const handleFinish = (0, import_react.useCallback)(
161
+ (values) => {
162
+ const name = values.name != null ? String(values.name).trim() || void 0 : void 0;
163
+ const patch = {
164
+ name,
165
+ canvasId: String(values.canvasId)
166
+ };
167
+ if (isImageKind) {
168
+ const url = String(values.imageUrl ?? "").trim();
169
+ patch.imageUrl = url || void 0;
170
+ }
171
+ if (!layoutLocked) {
172
+ patch.x = Number(values.x);
173
+ patch.y = Number(values.y);
174
+ patch.zIndex = values.zIndex != null ? Number(values.zIndex) : void 0;
175
+ const w = Number(values.width);
176
+ const h = Number(values.height);
177
+ patch.width = Number.isFinite(w) ? Math.max(20, w) : void 0;
178
+ patch.height = Number.isFinite(h) ? Math.max(20, h) : void 0;
179
+ }
180
+ onUpdate(patch);
181
+ setFormHasUnappliedChanges(false);
182
+ },
183
+ [onUpdate, isImageKind, layoutLocked]
184
+ );
185
+ const binding = sceneElement.dataBinding;
186
+ const record = binding ? ((_d = dataSources[binding.dataSourceKey]) == null ? void 0 : _d.find(
187
+ (r) => r.id === binding.recordId
188
+ )) ?? {} : {};
189
+ const dataRecordBindOptions = (0, import_react.useMemo)(() => {
190
+ if (bindingPolicy === "none") return [];
191
+ const key = (binding == null ? void 0 : binding.dataSourceKey) ?? allowedKeys[0];
192
+ if (!key) return [];
193
+ const list = dataSources[key] ?? [];
194
+ if (!list.length) return [];
195
+ const usedByOther = new Set(
196
+ (config.sceneElements ?? []).filter(
197
+ (e) => {
198
+ var _a2;
199
+ return e.instanceId !== sceneElement.instanceId && ((_a2 = e.dataBinding) == null ? void 0 : _a2.dataSourceKey) === key;
200
+ }
201
+ ).map((e) => e.dataBinding.recordId)
202
+ );
203
+ return list.filter((r) => !usedByOther.has(r.id) || r.id === (binding == null ? void 0 : binding.recordId)).map((r) => ({
204
+ value: r.id,
205
+ label: formatDataRecordOptionLabel(r)
206
+ }));
207
+ }, [
208
+ bindingPolicy,
209
+ binding,
210
+ allowedKeys,
211
+ dataSources,
212
+ config.sceneElements,
213
+ sceneElement.instanceId
214
+ ]);
215
+ const hasBoundDataRecord = Boolean(
216
+ binding && (dataSources[binding.dataSourceKey] ?? []).some(
217
+ (r) => r.id === binding.recordId
218
+ )
219
+ );
220
+ const recordFormSlotRaw = binding ? dataSourceRecordForm == null ? void 0 : dataSourceRecordForm[binding.dataSourceKey] : void 0;
221
+ const hasCustomRecordForm = recordFormSlotRaw !== void 0 && recordFormSlotRaw !== null && recordFormSlotRaw !== false;
222
+ const showDataBindingSection = bindingPolicy !== "none";
223
+ const showDataSourceRecordBlock = hasBoundDataRecord && Boolean(binding) && (onSaveRecord != null || hasCustomRecordForm);
224
+ const showDataRecordEditorSection = showRecordFormProp !== false && showDataSourceRecordBlock && Boolean(binding);
225
+ const recordFormContext = (0, import_react.useMemo)(() => {
226
+ if (!binding) return null;
227
+ return {
228
+ dataSourceKey: binding.dataSourceKey,
229
+ recordId: binding.recordId,
230
+ record,
231
+ dataSources,
232
+ sceneElement,
233
+ config,
234
+ savingRecord: savingRecord ?? false,
235
+ onSaveRecord: onSaveRecord ? (newData) => onSaveRecord(binding.dataSourceKey, binding.recordId, newData) : void 0
236
+ };
237
+ }, [
238
+ binding,
239
+ record,
240
+ dataSources,
241
+ sceneElement,
242
+ config,
243
+ savingRecord,
244
+ onSaveRecord
245
+ ]);
246
+ const isStageLike = sceneElement.elementKind === import_types.FLOOR_MAP_STAGE_ELEMENT_KIND;
247
+ const toggleLayoutLock = () => {
248
+ onUpdate({
249
+ layoutTransformLocked: !sceneElement.layoutTransformLocked
250
+ });
251
+ };
252
+ const panelScrollRef = (0, import_react.useRef)(null);
253
+ const dragScrollRef = (0, import_react.useRef)({
254
+ active: false,
255
+ pointerId: -1,
256
+ startY: 0,
257
+ startScrollTop: 0
258
+ });
259
+ const isDragScrollSurface = (0, import_react.useCallback)((target) => {
260
+ if (!(target instanceof Element)) return false;
261
+ return !target.closest(
262
+ 'input,textarea,button,select,.ant-select,.ant-input,[contenteditable="true"]'
263
+ );
264
+ }, []);
265
+ const handlePanelPointerDown = (0, import_react.useCallback)(
266
+ (e) => {
267
+ if (!isDragScrollSurface(e.target)) return;
268
+ const el = panelScrollRef.current;
269
+ if (!el || el.scrollHeight <= el.clientHeight) return;
270
+ el.setPointerCapture(e.pointerId);
271
+ dragScrollRef.current = {
272
+ active: true,
273
+ pointerId: e.pointerId,
274
+ startY: e.clientY,
275
+ startScrollTop: el.scrollTop
276
+ };
277
+ },
278
+ [isDragScrollSurface]
279
+ );
280
+ const handlePanelPointerMove = (0, import_react.useCallback)(
281
+ (e) => {
282
+ const d = dragScrollRef.current;
283
+ if (!d.active || e.pointerId !== d.pointerId) return;
284
+ const el = panelScrollRef.current;
285
+ if (!el) return;
286
+ el.scrollTop = d.startScrollTop + (d.startY - e.clientY);
287
+ },
288
+ []
289
+ );
290
+ const endPanelDragScroll = (0, import_react.useCallback)(
291
+ (e) => {
292
+ var _a2;
293
+ const d = dragScrollRef.current;
294
+ if (!d.active || e.pointerId !== d.pointerId) return;
295
+ dragScrollRef.current = {
296
+ active: false,
297
+ pointerId: -1,
298
+ startY: 0,
299
+ startScrollTop: 0
300
+ };
301
+ try {
302
+ (_a2 = panelScrollRef.current) == null ? void 0 : _a2.releasePointerCapture(e.pointerId);
303
+ } catch {
304
+ }
305
+ },
306
+ []
307
+ );
308
+ return /* @__PURE__ */ import_react.default.createElement(
309
+ "div",
310
+ {
311
+ ref: panelScrollRef,
312
+ className: (0, import_classnames.default)(`${PREFIX}-edit-panel`, className),
313
+ onPointerDown: handlePanelPointerDown,
314
+ onPointerMove: handlePanelPointerMove,
315
+ onPointerUp: endPanelDragScroll,
316
+ onPointerCancel: endPanelDragScroll
317
+ },
318
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-header` }, /* @__PURE__ */ import_react.default.createElement("span", null, ep.elementProps), /* @__PURE__ */ import_react.default.createElement(
319
+ import_antd.Button,
320
+ {
321
+ type: "text",
322
+ size: "small",
323
+ className: `${PREFIX}-edit-panel-close`,
324
+ icon: /* @__PURE__ */ import_react.default.createElement(import_icons.CloseOutlined, null),
325
+ "aria-label": ep.closeAria,
326
+ onClick: onClose
327
+ }
328
+ )),
329
+ (formHasUnappliedChanges || layoutDraftDirty) && /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-hints`, role: "status" }, formHasUnappliedChanges ? /* @__PURE__ */ import_react.default.createElement("p", { className: `${PREFIX}-edit-panel-hint warn` }, ep.hintApply) : null, layoutDraftDirty ? /* @__PURE__ */ import_react.default.createElement("p", { className: `${PREFIX}-edit-panel-hint muted` }, ep.hintSave) : null),
330
+ /* @__PURE__ */ import_react.default.createElement(
331
+ import_antd.Form,
332
+ {
333
+ form,
334
+ layout: "vertical",
335
+ size: "small",
336
+ onFinish: handleFinish,
337
+ initialValues,
338
+ onValuesChange: () => {
339
+ if (skipFormValuesChangeRef.current) return;
340
+ setFormHasUnappliedChanges(true);
341
+ }
342
+ },
343
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-layout-lock-header` }, /* @__PURE__ */ import_react.default.createElement("span", { className: `${PREFIX}-edit-panel-layout-lock-title` }, ep.sectionLayout), /* @__PURE__ */ import_react.default.createElement(
344
+ import_antd.Button,
345
+ {
346
+ type: "text",
347
+ size: "small",
348
+ className: `${PREFIX}-edit-panel-layout-lock-btn`,
349
+ icon: layoutLocked ? /* @__PURE__ */ import_react.default.createElement(import_icons.LockOutlined, null) : /* @__PURE__ */ import_react.default.createElement(import_icons.UnlockOutlined, null),
350
+ "aria-pressed": layoutLocked,
351
+ onClick: toggleLayoutLock,
352
+ title: layoutLocked ? ep.lockOn : ep.lockOff
353
+ }
354
+ )),
355
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-xy-row` }, /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { name: "x", label: ep.labelX }, /* @__PURE__ */ import_react.default.createElement(
356
+ import_antd.InputNumber,
357
+ {
358
+ style: { width: "100%" },
359
+ min: 0,
360
+ disabled: layoutLocked
361
+ }
362
+ )), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { name: "y", label: ep.labelY }, /* @__PURE__ */ import_react.default.createElement(
363
+ import_antd.InputNumber,
364
+ {
365
+ style: { width: "100%" },
366
+ min: 0,
367
+ disabled: layoutLocked
368
+ }
369
+ )), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { name: "zIndex", label: ep.labelZ }, /* @__PURE__ */ import_react.default.createElement(import_antd.InputNumber, { style: { width: "100%" }, disabled: layoutLocked }))),
370
+ /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-size-row` }, /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { name: "width", label: ep.labelWidth }, /* @__PURE__ */ import_react.default.createElement(
371
+ import_antd.InputNumber,
372
+ {
373
+ style: { width: "100%" },
374
+ min: 20,
375
+ disabled: layoutLocked
376
+ }
377
+ )), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { name: "height", label: ep.labelHeight }, /* @__PURE__ */ import_react.default.createElement(
378
+ import_antd.InputNumber,
379
+ {
380
+ style: { width: "100%" },
381
+ min: 20,
382
+ disabled: layoutLocked
383
+ }
384
+ ))),
385
+ /* @__PURE__ */ import_react.default.createElement(
386
+ import_antd.Form.Item,
387
+ {
388
+ name: "name",
389
+ label: isStageLike ? ep.labelNameStage : ep.labelName
390
+ },
391
+ /* @__PURE__ */ import_react.default.createElement(
392
+ import_antd.Input,
393
+ {
394
+ placeholder: isStageLike ? ep.phNameStage : ep.phName,
395
+ allowClear: true
396
+ }
397
+ )
398
+ ),
399
+ isImageKind ? /* @__PURE__ */ import_react.default.createElement(
400
+ import_antd.Form.Item,
401
+ {
402
+ name: "imageUrl",
403
+ label: ep.labelImageUrl,
404
+ extra: ep.extraImageUrl
405
+ },
406
+ /* @__PURE__ */ import_react.default.createElement(import_antd.Input, { allowClear: true, placeholder: ep.phHttps })
407
+ ) : null,
408
+ /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { name: "canvasId", label: ep.labelCanvas }, /* @__PURE__ */ import_react.default.createElement(
409
+ import_antd.Select,
410
+ {
411
+ options: canvasOptions.map((c) => ({
412
+ value: c.id,
413
+ label: (0, import_floorMapCanvasDisplay.getFloorMapCanvasDisplayName)(c, engineLocale)
414
+ })),
415
+ allowClear: false
416
+ }
417
+ )),
418
+ /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, null, /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "primary", htmlType: "submit", size: "small" }, ep.apply))
419
+ ),
420
+ showDataBindingSection && /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record-title` }, ep.dataBinding), /* @__PURE__ */ import_react.default.createElement("p", { className: `${PREFIX}-edit-panel-record-draft-note` }, ep.dataBindingNote), allowedKeys.length >= 1 ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record-bind` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record-bind-label` }, ep.labelDataSource), /* @__PURE__ */ import_react.default.createElement(
421
+ import_antd.Select,
422
+ {
423
+ size: "small",
424
+ style: { width: "100%" },
425
+ placeholder: ep.phDataSource,
426
+ value: binding == null ? void 0 : binding.dataSourceKey,
427
+ options: allowedKeys.map((k) => ({
428
+ value: k,
429
+ label: dataSourceLabels[k] ?? k
430
+ })),
431
+ onChange: (key) => {
432
+ if (!key && bindingPolicy === "optional") {
433
+ onUpdate({ dataBinding: void 0 });
434
+ return;
435
+ }
436
+ if (!key) return;
437
+ onUpdate({
438
+ dataBinding: {
439
+ dataSourceKey: key,
440
+ recordId: (binding == null ? void 0 : binding.dataSourceKey) === key ? binding.recordId : ""
441
+ }
442
+ });
443
+ },
444
+ allowClear: bindingPolicy === "optional"
445
+ }
446
+ )) : null, allowedKeys.length >= 1 && /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record-bind` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record-bind-label` }, ep.labelPickRow), /* @__PURE__ */ import_react.default.createElement(
447
+ import_antd.Select,
448
+ {
449
+ size: "small",
450
+ placeholder: dataRecordBindOptions.length ? ep.phPickRow : ep.phNoRows,
451
+ style: { width: "100%" },
452
+ value: hasBoundDataRecord ? binding == null ? void 0 : binding.recordId : void 0,
453
+ allowClear: bindingPolicy === "optional",
454
+ options: dataRecordBindOptions,
455
+ onChange: (newId) => {
456
+ const key = (binding == null ? void 0 : binding.dataSourceKey) ?? allowedKeys[0];
457
+ if (!key) return;
458
+ if (!newId) {
459
+ onUpdate({ dataBinding: void 0 });
460
+ return;
461
+ }
462
+ const row = (dataSources[key] ?? []).find(
463
+ (r) => r.id === newId
464
+ );
465
+ onUpdate({
466
+ dataBinding: {
467
+ dataSourceKey: key,
468
+ recordId: newId
469
+ },
470
+ name: row ? String(row.name ?? newId) : void 0
471
+ });
472
+ }
473
+ }
474
+ ), !hasBoundDataRecord && /* @__PURE__ */ import_react.default.createElement("p", { className: `${PREFIX}-edit-panel-record-bind-hint` }, ep.hintUnbound))),
475
+ showDataRecordEditorSection && binding && /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record` }, /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record-title` }, ep.recordTitle), hasCustomRecordForm && recordFormContext && recordFormSlotRaw != null ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-record-custom` }, resolveDataSourceRecordForm(
476
+ recordFormSlotRaw,
477
+ recordFormContext
478
+ )) : null, !hasCustomRecordForm && onSaveRecord ? /* @__PURE__ */ import_react.default.createElement(
479
+ import_FloorMapDataForm.FloorMapDataForm,
480
+ {
481
+ dataSourceKey: binding.dataSourceKey,
482
+ recordId: binding.recordId,
483
+ record,
484
+ dataSources,
485
+ onSave: onSaveRecord,
486
+ saving: savingRecord,
487
+ columns: recordFormColumns == null ? void 0 : recordFormColumns[binding.dataSourceKey]
488
+ }
489
+ ) : null),
490
+ config.canvasUi.canEdit && onDelete ? /* @__PURE__ */ import_react.default.createElement("div", { className: `${PREFIX}-edit-panel-footer` }, /* @__PURE__ */ import_react.default.createElement(
491
+ import_antd.Popconfirm,
492
+ {
493
+ title: ep.popTitle,
494
+ description: ep.popDesc,
495
+ onConfirm: onDelete,
496
+ okText: ep.btnOkDelete,
497
+ cancelText: ep.btnCancel,
498
+ okButtonProps: { danger: true }
499
+ },
500
+ /* @__PURE__ */ import_react.default.createElement(import_antd.Button, { type: "default", danger: true, block: true, size: "small" }, ep.btnDelete)
501
+ )) : null
502
+ );
503
+ }
504
+ var FloorMapEditPanel_default = FloorMapEditPanel;
505
+ // Annotate the CommonJS export names for ESM import in node:
506
+ 0 && (module.exports = {
507
+ FloorMapEditPanel
508
+ });
@@ -0,0 +1,154 @@
1
+ .pisell-floor-map-layout-edit-panel {
2
+ width: 280px;
3
+ padding: 12px;
4
+ background: #fff;
5
+ border: 1px solid #e8e8e8;
6
+ border-radius: 8px;
7
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
8
+ max-height: 80vh;
9
+ overflow-y: auto;
10
+ touch-action: pan-y;
11
+
12
+ &-header {
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: space-between;
16
+ gap: 8px;
17
+ margin-bottom: 12px;
18
+ font-weight: 500;
19
+ }
20
+
21
+ &-close {
22
+ flex-shrink: 0;
23
+ color: rgba(0, 0, 0, 0.45);
24
+
25
+ &:hover {
26
+ color: rgba(0, 0, 0, 0.88);
27
+ }
28
+ }
29
+
30
+ &-footer {
31
+ margin-top: 16px;
32
+ padding-top: 16px;
33
+ border-top: 1px solid #f0f0f0;
34
+ }
35
+
36
+ &-record-custom {
37
+ margin-top: 8px;
38
+ }
39
+
40
+ &-layout-lock-header {
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: space-between;
44
+ gap: 8px;
45
+ margin-bottom: 8px;
46
+ }
47
+
48
+ &-layout-lock-title {
49
+ font-size: 12px;
50
+ font-weight: 600;
51
+ color: #434343;
52
+ }
53
+
54
+ &-layout-lock-btn {
55
+ flex-shrink: 0;
56
+ color: rgba(0, 0, 0, 0.55);
57
+ }
58
+
59
+ /* X、Y、层级 同一行 */
60
+
61
+ &-xy-row {
62
+ display: flex;
63
+ gap: 8px;
64
+ align-items: flex-start;
65
+
66
+ .ant-form-item {
67
+ flex: 1;
68
+ min-width: 0;
69
+ }
70
+ }
71
+
72
+ &-size-row {
73
+ display: flex;
74
+ gap: 8px;
75
+ align-items: flex-start;
76
+ margin-bottom: 8px;
77
+
78
+ .ant-form-item {
79
+ flex: 1;
80
+ min-width: 0;
81
+ }
82
+ }
83
+
84
+ &-record-bind {
85
+ margin-bottom: 12px;
86
+ }
87
+
88
+ &-record-bind-label {
89
+ font-size: 12px;
90
+ font-weight: 600;
91
+ color: #434343;
92
+ margin-bottom: 6px;
93
+ }
94
+
95
+ &-record-bind-hint {
96
+ margin: 8px 0 0;
97
+ font-size: 12px;
98
+ color: #8c8c8c;
99
+ line-height: 1.5;
100
+ }
101
+
102
+ &-hints {
103
+ margin-bottom: 10px;
104
+ }
105
+
106
+ &-hint {
107
+ margin: 0 0 6px;
108
+ font-size: 12px;
109
+ line-height: 1.45;
110
+
111
+ &:last-child {
112
+ margin-bottom: 0;
113
+ }
114
+
115
+ &.warn {
116
+ color: #ad6800;
117
+ padding: 6px 8px;
118
+ background: #fffbe6;
119
+ border-radius: 6px;
120
+ border: 1px solid #ffe58f;
121
+ }
122
+
123
+ &.muted {
124
+ margin-top: 4px;
125
+ color: #595959;
126
+ }
127
+ }
128
+
129
+ &-record-draft-note {
130
+ margin: 0 0 10px;
131
+ font-size: 11px;
132
+ color: #8c8c8c;
133
+ line-height: 1.45;
134
+ }
135
+ }
136
+
137
+ /* 父 wrap 根据画布限制高度时,面板填满 wrap 并内部滚动 */
138
+ .pisell-floor-map-layout-edit-panel-wrap-constrained .pisell-floor-map-layout-edit-panel {
139
+ height: 100%;
140
+ max-height: 100%;
141
+ box-sizing: border-box;
142
+
143
+ &-record {
144
+ margin-top: 16px;
145
+ padding-top: 16px;
146
+ border-top: 1px solid #f0f0f0;
147
+ }
148
+
149
+ &-record-title {
150
+ font-size: 14px;
151
+ font-weight: 500;
152
+ margin-bottom: 8px;
153
+ }
154
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * FloorMapEditTopBar - 编辑态顶栏
3
+ * - `mode="compact"`:画布 Tab + 全屏入口(非全屏时;保存等在侧栏)
4
+ * - `mode="full"`:画布 Tab + 保存 + 全屏退出 + 扩展操作(全屏时)
5
+ */
6
+ import React from 'react';
7
+ import type { CanvasTabsProps } from './CanvasTabs';
8
+ import type { FloorMapControlsConfig, FloorMapViewConfig } from '../types';
9
+ import './FloorMapEditTopBar.less';
10
+ export declare type FloorMapEditTopBarMode = 'full' | 'compact';
11
+ export interface FloorMapEditTopBarProps {
12
+ /** full:全屏时的完整顶栏;compact:非全屏时 Tab + 全屏入口 */
13
+ mode?: FloorMapEditTopBarMode;
14
+ config: FloorMapViewConfig;
15
+ canvases: CanvasTabsProps['canvases'];
16
+ currentCanvasId: CanvasTabsProps['currentCanvasId'];
17
+ onTabChange: CanvasTabsProps['onTabChange'];
18
+ canEditTabs?: CanvasTabsProps['canEdit'];
19
+ onAddCanvas?: CanvasTabsProps['onAddCanvas'];
20
+ onRemoveCanvas?: CanvasTabsProps['onRemoveCanvas'];
21
+ onRenameCanvas?: CanvasTabsProps['onRenameCanvas'];
22
+ onSave?: () => void;
23
+ saving?: boolean;
24
+ saveError?: Error | string;
25
+ layoutDirty?: boolean;
26
+ toggleFullscreen?: () => void;
27
+ isFullscreen?: boolean;
28
+ controls?: FloorMapControlsConfig;
29
+ /** 顶栏右侧扩展(如「区域定位」等),仅 full 模式 */
30
+ extraActions?: React.ReactNode;
31
+ className?: string;
32
+ }
33
+ export declare function FloorMapEditTopBar(props: FloorMapEditTopBarProps): JSX.Element;
34
+ export default FloorMapEditTopBar;