@pisell/materials 6.11.42 → 6.11.44
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.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/preview.js +8 -8
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +18 -18
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +18 -18
- package/es/components/Pagination/index.d.ts +0 -1
- package/es/components/PisellCards/components/PisellImageCard/PisellImageCard.d.ts +0 -1
- package/es/components/PisellFields/index.d.ts +0 -1
- package/es/components/PisellMetrics/index.d.ts +0 -1
- package/es/components/cardPro/index.d.ts +1 -0
- package/es/components/colorPicker/index.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceForm/formItem.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
- package/es/components/dataSourceComponents/dataSourceShow/dataSourceImage/index.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceShow/dataSourceQRCode/index.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceTable/filter/utils.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +2 -3
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +3 -3
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +0 -1
- package/es/components/dataSourceComponents/dataSourceWrapper/index.d.ts +0 -1
- package/es/components/dataSourceComponents/fields/Input.Json/ReadPretty.d.ts +0 -1
- package/es/components/dataSourceComponents/fields/Input.Password/ReadPretty.d.ts +0 -1
- package/es/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -2
- package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -2
- package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -2
- package/es/components/dataSourceComponents/fields/Upload/ReadPretty.d.ts +0 -1
- package/es/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/index.d.ts +16 -17
- package/es/components/date-picker/datePickerCpt.d.ts +0 -1
- package/es/components/date-picker/index.d.ts +0 -1
- package/es/components/drag-sort-tree/TreeItem/index.d.ts +1 -0
- package/es/components/filter/components/FilterItem/index.js +3 -1
- package/es/components/filter/components/QuickFilter/index.js +3 -2
- package/es/components/filter/components/items/index.d.ts +0 -1
- package/es/components/filter/components/items/text/Editor/index.d.ts +0 -1
- package/es/components/filter/components/items/text/Preview/index.d.ts +0 -1
- package/es/components/filter/components/items/text/index.d.ts +0 -1
- package/es/components/filter/index.d.ts +0 -1
- package/es/components/list/index.d.ts +0 -1
- package/es/components/lowCodePage/index.d.ts +0 -1
- package/es/components/pisellAdjustPrice/PisellAdjustPriceInputNumber.d.ts +0 -1
- package/es/components/pisellDataSourceContainer/PisellDataSourceContainer.d.ts +0 -1
- package/es/components/pisellDataSourceContainer/hooks/useDataSourceKey.d.ts +2 -3
- package/es/components/pisellDatePicker/datePickerCpt.d.ts +1 -0
- package/es/components/pisellFilter/index.d.ts +0 -1
- package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +175 -24
- package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.less +22 -0
- package/es/components/pisellFloorMapLayout/components/FigmaTableCard.d.ts +2 -2
- package/es/components/pisellFloorMapLayout/components/FigmaTableCard.js +268 -103
- package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +40 -4
- package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.d.ts +22 -0
- package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.js +138 -12
- package/es/components/pisellFloorMapLayout/components/FloorMapEditTopBar.less +9 -1
- package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.js +65 -4
- package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.less +97 -4
- package/es/components/pisellFloorMapLayout/components/HistoryIcons.d.ts +39 -0
- package/es/components/pisellFloorMapLayout/components/HistoryIcons.js +75 -0
- package/es/components/pisellFloorMapLayout/components/ItemLayer.js +14 -1
- package/es/components/pisellFloorMapLayout/components/ViewControls.d.ts +9 -0
- package/es/components/pisellFloorMapLayout/components/ViewControls.js +96 -12
- package/es/components/pisellFloorMapLayout/components/ViewControls.less +224 -21
- package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +6 -0
- package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +3 -0
- package/es/components/pisellFloorMapLayout/floorMapLayoutConstants.d.ts +4 -0
- package/es/components/pisellFloorMapLayout/floorMapLayoutConstants.js +4 -0
- package/es/components/pisellFloorMapLayout/hooks/floorMapViewportPersistence.d.ts +25 -0
- package/es/components/pisellFloorMapLayout/hooks/floorMapViewportPersistence.js +68 -0
- package/es/components/pisellFloorMapLayout/hooks/useDraftConfigHistory.d.ts +18 -0
- package/es/components/pisellFloorMapLayout/hooks/useDraftConfigHistory.js +104 -0
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +5 -0
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +121 -34
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +23 -1
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +345 -29
- package/es/components/pisellFloorMapLayout/index.d.ts +1 -0
- package/es/components/pisellFloorMapLayout/index.js +1 -0
- package/es/components/pisellFloorMapLayout/locales-ja.d.ts +20 -0
- package/es/components/pisellFloorMapLayout/locales-ja.js +21 -1
- package/es/components/pisellFloorMapLayout/locales-pt.d.ts +20 -0
- package/es/components/pisellFloorMapLayout/locales-pt.js +21 -1
- package/es/components/pisellFloorMapLayout/locales.d.ts +100 -0
- package/es/components/pisellFloorMapLayout/locales.js +63 -3
- package/es/components/pisellFloorMapLayout/types.d.ts +37 -0
- package/es/components/pisellFloorMapLayout/utils/floorMapElementNameAsTitle.d.ts +50 -0
- package/es/components/pisellFloorMapLayout/utils/floorMapElementNameAsTitle.js +74 -0
- package/es/components/pisellGridPro/ToolBar/index.less +5 -4
- package/es/components/pisellInput/components/BankCard/index.d.ts +1 -0
- package/es/components/pisellInput/components/SecurityCode/index.d.ts +1 -0
- package/es/components/pisellLoading/index.d.ts +0 -1
- package/es/components/pisellModal/components/IpadModal/index.d.ts +0 -1
- package/es/components/pisellModal/components/MobileModal/index.d.ts +0 -1
- package/es/components/pisellModal/components/index.d.ts +0 -1
- package/es/components/pisellRecordBoard/PisellRecordBoard.js +9 -3
- package/es/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +1 -1
- package/es/components/pisellRecordBoard/shellFrame/ColumnSetting/index.js +2 -1
- package/es/components/pisellRecordBoard/shellFrame/Pagination/index.js +9 -2
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +99 -101
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarConstants.d.ts +8 -0
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarConstants.js +12 -0
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarI18n.d.ts +13 -0
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarI18n.js +66 -0
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +176 -10
- package/es/components/pisellRecordBoard/shellFrame/ToolBarQuickFilter/index.js +20 -2
- package/es/components/pisellRecordBoard/shellFrame/index.d.ts +6 -0
- package/es/components/pisellRecordBoard/shellFrame/index.js +3 -1
- package/es/components/pisellRecordBoard/types.d.ts +20 -1
- package/es/components/pisellShellFrame/PisellShellFrame.js +4 -1
- package/es/components/pisellShellFrame/PisellShellFrame.less +13 -0
- package/es/components/pisellShellFrame/types.d.ts +6 -0
- package/es/components/pisellTimeNavigator/PisellTimeNavigator.js +139 -29
- package/es/components/pisellTimeNavigator/PisellTimeNavigator.less +126 -13
- package/es/components/pisellTimeNavigator/components/CursorLayer.d.ts +3 -1
- package/es/components/pisellTimeNavigator/components/CursorLayer.js +3 -0
- package/es/components/pisellTimeNavigator/components/GestureLayer.d.ts +9 -1
- package/es/components/pisellTimeNavigator/components/GestureLayer.js +11 -4
- package/es/components/pisellTimeNavigator/timeNavigatorConstants.d.ts +20 -0
- package/es/components/pisellTimeNavigator/timeNavigatorConstants.js +27 -0
- package/es/components/pisellTooltip/index.d.ts +1 -0
- package/es/components/productCard/components/Action/index.d.ts +1 -0
- package/es/components/productCard/components/AmountFooter/index.d.ts +0 -1
- package/es/components/productCard/components/MultiDay/index.d.ts +0 -1
- package/es/components/productCard/components/Note/index.d.ts +0 -1
- package/es/components/productCard/components/Packages/components/collapsibleList/utils.d.ts +0 -1
- package/es/components/productCard/components/Packages/components/options/index.d.ts +0 -1
- package/es/components/productCard/components/Packages/index.d.ts +0 -1
- package/es/components/productCard/components/Time/components/SelectResource/index.d.ts +0 -1
- package/es/components/productCard/components/Time/index.d.ts +0 -1
- package/es/components/qrcode/index.d.ts +0 -1
- package/es/components/table/Actions/component/ColumnsSetting/index.d.ts +0 -1
- package/es/components/table/Actions/component/ExportImport/index.d.ts +0 -1
- package/es/components/table/Actions/component/GallerySetting/index.d.ts +0 -1
- package/es/components/table/Actions/component/Group/index.d.ts +0 -1
- package/es/components/table/Actions/index.d.ts +0 -1
- package/es/components/table/BasicTable/index.d.ts +0 -1
- package/es/components/table/Gallery/components/GalleryItem/components/Cover/index.d.ts +0 -1
- package/es/components/table/Gallery/components/GalleryItem/components/RenderFields/index.d.ts +0 -1
- package/es/components/table/Gallery/components/GalleryItem/components/Title/index.d.ts +0 -1
- package/es/components/table/Gallery/components/VirtualGrid/useGapSize.d.ts +2 -2
- package/es/components/table/Table/SelectField/index.d.ts +0 -1
- package/es/components/table/Table/fields/date/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/date/index.d.ts +0 -1
- package/es/components/table/Table/fields/image/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/index.d.ts +0 -1
- package/es/components/table/Table/fields/link/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/number/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/number/index.d.ts +0 -1
- package/es/components/table/Table/fields/numberRange/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/numberRange/index.d.ts +0 -1
- package/es/components/table/Table/fields/oldRangePicker/index.d.ts +0 -1
- package/es/components/table/Table/fields/pSwitch/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/rangePicker/index.d.ts +0 -1
- package/es/components/table/Table/fields/search/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/search/index.d.ts +0 -1
- package/es/components/table/Table/fields/select/filterUtil/index.d.ts +1 -1
- package/es/components/table/Table/fields/select/index.d.ts +0 -1
- package/es/components/table/Table/fields/text/Show/index.d.ts +0 -1
- package/es/components/table/Table/fields/text/index.d.ts +0 -1
- package/es/components/table/Table/fields/treeSelect/filterUtil/index.d.ts +1 -1
- package/es/components/table/Table/fields/treeSelect/index.d.ts +0 -1
- package/es/components/table/Table/tableConfig/SortRow/index.d.ts +0 -1
- package/es/components/table/Table/tableConfig/summary/index.d.ts +0 -1
- package/es/components/table/Table/utils.d.ts +1 -1
- package/es/components/table/View/index.d.ts +0 -1
- package/es/components/versionSelect/index.d.ts +0 -1
- package/es/index.d.ts +8 -1
- package/es/index.js +8 -1
- package/es/locales/en-US.d.ts +2 -0
- package/es/locales/en-US.js +2 -0
- package/es/locales/ja.d.ts +2 -0
- package/es/locales/ja.js +2 -0
- package/es/locales/pt.d.ts +2 -0
- package/es/locales/pt.js +2 -0
- package/es/locales/zh-CN.d.ts +2 -0
- package/es/locales/zh-CN.js +2 -0
- package/es/locales/zh-TW.d.ts +2 -0
- package/es/locales/zh-TW.js +2 -0
- package/es/utils/index.d.ts +1 -1
- package/es/utils/platform.d.ts +1 -1
- package/lib/components/Pagination/index.d.ts +0 -1
- package/lib/components/PisellCards/components/PisellImageCard/PisellImageCard.d.ts +0 -1
- package/lib/components/PisellFields/index.d.ts +0 -1
- package/lib/components/PisellMetrics/index.d.ts +0 -1
- package/lib/components/cardPro/index.d.ts +1 -0
- package/lib/components/colorPicker/index.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceForm/formItem.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
- package/lib/components/dataSourceComponents/dataSourceShow/dataSourceImage/index.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceShow/dataSourceQRCode/index.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceTable/filter/index.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceTable/filter/utils.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useDataSourceKey.d.ts +2 -3
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +3 -3
- package/lib/components/dataSourceComponents/dataSourceTable/hooks/useTableQuery.d.ts +0 -1
- package/lib/components/dataSourceComponents/dataSourceWrapper/index.d.ts +0 -1
- package/lib/components/dataSourceComponents/fields/Input.Json/ReadPretty.d.ts +0 -1
- package/lib/components/dataSourceComponents/fields/Input.Password/ReadPretty.d.ts +0 -1
- package/lib/components/dataSourceComponents/fields/Input.Subdomain/index.d.ts +1 -1
- package/lib/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -2
- package/lib/components/dataSourceComponents/fields/Select/index.d.ts +1 -2
- package/lib/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -2
- package/lib/components/dataSourceComponents/fields/Upload/ReadPretty.d.ts +0 -1
- package/lib/components/dataSourceComponents/fields/Upload/utils.d.ts +1 -1
- package/lib/components/dataSourceComponents/fields/index.d.ts +16 -17
- package/lib/components/date-picker/datePickerCpt.d.ts +0 -1
- package/lib/components/date-picker/index.d.ts +0 -1
- package/lib/components/drag-sort-tree/TreeItem/index.d.ts +1 -0
- package/lib/components/filter/components/FilterItem/index.js +2 -1
- package/lib/components/filter/components/QuickFilter/index.js +3 -2
- package/lib/components/filter/components/items/index.d.ts +0 -1
- package/lib/components/filter/components/items/text/Editor/index.d.ts +0 -1
- package/lib/components/filter/components/items/text/Preview/index.d.ts +0 -1
- package/lib/components/filter/components/items/text/index.d.ts +0 -1
- package/lib/components/filter/index.d.ts +0 -1
- package/lib/components/list/index.d.ts +0 -1
- package/lib/components/lowCodePage/index.d.ts +0 -1
- package/lib/components/pisellAdjustPrice/PisellAdjustPriceInputNumber.d.ts +0 -1
- package/lib/components/pisellDataSourceContainer/PisellDataSourceContainer.d.ts +0 -1
- package/lib/components/pisellDataSourceContainer/hooks/useDataSourceKey.d.ts +2 -3
- package/lib/components/pisellDatePicker/datePickerCpt.d.ts +1 -0
- package/lib/components/pisellFilter/index.d.ts +0 -1
- package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +141 -44
- package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.less +22 -0
- package/lib/components/pisellFloorMapLayout/components/FigmaTableCard.d.ts +2 -2
- package/lib/components/pisellFloorMapLayout/components/FigmaTableCard.js +213 -94
- package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +41 -2
- package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.d.ts +22 -0
- package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.js +128 -12
- package/lib/components/pisellFloorMapLayout/components/FloorMapEditTopBar.less +9 -1
- package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.js +53 -5
- package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.less +97 -4
- package/lib/components/pisellFloorMapLayout/components/HistoryIcons.d.ts +39 -0
- package/lib/components/pisellFloorMapLayout/components/HistoryIcons.js +71 -0
- package/lib/components/pisellFloorMapLayout/components/ItemLayer.js +2 -1
- package/lib/components/pisellFloorMapLayout/components/ViewControls.d.ts +9 -0
- package/lib/components/pisellFloorMapLayout/components/ViewControls.js +158 -49
- package/lib/components/pisellFloorMapLayout/components/ViewControls.less +224 -21
- package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +6 -0
- package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +3 -0
- package/lib/components/pisellFloorMapLayout/floorMapLayoutConstants.d.ts +4 -0
- package/lib/components/pisellFloorMapLayout/floorMapLayoutConstants.js +29 -0
- package/lib/components/pisellFloorMapLayout/hooks/floorMapViewportPersistence.d.ts +25 -0
- package/lib/components/pisellFloorMapLayout/hooks/floorMapViewportPersistence.js +98 -0
- package/lib/components/pisellFloorMapLayout/hooks/useDraftConfigHistory.d.ts +18 -0
- package/lib/components/pisellFloorMapLayout/hooks/useDraftConfigHistory.js +95 -0
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +5 -0
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +65 -15
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +23 -1
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +196 -24
- package/lib/components/pisellFloorMapLayout/index.d.ts +1 -0
- package/lib/components/pisellFloorMapLayout/index.js +9 -0
- package/lib/components/pisellFloorMapLayout/locales-ja.d.ts +20 -0
- package/lib/components/pisellFloorMapLayout/locales-ja.js +21 -1
- package/lib/components/pisellFloorMapLayout/locales-pt.d.ts +20 -0
- package/lib/components/pisellFloorMapLayout/locales-pt.js +21 -1
- package/lib/components/pisellFloorMapLayout/locales.d.ts +100 -0
- package/lib/components/pisellFloorMapLayout/locales.js +63 -3
- package/lib/components/pisellFloorMapLayout/types.d.ts +37 -0
- package/lib/components/pisellFloorMapLayout/utils/floorMapElementNameAsTitle.d.ts +50 -0
- package/lib/components/pisellFloorMapLayout/utils/floorMapElementNameAsTitle.js +60 -0
- package/lib/components/pisellGridPro/ToolBar/index.less +5 -4
- package/lib/components/pisellInput/components/BankCard/index.d.ts +1 -0
- package/lib/components/pisellInput/components/SecurityCode/index.d.ts +1 -0
- package/lib/components/pisellLoading/index.d.ts +0 -1
- package/lib/components/pisellModal/components/IpadModal/index.d.ts +0 -1
- package/lib/components/pisellModal/components/MobileModal/index.d.ts +0 -1
- package/lib/components/pisellModal/components/index.d.ts +0 -1
- package/lib/components/pisellRecordBoard/PisellRecordBoard.js +10 -3
- package/lib/components/pisellRecordBoard/shellFrame/Calendar/utils/BookingCalendarStyle.d.ts +1 -1
- package/lib/components/pisellRecordBoard/shellFrame/ColumnSetting/index.js +2 -1
- package/lib/components/pisellRecordBoard/shellFrame/Pagination/index.js +3 -2
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +70 -75
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarConstants.d.ts +8 -0
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarConstants.js +38 -0
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarI18n.d.ts +13 -0
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolBarI18n.js +100 -0
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +176 -10
- package/lib/components/pisellRecordBoard/shellFrame/ToolBarQuickFilter/index.js +8 -0
- package/lib/components/pisellRecordBoard/shellFrame/index.d.ts +6 -0
- package/lib/components/pisellRecordBoard/shellFrame/index.js +2 -1
- package/lib/components/pisellRecordBoard/types.d.ts +20 -1
- package/lib/components/pisellShellFrame/PisellShellFrame.js +2 -1
- package/lib/components/pisellShellFrame/PisellShellFrame.less +13 -0
- package/lib/components/pisellShellFrame/types.d.ts +6 -0
- package/lib/components/pisellTimeNavigator/PisellTimeNavigator.js +96 -27
- package/lib/components/pisellTimeNavigator/PisellTimeNavigator.less +126 -13
- package/lib/components/pisellTimeNavigator/components/CursorLayer.d.ts +3 -1
- package/lib/components/pisellTimeNavigator/components/CursorLayer.js +2 -0
- package/lib/components/pisellTimeNavigator/components/GestureLayer.d.ts +9 -1
- package/lib/components/pisellTimeNavigator/components/GestureLayer.js +5 -2
- package/lib/components/pisellTimeNavigator/timeNavigatorConstants.d.ts +20 -0
- package/lib/components/pisellTimeNavigator/timeNavigatorConstants.js +47 -0
- package/lib/components/pisellTooltip/index.d.ts +1 -0
- package/lib/components/productCard/components/Action/index.d.ts +1 -0
- package/lib/components/productCard/components/AmountFooter/index.d.ts +0 -1
- package/lib/components/productCard/components/MultiDay/index.d.ts +0 -1
- package/lib/components/productCard/components/Note/index.d.ts +0 -1
- package/lib/components/productCard/components/Packages/components/collapsibleList/utils.d.ts +0 -1
- package/lib/components/productCard/components/Packages/components/options/index.d.ts +0 -1
- package/lib/components/productCard/components/Packages/index.d.ts +0 -1
- package/lib/components/productCard/components/Time/components/SelectResource/index.d.ts +0 -1
- package/lib/components/productCard/components/Time/index.d.ts +0 -1
- package/lib/components/qrcode/index.d.ts +0 -1
- package/lib/components/table/Actions/component/ColumnsSetting/index.d.ts +0 -1
- package/lib/components/table/Actions/component/ExportImport/index.d.ts +0 -1
- package/lib/components/table/Actions/component/GallerySetting/index.d.ts +0 -1
- package/lib/components/table/Actions/component/Group/index.d.ts +0 -1
- package/lib/components/table/Actions/index.d.ts +0 -1
- package/lib/components/table/BasicTable/index.d.ts +0 -1
- package/lib/components/table/Gallery/components/GalleryItem/components/Cover/index.d.ts +0 -1
- package/lib/components/table/Gallery/components/GalleryItem/components/RenderFields/index.d.ts +0 -1
- package/lib/components/table/Gallery/components/GalleryItem/components/Title/index.d.ts +0 -1
- package/lib/components/table/Gallery/components/VirtualGrid/useGapSize.d.ts +2 -2
- package/lib/components/table/Table/SelectField/index.d.ts +0 -1
- package/lib/components/table/Table/fields/date/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/date/index.d.ts +0 -1
- package/lib/components/table/Table/fields/image/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/index.d.ts +0 -1
- package/lib/components/table/Table/fields/link/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/number/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/number/index.d.ts +0 -1
- package/lib/components/table/Table/fields/numberRange/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/numberRange/index.d.ts +0 -1
- package/lib/components/table/Table/fields/oldRangePicker/index.d.ts +0 -1
- package/lib/components/table/Table/fields/pSwitch/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/rangePicker/index.d.ts +0 -1
- package/lib/components/table/Table/fields/search/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/search/index.d.ts +0 -1
- package/lib/components/table/Table/fields/select/filterUtil/index.d.ts +1 -1
- package/lib/components/table/Table/fields/select/index.d.ts +0 -1
- package/lib/components/table/Table/fields/text/Show/index.d.ts +0 -1
- package/lib/components/table/Table/fields/text/index.d.ts +0 -1
- package/lib/components/table/Table/fields/treeSelect/filterUtil/index.d.ts +1 -1
- package/lib/components/table/Table/fields/treeSelect/index.d.ts +0 -1
- package/lib/components/table/Table/tableConfig/SortRow/index.d.ts +0 -1
- package/lib/components/table/Table/tableConfig/summary/index.d.ts +0 -1
- package/lib/components/table/Table/utils.d.ts +1 -1
- package/lib/components/table/View/index.d.ts +0 -1
- package/lib/components/versionSelect/index.d.ts +0 -1
- package/lib/index.d.ts +8 -1
- package/lib/index.js +8 -0
- package/lib/locales/en-US.d.ts +2 -0
- package/lib/locales/en-US.js +2 -0
- package/lib/locales/ja.d.ts +2 -0
- package/lib/locales/ja.js +2 -0
- package/lib/locales/pt.d.ts +2 -0
- package/lib/locales/pt.js +2 -0
- package/lib/locales/zh-CN.d.ts +2 -0
- package/lib/locales/zh-CN.js +2 -0
- package/lib/locales/zh-TW.d.ts +2 -0
- package/lib/locales/zh-TW.js +2 -0
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/platform.d.ts +1 -1
- package/lowcode/pisell-record-board-calendar-view/meta.ts +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
1
7
|
/**
|
|
2
8
|
* FloorMapEditTopBar - 编辑态顶栏
|
|
3
9
|
* - `mode="compact"`:画布 Tab + 可选 `canvasTabsBarTrailing`(全屏入口在左下 Dock)
|
|
4
10
|
* - `mode="full"`:画布 Tab + `canvasTabsBarTrailing` + 保存(仅非浏览器全屏时)+ 扩展操作
|
|
5
11
|
*/
|
|
6
|
-
import React, { useMemo } from 'react';
|
|
12
|
+
import React, { useCallback, useMemo } from 'react';
|
|
7
13
|
import classNames from 'classnames';
|
|
14
|
+
import { Button, Modal } from 'antd';
|
|
15
|
+
import { RedoHistoryIcon, UndoHistoryIcon } from "./HistoryIcons";
|
|
8
16
|
import { locales } from '@pisell/utils';
|
|
9
17
|
import useEngineContext from "../../../hooks/useEngineContext";
|
|
10
18
|
import { initFloorMapLayoutLocales } from "../utils/floorMapCanvasDisplay";
|
|
@@ -12,6 +20,13 @@ import { CanvasTabs } from "./CanvasTabs";
|
|
|
12
20
|
import "./FloorMapEditTopBar.less";
|
|
13
21
|
var PREFIX = 'pisell-floor-map-layout';
|
|
14
22
|
var I18N_TB = 'pisell-floor-map-layout.edit-top-bar';
|
|
23
|
+
/** 检测 macOS / iPad,决定快捷键提示用 ⌘ 还是 Ctrl */
|
|
24
|
+
function detectIsMacLike() {
|
|
25
|
+
if (typeof navigator === 'undefined') return false;
|
|
26
|
+
var p = navigator.platform || '';
|
|
27
|
+
var ua = navigator.userAgent || '';
|
|
28
|
+
return /Mac|iPhone|iPad|iPod/i.test(p) || /Macintosh/i.test(ua);
|
|
29
|
+
}
|
|
15
30
|
export function FloorMapEditTopBar(props) {
|
|
16
31
|
var _engineCtx$engine;
|
|
17
32
|
var _props$mode = props.mode,
|
|
@@ -35,6 +50,14 @@ export function FloorMapEditTopBar(props) {
|
|
|
35
50
|
canvasTabsBarTrailing = props.canvasTabsBarTrailing,
|
|
36
51
|
_props$hideCanvasTabs = props.hideCanvasTabs,
|
|
37
52
|
hideCanvasTabs = _props$hideCanvasTabs === void 0 ? false : _props$hideCanvasTabs,
|
|
53
|
+
onUndo = props.onUndo,
|
|
54
|
+
onRedo = props.onRedo,
|
|
55
|
+
_props$canUndo = props.canUndo,
|
|
56
|
+
canUndo = _props$canUndo === void 0 ? false : _props$canUndo,
|
|
57
|
+
_props$canRedo = props.canRedo,
|
|
58
|
+
canRedo = _props$canRedo === void 0 ? false : _props$canRedo,
|
|
59
|
+
onExitEdit = props.onExitEdit,
|
|
60
|
+
onCancelEdit = props.onCancelEdit,
|
|
38
61
|
className = props.className;
|
|
39
62
|
var engineCtx = useEngineContext();
|
|
40
63
|
var engineLocale = (engineCtx === null || engineCtx === void 0 || (_engineCtx$engine = engineCtx.engine) === null || _engineCtx$engine === void 0 || (_engineCtx$engine = _engineCtx$engine.props) === null || _engineCtx$engine === void 0 ? void 0 : _engineCtx$engine.locale) || 'zh-CN';
|
|
@@ -44,17 +67,104 @@ export function FloorMapEditTopBar(props) {
|
|
|
44
67
|
aria: locales.getText("".concat(I18N_TB, ".aria")),
|
|
45
68
|
unsaved: locales.getText("".concat(I18N_TB, ".unsaved")),
|
|
46
69
|
save: locales.getText("".concat(I18N_TB, ".save")),
|
|
47
|
-
saving: locales.getText("".concat(I18N_TB, ".saving"))
|
|
70
|
+
saving: locales.getText("".concat(I18N_TB, ".saving")),
|
|
71
|
+
undo: locales.getText("".concat(I18N_TB, ".undo")),
|
|
72
|
+
redo: locales.getText("".concat(I18N_TB, ".redo")),
|
|
73
|
+
cancelEdit: locales.getText("".concat(I18N_TB, ".cancel-edit")),
|
|
74
|
+
finishEdit: locales.getText("".concat(I18N_TB, ".finish-edit")),
|
|
75
|
+
cancelConfirmTitle: locales.getText("".concat(I18N_TB, ".cancel-confirm-title")),
|
|
76
|
+
cancelConfirmContent: locales.getText("".concat(I18N_TB, ".cancel-confirm-content")),
|
|
77
|
+
cancelConfirmOk: locales.getText("".concat(I18N_TB, ".cancel-confirm-ok")),
|
|
78
|
+
cancelConfirmCancel: locales.getText("".concat(I18N_TB, ".cancel-confirm-cancel"))
|
|
48
79
|
};
|
|
49
80
|
}, [engineLocale]);
|
|
81
|
+
var showHistory = Boolean(onUndo || onRedo);
|
|
82
|
+
/** 历史按钮组(撤销/重做):full、compact 共用同一段渲染 */
|
|
83
|
+
var historyGroup = useMemo(function () {
|
|
84
|
+
if (!showHistory) return null;
|
|
85
|
+
var isMac = detectIsMacLike();
|
|
86
|
+
var cmd = isMac ? '⌘' : 'Ctrl';
|
|
87
|
+
var undoTitle = "".concat(topBarLabels.undo, " (").concat(cmd, "+Z)");
|
|
88
|
+
var redoTitle = "".concat(topBarLabels.redo, " (").concat(cmd, "+Shift+Z)");
|
|
89
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
90
|
+
className: "".concat(PREFIX, "-edit-top-bar-history"),
|
|
91
|
+
role: "group",
|
|
92
|
+
"aria-label": "".concat(topBarLabels.undo, " / ").concat(topBarLabels.redo)
|
|
93
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
94
|
+
type: "text",
|
|
95
|
+
size: "small",
|
|
96
|
+
icon: /*#__PURE__*/React.createElement(UndoHistoryIcon, null),
|
|
97
|
+
disabled: !canUndo,
|
|
98
|
+
onClick: onUndo,
|
|
99
|
+
"aria-label": undoTitle
|
|
100
|
+
}, topBarLabels.undo), /*#__PURE__*/React.createElement(Button, {
|
|
101
|
+
type: "text",
|
|
102
|
+
size: "small",
|
|
103
|
+
icon: /*#__PURE__*/React.createElement(RedoHistoryIcon, null),
|
|
104
|
+
disabled: !canRedo,
|
|
105
|
+
onClick: onRedo,
|
|
106
|
+
"aria-label": redoTitle
|
|
107
|
+
}, topBarLabels.redo));
|
|
108
|
+
}, [showHistory, topBarLabels.undo, topBarLabels.redo, canUndo, canRedo, onUndo, onRedo]);
|
|
50
109
|
|
|
51
110
|
/** 浏览器全屏时顶栏不展示保存,改由侧栏承担(见 PisellFloorMapLayout 对 Toolbar onSave 的互斥逻辑) */
|
|
52
111
|
var showSave = Boolean(onSave && config.canvasUi.canEdit) && !isFullscreen;
|
|
112
|
+
/**
|
|
113
|
+
* 业务层提供 onExitEdit 时改用「取消编辑 + 完成」组合,
|
|
114
|
+
* 此时不再展示独立的「保存」按钮(完成 = 保存 + 退出,避免冗余)。
|
|
115
|
+
*/
|
|
116
|
+
var showExitGroup = Boolean(onExitEdit && config.canvasUi.canEdit);
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* 「未保存」徽章独立成一段:放到 undo / redo 左边,与「编辑历史」视觉上同属一个状态区。
|
|
120
|
+
* 触发条件保持原样:必须 layoutDirty 且当前确实有保存通道(showSave 或 showExitGroup),
|
|
121
|
+
* 否则纯阅读态出现「未保存」会让用户困惑。
|
|
122
|
+
*/
|
|
123
|
+
var dirtyBadge = layoutDirty && (showExitGroup || showSave) ? /*#__PURE__*/React.createElement("span", {
|
|
124
|
+
className: "".concat(PREFIX, "-edit-top-bar-dirty-badge"),
|
|
125
|
+
role: "status",
|
|
126
|
+
"aria-live": "polite"
|
|
127
|
+
}, topBarLabels.unsaved) : null;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* 取消编辑:layoutDirty 时弹二次确认,避免误触丢失草稿;
|
|
131
|
+
* 干净状态直接走原本的退出路径,不打扰用户。
|
|
132
|
+
* onOk 里复用「优先 onCancelEdit,回退 onExitEdit」的语义,与保存按钮链路对称。
|
|
133
|
+
*
|
|
134
|
+
* 走 {@link Modal.useModal} 拿到的实例 + 同级渲染的 `modalContextHolder`,确保:
|
|
135
|
+
* - OK 按钮颜色继承当前 ConfigProvider 主题主色(静态 `Modal.confirm` 不会继承);
|
|
136
|
+
* - 不依赖外层是否包了 PisellConfigProvider/`App` —— 这个组件可能被低代码引擎
|
|
137
|
+
* 单独挂在画布层,并不一定有上述 Provider,原先走 `PisellModal.confirm`
|
|
138
|
+
* 会因为 `setModal` 没被调用拿到 `undefined.confirm` 直接抛错。
|
|
139
|
+
*/
|
|
140
|
+
var _Modal$useModal = Modal.useModal(),
|
|
141
|
+
_Modal$useModal2 = _slicedToArray(_Modal$useModal, 2),
|
|
142
|
+
modalApi = _Modal$useModal2[0],
|
|
143
|
+
modalContextHolder = _Modal$useModal2[1];
|
|
144
|
+
var performCancel = useCallback(function () {
|
|
145
|
+
if (onCancelEdit) onCancelEdit();else onExitEdit === null || onExitEdit === void 0 || onExitEdit();
|
|
146
|
+
}, [onCancelEdit, onExitEdit]);
|
|
147
|
+
var handleCancelClick = useCallback(function () {
|
|
148
|
+
if (!layoutDirty) {
|
|
149
|
+
performCancel();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
modalApi.confirm({
|
|
153
|
+
title: topBarLabels.cancelConfirmTitle,
|
|
154
|
+
content: topBarLabels.cancelConfirmContent,
|
|
155
|
+
okText: topBarLabels.cancelConfirmOk,
|
|
156
|
+
cancelText: topBarLabels.cancelConfirmCancel,
|
|
157
|
+
onOk: function onOk() {
|
|
158
|
+
return performCancel();
|
|
159
|
+
},
|
|
160
|
+
autoFocusButton: 'cancel'
|
|
161
|
+
});
|
|
162
|
+
}, [layoutDirty, performCancel, modalApi, topBarLabels.cancelConfirmTitle, topBarLabels.cancelConfirmContent, topBarLabels.cancelConfirmOk, topBarLabels.cancelConfirmCancel]);
|
|
53
163
|
var hasTrailing = canvasTabsBarTrailing != null && canvasTabsBarTrailing !== false;
|
|
54
|
-
var hasFullActions = showSave || Boolean(saveError) || extraActions != null && extraActions !== false || hasTrailing;
|
|
164
|
+
var hasFullActions = showSave || showExitGroup || Boolean(saveError) || extraActions != null && extraActions !== false || hasTrailing || showHistory;
|
|
55
165
|
var tabsHiddenClass = hideCanvasTabs ? "".concat(PREFIX, "-edit-top-bar--tabs-hidden") : undefined;
|
|
56
166
|
if (mode === 'compact') {
|
|
57
|
-
var showCompactActions = hasTrailing;
|
|
167
|
+
var showCompactActions = hasTrailing || showHistory;
|
|
58
168
|
return /*#__PURE__*/React.createElement("div", {
|
|
59
169
|
className: classNames("".concat(PREFIX, "-edit-top-bar"), "".concat(PREFIX, "-edit-top-bar--compact"), tabsHiddenClass, className),
|
|
60
170
|
role: "toolbar",
|
|
@@ -72,7 +182,7 @@ export function FloorMapEditTopBar(props) {
|
|
|
72
182
|
className: "".concat(PREFIX, "-edit-top-bar-canvas-tabs")
|
|
73
183
|
})) : null, showCompactActions ? /*#__PURE__*/React.createElement("div", {
|
|
74
184
|
className: "".concat(PREFIX, "-edit-top-bar-actions")
|
|
75
|
-
}, canvasTabsBarTrailing) : null);
|
|
185
|
+
}, historyGroup, canvasTabsBarTrailing) : null, modalContextHolder);
|
|
76
186
|
}
|
|
77
187
|
if (hideCanvasTabs && !hasFullActions) {
|
|
78
188
|
return null;
|
|
@@ -97,17 +207,33 @@ export function FloorMapEditTopBar(props) {
|
|
|
97
207
|
}, saveError ? /*#__PURE__*/React.createElement("span", {
|
|
98
208
|
className: "".concat(PREFIX, "-edit-top-bar-error"),
|
|
99
209
|
title: typeof saveError === 'string' ? saveError : saveError === null || saveError === void 0 ? void 0 : saveError.message
|
|
100
|
-
}, typeof saveError === 'string' ? saveError : saveError === null || saveError === void 0 ? void 0 : saveError.message) : null, canvasTabsBarTrailing, extraActions,
|
|
210
|
+
}, typeof saveError === 'string' ? saveError : saveError === null || saveError === void 0 ? void 0 : saveError.message) : null, dirtyBadge, historyGroup, canvasTabsBarTrailing, extraActions, showExitGroup ? /*#__PURE__*/React.createElement("div", {
|
|
101
211
|
className: "".concat(PREFIX, "-edit-top-bar-save-group")
|
|
102
|
-
},
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
212
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
213
|
+
type: "button",
|
|
214
|
+
className: "".concat(PREFIX, "-edit-top-bar-btn"),
|
|
215
|
+
disabled: saving,
|
|
216
|
+
onClick: handleCancelClick
|
|
217
|
+
}, topBarLabels.cancelEdit), /*#__PURE__*/React.createElement("button", {
|
|
218
|
+
type: "button",
|
|
219
|
+
className: classNames("".concat(PREFIX, "-edit-top-bar-btn"), 'primary'),
|
|
220
|
+
disabled: saving,
|
|
221
|
+
onClick: function onClick() {
|
|
222
|
+
/**
|
|
223
|
+
* 完成 = 保存 + 退出;保存按 onSave 同步触发,
|
|
224
|
+
* 即便 onSave 是异步上报也立即调 onExitEdit,
|
|
225
|
+
* 业务层若需「保存成功后再退出」可在自身 onExitEdit 内做控制。
|
|
226
|
+
*/
|
|
227
|
+
onSave === null || onSave === void 0 || onSave();
|
|
228
|
+
onExitEdit === null || onExitEdit === void 0 || onExitEdit();
|
|
229
|
+
}
|
|
230
|
+
}, saving ? topBarLabels.saving : topBarLabels.finishEdit)) : showSave ? /*#__PURE__*/React.createElement("div", {
|
|
231
|
+
className: "".concat(PREFIX, "-edit-top-bar-save-group")
|
|
232
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
107
233
|
type: "button",
|
|
108
234
|
className: classNames("".concat(PREFIX, "-edit-top-bar-btn"), 'primary'),
|
|
109
235
|
disabled: saving,
|
|
110
236
|
onClick: onSave
|
|
111
|
-
}, saving ? topBarLabels.saving : topBarLabels.save)) : null) : null);
|
|
237
|
+
}, saving ? topBarLabels.saving : topBarLabels.save)) : null) : null, modalContextHolder);
|
|
112
238
|
}
|
|
113
239
|
export default FloorMapEditTopBar;
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
text-overflow: ellipsis;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
/*
|
|
61
|
+
/* 全屏顶栏右侧:取消 / 完成按钮组(未保存徽章已外提到 history 左侧,不再属于本组) */
|
|
62
62
|
|
|
63
63
|
&-save-group {
|
|
64
64
|
display: inline-flex;
|
|
@@ -67,6 +67,14 @@
|
|
|
67
67
|
gap: 10px;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
/* 撤销 / 重做按钮组:作为 actions 区第一组元素显示 */
|
|
71
|
+
&-history {
|
|
72
|
+
display: inline-flex;
|
|
73
|
+
flex-direction: row;
|
|
74
|
+
align-items: center;
|
|
75
|
+
gap: 4px;
|
|
76
|
+
}
|
|
77
|
+
|
|
70
78
|
&-dirty-badge {
|
|
71
79
|
display: inline-flex;
|
|
72
80
|
align-items: center;
|
|
@@ -2,10 +2,14 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
2
2
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (_e) { function e(_x) { return _e.apply(this, arguments); } e.toString = function () { return _e.toString(); }; return e; }(function (e) { throw e; }), f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function (_e2) { function e(_x2) { return _e2.apply(this, arguments); } e.toString = function () { return _e2.toString(); }; return e; }(function (e) { didErr = true; err = e; }), f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
3
3
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
4
4
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
6
5
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
7
6
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
7
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
10
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
12
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
9
13
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
14
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
15
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -14,9 +18,10 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
14
18
|
/**
|
|
15
19
|
* FloorMapToolbar - 编辑态左侧侧边栏:按分类添加图元、绑定数据源与行;保存可选(默认用顶栏)
|
|
16
20
|
*/
|
|
17
|
-
import React, { useMemo } from 'react';
|
|
21
|
+
import React, { useMemo, useState, useCallback, useEffect } from 'react';
|
|
18
22
|
import classNames from 'classnames';
|
|
19
23
|
import { Select } from 'antd';
|
|
24
|
+
import { LeftOutlined, RightOutlined } from '@ant-design/icons';
|
|
20
25
|
import { FLOOR_MAP_IMAGE_ELEMENT_KIND, FLOOR_MAP_STAGE_ELEMENT_KIND } from "../types";
|
|
21
26
|
import { resolveDataBindingPolicy } from "../utils/floorMapElementKindUtils";
|
|
22
27
|
import { FLOOR_MAP_PALETTE_DRAG_MIME } from "../utils/floorMapDropUtils";
|
|
@@ -81,6 +86,29 @@ var IMAGE_PREVIEW_SIZE = {
|
|
|
81
86
|
width: 140,
|
|
82
87
|
height: 80
|
|
83
88
|
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* 侧栏收起态偏好持久化 key(跨画布/跨业务共享,仅是个人 UI 偏好)。
|
|
92
|
+
* `1` = 收起;缺省、`0` = 展开(编辑态左侧栏默认展开)。
|
|
93
|
+
* key 迭代后不再读旧 key,首次进入为展开;用户收起/展开后会写入新偏好。
|
|
94
|
+
*/
|
|
95
|
+
var TOOLBAR_COLLAPSED_STORAGE_KEY = 'pisell-floor-map-layout.toolbar.leftbar-collapsed.v1';
|
|
96
|
+
function readToolbarCollapsedPreference() {
|
|
97
|
+
if (typeof window === 'undefined') return false;
|
|
98
|
+
try {
|
|
99
|
+
return window.localStorage.getItem(TOOLBAR_COLLAPSED_STORAGE_KEY) === '1';
|
|
100
|
+
} catch (_unused) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function writeToolbarCollapsedPreference(collapsed) {
|
|
105
|
+
if (typeof window === 'undefined') return;
|
|
106
|
+
try {
|
|
107
|
+
window.localStorage.setItem(TOOLBAR_COLLAPSED_STORAGE_KEY, collapsed ? '1' : '0');
|
|
108
|
+
} catch (_unused2) {
|
|
109
|
+
/** 隐私模式 / quota 失败时静默:UI 偏好丢失对功能无影响 */
|
|
110
|
+
}
|
|
111
|
+
}
|
|
84
112
|
export function FloorMapToolbar(props) {
|
|
85
113
|
var config = props.config,
|
|
86
114
|
dataSources = props.dataSources,
|
|
@@ -103,6 +131,26 @@ export function FloorMapToolbar(props) {
|
|
|
103
131
|
className = props.className,
|
|
104
132
|
onPaletteCardPointerDown = props.onPaletteCardPointerDown,
|
|
105
133
|
consumeToolbarClickIfTouchDrag = props.consumeToolbarClickIfTouchDrag;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* 侧栏收起 / 展开本地状态:默认展开;有持久化记录时恢复用户偏好。
|
|
137
|
+
* 收起后整个 body / footer 隐藏、容器宽度收缩到一条;
|
|
138
|
+
* 切换按钮挂在容器右边垂直居中,外突半个按钮宽度。
|
|
139
|
+
*/
|
|
140
|
+
var _useState = useState(function () {
|
|
141
|
+
return readToolbarCollapsedPreference();
|
|
142
|
+
}),
|
|
143
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
144
|
+
collapsed = _useState2[0],
|
|
145
|
+
setCollapsed = _useState2[1];
|
|
146
|
+
useEffect(function () {
|
|
147
|
+
writeToolbarCollapsedPreference(collapsed);
|
|
148
|
+
}, [collapsed]);
|
|
149
|
+
var handleToggleCollapsed = useCallback(function () {
|
|
150
|
+
setCollapsed(function (prev) {
|
|
151
|
+
return !prev;
|
|
152
|
+
});
|
|
153
|
+
}, []);
|
|
106
154
|
var paletteKinds = useMemo(function () {
|
|
107
155
|
var _config$elementKinds;
|
|
108
156
|
return ((_config$elementKinds = config.elementKinds) !== null && _config$elementKinds !== void 0 ? _config$elementKinds : []).filter(function (k) {
|
|
@@ -199,6 +247,11 @@ export function FloorMapToolbar(props) {
|
|
|
199
247
|
var activeDs = (placeMode === null || placeMode === void 0 ? void 0 : placeMode.type) === 'scene' && placeMode.elementKind === k.value ? placeMode.dataSourceKey : undefined;
|
|
200
248
|
var item = buildScenePreviewMergedItem(k, activeDs, size);
|
|
201
249
|
var isActive = (placeMode === null || placeMode === void 0 ? void 0 : placeMode.type) === 'scene' && placeMode.elementKind === k.value;
|
|
250
|
+
/**
|
|
251
|
+
* 预览缩略图尺寸:配合 sidebar 124px 抽屉宽度。
|
|
252
|
+
* stage 92×40、placement-like 80×54、装饰类按 props.decorationPreviewSize(默认 48)。
|
|
253
|
+
* placeScale / stageScale 都基于 cellW/cellH 推导,改尺寸时缩放因子自动适配。
|
|
254
|
+
*/
|
|
202
255
|
var cellW = isStage ? 92 : placementLike ? 80 : decorationPreviewSize;
|
|
203
256
|
var cellH = isStage ? 40 : placementLike ? 54 : decorationPreviewSize;
|
|
204
257
|
var previewW = isImageKind ? IMAGE_PREVIEW_SIZE.width : placementPreviewSize.width;
|
|
@@ -333,7 +386,15 @@ export function FloorMapToolbar(props) {
|
|
|
333
386
|
}, locales.getText("".concat(I18N_TB, ".cancel-place"))));
|
|
334
387
|
};
|
|
335
388
|
return /*#__PURE__*/React.createElement("div", {
|
|
336
|
-
className: classNames("".concat(PREFIX, "-toolbar"), "".concat(PREFIX, "-toolbar-sidebar"), className)
|
|
389
|
+
className: classNames("".concat(PREFIX, "-toolbar"), "".concat(PREFIX, "-toolbar-sidebar"), collapsed && "".concat(PREFIX, "-toolbar-sidebar--collapsed"), className)
|
|
390
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
391
|
+
type: "button",
|
|
392
|
+
className: "".concat(PREFIX, "-toolbar-collapse-handle"),
|
|
393
|
+
onClick: handleToggleCollapsed,
|
|
394
|
+
"aria-label": collapsed ? locales.getText("".concat(I18N_TB, ".expand")) : locales.getText("".concat(I18N_TB, ".collapse")),
|
|
395
|
+
title: collapsed ? locales.getText("".concat(I18N_TB, ".expand")) : locales.getText("".concat(I18N_TB, ".collapse"))
|
|
396
|
+
}, collapsed ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null)), /*#__PURE__*/React.createElement("div", {
|
|
397
|
+
className: "".concat(PREFIX, "-toolbar-inner")
|
|
337
398
|
}, /*#__PURE__*/React.createElement("div", {
|
|
338
399
|
className: "".concat(PREFIX, "-toolbar-body")
|
|
339
400
|
}, canCreate && /*#__PURE__*/React.createElement(React.Fragment, null, categories.map(function (cat) {
|
|
@@ -364,6 +425,6 @@ export function FloorMapToolbar(props) {
|
|
|
364
425
|
className: classNames("".concat(PREFIX, "-toolbar-btn"), 'primary', _defineProperty({}, "".concat(PREFIX, "-toolbar-save-dirty"), layoutDirty)),
|
|
365
426
|
disabled: saving,
|
|
366
427
|
onClick: onSave
|
|
367
|
-
}, saving ? locales.getText("".concat(I18N_TB, ".saving")) : locales.getText("".concat(I18N_TB, ".save")))));
|
|
428
|
+
}, saving ? locales.getText("".concat(I18N_TB, ".saving")) : locales.getText("".concat(I18N_TB, ".save"))))));
|
|
368
429
|
}
|
|
369
430
|
export default FloorMapToolbar;
|
|
@@ -2,20 +2,108 @@
|
|
|
2
2
|
.pisell-floor-map-layout-toolbar {
|
|
3
3
|
&.pisell-floor-map-layout-toolbar-sidebar {
|
|
4
4
|
position: relative;
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* 中等宽度抽屉:248px → 124px。
|
|
7
|
+
* 配合 cellW/cellH(见 FloorMapToolbar.tsx)按 0.5 倍渲染,preview-cell(最大 92px)
|
|
8
|
+
* + 标准 padding(12 8)正好落在 124px 内,兼顾画布展示空间与图元预览可视性。
|
|
9
|
+
*/
|
|
10
|
+
width: 124px;
|
|
6
11
|
flex-shrink: 0;
|
|
7
12
|
display: flex;
|
|
8
13
|
flex-direction: column;
|
|
9
14
|
background: #fff;
|
|
10
15
|
border-right: 1px solid #e8e8e8;
|
|
11
16
|
z-index: 10;
|
|
17
|
+
/** 收起态:只保留一条边和外突的切换按钮 */
|
|
18
|
+
transition: width 0.2s ease;
|
|
19
|
+
/**
|
|
20
|
+
* 注意:根元素必须保持 overflow: visible —— 否则下方 collapse-handle
|
|
21
|
+
* 用 right: -22px 外突的按钮会被裁掉。横向裁剪转移到 &-inner 内层做。
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
&.pisell-floor-map-layout-toolbar-sidebar--collapsed {
|
|
25
|
+
width: 0;
|
|
26
|
+
border-right: none;
|
|
27
|
+
/**
|
|
28
|
+
* 不再给 body/footer 设 display: none —— 让它们维持固定宽度参与动画的横向裁剪,
|
|
29
|
+
* 否则收起态切换会先 hide 后再瞬间 show,反而更容易暴露挤压的瞬间。
|
|
30
|
+
*/
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 内层容器:宽度跟随 sidebar 100% 伸缩,但用 overflow: hidden + 子元素固定宽度
|
|
36
|
+
* 把中间帧的水平挤压裁掉。这样 0→124px 展开过程中,body/footer 始终按 124px
|
|
37
|
+
* 排版,只是从右侧逐步揭开,避免文案被压成竖排。
|
|
38
|
+
*/
|
|
39
|
+
&-inner {
|
|
40
|
+
flex: 1;
|
|
41
|
+
min-height: 0;
|
|
42
|
+
width: 100%;
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-direction: column;
|
|
45
|
+
overflow: hidden;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 收起 / 展开按钮:固定挂在容器右边垂直居中,外突大半个按钮宽度。
|
|
50
|
+
* 124px 抽屉下整体视觉更宽松,handle 用 28×72 配合放大的箭头,
|
|
51
|
+
* 在窄边栏旁仍然显眼、易点(之前 16×48 几乎看不见,参考用户截图)。
|
|
52
|
+
* 收起态下容器宽度为 0,按钮仍能完整露出(z-index 高于地图区遮罩)。
|
|
53
|
+
*/
|
|
54
|
+
&-collapse-handle {
|
|
55
|
+
position: absolute;
|
|
56
|
+
top: 50%;
|
|
57
|
+
right: -22px;
|
|
58
|
+
transform: translateY(-50%);
|
|
59
|
+
width: 28px;
|
|
60
|
+
height: 72px;
|
|
61
|
+
padding: 0;
|
|
62
|
+
display: inline-flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
justify-content: center;
|
|
65
|
+
background: #fff;
|
|
66
|
+
color: #595959;
|
|
67
|
+
border: 1px solid #e8e8e8;
|
|
68
|
+
border-left: none;
|
|
69
|
+
border-radius: 0 12px 12px 0;
|
|
70
|
+
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.08);
|
|
71
|
+
cursor: pointer;
|
|
72
|
+
z-index: 11;
|
|
73
|
+
transition: color 0.15s, background 0.15s, border-color 0.15s,
|
|
74
|
+
box-shadow 0.15s;
|
|
75
|
+
|
|
76
|
+
&:hover {
|
|
77
|
+
color: var(--fmap-primary, #1677ff);
|
|
78
|
+
background: color-mix(in srgb, var(--fmap-primary, #1677ff) 8%, #fff);
|
|
79
|
+
border-color: var(--fmap-primary, #1677ff);
|
|
80
|
+
box-shadow: 2px 0 12px rgba(22, 119, 255, 0.16);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&:focus-visible {
|
|
84
|
+
outline: 2px solid var(--fmap-primary, #1677ff);
|
|
85
|
+
outline-offset: 2px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.anticon {
|
|
89
|
+
font-size: 16px;
|
|
90
|
+
line-height: 1;
|
|
91
|
+
}
|
|
12
92
|
}
|
|
13
93
|
|
|
14
94
|
&-body {
|
|
15
95
|
flex: 1;
|
|
16
96
|
min-height: 0;
|
|
17
97
|
overflow-y: auto;
|
|
18
|
-
padding
|
|
98
|
+
/** 124px 抽屉下,左右各留 8px 给 preview-card 的标准 padding 兜住 92px cell */
|
|
99
|
+
padding: 12px 8px;
|
|
100
|
+
/**
|
|
101
|
+
* 写死 124px 防止展开动画过程中跟随父容器 0→124px 同步缩放,避免文案被挤成竖排。
|
|
102
|
+
* 父容器 overflow: hidden 会裁掉超出的部分,视觉上就是抽屉从右侧划出。
|
|
103
|
+
*/
|
|
104
|
+
width: 124px;
|
|
105
|
+
box-sizing: border-box;
|
|
106
|
+
flex-shrink: 0;
|
|
19
107
|
}
|
|
20
108
|
|
|
21
109
|
&-section {
|
|
@@ -64,7 +152,8 @@
|
|
|
64
152
|
&-preview-card {
|
|
65
153
|
display: block;
|
|
66
154
|
width: 100%;
|
|
67
|
-
padding
|
|
155
|
+
/** 标准 padding 适配 124px 抽屉 + 92px cell 的尺寸预算 */
|
|
156
|
+
padding: 8px;
|
|
68
157
|
text-align: center;
|
|
69
158
|
background: #fafafa;
|
|
70
159
|
border: 1px solid #e8e8e8;
|
|
@@ -186,11 +275,15 @@
|
|
|
186
275
|
|
|
187
276
|
&-footer {
|
|
188
277
|
flex-shrink: 0;
|
|
189
|
-
padding
|
|
278
|
+
/** 与 body 同步水平 padding,124px 抽屉下按钮宽度足够呈现 */
|
|
279
|
+
padding: 12px 8px;
|
|
190
280
|
border-top: 1px solid #f0f0f0;
|
|
191
281
|
display: flex;
|
|
192
282
|
flex-direction: column;
|
|
193
283
|
gap: 8px;
|
|
284
|
+
/** 同 body:固定 124px 防止展开动画期间被父容器宽度挤压换行 */
|
|
285
|
+
width: 124px;
|
|
286
|
+
box-sizing: border-box;
|
|
194
287
|
}
|
|
195
288
|
|
|
196
289
|
&-dirty-hint {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 编辑顶栏 Undo / Redo 自定义 SVG icon。
|
|
3
|
+
*
|
|
4
|
+
* 设计来源:业务方提供的「圆勾箭头」风格 —— 整圈 ~270° 回环 + 末端三角箭头。
|
|
5
|
+
* 替换 antd 的 `UndoOutlined` / `RedoOutlined`:原版箭头偏方、回勾过短,
|
|
6
|
+
* 在 24/16px 的小尺寸下与界面其它细线 icon 不齐,且 Undo/Redo 镜像不够直观。
|
|
7
|
+
*
|
|
8
|
+
* 实现要点:
|
|
9
|
+
* - `stroke="currentColor"`、无填充:颜色完全跟随父级 `color`,与 Ant Button text 模式一致;
|
|
10
|
+
* - viewBox 14×14,配合 `font-size: 14px` 自动得到 14px icon;调用方可通过 fontSize/CSS 调整;
|
|
11
|
+
* - `stroke-linecap=round` + `stroke-linejoin=round`:在 1.5px 细线下保持圆润、抗锯齿友好;
|
|
12
|
+
* - 箭头用同色 `path` 三角,避免 marker-end 在不同浏览器下的尺寸漂移;
|
|
13
|
+
* - 接受 `className` / `style` / 其它 SVG 属性透传(与 antd icon 体感一致)。
|
|
14
|
+
*/
|
|
15
|
+
import React from 'react';
|
|
16
|
+
declare type HistoryIconProps = React.SVGProps<SVGSVGElement> & {
|
|
17
|
+
/** 与 antd icon 类似:用于覆盖默认 1em 尺寸 */
|
|
18
|
+
size?: number | string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Undo 图标:「↰」L 形带小圆角 —— 箭头在左侧水平指向左,主干由箭头水平向右、
|
|
22
|
+
* 经一个 1.5 半径的圆角折下、再竖直向下。
|
|
23
|
+
*
|
|
24
|
+
* 关于"看起来偏上":antd `.anticon { vertical-align: -0.125em }` 已经把整个 svg
|
|
25
|
+
* 相对文字基线下移 ~0.125em,但我们的形状在 viewBox 内是几何居中的(y ∈ [3,11]),
|
|
26
|
+
* 与 antd 自家 outline icon(路径几乎铺满 viewBox)在视觉密度上不同 ——
|
|
27
|
+
* 留白对称会让人眼判断"图形在 viewBox 上半"。
|
|
28
|
+
*
|
|
29
|
+
* 解决:把形状整体下移 1 单位到 y ∈ [4, 12],上侧留 4 / 下侧留 2,
|
|
30
|
+
* 让 icon 视觉中心匹配文字 x-height 中心,与 "Undo" 文本视觉齐平。
|
|
31
|
+
* x 仍保持 [3, 11] 居中。
|
|
32
|
+
*/
|
|
33
|
+
export declare function UndoHistoryIcon(props: HistoryIconProps): JSX.Element;
|
|
34
|
+
/**
|
|
35
|
+
* Redo 图标:与 Undo 水平镜像,箭头在右侧指向右,干线右→左→下。
|
|
36
|
+
* 几何范围与 Undo 完全对称:x ∈ [3, 11]、y ∈ [4, 12]。
|
|
37
|
+
*/
|
|
38
|
+
export declare function RedoHistoryIcon(props: HistoryIconProps): JSX.Element;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
var _excluded = ["size", "children"];
|
|
2
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
3
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
4
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
5
|
+
/**
|
|
6
|
+
* 编辑顶栏 Undo / Redo 自定义 SVG icon。
|
|
7
|
+
*
|
|
8
|
+
* 设计来源:业务方提供的「圆勾箭头」风格 —— 整圈 ~270° 回环 + 末端三角箭头。
|
|
9
|
+
* 替换 antd 的 `UndoOutlined` / `RedoOutlined`:原版箭头偏方、回勾过短,
|
|
10
|
+
* 在 24/16px 的小尺寸下与界面其它细线 icon 不齐,且 Undo/Redo 镜像不够直观。
|
|
11
|
+
*
|
|
12
|
+
* 实现要点:
|
|
13
|
+
* - `stroke="currentColor"`、无填充:颜色完全跟随父级 `color`,与 Ant Button text 模式一致;
|
|
14
|
+
* - viewBox 14×14,配合 `font-size: 14px` 自动得到 14px icon;调用方可通过 fontSize/CSS 调整;
|
|
15
|
+
* - `stroke-linecap=round` + `stroke-linejoin=round`:在 1.5px 细线下保持圆润、抗锯齿友好;
|
|
16
|
+
* - 箭头用同色 `path` 三角,避免 marker-end 在不同浏览器下的尺寸漂移;
|
|
17
|
+
* - 接受 `className` / `style` / 其它 SVG 属性透传(与 antd icon 体感一致)。
|
|
18
|
+
*/
|
|
19
|
+
import React from 'react';
|
|
20
|
+
/**
|
|
21
|
+
* 通用渲染:差异仅在 path 上,所以提取一个内核组件,
|
|
22
|
+
* Undo / Redo 各自传入自己的箭头路径。
|
|
23
|
+
*/
|
|
24
|
+
function HistoryIconShell(_ref) {
|
|
25
|
+
var _ref$size = _ref.size,
|
|
26
|
+
size = _ref$size === void 0 ? '1em' : _ref$size,
|
|
27
|
+
children = _ref.children,
|
|
28
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
29
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
30
|
+
role: "img",
|
|
31
|
+
"aria-hidden": "true",
|
|
32
|
+
focusable: "false",
|
|
33
|
+
width: size,
|
|
34
|
+
height: size,
|
|
35
|
+
viewBox: "0 0 14 14",
|
|
36
|
+
fill: "none",
|
|
37
|
+
stroke: "currentColor",
|
|
38
|
+
strokeWidth: 1.5,
|
|
39
|
+
strokeLinecap: "round",
|
|
40
|
+
strokeLinejoin: "round"
|
|
41
|
+
}, rest), children);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Undo 图标:「↰」L 形带小圆角 —— 箭头在左侧水平指向左,主干由箭头水平向右、
|
|
46
|
+
* 经一个 1.5 半径的圆角折下、再竖直向下。
|
|
47
|
+
*
|
|
48
|
+
* 关于"看起来偏上":antd `.anticon { vertical-align: -0.125em }` 已经把整个 svg
|
|
49
|
+
* 相对文字基线下移 ~0.125em,但我们的形状在 viewBox 内是几何居中的(y ∈ [3,11]),
|
|
50
|
+
* 与 antd 自家 outline icon(路径几乎铺满 viewBox)在视觉密度上不同 ——
|
|
51
|
+
* 留白对称会让人眼判断"图形在 viewBox 上半"。
|
|
52
|
+
*
|
|
53
|
+
* 解决:把形状整体下移 1 单位到 y ∈ [4, 12],上侧留 4 / 下侧留 2,
|
|
54
|
+
* 让 icon 视觉中心匹配文字 x-height 中心,与 "Undo" 文本视觉齐平。
|
|
55
|
+
* x 仍保持 [3, 11] 居中。
|
|
56
|
+
*/
|
|
57
|
+
export function UndoHistoryIcon(props) {
|
|
58
|
+
return /*#__PURE__*/React.createElement(HistoryIconShell, props, /*#__PURE__*/React.createElement("path", {
|
|
59
|
+
d: "M3 6h6.5a1.5 1.5 0 0 1 1.5 1.5V12"
|
|
60
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
61
|
+
d: "M5 4 3 6l2 2"
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Redo 图标:与 Undo 水平镜像,箭头在右侧指向右,干线右→左→下。
|
|
67
|
+
* 几何范围与 Undo 完全对称:x ∈ [3, 11]、y ∈ [4, 12]。
|
|
68
|
+
*/
|
|
69
|
+
export function RedoHistoryIcon(props) {
|
|
70
|
+
return /*#__PURE__*/React.createElement(HistoryIconShell, props, /*#__PURE__*/React.createElement("path", {
|
|
71
|
+
d: "M11 6H4.5A1.5 1.5 0 0 0 3 7.5V12"
|
|
72
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
73
|
+
d: "M9 4l2 2-2 2"
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
@@ -97,9 +97,22 @@ export function ItemLayer(props) {
|
|
|
97
97
|
passive: true
|
|
98
98
|
});
|
|
99
99
|
}, [onInteractionChange]);
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* 只对触屏指针拦截画布 pan:触屏在卡内纵向滑动时会和画布 pan 抢事件,
|
|
103
|
+
* 这里把 `isInteractingWithElement` 拉起来让 TransformWrapper 关掉 panning,
|
|
104
|
+
* 让原生 scroll 接管列表。
|
|
105
|
+
*
|
|
106
|
+
* 鼠标 / 触控笔(pen)不走这条路径——桌面端鼠标要可以从任意图元上按下并直接拖动画布,
|
|
107
|
+
* 否则用户会发现「只有空白处才能拖动画布」(react-zoom-pan-pinch 的鼠标 pan 走的是
|
|
108
|
+
* window 的 mousedown 监听,但 panning.disabled=true 一样会让它直接拒绝启动)。
|
|
109
|
+
*
|
|
110
|
+
* 触屏 e.button 默认为 0,不再前置 `e.button !== 0` 早返;鼠标右键此时已被 pointerType 过滤掉。
|
|
111
|
+
*/
|
|
100
112
|
var handleItemPointerDownCapture = useCallback(function (e) {
|
|
101
113
|
var _el$closest;
|
|
102
|
-
if (!onInteractionChange
|
|
114
|
+
if (!onInteractionChange) return;
|
|
115
|
+
if (e.pointerType !== 'touch') return;
|
|
103
116
|
var el = e.target;
|
|
104
117
|
if (!(el !== null && el !== void 0 && (_el$closest = el.closest) !== null && _el$closest !== void 0 && _el$closest.call(el, ROOM_SCROLL_SURFACE_SELECTOR))) return;
|
|
105
118
|
notifyRoomScrollSurfaceActive();
|
|
@@ -25,11 +25,20 @@ export interface ViewControlsProps {
|
|
|
25
25
|
scale?: number;
|
|
26
26
|
/** 当前是否处于全屏 */
|
|
27
27
|
isFullscreen?: boolean;
|
|
28
|
+
/** 当前 transform 是否处于「适配视口」结果(用于按钮激活态) */
|
|
29
|
+
fitBoundsActive?: boolean;
|
|
28
30
|
className?: string;
|
|
29
31
|
/** 与 config.showGridToggle 联用:当前画布是否显示网格 */
|
|
30
32
|
mapGridVisible?: boolean;
|
|
31
33
|
/** 切换当前画布 draft 的 mapLayer.showGrid */
|
|
32
34
|
onToggleMapGrid?: () => void;
|
|
35
|
+
/**
|
|
36
|
+
* 视口锁定态:true 时显示「已锁定」图标,并禁用所有改变视角的按钮
|
|
37
|
+
* (zoom +/- / reset / fitBounds)。pan / wheel / pinch 由调用方在 TransformWrapper 上同步关闭。
|
|
38
|
+
*/
|
|
39
|
+
viewportLocked?: boolean;
|
|
40
|
+
/** 切换视口锁定;未传时不展示锁定按钮 */
|
|
41
|
+
onToggleViewportLock?: () => void;
|
|
33
42
|
/**
|
|
34
43
|
* 平面图 Dock:圆角浅底样式,默认折叠为单入口;展开后含缩放、工具、全屏与 dockExpandedTrailing
|
|
35
44
|
*/
|