@pisell/materials 1.0.1063 → 1.0.1065
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 +7 -7
- package/build/lowcode/preview.js +9 -9
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +26 -26
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +26 -26
- package/es/components/dataSourceComponents/dataSourceForm/utils.d.ts +1 -1
- package/es/components/dataSourceComponents/dataSourceTable/hooks/useTableProps.d.ts +3 -3
- package/es/components/dataSourceComponents/fields/RecordListWrapper/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/Select/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/Tabs/index.d.ts +1 -1
- package/es/components/dataSourceComponents/fields/index.d.ts +6 -6
- package/es/components/pisellFloorMapLayout/PisellFloorMapLayout.js +43 -31
- package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +60 -16
- package/es/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +8 -0
- package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.js +22 -12
- package/es/components/pisellFloorMapLayout/components/FloorMapToolbar.less +7 -5
- package/es/components/pisellFloorMapLayout/components/MapLayer.js +5 -2
- package/es/components/pisellFloorMapLayout/components/ViewControls.d.ts +4 -0
- package/es/components/pisellFloorMapLayout/components/ViewControls.js +29 -10
- package/es/components/pisellFloorMapLayout/components/ViewControls.less +36 -12
- package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +2 -0
- package/es/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +3 -1
- package/es/components/pisellFloorMapLayout/context/mergeFloorMapLayoutContext.js +2 -2
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +1 -0
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +166 -43
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +1 -1
- package/es/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +90 -13
- package/es/components/pisellFloorMapLayout/index.d.ts +2 -0
- package/es/components/pisellFloorMapLayout/index.js +2 -0
- package/es/components/pisellFloorMapLayout/locales.d.ts +6 -0
- package/es/components/pisellFloorMapLayout/locales.js +9 -3
- package/es/components/pisellFloorMapLayout/types.d.ts +9 -2
- package/es/components/pisellFloorMapLayout/utils/floorMapDropUtils.d.ts +1 -0
- package/es/components/pisellFloorMapLayout/utils/floorMapDropUtils.js +10 -1
- package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +11 -0
- package/es/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +86 -0
- package/es/components/pisellFloorMapLayout/utils/floorMapFallbackRender.js +3 -2
- package/es/components/pisellRecordBoard/PisellRecordBoard.js +6 -3
- package/es/components/pisellRecordBoard/index.d.ts +1 -0
- package/es/components/pisellRecordBoard/index.js +2 -1
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.d.ts +1 -0
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/index.js +21 -10
- package/es/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +23 -0
- package/es/components/pisellRecordBoard/shellFrame/index.d.ts +2 -0
- package/es/components/pisellRecordBoard/shellFrame/index.js +9 -3
- package/es/components/pisellRecordBoard/shellFrame/shellFrameFloorMap.less +25 -0
- package/es/components/pisellRecordBoard/types.d.ts +6 -0
- package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.js +4 -1
- package/es/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +18 -1
- package/es/components/pisellReservationScheduleBand/types.d.ts +4 -0
- package/es/components/pisellTimeNavigator/PisellTimeNavigator.js +180 -22
- package/es/components/pisellTimeNavigator/PisellTimeNavigator.less +11 -0
- package/es/components/pisellTimeNavigator/components/CursorLayer.js +4 -4
- package/es/components/pisellTimeNavigator/components/ScaleLayer.js +3 -3
- package/es/components/pisellTimeNavigator/types.d.ts +11 -0
- package/es/hooks/useResponsive.d.ts +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/components/pisellFloorMapLayout/PisellFloorMapLayout.js +39 -36
- package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.js +56 -12
- package/lib/components/pisellFloorMapLayout/components/FloorMapEditPanel.less +8 -0
- package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.js +19 -10
- package/lib/components/pisellFloorMapLayout/components/FloorMapToolbar.less +7 -5
- package/lib/components/pisellFloorMapLayout/components/MapLayer.js +3 -1
- package/lib/components/pisellFloorMapLayout/components/ViewControls.d.ts +4 -0
- package/lib/components/pisellFloorMapLayout/components/ViewControls.js +28 -6
- package/lib/components/pisellFloorMapLayout/components/ViewControls.less +36 -12
- package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.d.ts +2 -0
- package/lib/components/pisellFloorMapLayout/components/ViewControlsWithZoom.js +3 -1
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.d.ts +1 -0
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapEditState.js +143 -29
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.d.ts +1 -1
- package/lib/components/pisellFloorMapLayout/hooks/useFloorMapTransformMetrics.js +86 -13
- package/lib/components/pisellFloorMapLayout/index.d.ts +2 -0
- package/lib/components/pisellFloorMapLayout/index.js +6 -0
- package/lib/components/pisellFloorMapLayout/locales.d.ts +6 -0
- package/lib/components/pisellFloorMapLayout/locales.js +9 -3
- package/lib/components/pisellFloorMapLayout/types.d.ts +9 -2
- package/lib/components/pisellFloorMapLayout/utils/floorMapDropUtils.d.ts +1 -0
- package/lib/components/pisellFloorMapLayout/utils/floorMapDropUtils.js +7 -1
- package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.d.ts +11 -0
- package/lib/components/pisellFloorMapLayout/utils/floorMapElementKindUtils.js +69 -0
- package/lib/components/pisellFloorMapLayout/utils/floorMapFallbackRender.js +2 -1
- package/lib/components/pisellRecordBoard/PisellRecordBoard.js +5 -1
- package/lib/components/pisellRecordBoard/index.d.ts +1 -0
- package/lib/components/pisellRecordBoard/index.js +5 -2
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.d.ts +1 -0
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/index.js +13 -5
- package/lib/components/pisellRecordBoard/shellFrame/ToolBar/recordBoardToolbar.less +23 -0
- package/lib/components/pisellRecordBoard/shellFrame/index.d.ts +2 -0
- package/lib/components/pisellRecordBoard/shellFrame/index.js +11 -4
- package/lib/components/pisellRecordBoard/shellFrame/shellFrameFloorMap.less +25 -0
- package/lib/components/pisellRecordBoard/types.d.ts +6 -0
- package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.js +2 -1
- package/lib/components/pisellReservationScheduleBand/PisellReservationScheduleBand.less +18 -1
- package/lib/components/pisellReservationScheduleBand/types.d.ts +4 -0
- package/lib/components/pisellTimeNavigator/PisellTimeNavigator.js +177 -12
- package/lib/components/pisellTimeNavigator/PisellTimeNavigator.less +11 -0
- package/lib/components/pisellTimeNavigator/types.d.ts +11 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.js +10 -0
- package/lowcode/floor-map-image-element/meta.ts +113 -0
- package/lowcode/floor-map-layout-provider/meta.ts +1 -1
- package/lowcode/pisell-floor-map-layout/meta.ts +37 -1
- package/lowcode/render-figma-style-round-table-card/meta.ts +1 -1
- package/lowcode/render-figma-style-table-card/meta.ts +1 -1
- package/package.json +3 -3
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _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; }
|
|
3
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
4
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
5
|
+
/**
|
|
6
|
+
* ViewControls - 内置视图控制按钮:缩放(Stepper)、复位、区域定位
|
|
3
7
|
*/
|
|
4
8
|
import React from 'react';
|
|
5
9
|
import classNames from 'classnames';
|
|
6
|
-
import { MinusOutlined, PlusOutlined, FullscreenOutlined, FullscreenExitOutlined } from '@ant-design/icons';
|
|
10
|
+
import { MinusOutlined, PlusOutlined, FullscreenOutlined, FullscreenExitOutlined, BorderInnerOutlined } from '@ant-design/icons';
|
|
7
11
|
import "./ViewControls.less";
|
|
8
12
|
var PREFIX = 'pisell-floor-map-layout';
|
|
9
13
|
|
|
@@ -17,12 +21,17 @@ export function ViewControls(props) {
|
|
|
17
21
|
scale = _props$scale === void 0 ? 1 : _props$scale,
|
|
18
22
|
_props$isFullscreen = props.isFullscreen,
|
|
19
23
|
isFullscreen = _props$isFullscreen === void 0 ? false : _props$isFullscreen,
|
|
20
|
-
className = props.className
|
|
24
|
+
className = props.className,
|
|
25
|
+
_props$mapGridVisible = props.mapGridVisible,
|
|
26
|
+
mapGridVisible = _props$mapGridVisible === void 0 ? false : _props$mapGridVisible,
|
|
27
|
+
onToggleMapGrid = props.onToggleMapGrid;
|
|
21
28
|
var showZoom = config.showZoom !== false;
|
|
22
29
|
var showReset = config.showReset === true;
|
|
23
30
|
var showFitBounds = config.showFitBounds === true;
|
|
24
31
|
var showFullscreen = config.showFullscreen === true;
|
|
32
|
+
var showGridToggle = config.showGridToggle === true && typeof onToggleMapGrid === 'function';
|
|
25
33
|
var scalePercent = Math.round(scale * 100);
|
|
34
|
+
var showToolsCapsule = showReset || showFitBounds || showFullscreen || showGridToggle;
|
|
26
35
|
return /*#__PURE__*/React.createElement("div", {
|
|
27
36
|
className: classNames("".concat(PREFIX, "-view-controls"), className)
|
|
28
37
|
}, showZoom && /*#__PURE__*/React.createElement("div", {
|
|
@@ -43,27 +52,37 @@ export function ViewControls(props) {
|
|
|
43
52
|
return api.zoomIn();
|
|
44
53
|
},
|
|
45
54
|
"aria-label": "\u653E\u5927"
|
|
46
|
-
}, /*#__PURE__*/React.createElement(PlusOutlined, null))),
|
|
55
|
+
}, /*#__PURE__*/React.createElement(PlusOutlined, null))), showToolsCapsule && /*#__PURE__*/React.createElement("div", {
|
|
56
|
+
className: "".concat(PREFIX, "-view-controls-tools-capsule")
|
|
57
|
+
}, showReset && /*#__PURE__*/React.createElement("button", {
|
|
47
58
|
type: "button",
|
|
48
|
-
className: "".concat(PREFIX, "-view-controls-btn"),
|
|
59
|
+
className: "".concat(PREFIX, "-view-controls-tool-btn"),
|
|
49
60
|
onClick: function onClick() {
|
|
50
61
|
return api.resetTransform();
|
|
51
62
|
},
|
|
52
63
|
"aria-label": "\u590D\u4F4D"
|
|
53
64
|
}, "\u27F2"), showFitBounds && api.fitBounds && /*#__PURE__*/React.createElement("button", {
|
|
54
65
|
type: "button",
|
|
55
|
-
className: "".concat(PREFIX, "-view-controls-btn"),
|
|
66
|
+
className: "".concat(PREFIX, "-view-controls-tool-btn"),
|
|
56
67
|
onClick: function onClick() {
|
|
57
68
|
return api.fitBounds();
|
|
58
69
|
},
|
|
59
70
|
"aria-label": "\u533A\u57DF\u5B9A\u4F4D"
|
|
60
|
-
}, "\u229E"),
|
|
71
|
+
}, "\u229E"), showGridToggle && /*#__PURE__*/React.createElement("button", {
|
|
61
72
|
type: "button",
|
|
62
|
-
className: "".concat(PREFIX, "-view-controls-btn"),
|
|
73
|
+
className: classNames("".concat(PREFIX, "-view-controls-tool-btn"), _defineProperty({}, "".concat(PREFIX, "-view-controls-tool-btn--active"), mapGridVisible)),
|
|
74
|
+
onClick: function onClick() {
|
|
75
|
+
return onToggleMapGrid();
|
|
76
|
+
},
|
|
77
|
+
"aria-pressed": mapGridVisible,
|
|
78
|
+
"aria-label": mapGridVisible ? '隐藏网格' : '显示网格'
|
|
79
|
+
}, /*#__PURE__*/React.createElement(BorderInnerOutlined, null)), showFullscreen && api.toggleFullscreen && /*#__PURE__*/React.createElement("button", {
|
|
80
|
+
type: "button",
|
|
81
|
+
className: "".concat(PREFIX, "-view-controls-tool-btn"),
|
|
63
82
|
onClick: function onClick() {
|
|
64
83
|
return api.toggleFullscreen();
|
|
65
84
|
},
|
|
66
85
|
"aria-label": isFullscreen ? '退出全屏' : '全屏'
|
|
67
|
-
}, isFullscreen ? /*#__PURE__*/React.createElement(FullscreenExitOutlined, null) : /*#__PURE__*/React.createElement(FullscreenOutlined, null)));
|
|
86
|
+
}, isFullscreen ? /*#__PURE__*/React.createElement(FullscreenExitOutlined, null) : /*#__PURE__*/React.createElement(FullscreenOutlined, null))));
|
|
68
87
|
}
|
|
69
88
|
export default ViewControls;
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
gap: 6px;
|
|
11
11
|
|
|
12
12
|
/* Stepper:胶囊形 [减] 数值% [加] */
|
|
13
|
+
|
|
13
14
|
&-zoom-stepper {
|
|
14
15
|
display: flex;
|
|
15
16
|
align-items: center;
|
|
@@ -52,26 +53,49 @@
|
|
|
52
53
|
color: #101828;
|
|
53
54
|
}
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
/* 复位 / 区域定位 / 全屏 / 网格:与 Stepper 同系胶囊条 */
|
|
57
|
+
|
|
58
|
+
&-tools-capsule {
|
|
59
|
+
display: flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
flex-wrap: wrap;
|
|
62
|
+
gap: 4px;
|
|
63
|
+
min-height: 56px;
|
|
64
|
+
padding: 2px 6px;
|
|
65
|
+
background: #fff;
|
|
66
|
+
border: 1px solid #98a2b3;
|
|
67
|
+
border-radius: 100px;
|
|
68
|
+
box-shadow: 0 12px 16px -4px rgba(16, 24, 40, 0.08), 0 4px 6px -2px rgba(16, 24, 40, 0.03);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&-tool-btn {
|
|
72
|
+
width: 52px;
|
|
73
|
+
height: 52px;
|
|
58
74
|
display: flex;
|
|
59
75
|
align-items: center;
|
|
60
76
|
justify-content: center;
|
|
61
77
|
padding: 0;
|
|
62
|
-
border:
|
|
63
|
-
border-radius:
|
|
64
|
-
background:
|
|
78
|
+
border: none;
|
|
79
|
+
border-radius: 50%;
|
|
80
|
+
background: transparent;
|
|
65
81
|
cursor: pointer;
|
|
66
|
-
|
|
82
|
+
color: #101828;
|
|
83
|
+
font-size: 20px;
|
|
67
84
|
line-height: 1;
|
|
68
|
-
color: rgba(0, 0, 0, 0.65);
|
|
69
|
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
70
85
|
|
|
71
86
|
&:hover {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
87
|
+
background: #f2f4f7;
|
|
88
|
+
color: #101828;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
&-tool-btn--active {
|
|
93
|
+
background: #fff4ed;
|
|
94
|
+
color: #ff692e;
|
|
95
|
+
|
|
96
|
+
&:hover {
|
|
97
|
+
background: #ffe8d9;
|
|
98
|
+
color: #ff692e;
|
|
75
99
|
}
|
|
76
100
|
}
|
|
77
101
|
}
|
|
@@ -7,5 +7,7 @@ export interface ViewControlsWithZoomProps {
|
|
|
7
7
|
fitBounds: () => void;
|
|
8
8
|
/** 未传时不展示全屏按钮(如编辑态 floorMapFullscreenMode 为 disabled) */
|
|
9
9
|
toggleFullscreen?: () => void;
|
|
10
|
+
mapGridVisible?: boolean;
|
|
11
|
+
onToggleMapGrid?: () => void;
|
|
10
12
|
}
|
|
11
13
|
export declare function ViewControlsWithZoom(props: ViewControlsWithZoomProps): JSX.Element;
|
|
@@ -22,6 +22,8 @@ export function ViewControlsWithZoom(props) {
|
|
|
22
22
|
api: api,
|
|
23
23
|
config: props.config,
|
|
24
24
|
scale: props.scale,
|
|
25
|
-
isFullscreen: props.isFullscreen
|
|
25
|
+
isFullscreen: props.isFullscreen,
|
|
26
|
+
mapGridVisible: props.mapGridVisible,
|
|
27
|
+
onToggleMapGrid: props.onToggleMapGrid
|
|
26
28
|
});
|
|
27
29
|
}
|
|
@@ -4,8 +4,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
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; }
|
|
5
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
6
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
-
/**
|
|
8
|
-
* 将 `FloorMapLayoutContext` 与 Layout props 合并:各字段 props ?? ctx,props 显式值优先。
|
|
7
|
+
/**
|
|
8
|
+
* 将 `FloorMapLayoutContext` 与 Layout props 合并:各字段 props ?? ctx,props 显式值优先。
|
|
9
9
|
*/
|
|
10
10
|
export function mergeFloorMapLayoutPropsFromContext(props, ctx) {
|
|
11
11
|
var _props$floorMapConfig, _props$dataSources, _props$onSave, _props$onDataSourceRe, _props$dataSourceLabe, _props$dataSourceForm, _props$dataSourceReco, _props$loading, _props$saveError, _props$onElementRende, _props$toolbarShowSav, _props$floorMapFullsc, _props$showDataSource;
|
|
@@ -2,15 +2,15 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
2
2
|
var _excluded = ["x", "y", "zIndex", "width", "height"];
|
|
3
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
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
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
6
|
+
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."); }
|
|
7
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
8
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
5
9
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
10
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
11
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
12
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
9
13
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
10
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
11
|
-
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."); }
|
|
12
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
13
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
14
14
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
15
15
|
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."); }
|
|
16
16
|
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); }
|
|
@@ -28,14 +28,39 @@ import { createTranslationText } from "../../translation/utils";
|
|
|
28
28
|
import { mergeCanvasItems } from "../utils/floorMapConfigMerge";
|
|
29
29
|
import { STAGE_DECO_DEFAULT } from "../utils/floorMapStageDefaults";
|
|
30
30
|
import { floorMapViewConfigsEqual, normalizeFloorMapViewConfigFromProp } from "../utils/floorMapViewConfigDiff";
|
|
31
|
-
import { getElementKindConfig, resolveDataBindingPolicy } from "../utils/floorMapElementKindUtils";
|
|
31
|
+
import { getElementKindConfig, resolveDataBindingPolicy, isFloorMapImageElementKind } from "../utils/floorMapElementKindUtils";
|
|
32
32
|
import { DEFAULT_CELL_SIZE } from "../utils/layoutMeasurements";
|
|
33
33
|
import { initFloorMapLayoutLocales } from "../utils/floorMapCanvasDisplay";
|
|
34
|
-
import {
|
|
34
|
+
import { FLOOR_MAP_STAGE_ELEMENT_KIND } from "../types";
|
|
35
35
|
var IMAGE_PLACE_DEFAULT = {
|
|
36
36
|
width: 400,
|
|
37
37
|
height: 240
|
|
38
38
|
};
|
|
39
|
+
var GRID_VIS_STORAGE_PREFIX = 'pisell-floor-map-layout.grid-visible';
|
|
40
|
+
function getGridVisStorageKey(canvasId) {
|
|
41
|
+
return "".concat(GRID_VIS_STORAGE_PREFIX, ":").concat(canvasId);
|
|
42
|
+
}
|
|
43
|
+
function readStoredGridVisible(canvasId) {
|
|
44
|
+
try {
|
|
45
|
+
var raw = localStorage.getItem(getGridVisStorageKey(canvasId));
|
|
46
|
+
if (raw == null) return null;
|
|
47
|
+
if (raw === '1') return true;
|
|
48
|
+
if (raw === '0') return false;
|
|
49
|
+
return null;
|
|
50
|
+
} catch (_unused) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function writeStoredGridVisible(canvasId, visible) {
|
|
55
|
+
try {
|
|
56
|
+
localStorage.setItem(getGridVisStorageKey(canvasId), visible ? '1' : '0');
|
|
57
|
+
} catch (_unused2) {
|
|
58
|
+
// ignore localStorage failure (private mode / quota / sandbox)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** 批量落位时每条相对上一条的偏移(内容坐标) */
|
|
63
|
+
var BATCH_PLACE_OFFSET = 16;
|
|
39
64
|
function newInstanceId() {
|
|
40
65
|
return "elm_".concat(Date.now(), "_").concat(Math.random().toString(36).slice(2, 9));
|
|
41
66
|
}
|
|
@@ -86,13 +111,36 @@ export function useFloorMapEditState(params) {
|
|
|
86
111
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
87
112
|
savingRecord = _useState12[0],
|
|
88
113
|
setSavingRecord = _useState12[1];
|
|
114
|
+
/**
|
|
115
|
+
* 本地“已提交保存”的基线快照:
|
|
116
|
+
* - 点击「完成编辑/保存」后立即置为当前 draft,避免等待上游 props 回写期间仍显示“未持久化”提示;
|
|
117
|
+
* - 用户后续再改动 draft 时,dirty 会再次为 true。
|
|
118
|
+
*/
|
|
119
|
+
var _useState13 = useState(null),
|
|
120
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
121
|
+
savedBaselineConfig = _useState14[0],
|
|
122
|
+
setSavedBaselineConfig = _useState14[1];
|
|
89
123
|
var config = isFloorMapView ? draftConfig !== null && draftConfig !== void 0 ? draftConfig : floorMapConfigProp : null;
|
|
90
124
|
var configRef = useRef(config);
|
|
91
125
|
configRef.current = config;
|
|
92
126
|
useEffect(function () {
|
|
93
127
|
if (!floorMapConfigProp) return;
|
|
94
|
-
var
|
|
128
|
+
var baseConfig = normalizeFloorMapViewConfigFromProp(floorMapConfigProp);
|
|
129
|
+
var nextConfig = _objectSpread(_objectSpread({}, baseConfig), {}, {
|
|
130
|
+
canvases: baseConfig.canvases.map(function (canvas) {
|
|
131
|
+
var _canvas$mapLayer;
|
|
132
|
+
var stored = readStoredGridVisible(canvas.id);
|
|
133
|
+
if (stored == null) return canvas;
|
|
134
|
+
return _objectSpread(_objectSpread({}, canvas), {}, {
|
|
135
|
+
mapLayer: _objectSpread(_objectSpread({}, (_canvas$mapLayer = canvas.mapLayer) !== null && _canvas$mapLayer !== void 0 ? _canvas$mapLayer : {}), {}, {
|
|
136
|
+
showGrid: stored
|
|
137
|
+
})
|
|
138
|
+
});
|
|
139
|
+
})
|
|
140
|
+
});
|
|
95
141
|
setDraftConfig(nextConfig);
|
|
142
|
+
/** 上游配置已刷新,以服务端/父级为准,清空本地临时保存基线 */
|
|
143
|
+
setSavedBaselineConfig(null);
|
|
96
144
|
var enabled = nextConfig.canvases.filter(function (c) {
|
|
97
145
|
return c.enabled;
|
|
98
146
|
}).sort(function (a, b) {
|
|
@@ -109,9 +157,9 @@ export function useFloorMapEditState(params) {
|
|
|
109
157
|
/** 当前草稿与上游持久化 `floorMapConfig`(经同等规范化)是否不一致 */
|
|
110
158
|
var isLayoutDirty = useMemo(function () {
|
|
111
159
|
if (!isFloorMapView || !draftConfig || !floorMapConfigProp) return false;
|
|
112
|
-
var baseline = normalizeFloorMapViewConfigFromProp(floorMapConfigProp);
|
|
160
|
+
var baseline = savedBaselineConfig !== null && savedBaselineConfig !== void 0 ? savedBaselineConfig : normalizeFloorMapViewConfigFromProp(floorMapConfigProp);
|
|
113
161
|
return !floorMapViewConfigsEqual(draftConfig, baseline);
|
|
114
|
-
}, [isFloorMapView, draftConfig, floorMapConfigProp]);
|
|
162
|
+
}, [isFloorMapView, draftConfig, floorMapConfigProp, savedBaselineConfig]);
|
|
115
163
|
var handleAddCanvas = useCallback(function () {
|
|
116
164
|
initFloorMapLayoutLocales(engineLocale);
|
|
117
165
|
var label = locales.getText('pisell-floor-map-layout.canvas-tabs.default-new-canvas-name');
|
|
@@ -242,7 +290,7 @@ export function useFloorMapEditState(params) {
|
|
|
242
290
|
var placeOverlayClass = "".concat(layoutPrefix, "-place-overlay");
|
|
243
291
|
|
|
244
292
|
/**
|
|
245
|
-
*
|
|
293
|
+
* 在内容坐标系下按「新建图元」模式落 sceneElement(支持 recordIds 批量;点击与拖拽共用)
|
|
246
294
|
* @returns 是否已成功写入草稿(校验失败时为 false)
|
|
247
295
|
*/
|
|
248
296
|
var applyScenePlacementAtCoords = useCallback(function (contentX, contentY, scene) {
|
|
@@ -258,6 +306,29 @@ export function useFloorMapEditState(params) {
|
|
|
258
306
|
return allKeys.includes(k);
|
|
259
307
|
}) : allKeys;
|
|
260
308
|
var pickKey = (_ref = (_scene$dataSourceKey = scene.dataSourceKey) !== null && _scene$dataSourceKey !== void 0 ? _scene$dataSourceKey : allowedKeys[0]) !== null && _ref !== void 0 ? _ref : allKeys[0];
|
|
309
|
+
var recordIdsToPlace = scene.recordIds && scene.recordIds.length > 0 ? scene.recordIds : scene.recordId ? [scene.recordId] : [];
|
|
310
|
+
var isStage = scene.elementKind === FLOOR_MAP_STAGE_ELEMENT_KIND;
|
|
311
|
+
var isImage = isFloorMapImageElementKind(scene.elementKind);
|
|
312
|
+
var w = isImage ? IMAGE_PLACE_DEFAULT.width : isStage ? STAGE_DECO_DEFAULT.width : defaultPlacementWidth;
|
|
313
|
+
var h = isImage ? IMAGE_PLACE_DEFAULT.height : isStage ? STAGE_DECO_DEFAULT.height : defaultPlacementHeight;
|
|
314
|
+
var useDecoSize = policy === 'none' && scene.elementKind !== FLOOR_MAP_STAGE_ELEMENT_KIND && !isImage;
|
|
315
|
+
var buildOneElement = function buildOneElement(dataBinding, x, y, name) {
|
|
316
|
+
return _objectSpread({
|
|
317
|
+
instanceId: newInstanceId(),
|
|
318
|
+
canvasId: currentCanvasId,
|
|
319
|
+
x: x,
|
|
320
|
+
y: y,
|
|
321
|
+
name: name,
|
|
322
|
+
zIndex: isImage ? -5 : 0,
|
|
323
|
+
width: useDecoSize ? defaultDecoSize : w,
|
|
324
|
+
height: useDecoSize ? defaultDecoSize : h,
|
|
325
|
+
elementKind: scene.elementKind,
|
|
326
|
+
shape: isStage || isImage ? 'rect' : kindConfig === null || kindConfig === void 0 ? void 0 : kindConfig.defaultShape,
|
|
327
|
+
dataBinding: dataBinding
|
|
328
|
+
}, isImage ? {
|
|
329
|
+
imageUrl: ''
|
|
330
|
+
} : {});
|
|
331
|
+
};
|
|
261
332
|
var dataBinding;
|
|
262
333
|
if (policy !== 'none' && pickKey) {
|
|
263
334
|
var _dataSources$pickKey;
|
|
@@ -267,14 +338,15 @@ export function useFloorMapEditState(params) {
|
|
|
267
338
|
dataSourceKey: pickKey,
|
|
268
339
|
recordId: "new_".concat(Date.now())
|
|
269
340
|
};
|
|
270
|
-
} else if (
|
|
341
|
+
} else if (recordIdsToPlace.length === 0) {
|
|
271
342
|
if (policy === 'required') {
|
|
272
343
|
message.warning('请先在侧栏选择数据源与数据行,再落位');
|
|
273
344
|
return false;
|
|
274
345
|
}
|
|
275
|
-
} else {
|
|
346
|
+
} else if (recordIdsToPlace.length === 1) {
|
|
347
|
+
var rid = recordIdsToPlace[0];
|
|
276
348
|
var record = dsList.find(function (r) {
|
|
277
|
-
return r.id ===
|
|
349
|
+
return r.id === rid;
|
|
278
350
|
});
|
|
279
351
|
if (!record) {
|
|
280
352
|
message.error('所选记录不存在,请重新选择数据行');
|
|
@@ -282,52 +354,80 @@ export function useFloorMapEditState(params) {
|
|
|
282
354
|
}
|
|
283
355
|
var cand = {
|
|
284
356
|
dataSourceKey: pickKey,
|
|
285
|
-
recordId:
|
|
357
|
+
recordId: rid
|
|
286
358
|
};
|
|
287
359
|
if (duplicateBinding(config.sceneElements, cand)) {
|
|
288
360
|
message.warning('该数据记录已在平面图中绑定,请勿重复添加');
|
|
289
361
|
return false;
|
|
290
362
|
}
|
|
291
363
|
dataBinding = cand;
|
|
364
|
+
} else {
|
|
365
|
+
var newEls = [];
|
|
366
|
+
var skippedDup = 0;
|
|
367
|
+
var skippedMissing = 0;
|
|
368
|
+
var placeIndex = 0;
|
|
369
|
+
var seenInBatch = new Set();
|
|
370
|
+
recordIdsToPlace.forEach(function (rid) {
|
|
371
|
+
var _row$name;
|
|
372
|
+
var record = dsList.find(function (r) {
|
|
373
|
+
return r.id === rid;
|
|
374
|
+
});
|
|
375
|
+
if (!record) {
|
|
376
|
+
skippedMissing += 1;
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
var cand = {
|
|
380
|
+
dataSourceKey: pickKey,
|
|
381
|
+
recordId: rid
|
|
382
|
+
};
|
|
383
|
+
if (seenInBatch.has(rid) || duplicateBinding(config.sceneElements, cand)) {
|
|
384
|
+
skippedDup += 1;
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
seenInBatch.add(rid);
|
|
388
|
+
var row = record;
|
|
389
|
+
var placementName = String((_row$name = row === null || row === void 0 ? void 0 : row.name) !== null && _row$name !== void 0 ? _row$name : rid);
|
|
390
|
+
newEls.push(buildOneElement(cand, contentX + placeIndex * BATCH_PLACE_OFFSET, contentY + placeIndex * BATCH_PLACE_OFFSET, placementName));
|
|
391
|
+
placeIndex += 1;
|
|
392
|
+
});
|
|
393
|
+
if (skippedDup > 0) {
|
|
394
|
+
message.warning("\u5DF2\u8DF3\u8FC7 ".concat(skippedDup, " \u6761\u5DF2\u5728\u5E73\u9762\u56FE\u4E2D\u7ED1\u5B9A\u7684\u8BB0\u5F55"));
|
|
395
|
+
}
|
|
396
|
+
if (skippedMissing > 0) {
|
|
397
|
+
message.warning("\u6709 ".concat(skippedMissing, " \u6761\u8BB0\u5F55\u4E0D\u5B58\u5728\uFF0C\u5DF2\u8DF3\u8FC7"));
|
|
398
|
+
}
|
|
399
|
+
if (newEls.length === 0) {
|
|
400
|
+
message.warning('没有可落位的记录');
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
setDraftConfig(function (prev) {
|
|
404
|
+
var _prev$sceneElements4;
|
|
405
|
+
return prev ? _objectSpread(_objectSpread({}, prev), {}, {
|
|
406
|
+
sceneElements: [].concat(_toConsumableArray((_prev$sceneElements4 = prev.sceneElements) !== null && _prev$sceneElements4 !== void 0 ? _prev$sceneElements4 : []), newEls)
|
|
407
|
+
}) : prev;
|
|
408
|
+
});
|
|
409
|
+
return true;
|
|
292
410
|
}
|
|
293
411
|
}
|
|
294
|
-
var isStage = scene.elementKind === FLOOR_MAP_STAGE_ELEMENT_KIND;
|
|
295
|
-
var isImage = scene.elementKind === FLOOR_MAP_IMAGE_ELEMENT_KIND;
|
|
296
|
-
var w = isImage ? IMAGE_PLACE_DEFAULT.width : isStage ? STAGE_DECO_DEFAULT.width : defaultPlacementWidth;
|
|
297
|
-
var h = isImage ? IMAGE_PLACE_DEFAULT.height : isStage ? STAGE_DECO_DEFAULT.height : defaultPlacementHeight;
|
|
298
|
-
var useDecoSize = policy === 'none' && scene.elementKind !== FLOOR_MAP_STAGE_ELEMENT_KIND && !isImage;
|
|
299
412
|
var placementName = function (_kindConfig$defaultPr, _kindConfig$defaultPr2) {
|
|
300
413
|
if (isStage) return STAGE_DECO_DEFAULT.name;
|
|
301
414
|
if (isImage) return '底图';
|
|
302
415
|
var db = dataBinding;
|
|
303
|
-
|
|
304
|
-
|
|
416
|
+
var rid = recordIdsToPlace[0];
|
|
417
|
+
if (db && rid) {
|
|
418
|
+
var _dataSources$db$dataS, _row$name2;
|
|
305
419
|
var row = dataSources === null || dataSources === void 0 || (_dataSources$db$dataS = dataSources[db.dataSourceKey]) === null || _dataSources$db$dataS === void 0 ? void 0 : _dataSources$db$dataS.find(function (r) {
|
|
306
|
-
return r.id ===
|
|
420
|
+
return r.id === rid;
|
|
307
421
|
});
|
|
308
|
-
return String((_row$
|
|
422
|
+
return String((_row$name2 = row === null || row === void 0 ? void 0 : row.name) !== null && _row$name2 !== void 0 ? _row$name2 : rid);
|
|
309
423
|
}
|
|
310
424
|
return (_kindConfig$defaultPr = kindConfig === null || kindConfig === void 0 || (_kindConfig$defaultPr2 = kindConfig.defaultPresentation) === null || _kindConfig$defaultPr2 === void 0 ? void 0 : _kindConfig$defaultPr2.title) !== null && _kindConfig$defaultPr !== void 0 ? _kindConfig$defaultPr : '';
|
|
311
425
|
}();
|
|
312
|
-
var newEl =
|
|
313
|
-
instanceId: newInstanceId(),
|
|
314
|
-
canvasId: currentCanvasId,
|
|
315
|
-
x: contentX,
|
|
316
|
-
y: contentY,
|
|
317
|
-
name: placementName,
|
|
318
|
-
zIndex: isImage ? -5 : 0,
|
|
319
|
-
width: useDecoSize ? defaultDecoSize : w,
|
|
320
|
-
height: useDecoSize ? defaultDecoSize : h,
|
|
321
|
-
elementKind: scene.elementKind,
|
|
322
|
-
shape: isStage || isImage ? 'rect' : kindConfig === null || kindConfig === void 0 ? void 0 : kindConfig.defaultShape,
|
|
323
|
-
dataBinding: dataBinding
|
|
324
|
-
}, isImage ? {
|
|
325
|
-
imageUrl: ''
|
|
326
|
-
} : {});
|
|
426
|
+
var newEl = buildOneElement(dataBinding, contentX, contentY, placementName);
|
|
327
427
|
setDraftConfig(function (prev) {
|
|
328
|
-
var _prev$
|
|
428
|
+
var _prev$sceneElements5;
|
|
329
429
|
return prev ? _objectSpread(_objectSpread({}, prev), {}, {
|
|
330
|
-
sceneElements: [].concat(_toConsumableArray((_prev$
|
|
430
|
+
sceneElements: [].concat(_toConsumableArray((_prev$sceneElements5 = prev.sceneElements) !== null && _prev$sceneElements5 !== void 0 ? _prev$sceneElements5 : []), [newEl])
|
|
331
431
|
}) : prev;
|
|
332
432
|
});
|
|
333
433
|
return true;
|
|
@@ -357,10 +457,32 @@ export function useFloorMapEditState(params) {
|
|
|
357
457
|
setSaving(true);
|
|
358
458
|
try {
|
|
359
459
|
onSave(draftConfig);
|
|
460
|
+
/** 先本地确认“已提交保存”,让提示即时消失;后续以 props 回写为准 */
|
|
461
|
+
setSavedBaselineConfig(draftConfig);
|
|
360
462
|
} finally {
|
|
361
463
|
setSaving(false);
|
|
362
464
|
}
|
|
363
465
|
}, [draftConfig, onSave]);
|
|
466
|
+
|
|
467
|
+
/** 切换当前画布草稿中的 mapLayer.showGrid(随布局保存持久化) */
|
|
468
|
+
var toggleDraftCanvasShowGrid = useCallback(function () {
|
|
469
|
+
setDraftConfig(function (prev) {
|
|
470
|
+
if (!prev || !currentCanvasId) return prev;
|
|
471
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
472
|
+
canvases: prev.canvases.map(function (c) {
|
|
473
|
+
var _c$mapLayer;
|
|
474
|
+
if (c.id !== currentCanvasId) return c;
|
|
475
|
+
var nextShow = !Boolean((_c$mapLayer = c.mapLayer) === null || _c$mapLayer === void 0 ? void 0 : _c$mapLayer.showGrid);
|
|
476
|
+
writeStoredGridVisible(currentCanvasId, nextShow);
|
|
477
|
+
return _objectSpread(_objectSpread({}, c), {}, {
|
|
478
|
+
mapLayer: _objectSpread(_objectSpread({}, c.mapLayer), {}, {
|
|
479
|
+
showGrid: nextShow
|
|
480
|
+
})
|
|
481
|
+
});
|
|
482
|
+
})
|
|
483
|
+
});
|
|
484
|
+
});
|
|
485
|
+
}, [currentCanvasId]);
|
|
364
486
|
var handleEditPanelUpdate = useCallback(function (patch) {
|
|
365
487
|
if (!selectedId) return;
|
|
366
488
|
var bindingPatch = patch.dataBinding;
|
|
@@ -384,10 +506,10 @@ export function useFloorMapEditState(params) {
|
|
|
384
506
|
var handleEditPanelDelete = useCallback(function () {
|
|
385
507
|
if (!selectedId) return;
|
|
386
508
|
setDraftConfig(function (prev) {
|
|
387
|
-
var _prev$
|
|
509
|
+
var _prev$sceneElements6;
|
|
388
510
|
if (!prev) return prev;
|
|
389
511
|
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
390
|
-
sceneElements: ((_prev$
|
|
512
|
+
sceneElements: ((_prev$sceneElements6 = prev.sceneElements) !== null && _prev$sceneElements6 !== void 0 ? _prev$sceneElements6 : []).filter(function (e) {
|
|
391
513
|
return e.instanceId !== selectedId;
|
|
392
514
|
})
|
|
393
515
|
});
|
|
@@ -433,6 +555,7 @@ export function useFloorMapEditState(params) {
|
|
|
433
555
|
placeSceneElementFromPaletteDrop: placeSceneElementFromPaletteDrop,
|
|
434
556
|
editPanelParams: editPanelParams,
|
|
435
557
|
placeOverlayClass: placeOverlayClass,
|
|
436
|
-
isLayoutDirty: isLayoutDirty
|
|
558
|
+
isLayoutDirty: isLayoutDirty,
|
|
559
|
+
toggleDraftCanvasShowGrid: toggleDraftCanvasShowGrid
|
|
437
560
|
};
|
|
438
561
|
}
|
|
@@ -56,7 +56,7 @@ export declare function useFloorMapTransformMetrics<T extends FloorMapItemBase>(
|
|
|
56
56
|
setScale: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
57
57
|
isFullscreen: boolean;
|
|
58
58
|
toggleFullscreen: () => void;
|
|
59
|
-
fitBounds: () =>
|
|
59
|
+
fitBounds: () => boolean;
|
|
60
60
|
lastTransformRef: MutableRefObject<{
|
|
61
61
|
x: number;
|
|
62
62
|
y: number;
|